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

: : : VM Driver Source

Source Listing


     1: /***************************************************************************
     2: 
     3: 							  -= Metro Games =-
     4: 
     5: 					driver by	Luca Elia (l.elia@tin.it)
     6: 
     7: 
     8: Main  CPU    :  MC68000
     9: 
    10: Video Chips  :  Imagetek 14100 052 9227KK701	Or
    11:                 Imagetek 14220 071 9338EK707	Or
    12: 				Imagetek 14300 095
    13: 
    14: Sound CPU    :  NEC78C10 [Optional]
    15: 
    16: Sound Chips  :	OKIM6295 + YM2413  or
    17:                 YRW801-M + YMF278B (YM2610 compatible)
    18: 
    19: Other        :  Memory Blitter
    20: 
    21: ---------------------------------------------------------------------------
    22: Year + Game						PCB			Video Chip	Issues / Notes
    23: ---------------------------------------------------------------------------
    24: 92	Last Fortress - Toride		VG420		14100
    25: 92	Pang Poms					VG420		14100
    26: 92	Sky Alert					VG420		14100
    27: 92	The Karate Tournament		VG460-B		14100
    28: 93?	Lady Killer / Moeyo Gonta!! VG460-B		14100
    29: 93	Poitto!						MTR5260-A	14100
    30: 94	Dharma Doujou				?			?
    31: 94	Toride II Adauchi Gaiden	MTR5260-A	14220
    32: 94	Blazing Tornado				?			14220		Also has Konami 053936 gfx chip
    33: 95	Daitoride					MTR5260-A	14220
    34: 95	Pururun						MTR5260-A	14220
    35: 95	Puzzli 						MTR5260-A	14220
    36: 96	Sankokushi					MTR5260-A	14220
    37: 96	Bal Cube					?			14220		No sound CPU
    38: 96	Bang Bang Ball				?			14220		No sound CPU
    39: 95	Mahjong Doukyuhsei			VG330-B		14300		No sound CPU
    40: 95	Mahjong Doukyuusei Special	VG340-A		14300		No sound CPU
    41: 97	Mahjong Gakuensai			VG340-A		14300		No sound CPU
    42: 98	Mahjong Gakuensai 2			VG340-A		14300		No sound CPU
    43: 96	Mouja						VG410-B		14300		No sound CPU
    44: ---------------------------------------------------------------------------
    45: Not dumped yet:
    46: 94	Gun Master
    47: 94	Toride II
    48: 
    49: To Do:
    50: 
    51: -	Sound in games with a sound CPU
    52: -	1 pixel granularity in the window's placement (8 pixels now, see daitorid title)
    53: -	Coin lockout
    54: -	Some gfx problems in ladykill, 3kokushi, puzzli, gakusai
    55: -	Are the 16x16 tiles used by Mouja a Imagetek 14300-only feature?
    56: -	Flip screen doesn't work correctly in Mouja due to asymmetrical visible area
    57: 
    58: Notes:
    59: 
    60: -	To enter service mode in Lady Killer, toggle the dip switch and reset
    61: 	keeping  start 2 pressed.
    62: -	Sprite zoom in Mouja at the end of a match looks wrong, but it's been verified
    63: 	to be the same on the original board
    64: 
    65: 
    66: ***************************************************************************/
    67: 
    68: #include "driver.h" 
    69: #include "vidhrdw/generic.h" 
    70: #include "vidhrdw/konamiic.h" 
    71: #include "cpu/upd7810/upd7810.h" 
    72: #include "machine/eeprom.h" 
    73: 
    74: /* Variables defined in vidhrdw: */
    75: 
    76: extern data16_t *metro_videoregs;
    77: extern data16_t *metro_screenctrl;
    78: extern data16_t *metro_scroll;
    79: extern data16_t *metro_tiletable;
    80: extern size_t metro_tiletable_size;
    81: extern data16_t *metro_vram_0, *metro_vram_1, *metro_vram_2;
    82: extern data16_t *metro_window;
    83: extern data16_t *metro_K053936_ram;
    84: WRITE16_HANDLER( metro_K053936_w );
    85: 
    86: 
    87: /* Functions defined in vidhrdw: */
    88: 
    89: WRITE16_HANDLER( metro_paletteram_w );
    90: 
    91: WRITE16_HANDLER( metro_window_w );
    92: 
    93: WRITE16_HANDLER( metro_vram_0_w );
    94: WRITE16_HANDLER( metro_vram_1_w );
    95: WRITE16_HANDLER( metro_vram_2_w );
    96: 
    97: 
    98: VIDEO_START( metro_14100 );
    99: VIDEO_START( metro_14220 );
   100: VIDEO_START( metro_14300 );
   101: VIDEO_START( blzntrnd );
   102: 
   103: VIDEO_UPDATE( metro );
   104: 
   105: 
   106: /***************************************************************************
   107: 
   108: 
   109: 								Interrupts
   110: 
   111: 
   112: ***************************************************************************/
   113: 
   114: static int irq_line, blitter_bit;
   115: 
   116: static UINT8 requested_int[8];
   117: 
   118: static data16_t *metro_irq_levels, *metro_irq_vectors, *metro_irq_enable;
   119: 
   120: READ16_HANDLER( metro_irq_cause_r )
   121: {
   122: 	return	requested_int[0] * 0x01 +	// vblank
   123: 			requested_int[1] * 0x02 +
   124: 			requested_int[2] * 0x04 +	// blitter
   125: 			requested_int[3] * 0x08 +
   126: 			requested_int[4] * 0x10 +
   127: 			requested_int[5] * 0x20 +
   128: 			requested_int[6] * 0x40 +	// unused
   129: 			requested_int[7] * 0x80 ;	// unused
   130: }
   131: 
   132: 
   133: /* Update the IRQ state based on all possible causes */
   134: static void update_irq_state(void)
   135: {
   136: 	/*	Get the pending IRQs (only the enabled ones, e.g. where
   137: 		irq_enable is *0*)	*/
   138: 	data16_t irq = metro_irq_cause_r(0,0) & ~*metro_irq_enable;
   139: 
   140: 	if (irq_line == -1)	/* mouja, gakusai, gakusai2, dokyusei, dokyusp */
   141: 	{
   142: 		/*	This is for games that supply an *IRQ Vector* on the data bus
   143: 			together with an IRQ level for each possible IRQ source */
   144: 
   145: 		int i = 0;
   146: 		while ( i < 8 )
   147: 		{
   148: 			if (irq & (1 << i))
   149: 			{
   150: 				cpu_set_irq_line(0, metro_irq_levels[i]&7, ASSERT_LINE);
   151: 				return;
   152: 			}
   153: 			i++;
   154: 		}
   155: 		cpu_set_irq_line(0, 0, ASSERT_LINE);
   156: 	}
   157: 	else
   158: 	{
   159: 		/*	This is for games where every IRQ source generates the same
   160: 			IRQ level. The interrupt service routine then reads the actual
   161: 			source by peeking a register (metro_irq_cause_r) */
   162: 
   163: 		int state =	(irq ? ASSERT_LINE : CLEAR_LINE);
   164: 		cpu_set_irq_line(0, irq_line, state);
   165: 	}
   166: }
   167: 
   168: 
   169: /* For games that supply an *IRQ Vector* on the data bus */
   170: int metro_irq_callback(int int_level)
   171: {
   172: //	logerror("CPU #0 PC %06X: irq callback returns %04X\n",activecpu_get_pc(),metro_irq_vectors[int_level]);
   173: 	return metro_irq_vectors[int_level]&0xff;
   174: }
   175: 
   176: MACHINE_INIT( metro )
   177: {
   178: 	if (irq_line == -1)
   179: 		cpu_set_irq_callback(0, metro_irq_callback);
   180: }
   181: 
   182: 
   183: WRITE16_HANDLER( metro_irq_cause_w )
   184: {
   185: //if (data & ~0x15)	logerror("CPU #0 PC %06X : unknown bits of irqcause written: %04X\n",activecpu_get_pc(),data);
   186: 
   187: 	if (ACCESSING_LSB)
   188: 	{
   189: 		data &= ~*metro_irq_enable;
   190: 		if (data & 0x01)	requested_int[0] = 0;
   191: 		if (data & 0x02)	requested_int[1] = 0;	// DAITORIDE, BALCUBE, KARATOUR, MOUJA
   192: 		if (data & 0x04)	requested_int[2] = 0;
   193: 		if (data & 0x08)	requested_int[3] = 0;	// KARATOUR
   194: 		if (data & 0x10)	requested_int[4] = 0;
   195: 		if (data & 0x20)	requested_int[5] = 0;	// KARATOUR, BLZNTRND
   196: 		if (data & 0x40)	requested_int[6] = 0;
   197: 		if (data & 0x80)	requested_int[7] = 0;
   198: 	}
   199: 
   200: 	update_irq_state();
   201: }
   202: 
   203: 
   204: INTERRUPT_GEN( metro_interrupt )
   205: {
   206: 	switch ( cpu_getiloops() )
   207: 	{
   208: 		case 0:
   209: 			requested_int[0] = 1;
   210: 			update_irq_state();
   211: 			break;
   212: 
   213: 		default:
   214: 			requested_int[4] = 1;
   215: 			update_irq_state();
   216: 			break;
   217: 	}
   218: }
   219: 
   220: /* Lev 1. Lev 2 seems sound related */
   221: INTERRUPT_GEN( bangball_interrupt )
   222: {
   223: 	requested_int[0] = 1;	// set scroll regs if a flag is set
   224: 	requested_int[4] = 1;	// clear that flag
   225: 	update_irq_state();
   226: }
   227: 
   228: 
   229: static void vblank_end_callback(int param)
   230: {
   231: 	requested_int[5] = param;
   232: }
   233: 
   234: /* lev 2-7 (lev 1 seems sound related) */
   235: INTERRUPT_GEN( karatour_interrupt )
   236: {
   237: 	switch ( cpu_getiloops() )
   238: 	{
   239: 		case 0:
   240: 			requested_int[0] = 1;
   241: 			requested_int[5] = 1;	// write the scroll registers
   242: 			timer_set(TIME_IN_USEC(DEFAULT_REAL_60HZ_VBLANK_DURATION), 0, vblank_end_callback);
   243: 			update_irq_state();
   244: 			break;
   245: 
   246: 		default:
   247: 			requested_int[4] = 1;
   248: 			update_irq_state();
   249: 			break;
   250: 	}
   251: }
   252: 
   253: INTERRUPT_GEN( mouja_interrupt )
   254: {
   255: 	switch ( cpu_getiloops() )
   256: 	{
   257: 		case 0:
   258: 			requested_int[0] = 1;
   259: 			update_irq_state();
   260: 			break;
   261: 
   262: 		default:
   263: 			requested_int[1] = 1;
   264: 			update_irq_state();
   265: 			break;
   266: 	}
   267: }
   268: 
   269: INTERRUPT_GEN( gakusai_interrupt )
   270: {
   271: 	switch ( cpu_getiloops() )
   272: 	{
   273: 		case 0:
   274: 			requested_int[1] = 1;
   275: 			update_irq_state();
   276: 			break;
   277: 	}
   278: }
   279: 
   280: INTERRUPT_GEN( dokyusei_interrupt )
   281: {
   282: 	switch ( cpu_getiloops() )
   283: 	{
   284: 		case 0:
   285: 			requested_int[1] = 1;
   286: 			update_irq_state();
   287: 			break;
   288: 		case 1:	// needed?
   289: 			requested_int[5] = 1;
   290: 			update_irq_state();
   291: 			break;
   292: 	}
   293: }
   294: 
   295: static void ymf278b_interrupt(int active)
   296: {
   297: 	cpu_set_irq_line(0, 2, active);
   298: }
   299: 
   300: /***************************************************************************
   301: 
   302: 
   303: 							Sound Communication
   304: 
   305: 
   306: ***************************************************************************/
   307: 
   308: // #define TEST_SOUND
   309: 
   310: #ifdef TEST_SOUND 
   311: static int metro_io_callback(int ioline, int state)
   312: {
   313: 	data8_t data;
   314: 
   315:     switch ( ioline )
   316: 	{
   317: 		case UPD7810_RXD:	/* read the RxD line */
   318: 			data = soundlatch_r(0);
   319: 			state = data & 1;
   320: 			soundlatch_w(0, data >> 1);
   321: 			break;
   322: 		default:
   323: 			logerror("upd7810 ioline %d not handled\n", ioline);
   324:     }
   325: 	return state;
   326: }
   327: 
   328: WRITE16_HANDLER( metro_soundlatch_w )
   329: {
   330: 	if ( ACCESSING_LSB && (Machine->sample_rate != 0) )
   331: 	{
   332: 		soundlatch_w(0,data & 0xff);
   333: 		cpu_set_nmi_line( 1, PULSE_LINE );
   334: logerror("soundcmd %02x\n", data & 0xff);
   335: 	}
   336: }
   337: 
   338: data16_t metro_soundstatus;
   339: 
   340: WRITE16_HANDLER( metro_soundstatus_w )
   341: {
   342: 	if (ACCESSING_LSB)
   343: 	{
   344: 		metro_soundstatus = (~data) & 1;
   345: 	}
   346: 	if (data & ~1)	logerror("CPU #0 PC %06X : unknown bits of soundstatus written: %04X\n",activecpu_get_pc(),data);
   347: }
   348: 
   349: 
   350: READ16_HANDLER( metro_soundstatus_r )
   351: {
   352: 	return metro_soundstatus & 1;
   353: }
   354: 
   355: 
   356: READ16_HANDLER( dharma_soundstatus_r )
   357: {
   358: 	return readinputport(0) | (metro_soundstatus ? 0x80 : 0);
   359: }
   360: 
   361: static WRITE_HANDLER( daitorid_sound_rombank_w )
   362: {
   363: 	unsigned char *rom = memory_region(REGION_CPU2);
   364: 	int bank = (data >> 4) & 0x07;
   365: 
   366: 	if ( data & ~0x70 ) 	logerror("CPU #1 - PC %04X: unknown bank bits: %02X\n",activecpu_get_pc(),data);
   367: 
   368: 	if (bank < 2)	rom = &rom[0x4000 * bank];
   369: 	else			rom = &rom[0x4000 * (bank-2) + 0x10000];
   370: 
   371: 	cpu_setbank(1, rom);
   372: }
   373: 
   374: static int porta,portb;
   375: 
   376: static READ_HANDLER( daitorid_porta_r )
   377: {
   378: 	return porta;
   379: }
   380: 
   381: static WRITE_HANDLER( daitorid_porta_w )
   382: {
   383: 	porta = data;
   384: }
   385: 
   386: static WRITE_HANDLER( daitorid_portb_w )
   387: {
   388: 	/* port B layout:
   389: 	   7 !clock latch for message to main CPU
   390: 	   6 !clock YM2151 I/O
   391: 	   5
   392: 	   4 !clock MSM6295 I/O
   393: 	   3 !enable read from YM2151/6295
   394: 	   2 !enable write to YM2151/6295
   395: 	   1 select YM2151 register or data port
   396: 	   0
   397: 	  */
   398: 
   399: if (!BIT(data,0) || !BIT(data,5))
   400: 	logerror("%04x: daitorid_port_b_w %02x\n",activecpu_get_pc(),data);
   401: 
   402: 	if (BIT(portb,7) && !BIT(data,7))	/* clock 1->0 */
   403: 	{
   404: //		metro_soundstatus = porta;
   405: 		metro_soundstatus = 0;	// ???
   406: logerror("%04x: to_cpu = %02x\n",activecpu_get_pc(),porta);
   407: 	}
   408: 
   409: 	if (BIT(portb,6) && !BIT(data,6))	/* clock 1->0 */
   410: 	{
   411: 		if (!BIT(data,2))
   412: 		{
   413: 			/* write */
   414: 			if (BIT(data,1))
   415: 			{
   416: 				YM2151_data_port_0_w(0,porta);
   417: 			}
   418: 			else
   419: 			{
   420: 				YM2151_register_port_0_w(0,porta);
   421: 			}
   422: 		}
   423: 		if (!BIT(data,3))
   424: 		{
   425: 			/* read */
   426: 			if (BIT(data,1))
   427: 			{
   428: 				porta = YM2151_status_port_0_r(0);
   429: 			}
   430: 		}
   431: 	}
   432: 
   433: 	if (BIT(portb,4) && !BIT(data,4))	/* clock 1->0 */
   434: 	{
   435: 		if (!BIT(data,2))
   436: 		{
   437: 			/* write */
   438: 			OKIM6295_data_0_w(0,porta);
   439: logerror("OKIM6295_data_w %02x\n",porta);
   440: 		}
   441: 		if (!BIT(data,3))
   442: 		{
   443: 			/* read */
   444: 			porta = OKIM6295_status_0_r(0);
   445: logerror("OKIM6295_status_r %02x\n",porta);
   446: 		}
   447: 	}
   448: 
   449: 	portb = data;
   450: }
   451: 
   452: 
   453: static MEMORY_READ_START( upd7810_readmem )
   454: 	{ 0x0000, 0x3fff, MRA_ROM },	/* External ROM */
   455: //	{ 0x4000, 0x7fff, MRA_BANK1 },	/* External ROM (Banked) */
   456: 	{ 0x8000, 0x87ff, MRA_RAM },	/* External RAM */
   457: 	{ 0xff00, 0xffff, MRA_RAM },	/* Internal RAM */
   458: MEMORY_END
   459: 
   460: static MEMORY_WRITE_START( upd7810_writemem )
   461: 	{ 0x0000, 0x3fff, MWA_ROM },	/* External ROM */
   462: 	{ 0x4000, 0x7fff, MWA_ROM },	/* External ROM (Banked) */
   463: 	{ 0x8000, 0x87ff, MWA_RAM },	/* External RAM */
   464: 	{ 0xff00, 0xffff, MWA_RAM },	/* Internal RAM */
   465: MEMORY_END
   466: 
   467: static PORT_READ_START( upd7810_readport )
   468: 	{ UPD7810_PORTA, UPD7810_PORTA, daitorid_porta_r },
   469: PORT_END
   470: 
   471: static PORT_WRITE_START( upd7810_writeport )
   472: 	{ UPD7810_PORTA, UPD7810_PORTA, daitorid_porta_w },
   473: 	{ UPD7810_PORTB, UPD7810_PORTB, daitorid_portb_w },
   474: //	{ UPD7810_PORTC, UPD7810_PORTC, daitorid_sound_rombank_w },
   475: PORT_END
   476: 
   477: static void metro_sound_irq_handler(int state)
   478: {
   479: 	cpu_set_irq_line(1, UPD7810_INTF2, state ? ASSERT_LINE : CLEAR_LINE);
   480: }
   481: 
   482: static struct YM2151interface daitorid_ym2151_interface =
   483: {
   484: 	1,
   485: 	2000000,			/* ? */
   486: 	{ YM3012_VOL(50,MIXER_PAN_LEFT,50,MIXER_PAN_RIGHT) },
   487: 	{ metro_sound_irq_handler },	/* irq handler */
   488: 	{ 0 }							/* port_write */
   489: };
   490: #else 
   491: WRITE16_HANDLER( metro_soundlatch_w )
   492: {
   493: 	if ( ACCESSING_LSB && (Machine->sample_rate != 0) )
   494: 	{
   495: //		soundlatch_w(0,data & 0xff);
   496: 	}
   497: }
   498: 
   499: data16_t metro_soundstatus;
   500: 
   501: WRITE16_HANDLER( metro_soundstatus_w )
   502: {
   503: 	if (ACCESSING_LSB)
   504: 	{
   505: 		metro_soundstatus = (~data) & 1;
   506: 	}
   507: 	if (data & ~1)	logerror("CPU #0 PC %06X : unknown bits of soundstatus written: %04X\n",activecpu_get_pc(),data);
   508: }
   509: 
   510: 
   511: READ16_HANDLER( metro_soundstatus_r )
   512: {
   513: //	return metro_soundstatus & 1;
   514: 	return rand() & 1;
   515: }
   516: 
   517: 
   518: READ16_HANDLER( dharma_soundstatus_r )
   519: {
   520: //	return readinputport(0) | (metro_soundstatus ? 0x80 : 0);
   521: 	return readinputport(0) | (0);
   522: }
   523: #endif 
   524: 
   525: 
   526: static READ16_HANDLER( ymf278b_r )
   527: {
   528: 	return YMF278B_status_port_0_r(0);
   529: }
   530: 
   531: static WRITE16_HANDLER( ymf278b_w )
   532: {
   533: 	if(ACCESSING_LSB)
   534: 		switch(offset)
   535: 		{
   536: 			case 0:
   537: 				YMF278B_control_port_0_A_w(0, data);
   538: 				break;
   539: 			case 1:
   540: 				YMF278B_data_port_0_A_w(0, data);
   541: 				break;
   542: 			case 2:
   543: 				YMF278B_control_port_0_B_w(0, data);
   544: 				break;
   545: 			case 3:
   546: 				YMF278B_data_port_0_B_w(0, data);
   547: 				break;
   548: 			case 4:
   549: 				YMF278B_control_port_0_C_w(0, data);
   550: 				break;
   551: 			case 5:
   552: 				YMF278B_data_port_0_C_w(0, data);
   553: 				break;
   554: 		}
   555: }
   556: 
   557: static struct OKIM6295interface okim6295_intf_8kHz =
   558: {
   559: 	1,
   560: 	{ 8000 },
   561: 	{ REGION_SOUND1 },
   562: 	{ 100 }
   563: };
   564: static struct OKIM6295interface okim6295_intf_12kHz =
   565: {
   566: 	1,
   567: 	{ 12000 },
   568: 	{ REGION_SOUND1 },
   569: 	{ 50 }
   570: };
   571: static struct OKIM6295interface okim6295_intf_16kHz =
   572: {
   573: 	1,
   574: 	{ 16000 },
   575: 	{ REGION_SOUND1 },
   576: 	{ 100 }
   577: };
   578: 
   579: static struct YM2413interface ym2413_intf_8MHz =
   580: {
   581: 	1,
   582: 	8000000,
   583: 	{ YM2413_VOL(100,MIXER_PAN_CENTER,100,MIXER_PAN_CENTER) }
   584: };
   585: 
   586: static struct YMF278B_interface ymf278b_interface =
   587: {
   588: 	1,
   589: 	{ YMF278B_STD_CLOCK },
   590: 	{ REGION_SOUND1 },
   591: 	{ YM3012_VOL(100, MIXER_PAN_CENTER, 100, MIXER_PAN_CENTER) },
   592: 	{ ymf278b_interrupt }
   593: };
   594: 
   595: /***************************************************************************
   596: 
   597: 
   598: 								Coin Lockout
   599: 
   600: 
   601: ***************************************************************************/
   602: 
   603: /* IT DOESN'T WORK PROPERLY */
   604: 
   605: WRITE16_HANDLER( metro_coin_lockout_1word_w )
   606: {
   607: 	if (ACCESSING_LSB)
   608: 	{
   609: //		coin_lockout_w(0, data & 1);
   610: //		coin_lockout_w(1, data & 2);
   611: 	}
   612: 	if (data & ~3)	logerror("CPU #0 PC %06X : unknown bits of coin lockout written: %04X\n",activecpu_get_pc(),data);
   613: }
   614: 
   615: 
   616: WRITE16_HANDLER( metro_coin_lockout_4words_w )
   617: {
   618: //	coin_lockout_w( (offset >> 1) & 1, offset & 1 );
   619: 	if (data & ~1)	logerror("CPU #0 PC %06X : unknown bits of coin lockout written: %04X\n",activecpu_get_pc(),data);
   620: }
   621: 
   622: 
   623: 
   624: 
   625: /***************************************************************************
   626: 
   627: 
   628: 								Banked ROM access
   629: 
   630: 
   631: ***************************************************************************/
   632: 
   633: /*
   634: 	The main CPU has access to the ROMs that hold the graphics through
   635: 	a banked window of 64k. Those ROMs also usually store the tables for
   636: 	the virtual tiles set. The tile codes to be written to the tilemap
   637: 	memory to render the backgrounds are also stored here, in a format
   638: 	that the blitter can readily use (which is a form of compression)
   639: */
   640: 
   641: static data16_t *metro_rombank;
   642: 
   643: READ16_HANDLER( metro_bankedrom_r )
   644: {
   645: 	const int region = REGION_GFX1;
   646: 
   647: 	data8_t *ROM = memory_region( region );
   648: 	size_t  len  = memory_region_length( region );
   649: 
   650: 	offset = offset * 2 + 0x10000 * (*metro_rombank);
   651: 
   652: 	if ( offset < len )	return ((ROM[offset+0]<<8)+ROM[offset+1])^0xffff;
   653: 	else				return 0xffff;
   654: }
   655: 
   656: 
   657: 
   658: 
   659: /***************************************************************************
   660: 
   661: 
   662: 									Blitter
   663: 
   664: 	[ Registers ]
   665: 
   666: 		Offset:		Value:
   667: 
   668: 		0.l			Destination Tilemap      (1,2,3)
   669: 		4.l			Blitter Data Address     (byte offset into the gfx ROMs)
   670: 		8.l			Destination Address << 7 (byte offset into the tilemap)
   671: 
   672: 		The Blitter reads a byte and looks at the most significative
   673: 		bits for the opcode, while the remaining bits define a value
   674: 		(usually how many bytes to write). The opcode byte may be
   675: 		followed by a number of other bytes:
   676: 
   677: 			76------			Opcode
   678: 			--543210			N
   679: 			(at most N+1 bytes follow)
   680: 
   681: 
   682: 		The blitter is designed to write every other byte (e.g. it
   683: 		writes a byte and skips the next). Hence 2 blits are needed
   684: 		to fill a tilemap (first even, then odd addresses)
   685: 
   686: 	[ Opcodes ]
   687: 
   688: 			0		Copy the following N+1 bytes. If the whole byte
   689: 					is $00:	stop and generate an IRQ
   690: 
   691: 			1		Fill N+1 bytes with a sequence, starting with
   692: 					the  value in the following byte
   693: 
   694: 			2		Fill N+1 bytes with the value in the following
   695: 					byte
   696: 
   697: 			3		Skip N+1 bytes. If the whole byte is $C0:
   698: 					skip to the next row of the tilemap (+0x200 bytes)
   699: 					but preserve the column passed at the start of the
   700: 					blit (destination address % 0x200)
   701: 
   702: 
   703: ***************************************************************************/
   704: 
   705: data16_t *metro_blitter_regs;
   706: 
   707: void metro_blit_done(int param)
   708: {
   709: 	requested_int[blitter_bit] = 1;
   710: 	update_irq_state();
   711: }
   712: 
   713: INLINE int blt_read(const data8_t *ROM, const int offs)
   714: {
   715: 	return ROM[offs] ^ 0xff;
   716: }
   717: 
   718: INLINE void blt_write(const int tmap, const offs_t offs, const data16_t data, const data16_t mask)
   719: {
   720: 	switch( tmap )
   721: 	{
   722: 		case 1:	metro_vram_0_w(offs,data,mask);	break;
   723: 		case 2:	metro_vram_1_w(offs,data,mask);	break;
   724: 		case 3:	metro_vram_2_w(offs,data,mask);	break;
   725: 	}
   726: //	logerror("CPU #0 PC %06X : Blitter %X] %04X <- %04X & %04X\n",activecpu_get_pc(),tmap,offs,data,mask);
   727: }
   728: 
   729: 
   730: WRITE16_HANDLER( metro_blitter_w )
   731: {
   732: 	COMBINE_DATA( &metro_blitter_regs[offset] );
   733: 
   734: 	if (offset == 0xC/2)
   735: 	{
   736: 		const int region = REGION_GFX1;
   737: 
   738: 		data8_t *src	=	memory_region(region);
   739: 		size_t  src_len	=	memory_region_length(region);
   740: 
   741: 		UINT32 tmap		=	(metro_blitter_regs[ 0x00 / 2 ] << 16 ) +
   742: 							 metro_blitter_regs[ 0x02 / 2 ];
   743: 		UINT32 src_offs	=	(metro_blitter_regs[ 0x04 / 2 ] << 16 ) +
   744: 							 metro_blitter_regs[ 0x06 / 2 ];
   745: 		UINT32 dst_offs	=	(metro_blitter_regs[ 0x08 / 2 ] << 16 ) +
   746: 							 metro_blitter_regs[ 0x0a / 2 ];
   747: 
   748: 		int shift			=	(dst_offs & 0x80) ? 0 : 8;
   749: 		data16_t mask		=	(dst_offs & 0x80) ? 0xff00 : 0x00ff;
   750: 
   751: //		logerror("CPU #0 PC %06X : Blitter regs %08X, %08X, %08X\n",activecpu_get_pc(),tmap,src_offs,dst_offs);
   752: 
   753: 		dst_offs >>= 7+1;
   754: 		switch( tmap )
   755: 		{
   756: 			case 1:
   757: 			case 2:
   758: 			case 3:
   759: 				break;
   760: 			default:
   761: 				logerror("CPU #0 PC %06X : Blitter unknown destination: %08X\n",activecpu_get_pc(),tmap);
   762: 				return;
   763: 		}
   764: 
   765: 		while (1)
   766: 		{
   767: 			data16_t b1,b2,count;
   768: 
   769: 			src_offs %= src_len;
   770: 			b1 = blt_read(src,src_offs);
   771: //			logerror("CPU #0 PC %06X : Blitter opcode %02X at %06X\n",activecpu_get_pc(),b1,src_offs);
   772: 			src_offs++;
   773: 
   774: 			count = ((~b1) & 0x3f) + 1;
   775: 
   776: 			switch( (b1 & 0xc0) >> 6 )
   777: 			{
   778: 				case 0:
   779: 
   780: 					/* Stop and Generate an IRQ. We can't generate it now
   781: 					   both because it's unlikely that the blitter is so
   782: 					   fast and because some games (e.g. lastfort) need to
   783: 					   complete the blitter irq service routine before doing
   784: 					   another blit. */
   785: 					if (b1 == 0)
   786: 					{
   787: 						timer_set(TIME_IN_USEC(500),0,metro_blit_done);
   788: 						return;
   789: 					}
   790: 
   791: 					/* Copy */
   792: 					while (count--)
   793: 					{
   794: 						src_offs %= src_len;
   795: 						b2 = blt_read(src,src_offs) << shift;
   796: 						src_offs++;
   797: 
   798: 						dst_offs &= 0xffff;
   799: 						blt_write(tmap,dst_offs,b2,mask);
   800: 						dst_offs = ((dst_offs+1) & (0x100-1)) | (dst_offs & (~(0x100-1)));
   801: 					}
   802: 					break;
   803: 
   804: 
   805: 				case 1:
   806: 
   807: 					/* Fill with an increasing value */
   808: 					src_offs %= src_len;
   809: 					b2 = blt_read(src,src_offs);
   810: 					src_offs++;
   811: 
   812: 					while (count--)
   813: 					{
   814: 						dst_offs &= 0xffff;
   815: 						blt_write(tmap,dst_offs,b2<<shift,mask);
   816: 						dst_offs = ((dst_offs+1) & (0x100-1)) | (dst_offs & (~(0x100-1)));
   817: 						b2++;
   818: 					}
   819: 					break;
   820: 
   821: 
   822: 				case 2:
   823: 
   824: 					/* Fill with a fixed value */
   825: 					src_offs %= src_len;
   826: 					b2 = blt_read(src,src_offs) << shift;
   827: 					src_offs++;
   828: 
   829: 					while (count--)
   830: 					{
   831: 						dst_offs &= 0xffff;
   832: 						blt_write(tmap,dst_offs,b2,mask);
   833: 						dst_offs = ((dst_offs+1) & (0x100-1)) | (dst_offs & (~(0x100-1)));
   834: 					}
   835: 					break;
   836: 
   837: 
   838: 				case 3:
   839: 
   840: 					/* Skip to the next line ?? */
   841: 					if (b1 == 0xC0)
   842: 					{
   843: 						dst_offs +=   0x100;
   844: 						dst_offs &= ~(0x100-1);
   845: 						dst_offs |=  (0x100-1) & (metro_blitter_regs[ 0x0a / 2 ] >> (7+1));
   846: 					}
   847: 					else
   848: 					{
   849: 						dst_offs += count;
   850: 					}
   851: 					break;
   852: 
   853: 
   854: 				default:
   855: 					logerror("CPU #0 PC %06X : Blitter unknown opcode %02X at %06X\n",activecpu_get_pc(),b1,src_offs-1);
   856: 					return;
   857: 			}
   858: 
   859: 		}
   860: 	}
   861: 
   862: }
   863: 
   864: 
   865: /***************************************************************************
   866: 
   867: 
   868: 								Memory Maps
   869: 
   870: 
   871: ***************************************************************************/
   872: 
   873: /*
   874:  Lines starting with an empty comment in the following MemoryReadAddress
   875:  arrays are there for debug (e.g. the game does not read from those ranges
   876:  AFAIK)
   877: */
   878: 
   879: /***************************************************************************
   880: 									Bal Cube
   881: ***************************************************************************/
   882: 
   883: /* Really weird way of mapping 3 DSWs */
   884: static READ16_HANDLER( balcube_dsw_r )
   885: {
   886: 	data16_t dsw1 = readinputport(2) >> 0;
   887: 	data16_t dsw2 = readinputport(2) >> 8;
   888: 	data16_t dsw3 = readinputport(3);
   889: 
   890: 	switch (offset*2)
   891: 	{
   892: 		case 0x1FFFC:	return ((dsw1 & 0x01) ? 0x40 : 0) | ((dsw3 & 0x01) ? 0x80 : 0);
   893: 		case 0x1FFFA:	return ((dsw1 & 0x02) ? 0x40 : 0) | ((dsw3 & 0x02) ? 0x80 : 0);
   894: 		case 0x1FFF6:	return ((dsw1 & 0x04) ? 0x40 : 0) | ((dsw3 & 0x04) ? 0x80 : 0);
   895: 		case 0x1FFEE:	return ((dsw1 & 0x08) ? 0x40 : 0) | ((dsw3 & 0x08) ? 0x80 : 0);
   896: 		case 0x1FFDE:	return ((dsw1 & 0x10) ? 0x40 : 0) | ((dsw3 & 0x10) ? 0x80 : 0);
   897: 		case 0x1FFBE:	return ((dsw1 & 0x20) ? 0x40 : 0) | ((dsw3 & 0x20) ? 0x80 : 0);
   898: 		case 0x1FF7E:	return ((dsw1 & 0x40) ? 0x40 : 0) | ((dsw3 & 0x40) ? 0x80 : 0);
   899: 		case 0x1FEFE:	return ((dsw1 & 0x80) ? 0x40 : 0) | ((dsw3 & 0x80) ? 0x80 : 0);
   900: 
   901: 		case 0x1FDFE:	return (dsw2 & 0x01) ? 0x40 : 0;
   902: 		case 0x1FBFE:	return (dsw2 & 0x02) ? 0x40 : 0;
   903: 		case 0x1F7FE:	return (dsw2 & 0x04) ? 0x40 : 0;
   904: 		case 0x1EFFE:	return (dsw2 & 0x08) ? 0x40 : 0;
   905: 		case 0x1DFFE:	return (dsw2 & 0x10) ? 0x40 : 0;
   906: 		case 0x1BFFE:	return (dsw2 & 0x20) ? 0x40 : 0;
   907: 		case 0x17FFE:	return (dsw2 & 0x40) ? 0x40 : 0;
   908: 		case 0x0FFFE:	return (dsw2 & 0x80) ? 0x40 : 0;
   909: 	}
   910: 	logerror("CPU #0 PC %06X : unknown dsw address read: %04X\n",activecpu_get_pc(),offset);
   911: 	return 0xffff;
   912: }
   913: 
   914: 
   915: static MEMORY_READ16_START( balcube_readmem )
   916: 	{ 0x000000, 0x07ffff, MRA16_ROM				},	// ROM
   917: 	{ 0xf00000, 0xf0ffff, MRA16_RAM				},	// RAM
   918: 	{ 0x300000, 0x300001, ymf278b_r				},	// Sound
   919: 	{ 0x400000, 0x41ffff, balcube_dsw_r			},	// DSW x 3
   920: 	{ 0x600000, 0x61ffff, MRA16_RAM				},	// Layer 0
   921: 	{ 0x620000, 0x63ffff, MRA16_RAM				},	// Layer 1
   922: 	{ 0x640000, 0x65ffff, MRA16_RAM				},	// Layer 2
   923: 	{ 0x660000, 0x66ffff, metro_bankedrom_r		},	// Banked ROM
   924: 	{ 0x670000, 0x673fff, MRA16_RAM				},	// Palette
   925: 	{ 0x674000, 0x674fff, MRA16_RAM				},	// Sprites
   926: 	{ 0x678000, 0x6787ff, MRA16_RAM				},	// Tiles Set
   927: 	{ 0x6788a2, 0x6788a3, metro_irq_cause_r		},	// IRQ Cause
   928: 	{ 0x500000, 0x500001, input_port_0_word_r	},	// Inputs
   929: 	{ 0x500002, 0x500003, input_port_1_word_r	},	//
   930: 	{ 0x500006, 0x500007, MRA16_NOP				},	//
   931: MEMORY_END
   932: 
   933: static MEMORY_WRITE16_START( balcube_writemem )
   934: 	{ 0x000000, 0x07ffff, MWA16_ROM						},	// ROM
   935: 	{ 0xf00000, 0xf0ffff, MWA16_RAM						},	// RAM
   936: 	{ 0x300000, 0x30000b, ymf278b_w						},	// Sound
   937: 	{ 0x500002, 0x500009, metro_coin_lockout_4words_w	},	// Coin Lockout
   938: 	{ 0x670000, 0x673fff, metro_paletteram_w, &paletteram16	},	// Palette
   939: 	{ 0x674000, 0x674fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
   940: 	{ 0x600000, 0x61ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
   941: 	{ 0x620000, 0x63ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
   942: 	{ 0x640000, 0x65ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
   943: 	{ 0x678000, 0x6787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size		},	// Tiles Set
   944: 	{ 0x678840, 0x67884d, metro_blitter_w, &metro_blitter_regs		},	// Tiles Blitter
   945: 	{ 0x678860, 0x67886b, metro_window_w, &metro_window				},	// Tilemap Window
   946: 	{ 0x678870, 0x67887b, MWA16_RAM, &metro_scroll		},	// Scroll
   947: 	{ 0x678880, 0x678881, MWA16_NOP						},	// ? increasing
   948: 	{ 0x678890, 0x678891, MWA16_NOP						},	// ? increasing
   949: 	{ 0x6788a2, 0x6788a3, metro_irq_cause_w				},	// IRQ Acknowledge
   950: 	{ 0x6788a4, 0x6788a5, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
   951: 	{ 0x6788aa, 0x6788ab, MWA16_RAM, &metro_rombank		},	// Rom Bank
   952: 	{ 0x6788ac, 0x6788ad, MWA16_RAM, &metro_screenctrl	},	// Screen Control
   953: 	{ 0x679700, 0x679713, MWA16_RAM, &metro_videoregs	},	// Video Registers
   954: MEMORY_END
   955: 
   956: 
   957: /***************************************************************************
   958: 								Bang Bang Ball
   959: ***************************************************************************/
   960: 
   961: static MEMORY_READ16_START( bangball_readmem )
   962: 	{ 0x000000, 0x07ffff, MRA16_ROM				},	// ROM
   963: 	{ 0xf00000, 0xf0ffff, MRA16_RAM				},	// RAM
   964: 	{ 0xf10000, 0xf10fff, MRA16_RAM				},	// RAM (bug in the ram test routine)
   965: 	{ 0xb00000, 0xb00001, ymf278b_r				},	// Sound
   966: 	{ 0xc00000, 0xc1ffff, balcube_dsw_r			},	// DSW x 3
   967: 	{ 0xd00000, 0xd00001, input_port_0_word_r	},	// Inputs
   968: 	{ 0xd00002, 0xd00003, input_port_1_word_r	},	//
   969: 	{ 0xd00006, 0xd00007, MRA16_NOP				},	//
   970: 	{ 0xe00000, 0xe1ffff, MRA16_RAM				},	// Layer 0
   971: 	{ 0xe20000, 0xe3ffff, MRA16_RAM				},	// Layer 1
   972: 	{ 0xe40000, 0xe5ffff, MRA16_RAM				},	// Layer 2
   973: 	{ 0xe60000, 0xe6ffff, metro_bankedrom_r		},	// Banked ROM
   974: 	{ 0xe70000, 0xe73fff, MRA16_RAM				},	// Palette
   975: 	{ 0xe74000, 0xe74fff, MRA16_RAM				},	// Sprites
   976: 	{ 0xe78000, 0xe787ff, MRA16_RAM				},	// Tiles Set
   977: 	{ 0xe788a2, 0xe788a3, metro_irq_cause_r		},	// IRQ Cause
   978: MEMORY_END
   979: 
   980: static MEMORY_WRITE16_START( bangball_writemem )
   981: 	{ 0x000000, 0x07ffff, MWA16_ROM						},	// ROM
   982: 	{ 0xf00000, 0xf0ffff, MWA16_RAM						},	// RAM
   983: 	{ 0xf10000, 0xf10fff, MWA16_RAM						},	// RAM
   984: 	{ 0xb00000, 0xb0000b, ymf278b_w						},	// Sound
   985: 	{ 0xd00002, 0xd00009, metro_coin_lockout_4words_w	},	// Coin Lockout
   986: 	{ 0xe00000, 0xe1ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
   987: 	{ 0xe20000, 0xe3ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
   988: 	{ 0xe40000, 0xe5ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
   989: 	{ 0xe70000, 0xe73fff, metro_paletteram_w, &paletteram16	},	// Palette
   990: 	{ 0xe74000, 0xe74fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
   991: 	{ 0xe78000, 0xe787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size		},	// Tiles Set
   992: 	{ 0xe78840, 0xe7884d, metro_blitter_w, &metro_blitter_regs		},	// Tiles Blitter
   993: 	{ 0xe78860, 0xe7886b, metro_window_w, &metro_window				},	// Tilemap Window
   994: 	{ 0xe78870, 0xe7887b, MWA16_RAM, &metro_scroll		},	// Scroll
   995: 	{ 0xe78880, 0xe78881, MWA16_NOP						},	// ? increasing
   996: 	{ 0xe78890, 0xe78891, MWA16_NOP						},	// ? increasing
   997: 	{ 0xe788a2, 0xe788a3, metro_irq_cause_w				},	// IRQ Acknowledge
   998: 	{ 0xe788a4, 0xe788a5, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
   999: 	{ 0xe788aa, 0xe788ab, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1000: 	{ 0xe788ac, 0xe788ad, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1001: 	{ 0xe79700, 0xe79713, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1002: MEMORY_END
  1003: 
  1004: 
  1005: /***************************************************************************
  1006: 								Dai Toride
  1007: ***************************************************************************/
  1008: 
  1009: static MEMORY_READ16_START( daitorid_readmem )
  1010: 	{ 0x000000, 0x03ffff, MRA16_ROM				},	// ROM
  1011: 	{ 0x800000, 0x80ffff, MRA16_RAM				},	// RAM
  1012: 	{ 0x400000, 0x41ffff, MRA16_RAM				},	// Layer 0
  1013: 	{ 0x420000, 0x43ffff, MRA16_RAM				},	// Layer 1
  1014: 	{ 0x440000, 0x45ffff, MRA16_RAM				},	// Layer 2
  1015: 	{ 0x460000, 0x46ffff, metro_bankedrom_r		},	// Banked ROM
  1016: 	{ 0x470000, 0x473fff, MRA16_RAM				},	// Palette
  1017: 	{ 0x474000, 0x474fff, MRA16_RAM				},	// Sprites
  1018: 	{ 0x478000, 0x4787ff, MRA16_RAM				},	// Tiles Set
  1019: 	{ 0x4788a2, 0x4788a3, metro_irq_cause_r		},	// IRQ Cause
  1020: 	{ 0xc00000, 0xc00001, dharma_soundstatus_r	},	// Inputs
  1021: 	{ 0xc00002, 0xc00003, input_port_1_word_r	},	//
  1022: 	{ 0xc00004, 0xc00005, input_port_2_word_r	},	//
  1023: 	{ 0xc00006, 0xc00007, input_port_3_word_r	},	//
  1024: MEMORY_END
  1025: 
  1026: static MEMORY_WRITE16_START( daitorid_writemem )
  1027: 	{ 0x000000, 0x03ffff, MWA16_ROM						},	// ROM
  1028: 	{ 0x800000, 0x80ffff, MWA16_RAM						},	// RAM
  1029: 	{ 0x400000, 0x41ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
  1030: 	{ 0x420000, 0x43ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
  1031: 	{ 0x440000, 0x45ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
  1032: 	{ 0x470000, 0x473fff, metro_paletteram_w, &paletteram16	},	// Palette
  1033: 	{ 0x474000, 0x474fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1034: 	{ 0x478000, 0x4787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size	},	// Tiles Set
  1035: 	{ 0x478840, 0x47884d, metro_blitter_w, &metro_blitter_regs	},	// Tiles Blitter
  1036: 	{ 0x478860, 0x47886b, metro_window_w, &metro_window			},	// Tilemap Window
  1037: 	{ 0x478870, 0x47887b, MWA16_RAM, &metro_scroll		},	// Scroll
  1038: 	{ 0x478880, 0x478881, MWA16_NOP						},	// ? increasing
  1039: 	{ 0x478890, 0x478891, MWA16_NOP						},	// ? increasing
  1040: 	{ 0x4788a2, 0x4788a3, metro_irq_cause_w				},	// IRQ Acknowledge
  1041: 	{ 0x4788a4, 0x4788a5, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1042: 	{ 0x4788a8, 0x4788a9, metro_soundlatch_w			},	// To Sound CPU
  1043: 	{ 0x4788aa, 0x4788ab, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1044: 	{ 0x4788ac, 0x4788ad, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1045: 	{ 0x479700, 0x479713, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1046: 	{ 0xc00000, 0xc00001, metro_soundstatus_w			},	// To Sound CPU
  1047: 	{ 0xc00002, 0xc00009, metro_coin_lockout_4words_w	},	// Coin Lockout
  1048: MEMORY_END
  1049: 
  1050: 
  1051: /***************************************************************************
  1052: 								Dharma Doujou
  1053: ***************************************************************************/
  1054: 
  1055: static MEMORY_READ16_START( dharma_readmem )
  1056: 	{ 0x000000, 0x03ffff, MRA16_ROM				},	// ROM
  1057: 	{ 0x400000, 0x40ffff, MRA16_RAM				},	// RAM
  1058: 	{ 0x800000, 0x81ffff, MRA16_RAM				},	// Layer 0
  1059: 	{ 0x820000, 0x83ffff, MRA16_RAM				},	// Layer 1
  1060: 	{ 0x840000, 0x85ffff, MRA16_RAM				},	// Layer 2
  1061: 	{ 0x860000, 0x86ffff, metro_bankedrom_r		},	// Banked ROM
  1062: 	{ 0x870000, 0x873fff, MRA16_RAM				},	// Palette
  1063: 	{ 0x874000, 0x874fff, MRA16_RAM				},	// Sprites
  1064: 	{ 0x878000, 0x8787ff, MRA16_RAM				},	// Tiles Set
  1065: 	{ 0x8788a2, 0x8788a3, metro_irq_cause_r		},	// IRQ Cause
  1066: 	{ 0xc00000, 0xc00001, dharma_soundstatus_r	},	// Inputs
  1067: 	{ 0xc00002, 0xc00003, input_port_1_word_r	},	//
  1068: 	{ 0xc00004, 0xc00005, input_port_2_word_r	},	//
  1069: 	{ 0xc00006, 0xc00007, input_port_3_word_r	},	//
  1070: MEMORY_END
  1071: 
  1072: static MEMORY_WRITE16_START( dharma_writemem )
  1073: 	{ 0x000000, 0x03ffff, MWA16_ROM						},	// ROM
  1074: 	{ 0x400000, 0x40ffff, MWA16_RAM						},	// RAM
  1075: 	{ 0x800000, 0x81ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
  1076: 	{ 0x820000, 0x83ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
  1077: 	{ 0x840000, 0x85ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
  1078: 	{ 0x870000, 0x873fff, metro_paletteram_w, &paletteram16	},	// Palette
  1079: 	{ 0x874000, 0x874fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1080: 	{ 0x878000, 0x8787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size	},	// Tiles Set
  1081: 	{ 0x878840, 0x87884d, metro_blitter_w, &metro_blitter_regs	},	// Tiles Blitter
  1082: 	{ 0x878860, 0x87886b, metro_window_w, &metro_window	},	// Tilemap Window
  1083: 	{ 0x878870, 0x87887b, MWA16_RAM, &metro_scroll		},	// Scroll Regs
  1084: 	{ 0x878880, 0x878881, MWA16_NOP						},	// ? increasing
  1085: 	{ 0x878890, 0x878891, MWA16_NOP						},	// ? increasing
  1086: 	{ 0x8788a2, 0x8788a3, metro_irq_cause_w				},	// IRQ Acknowledge
  1087: 	{ 0x8788a4, 0x8788a5, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1088: 	{ 0x8788a8, 0x8788a9, metro_soundlatch_w			},	// To Sound CPU
  1089: 	{ 0x8788aa, 0x8788ab, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1090: 	{ 0x8788ac, 0x8788ad, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1091: 	{ 0x879700, 0x879713, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1092: 	{ 0xc00000, 0xc00001, metro_soundstatus_w			},	// To Sound CPU
  1093: 	{ 0xc00002, 0xc00009, metro_coin_lockout_4words_w	},	// Coin Lockout
  1094: MEMORY_END
  1095: 
  1096: 
  1097: /***************************************************************************
  1098: 								Karate Tournament
  1099: ***************************************************************************/
  1100: 
  1101: /* This game uses almost only the blitter to write to the tilemaps.
  1102:    The CPU can only access a "window" of 512x256 pixels in the upper
  1103:    left corner of the big tilemap */
  1104: 
  1105: #define KARATOUR_OFFS( _x_ ) ((_x_) & (0x3f)) + (((_x_) & ~(0x3f)) * (0x100 / 0x40)) 
  1106: 
  1107: #define KARATOUR_VRAM( _n_ ) \ 
  1108: static READ16_HANDLER( karatour_vram_##_n_##_r ) \
  1109: { \
  1110: 	return metro_vram_##_n_[KARATOUR_OFFS(offset)]; \
  1111: } \
  1112: static WRITE16_HANDLER( karatour_vram_##_n_##_w ) \
  1113: { \
  1114: 	metro_vram_##_n_##_w(KARATOUR_OFFS(offset),data,mem_mask); \
  1115: }
  1116: 
  1117: KARATOUR_VRAM( 0 )
  1118: KARATOUR_VRAM( 1 )
  1119: KARATOUR_VRAM( 2 )
  1120: 
  1121: static MEMORY_READ16_START( karatour_readmem )
  1122: 	{ 0x000000, 0x07ffff, MRA16_ROM				},	// ROM
  1123: 	{ 0xffc000, 0xffffff, MRA16_RAM				},	// RAM
  1124: 	{ 0x400000, 0x400001, metro_soundstatus_r	},	// From Sound CPU
  1125: 	{ 0x400002, 0x400003, input_port_0_word_r	},	// Inputs
  1126: 	{ 0x400004, 0x400005, input_port_1_word_r	},	//
  1127: 	{ 0x400006, 0x400007, input_port_2_word_r	},	//
  1128: 	{ 0x40000a, 0x40000b, input_port_3_word_r	},	//
  1129: 	{ 0x40000c, 0x40000d, input_port_4_word_r	},	//
  1130: 	{ 0x860000, 0x86ffff, metro_bankedrom_r		},	// Banked ROM
  1131: 	{ 0x870000, 0x873fff, MRA16_RAM				},	// Palette
  1132: 	{ 0x874000, 0x874fff, MRA16_RAM				},	// Sprites
  1133: 	{ 0x875000, 0x875fff, karatour_vram_0_r		},	// Layer 0 (Part of)
  1134: 	{ 0x876000, 0x876fff, karatour_vram_1_r		},	// Layer 1 (Part of)
  1135: 	{ 0x877000, 0x877fff, karatour_vram_2_r		},	// Layer 2 (Part of)
  1136: 	{ 0x878000, 0x8787ff, MRA16_RAM				},	// Tiles Set
  1137: 	{ 0x8788a2, 0x8788a3, metro_irq_cause_r		},	// IRQ Cause
  1138: MEMORY_END
  1139: 
  1140: static MEMORY_WRITE16_START( karatour_writemem )
  1141: 	{ 0x000000, 0x07ffff, MWA16_ROM						},	// ROM
  1142: 	{ 0xffc000, 0xffffff, MWA16_RAM						},	// RAM
  1143: 	{ 0x400000, 0x400001, metro_soundstatus_w			},	// To Sound CPU
  1144: 	{ 0x400002, 0x400003, metro_coin_lockout_1word_w	},	// Coin Lockout
  1145: 	{ 0x870000, 0x873fff, metro_paletteram_w, &paletteram16	},	// Palette
  1146: 	{ 0x874000, 0x874fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1147: 	{ 0x875000, 0x875fff, karatour_vram_0_w				},	// Layer 0 (Part of)
  1148: 	{ 0x876000, 0x876fff, karatour_vram_1_w				},	// Layer 1 (Part of)
  1149: 	{ 0x877000, 0x877fff, karatour_vram_2_w				},	// Layer 2 (Part of)
  1150: 	{ 0x878000, 0x8787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size	},	// Tiles Set
  1151: 	{ 0x878800, 0x878813, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1152: 	{ 0x878840, 0x87884d, metro_blitter_w, &metro_blitter_regs	},	// Tiles Blitter
  1153: 	{ 0x878860, 0x87886b, metro_window_w, &metro_window	},	// Tilemap Window
  1154: 	{ 0x878870, 0x87887b, MWA16_RAM, &metro_scroll		},	// Scroll
  1155: 	{ 0x878880, 0x878881, MWA16_NOP						},	// ? increasing
  1156: 	{ 0x878890, 0x878891, MWA16_NOP						},	// ? increasing
  1157: 	{ 0x8788a2, 0x8788a3, metro_irq_cause_w				},	// IRQ Acknowledge
  1158: 	{ 0x8788a4, 0x8788a5, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1159: 	{ 0x8788a8, 0x8788a9, metro_soundlatch_w			},	// To Sound CPU
  1160: 	{ 0x8788aa, 0x8788ab, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1161: 	{ 0x8788ac, 0x8788ad, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1162: MEMORY_END
  1163: 
  1164: 
  1165: /***************************************************************************
  1166: 								Sankokushi
  1167: ***************************************************************************/
  1168: 
  1169: /* same limited tilemap access as karatour */
  1170: 
  1171: static MEMORY_READ16_START( kokushi_readmem )
  1172: 	{ 0x000000, 0x07ffff, MRA16_ROM				},	// ROM
  1173: 	{ 0x7fc000, 0x7fffff, MRA16_RAM				},	// RAM
  1174: 	{ 0x860000, 0x86ffff, metro_bankedrom_r		},	// Banked ROM
  1175: 	{ 0x870000, 0x873fff, MRA16_RAM				},	// Palette
  1176: 	{ 0x874000, 0x874fff, MRA16_RAM				},	// Sprites
  1177: 	{ 0x875000, 0x875fff, karatour_vram_0_r		},	// Layer 0 (Part of)
  1178: 	{ 0x876000, 0x876fff, karatour_vram_1_r		},	// Layer 1 (Part of)
  1179: 	{ 0x877000, 0x877fff, karatour_vram_2_r		},	// Layer 2 (Part of)
  1180: 	{ 0x878000, 0x8787ff, MRA16_RAM				},	// Tiles Set
  1181: 	{ 0x8788a2, 0x8788a3, metro_irq_cause_r		},	// IRQ Cause
  1182: 	{ 0xc00000, 0xc00001, dharma_soundstatus_r	},	// From Sound CPU
  1183: 	{ 0xc00002, 0xc00003, input_port_1_word_r	},	// Inputs
  1184: 	{ 0xc00004, 0xc00005, input_port_2_word_r	},	//
  1185: MEMORY_END
  1186: 
  1187: static MEMORY_WRITE16_START( kokushi_writemem )
  1188: 	{ 0x000000, 0x07ffff, MWA16_ROM						},	// ROM
  1189: 	{ 0x7fc000, 0x7fffff, MWA16_RAM						},	// RAM
  1190: 	{ 0x870000, 0x873fff, metro_paletteram_w, &paletteram16	},	// Palette
  1191: 	{ 0x874000, 0x874fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1192: 	{ 0x875000, 0x875fff, karatour_vram_0_w				},	// Layer 0 (Part of)
  1193: 	{ 0x876000, 0x876fff, karatour_vram_1_w				},	// Layer 1 (Part of)
  1194: 	{ 0x877000, 0x877fff, karatour_vram_2_w				},	// Layer 2 (Part of)
  1195: 	{ 0x878000, 0x8787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size	},	// Tiles Set
  1196: 	{ 0x878840, 0x87884d, metro_blitter_w, &metro_blitter_regs	},	// Tiles Blitter
  1197: 	{ 0x878860, 0x87886b, metro_window_w, &metro_window	},	// Tilemap Window
  1198: 	{ 0x878870, 0x87887b, MWA16_RAM, &metro_scroll		},	// Scroll Regs - WRONG
  1199: //	{ 0x878880, 0x878881, MWA16_NOP						},	// ? increasing
  1200: 	{ 0x878890, 0x878891, MWA16_NOP						},	// ? increasing
  1201: 	{ 0x8788a2, 0x8788a3, metro_irq_cause_w				},	// IRQ Acknowledge
  1202: 	{ 0x8788a4, 0x8788a5, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1203: 	{ 0x8788a8, 0x8788a9, metro_soundlatch_w			},	// To Sound CPU
  1204: 	{ 0x8788aa, 0x8788ab, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1205: 	{ 0x8788ac, 0x8788ad, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1206: 	{ 0x879700, 0x879713, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1207: 	{ 0xc00000, 0xc00001, metro_soundstatus_w			},	// To Sound CPU
  1208: 	{ 0xc00002, 0xc00009, metro_coin_lockout_4words_w	},	// Coin Lockout
  1209: MEMORY_END
  1210: 
  1211: 
  1212: 
  1213: /***************************************************************************
  1214: 								Last Fortress
  1215: ***************************************************************************/
  1216: 
  1217: static MEMORY_READ16_START( lastfort_readmem )
  1218: 	{ 0x000000, 0x03ffff, MRA16_ROM				},	// ROM
  1219: 	{ 0x400000, 0x40ffff, MRA16_RAM				},	// RAM
  1220: 	{ 0x800000, 0x81ffff, MRA16_RAM				},	// Layer 0
  1221: 	{ 0x820000, 0x83ffff, MRA16_RAM				},	// Layer 1
  1222: 	{ 0x840000, 0x85ffff, MRA16_RAM				},	// Layer 2
  1223: 	{ 0x860000, 0x86ffff, metro_bankedrom_r		},	// Banked ROM
  1224: 	{ 0x870000, 0x873fff, MRA16_RAM				},	// Palette
  1225: 	{ 0x874000, 0x874fff, MRA16_RAM				},	// Sprites
  1226: 	{ 0x878000, 0x8787ff, MRA16_RAM				},	// Tiles Set
  1227: 	{ 0x8788a2, 0x8788a3, metro_irq_cause_r		},	// IRQ Cause
  1228: 	{ 0xc00000, 0xc00001, metro_soundstatus_r	},	// From Sound CPU
  1229: 	{ 0xc00002, 0xc00003, MRA16_NOP				},	//
  1230: 	{ 0xc00004, 0xc00005, input_port_0_word_r	},	// Inputs
  1231: 	{ 0xc00006, 0xc00007, input_port_1_word_r	},	//
  1232: 	{ 0xc00008, 0xc00009, input_port_2_word_r	},	//
  1233: 	{ 0xc0000a, 0xc0000b, input_port_3_word_r	},	//
  1234: 	{ 0xc0000c, 0xc0000d, input_port_4_word_r	},	//
  1235: 	{ 0xc0000e, 0xc0000f, input_port_5_word_r	},	//
  1236: MEMORY_END
  1237: 
  1238: static MEMORY_WRITE16_START( lastfort_writemem )
  1239: 	{ 0x000000, 0x03ffff, MWA16_ROM						},	// ROM
  1240: 	{ 0x400000, 0x40ffff, MWA16_RAM						},	// RAM
  1241: 	{ 0x800000, 0x81ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
  1242: 	{ 0x820000, 0x83ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
  1243: 	{ 0x840000, 0x85ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
  1244: 	{ 0x870000, 0x873fff, metro_paletteram_w, &paletteram16	},	// Palette
  1245: 	{ 0x874000, 0x874fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1246: 	{ 0x878000, 0x8787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size	},	// Tiles Set
  1247: 	{ 0x878800, 0x878813, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1248: 	{ 0x878840, 0x87884d, metro_blitter_w, &metro_blitter_regs	},	// Tiles Blitter
  1249: 	{ 0x878860, 0x87886b, metro_window_w, &metro_window	},	// Tilemap Window
  1250: 	{ 0x878870, 0x87887b, MWA16_RAM, &metro_scroll		},	// Scroll
  1251: 	{ 0x878880, 0x878881, MWA16_NOP						},	// ? increasing
  1252: 	{ 0x878890, 0x878891, MWA16_NOP						},	// ? increasing
  1253: 	{ 0x8788a2, 0x8788a3, metro_irq_cause_w				},	// IRQ Acknowledge
  1254: 	{ 0x8788a4, 0x8788a5, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1255: 	{ 0x8788a8, 0x8788a9, metro_soundlatch_w			},	// To Sound CPU
  1256: 	{ 0x8788aa, 0x8788ab, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1257: 	{ 0x8788ac, 0x8788ad, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1258: 	{ 0xc00000, 0xc00001, metro_soundstatus_w			},	// To Sound CPU
  1259: 	{ 0xc00002, 0xc00003, metro_coin_lockout_1word_w	},	// Coin Lockout
  1260: MEMORY_END
  1261: 
  1262: 
  1263: /***************************************************************************
  1264: 								Mahjong Gakuensai
  1265: ***************************************************************************/
  1266: 
  1267: static int gakusai_oki_bank_lo, gakusai_oki_bank_hi;
  1268: 
  1269: void gakusai_oki_bank_set(void)
  1270: {
  1271: 	int bank = (gakusai_oki_bank_lo & 7) + (gakusai_oki_bank_hi & 1) * 8;
  1272: 	OKIM6295_set_bank_base(0, bank * 0x40000);
  1273: }
  1274: 
  1275: static WRITE16_HANDLER( gakusai_oki_bank_hi_w )
  1276: {
  1277: 	if (ACCESSING_LSB)
  1278: 	{
  1279: 		gakusai_oki_bank_hi = data & 0xff;
  1280: 		gakusai_oki_bank_set();
  1281: 	}
  1282: }
  1283: 
  1284: static WRITE16_HANDLER( gakusai_oki_bank_lo_w )
  1285: {
  1286: 	if (ACCESSING_LSB)
  1287: 	{
  1288: 		gakusai_oki_bank_lo = data & 0xff;
  1289: 		gakusai_oki_bank_set();
  1290: 	}
  1291: }
  1292: 
  1293: static data16_t *gakusai_input_sel;
  1294: 
  1295: static READ16_HANDLER( gakusai_input_r )
  1296: {
  1297: 	data16_t input_sel = (*gakusai_input_sel) ^ 0x3e;
  1298: 	// Bit 0 ??
  1299: 	if (input_sel & 0x0002)	return readinputport(0);
  1300: 	if (input_sel & 0x0004)	return readinputport(1);
  1301: 	if (input_sel & 0x0008)	return readinputport(2);
  1302: 	if (input_sel & 0x0010)	return readinputport(3);
  1303: 	if (input_sel & 0x0020)	return readinputport(4);
  1304: 	return 0xffff;
  1305: }
  1306: 
  1307: READ16_HANDLER( gakusai_eeprom_r )
  1308: {
  1309: 	return EEPROM_read_bit() & 1;
  1310: }
  1311: 
  1312: WRITE16_HANDLER( gakusai_eeprom_w )
  1313: {
  1314: 	if (ACCESSING_LSB)
  1315: 	{
  1316: 		// latch the bit
  1317: 		EEPROM_write_bit(data & 0x01);
  1318: 
  1319: 		// reset line asserted: reset.
  1320: 		EEPROM_set_cs_line((data & 0x04) ? CLEAR_LINE : ASSERT_LINE );
  1321: 
  1322: 		// clock line asserted: write latch or select next bit to read
  1323: 		EEPROM_set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
  1324: 	}
  1325: }
  1326: 
  1327: static MEMORY_READ16_START( gakusai_readmem )
  1328: 	{ 0x000000, 0x07ffff, MRA16_ROM					},	// ROM
  1329: 	{ 0xff0000, 0xffffff, MRA16_RAM					},	// RAM
  1330: 	{ 0x200000, 0x21ffff, MRA16_RAM					},	// Layer 0
  1331: 	{ 0x220000, 0x23ffff, MRA16_RAM					},	// Layer 1
  1332: 	{ 0x240000, 0x25ffff, MRA16_RAM					},	// Layer 2
  1333: 	{ 0x260000, 0x26ffff, metro_bankedrom_r			},	// Banked ROM
  1334: 	{ 0x270000, 0x273fff, MRA16_RAM					},	// Palette
  1335: 	{ 0x274000, 0x274fff, MRA16_RAM					},	// Sprites
  1336: 	{ 0x278000, 0x2787ff, MRA16_RAM					},	// Tiles Set
  1337: 	{ 0x278832, 0x278833, metro_irq_cause_r			},	// IRQ Cause
  1338: 	{ 0x278880, 0x278881, gakusai_input_r			},	// Inputs
  1339: 	{ 0x278882, 0x278883, input_port_5_word_r		},	//
  1340: 	{ 0x27880e, 0x27880f, MRA16_RAM					},	// Screen Control
  1341: 	{ 0x700000, 0x700001, OKIM6295_status_0_lsb_r	},	// Sound
  1342: 	{ 0xc00000, 0xc00001, gakusai_eeprom_r			},	// EEPROM
  1343: MEMORY_END
  1344: 
  1345: static MEMORY_WRITE16_START( gakusai_writemem )
  1346: 	{ 0x000000, 0x07ffff, MWA16_ROM						},	// ROM
  1347: 	{ 0xff0000, 0xffffff, MWA16_RAM						},	// RAM
  1348: 	{ 0x200000, 0x21ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
  1349: 	{ 0x220000, 0x23ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
  1350: 	{ 0x240000, 0x25ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
  1351: 	{ 0x270000, 0x273fff, metro_paletteram_w, &paletteram16	},	// Palette
  1352: 	{ 0x274000, 0x274fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1353: 	{ 0x278000, 0x2787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size	},	// Tiles Set
  1354: 	{ 0x27880e, 0x27880f, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1355: 	{ 0x278810, 0x27881f, MWA16_RAM, &metro_irq_levels	},	// IRQ Levels
  1356: 	{ 0x278820, 0x27882f, MWA16_RAM, &metro_irq_vectors	},	// IRQ Vectors
  1357: 	{ 0x278830, 0x278831, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1358: 	{ 0x278832, 0x278833, metro_irq_cause_w				},	// IRQ Acknowledge
  1359: 	{ 0x278836, 0x278837, watchdog_reset16_w			},	// Watchdog
  1360: 	{ 0x278840, 0x27884d, metro_blitter_w, &metro_blitter_regs	},	// Tiles Blitter
  1361: 	{ 0x278860, 0x27886b, metro_window_w, &metro_window	},	// Tilemap Window
  1362: 	{ 0x278850, 0x27885b, MWA16_RAM, &metro_scroll		},	// Scroll Regs
  1363: 	{ 0x278870, 0x278871, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1364: 	{ 0x278888, 0x278889, MWA16_RAM, &gakusai_input_sel	},	// Inputs
  1365: 	{ 0x279700, 0x279713, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1366: 	{ 0x400000, 0x400001, MWA16_NOP						},	// ? 5
  1367: 	{ 0x500000, 0x500001, gakusai_oki_bank_lo_w			},	// Sound
  1368: 	{ 0x600000, 0x600001, YM2413_register_port_0_lsb_w	},
  1369: 	{ 0x600002, 0x600003, YM2413_data_port_0_lsb_w		},
  1370: 	{ 0x700000, 0x700001, OKIM6295_data_0_lsb_w 		},
  1371: 	{ 0xc00000, 0xc00001, gakusai_eeprom_w				},	// EEPROM
  1372: 	{ 0xd00000, 0xd00001, gakusai_oki_bank_hi_w			},
  1373: MEMORY_END
  1374: 
  1375: 
  1376: /***************************************************************************
  1377: 								Mahjong Gakuensai 2
  1378: ***************************************************************************/
  1379: 
  1380: static MEMORY_READ16_START( gakusai2_readmem )
  1381: 	{ 0x000000, 0x07ffff, MRA16_ROM					},	// ROM
  1382: 	{ 0xff0000, 0xffffff, MRA16_RAM					},	// RAM
  1383: 	{ 0x600000, 0x61ffff, MRA16_RAM					},	// Layer 0
  1384: 	{ 0x620000, 0x63ffff, MRA16_RAM					},	// Layer 1
  1385: 	{ 0x640000, 0x65ffff, MRA16_RAM					},	// Layer 2
  1386: 	{ 0x660000, 0x66ffff, metro_bankedrom_r			},	// Banked ROM
  1387: 	{ 0x670000, 0x673fff, MRA16_RAM					},	// Palette
  1388: 	{ 0x674000, 0x674fff, MRA16_RAM					},	// Sprites
  1389: 	{ 0x675000, 0x675fff, MRA16_RAM					},	// Sprites?
  1390: 	{ 0x678000, 0x6787ff, MRA16_RAM					},	// Tiles Set
  1391: 	{ 0x678832, 0x678833, metro_irq_cause_r			},	// IRQ Cause
  1392: 	{ 0x678880, 0x678881, gakusai_input_r			},	// Inputs
  1393: 	{ 0x678882, 0x678883, input_port_5_word_r		},	//
  1394: 	{ 0x67880e, 0x67880f, MRA16_RAM					},	// Screen Control
  1395: 	{ 0xb00000, 0xb00001, OKIM6295_status_0_lsb_r	},	// Sound
  1396: 	{ 0xe00000, 0xe00001, gakusai_eeprom_r			},	// EEPROM
  1397: MEMORY_END
  1398: 
  1399: static MEMORY_WRITE16_START( gakusai2_writemem )
  1400: 	{ 0x000000, 0x07ffff, MWA16_ROM						},	// ROM
  1401: 	{ 0xff0000, 0xffffff, MWA16_RAM						},	// RAM
  1402: 	{ 0x600000, 0x61ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
  1403: 	{ 0x620000, 0x63ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
  1404: 	{ 0x640000, 0x65ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
  1405: 	{ 0x670000, 0x673fff, metro_paletteram_w, &paletteram16	},	// Palette
  1406: 	{ 0x674000, 0x674fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1407: 	{ 0x675000, 0x675fff, MWA16_RAM						},	// Sprites?
  1408: 	{ 0x678000, 0x6787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size	},	// Tiles Set
  1409: 	{ 0x67880e, 0x67880f, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1410: 	{ 0x678810, 0x67881f, MWA16_RAM, &metro_irq_levels	},	// IRQ Levels
  1411: 	{ 0x678820, 0x67882f, MWA16_RAM, &metro_irq_vectors	},	// IRQ Vectors
  1412: 	{ 0x678830, 0x678831, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1413: 	{ 0x678832, 0x678833, metro_irq_cause_w				},	// IRQ Acknowledge
  1414: 	{ 0x678836, 0x678837, watchdog_reset16_w			},	// Watchdog
  1415: 	{ 0x678840, 0x67884d, metro_blitter_w, &metro_blitter_regs	},	// Tiles Blitter
  1416: 	{ 0x678860, 0x67886b, metro_window_w, &metro_window	},	// Tilemap Window
  1417: 	{ 0x678850, 0x67885b, MWA16_RAM, &metro_scroll		},	// Scroll Regs
  1418: 	{ 0x678870, 0x678871, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1419: 	{ 0x678888, 0x678889, MWA16_RAM, &gakusai_input_sel	},	// Inputs
  1420: 	{ 0x679700, 0x679713, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1421: 	{ 0x800000, 0x800001, MWA16_NOP						},	// ? 5
  1422: 	{ 0x900000, 0x900001, gakusai_oki_bank_lo_w			},	// Sound
  1423: 	{ 0xa00000, 0xa00001, gakusai_oki_bank_hi_w			},
  1424: 	{ 0xb00000, 0xb00001, OKIM6295_data_0_lsb_w 		},
  1425: 	{ 0xc00000, 0xc00001, YM2413_register_port_0_lsb_w	},
  1426: 	{ 0xc00002, 0xc00003, YM2413_data_port_0_lsb_w		},
  1427: 	{ 0xe00000, 0xe00001, gakusai_eeprom_w				},	// EEPROM
  1428: MEMORY_END
  1429: 
  1430: 
  1431: /***************************************************************************
  1432: 						Mahjong Doukyuusei Special
  1433: ***************************************************************************/
  1434: 
  1435: READ16_HANDLER( dokyusp_eeprom_r )
  1436: {
  1437: 	// clock line asserted: write latch or select next bit to read
  1438: 	EEPROM_set_clock_line(CLEAR_LINE);
  1439: 	EEPROM_set_clock_line(ASSERT_LINE);
  1440: 
  1441: 	return EEPROM_read_bit() & 1;
  1442: }
  1443: 
  1444: WRITE16_HANDLER( dokyusp_eeprom_bit_w )
  1445: {
  1446: 	if (ACCESSING_LSB)
  1447: 	{
  1448: 		// latch the bit
  1449: 		EEPROM_write_bit(data & 0x01);
  1450: 
  1451: 		// clock line asserted: write latch or select next bit to read
  1452: 		EEPROM_set_clock_line(CLEAR_LINE);
  1453: 		EEPROM_set_clock_line(ASSERT_LINE);
  1454: 	}
  1455: }
  1456: 
  1457: WRITE16_HANDLER( dokyusp_eeprom_reset_w )
  1458: {
  1459: 	if (ACCESSING_LSB)
  1460: 	{
  1461: 		// reset line asserted: reset.
  1462: 		EEPROM_set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
  1463: 	}
  1464: }
  1465: 
  1466: static MEMORY_READ16_START( dokyusp_readmem )
  1467: 	{ 0x000000, 0x03ffff, MRA16_ROM					},	// ROM
  1468: 	{ 0xff0000, 0xffffff, MRA16_RAM					},	// RAM
  1469: 	{ 0x200000, 0x21ffff, MRA16_RAM					},	// Layer 0
  1470: 	{ 0x220000, 0x23ffff, MRA16_RAM					},	// Layer 1
  1471: 	{ 0x240000, 0x25ffff, MRA16_RAM					},	// Layer 2
  1472: 	{ 0x260000, 0x26ffff, metro_bankedrom_r			},	// Banked ROM
  1473: 	{ 0x270000, 0x273fff, MRA16_RAM					},	// Palette
  1474: 	{ 0x274000, 0x274fff, MRA16_RAM					},	// Sprites
  1475: 	{ 0x278000, 0x2787ff, MRA16_RAM					},	// Tiles Set
  1476: 	{ 0x278832, 0x278833, metro_irq_cause_r			},	// IRQ Cause
  1477: 	{ 0x278880, 0x278881, gakusai_input_r			},	// Inputs
  1478: 	{ 0x278882, 0x278883, input_port_5_word_r		},	//
  1479: 	{ 0x27880e, 0x27880f, MRA16_RAM					},	// Screen Control
  1480: 	{ 0x700000, 0x700001, OKIM6295_status_0_lsb_r	},	// Sound
  1481: 	{ 0xd00000, 0xd00001, dokyusp_eeprom_r			},	// EEPROM
  1482: MEMORY_END
  1483: 
  1484: static MEMORY_WRITE16_START( dokyusp_writemem )
  1485: 	{ 0x000000, 0x03ffff, MWA16_ROM						},	// ROM
  1486: 	{ 0xff0000, 0xffffff, MWA16_RAM						},	// RAM
  1487: 	{ 0x200000, 0x21ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
  1488: 	{ 0x220000, 0x23ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
  1489: 	{ 0x240000, 0x25ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
  1490: 	{ 0x270000, 0x273fff, metro_paletteram_w, &paletteram16	},	// Palette
  1491: 	{ 0x274000, 0x274fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1492: 	{ 0x278000, 0x2787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size	},	// Tiles Set
  1493: 	{ 0x27880e, 0x27880f, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1494: 	{ 0x278810, 0x27881f, MWA16_RAM, &metro_irq_levels	},	// IRQ Levels
  1495: 	{ 0x278820, 0x27882f, MWA16_RAM, &metro_irq_vectors	},	// IRQ Vectors
  1496: 	{ 0x278830, 0x278831, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1497: 	{ 0x278832, 0x278833, metro_irq_cause_w				},	// IRQ Acknowledge
  1498: 	{ 0x278836, 0x278837, watchdog_reset16_w			},	// Watchdog
  1499: 	{ 0x278840, 0x27884d, metro_blitter_w, &metro_blitter_regs	},	// Tiles Blitter
  1500: 	{ 0x278860, 0x27886b, metro_window_w, &metro_window	},	// Tilemap Window
  1501: 	{ 0x278850, 0x27885b, MWA16_RAM, &metro_scroll		},	// Scroll Regs
  1502: 	{ 0x278870, 0x278871, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1503: 	{ 0x278888, 0x278889, MWA16_RAM, &gakusai_input_sel	},	// Inputs
  1504: 	{ 0x279700, 0x279713, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1505: 	{ 0x400000, 0x400001, MWA16_NOP						},	// ? 5
  1506: 	{ 0x500000, 0x500001, gakusai_oki_bank_lo_w			},	// Sound
  1507: 	{ 0x600000, 0x600001, YM2413_register_port_0_lsb_w	},
  1508: 	{ 0x600002, 0x600003, YM2413_data_port_0_lsb_w		},
  1509: 	{ 0x700000, 0x700001, OKIM6295_data_0_lsb_w 		},
  1510: 	{ 0xc00000, 0xc00001, dokyusp_eeprom_reset_w		},	// EEPROM
  1511: 	{ 0xd00000, 0xd00001, dokyusp_eeprom_bit_w			},	// EEPROM
  1512: MEMORY_END
  1513: 
  1514: 
  1515: /***************************************************************************
  1516: 							Mahjong Doukyuusei
  1517: ***************************************************************************/
  1518: 
  1519: static MEMORY_READ16_START( dokyusei_readmem )
  1520: 	{ 0x000000, 0x03ffff, MRA16_ROM					},	// ROM
  1521: 	{ 0xff0000, 0xffffff, MRA16_RAM					},	// RAM
  1522: 	{ 0x400000, 0x41ffff, MRA16_RAM					},	// Layer 0
  1523: 	{ 0x420000, 0x43ffff, MRA16_RAM					},	// Layer 1
  1524: 	{ 0x440000, 0x45ffff, MRA16_RAM					},	// Layer 2
  1525: 	{ 0x460000, 0x46ffff, metro_bankedrom_r			},	// Banked ROM
  1526: 	{ 0x470000, 0x473fff, MRA16_RAM					},	// Palette
  1527: 	{ 0x474000, 0x474fff, MRA16_RAM					},	// Sprites
  1528: 	{ 0x478000, 0x4787ff, MRA16_RAM					},	// Tiles Set
  1529: //	{ 0x478832, 0x478833, metro_irq_cause_r			},	// IRQ Cause
  1530: 	{ 0x478880, 0x478881, gakusai_input_r			},	// Inputs
  1531: 	{ 0x478882, 0x478883, input_port_5_word_r		},	//
  1532: 	{ 0x478884, 0x478885, input_port_6_word_r		},	// 2 x DSW
  1533: 	{ 0x478886, 0x478887, input_port_7_word_r		},	//
  1534: 	{ 0xd00000, 0xd00001, OKIM6295_status_0_lsb_r	},	// Sound
  1535: MEMORY_END
  1536: 
  1537: static MEMORY_WRITE16_START( dokyusei_writemem )
  1538: 	{ 0x000000, 0x03ffff, MWA16_ROM						},	// ROM
  1539: 	{ 0xff0000, 0xffffff, MWA16_RAM						},	// RAM
  1540: 	{ 0x400000, 0x41ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
  1541: 	{ 0x420000, 0x43ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
  1542: 	{ 0x440000, 0x45ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
  1543: 	{ 0x460000, 0x46ffff, MWA16_NOP						},	// DSW Selection
  1544: 	{ 0x470000, 0x473fff, metro_paletteram_w, &paletteram16	},	// Palette
  1545: 	{ 0x474000, 0x474fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1546: 	{ 0x478000, 0x4787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size	},	// Tiles Set
  1547: 	{ 0x47880e, 0x47880f, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1548: 	{ 0x478810, 0x47881f, MWA16_RAM, &metro_irq_levels	},	// IRQ Levels
  1549: 	{ 0x478820, 0x47882f, MWA16_RAM, &metro_irq_vectors	},	// IRQ Vectors
  1550: 	{ 0x478830, 0x478831, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1551: 	{ 0x478832, 0x478833, metro_irq_cause_w				},	// IRQ Acknowledge
  1552: 	{ 0x478836, 0x478837, MWA16_NOP						},	// ? watchdog ?
  1553: 	{ 0x478840, 0x47884d, metro_blitter_w, &metro_blitter_regs	},	// Tiles Blitter
  1554: 	{ 0x478860, 0x47886b, metro_window_w, &metro_window	},	// Tilemap Window
  1555: 	{ 0x478850, 0x47885b, MWA16_RAM, &metro_scroll		},	// Scroll Regs
  1556: 	{ 0x478870, 0x478871, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1557: 	{ 0x479700, 0x479713, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1558: 	{ 0x478888, 0x478889, MWA16_RAM, &gakusai_input_sel	},	// Inputs
  1559: 	{ 0x800000, 0x800001, gakusai_oki_bank_hi_w			},	// Samples Bank?
  1560: 	{ 0x900000, 0x900001, MWA16_NOP						},	// ? 4
  1561: 	{ 0xa00000, 0xa00001, gakusai_oki_bank_lo_w			},	// Samples Bank
  1562: 	{ 0xc00000, 0xc00001, YM2413_register_port_0_lsb_w	},	// Sound
  1563: 	{ 0xc00002, 0xc00003, YM2413_data_port_0_lsb_w		},	//
  1564: 	{ 0xd00000, 0xd00001, OKIM6295_data_0_lsb_w			},	//
  1565: MEMORY_END
  1566: 
  1567: 
  1568: /***************************************************************************
  1569: 								Pang Poms
  1570: ***************************************************************************/
  1571: 
  1572: static MEMORY_READ16_START( pangpoms_readmem )
  1573: 	{ 0x000000, 0x03ffff, MRA16_ROM				},	// ROM
  1574: 	{ 0xc00000, 0xc0ffff, MRA16_RAM				},	// RAM
  1575: 	{ 0x400000, 0x41ffff, MRA16_RAM				},	// Layer 0
  1576: 	{ 0x420000, 0x43ffff, MRA16_RAM				},	// Layer 1
  1577: 	{ 0x440000, 0x45ffff, MRA16_RAM				},	// Layer 2
  1578: 	{ 0x460000, 0x46ffff, metro_bankedrom_r		},	// Banked ROM
  1579: 	{ 0x470000, 0x473fff, MRA16_RAM				},	// Palette
  1580: 	{ 0x474000, 0x474fff, MRA16_RAM				},	// Sprites
  1581: 	{ 0x478000, 0x4787ff, MRA16_RAM				},	// Tiles Set
  1582: 	{ 0x4788a2, 0x4788a3, metro_irq_cause_r		},	// IRQ Cause
  1583: 	{ 0x800000, 0x800001, metro_soundstatus_r	},	// From Sound CPU
  1584: 	{ 0x800002, 0x800003, MRA16_NOP				},	//
  1585: 	{ 0x800004, 0x800005, input_port_0_word_r	},	// Inputs
  1586: 	{ 0x800006, 0x800007, input_port_1_word_r	},	//
  1587: 	{ 0x800008, 0x800009, input_port_2_word_r	},	//
  1588: 	{ 0x80000a, 0x80000b, input_port_3_word_r	},	//
  1589: 	{ 0x80000c, 0x80000d, input_port_4_word_r	},	//
  1590: 	{ 0x80000e, 0x80000f, input_port_5_word_r	},	//
  1591: MEMORY_END
  1592: 
  1593: static MEMORY_WRITE16_START( pangpoms_writemem )
  1594: 	{ 0x000000, 0x03ffff, MWA16_ROM						},	// ROM
  1595: 	{ 0xc00000, 0xc0ffff, MWA16_RAM						},	// RAM
  1596: 	{ 0x400000, 0x41ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
  1597: 	{ 0x420000, 0x43ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
  1598: 	{ 0x440000, 0x45ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
  1599: 	{ 0x470000, 0x473fff, metro_paletteram_w, &paletteram16	},	// Palette
  1600: 	{ 0x474000, 0x474fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1601: 	{ 0x478000, 0x4787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size	},	// Tiles Set
  1602: 	{ 0x478800, 0x478813, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1603: 	{ 0x478840, 0x47884d, metro_blitter_w, &metro_blitter_regs	},	// Tiles Blitter
  1604: 	{ 0x478860, 0x47886b, metro_window_w, &metro_window	},	// Tilemap Window
  1605: 	{ 0x478870, 0x47887b, MWA16_RAM, &metro_scroll		},	// Scroll Regs
  1606: 	{ 0x478880, 0x478881, MWA16_NOP						},	// ? increasing
  1607: 	{ 0x478890, 0x478891, MWA16_NOP						},	// ? increasing
  1608: 	{ 0x4788a2, 0x4788a3, metro_irq_cause_w				},	// IRQ Acknowledge
  1609: 	{ 0x4788a4, 0x4788a5, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1610: 	{ 0x4788a8, 0x4788a9, metro_soundlatch_w			},	// To Sound CPU
  1611: 	{ 0x4788aa, 0x4788ab, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1612: 	{ 0x4788ac, 0x4788ad, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1613: 	{ 0x800000, 0x800001, metro_soundstatus_w			},	// To Sound CPU
  1614: 	{ 0x800002, 0x800003, metro_coin_lockout_1word_w	},	// Coin Lockout
  1615: MEMORY_END
  1616: 
  1617: 
  1618: /***************************************************************************
  1619: 								Poitto!
  1620: ***************************************************************************/
  1621: 
  1622: static MEMORY_READ16_START( poitto_readmem )
  1623: 	{ 0x000000, 0x03ffff, MRA16_ROM				},	// ROM
  1624: 	{ 0x400000, 0x40ffff, MRA16_RAM				},	// RAM
  1625: 	{ 0xc00000, 0xc1ffff, MRA16_RAM				},	// Layer 0
  1626: 	{ 0xc20000, 0xc3ffff, MRA16_RAM				},	// Layer 1
  1627: 	{ 0xc40000, 0xc5ffff, MRA16_RAM				},	// Layer 2
  1628: 	{ 0xc60000, 0xc6ffff, metro_bankedrom_r		},	// Banked ROM
  1629: 	{ 0xc70000, 0xc73fff, MRA16_RAM				},	// Palette
  1630: 	{ 0xc74000, 0xc74fff, MRA16_RAM				},	// Sprites
  1631: 	{ 0xc78000, 0xc787ff, MRA16_RAM				},	// Tiles Set
  1632: 	{ 0xc788a2, 0xc788a3, metro_irq_cause_r		},	// IRQ Cause
  1633: 	{ 0x800000, 0x800001, dharma_soundstatus_r	},	// Inputs
  1634: 	{ 0x800002, 0x800003, input_port_1_word_r	},	//
  1635: 	{ 0x800004, 0x800005, input_port_2_word_r	},	//
  1636: 	{ 0x800006, 0x800007, input_port_3_word_r	},	//
  1637: MEMORY_END
  1638: 
  1639: static MEMORY_WRITE16_START( poitto_writemem )
  1640: 	{ 0x000000, 0x03ffff, MWA16_ROM						},	// ROM
  1641: 	{ 0x400000, 0x40ffff, MWA16_RAM						},	// RAM
  1642: 	{ 0xc00000, 0xc1ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
  1643: 	{ 0xc20000, 0xc3ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
  1644: 	{ 0xc40000, 0xc5ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
  1645: 	{ 0xc70000, 0xc73fff, metro_paletteram_w, &paletteram16	},	// Palette
  1646: 	{ 0xc74000, 0xc74fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1647: 	{ 0xc78000, 0xc787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size	},	// Tiles Set
  1648: 	{ 0xc78800, 0xc78813, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1649: 	{ 0xc78840, 0xc7884d, metro_blitter_w, &metro_blitter_regs	},	// Tiles Blitter
  1650: 	{ 0xc78860, 0xc7886b, metro_window_w, &metro_window	},	// Tilemap Window
  1651: 	{ 0xc78870, 0xc7887b, MWA16_RAM, &metro_scroll		},	// Scroll Regs
  1652: 	{ 0xc78880, 0xc78881, MWA16_NOP						},	// ? increasing
  1653: 	{ 0xc78890, 0xc78891, MWA16_NOP						},	// ? increasing
  1654: 	{ 0xc788a2, 0xc788a3, metro_irq_cause_w				},	// IRQ Acknowledge
  1655: 	{ 0xc788a4, 0xc788a5, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1656: 	{ 0xc788a8, 0xc788a9, metro_soundlatch_w			},	// To Sound CPU
  1657: 	{ 0xc788aa, 0xc788ab, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1658: 	{ 0xc788ac, 0xc788ad, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1659: 	{ 0x800000, 0x800001, metro_soundstatus_w			},	// To Sound CPU
  1660: 	{ 0x800002, 0x800009, metro_coin_lockout_4words_w	},	// Coin Lockout
  1661: MEMORY_END
  1662: 
  1663: 
  1664: /***************************************************************************
  1665: 								Sky Alert
  1666: ***************************************************************************/
  1667: 
  1668: static MEMORY_READ16_START( skyalert_readmem )
  1669: 	{ 0x000000, 0x03ffff, MRA16_ROM				},	// ROM
  1670: 	{ 0xc00000, 0xc0ffff, MRA16_RAM				},	// RAM
  1671: 	{ 0x800000, 0x81ffff, MRA16_RAM				},	// Layer 0
  1672: 	{ 0x820000, 0x83ffff, MRA16_RAM				},	// Layer 1
  1673: 	{ 0x840000, 0x85ffff, MRA16_RAM				},	// Layer 2
  1674: 	{ 0x860000, 0x86ffff, metro_bankedrom_r		},	// Banked ROM
  1675: 	{ 0x870000, 0x873fff, MRA16_RAM				},	// Palette
  1676: 	{ 0x874000, 0x874fff, MRA16_RAM				},	// Sprites
  1677: 	{ 0x878000, 0x8787ff, MRA16_RAM				},	// Tiles Set
  1678: 	{ 0x8788a2, 0x8788a3, metro_irq_cause_r		},	// IRQ Cause
  1679: 	{ 0x400000, 0x400001, metro_soundstatus_r	},	// From Sound CPU
  1680: 	{ 0x400002, 0x400003, MRA16_NOP				},	//
  1681: 	{ 0x400004, 0x400005, input_port_0_word_r	},	// Inputs
  1682: 	{ 0x400006, 0x400007, input_port_1_word_r	},	//
  1683: 	{ 0x400008, 0x400009, input_port_2_word_r	},	//
  1684: 	{ 0x40000a, 0x40000b, input_port_3_word_r	},	//
  1685: 	{ 0x40000c, 0x40000d, input_port_4_word_r	},	//
  1686: 	{ 0x40000e, 0x40000f, input_port_5_word_r	},	//
  1687: MEMORY_END
  1688: 
  1689: static MEMORY_WRITE16_START( skyalert_writemem )
  1690: 	{ 0x000000, 0x03ffff, MWA16_ROM						},	// ROM
  1691: 	{ 0xc00000, 0xc0ffff, MWA16_RAM						},	// RAM
  1692: 	{ 0x800000, 0x81ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
  1693: 	{ 0x820000, 0x83ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
  1694: 	{ 0x840000, 0x85ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
  1695: 	{ 0x870000, 0x873fff, metro_paletteram_w, &paletteram16	},	// Palette
  1696: 	{ 0x874000, 0x874fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1697: 	{ 0x878000, 0x8787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size	},	// Tiles Set
  1698: 	{ 0x878800, 0x878813, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1699: 	{ 0x878840, 0x87884d, metro_blitter_w, &metro_blitter_regs	},	// Tiles Blitter
  1700: 	{ 0x878860, 0x87886b, metro_window_w, &metro_window	},	// Tilemap Window
  1701: 	{ 0x878870, 0x87887b, MWA16_RAM, &metro_scroll		},	// Scroll
  1702: 	{ 0x878880, 0x878881, MWA16_NOP						},	// ? increasing
  1703: 	{ 0x878890, 0x878891, MWA16_NOP						},	// ? increasing
  1704: 	{ 0x8788a2, 0x8788a3, metro_irq_cause_w				},	// IRQ Acknowledge
  1705: 	{ 0x8788a4, 0x8788a5, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1706: 	{ 0x8788a8, 0x8788a9, metro_soundlatch_w			},	// To Sound CPU
  1707: 	{ 0x8788aa, 0x8788ab, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1708: 	{ 0x8788ac, 0x8788ad, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1709: 	{ 0x400000, 0x400001, metro_soundstatus_w			},	// To Sound CPU
  1710: 	{ 0x400002, 0x400003, metro_coin_lockout_1word_w	},	// Coin Lockout
  1711: MEMORY_END
  1712: 
  1713: 
  1714: /***************************************************************************
  1715: 								Pururun
  1716: ***************************************************************************/
  1717: 
  1718: static MEMORY_READ16_START( pururun_readmem )
  1719: 	{ 0x000000, 0x03ffff, MRA16_ROM				},	// ROM
  1720: 	{ 0x800000, 0x80ffff, MRA16_RAM				},	// RAM
  1721: 	{ 0xc00000, 0xc1ffff, MRA16_RAM				},	// Layer 0
  1722: 	{ 0xc20000, 0xc3ffff, MRA16_RAM				},	// Layer 1
  1723: 	{ 0xc40000, 0xc5ffff, MRA16_RAM				},	// Layer 2
  1724: 	{ 0xc60000, 0xc6ffff, metro_bankedrom_r		},	// Banked ROM
  1725: 	{ 0xc70000, 0xc73fff, MRA16_RAM				},	// Palette
  1726: 	{ 0xc74000, 0xc74fff, MRA16_RAM				},	// Sprites
  1727: 	{ 0xc78000, 0xc787ff, MRA16_RAM				},	// Tiles Set
  1728: 	{ 0xc788a2, 0xc788a3, metro_irq_cause_r		},	// IRQ Cause
  1729: 	{ 0x400000, 0x400001, dharma_soundstatus_r	},	// Inputs
  1730: 	{ 0x400002, 0x400003, input_port_1_word_r	},	//
  1731: 	{ 0x400004, 0x400005, input_port_2_word_r	},	//
  1732: 	{ 0x400006, 0x400007, input_port_3_word_r	},	//
  1733: MEMORY_END
  1734: 
  1735: static MEMORY_WRITE16_START( pururun_writemem )
  1736: 	{ 0x000000, 0x03ffff, MWA16_ROM						},	// ROM
  1737: 	{ 0x800000, 0x80ffff, MWA16_RAM						},	// RAM
  1738: 	{ 0xc00000, 0xc1ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
  1739: 	{ 0xc20000, 0xc3ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
  1740: 	{ 0xc40000, 0xc5ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
  1741: 	{ 0xc70000, 0xc73fff, metro_paletteram_w, &paletteram16	},	// Palette
  1742: 	{ 0xc74000, 0xc74fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1743: 	{ 0xc78000, 0xc787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size	},	// Tiles Set
  1744: 	{ 0xc78840, 0xc7884d, metro_blitter_w, &metro_blitter_regs	},	// Tiles Blitter
  1745: 	{ 0xc78860, 0xc7886b, metro_window_w, &metro_window	},	// Tilemap Window
  1746: 	{ 0xc78870, 0xc7887b, MWA16_RAM, &metro_scroll		},	// Scroll Regs
  1747: 	{ 0xc78880, 0xc78881, MWA16_NOP						},	// ? increasing
  1748: 	{ 0xc78890, 0xc78891, MWA16_NOP						},	// ? increasing
  1749: 	{ 0xc788a2, 0xc788a3, metro_irq_cause_w				},	// IRQ Acknowledge
  1750: 	{ 0xc788a4, 0xc788a5, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1751: 	{ 0xc788a8, 0xc788a9, metro_soundlatch_w			},	// To Sound CPU
  1752: 	{ 0xc788aa, 0xc788ab, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1753: 	{ 0xc788ac, 0xc788ad, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1754: 	{ 0xc79700, 0xc79713, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1755: 	{ 0x400000, 0x400001, metro_soundstatus_w			},	// To Sound CPU
  1756: 	{ 0x400002, 0x400009, metro_coin_lockout_4words_w	},	// Coin Lockout
  1757: MEMORY_END
  1758: 
  1759: 
  1760: /***************************************************************************
  1761: 							Toride II Adauchi Gaiden
  1762: ***************************************************************************/
  1763: 
  1764: static MEMORY_READ16_START( toride2g_readmem )
  1765: 	{ 0x000000, 0x07ffff, MRA16_ROM				},	// ROM
  1766: 	{ 0x400000, 0x4cffff, MRA16_RAM				},	// RAM (4xc000-4xffff mirrored?)
  1767: 	{ 0xc00000, 0xc1ffff, MRA16_RAM				},	// Layer 0
  1768: 	{ 0xc20000, 0xc3ffff, MRA16_RAM				},	// Layer 1
  1769: 	{ 0xc40000, 0xc5ffff, MRA16_RAM				},	// Layer 2
  1770: 	{ 0xc60000, 0xc6ffff, metro_bankedrom_r		},	// Banked ROM
  1771: 	{ 0xc70000, 0xc73fff, MRA16_RAM				},	// Palette
  1772: 	{ 0xc74000, 0xc74fff, MRA16_RAM				},	// Sprites
  1773: 	{ 0xc78000, 0xc787ff, MRA16_RAM				},	// Tiles Set
  1774: 	{ 0xc788a2, 0xc788a3, metro_irq_cause_r		},	// IRQ Cause
  1775: 	{ 0x800000, 0x800001, dharma_soundstatus_r	},	// Inputs
  1776: 	{ 0x800002, 0x800003, input_port_1_word_r	},	//
  1777: 	{ 0x800004, 0x800005, input_port_2_word_r	},	//
  1778: 	{ 0x800006, 0x800007, input_port_3_word_r	},	//
  1779: MEMORY_END
  1780: 
  1781: static MEMORY_WRITE16_START( toride2g_writemem )
  1782: 	{ 0x000000, 0x07ffff, MWA16_ROM						},	// ROM
  1783: 	{ 0x400000, 0x4cffff, MWA16_RAM						},	// RAM (4xc000-4xffff mirrored?)
  1784: 	{ 0xc00000, 0xc1ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
  1785: 	{ 0xc20000, 0xc3ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
  1786: 	{ 0xc40000, 0xc5ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
  1787: 	{ 0xc70000, 0xc73fff, metro_paletteram_w, &paletteram16	},	// Palette
  1788: 	{ 0xc74000, 0xc74fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1789: 	{ 0xc78000, 0xc787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size	},	// Tiles Set
  1790: 	{ 0xc78840, 0xc7884d, metro_blitter_w, &metro_blitter_regs	},	// Tiles Blitter
  1791: 	{ 0xc78860, 0xc7886b, metro_window_w, &metro_window	},	// Tilemap Window
  1792: 	{ 0xc78870, 0xc7887b, MWA16_RAM, &metro_scroll		},	// Scroll Regs
  1793: 	{ 0xc78880, 0xc78881, MWA16_NOP						},	// ? increasing
  1794: 	{ 0xc78890, 0xc78891, MWA16_NOP						},	// ? increasing
  1795: 	{ 0xc788a2, 0xc788a3, metro_irq_cause_w				},	// IRQ Acknowledge
  1796: 	{ 0xc788a4, 0xc788a5, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1797: 	{ 0xc788a8, 0xc788a9, metro_soundlatch_w			},	// To Sound CPU
  1798: 	{ 0xc788aa, 0xc788ab, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1799: 	{ 0xc788ac, 0xc788ad, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1800: 	{ 0xc79700, 0xc79713, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1801: 	{ 0x800000, 0x800001, metro_soundstatus_w			},	// To Sound CPU
  1802: 	{ 0x800002, 0x800009, metro_coin_lockout_4words_w	},	// Coin Lockout
  1803: MEMORY_END
  1804: 
  1805: 
  1806: /***************************************************************************
  1807: 							Blazing Tornado
  1808: ***************************************************************************/
  1809: 
  1810: static WRITE16_HANDLER( blzntrnd_sound_w )
  1811: {
  1812: 	soundlatch_w(offset, data>>8);
  1813: 	cpu_set_irq_line(1, IRQ_LINE_NMI, PULSE_LINE);
  1814: }
  1815: 
  1816: static WRITE_HANDLER( blzntrnd_sh_bankswitch_w )
  1817: {
  1818: 	unsigned char *RAM = memory_region(REGION_CPU2);
  1819: 	int bankaddress;
  1820: 
  1821: 	bankaddress = 0x10000 + (data & 0x03) * 0x4000;
  1822: 	cpu_setbank(1, &RAM[bankaddress]);
  1823: }
  1824: 
  1825: static void blzntrnd_irqhandler(int irq)
  1826: {
  1827: 	cpu_set_irq_line(1, 0, irq ? ASSERT_LINE : CLEAR_LINE);
  1828: }
  1829: 
  1830: static struct YM2610interface blzntrnd_ym2610_interface =
  1831: {
  1832: 	1,
  1833: 	8000000,	/* 8 MHz??? */
  1834: 	{ 25 },
  1835: 	{ 0 },
  1836: 	{ 0 },
  1837: 	{ 0 },
  1838: 	{ 0 },
  1839: 	{ blzntrnd_irqhandler },
  1840: 	{ REGION_SOUND1 },
  1841: 	{ REGION_SOUND2 },
  1842: 	{ YM3012_VOL(100,MIXER_PAN_LEFT,100,MIXER_PAN_RIGHT) }
  1843: };
  1844: 
  1845: static MEMORY_READ_START( blzntrnd_sound_readmem )
  1846: 	{ 0x0000, 0x7fff, MRA_ROM },
  1847: 	{ 0x8000, 0xbfff, MRA_BANK1 },
  1848: 	{ 0xe000, 0xffff, MRA_RAM },
  1849: MEMORY_END
  1850: 
  1851: static MEMORY_WRITE_START( blzntrnd_sound_writemem )
  1852: 	{ 0x0000, 0x7fff, MWA_ROM },
  1853: 	{ 0x8000, 0xbfff, MWA_ROM },
  1854: 	{ 0xe000, 0xffff, MWA_RAM },
  1855: MEMORY_END
  1856: 
  1857: static PORT_READ_START( blzntrnd_sound_readport )
  1858: 	{ 0x40, 0x40, soundlatch_r },
  1859: 	{ 0x80, 0x80, YM2610_status_port_0_A_r },
  1860: 	{ 0x82, 0x82, YM2610_status_port_0_B_r },
  1861: PORT_END
  1862: 
  1863: static PORT_WRITE_START( blzntrnd_sound_writeport )
  1864: 	{ 0x00, 0x00, blzntrnd_sh_bankswitch_w },
  1865: 	{ 0x40, 0x40, IOWP_NOP },
  1866: 	{ 0x80, 0x80, YM2610_control_port_0_A_w },
  1867: 	{ 0x81, 0x81, YM2610_data_port_0_A_w },
  1868: 	{ 0x82, 0x82, YM2610_control_port_0_B_w },
  1869: 	{ 0x83, 0x83, YM2610_data_port_0_B_w },
  1870: PORT_END
  1871: 
  1872: static MEMORY_READ16_START( blzntrnd_readmem )
  1873: 	{ 0x000000, 0x1fffff, MRA16_ROM				},	// ROM
  1874: 	{ 0xff0000, 0xffffff, MRA16_RAM				},	// RAM
  1875: //	{ 0x300000, 0x300001, MRA16_NOP				},	// Sound
  1876: 	{ 0x200000, 0x21ffff, MRA16_RAM				},	// Layer 0
  1877: 	{ 0x220000, 0x23ffff, MRA16_RAM				},	// Layer 1
  1878: 	{ 0x240000, 0x25ffff, MRA16_RAM				},	// Layer 2
  1879: 	{ 0x260000, 0x26ffff, metro_bankedrom_r		},	// Banked ROM
  1880: 	{ 0x270000, 0x273fff, MRA16_RAM				},	// Palette
  1881: 	{ 0x274000, 0x274fff, MRA16_RAM				},	// Sprites
  1882: 	{ 0x278000, 0x2787ff, MRA16_RAM				},	// Tiles Set
  1883: 	{ 0x2788a2, 0x2788a3, metro_irq_cause_r		},	// IRQ Cause
  1884: 	{ 0xe00000, 0xe00001, input_port_0_word_r	},	// Inputs
  1885: 	{ 0xe00002, 0xe00003, input_port_1_word_r	},	//
  1886: 	{ 0xe00004, 0xe00005, input_port_2_word_r	},	//
  1887: 	{ 0xe00006, 0xe00007, input_port_3_word_r	},	//
  1888: 	{ 0xe00008, 0xe00009, input_port_4_word_r	},	//
  1889: 	{ 0x400000, 0x43ffff, MRA16_RAM				},	// 053936
  1890: MEMORY_END
  1891: 
  1892: static MEMORY_WRITE16_START( blzntrnd_writemem )
  1893: 	{ 0x000000, 0x1fffff, MWA16_ROM						},	// ROM
  1894: 	{ 0x200000, 0x21ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
  1895: 	{ 0x220000, 0x23ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
  1896: 	{ 0x240000, 0x25ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
  1897: 	{ 0x260000, 0x26ffff, MWA16_NOP				},	// ??????
  1898: 	{ 0x270000, 0x273fff, metro_paletteram_w, &paletteram16	},	// Palette
  1899: 	{ 0x274000, 0x274fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1900: 	{ 0x278000, 0x2787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size		},	// Tiles Set
  1901: 	{ 0x278860, 0x27886b, metro_window_w, &metro_window				},	// Tilemap Window
  1902: 	{ 0x278870, 0x27887b, MWA16_RAM, &metro_scroll		},	// Scroll
  1903: 	{ 0x278890, 0x278891, MWA16_NOP						},	// ? increasing
  1904: 	{ 0x2788a2, 0x2788a3, metro_irq_cause_w				},	// IRQ Acknowledge
  1905: 	{ 0x2788a4, 0x2788a5, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1906: 	{ 0x2788aa, 0x2788ab, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1907: 	{ 0x2788ac, 0x2788ad, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1908: 	{ 0x279700, 0x279713, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1909: 	{ 0x400000, 0x43ffff, metro_K053936_w, &metro_K053936_ram	},	// 053936
  1910: 	{ 0x500000, 0x500fff, MWA16_RAM, &K053936_0_linectrl },	// 053936 line control
  1911: 	{ 0x600000, 0x60001f, MWA16_RAM, &K053936_0_ctrl	},	// 053936 control
  1912: 	{ 0xe00000, 0xe00001, MWA16_NOP },
  1913: 	{ 0xe00002, 0xe00003, blzntrnd_sound_w },
  1914: 	{ 0xff0000, 0xffffff, MWA16_RAM						},	// RAM
  1915: MEMORY_END
  1916: 
  1917: 
  1918: /***************************************************************************
  1919: 									Mouja
  1920: ***************************************************************************/
  1921: 
  1922: static MEMORY_READ16_START( mouja_readmem )
  1923: 	{ 0x000000, 0x07ffff, MRA16_ROM				},	// ROM
  1924: 	{ 0xf00000, 0xf0ffff, MRA16_RAM				},	// RAM
  1925: 	{ 0x400000, 0x41ffff, MRA16_RAM				},	// Layer 0
  1926: 	{ 0x420000, 0x43ffff, MRA16_RAM				},	// Layer 1
  1927: 	{ 0x440000, 0x45ffff, MRA16_RAM				},	// Layer 2
  1928: 	{ 0x470000, 0x473fff, MRA16_RAM				},	// Palette
  1929: 	{ 0x474000, 0x474fff, MRA16_RAM				},	// Sprites
  1930: 	{ 0x478000, 0x4787ff, MRA16_RAM				},	// Tiles Set
  1931: 	{ 0x478832, 0x478833, metro_irq_cause_r		},	// IRQ Cause
  1932: 	{ 0x478880, 0x478881, input_port_0_word_r	},	// Inputs
  1933: 	{ 0x478882, 0x478883, input_port_1_word_r	},	//
  1934: 	{ 0x478884, 0x478885, input_port_2_word_r	},	//
  1935: 	{ 0x478886, 0x478887, input_port_3_word_r	},	//
  1936: 	{ 0xd00000, 0xd00001, OKIM6295_status_0_lsb_r },
  1937: #if 0 
  1938: 	{ 0x460000, 0x46ffff, metro_bankedrom_r		},	// Banked ROM
  1939: #endif 
  1940: MEMORY_END
  1941: 
  1942: static MEMORY_WRITE16_START( mouja_writemem )
  1943: 	{ 0x000000, 0x07ffff, MWA16_ROM						},	// ROM
  1944: 	{ 0xf00000, 0xf0ffff, MWA16_RAM						},	// RAM
  1945: 	{ 0x400000, 0x41ffff, metro_vram_0_w, &metro_vram_0	},	// Layer 0
  1946: 	{ 0x420000, 0x43ffff, metro_vram_1_w, &metro_vram_1	},	// Layer 1
  1947: 	{ 0x440000, 0x45ffff, metro_vram_2_w, &metro_vram_2	},	// Layer 2
  1948: 	{ 0x470000, 0x473fff, metro_paletteram_w, &paletteram16	},	// Palette
  1949: 	{ 0x474000, 0x474fff, MWA16_RAM, &spriteram16, &spriteram_size				},	// Sprites
  1950: 	{ 0x478000, 0x4787ff, MWA16_RAM, &metro_tiletable, &metro_tiletable_size	},	// Tiles Set
  1951: 	{ 0x47880e, 0x47880f, MWA16_RAM, &metro_screenctrl	},	// Screen Control
  1952: 	{ 0x478810, 0x47881f, MWA16_RAM, &metro_irq_levels	},	// IRQ Levels
  1953: 	{ 0x478820, 0x47882f, MWA16_RAM, &metro_irq_vectors	},	// IRQ Vectors
  1954: 	{ 0x478830, 0x478831, MWA16_RAM, &metro_irq_enable	},	// IRQ Enable
  1955: 	{ 0x478832, 0x478833, metro_irq_cause_w				},	// IRQ Acknowledge
  1956: 	{ 0x478836, 0x478837, watchdog_reset16_w			},	// Watchdog
  1957: 	{ 0x478860, 0x47886b, metro_window_w, &metro_window	},	// Tilemap Window
  1958: 	{ 0x478850, 0x47885b, MWA16_RAM, &metro_scroll		},	// Scroll Regs
  1959: 	{ 0x479700, 0x479713, MWA16_RAM, &metro_videoregs	},	// Video Registers
  1960: 	{ 0xc00000, 0xc00001, YM2413_register_port_0_lsb_w	},
  1961: 	{ 0xc00002, 0xc00003, YM2413_data_port_0_lsb_w		},
  1962: 	{ 0xd00000, 0xd00001, OKIM6295_data_0_msb_w },
  1963: 
  1964: #if 0 
  1965: 	{ 0x478840, 0x47884d, metro_blitter_w, &metro_blitter_regs	},	// Tiles Blitter
  1966: 	{ 0x47883a, 0x47883b, MWA16_RAM, &metro_rombank		},	// Rom Bank
  1967: 	{ 0x800002, 0x800009, metro_coin_lockout_4words_w	},	// Coin Lockout
  1968: #endif 
  1969: MEMORY_END
  1970: 
  1971: 
  1972: /***************************************************************************
  1973: 
  1974: 
  1975: 								Input Ports
  1976: 
  1977: 
  1978: ***************************************************************************/
  1979: 
  1980: 
  1981: #define JOY_LSB(_n_, _b1_, _b2_, _b3_, _b4_) \ 
  1982: 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER##_n_ ) \
  1983: 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER##_n_ ) \
  1984: 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER##_n_ ) \
  1985: 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER##_n_ ) \
  1986: 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_##_b1_         | IPF_PLAYER##_n_ ) \
  1987: 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_##_b2_         | IPF_PLAYER##_n_ ) \
  1988: 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_##_b3_         | IPF_PLAYER##_n_ ) \
  1989: 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_##_b4_         | IPF_PLAYER##_n_ ) \
  1990: 
  1991: 
  1992: #define JOY_MSB(_n_, _b1_, _b2_, _b3_, _b4_) \ 
  1993: 	PORT_BIT(  0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER##_n_ ) \
  1994: 	PORT_BIT(  0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER##_n_ ) \
  1995: 	PORT_BIT(  0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER##_n_ ) \
  1996: 	PORT_BIT(  0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER##_n_ ) \
  1997: 	PORT_BIT(  0x1000, IP_ACTIVE_LOW, IPT_##_b1_         | IPF_PLAYER##_n_ ) \
  1998: 	PORT_BIT(  0x2000, IP_ACTIVE_LOW, IPT_##_b2_         | IPF_PLAYER##_n_ ) \
  1999: 	PORT_BIT(  0x4000, IP_ACTIVE_LOW, IPT_##_b3_         | IPF_PLAYER##_n_ ) \
  2000: 	PORT_BIT(  0x8000, IP_ACTIVE_LOW, IPT_##_b4_         | IPF_PLAYER##_n_ ) \
  2001: 
  2002: 
  2003: #define COINS \ 
  2004: 	PORT_BIT(  0x0001, IP_ACTIVE_LOW,  IPT_SERVICE1 ) \
  2005: 	PORT_BIT(  0x0002, IP_ACTIVE_LOW,  IPT_TILT     ) \
  2006: 	PORT_BIT_IMPULSE(  0x0004, IP_ACTIVE_LOW,  IPT_COIN1, 2    ) \
  2007: 	PORT_BIT_IMPULSE(  0x0008, IP_ACTIVE_LOW,  IPT_COIN2, 2    ) \
  2008: 	PORT_BIT(  0x0010, IP_ACTIVE_LOW,  IPT_START1   ) \
  2009: 	PORT_BIT(  0x0020, IP_ACTIVE_LOW,  IPT_START2   ) \
  2010: 	PORT_BIT(  0x0040, IP_ACTIVE_HIGH, IPT_UNKNOWN  ) \
  2011: 	PORT_BIT(  0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL  ) /* From Sound CPU in some games */
  2012: 
  2013: 
  2014: #define COINAGE_DSW \ 
  2015: 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) \
  2016: 	PORT_DIPSETTING(      0x0001, DEF_STR( 4C_1C ) ) \
  2017: 	PORT_DIPSETTING(      0x0002, DEF_STR( 3C_1C ) ) \
  2018: 	PORT_DIPSETTING(      0x0003, DEF_STR( 2C_1C ) ) \
  2019: 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) ) \
  2020: 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) ) \
  2021: 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) ) \
  2022: 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) ) \
  2023: 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) ) \
  2024: 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) \
  2025: 	PORT_DIPSETTING(      0x0008, DEF_STR( 4C_1C ) ) \
  2026: 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_1C ) ) \
  2027: 	PORT_DIPSETTING(      0x0018, DEF_STR( 2C_1C ) ) \
  2028: 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) ) \
  2029: 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) ) \
  2030: 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) ) \
  2031: 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) ) \
  2032: 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) ) \
  2033: 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) ) \
  2034: 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) ) \
  2035: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) ) \
  2036: 	PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
  2037: 
  2038: 
  2039: 
  2040: /***************************************************************************
  2041: 									Bal Cube
  2042: ***************************************************************************/
  2043: 
  2044: INPUT_PORTS_START( balcube )
  2045: 	PORT_START	// IN0 - $500000
  2046: 	COINS
  2047: 
  2048: 	PORT_START	// IN1 - $500002
  2049: 	JOY_LSB(1, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)
  2050: 	JOY_MSB(2, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)
  2051: 
  2052: 	PORT_START	// IN2 - Strangely mapped in the 0x400000-0x41ffff range
  2053: 	COINAGE_DSW
  2054: 
  2055: 	PORT_DIPNAME( 0x0300, 0x0300, "Difficulty?" )
  2056: 	PORT_DIPSETTING(      0x0100, "0" )
  2057: 	PORT_DIPSETTING(      0x0000, "1" )
  2058: 	PORT_DIPSETTING(      0x0200, "2" )
  2059: 	PORT_DIPSETTING(      0x0300, "3" )
  2060: 	PORT_DIPNAME( 0x0400, 0x0400, "2 Players Game" )
  2061: 	PORT_DIPSETTING(      0x0000, "1 Credit" )
  2062: 	PORT_DIPSETTING(      0x0400, "2 Credits" )
  2063: 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Lives ) )
  2064: 	PORT_DIPSETTING(      0x0800, "2" )
  2065: 	PORT_DIPSETTING(      0x0000, "3" )
  2066: 	PORT_DIPNAME( 0x1000, 0x1000, "Allow Continue" )
  2067: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  2068: 	PORT_DIPSETTING(      0x1000, DEF_STR( Yes ) )
  2069: 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
  2070: 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
  2071: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2072: 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
  2073: 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
  2074: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2075: 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Demo_Sounds ) )
  2076: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
  2077: 	PORT_DIPSETTING(      0x8000, DEF_STR( On ) )
  2078: 
  2079: 	PORT_START	// IN3 - Strangely mapped in the 0x400000-0x41ffff range
  2080: 	PORT_BIT(  0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )	// unused
  2081: INPUT_PORTS_END
  2082: 
  2083: 
  2084: /***************************************************************************
  2085: 								Bang Bang Ball
  2086: ***************************************************************************/
  2087: 
  2088: INPUT_PORTS_START( bangball )
  2089: 	PORT_START	// IN0 - $d00000
  2090: 	COINS
  2091: 
  2092: 	PORT_START	// IN1 - $d00002
  2093: 	JOY_LSB(1, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)
  2094: 	JOY_MSB(2, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)
  2095: 
  2096: 	PORT_START	// IN2 - Strangely mapped in the 0xc00000-0xc1ffff range
  2097: 	COINAGE_DSW
  2098: 
  2099: 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )
  2100: 	PORT_DIPSETTING(      0x0200, "Easy"    )
  2101: 	PORT_DIPSETTING(      0x0300, "Normal"  )
  2102: 	PORT_DIPSETTING(      0x0100, "Hard"    )
  2103: 	PORT_DIPSETTING(      0x0000, "Hardest" )
  2104: 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Lives ) )
  2105: 	PORT_DIPSETTING(      0x0800, "2" )
  2106: 	PORT_DIPSETTING(      0x0400, "3" )
  2107: 	PORT_DIPSETTING(      0x0c00, "4" )
  2108: 	PORT_DIPSETTING(      0x0000, "5" )
  2109: 	PORT_DIPNAME( 0x1000, 0x1000, "Allow Continue" )
  2110: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  2111: 	PORT_DIPSETTING(      0x1000, DEF_STR( Yes ) )
  2112: 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Demo_Sounds ) )
  2113: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
  2114: 	PORT_DIPSETTING(      0x2000, DEF_STR( On ) )
  2115: 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
  2116: 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
  2117: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2118: 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
  2119: 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
  2120: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2121: 
  2122: 	PORT_START	// IN3 - Strangely mapped in the 0xc00000-0xc1ffff range
  2123: 	PORT_BIT(  0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )	// used for debug
  2124: INPUT_PORTS_END
  2125: 
  2126: 
  2127: /***************************************************************************
  2128: 							Blazing Tornado
  2129: ***************************************************************************/
  2130: 
  2131: INPUT_PORTS_START( blzntrnd )
  2132: 	PORT_START
  2133: 	PORT_DIPNAME( 0x0007, 0x0004, DEF_STR( Difficulty ) )
  2134: 	PORT_DIPSETTING(      0x0007, "Beginner" )
  2135: 	PORT_DIPSETTING(      0x0006, "Easiest" )
  2136: 	PORT_DIPSETTING(      0x0005, "Easy" )
  2137: 	PORT_DIPSETTING(      0x0004, "Normal" )
  2138: 	PORT_DIPSETTING(      0x0003, "Hard" )
  2139: 	PORT_DIPSETTING(      0x0002, "Hardest" )
  2140: 	PORT_DIPSETTING(      0x0001, "Expert" )
  2141: 	PORT_DIPSETTING(      0x0000, "Master" )
  2142: 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Flip_Screen ) )
  2143: 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
  2144: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2145: 	PORT_DIPNAME( 0x0010, 0x0000, DEF_STR( Demo_Sounds ) )
  2146: 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
  2147: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2148: 	PORT_DIPNAME( 0x0020, 0x0000, "Allow Continue" )
  2149: 	PORT_DIPSETTING(      0x0020, DEF_STR( No ) )
  2150: 	PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
  2151: 	PORT_DIPNAME( 0x00c0, 0x0000, "Control Panel" )
  2152: 	PORT_DIPSETTING(      0x0000, "4 Players" )
  2153: //	PORT_DIPSETTING(      0x0040, "4 Players" )
  2154: 	PORT_DIPSETTING(      0x0080, "1P & 2P Tag only" )
  2155: 	PORT_DIPSETTING(      0x00c0, "1P & 2P vs only" )
  2156: 	PORT_DIPNAME( 0x0300, 0x0300, "Half Continue" )
  2157: 	PORT_DIPSETTING(      0x0000, "6C to start, 3C to continue" )
  2158: 	PORT_DIPSETTING(      0x0100, "4C to start, 2C to continue" )
  2159: 	PORT_DIPSETTING(      0x0200, "2C to start, 1C to continue" )
  2160: 	PORT_DIPSETTING(      0x0300, "Disabled" )
  2161: 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unused ) )
  2162: 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
  2163: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2164: 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unused ) )
  2165: 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
  2166: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2167: 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unused ) )
  2168: 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
  2169: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2170: 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unused ) )
  2171: 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
  2172: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2173: 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unused ) )
  2174: 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
  2175: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2176: 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unused ) )
  2177: 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
  2178: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2179: 
  2180: 	PORT_START
  2181: 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) )
  2182: 	PORT_DIPSETTING(      0x0004, DEF_STR( 4C_1C ) )
  2183: 	PORT_DIPSETTING(      0x0005, DEF_STR( 3C_1C ) )
  2184: 	PORT_DIPSETTING(      0x0006, DEF_STR( 2C_1C ) )
  2185: 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
  2186: 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_2C ) )
  2187: 	PORT_DIPSETTING(      0x0002, DEF_STR( 1C_3C ) )
  2188: 	PORT_DIPSETTING(      0x0001, DEF_STR( 1C_4C ) )
  2189: 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_5C ) )
  2190: 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) )
  2191: 	PORT_DIPSETTING(      0x0020, DEF_STR( 4C_1C ) )
  2192: 	PORT_DIPSETTING(      0x0028, DEF_STR( 3C_1C ) )
  2193: 	PORT_DIPSETTING(      0x0030, DEF_STR( 2C_1C ) )
  2194: 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
  2195: 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_2C ) )
  2196: 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_3C ) )
  2197: 	PORT_DIPSETTING(      0x0008, DEF_STR( 1C_4C ) )
  2198: 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_5C ) )
  2199: 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Free_Play ) )
  2200: 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
  2201: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2202: 	PORT_BITX(0x0080, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  2203: 	PORT_DIPNAME( 0x0300, 0x0300, "CP Single" )
  2204: 	PORT_DIPSETTING(      0x0300, "2:00" )
  2205: 	PORT_DIPSETTING(      0x0200, "2:30" )
  2206: 	PORT_DIPSETTING(      0x0100, "3:00" )
  2207: 	PORT_DIPSETTING(      0x0000, "3:30" )
  2208: 	PORT_DIPNAME( 0x0c00, 0x0c00, "CP Tag" )
  2209: 	PORT_DIPSETTING(      0x0c00, "2:00" )
  2210: 	PORT_DIPSETTING(      0x0800, "2:30" )
  2211: 	PORT_DIPSETTING(      0x0400, "3:00" )
  2212: 	PORT_DIPSETTING(      0x0000, "3:30" )
  2213: 	PORT_DIPNAME( 0x3000, 0x3000, "Vs Single" )
  2214: 	PORT_DIPSETTING(      0x3000, "2:30" )
  2215: 	PORT_DIPSETTING(      0x2000, "3:00" )
  2216: 	PORT_DIPSETTING(      0x1000, "4:00" )
  2217: 	PORT_DIPSETTING(      0x0000, "5:00" )
  2218: 	PORT_DIPNAME( 0xc000, 0xc000, "Vs Tag" )
  2219: 	PORT_DIPSETTING(      0xc000, "2:30" )
  2220: 	PORT_DIPSETTING(      0x8000, "3:00" )
  2221: 	PORT_DIPSETTING(      0x4000, "4:00" )
  2222: 	PORT_DIPSETTING(      0x0000, "5:00" )
  2223: 
  2224: 	PORT_START
  2225: 	JOY_LSB(1, BUTTON1, BUTTON2, BUTTON3, BUTTON4)
  2226: 	JOY_MSB(2, BUTTON1, BUTTON2, BUTTON3, BUTTON4)
  2227: 
  2228: 	PORT_START
  2229: 	JOY_LSB(3, BUTTON1, BUTTON2, BUTTON3, BUTTON4)
  2230: 	JOY_MSB(4, BUTTON1, BUTTON2, BUTTON3, BUTTON4)
  2231: 
  2232: 	PORT_START
  2233: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SERVICE1 )
  2234: 	PORT_BITX(0x0002, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  2235: 	PORT_BIT_IMPULSE(  0x0004, IP_ACTIVE_LOW, IPT_COIN1, 2    )
  2236: 	PORT_BIT_IMPULSE(  0x0008, IP_ACTIVE_LOW, IPT_COIN2, 2    )
  2237: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START1 )
  2238: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START2 )
  2239: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_START3 )
  2240: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START4 )
  2241: INPUT_PORTS_END
  2242: 
  2243: 
  2244: /***************************************************************************
  2245: 								Dai Toride
  2246: ***************************************************************************/
  2247: 
  2248: /* If only ONE of the "Coinage" is set to "Free Play", it is in fact "5C_1C".
  2249: 
  2250:    IN2 bits 12 and 13 are in fact "merged" :
  2251: 
  2252:      12  13    effect
  2253:      Off Off   Continue, Retry level
  2254:      On  Off   Continue, Ask player for retry
  2255:      Off On    No continue
  2256:      On  On    Continue, Retry level
  2257: 
  2258: */
  2259: INPUT_PORTS_START( daitorid )
  2260: 	PORT_START	// IN0 - $c00000
  2261: 	COINS
  2262: 
  2263: 	PORT_START	// IN1 - $c00002
  2264: 	JOY_LSB(1, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)		// BUTTON2 and BUTTON3 in "test mode" only
  2265: 	JOY_MSB(2, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)		// BUTTON2 and BUTTON3 in "test mode" only
  2266: 
  2267: 	PORT_START	// IN2 - $c00004
  2268: 	COINAGE_DSW
  2269: 
  2270: 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )		// Timer speed
  2271: 	PORT_DIPSETTING(      0x0200, "Easy" )				//   Slow
  2272: 	PORT_DIPSETTING(      0x0300, "Normal" )				//   Normal
  2273: 	PORT_DIPSETTING(      0x0100, "Hard" )				//   Fast
  2274: 	PORT_DIPSETTING(      0x0000, "Hardest" )				//   Fastest
  2275: 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unused ) )
  2276: 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
  2277: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2278: 	PORT_DIPNAME( 0x0800, 0x0800, "Winning Rounds (Player VS Player)" )
  2279: 	PORT_DIPSETTING(      0x0000, "1/1" )
  2280: 	PORT_DIPSETTING(      0x0800, "2/3" )
  2281: 	PORT_DIPNAME( 0x1000, 0x0000, "Retry Level On Continue" )
  2282: 	PORT_DIPSETTING(      0x0000, "Ask Player" )
  2283: 	PORT_DIPSETTING(      0x1000, DEF_STR( Yes ) )
  2284: 	PORT_DIPNAME( 0x2000, 0x2000, "Allow Continue" )
  2285: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  2286: 	PORT_DIPSETTING(      0x2000, DEF_STR( Yes ) )
  2287: 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Demo_Sounds ) )
  2288: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
  2289: 	PORT_DIPSETTING(      0x4000, DEF_STR( On ) )
  2290: 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unused ) )
  2291: 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
  2292: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2293: 
  2294: 	PORT_START	// IN3 - $c00006
  2295: 	PORT_BIT(  0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2296: INPUT_PORTS_END
  2297: 
  2298: 
  2299: /***************************************************************************
  2300: 								Dharma Doujou
  2301: ***************************************************************************/
  2302: 
  2303: /* I don't really know HOW to describe the effect of IN2 bits 8 and 9.
  2304:    All I can tell is that in "table 2" the values are smaller for the 2
  2305:    first levels (so the game is harder), but they vary less between the
  2306:    levels (so there is almost no increasing difficulty).
  2307: 
  2308:    Even if there are 4 "tables" the 2 first ones and the 2 last ones
  2309:    contains the same values for the timer. */
  2310: INPUT_PORTS_START( dharma )
  2311: 	PORT_START	// IN0 - $c00000
  2312: 	COINS
  2313: 
  2314: 	PORT_START	// IN1 - $c00002
  2315: 	JOY_LSB(1, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)		// BUTTON2 and BUTTON3 in "test mode" only
  2316: 	JOY_MSB(2, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)		// BUTTON2 and BUTTON3 in "test mode" only
  2317: 
  2318: 	PORT_START	// IN2 - $c00004
  2319: 	COINAGE_DSW
  2320: 
  2321: 	PORT_DIPNAME( 0x0300, 0x0300, "Time" )				// Check code at 0x00da0a and see notes
  2322: 	PORT_DIPSETTING(      0x0000, "Table 1" )				//   Table offset : 0x00e668
  2323: //	PORT_DIPSETTING(      0x0100, "Table 1" )				//   Table offset : 0x00e6c0
  2324: //	PORT_DIPSETTING(      0x0200, "Table 2" )				//   Table offset : 0x00e718
  2325: 	PORT_DIPSETTING(      0x0300, "Table 2" )				//   Table offset : 0x00e770
  2326: 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) )		// Timer (crab) speed
  2327: 	PORT_DIPSETTING(      0x0800, "Easy" )				//   Slow
  2328: 	PORT_DIPSETTING(      0x0c00, "Normal" )				//   Normal
  2329: 	PORT_DIPSETTING(      0x0400, "Hard" )				//   Fast
  2330: 	PORT_DIPSETTING(      0x0000, "Hardest" )				//   Fastest
  2331: 	PORT_DIPNAME( 0x1000, 0x1000, "2 Players Game" )
  2332: 	PORT_DIPSETTING(      0x1000, "2 Credits" )
  2333: 	PORT_DIPSETTING(      0x0000, "1 Credit" )
  2334: 	PORT_DIPNAME( 0x2000, 0x2000, "Allow Continue" )
  2335: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  2336: 	PORT_DIPSETTING(      0x2000, DEF_STR( Yes ) )
  2337: 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Demo_Sounds ) )
  2338: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
  2339: 	PORT_DIPSETTING(      0x4000, DEF_STR( On ) )
  2340: 	PORT_BITX(    0x8000, 0x8000, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Freeze", IP_KEY_NONE, IP_JOY_NONE )
  2341: 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
  2342: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2343: 
  2344: 	PORT_START	// IN3 - $c00006
  2345: 	PORT_BIT(  0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2346: INPUT_PORTS_END
  2347: 
  2348: 
  2349: /***************************************************************************
  2350: 								Karate Tournament
  2351: ***************************************************************************/
  2352: 
  2353: INPUT_PORTS_START( karatour )
  2354: 	PORT_START	// IN0 - $400002
  2355: 	JOY_LSB(2, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)
  2356: 
  2357: 	PORT_START	// IN1 - $400004
  2358: 	COINS
  2359: 
  2360: 	PORT_START	// IN2 - $400006
  2361: 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) )
  2362: 	PORT_DIPSETTING(      0x0001, "1" )
  2363: 	PORT_DIPSETTING(      0x0000, "2" )
  2364: 	PORT_DIPSETTING(      0x0003, "3" )
  2365: 	PORT_DIPSETTING(      0x0002, "4" )
  2366: 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Unknown ) )
  2367: 	PORT_DIPSETTING(      0x000c, "11 (0)" )
  2368: 	PORT_DIPSETTING(      0x0008, "10 (1)" )
  2369: 	PORT_DIPSETTING(      0x0004, "01 (2)" )
  2370: 	PORT_DIPSETTING(      0x0000, "00 (3)" )
  2371: 	PORT_DIPNAME( 0x0010, 0x0010, "Time" )
  2372: 	PORT_DIPSETTING(      0x0010, "60" )
  2373: 	PORT_DIPSETTING(      0x0000, "40" )
  2374: 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Free_Play ) )
  2375: 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
  2376: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2377: 	PORT_DIPNAME( 0x0040, 0x0040, "Allow Continue" )
  2378: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  2379: 	PORT_DIPSETTING(      0x0040, DEF_STR( Yes ) )
  2380: 	PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Demo_Sounds ) )
  2381: 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
  2382: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2383: 
  2384: 	PORT_START	// IN3 - $40000a
  2385: 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) )
  2386: 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
  2387: 	PORT_DIPSETTING(      0x0001, DEF_STR( 2C_1C ) )
  2388: 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
  2389: 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
  2390: 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
  2391: 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
  2392: 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_5C ) )
  2393: 	PORT_DIPSETTING(      0x0002, DEF_STR( 1C_6C ) )
  2394: 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) )
  2395: 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
  2396: 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
  2397: 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
  2398: 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
  2399: 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
  2400: 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
  2401: 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_5C ) )
  2402: 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_6C ) )
  2403: 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) )
  2404: 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
  2405: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2406: 	PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
  2407: 
  2408: 	PORT_START	// IN4 - $40000c
  2409: 	JOY_LSB(1, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)
  2410: INPUT_PORTS_END
  2411: 
  2412: 
  2413: /***************************************************************************
  2414: 								Lady Killer
  2415: ***************************************************************************/
  2416: 
  2417: INPUT_PORTS_START( ladykill )
  2418: 	PORT_START	// IN0 - $400002
  2419: 	JOY_LSB(2, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)
  2420: 
  2421: 	PORT_START	// IN1 - $400004
  2422: 	COINS
  2423: 
  2424: 	PORT_START	// IN2 - $400006
  2425: 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) )
  2426: 	PORT_DIPSETTING(      0x0001, "1" )
  2427: 	PORT_DIPSETTING(      0x0000, "2" )
  2428: 	PORT_DIPSETTING(      0x0003, "3" )
  2429: 	PORT_DIPSETTING(      0x0002, "4" )
  2430: 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) )
  2431: 	PORT_DIPSETTING(      0x0008, "Easy" )
  2432: 	PORT_DIPSETTING(      0x000c, "Normal" )
  2433: 	PORT_DIPSETTING(      0x0004, "Hard" )
  2434: 	PORT_DIPSETTING(      0x0000, "Very Hard" )
  2435: 	PORT_DIPNAME( 0x0010, 0x0000, "Nudity" )
  2436: 	PORT_DIPSETTING(      0x0010, "Partial" )
  2437: 	PORT_DIPSETTING(      0x0000, "Full" )
  2438: 	PORT_SERVICE( 0x0020, IP_ACTIVE_LOW )
  2439: 	PORT_DIPNAME( 0x0040, 0x0040, "Allow Continue" )
  2440: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  2441: 	PORT_DIPSETTING(      0x0040, DEF_STR( Yes ) )
  2442: 	PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Demo_Sounds ) )
  2443: 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
  2444: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2445: 
  2446: 	PORT_START	// IN3 - $40000a
  2447: 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) )
  2448: 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
  2449: 	PORT_DIPSETTING(      0x0001, DEF_STR( 2C_1C ) )
  2450: 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
  2451: 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
  2452: 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
  2453: 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
  2454: 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_5C ) )
  2455: 	PORT_DIPSETTING(      0x0002, DEF_STR( 1C_6C ) )
  2456: 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) )
  2457: 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
  2458: 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
  2459: 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
  2460: 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
  2461: 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
  2462: 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
  2463: 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_5C ) )
  2464: 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_6C ) )
  2465: 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) )
  2466: 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
  2467: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2468: 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unused ) )
  2469: 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
  2470: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2471: 
  2472: 	PORT_START	// IN4 - $40000c
  2473: 	JOY_LSB(1, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)
  2474: INPUT_PORTS_END
  2475: 
  2476: /* Same as 'ladykill' but NO "Nudity" Dip Switch */
  2477: INPUT_PORTS_START( moegonta )
  2478: 	PORT_START	// IN0 - $400002
  2479: 	JOY_LSB(2, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)
  2480: 
  2481: 	PORT_START	// IN1 - $400004
  2482: 	COINS
  2483: 
  2484: 	PORT_START	// IN2 - $400006
  2485: 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) )
  2486: 	PORT_DIPSETTING(      0x0001, "1" )
  2487: 	PORT_DIPSETTING(      0x0000, "2" )
  2488: 	PORT_DIPSETTING(      0x0003, "3" )
  2489: 	PORT_DIPSETTING(      0x0002, "4" )
  2490: 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) )
  2491: 	PORT_DIPSETTING(      0x0008, "Easy" )
  2492: 	PORT_DIPSETTING(      0x000c, "Normal" )
  2493: 	PORT_DIPSETTING(      0x0004, "Hard" )
  2494: 	PORT_DIPSETTING(      0x0000, "Very Hard" )
  2495: 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unused ) )
  2496: 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
  2497: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2498: 	PORT_SERVICE( 0x0020, IP_ACTIVE_LOW )
  2499: 	PORT_DIPNAME( 0x0040, 0x0040, "Allow Continue" )
  2500: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  2501: 	PORT_DIPSETTING(      0x0040, DEF_STR( Yes ) )
  2502: 	PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Demo_Sounds ) )
  2503: 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
  2504: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2505: 
  2506: 	PORT_START	// IN3 - $40000a
  2507: 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) )
  2508: 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
  2509: 	PORT_DIPSETTING(      0x0001, DEF_STR( 2C_1C ) )
  2510: 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
  2511: 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
  2512: 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
  2513: 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
  2514: 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_5C ) )
  2515: 	PORT_DIPSETTING(      0x0002, DEF_STR( 1C_6C ) )
  2516: 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) )
  2517: 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
  2518: 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
  2519: 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
  2520: 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
  2521: 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
  2522: 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
  2523: 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_5C ) )
  2524: 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_6C ) )
  2525: 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) )
  2526: 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
  2527: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2528: 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unused ) )
  2529: 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
  2530: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2531: 
  2532: 	PORT_START	// IN4 - $40000c
  2533: 	JOY_LSB(1, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)
  2534: INPUT_PORTS_END
  2535: 
  2536: 
  2537: /***************************************************************************
  2538: 								Last Fortress
  2539: ***************************************************************************/
  2540: 
  2541: /* The code which tests IN4 bit 7 is the SAME as the one for 'lastfero'.
  2542:    So WHY can't the game display cards instead of mahjong tiles ?
  2543:    Is it due to different GFX ROMS or to an emulation bug ?
  2544: */
  2545: INPUT_PORTS_START( lastfort )
  2546: 	PORT_START	// IN0 - $c00004
  2547: 	COINS
  2548: 
  2549: 	PORT_START	// IN1 - $c00006
  2550: 	JOY_LSB(1, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)		// BUTTON2 and BUTTON3 in "test mode" only
  2551: 
  2552: 	PORT_START	// IN2 - $c00008
  2553: 	JOY_LSB(2, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)		// BUTTON2 and BUTTON3 in "test mode" only
  2554: 
  2555: 	PORT_START	// IN3 - $c0000a
  2556: 	COINAGE_DSW
  2557: 
  2558: 	PORT_START	// IN4 - $c0000c
  2559: 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) )		// Timer speed
  2560: 	PORT_DIPSETTING(      0x0000, "Easiest" )				//   Slowest
  2561: 	PORT_DIPSETTING(      0x0001, "Easy" )				//   Slow
  2562: 	PORT_DIPSETTING(      0x0003, "Normal" )				//   Normal
  2563: 	PORT_DIPSETTING(      0x0002, "Hard" )				//   Fast
  2564: 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unused ) )
  2565: 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
  2566: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2567: 	PORT_DIPNAME( 0x0008, 0x0008, "Retry Level On Continue" )
  2568: 	PORT_DIPSETTING(      0x0008, "Ask Player" )
  2569: 	PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
  2570: 	PORT_DIPNAME( 0x0010, 0x0010, "2 Players Game" )
  2571: 	PORT_DIPSETTING(      0x0010, "2 Credits" )
  2572: 	PORT_DIPSETTING(      0x0000, "1 Credit" )
  2573: 	PORT_DIPNAME( 0x0020, 0x0020, "Allow Continue" )
  2574: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  2575: 	PORT_DIPSETTING(      0x0020, DEF_STR( Yes ) )
  2576: 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Demo_Sounds ) )
  2577: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
  2578: 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
  2579: 	PORT_DIPNAME( 0x0080, 0x0080, "Tiles" )
  2580: 	PORT_DIPSETTING(      0x0080, "Mahjong" )
  2581: //	PORT_DIPSETTING(      0x0000, "Cards" )				// Not working - See notes
  2582: 
  2583: 	PORT_START	// IN5 - $c0000e
  2584: 	PORT_BIT(  0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2585: INPUT_PORTS_END
  2586: 
  2587: 
  2588: /***************************************************************************
  2589: 							Last Fortress (Erotic)
  2590: ***************************************************************************/
  2591: 
  2592: /* Same as 'lastfort' but WORKING "Tiles" Dip Switch */
  2593: INPUT_PORTS_START( lastfero )
  2594: 	PORT_START	// IN0 - $c00004
  2595: 	COINS
  2596: 
  2597: 	PORT_START	// IN1 - $c00006
  2598: 	JOY_LSB(1, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)		// BUTTON2 and BUTTON3 in "test mode" only
  2599: 
  2600: 	PORT_START	// IN2 - $c00008
  2601: 	JOY_LSB(2, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)		// BUTTON2 and BUTTON3 in "test mode" only
  2602: 
  2603: 	PORT_START	// IN3 - $c0000a
  2604: 	COINAGE_DSW
  2605: 
  2606: 	PORT_START	// IN4 - $c0000c
  2607: 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) )		// Timer speed
  2608: 	PORT_DIPSETTING(      0x0000, "Easiest" )				//   Slowest
  2609: 	PORT_DIPSETTING(      0x0001, "Easy" )				//   Slow
  2610: 	PORT_DIPSETTING(      0x0003, "Normal" )				//   Normal
  2611: 	PORT_DIPSETTING(      0x0002, "Hard" )				//   Fast
  2612: 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unused ) )
  2613: 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
  2614: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2615: 	PORT_DIPNAME( 0x0008, 0x0008, "Retry Level On Continue" )
  2616: 	PORT_DIPSETTING(      0x0008, "Ask Player" )
  2617: 	PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
  2618: 	PORT_DIPNAME( 0x0010, 0x0010, "2 Players Game" )
  2619: 	PORT_DIPSETTING(      0x0010, "2 Credits" )
  2620: 	PORT_DIPSETTING(      0x0000, "1 Credit" )
  2621: 	PORT_DIPNAME( 0x0020, 0x0020, "Allow Continue" )
  2622: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  2623: 	PORT_DIPSETTING(      0x0020, DEF_STR( Yes ) )
  2624: 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Demo_Sounds ) )
  2625: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
  2626: 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
  2627: 	PORT_DIPNAME( 0x0080, 0x0080, "Tiles" )
  2628: 	PORT_DIPSETTING(      0x0080, "Mahjong" )
  2629: 	PORT_DIPSETTING(      0x0000, "Cards" )
  2630: 
  2631: 	PORT_START	// IN5 - $c0000e
  2632: 	PORT_BIT(  0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2633: INPUT_PORTS_END
  2634: 
  2635: 
  2636: /***************************************************************************
  2637: 							Mahjong Doukyuusei
  2638: ***************************************************************************/
  2639: 
  2640: INPUT_PORTS_START( dokyusei )
  2641: 	PORT_START	// IN0 - $478880.w
  2642: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2643: 	PORT_BITX(0x0002, IP_ACTIVE_LOW, 0, "A",   KEYCODE_A,        IP_JOY_NONE )
  2644: 	PORT_BITX(0x0004, IP_ACTIVE_LOW, 0, "E",   KEYCODE_E,        IP_JOY_NONE )
  2645: 	PORT_BITX(0x0008, IP_ACTIVE_LOW, 0, "I",   KEYCODE_I,        IP_JOY_NONE )
  2646: 	PORT_BITX(0x0010, IP_ACTIVE_LOW, 0, "M",   KEYCODE_M,        IP_JOY_NONE )
  2647: 	PORT_BITX(0x0020, IP_ACTIVE_LOW, 0, "Kan", KEYCODE_LCONTROL, IP_JOY_NONE )
  2648: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_START1  )
  2649: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2650: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2651: 
  2652: 	PORT_START	// IN1 - $478880.w
  2653: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2654: 	PORT_BITX(0x0002, IP_ACTIVE_LOW, 0, "B",     KEYCODE_B, IP_JOY_NONE )
  2655: 	PORT_BITX(0x0004, IP_ACTIVE_LOW, 0, "F",     KEYCODE_F, IP_JOY_NONE )
  2656: 	PORT_BITX(0x0008, IP_ACTIVE_LOW, 0, "J",     KEYCODE_J, IP_JOY_NONE )
  2657: 	PORT_BITX(0x0010, IP_ACTIVE_LOW, 0, "N",     KEYCODE_N, IP_JOY_NONE )
  2658: 	PORT_BITX(0x0020, IP_ACTIVE_LOW, 0, "Reach", KEYCODE_LSHIFT, IP_JOY_NONE )
  2659: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2660: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2661: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2662: 
  2663: 	PORT_START	// IN2 - $478880.w
  2664: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2665: 	PORT_BITX(0x0002, IP_ACTIVE_LOW, 0, "C",   KEYCODE_C,      IP_JOY_NONE )
  2666: 	PORT_BITX(0x0004, IP_ACTIVE_LOW, 0, "G",   KEYCODE_G,      IP_JOY_NONE )
  2667: 	PORT_BITX(0x0008, IP_ACTIVE_LOW, 0, "K",   KEYCODE_K,      IP_JOY_NONE )
  2668: 	PORT_BITX(0x0010, IP_ACTIVE_LOW, 0, "Chi", KEYCODE_SPACE, IP_JOY_NONE )
  2669: 	PORT_BITX(0x0020, IP_ACTIVE_LOW, 0, "Ron", KEYCODE_Z, IP_JOY_NONE )
  2670: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2671: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2672: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2673: 
  2674: 	PORT_START	// IN3 - $478880.w
  2675: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2676: 	PORT_BITX(0x0002, IP_ACTIVE_LOW, 0, "D",   KEYCODE_D,     IP_JOY_NONE )
  2677: 	PORT_BITX(0x0004, IP_ACTIVE_LOW, 0, "H",   KEYCODE_H,     IP_JOY_NONE )
  2678: 	PORT_BITX(0x0008, IP_ACTIVE_LOW, 0, "L",   KEYCODE_L,     IP_JOY_NONE )
  2679: 	PORT_BITX(0x0010, IP_ACTIVE_LOW, 0, "Pon", KEYCODE_LALT,   IP_JOY_NONE )
  2680: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2681: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2682: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2683: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2684: 
  2685: 	PORT_START	// IN4 - $478880.w
  2686: 	PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2687: 
  2688: 	PORT_START	// IN5 - $478882.w
  2689: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2690: 	PORT_BIT_IMPULSE(  0x0002, IP_ACTIVE_LOW, IPT_COIN1, 2 )
  2691: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
  2692: 	PORT_BITX(0x0008, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  2693: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2694: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2695: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2696: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2697: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2698: 
  2699: 	PORT_START // IN6 - $478884.w
  2700: 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )
  2701: 	PORT_DIPSETTING(      0x0300, "Easy" )
  2702: 	PORT_DIPSETTING(      0x0200, "Normal" )
  2703: 	PORT_DIPSETTING(      0x0100, "Hard" )
  2704: 	PORT_DIPSETTING(      0x0000, "Hardest" )
  2705: 	PORT_DIPNAME( 0x1c00, 0x1c00, DEF_STR( Coinage ) )
  2706: 	PORT_DIPSETTING(      0x0400, DEF_STR( 4C_1C ) )
  2707: 	PORT_DIPSETTING(      0x0800, DEF_STR( 3C_1C ) )
  2708: 	PORT_DIPSETTING(      0x0c00, DEF_STR( 2C_1C ) )
  2709: 	PORT_DIPSETTING(      0x1c00, DEF_STR( 1C_1C ) )
  2710: 	PORT_DIPSETTING(      0x1800, DEF_STR( 1C_2C ) )
  2711: 	PORT_DIPSETTING(      0x1400, DEF_STR( 1C_3C ) )
  2712: 	PORT_DIPSETTING(      0x1000, DEF_STR( 1C_4C ) )
  2713: 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
  2714: 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Demo_Sounds ) )
  2715: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
  2716: 	PORT_DIPSETTING(      0x2000, DEF_STR( On ) )
  2717: 	PORT_DIPNAME( 0x4000, 0x4000, "Game Sound" )
  2718: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
  2719: 	PORT_DIPSETTING(      0x4000, DEF_STR( On ) )
  2720: 	PORT_DIPNAME( 0x8000, 0x8000, "Auto TSUMO after REACH" )
  2721: 	PORT_DIPSETTING(      0x8000, DEF_STR( No ) )
  2722: 	PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
  2723: 
  2724: 	PORT_START // IN7 - $478886.w
  2725: 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) )
  2726: 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
  2727: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2728: 	PORT_DIPNAME( 0x0200, 0x0200, "CPU wears clothes on RON" )
  2729: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  2730: 	PORT_DIPSETTING(      0x0200, DEF_STR( Yes ) )
  2731: 	PORT_DIPNAME( 0x0400, 0x0400, "CPU clothes on continue play" )
  2732: 	PORT_DIPSETTING(      0x0400, "Return to default" )
  2733: 	PORT_DIPSETTING(      0x0000, "Keep current status" )
  2734: 	PORT_SERVICE( 0x0800, IP_ACTIVE_LOW )
  2735: 	PORT_DIPNAME( 0x1000, 0x0000, "Self Test" ) //!
  2736: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  2737: 	PORT_DIPSETTING(      0x1000, DEF_STR( Yes ) )
  2738: 	PORT_DIPNAME( 0x2000, 0x2000, "Unknown 2-5" )
  2739: 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
  2740: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2741: 	PORT_DIPNAME( 0x4000, 0x4000, "Unknown 2-6" )
  2742: 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
  2743: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2744: 	PORT_DIPNAME( 0x8000, 0x8000, "Unknown 2-7" )
  2745: 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
  2746: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2747: INPUT_PORTS_END
  2748: 
  2749: 
  2750: /***************************************************************************
  2751: 						Mahjong Gakuensai 1 & 2
  2752: ***************************************************************************/
  2753: 
  2754: /* Same as dokyusei, without the DSWs (these games have an eeprom) */
  2755: 
  2756: INPUT_PORTS_START( gakusai )
  2757: 	PORT_START	// IN0 - $278880.w
  2758: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2759: 	PORT_BITX(0x0002, IP_ACTIVE_LOW, 0, "A",   KEYCODE_A,        IP_JOY_NONE )
  2760: 	PORT_BITX(0x0004, IP_ACTIVE_LOW, 0, "E",   KEYCODE_E,        IP_JOY_NONE )
  2761: 	PORT_BITX(0x0008, IP_ACTIVE_LOW, 0, "I",   KEYCODE_I,        IP_JOY_NONE )
  2762: 	PORT_BITX(0x0010, IP_ACTIVE_LOW, 0, "M",   KEYCODE_M,        IP_JOY_NONE )
  2763: 	PORT_BITX(0x0020, IP_ACTIVE_LOW, 0, "Kan", KEYCODE_LCONTROL, IP_JOY_NONE )
  2764: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_START1  )
  2765: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2766: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2767: 
  2768: 	PORT_START	// IN1 - $278880.w
  2769: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2770: 	PORT_BITX(0x0002, IP_ACTIVE_LOW, 0, "B",   KEYCODE_B, IP_JOY_NONE )
  2771: 	PORT_BITX(0x0004, IP_ACTIVE_LOW, 0, "F",   KEYCODE_F, IP_JOY_NONE )
  2772: 	PORT_BITX(0x0008, IP_ACTIVE_LOW, 0, "J",   KEYCODE_J, IP_JOY_NONE )
  2773: 	PORT_BITX(0x0010, IP_ACTIVE_LOW, 0, "N",   KEYCODE_N, IP_JOY_NONE )
  2774: 	PORT_BITX(0x0020, IP_ACTIVE_LOW, 0, "Reach", KEYCODE_LSHIFT, IP_JOY_NONE )
  2775: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2776: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2777: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2778: 
  2779: 	PORT_START	// IN2 - $278880.w
  2780: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2781: 	PORT_BITX(0x0002, IP_ACTIVE_LOW, 0, "C",     KEYCODE_C,      IP_JOY_NONE )
  2782: 	PORT_BITX(0x0004, IP_ACTIVE_LOW, 0, "G",     KEYCODE_G,      IP_JOY_NONE )
  2783: 	PORT_BITX(0x0008, IP_ACTIVE_LOW, 0, "K",     KEYCODE_K,      IP_JOY_NONE )
  2784: 	PORT_BITX(0x0010, IP_ACTIVE_LOW, 0, "Chi", KEYCODE_SPACE, IP_JOY_NONE )
  2785: 	PORT_BITX(0x0020, IP_ACTIVE_LOW, 0, "Ron", KEYCODE_Z, IP_JOY_NONE )
  2786: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2787: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2788: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2789: 
  2790: 	PORT_START	// IN3 - $278880.w
  2791: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2792: 	PORT_BITX(0x0002, IP_ACTIVE_LOW, 0, "D",   KEYCODE_D,     IP_JOY_NONE )
  2793: 	PORT_BITX(0x0004, IP_ACTIVE_LOW, 0, "H",   KEYCODE_H,     IP_JOY_NONE )
  2794: 	PORT_BITX(0x0008, IP_ACTIVE_LOW, 0, "L",   KEYCODE_L,     IP_JOY_NONE )
  2795: 	PORT_BITX(0x0010, IP_ACTIVE_LOW, 0, "Pon",   KEYCODE_LALT,   IP_JOY_NONE )
  2796: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2797: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2798: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2799: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2800: 
  2801: 	PORT_START	// IN4 - $278880.w
  2802: 	PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2803: 
  2804: 	PORT_START	// IN5 - $278882.w
  2805: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2806: 	PORT_BIT_IMPULSE(  0x0002, IP_ACTIVE_LOW, IPT_COIN1, 2 )
  2807: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
  2808: 	PORT_BITX(0x0008, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  2809: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2810: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2811: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2812: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2813: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2814: INPUT_PORTS_END
  2815: 
  2816: 
  2817: /***************************************************************************
  2818: 									Mouja
  2819: ***************************************************************************/
  2820: 
  2821: INPUT_PORTS_START( mouja )
  2822: 	PORT_START	// IN0 - $478880
  2823: 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2824: 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER1 )
  2825: 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER1 )
  2826: 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER1 )
  2827: 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
  2828: 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
  2829: 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
  2830: 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
  2831: 	PORT_BIT(  0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2832: 	PORT_BIT(  0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER2 )
  2833: 	PORT_BIT(  0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER2 )
  2834: 	PORT_BIT(  0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER2 )
  2835: 	PORT_BIT(  0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
  2836: 	PORT_BIT(  0x2000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  2837: 	PORT_BIT(  0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  2838: 	PORT_BIT(  0x8000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
  2839: 
  2840: 	PORT_START	// IN1 - $478882
  2841: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2842: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2843: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 )
  2844: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START2 )
  2845: 	PORT_BIT_IMPULSE(  0x0010, IP_ACTIVE_LOW, IPT_COIN1, 2    )
  2846: 	PORT_BIT_IMPULSE(  0x0020, IP_ACTIVE_LOW, IPT_COIN2, 2    )
  2847: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 )
  2848: 	PORT_BITX(0x0080, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  2849: 
  2850: 	PORT_START	// IN2 - $478884
  2851: 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Free_Play ) )
  2852: 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
  2853: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2854: 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) )
  2855: 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
  2856: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2857: 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Service_Mode ) )
  2858: 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
  2859: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2860: 	PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Demo_Sounds ) )
  2861: 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
  2862: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2863: 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) )
  2864: 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
  2865: 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )
  2866: 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )
  2867: 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_2C ) )
  2868: 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) )
  2869: 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
  2870: 	PORT_DIPSETTING(      0x0040, DEF_STR( 2C_1C ) )
  2871: 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )
  2872: 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_2C ) )
  2873: 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )
  2874: 	PORT_DIPSETTING(      0x0200, "Easy" )
  2875: 	PORT_DIPSETTING(      0x0300, "Normal" )
  2876: 	PORT_DIPSETTING(      0x0100, "Hard" )
  2877: 	PORT_DIPSETTING(      0x0000, "Hardest" )
  2878: 	PORT_DIPNAME( 0x0400, 0x0400, "Allow Continue" )
  2879: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  2880: 	PORT_DIPSETTING(      0x0400, DEF_STR( Yes ) )
  2881: 	PORT_DIPNAME( 0x0800, 0x0000, "Winning Rounds (Player VS Computer)" )
  2882: 	PORT_DIPSETTING(      0x0800, "1/1" )
  2883: 	PORT_DIPSETTING(      0x0000, "2/3" )
  2884: 	PORT_DIPNAME( 0x1000, 0x1000, "Winning Rounds (Player VS Player)" )
  2885: 	PORT_DIPSETTING(      0x1000, "1/1" )
  2886: 	PORT_DIPSETTING(      0x0000, "2/3" )
  2887: 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unused ) )
  2888: 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
  2889: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2890: 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unused ) )
  2891: 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
  2892: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2893: 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unused ) )
  2894: 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
  2895: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2896: 
  2897: 	PORT_START	// IN3 - $478886
  2898: 	PORT_BIT(  0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2899: INPUT_PORTS_END
  2900: 
  2901: 
  2902: /***************************************************************************
  2903: 								Pang Poms
  2904: ***************************************************************************/
  2905: 
  2906: INPUT_PORTS_START( pangpoms )
  2907: 	PORT_START	// IN0 - $800004
  2908: 	COINS
  2909: 
  2910: 	PORT_START	// IN1 - $800006
  2911: 	JOY_LSB(1, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)
  2912: 
  2913: 	PORT_START	// IN2 - $800008
  2914: 	JOY_LSB(2, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)
  2915: 
  2916: 	PORT_START	// IN3 - $80000a
  2917: 	COINAGE_DSW
  2918: 
  2919: 	PORT_START	// IN4 - $80000c
  2920: 	PORT_DIPNAME( 0x0003, 0x0003, "Time Speed" )
  2921: 	PORT_DIPSETTING(      0x0000, "Slowest" )	// 60 (1 game sec. lasts x/60 real sec.)
  2922: 	PORT_DIPSETTING(      0x0001, "Slow"    )	// 90
  2923: 	PORT_DIPSETTING(      0x0003, "Normal"  )	// 120
  2924: 	PORT_DIPSETTING(      0x0002, "Fast"    )	// 150
  2925: 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Lives ) )
  2926: 	PORT_DIPSETTING(      0x0008, "1" )
  2927: 	PORT_DIPSETTING(      0x0004, "2" )
  2928: 	PORT_DIPSETTING(      0x000c, "3" )
  2929: 	PORT_DIPSETTING(      0x0000, "4" )
  2930: 	PORT_DIPNAME( 0x0030, 0x0020, DEF_STR( Bonus_Life ) )
  2931: 	PORT_DIPSETTING(      0x0020, "400k and 800k" )
  2932: 	PORT_DIPSETTING(      0x0030, "400k" )
  2933: 	PORT_DIPSETTING(      0x0010, "800k" )
  2934: 	PORT_DIPSETTING(      0x0000, "None" )
  2935: 	PORT_DIPNAME( 0x0040, 0x0040, "Allow Continue" )
  2936: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  2937: 	PORT_DIPSETTING(      0x0040, DEF_STR( Yes ) )
  2938: 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Demo_Sounds ) )
  2939: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
  2940: 	PORT_DIPSETTING(      0x0080, DEF_STR( On ) )
  2941: 
  2942: 	PORT_START	// IN5 - $80000e
  2943: 	PORT_BIT(  0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2944: INPUT_PORTS_END
  2945: 
  2946: 
  2947: /***************************************************************************
  2948: 								Poitto!
  2949: ***************************************************************************/
  2950: 
  2951: INPUT_PORTS_START( poitto )
  2952: 	PORT_START	// IN0 - $800000
  2953: 	COINS
  2954: 
  2955: 	PORT_START	// IN1 - $800002
  2956: 	JOY_LSB(1, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)		// BUTTON2 and BUTTON3 in "test mode" only
  2957: 	JOY_MSB(2, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)		// BUTTON2 and BUTTON3 in "test mode" only
  2958: 
  2959: 	PORT_START	// IN2 - $800004
  2960: 	COINAGE_DSW
  2961: 
  2962: 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )
  2963: 	PORT_DIPSETTING(      0x0000, "Easy" )
  2964: 	PORT_DIPSETTING(      0x0300, "Normal" )
  2965: 	PORT_DIPSETTING(      0x0200, "Hard" )
  2966: 	PORT_DIPSETTING(      0x0100, "Hardest" )
  2967: 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unused ) )
  2968: 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
  2969: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2970: 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unused ) )
  2971: 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
  2972: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2973: 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unused ) )
  2974: 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
  2975: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2976: 	PORT_DIPNAME( 0x2000, 0x2000, "Allow Continue" )
  2977: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  2978: 	PORT_DIPSETTING(      0x2000, DEF_STR( Yes ) )
  2979: 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Demo_Sounds ) )
  2980: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
  2981: 	PORT_DIPSETTING(      0x4000, DEF_STR( On ) )
  2982: 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unused ) )
  2983: 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
  2984: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  2985: 
  2986: 	PORT_START	// IN3 - $800006
  2987: 	PORT_BIT(  0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2988: INPUT_PORTS_END
  2989: 
  2990: 
  2991: /***************************************************************************
  2992: 								Puzzli
  2993: ***************************************************************************/
  2994: 
  2995: INPUT_PORTS_START( puzzli )
  2996: 	PORT_START	// IN0 - $c00000
  2997: 	COINS
  2998: 
  2999: 	PORT_START	// IN1 - $c00002
  3000: 	JOY_LSB(1, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)		// BUTTON3 in "test mode" only
  3001: 	JOY_MSB(2, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)		// BUTTON3 in "test mode" only
  3002: 
  3003: 	PORT_START	// IN2 - $c00004
  3004: 	COINAGE_DSW
  3005: 
  3006: 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )
  3007: 	PORT_DIPSETTING(      0x0200, "Easy" )
  3008: 	PORT_DIPSETTING(      0x0300, "Normal" )
  3009: //	PORT_DIPSETTING(      0x0100, "Normal" )			// Duplicated setting
  3010: 	PORT_DIPSETTING(      0x0000, "Hard" )
  3011: 	PORT_DIPNAME( 0x0400, 0x0400, "Join In" )
  3012: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  3013: 	PORT_DIPSETTING(      0x0400, DEF_STR( Yes ) )
  3014: 	PORT_DIPNAME( 0x0800, 0x0800, "2 Players Game" )
  3015: 	PORT_DIPSETTING(      0x0000, "1 Credit" )
  3016: 	PORT_DIPSETTING(      0x0800, "2 Credits" )
  3017: 	PORT_DIPNAME( 0x1000, 0x1000, "Winning Rounds (Player VS Player)" )
  3018: 	PORT_DIPSETTING(      0x0000, "1/1" )
  3019: 	PORT_DIPSETTING(      0x1000, "2/3" )
  3020: 	PORT_DIPNAME( 0x2000, 0x2000, "Allow Continue" )
  3021: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  3022: 	PORT_DIPSETTING(      0x2000, DEF_STR( Yes ) )
  3023: 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Demo_Sounds ) )
  3024: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
  3025: 	PORT_DIPSETTING(      0x4000, DEF_STR( On ) )
  3026: 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unused ) )
  3027: 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
  3028: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  3029: 
  3030: 	PORT_START	// IN3 - $c00006
  3031: 	PORT_BIT(  0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  3032: INPUT_PORTS_END
  3033: 
  3034: 
  3035: /***************************************************************************
  3036: 								Sankokushi
  3037: ***************************************************************************/
  3038: 
  3039: INPUT_PORTS_START( 3kokushi )
  3040: 	PORT_START	// IN0 - $c00000
  3041: 	COINS
  3042: 
  3043: 	PORT_START	// IN1 - $c00002
  3044: 	JOY_LSB(1, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)
  3045: 	JOY_MSB(2, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)
  3046: 
  3047: 	PORT_START	// IN2 - $c00004
  3048: 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) )
  3049: 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
  3050: 	PORT_DIPSETTING(      0x0001, DEF_STR( 2C_1C ) )
  3051: 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
  3052: 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
  3053: 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
  3054: 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
  3055: 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_5C ) )
  3056: 	PORT_DIPSETTING(      0x0002, DEF_STR( 1C_6C ) )
  3057: 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) )
  3058: 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
  3059: 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
  3060: 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
  3061: 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
  3062: 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
  3063: 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
  3064: 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_5C ) )
  3065: 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_6C ) )
  3066: 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) )
  3067: 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
  3068: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  3069: 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Demo_Sounds ) )
  3070: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
  3071: 	PORT_DIPSETTING(      0x0080, DEF_STR( On ) )
  3072: 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )		// Timer speed
  3073: 	PORT_DIPSETTING(      0x0200, "Easy" )				//   Slow
  3074: 	PORT_DIPSETTING(      0x0300, "Normal" )				//   Normal
  3075: 	PORT_DIPSETTING(      0x0100, "Hard" )				//   Fast
  3076: 	PORT_DIPSETTING(      0x0000, "Hardest" )				//   Fastest
  3077: 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unused ) )
  3078: 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
  3079: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  3080: 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unused ) )
  3081: 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
  3082: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  3083: 	PORT_DIPNAME( 0x1000, 0x1000, "Allow Continue" )
  3084: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  3085: 	PORT_DIPSETTING(      0x1000, DEF_STR( Yes ) )
  3086: 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Free_Play ) )
  3087: 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
  3088: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  3089: 	PORT_DIPNAME( 0xc000, 0xc000, "Helps" )
  3090: 	PORT_DIPSETTING(      0x0000, "1" )
  3091: 	PORT_DIPSETTING(      0x4000, "2" )
  3092: 	PORT_DIPSETTING(      0xc000, "3" )
  3093: 	PORT_DIPSETTING(      0x8000, "4" )
  3094: INPUT_PORTS_END
  3095: 
  3096: 
  3097: /***************************************************************************
  3098: 								Pururun
  3099: ***************************************************************************/
  3100: 
  3101: INPUT_PORTS_START( pururun )
  3102: 	PORT_START	// IN0 - $400000
  3103: 	COINS
  3104: 
  3105: 	PORT_START	// IN1 - $400002
  3106: 	JOY_LSB(1, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)		// BUTTON3 in "test mode" only
  3107: 	JOY_MSB(2, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)		// BUTTON3 in "test mode" only
  3108: 
  3109: 	PORT_START	// IN2 - $400004
  3110: 	COINAGE_DSW
  3111: 
  3112: 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )		// Distance to goal
  3113: 	PORT_DIPSETTING(      0x0200, "Easiest" )
  3114: 	PORT_DIPSETTING(      0x0100, "Easy" )
  3115: 	PORT_DIPSETTING(      0x0300, "Normal" )
  3116: 	PORT_DIPSETTING(      0x0000, "Hard" )
  3117: 	PORT_DIPNAME( 0x0400, 0x0400, "Join In" )
  3118: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  3119: 	PORT_DIPSETTING(      0x0400, DEF_STR( Yes ) )
  3120: 	PORT_DIPNAME( 0x0800, 0x0800, "2 Players Game" )
  3121: 	PORT_DIPSETTING(      0x0000, "1 Credit" )
  3122: 	PORT_DIPSETTING(      0x0800, "2 Credits" )
  3123: 	PORT_DIPNAME( 0x1000, 0x1000, "Bombs" )
  3124: 	PORT_DIPSETTING(      0x1000, "1" )
  3125: 	PORT_DIPSETTING(      0x0000, "2" )
  3126: 	PORT_DIPNAME( 0x2000, 0x2000, "Allow Continue" )
  3127: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  3128: 	PORT_DIPSETTING(      0x2000, DEF_STR( Yes ) )
  3129: 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Demo_Sounds ) )
  3130: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
  3131: 	PORT_DIPSETTING(      0x4000, DEF_STR( On ) )
  3132: 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unused ) )
  3133: 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
  3134: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  3135: 
  3136: 	PORT_START	// IN3 - $400006
  3137: 	PORT_BIT(  0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  3138: INPUT_PORTS_END
  3139: 
  3140: 
  3141: /***************************************************************************
  3142: 								Sky Alert
  3143: ***************************************************************************/
  3144: 
  3145: /* The game shows wrong values on screen for the "Bonus Life" Dip Switch !
  3146:    The wrong values are text which is stored at 0x02671a, and to determine
  3147:    which text to display, the routine at 0x0022f2 is called.
  3148:    The REAL "Bonus Life" table is stored at 0x0097f6, and to determine what
  3149:    are the values, the routine at 0x00974e is called.
  3150: 
  3151:    Here is the correspondance between real and fake values :
  3152: 
  3153:         Real         Fake
  3154:      100K, 400K   100K, 400K
  3155:      200K, 400K    50K, 300K
  3156:      200K         150K, 500K
  3157:        "none"       "none"
  3158: 
  3159: */
  3160: INPUT_PORTS_START( skyalert )
  3161: 	PORT_START	// IN0 - $400004
  3162: 	COINS
  3163: 
  3164: 	PORT_START	// IN1 - $400006
  3165: 	JOY_LSB(1, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)		// BUTTON3 in "test mode" only
  3166: 
  3167: 	PORT_START	// IN2 - $400008
  3168: 	JOY_LSB(2, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)		// BUTTON3 in "test mode" only
  3169: 
  3170: 	PORT_START	// IN3 - $40000a
  3171: 	COINAGE_DSW
  3172: 
  3173: 	PORT_START	// IN4 - $40000c
  3174: 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) )
  3175: 	PORT_DIPSETTING(      0x0002, "Easy" )
  3176: 	PORT_DIPSETTING(      0x0003, "Normal" )
  3177: 	PORT_DIPSETTING(      0x0001, "Hard" )
  3178: 	PORT_DIPSETTING(      0x0000, "Hardest" )
  3179: 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Lives ) )
  3180: 	PORT_DIPSETTING(      0x0008, "1" )
  3181: 	PORT_DIPSETTING(      0x0004, "2" )
  3182: 	PORT_DIPSETTING(      0x000c, "3" )
  3183: 	PORT_DIPSETTING(      0x0000, "4" )
  3184: 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Bonus_Life ) )		// See notes
  3185: 	PORT_DIPSETTING(      0x0030, "100K, every 400K" )
  3186: 	PORT_DIPSETTING(      0x0020, "200K, every 400K" )
  3187: 	PORT_DIPSETTING(      0x0010, "200K" )
  3188: 	PORT_DIPSETTING(      0x0000, "None" )
  3189: 	PORT_DIPNAME( 0x0040, 0x0040, "Allow Continue" )
  3190: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  3191: 	PORT_DIPSETTING(      0x0040, DEF_STR( Yes ) )
  3192: 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Demo_Sounds ) )
  3193: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
  3194: 	PORT_DIPSETTING(      0x0080, DEF_STR( On ) )
  3195: 
  3196: 	PORT_START	// IN5 - $40000e
  3197: 	PORT_BIT(  0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  3198: INPUT_PORTS_END
  3199: 
  3200: 
  3201: /***************************************************************************
  3202: 							Toride II Adauchi Gaiden
  3203: ***************************************************************************/
  3204: 
  3205: /* I don't really know HOW to describe the effect of IN2 bit 10.
  3206:    All I can tell is that is that it affects the levels which are
  3207:    proposed, but there is no evidence that one "table" is harder
  3208:    than another. */
  3209: INPUT_PORTS_START( toride2g )
  3210: 	PORT_START	// IN0 - $800000
  3211: 	COINS
  3212: 
  3213: 	PORT_START	// IN1 - $800002
  3214: 	JOY_LSB(1, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)		// BUTTON2 and BUTTON3 in "test mode" only
  3215: 	JOY_MSB(2, BUTTON1, UNKNOWN, UNKNOWN, UNKNOWN)		// BUTTON2 and BUTTON3 in "test mode" only
  3216: 
  3217: 	PORT_START	// IN2 - $800004
  3218: 	COINAGE_DSW
  3219: 
  3220: 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )
  3221: 	PORT_DIPSETTING(      0x0200, "Easy" )
  3222: 	PORT_DIPSETTING(      0x0300, "Normal" )
  3223: 	PORT_DIPSETTING(      0x0100, "Hard" )
  3224: 	PORT_DIPSETTING(      0x0000, "Hardest" )
  3225: 	PORT_DIPNAME( 0x0400, 0x0400, "Levels" )				// See notes
  3226: 	PORT_DIPSETTING(      0x0400, "Table 1" )
  3227: 	PORT_DIPSETTING(      0x0000, "Table 2" )
  3228: 	PORT_DIPNAME( 0x0800, 0x0000, "Retry Level On Continue" )
  3229: 	PORT_DIPSETTING(      0x0000, "Ask Player" )
  3230: 	PORT_DIPSETTING(      0x0800, DEF_STR( Yes ) )
  3231: 	PORT_DIPNAME( 0x1000, 0x1000, "2 Players Game" )
  3232: 	PORT_DIPSETTING(      0x1000, "2 Credits" )
  3233: 	PORT_DIPSETTING(      0x0000, "1 Credit" )
  3234: 	PORT_DIPNAME( 0x2000, 0x2000, "Allow Continue" )
  3235: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
  3236: 	PORT_DIPSETTING(      0x2000, DEF_STR( Yes ) )
  3237: 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Demo_Sounds ) )
  3238: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
  3239: 	PORT_DIPSETTING(      0x4000, DEF_STR( On ) )
  3240: 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unused ) )
  3241: 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
  3242: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
  3243: 
  3244: 	PORT_START	// IN3 - $800006
  3245: 	PORT_BIT(  0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )	// BIT 6 !?
  3246: INPUT_PORTS_END
  3247: 
  3248: 
  3249: 
  3250: /***************************************************************************
  3251: 
  3252: 
  3253: 							Graphics Layouts
  3254: 
  3255: 
  3256: ***************************************************************************/
  3257: 
  3258: 
  3259: /* 8x8x4 tiles */
  3260: static struct GfxLayout layout_8x8x4 =
  3261: {
  3262: 	8,8,
  3263: 	RGN_FRAC(1,1),
  3264: 	4,
  3265: 	{ GFX_RAW },
  3266: 	{ 0 },		/* org displacement */
  3267: 	{ 4*8 },	/* line modulo */
  3268: 	32*8		/* char modulo */
  3269: };
  3270: 
  3271: /* 8x8x8 tiles for later games */
  3272: static struct GfxLayout layout_8x8x8h =
  3273: {
  3274: 	8,8,
  3275: 	RGN_FRAC(1,1),
  3276: 	8,
  3277: 	{ GFX_RAW },
  3278: 	{ 0 },		/* org displacement */
  3279: 	{ 8*8 },	/* line modulo */
  3280: 	32*8		/* char modulo (half char step) */
  3281: };
  3282: 
  3283: /* 16x16x4 tiles for later games */
  3284: static struct GfxLayout layout_16x16x4q =
  3285: {
  3286: 	16,16,
  3287: 	RGN_FRAC(1,1),
  3288: 	4,
  3289: 	{ GFX_RAW },
  3290: 	{ 0 },		/* org displacement */
  3291: 	{ 8*8 },	/* line modulo */
  3292: 	32*8		/* char modulo (quarter char step) */
  3293: };
  3294: 
  3295: /* 16x16x8 tiles for later games */
  3296: static struct GfxLayout layout_16x16x8o =
  3297: {
  3298: 	16,16,
  3299: 	RGN_FRAC(1,1),
  3300: 	8,
  3301: 	{ GFX_RAW },
  3302: 	{ 0 },		/* org displacement */
  3303: 	{ 16*8 },	/* line modulo */
  3304: 	32*8		/* char modulo (1/8th char step) */
  3305: };
  3306: 
  3307: static struct GfxLayout layout_053936 =
  3308: {
  3309: 	8,8,
  3310: 	RGN_FRAC(1,1),
  3311: 	8,
  3312: 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
  3313: 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  3314: 	{ 0*8*8, 1*8*8, 2*8*8, 3*8*8, 4*8*8, 5*8*8, 6*8*8, 7*8*8 },
  3315: 	8*8*8
  3316: };
  3317: 
  3318: static struct GfxDecodeInfo gfxdecodeinfo_14100[] =
  3319: {
  3320: 	{ REGION_GFX1, 0, &layout_8x8x4,    0x0, 0x200 }, // [0] 4 Bit Tiles
  3321: 	{ -1 }
  3322: };
  3323: 
  3324: static struct GfxDecodeInfo gfxdecodeinfo_14220[] =
  3325: {
  3326: 	{ REGION_GFX1, 0, &layout_8x8x4,    0x0, 0x200 }, // [0] 4 Bit Tiles
  3327: 	{ REGION_GFX1, 0, &layout_8x8x8h,   0x0,  0x20 }, // [1] 8 Bit Tiles
  3328: 	{ -1 }
  3329: };
  3330: 
  3331: static struct GfxDecodeInfo gfxdecodeinfo_blzntrnd[] =
  3332: {
  3333: 	{ REGION_GFX1, 0, &layout_8x8x4,    0x0, 0x200 }, // [0] 4 Bit Tiles
  3334: 	{ REGION_GFX1, 0, &layout_8x8x8h,   0x0,  0x20 }, // [1] 8 Bit Tiles
  3335: 	{ REGION_GFX3, 0, &layout_053936,   0x0,  0x20 }, // [2] 053936 Tiles
  3336: 	{ -1 }
  3337: };
  3338: 
  3339: static struct GfxDecodeInfo gfxdecodeinfo_14300[] =
  3340: {
  3341: 	{ REGION_GFX1, 0, &layout_8x8x4,    0x0, 0x200 }, // [0] 4 Bit Tiles
  3342: 	{ REGION_GFX1, 0, &layout_8x8x8h,   0x0,  0x20 }, // [1] 8 Bit Tiles
  3343: 	{ REGION_GFX1, 0, &layout_16x16x4q, 0x0, 0x200 }, // [2] 4 Bit Tiles 16x16
  3344: 	{ REGION_GFX1, 0, &layout_16x16x8o, 0x0, 0x200 }, // [2] 8 Bit Tiles 16x16
  3345: 	{ -1 }
  3346: };
  3347: 
  3348: 
  3349: /***************************************************************************
  3350: 
  3351: 
  3352: 								Machine Drivers
  3353: 
  3354: 
  3355: ***************************************************************************/
  3356: 
  3357: static MACHINE_DRIVER_START( balcube )
  3358: 
  3359: 	/* basic machine hardware */
  3360: 	MDRV_CPU_ADD(M68000, 16000000)
  3361: 	MDRV_CPU_MEMORY(balcube_readmem,balcube_writemem)
  3362: 	MDRV_CPU_VBLANK_INT(metro_interrupt,10)	/* ? */
  3363: 
  3364: 	MDRV_FRAMES_PER_SECOND(60)
  3365: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3366: 
  3367: 	MDRV_MACHINE_INIT(metro)
  3368: 
  3369: 	/* video hardware */
  3370: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3371: 	MDRV_SCREEN_SIZE(320, 224)
  3372: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 224-1)
  3373: 	MDRV_GFXDECODE(gfxdecodeinfo_14220)
  3374: 	MDRV_PALETTE_LENGTH(8192)
  3375: 
  3376: 	MDRV_VIDEO_START(metro_14220)
  3377: 	MDRV_VIDEO_UPDATE(metro)
  3378: 
  3379: 	/* sound hardware */
  3380: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3381: 	MDRV_SOUND_ADD(YMF278B, ymf278b_interface)
  3382: MACHINE_DRIVER_END
  3383: 
  3384: 
  3385: static MACHINE_DRIVER_START( bangball )
  3386: 
  3387: 	/* basic machine hardware */
  3388: 	MDRV_CPU_ADD(M68000, 16000000)
  3389: 	MDRV_CPU_MEMORY(bangball_readmem,bangball_writemem)
  3390: 	MDRV_CPU_VBLANK_INT(bangball_interrupt,1)
  3391: 
  3392: 	MDRV_FRAMES_PER_SECOND(60)
  3393: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3394: 
  3395: 	MDRV_MACHINE_INIT(metro)
  3396: 
  3397: 	/* video hardware */
  3398: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3399: 	MDRV_SCREEN_SIZE(320, 224)
  3400: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 224-1)
  3401: 	MDRV_GFXDECODE(gfxdecodeinfo_14220)
  3402: 	MDRV_PALETTE_LENGTH(8192)
  3403: 
  3404: 	MDRV_VIDEO_START(metro_14220)
  3405: 	MDRV_VIDEO_UPDATE(metro)
  3406: 
  3407: 	/* sound hardware */
  3408: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3409: 	MDRV_SOUND_ADD(YMF278B, ymf278b_interface)
  3410: MACHINE_DRIVER_END
  3411: 
  3412: 
  3413: #ifdef TEST_SOUND 
  3414: 
  3415: UPD7810_CONFIG metro_cpu_config =
  3416: {
  3417:     TYPE_7810,
  3418:     metro_io_callback
  3419: };
  3420: 
  3421: #endif 
  3422: 
  3423: 
  3424: static MACHINE_DRIVER_START( daitorid )
  3425: 
  3426: 	/* basic machine hardware */
  3427: 	MDRV_CPU_ADD(M68000, 16000000)
  3428: 	MDRV_CPU_MEMORY(daitorid_readmem,daitorid_writemem)
  3429: 	MDRV_CPU_VBLANK_INT(metro_interrupt,10)	/* ? */
  3430: 
  3431: #ifdef TEST_SOUND 
  3432: 	MDRV_CPU_ADD(UPD7810, 12000000)
  3433: 	MDRV_CPU_CONFIG(metro_cpu_config)
  3434: 	MDRV_CPU_MEMORY(upd7810_readmem,upd7810_writemem)
  3435: 	MDRV_CPU_PORTS(upd7810_readport,upd7810_writeport)
  3436: #endif 
  3437: 
  3438: 	MDRV_FRAMES_PER_SECOND(60)
  3439: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3440: 
  3441: 	MDRV_MACHINE_INIT(metro)
  3442: 
  3443: 	/* video hardware */
  3444: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3445: 	MDRV_SCREEN_SIZE(320, 224)
  3446: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 224-1)
  3447: 	MDRV_GFXDECODE(gfxdecodeinfo_14220)
  3448: 	MDRV_PALETTE_LENGTH(8192)
  3449: 
  3450: 	MDRV_VIDEO_START(metro_14220)
  3451: 	MDRV_VIDEO_UPDATE(metro)
  3452: 
  3453: 	/* sound hardware */
  3454: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3455: #ifdef TEST_SOUND 
  3456: 	MDRV_SOUND_ADD(YM2151, daitorid_ym2151_interface)
  3457: 	MDRV_SOUND_ADD(OKIM6295, okim6295_intf_8kHz) /* wrong */
  3458: #endif 
  3459: MACHINE_DRIVER_END
  3460: 
  3461: 
  3462: static MACHINE_DRIVER_START( dharma )
  3463: 
  3464: 	/* basic machine hardware */
  3465: 	MDRV_CPU_ADD(M68000, 12000000)
  3466: 	MDRV_CPU_MEMORY(dharma_readmem,dharma_writemem)
  3467: 	MDRV_CPU_VBLANK_INT(metro_interrupt,10)	/* ? */
  3468: 
  3469: 	/* Sound CPU is unemulated */
  3470: 
  3471: 	MDRV_FRAMES_PER_SECOND(60)
  3472: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3473: 
  3474: 	MDRV_MACHINE_INIT(metro)
  3475: 
  3476: 	/* video hardware */
  3477: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3478: 	MDRV_SCREEN_SIZE(320, 224)
  3479: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 224-1)
  3480: 	MDRV_GFXDECODE(gfxdecodeinfo_14100)
  3481: 	MDRV_PALETTE_LENGTH(8192)
  3482: 
  3483: 	MDRV_VIDEO_START(metro_14100)
  3484: 	MDRV_VIDEO_UPDATE(metro)
  3485: 
  3486: 	/* sound hardware */
  3487: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3488: 	// M6295
  3489: MACHINE_DRIVER_END
  3490: 
  3491: 
  3492: static MACHINE_DRIVER_START( karatour )
  3493: 
  3494: 	/* basic machine hardware */
  3495: 	MDRV_CPU_ADD(M68000, 12000000)
  3496: 	MDRV_CPU_MEMORY(karatour_readmem,karatour_writemem)
  3497: 	MDRV_CPU_VBLANK_INT(karatour_interrupt,10)	/* ? */
  3498: 
  3499: 	/* Sound CPU is unemulated */
  3500: 
  3501: 	MDRV_FRAMES_PER_SECOND(60)
  3502: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3503: 
  3504: 	MDRV_MACHINE_INIT(metro)
  3505: 
  3506: 	/* video hardware */
  3507: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3508: 	MDRV_SCREEN_SIZE(320, 240)
  3509: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 240-1)
  3510: 	MDRV_GFXDECODE(gfxdecodeinfo_14100)
  3511: 	MDRV_PALETTE_LENGTH(8192)
  3512: 
  3513: 	MDRV_VIDEO_START(metro_14100)
  3514: 	MDRV_VIDEO_UPDATE(metro)
  3515: 
  3516: 	/* sound hardware */
  3517: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3518: 	// M6295, YM2413
  3519: MACHINE_DRIVER_END
  3520: 
  3521: 
  3522: static MACHINE_DRIVER_START( 3kokushi )
  3523: 
  3524: 	/* basic machine hardware */
  3525: 	MDRV_CPU_ADD(M68000, 12000000)
  3526: 	MDRV_CPU_MEMORY(kokushi_readmem,kokushi_writemem)
  3527: 	MDRV_CPU_VBLANK_INT(karatour_interrupt,10)	/* ? */
  3528: 
  3529: 	/* Sound CPU is unemulated */
  3530: 
  3531: 	MDRV_FRAMES_PER_SECOND(60)
  3532: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3533: 
  3534: 	MDRV_MACHINE_INIT(metro)
  3535: 
  3536: 	/* video hardware */
  3537: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3538: 	MDRV_SCREEN_SIZE(320, 240)
  3539: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 240-1)
  3540: 	MDRV_GFXDECODE(gfxdecodeinfo_14220)
  3541: 	MDRV_PALETTE_LENGTH(8192)
  3542: 
  3543: 	MDRV_VIDEO_START(metro_14220)
  3544: 	MDRV_VIDEO_UPDATE(metro)
  3545: 
  3546: 	/* sound hardware */
  3547: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3548: 	// M6295, YM2413
  3549: MACHINE_DRIVER_END
  3550: 
  3551: 
  3552: static MACHINE_DRIVER_START( lastfort )
  3553: 
  3554: 	/* basic machine hardware */
  3555: 	MDRV_CPU_ADD(M68000, 12000000)
  3556: 	MDRV_CPU_MEMORY(lastfort_readmem,lastfort_writemem)
  3557: 	MDRV_CPU_VBLANK_INT(metro_interrupt,10)	/* ? */
  3558: 
  3559: 	/* Sound CPU is unemulated */
  3560: 
  3561: 	MDRV_FRAMES_PER_SECOND(60)
  3562: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3563: 
  3564: 	MDRV_MACHINE_INIT(metro)
  3565: 
  3566: 	/* video hardware */
  3567: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3568: 	MDRV_SCREEN_SIZE(360, 224)
  3569: 	MDRV_VISIBLE_AREA(0, 360-1, 0, 224-1)
  3570: 	MDRV_GFXDECODE(gfxdecodeinfo_14100)
  3571: 	MDRV_PALETTE_LENGTH(8192)
  3572: 
  3573: 	MDRV_VIDEO_START(metro_14100)
  3574: 	MDRV_VIDEO_UPDATE(metro)
  3575: 
  3576: 	/* sound hardware */
  3577: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3578: 	// M6295, YM2413
  3579: MACHINE_DRIVER_END
  3580: 
  3581: 
  3582: static MACHINE_DRIVER_START( dokyusei )
  3583: 
  3584: 	/* basic machine hardware */
  3585: 	MDRV_CPU_ADD(M68000, 16000000)
  3586: 	MDRV_CPU_MEMORY(dokyusei_readmem,dokyusei_writemem)
  3587: 	MDRV_CPU_VBLANK_INT(dokyusei_interrupt,2)	/* ? */
  3588: 
  3589: 	MDRV_FRAMES_PER_SECOND(60)
  3590: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3591: 
  3592: 	MDRV_MACHINE_INIT(metro)
  3593: 
  3594: 	/* video hardware */
  3595: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3596: 	MDRV_SCREEN_SIZE(320, 256-32)
  3597: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
  3598: 	MDRV_GFXDECODE(gfxdecodeinfo_14300)
  3599: 	MDRV_PALETTE_LENGTH(8192)
  3600: 
  3601: 	MDRV_VIDEO_START(metro_14300)
  3602: 	MDRV_VIDEO_UPDATE(metro)
  3603: 
  3604: 	/* sound hardware */
  3605: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3606: 	MDRV_SOUND_ADD(OKIM6295, okim6295_intf_8kHz)
  3607: 	MDRV_SOUND_ADD(YM2413, ym2413_intf_8MHz)
  3608: MACHINE_DRIVER_END
  3609: 
  3610: NVRAM_HANDLER( dokyusp )
  3611: {
  3612: 	data8_t def_data[] = {0x00,0xe0};
  3613: 
  3614: 	if (read_or_write)
  3615: 		EEPROM_save(file);
  3616: 	else
  3617: 	{
  3618: 		EEPROM_init(&eeprom_interface_93C46);
  3619: 		if (file)	EEPROM_load(file);
  3620: 		else		EEPROM_set_data(def_data,sizeof(def_data)/sizeof(def_data[0]));
  3621: 	}
  3622: }
  3623: 
  3624: static MACHINE_DRIVER_START( dokyusp )
  3625: 
  3626: 	/* basic machine hardware */
  3627: 	MDRV_CPU_ADD(M68000, 16000000)
  3628: 	MDRV_CPU_MEMORY(dokyusp_readmem,dokyusp_writemem)
  3629: 	MDRV_CPU_VBLANK_INT(gakusai_interrupt,1)
  3630: 
  3631: 	MDRV_FRAMES_PER_SECOND(60)
  3632: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3633: 
  3634: 	MDRV_MACHINE_INIT(metro)
  3635: 	MDRV_NVRAM_HANDLER(dokyusp)
  3636: 
  3637: 	/* video hardware */
  3638: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3639: 	MDRV_SCREEN_SIZE(384, 256-32)
  3640: 	MDRV_VISIBLE_AREA(0, 384-1, 0, 256-32-1)
  3641: 	MDRV_GFXDECODE(gfxdecodeinfo_14300)
  3642: 	MDRV_PALETTE_LENGTH(8192)
  3643: 
  3644: 	MDRV_VIDEO_START(metro_14300)
  3645: 	MDRV_VIDEO_UPDATE(metro)
  3646: 
  3647: 	/* sound hardware */
  3648: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3649: 	MDRV_SOUND_ADD(OKIM6295, okim6295_intf_16kHz)
  3650: 	MDRV_SOUND_ADD(YM2413, ym2413_intf_8MHz)
  3651: MACHINE_DRIVER_END
  3652: 
  3653: 
  3654: static MACHINE_DRIVER_START( gakusai )
  3655: 
  3656: 	/* basic machine hardware */
  3657: 	MDRV_CPU_ADD(M68000, 16000000)
  3658: 	MDRV_CPU_MEMORY(gakusai_readmem,gakusai_writemem)
  3659: 	MDRV_CPU_VBLANK_INT(gakusai_interrupt,1)
  3660: 
  3661: 	MDRV_FRAMES_PER_SECOND(60)
  3662: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3663: 
  3664: 	MDRV_MACHINE_INIT(metro)
  3665: 	MDRV_NVRAM_HANDLER(93C46)
  3666: 
  3667: 	/* video hardware */
  3668: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3669: 	MDRV_SCREEN_SIZE(320, 240)
  3670: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 240-1)
  3671: 	MDRV_GFXDECODE(gfxdecodeinfo_14300)
  3672: 	MDRV_PALETTE_LENGTH(8192)
  3673: 
  3674: 	MDRV_VIDEO_START(metro_14300)
  3675: 	MDRV_VIDEO_UPDATE(metro)
  3676: 
  3677: 	/* sound hardware */
  3678: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3679: 	MDRV_SOUND_ADD(OKIM6295, okim6295_intf_16kHz)
  3680: 	MDRV_SOUND_ADD(YM2413, ym2413_intf_8MHz)
  3681: MACHINE_DRIVER_END
  3682: 
  3683: 
  3684: static MACHINE_DRIVER_START( gakusai2 )
  3685: 
  3686: 	/* basic machine hardware */
  3687: 	MDRV_CPU_ADD(M68000, 16000000)
  3688: 	MDRV_CPU_MEMORY(gakusai2_readmem,gakusai2_writemem)
  3689: 	MDRV_CPU_VBLANK_INT(gakusai_interrupt,1)
  3690: 
  3691: 	MDRV_FRAMES_PER_SECOND(60)
  3692: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3693: 
  3694: 	MDRV_MACHINE_INIT(metro)
  3695: 	MDRV_NVRAM_HANDLER(93C46)
  3696: 
  3697: 	/* video hardware */
  3698: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3699: 	MDRV_SCREEN_SIZE(320, 240)
  3700: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 240-1)
  3701: 	MDRV_GFXDECODE(gfxdecodeinfo_14300)
  3702: 	MDRV_PALETTE_LENGTH(8192)
  3703: 
  3704: 	MDRV_VIDEO_START(metro_14300)
  3705: 	MDRV_VIDEO_UPDATE(metro)
  3706: 
  3707: 	/* sound hardware */
  3708: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3709: 	MDRV_SOUND_ADD(OKIM6295, okim6295_intf_16kHz)
  3710: 	MDRV_SOUND_ADD(YM2413, ym2413_intf_8MHz)
  3711: MACHINE_DRIVER_END
  3712: 
  3713: 
  3714: static MACHINE_DRIVER_START( pangpoms )
  3715: 
  3716: 	/* basic machine hardware */
  3717: 	MDRV_CPU_ADD(M68000, 12000000)
  3718: 	MDRV_CPU_MEMORY(pangpoms_readmem,pangpoms_writemem)
  3719: 	MDRV_CPU_VBLANK_INT(metro_interrupt,10)	/* ? */
  3720: 
  3721: 	/* Sound CPU is unemulated */
  3722: 
  3723: 	MDRV_FRAMES_PER_SECOND(60)
  3724: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3725: 
  3726: 	MDRV_MACHINE_INIT(metro)
  3727: 
  3728: 	/* video hardware */
  3729: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3730: 	MDRV_SCREEN_SIZE(360, 224)
  3731: 	MDRV_VISIBLE_AREA(0, 360-1, 0, 224-1)
  3732: 	MDRV_GFXDECODE(gfxdecodeinfo_14100)
  3733: 	MDRV_PALETTE_LENGTH(8192)
  3734: 
  3735: 	MDRV_VIDEO_START(metro_14100)
  3736: 	MDRV_VIDEO_UPDATE(metro)
  3737: 
  3738: 	/* sound hardware */
  3739: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3740: 	// M6295, YM2413
  3741: MACHINE_DRIVER_END
  3742: 
  3743: 
  3744: static MACHINE_DRIVER_START( poitto )
  3745: 
  3746: 	/* basic machine hardware */
  3747: 	MDRV_CPU_ADD(M68000, 12000000)
  3748: 	MDRV_CPU_MEMORY(poitto_readmem,poitto_writemem)
  3749: 	MDRV_CPU_VBLANK_INT(metro_interrupt,10)	/* ? */
  3750: 
  3751: 	/* Sound CPU is unemulated */
  3752: 
  3753: 	MDRV_FRAMES_PER_SECOND(60)
  3754: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3755: 
  3756: 	MDRV_MACHINE_INIT(metro)
  3757: 
  3758: 	/* video hardware */
  3759: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3760: 	MDRV_SCREEN_SIZE(360, 224)
  3761: 	MDRV_VISIBLE_AREA(0, 360-1, 0, 224-1)
  3762: 	MDRV_GFXDECODE(gfxdecodeinfo_14100)
  3763: 	MDRV_PALETTE_LENGTH(8192)
  3764: 
  3765: 	MDRV_VIDEO_START(metro_14100)
  3766: 	MDRV_VIDEO_UPDATE(metro)
  3767: 
  3768: 	/* sound hardware */
  3769: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3770: 	// M6295, YM2413
  3771: MACHINE_DRIVER_END
  3772: 
  3773: 
  3774: static MACHINE_DRIVER_START( pururun )
  3775: 
  3776: 	/* basic machine hardware */
  3777: 	MDRV_CPU_ADD(M68000, 12000000)
  3778: 	MDRV_CPU_MEMORY(pururun_readmem,pururun_writemem)
  3779: 	MDRV_CPU_VBLANK_INT(metro_interrupt,10)	/* ? */
  3780: 
  3781: 	/* Sound CPU is unemulated */
  3782: 
  3783: 	MDRV_FRAMES_PER_SECOND(60)
  3784: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3785: 
  3786: 	MDRV_MACHINE_INIT(metro)
  3787: 
  3788: 	/* video hardware */
  3789: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3790: 	MDRV_SCREEN_SIZE(320, 224)
  3791: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 224-1)
  3792: 	MDRV_GFXDECODE(gfxdecodeinfo_14100)
  3793: 	MDRV_PALETTE_LENGTH(8192)
  3794: 
  3795: 	MDRV_VIDEO_START(metro_14100)
  3796: 	MDRV_VIDEO_UPDATE(metro)
  3797: 
  3798: 	/* sound hardware */
  3799: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3800: 	// M6295, YM2151, Y3012
  3801: MACHINE_DRIVER_END
  3802: 
  3803: 
  3804: static MACHINE_DRIVER_START( skyalert )
  3805: 
  3806: 	/* basic machine hardware */
  3807: 	MDRV_CPU_ADD(M68000, 12000000)
  3808: 	MDRV_CPU_MEMORY(skyalert_readmem,skyalert_writemem)
  3809: 	MDRV_CPU_VBLANK_INT(metro_interrupt,10)	/* ? */
  3810: 
  3811: 	/* Sound CPU is unemulated */
  3812: 
  3813: 	MDRV_FRAMES_PER_SECOND(60)
  3814: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3815: 
  3816: 	MDRV_MACHINE_INIT(metro)
  3817: 
  3818: 	/* video hardware */
  3819: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3820: 	MDRV_SCREEN_SIZE(360, 224)
  3821: 	MDRV_VISIBLE_AREA(0, 360-1, 0, 224-1)
  3822: 	MDRV_GFXDECODE(gfxdecodeinfo_14100)
  3823: 	MDRV_PALETTE_LENGTH(8192)
  3824: 
  3825: 	MDRV_VIDEO_START(metro_14100)
  3826: 	MDRV_VIDEO_UPDATE(metro)
  3827: 
  3828: 	/* sound hardware */
  3829: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3830: 	// M6295, YM2413
  3831: MACHINE_DRIVER_END
  3832: 
  3833: 
  3834: static MACHINE_DRIVER_START( toride2g )
  3835: 
  3836: 	/* basic machine hardware */
  3837: 	MDRV_CPU_ADD(M68000, 12000000)
  3838: 	MDRV_CPU_MEMORY(toride2g_readmem,toride2g_writemem)
  3839: 	MDRV_CPU_VBLANK_INT(metro_interrupt,10)	/* ? */
  3840: 
  3841: 	/* Sound CPU is unemulated */
  3842: 
  3843: 	MDRV_FRAMES_PER_SECOND(60)
  3844: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3845: 
  3846: 	MDRV_MACHINE_INIT(metro)
  3847: 
  3848: 	/* video hardware */
  3849: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3850: 	MDRV_SCREEN_SIZE(320, 224)
  3851: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 224-1)
  3852: 	MDRV_GFXDECODE(gfxdecodeinfo_14100)
  3853: 	MDRV_PALETTE_LENGTH(8192)
  3854: 
  3855: 	MDRV_VIDEO_START(metro_14100)
  3856: 	MDRV_VIDEO_UPDATE(metro)
  3857: 
  3858: 	/* sound hardware */
  3859: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3860: 	// M6295, YM2413
  3861: MACHINE_DRIVER_END
  3862: 
  3863: 
  3864: static MACHINE_DRIVER_START( mouja )
  3865: 
  3866: 	/* basic machine hardware */
  3867: 	MDRV_CPU_ADD(M68000, 12000000)	/* ??? */
  3868: 	MDRV_CPU_MEMORY(mouja_readmem,mouja_writemem)
  3869: 	MDRV_CPU_VBLANK_INT(mouja_interrupt,2)	/* ? */
  3870: 
  3871: 	MDRV_FRAMES_PER_SECOND(60)
  3872: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3873: 
  3874: 	MDRV_MACHINE_INIT(metro)
  3875: 
  3876: 	/* video hardware */
  3877: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3878: 	MDRV_SCREEN_SIZE(512, 256)
  3879: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 224-1)
  3880: 	MDRV_GFXDECODE(gfxdecodeinfo_14300)
  3881: 	MDRV_PALETTE_LENGTH(8192)
  3882: 
  3883: 	MDRV_VIDEO_START(metro_14300)
  3884: 	MDRV_VIDEO_UPDATE(metro)
  3885: 
  3886: 	/* sound hardware */
  3887: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3888: 	MDRV_SOUND_ADD(OKIM6295, okim6295_intf_12kHz)
  3889: 	MDRV_SOUND_ADD(YM2413, ym2413_intf_8MHz)
  3890: MACHINE_DRIVER_END
  3891: 
  3892: 
  3893: static MACHINE_DRIVER_START( blzntrnd )
  3894: 
  3895: 	/* basic machine hardware */
  3896: 	MDRV_CPU_ADD(M68000, 16000000)
  3897: 	MDRV_CPU_MEMORY(blzntrnd_readmem,blzntrnd_writemem)
  3898: 	MDRV_CPU_VBLANK_INT(karatour_interrupt,10)	/* ? */
  3899: 
  3900: 	MDRV_CPU_ADD(Z80, 8000000)
  3901: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
  3902: 	MDRV_CPU_MEMORY(blzntrnd_sound_readmem, blzntrnd_sound_writemem)
  3903: 	MDRV_CPU_PORTS(blzntrnd_sound_readport, blzntrnd_sound_writeport)
  3904: 
  3905: 	MDRV_FRAMES_PER_SECOND(60)
  3906: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
  3907: 
  3908: 	MDRV_MACHINE_INIT(metro)
  3909: 
  3910: 	/* video hardware */
  3911: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
  3912: 	MDRV_SCREEN_SIZE(320, 224)
  3913: 	MDRV_VISIBLE_AREA(8, 320-8-1, 0, 224-1)
  3914: 	MDRV_GFXDECODE(gfxdecodeinfo_blzntrnd)
  3915: 	MDRV_PALETTE_LENGTH(8192)
  3916: 
  3917: 	MDRV_VIDEO_START(blzntrnd)
  3918: 	MDRV_VIDEO_UPDATE(metro)
  3919: 
  3920: 	/* sound hardware */
  3921: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  3922: 	MDRV_SOUND_ADD(YM2610, blzntrnd_ym2610_interface)
  3923: MACHINE_DRIVER_END
  3924: 
  3925: 
  3926: 
  3927: /***************************************************************************
  3928: 
  3929: 
  3930: 								ROMs Loading
  3931: 
  3932: 
  3933: ***************************************************************************/
  3934: 
  3935: static DRIVER_INIT( metro )
  3936: {
  3937: 	int i;
  3938: 
  3939: 	/*
  3940: 	  Tiles can be either 4-bit or 8-bit, and both depths can be used at the same
  3941: 	  time. The transparent pen is the last one, that is 15 or 255. To make
  3942: 	  tilemap.c handle that, we invert gfx data so the transparent pen becomes 0
  3943: 	  for both tile depths.
  3944: 	*/
  3945: 	for (i = 0;i < memory_region_length(REGION_GFX1);i++)
  3946: 		memory_region(REGION_GFX1)[i] ^= 0xff;
  3947: 
  3948: 	if (memory_region(REGION_GFX3))	/* blzntrnd */
  3949: 		for (i = 0;i < memory_region_length(REGION_GFX3);i++)
  3950: 			memory_region(REGION_GFX3)[i] ^= 0xff;
  3951: 
  3952: 	requested_int[0] = 0;
  3953: 	requested_int[1] = 0;
  3954: 	requested_int[2] = 0;
  3955: 	requested_int[3] = 0;
  3956: 	requested_int[4] = 0;
  3957: 	requested_int[5] = 0;
  3958: 	requested_int[6] = 0;
  3959: 	requested_int[7] = 0;
  3960: 
  3961: 	irq_line	=	2;
  3962: 
  3963: 	blitter_bit	=	2;
  3964: 
  3965: 	*metro_irq_enable = 0;
  3966: }
  3967: 
  3968: 
  3969: DRIVER_INIT( karatour )
  3970: {
  3971: 	data16_t *RAM = (data16_t *) memory_region( REGION_USER1 );
  3972: int i;
  3973: 	metro_vram_0 = RAM + (0x20000/2) * 0;
  3974: 	metro_vram_1 = RAM + (0x20000/2) * 1;
  3975: 	metro_vram_2 = RAM + (0x20000/2) * 2;
  3976: for (i = 0;i < memory_region_length(REGION_USER1)/2;i++)
  3977: 	RAM[i] = rand();
  3978: 	init_metro();
  3979: }
  3980: 
  3981: /* Unscramble the GFX ROMs */
  3982: static DRIVER_INIT( balcube )
  3983: {
  3984: 	const int region	=	REGION_GFX1;
  3985: 
  3986: 	const size_t len	=	memory_region_length(region);
  3987: 	data8_t *src		=	memory_region(region);
  3988: 	data8_t *end		=	memory_region(region) + len;
  3989: 
  3990: 	while(src < end)
  3991: 	{
  3992: 		const unsigned char scramble[16] =
  3993: 		 { 0x0,0x8,0x4,0xc,0x2,0xa,0x6,0xe,0x1,0x9,0x5,0xd,0x3,0xb,0x7,0xf };
  3994: 
  3995: 		unsigned char data;
  3996: 
  3997: 		data  =  *src;
  3998: 		*src  =  (scramble[data & 0xF] << 4) | scramble[data >> 4];
  3999: 		src  +=  2;
  4000: 	}
  4001: 
  4002: 	init_metro();
  4003: 	irq_line = 1;
  4004: }
  4005: 
  4006: 
  4007: static DRIVER_INIT( blzntrnd )
  4008: {
  4009: 	init_metro();
  4010: 	irq_line = 1;
  4011: }
  4012: 
  4013: 
  4014: static DRIVER_INIT( mouja )
  4015: {
  4016: 	init_metro();
  4017: 	irq_line = -1;	/* split interrupt handlers */
  4018: }
  4019: 
  4020: static DRIVER_INIT( gakusai )
  4021: {
  4022: 	init_metro();
  4023: 	irq_line = -1;
  4024: 	blitter_bit = 3;
  4025: }
  4026: 
  4027: /***************************************************************************
  4028: 
  4029: Bal Cube
  4030: Metro 1996
  4031: 
  4032:             7                             1
  4033:             YRW801-M                      2
  4034:    33.369MHz YMF278B                      3
  4035:                                           4
  4036: 
  4037: 
  4038: 
  4039:                      16MHz           Imagetek
  4040:                 6     5              14220
  4041:                 84256 84256
  4042:                 68000-16                 52258-20  61C640-20
  4043:                              26.666MHz   52258-20
  4044: 
  4045: ***************************************************************************/
  4046: 
  4047: ROM_START( balcube )
  4048: 	ROM_REGION( 0x080000, REGION_CPU1, 0 )		/* 68000 Code */
  4049: 	ROM_LOAD16_BYTE( "6", 0x000000, 0x040000, CRC(c400f84d) SHA1(416eb82ec1201d24d9d964191a5a1792c9445923) )
  4050: 	ROM_LOAD16_BYTE( "5", 0x000001, 0x040000, CRC(15313e3f) SHA1(10a8702016f223194dc91875b4736253fd47dbb8) )
  4051: 
  4052: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4053: 	ROMX_LOAD( "2", 0x000000, 0x080000, CRC(492ca8f0) SHA1(478336a462a2bfc288cf91262314f5767f8c707d) , ROM_GROUPWORD | ROM_SKIP(6))
  4054: 	ROMX_LOAD( "4", 0x000002, 0x080000, CRC(d1acda2c) SHA1(f58015302af6c864523d48bdf8f8a4383b69fa9d) , ROM_GROUPWORD | ROM_SKIP(6))
  4055: 	ROMX_LOAD( "1", 0x000004, 0x080000, CRC(0ea3d161) SHA1(63ae430a19e777ce82b41ab02baef3bb224c7557) , ROM_GROUPWORD | ROM_SKIP(6))
  4056: 	ROMX_LOAD( "3", 0x000006, 0x080000, CRC(eef1d3b4) SHA1(be535963c00390e34a2305586397a16325f3c3c0) , ROM_GROUPWORD | ROM_SKIP(6))
  4057: 
  4058: 	ROM_REGION( 0x280000, REGION_SOUND1, ROMREGION_SOUNDONLY )
  4059: 	ROM_LOAD( "yrw801-m", 0x000000, 0x200000, CRC(2a9d8d43) SHA1(32760893ce06dbe3930627755ba065cc3d8ec6ca) )	    // Yamaha YRW801 2MB ROM with samples for the OPL4.
  4060: 	ROM_LOAD( "7",        0x200000, 0x080000, CRC(f769287d) SHA1(dd0f781b4a1a1fd6bf0a50048b4996f3cf41e155) )	    // PCM 16 Bit (Signed)
  4061: ROM_END
  4062: 
  4063: 
  4064: /***************************************************************************
  4065: 
  4066: Bang Bang Ball
  4067: (c)1996 Banpresto/Kunihiko Tashiro/Goodhouse
  4068: 
  4069: CPU  : TMP68HC000P-16
  4070: Sound: YAMAHA OPL YMF278B-F
  4071: OSC  : 16.0000MHz (OSC1) 26.6660MHz (OSC2) 33.869?MHz (OSC3)
  4072: 
  4073: ROMs:
  4074: rom#005.u19 - Main programs (27c020)
  4075: rom#006.u18 /
  4076: 
  4077: rom#007.u49 - Sound samples (27c040)
  4078: yrw801-m.u52 - Wave data ROM (44pin SOP 16M mask (LH537019))
  4079: 
  4080: bp963a.u27 - Graphics (mask, read as 27c800)
  4081: bp963a.u28 |
  4082: bp963a.u29 |
  4083: bp963a.u30 /
  4084: 
  4085: PLD:
  4086: ALTERA EPM7032LC44-15T D9522
  4087: 
  4088: Custom chip:
  4089: Imagetek, Inc. I4220 071 9403EK701
  4090: 
  4091: ***************************************************************************/
  4092: 
  4093: ROM_START( bangball )
  4094: 	ROM_REGION( 0x080000, REGION_CPU1, 0 )		/* 68000 Code */
  4095: 	ROM_LOAD16_BYTE( "rom#006.u18", 0x000000, 0x040000, CRC(0e4124bc) SHA1(f5cd762df4e822ab5c8dba6f276b3366895235d1) )
  4096: 	ROM_LOAD16_BYTE( "rom#005.u19", 0x000001, 0x040000, CRC(3fa08587) SHA1(8fdafdde5e77d077b5cd8f94f97b5430fe062936) )
  4097: 
  4098: 	ROM_REGION( 0x400000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4099: 	ROMX_LOAD( "bp963a.u30", 0x000000, 0x100000, CRC(b0ca8e39) SHA1(f2eb1d07cd10050c234f0b418146c742b496f196) , ROM_GROUPWORD | ROM_SKIP(6))
  4100: 	ROMX_LOAD( "bp963a.u29", 0x000002, 0x100000, CRC(d934468f) SHA1(b93353bf2302b68a297d71fc9d91dc55c1cccce4) , ROM_GROUPWORD | ROM_SKIP(6))
  4101: 	ROMX_LOAD( "bp963a.u28", 0x000004, 0x100000, CRC(96d03c6a) SHA1(6257585721291e5a5ce311c2873c9e1e1dac2fc6) , ROM_GROUPWORD | ROM_SKIP(6))
  4102: 	ROMX_LOAD( "bp963a.u27", 0x000006, 0x100000, CRC(5e3c7732) SHA1(e8c442a8038921ae3de48ce52923d25cb97e36ea) , ROM_GROUPWORD | ROM_SKIP(6))
  4103: 
  4104: 	ROM_REGION( 0x280000, REGION_SOUND1, ROMREGION_SOUNDONLY )
  4105: 	ROM_LOAD( "yrw801-m",    0x000000, 0x200000, CRC(2a9d8d43) SHA1(32760893ce06dbe3930627755ba065cc3d8ec6ca) )
  4106: 	ROM_LOAD( "rom#007.u49", 0x200000, 0x080000, CRC(04cc91a9) SHA1(e5cf6055a0803f4ad44919090cd147702e805d88) )
  4107: ROM_END
  4108: 
  4109: 
  4110: /***************************************************************************
  4111: 
  4112: Blazing Tornado
  4113: (c)1994 Human
  4114: 
  4115: CPU:	68000-16
  4116: Sound:	Z80-8
  4117: 	YMF286K
  4118: OSC:	16.0000MHz
  4119: 	26.666MHz
  4120: Chips:	Imagetek 14220 071
  4121: 	Konami 053936 (PSAC2)
  4122: 
  4123: ***************************************************************************/
  4124: 
  4125: ROM_START( blzntrnd )
  4126: 	ROM_REGION( 0x200000, REGION_CPU1, 0 )	/* 68000 */
  4127: 	ROM_LOAD16_BYTE( "1k.bin", 0x000000, 0x80000, CRC(b007893b) SHA1(609363449c0218b8a38de72d37c66e6f3bb4f8cd) )
  4128: 	ROM_LOAD16_BYTE( "2k.bin", 0x000001, 0x80000, CRC(ec173252) SHA1(652d70055d2799442beede1ae68e54551931068f) )
  4129: 	ROM_LOAD16_BYTE( "3k.bin", 0x100000, 0x80000, CRC(1e230ba2) SHA1(ca96c82d57a6b5bacc1bfd2f7965503c2a6e162f) )
  4130: 	ROM_LOAD16_BYTE( "4k.bin", 0x100001, 0x80000, CRC(e98ca99e) SHA1(9346fc0d419add23eaceb5843c505f3ffa69e495) )
  4131: 
  4132: 	ROM_REGION( 0x20000, REGION_CPU2, 0 )	/* Z80 */
  4133: 	ROM_LOAD( "rom5.bin", 0x0000, 0x20000, CRC(7e90b774) SHA1(abd0eda9eababa1f7ab17a2f60534dcebda33c9c) )
  4134: 
  4135: 	ROM_REGION( 0x1800000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4136: 	ROMX_LOAD( "rom142.bin", 0x0000000, 0x200000, CRC(a7200598) SHA1(f8168a94abc380308901303a69cbd15097019797) , ROM_GROUPWORD | ROM_SKIP(6))
  4137: 	ROMX_LOAD( "rom186.bin", 0x0000002, 0x200000, CRC(6ee28ea7) SHA1(b33bcbf16423999135d96a62bf25c6ff23031f2a) , ROM_GROUPWORD | ROM_SKIP(6))
  4138: 	ROMX_LOAD( "rom131.bin", 0x0000004, 0x200000, CRC(c77e75d3) SHA1(8ad716d4e37d6efe478a8e49feb4e68283310890) , ROM_GROUPWORD | ROM_SKIP(6))
  4139: 	ROMX_LOAD( "rom175.bin", 0x0000006, 0x200000, CRC(04a84f9b) SHA1(83aabbc1c7ab06b351168153335f3c2f91fba0e9) , ROM_GROUPWORD | ROM_SKIP(6))
  4140: 	ROMX_LOAD( "rom242.bin", 0x0800000, 0x200000, CRC(1182463f) SHA1(6fa2a0b3186a3542b43926e3f37714b78a890542) , ROM_GROUPWORD | ROM_SKIP(6))
  4141: 	ROMX_LOAD( "rom286.bin", 0x0800002, 0x200000, CRC(384424fc) SHA1(f89d43756bd38515a223fe4ffbed3a44c673ae28) , ROM_GROUPWORD | ROM_SKIP(6))
  4142: 	ROMX_LOAD( "rom231.bin", 0x0800004, 0x200000, CRC(f0812362) SHA1(9f8be51f60f7baf72f9de8352e4e13d730f85903) , ROM_GROUPWORD | ROM_SKIP(6))
  4143: 	ROMX_LOAD( "rom275.bin", 0x0800006, 0x200000, CRC(184cb129) SHA1(8ffb3cdc7e0d227b6f0a7962bc6d853c6b84c8d2) , ROM_GROUPWORD | ROM_SKIP(6))
  4144: 	ROMX_LOAD( "rom342.bin", 0x1000000, 0x200000, CRC(e527fee5) SHA1(e5de1e134d95aa7a48695183189924061482e3a3) , ROM_GROUPWORD | ROM_SKIP(6))
  4145: 	ROMX_LOAD( "rom386.bin", 0x1000002, 0x200000, CRC(d10b1401) SHA1(0eb75a283000a8b19a14177461b6f335c9d9dec2) , ROM_GROUPWORD | ROM_SKIP(6))
  4146: 	ROMX_LOAD( "rom331.bin", 0x1000004, 0x200000, CRC(4d909c28) SHA1(fb9bb824e518f67713799ed2c0159a7bd70f35c4) , ROM_GROUPWORD | ROM_SKIP(6))
  4147: 	ROMX_LOAD( "rom375.bin", 0x1000006, 0x200000, CRC(6eb4f97c) SHA1(c7f006230cbf10e706b0362eeed34655a3aef1a5) , ROM_GROUPWORD | ROM_SKIP(6))
  4148: 
  4149: 	ROM_REGION( 0x200000, REGION_GFX3, ROMREGION_DISPOSE )	/* 053936 gfx data */
  4150: 	ROM_LOAD( "rom9.bin", 0x000000, 0x200000, CRC(37ca3570) SHA1(3374c586bf84583fa33f2793c4e8f2f61a0cab1c) )
  4151: 
  4152: 	ROM_REGION( 0x080000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4153: 	ROM_LOAD( "rom8.bin", 0x000000, 0x080000, CRC(565a4086) SHA1(bd5780acfa5affa8705acbfccb0af16bac8ed298) )
  4154: 
  4155: 	ROM_REGION( 0x400000, REGION_SOUND2, ROMREGION_SOUNDONLY )	/* ? YRW801-M ? */
  4156: 	ROM_LOAD( "rom6.bin", 0x000000, 0x200000, CRC(8b8819fc) SHA1(5fd9d2b5088cb676c11d32cac7ba8c5c18e31b64) )
  4157: 	ROM_LOAD( "rom7.bin", 0x200000, 0x200000, CRC(0089a52b) SHA1(d643ac122d62557de27f06ba1413ef757a45a927) )
  4158: ROM_END
  4159: 
  4160: 
  4161: /***************************************************************************
  4162: 
  4163: Daitoride
  4164: Metro 1995
  4165: 
  4166: MTR5260-A
  4167: 
  4168:                                  12MHz  6116
  4169:                    YM2151          DT7  DT8
  4170:                             M6295
  4171:      7C199                             78C10
  4172:      7C199       Imagetek14220
  4173:      61C64
  4174: 
  4175:                   68000-16             DT1
  4176:                   32MHz    52258       DT2
  4177:    SW1                     52258       DT3
  4178:    SW2            DT6  DT5             DT4
  4179: 
  4180: ***************************************************************************/
  4181: 
  4182: ROM_START( daitorid )
  4183: 	ROM_REGION( 0x040000, REGION_CPU1, 0 )		/* 68000 Code */
  4184: 	ROM_LOAD16_BYTE( "dt-ja-5.19e", 0x000000, 0x020000, CRC(441efd77) SHA1(18b255f42ba7a180535f0897aaeebe5d2a33df46) )
  4185: 	ROM_LOAD16_BYTE( "dt-ja-6.19c", 0x000001, 0x020000, CRC(494f9cc3) SHA1(b88af581fee9e2d94a12a5c1fed0797614bb738e) )
  4186: 
  4187: 	ROM_REGION( 0x020000, REGION_CPU2, 0 )		/* NEC78C10 Code */
  4188: 	ROM_LOAD( "dt-ja-8.3h", 0x000000, 0x020000, CRC(0351ad5b) SHA1(942c1cbb52bf2933aea4209335c1bc4cdd1cc3dd) )
  4189: 
  4190: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4191: 	ROMX_LOAD( "dt-ja-2.14h", 0x000000, 0x080000, CRC(56881062) SHA1(150a8f043e61b28c22d0f898aea61853d1accddc) , ROM_GROUPWORD | ROM_SKIP(6))
  4192: 	ROMX_LOAD( "dt-ja-4.18h", 0x000002, 0x080000, CRC(85522e3b) SHA1(2c6e7c8ad01d39843669ef1afe7a0843ea6c107c) , ROM_GROUPWORD | ROM_SKIP(6))
  4193: 	ROMX_LOAD( "dt-ja-1.12h", 0x000004, 0x080000, CRC(2a220bf2) SHA1(553dea2ab42d845b2e91930219fe8df026748642) , ROM_GROUPWORD | ROM_SKIP(6))
  4194: 	ROMX_LOAD( "dt-ja-3.16h", 0x000006, 0x080000, CRC(fd1f58e0) SHA1(b4bbe94127ae59d4c899d09862703c374c8f4746) , ROM_GROUPWORD | ROM_SKIP(6))
  4195: 
  4196: 	ROM_REGION( 0x040000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4197: 	ROM_LOAD( "dt-ja-7.3f", 0x000000, 0x040000, CRC(0d888cde) SHA1(fa871fc34f8b8ff0eebe47f338733e4f9fe65b76) )
  4198: ROM_END
  4199: 
  4200: 
  4201: /***************************************************************************
  4202: 
  4203: Dharma Doujou
  4204: Metro 1994
  4205: 
  4206: 
  4207:                   M6395  JA-7 JA-8
  4208: 
  4209:      26.666MHz          NEC78C10
  4210:       7C199
  4211:       7C199
  4212:       7C199               JB-1
  4213:                           JB-2
  4214:                           JB-3
  4215:            68000-12       JB-4
  4216: 
  4217:            24MHz
  4218:                   6264
  4219:                   6264
  4220:            JC-5 JC-6
  4221: 
  4222: ***************************************************************************/
  4223: 
  4224: ROM_START( dharma )
  4225: 	ROM_REGION( 0x040000, REGION_CPU1, 0 )		/* 68000 Code */
  4226: 	ROM_LOAD16_BYTE( "jc-5", 0x000000, 0x020000, CRC(b5d44426) SHA1(d68aaf6b9976ccf5cb665d7ec0afa44e2453094d) )
  4227: 	ROM_LOAD16_BYTE( "jc-6", 0x000001, 0x020000, CRC(bc5a202e) SHA1(c2b6d2e44e3605e0525bde4030c5162badad4d4b) )
  4228: 
  4229: 	ROM_REGION( 0x020000, REGION_CPU2, 0 )		/* NEC78C10 Code */
  4230: 	ROM_LOAD( "ja-8", 0x000000, 0x020000, CRC(af7ebc4c) SHA1(6abf0036346da10be56932f9674f8c250a3ea592) )	// (c)1992 Imagetek (11xxxxxxxxxxxxxxx = 0xFF)
  4231: 
  4232: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4233: 	ROMX_LOAD( "jb-2", 0x000000, 0x080000, CRC(2c07c29b) SHA1(26244145139df1ffe2b6ec25a32e5009da6a5aba) , ROM_GROUPWORD | ROM_SKIP(6))
  4234: 	ROMX_LOAD( "jb-4", 0x000002, 0x080000, CRC(fe15538e) SHA1(a52ac04656783611ec5d5af01b18e22254decc0c) , ROM_GROUPWORD | ROM_SKIP(6))
  4235: 	ROMX_LOAD( "jb-1", 0x000004, 0x080000, CRC(e6ca9bf6) SHA1(0379250303eb6895a4dda080da8bf031d055ce8e) , ROM_GROUPWORD | ROM_SKIP(6))
  4236: 	ROMX_LOAD( "jb-3", 0x000006, 0x080000, CRC(6ecbe193) SHA1(33b799699d5d17705df36591cdc40032278388d1) , ROM_GROUPWORD | ROM_SKIP(6))
  4237: 
  4238: 	ROM_REGION( 0x040000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4239: 	ROM_LOAD( "ja-7", 0x000000, 0x040000, CRC(7ce817eb) SHA1(9dfb79021a552877fbc26049cca853c0b93735b5) )
  4240: ROM_END
  4241: 
  4242: 
  4243: /***************************************************************************
  4244: 
  4245: Karate Tournament
  4246: 
  4247: 68000-12
  4248: NEC D78C10ACN
  4249: OKI6295
  4250: YM2413
  4251: OSC:  24.000MHz,  20.000MHz,   XTAL 3579545
  4252: 
  4253: On board, location for but unused things...
  4254: Unused DIP#3
  4255: Unused BAT1
  4256: 
  4257: I can see a large square surface-mounted chip with
  4258: these markings...
  4259: 
  4260: ImageTek Inc.
  4261: 14100
  4262: 052
  4263: 9227KK702
  4264: 
  4265: Filename	Type		Location
  4266: KT001.BIN	27C010	 	1I
  4267: KT002.BIN	27C2001		8G
  4268: KT003.BIN	27C2001		10G
  4269: KT008.BIN	27C2001		1D
  4270: 
  4271: Filename	Chip Markings	Location
  4272: KTMASK1.BIN	361A04 9241D	15F
  4273: KTMASK2.BIN	361A05 9239D	17F
  4274: KTMASK3.BIN	361A06 9239D	15D
  4275: KTMASK4.BIN	361A07 9239D	17D
  4276: 
  4277: ***************************************************************************/
  4278: 
  4279: ROM_START( karatour )
  4280: 	ROM_REGION( 0x080000, REGION_CPU1, 0 )		/* 68000 Code */
  4281: 	ROM_LOAD16_BYTE( "kt002.8g",  0x000000, 0x040000, CRC(316a97ec) SHA1(4b099d2fa91822c9c85d647aab3d6779fc400250) )
  4282: 	ROM_LOAD16_BYTE( "kt003.10g", 0x000001, 0x040000, CRC(abe1b991) SHA1(9b6327169d66717dd9dd74816bc33eb208c3763c) )
  4283: 
  4284: 	ROM_REGION( 0x020000, REGION_CPU2, 0 )		/* NEC78C10 Code */
  4285: 	ROM_LOAD( "kt001.1i", 0x000000, 0x020000, CRC(1dd2008c) SHA1(488b6f5d15bdbc069ee2cd6d7a0980a228d2f790) )	// 11xxxxxxxxxxxxxxx = 0xFF
  4286: 
  4287: 	ROM_REGION( 0x400000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4288: 	ROMX_LOAD( "ktmask.15f", 0x000000, 0x100000, CRC(f6bf20a5) SHA1(cb4cb249eb1c106fe7ef0ace735c0cc3106f1ab7) , ROM_GROUPWORD | ROM_SKIP(6))
  4289: 	ROMX_LOAD( "ktmask.17d", 0x000002, 0x100000, CRC(794cc1c0) SHA1(ecfdec5874a95846c0fb7966fdd1da625d85531f) , ROM_GROUPWORD | ROM_SKIP(6))
  4290: 	ROMX_LOAD( "ktmask.17f", 0x000004, 0x100000, CRC(ea9c11fc) SHA1(176c4419cfe13ff019654a93cd7b0befa238bbc3) , ROM_GROUPWORD | ROM_SKIP(6))
  4291: 	ROMX_LOAD( "ktmask.15d", 0x000006, 0x100000, CRC(7e15f058) SHA1(267f0a5acb874d4fff3556ffa405e24724174667) , ROM_GROUPWORD | ROM_SKIP(6))
  4292: 
  4293: 	ROM_REGION( 0x040000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4294: 	ROM_LOAD( "kt008.1d", 0x000000, 0x040000, CRC(47cf9fa1) SHA1(88923ace550154c58c066f859cadfa7864c5344c) )
  4295: 
  4296: 	/* Additional memory for the layers' ram */
  4297: 	ROM_REGION( 0x20000*3, REGION_USER1, 0 )
  4298: ROM_END
  4299: 
  4300: 
  4301: /***************************************************************************
  4302: 
  4303: Moeyo Gonta!! (Lady Killer)
  4304: (c)1993 Yanyaka
  4305: VG460-(B)
  4306: 
  4307: CPU  : TMP68HC000P-16
  4308: Sound: D78C10ACW YM2413 M6295
  4309: OSC  : 3.579545MHz(XTAL1) 20.0000MHz(XTAL2) 24.0000MHz(XTAL3)
  4310: 
  4311: ROMs:
  4312: e1.1i - Sound program (27c010)
  4313: 
  4314: j2.8g  - Main programs (27c020)
  4315: j3.10g /
  4316: 
  4317: ladyj-4.15f - Graphics (mask, read as 27c800)
  4318: ladyj-5.17f |
  4319: ladyj-6.15d |
  4320: ladyj-7.17d /
  4321: 
  4322: e8j.1d - Samples (27c020)
  4323: 
  4324: Others:
  4325: Imagetek I4100 052 9330EK712
  4326: 
  4327: ***************************************************************************/
  4328: 
  4329: ROM_START( ladykill )
  4330: 	ROM_REGION( 0x080000, REGION_CPU1, 0 )		/* 68000 Code */
  4331: 	ROM_LOAD16_BYTE( "e2.bin",    0x000000, 0x040000, CRC(211a4865) SHA1(4315c0a708383d357d8dd89a1820fe6cf7652adb) )
  4332: 	ROM_LOAD16_BYTE( "e3.bin",    0x000001, 0x040000, CRC(581a55ea) SHA1(41bfcaae84e583bf185948ab53ec39c05180a7a4) )
  4333: 
  4334: 	ROM_REGION( 0x020000, REGION_CPU2, 0 )		/* NEC78C10 Code */
  4335: 	ROM_LOAD( "e1.1i",    0x000000, 0x020000, CRC(a4d95cfb) SHA1(2fd8a5cbb0dc289bd5294519dbd5369bfb4c2d4d) )	// 11xxxxxxxxxxxxxxx = 0xFF
  4336: 
  4337: 	ROM_REGION( 0x400000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4338: 	ROMX_LOAD( "ladyj-4.15f", 0x000000, 0x100000, CRC(65e5906c) SHA1(cc3918c2094ca819ec4043055564e1dbff4a4750) , ROM_GROUPWORD | ROM_SKIP(6))
  4339: 	ROMX_LOAD( "ladyj-7.17d", 0x000002, 0x100000, CRC(56bd64a5) SHA1(911272078b0fd375111f5d1463945c2075c19e40) , ROM_GROUPWORD | ROM_SKIP(6))
  4340: 	ROMX_LOAD( "ladyj-5.17f", 0x000004, 0x100000, CRC(a81ffaa3) SHA1(5c161b0ef33f1bab077e9a2eb2d3432825729e83) , ROM_GROUPWORD | ROM_SKIP(6))
  4341: 	ROMX_LOAD( "ladyj-6.15d", 0x000006, 0x100000, CRC(3a34913a) SHA1(a55624ede7c368e61555ca7b9cd9e6948265b784) , ROM_GROUPWORD | ROM_SKIP(6))
  4342: 
  4343: 	ROM_REGION( 0x040000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4344: 	ROM_LOAD( "e8.bin",   0x000000, 0x040000, CRC(da88244d) SHA1(90c0cc275b69afffd9a0126985fd3fe16d44dced) )
  4345: 
  4346: 	/* Additional memory for the layers' ram */
  4347: 	ROM_REGION( 0x20000*3, REGION_USER1, 0 )
  4348: ROM_END
  4349: 
  4350: ROM_START( moegonta )
  4351: 	ROM_REGION( 0x080000, REGION_CPU1, 0 )		/* 68000 Code */
  4352: 	ROM_LOAD16_BYTE( "j2.8g",     0x000000, 0x040000, CRC(aa18d130) SHA1(6e0fd3b95d8589665b418bcae4fe64b288289c78) )
  4353: 	ROM_LOAD16_BYTE( "j3.10g",    0x000001, 0x040000, CRC(b555e6ab) SHA1(adfc6eafec612c8770b9f832a0a2574c53c3d047) )
  4354: 
  4355: 	ROM_REGION( 0x020000, REGION_CPU2, 0 )		/* NEC78C10 Code */
  4356: 	ROM_LOAD( "e1.1i",    0x000000, 0x020000, CRC(a4d95cfb) SHA1(2fd8a5cbb0dc289bd5294519dbd5369bfb4c2d4d) )	// 11xxxxxxxxxxxxxxx = 0xFF
  4357: 
  4358: 	ROM_REGION( 0x400000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4359: 	ROMX_LOAD( "ladyj-4.15f", 0x000000, 0x100000, CRC(65e5906c) SHA1(cc3918c2094ca819ec4043055564e1dbff4a4750) , ROM_GROUPWORD | ROM_SKIP(6))
  4360: 	ROMX_LOAD( "ladyj-7.17d", 0x000002, 0x100000, CRC(56bd64a5) SHA1(911272078b0fd375111f5d1463945c2075c19e40) , ROM_GROUPWORD | ROM_SKIP(6))
  4361: 	ROMX_LOAD( "ladyj-5.17f", 0x000004, 0x100000, CRC(a81ffaa3) SHA1(5c161b0ef33f1bab077e9a2eb2d3432825729e83) , ROM_GROUPWORD | ROM_SKIP(6))
  4362: 	ROMX_LOAD( "ladyj-6.15d", 0x000006, 0x100000, CRC(3a34913a) SHA1(a55624ede7c368e61555ca7b9cd9e6948265b784) , ROM_GROUPWORD | ROM_SKIP(6))
  4363: 
  4364: 	ROM_REGION( 0x040000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4365: 	ROM_LOAD( "e8j.1d",   0x000000, 0x040000, CRC(f66c2a80) SHA1(d95ddc8fe4144a6ad4a92385ff962d0b9391d53b) )
  4366: 
  4367: 	/* Additional memory for the layers' ram */
  4368: 	ROM_REGION( 0x20000*3, REGION_USER1, 0 )
  4369: ROM_END
  4370: 
  4371: 
  4372: /***************************************************************************
  4373: 
  4374: Last Fortress - Toride
  4375: Metro 1992
  4376: VG420
  4377: 
  4378:                                      TR_JB12 5216
  4379:                      SW2 SW1           NEC78C10   3.579MHz
  4380: 
  4381:                                                           6269
  4382:                                                           TR_JB11
  4383:   55328 55328 55328       24MHz
  4384: 
  4385:                            4064   4064   TR_   TR_          68000-12
  4386:        Imagetek                          JC10  JC09
  4387:        14100
  4388: 
  4389:     TR_  TR_  TR_  TR_  TR_  TR_  TR_  TR_
  4390:     JC08 JC07 JC06 JC05 JC04 JC03 JC02 JC01
  4391: 
  4392: ***************************************************************************/
  4393: 
  4394: ROM_START( lastfort )
  4395: 	ROM_REGION( 0x040000, REGION_CPU1, 0 )		/* 68000 Code */
  4396: 	ROM_LOAD16_BYTE( "tr_jc09", 0x000000, 0x020000, CRC(8b98a49a) SHA1(15adca78d54973820d04f8b308dc58d0784eb900) )
  4397: 	ROM_LOAD16_BYTE( "tr_jc10", 0x000001, 0x020000, CRC(8d04da04) SHA1(5c7e65a39929e94d1fa99aeb5fed7030b110451f) )
  4398: 
  4399: 	ROM_REGION( 0x020000, REGION_CPU2, 0 )		/* NEC78C10 Code */
  4400: 	ROM_LOAD( "tr_jb12", 0x000000, 0x020000, CRC(8a8f5fef) SHA1(530b4966ec058cd80a2fc5f9e961239ce59d0b89) )	// (c)1992 Imagetek (11xxxxxxxxxxxxxxx = 0xFF)
  4401: 
  4402: 	ROM_REGION( 0x100000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4403: 	ROMX_LOAD( "tr_jc02", 0x000000, 0x020000, CRC(db3c5b79) SHA1(337f4c547a6267f317415cbc78cdac41574b1024) , ROM_SKIP(7))
  4404: 	ROMX_LOAD( "tr_jc04", 0x000001, 0x020000, CRC(f8ab2f9b) SHA1(bfbbd5ec2bc039b8eaef92467c2e7fd3b425b477) , ROM_SKIP(7))
  4405: 	ROMX_LOAD( "tr_jc06", 0x000002, 0x020000, CRC(47a7f397) SHA1(1d2b11b95ce81ca66713457283464d6d85753e4b) , ROM_SKIP(7))
  4406: 	ROMX_LOAD( "tr_jc08", 0x000003, 0x020000, CRC(d7ba5e26) SHA1(294fd9b68eebd28ca64627f0d6e64b325cab18a0) , ROM_SKIP(7))
  4407: 	ROMX_LOAD( "tr_jc01", 0x000004, 0x020000, CRC(3e3dab03) SHA1(e3c6eb73467f0ed207657084e51ee87d85152c3f) , ROM_SKIP(7))
  4408: 	ROMX_LOAD( "tr_jc03", 0x000005, 0x020000, CRC(87ac046f) SHA1(6555a55642383990bc7a8282ab5ea8fc0ba6cd14) , ROM_SKIP(7))
  4409: 	ROMX_LOAD( "tr_jc05", 0x000006, 0x020000, CRC(3fbbe49c) SHA1(642631e69d78898403013884cf0fb711ea000541) , ROM_SKIP(7))
  4410: 	ROMX_LOAD( "tr_jc07", 0x000007, 0x020000, CRC(05e1456b) SHA1(51cd3ad2aa9c0adc7b9d63a337b247b4b65701ca) , ROM_SKIP(7))
  4411: 
  4412: 	ROM_REGION( 0x020000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4413: 	ROM_LOAD( "tr_jb11", 0x000000, 0x020000, CRC(83786a09) SHA1(910cf0ccf4493f2a80062149f6364dbb6a1c2a5d) )
  4414: ROM_END
  4415: 
  4416: 
  4417: /***************************************************************************
  4418: 
  4419: Last Fortress - Toride (Erotic)
  4420: Metro Corporation.
  4421: 
  4422: Board number VG420
  4423: 
  4424: CPU: MC68000P12
  4425: SND: OKI M6295+ YM2413 + NEC D78C10ACW + NEC D4016 (ram?)
  4426: DSW: see manual (scanned in sub-directory Manual)
  4427: OSC: 24.000 MHz
  4428: 
  4429: ***************************************************************************/
  4430: 
  4431: ROM_START( lastfero )
  4432: 	ROM_REGION( 0x040000, REGION_CPU1, 0 )		/* 68000 Code */
  4433: 	ROM_LOAD16_BYTE( "tre_jc09", 0x000000, 0x020000, CRC(32f43390) SHA1(b5bad9d80f2155f277265fe487a59f0f4ec6575d) )
  4434: 	ROM_LOAD16_BYTE( "tre_jc10", 0x000001, 0x020000, CRC(9536369c) SHA1(39291e92c107be35d130ff29533b42581efc308b) )
  4435: 
  4436: 	ROM_REGION( 0x020000, REGION_CPU2, 0 )		/* NEC78C10 Code */
  4437: 	ROM_LOAD( "tr_jb12", 0x000000, 0x020000, CRC(8a8f5fef) SHA1(530b4966ec058cd80a2fc5f9e961239ce59d0b89) )	// (c)1992 Imagetek (11xxxxxxxxxxxxxxx = 0xFF)
  4438: 
  4439: 	ROM_REGION( 0x100000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4440: 	ROMX_LOAD( "tre_jc02", 0x000000, 0x020000, CRC(11cfbc84) SHA1(fb7005be7678564713b5480569f2cdab6c36f029) , ROM_SKIP(7))
  4441: 	ROMX_LOAD( "tre_jc04", 0x000001, 0x020000, CRC(32bf9c26) SHA1(9d16eca8810d1823726dc9c047504bd24f2a55f7) , ROM_SKIP(7))
  4442: 	ROMX_LOAD( "tre_jc06", 0x000002, 0x020000, CRC(16937977) SHA1(768bb6b1c9b90b2eedc9dbb19c8e9fa8f4265f17) , ROM_SKIP(7))
  4443: 	ROMX_LOAD( "tre_jc08", 0x000003, 0x020000, CRC(6dd96a9b) SHA1(fe8214d57dc83157eff53f2d83bd3a4e2da91555) , ROM_SKIP(7))
  4444: 	ROMX_LOAD( "tre_jc01", 0x000004, 0x020000, CRC(aceb44b3) SHA1(9a236eddbc916c206bfa694b576d971d788e8eb1) , ROM_SKIP(7))
  4445: 	ROMX_LOAD( "tre_jc03", 0x000005, 0x020000, CRC(f18f1248) SHA1(30e39d904368c61a46719a0f21a6acb7fa55593f) , ROM_SKIP(7))
  4446: 	ROMX_LOAD( "tre_jc05", 0x000006, 0x020000, CRC(79f769dd) SHA1(7a9ff8e961ae09fdf36a0a751befc141f47c9fd8) , ROM_SKIP(7))
  4447: 	ROMX_LOAD( "tre_jc07", 0x000007, 0x020000, CRC(b6feacb2) SHA1(85df28d5ff6601753a435e31bcaf45702c7489ea) , ROM_SKIP(7))
  4448: 
  4449: 	ROM_REGION( 0x020000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4450: 	ROM_LOAD( "tr_jb11", 0x000000, 0x020000, CRC(83786a09) SHA1(910cf0ccf4493f2a80062149f6364dbb6a1c2a5d) )
  4451: ROM_END
  4452: 
  4453: 
  4454: /***************************************************************************
  4455: 
  4456: Mahjong Doukyuhsei (JPN Ver.)
  4457: 
  4458: (c)1995 make software/elf/media trading corp.
  4459: 
  4460: CPU   :68000 16MHz
  4461: Sound :YM2413 custom
  4462: OSC   :16.0000MHz 3.579545MHz 26.666MHz
  4463: 
  4464: Board Name?:VG330-B
  4465: 
  4466: ***************************************************************************/
  4467: 
  4468: ROM_START( dokyusei )
  4469: 	ROM_REGION( 0x040000, REGION_CPU1, 0 )		/* 68000 Code */
  4470: 	ROM_LOAD16_BYTE( "330_a06.bin", 0x000000, 0x020000, CRC(36157c2e) SHA1(f855175143caf476dcbee5a8aaec802a8fdb64fa) )
  4471: 	ROM_LOAD16_BYTE( "330_a05.bin", 0x000001, 0x020000, CRC(177f50d2) SHA1(2298411152553041b907d9243aaa7983ca21c946) )
  4472: 
  4473: 	ROM_REGION( 0x800000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4474: 	ROMX_LOAD( "2.bin", 0x000000, 0x200000, CRC(075bface) SHA1(7f0e47ebdc37a1fc09b072cb8e0f38258a702a3d) , ROM_GROUPWORD | ROM_SKIP(6))
  4475: 	ROMX_LOAD( "4.bin", 0x000002, 0x200000, CRC(bc631438) SHA1(da3ef24d94e69197e3c69e4fd2b716162c275278) , ROM_GROUPWORD | ROM_SKIP(6))
  4476: 	ROMX_LOAD( "1.bin", 0x000004, 0x200000, CRC(4566c29b) SHA1(3216e21d898855cbb0ad328e6d45f3726d95b099) , ROM_GROUPWORD | ROM_SKIP(6))
  4477: 	ROMX_LOAD( "3.bin", 0x000006, 0x200000, CRC(5f6d7969) SHA1(bcb48c5808f268ca35a28f162d4e9da9df65b843) , ROM_GROUPWORD | ROM_SKIP(6))
  4478: 
  4479: 	ROM_REGION( 0x100000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4480: 	ROM_LOAD( "7.bin", 0x000000, 0x100000, CRC(c572aee1) SHA1(2a3baf962617577f8ac3f9e58fb4e5a0dae4f0e8) )	// 4 x 0x40000
  4481: ROM_END
  4482: 
  4483: 
  4484: /***************************************************************************
  4485: 
  4486: Mahjong Doukyuusei Special
  4487: (c)1995 Make Software / Elf / Media Trading
  4488: 
  4489: Board:	VG340-A
  4490: 
  4491: CPU:	68000-16
  4492: Sound:	M6295
  4493: 		YM2413
  4494: OSC:	32.0000MHz
  4495: 		3.579545MHz
  4496: EEPROM:	93C46
  4497: Custom:	14300 095
  4498: 
  4499: ***************************************************************************/
  4500: 
  4501: ROM_START( dokyusp )
  4502: 	ROM_REGION( 0x040000, REGION_CPU1, 0 )		/* 68000 Code */
  4503: 	ROM_LOAD16_BYTE( "6.bin", 0x000000, 0x020000, CRC(01729b7f) SHA1(42a60f034ee5d5c2a42856b97d0d4c499b24627b) )
  4504: 	ROM_LOAD16_BYTE( "5.bin", 0x000001, 0x020000, CRC(57770776) SHA1(15093886f2fe49443e8d7541903714de0a14aa0b) )
  4505: 
  4506: 	ROM_REGION( 0x1000000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4507: 	ROMX_LOAD( "2l.bin", 0x0000000, 0x400000, CRC(4bed184d) SHA1(12bdb00030d19c2c9fb2120ed6b267a7982c213a) , ROM_GROUPWORD | ROM_SKIP(6))
  4508: 	ROMX_LOAD( "4l.bin", 0x0000002, 0x400000, CRC(2ee468e6) SHA1(ced58fdd8b5c99ce3f09cece2e05d7fcf4c7f786) , ROM_GROUPWORD | ROM_SKIP(6))
  4509: 	ROMX_LOAD( "1l.bin", 0x0000004, 0x400000, CRC(510ace14) SHA1(f5f1f46f4d8d150dd9e17083f32e9b45938c1dad) , ROM_GROUPWORD | ROM_SKIP(6))
  4510: 	ROMX_LOAD( "3l.bin", 0x0000006, 0x400000, CRC(82ea562e) SHA1(42839de9f346ccd0736bdbd3eead61ad66fcb666) , ROM_GROUPWORD | ROM_SKIP(6))
  4511: 
  4512: 	ROM_REGION( 0x200000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4513: 	ROM_LOAD( "7.bin", 0x000000, 0x200000, CRC(763985e1) SHA1(395d925b79922de5060a3f59de99fbcc9bd40fad) )
  4514: ROM_END
  4515: 
  4516: 
  4517: /***************************************************************************
  4518: 
  4519: Mahjong Gakuensai (JPN Ver.)
  4520: (c)1997 Make Software
  4521: 
  4522: Board:	VG340-A
  4523: 
  4524: CPU:	68000-16
  4525: Sound:	M6295
  4526: 		YM2413
  4527: OSC:	26.6660MHz
  4528: 		3.5795MHz
  4529: 
  4530: Custom:	14300 095
  4531: 
  4532: ***************************************************************************/
  4533: 
  4534: ROM_START( gakusai )
  4535: 	ROM_REGION( 0x080000, REGION_CPU1, 0 )		/* 68000 Code */
  4536: 	ROM_LOAD16_BYTE( "6.bin", 0x000000, 0x040000, CRC(6f8ab082) SHA1(18caf49a0c65f831d375f089f27b8570b094f029) )
  4537: 	ROM_LOAD16_BYTE( "5.bin", 0x000001, 0x040000, CRC(010176c4) SHA1(48fcea18c02c1426a699a636f44b21cf7625e8a0) )
  4538: 
  4539: 	ROM_REGION( 0x2000000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4540: 	ROMX_LOAD( "2l.bin", 0x0000000, 0x400000, CRC(45dfb5c7) SHA1(04338d695bd6973fd7d7286a8da563250ae4f71b) , ROM_GROUPWORD | ROM_SKIP(6))
  4541: 	ROMX_LOAD( "4l.bin", 0x0000002, 0x400000, CRC(7ab64f49) SHA1(e4d9a7bf97635b41fe632b3542eee1f609db080a) , ROM_GROUPWORD | ROM_SKIP(6))
  4542: 	ROMX_LOAD( "1l.bin", 0x0000004, 0x400000, CRC(75093421) SHA1(cfe549e24abfedd740ead30cab235df494e9f45d) , ROM_GROUPWORD | ROM_SKIP(6))
  4543: 	ROMX_LOAD( "3l.bin", 0x0000006, 0x400000, CRC(4dcfcd98) SHA1(bfb882d99c854e68e86f4e8f8aa7d02dcf5e9cfc) , ROM_GROUPWORD | ROM_SKIP(6))
  4544: 	ROMX_LOAD( "2u.bin", 0x1000000, 0x400000, CRC(8d4f912b) SHA1(1fcf1dd50fd678cc908ab47bcccaa4ed7b2b6938) , ROM_GROUPWORD | ROM_SKIP(6))
  4545: 	ROMX_LOAD( "4u.bin", 0x1000002, 0x400000, CRC(1f83e98a) SHA1(10b2d3ceb4bda6a2ecf795b865c948563c2fb84d) , ROM_GROUPWORD | ROM_SKIP(6))
  4546: 	ROMX_LOAD( "1u.bin", 0x1000004, 0x400000, CRC(28b386d9) SHA1(d1e151fa112c86d2cb97b7a5439a1e549359055d) , ROM_GROUPWORD | ROM_SKIP(6))
  4547: 	ROMX_LOAD( "3u.bin", 0x1000006, 0x400000, CRC(87f3c5e6) SHA1(097c0a53b040399d928f17fe3e9f42755b1d72f3) , ROM_GROUPWORD | ROM_SKIP(6))
  4548: 
  4549: 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4550: 	ROM_LOAD( "7.bin", 0x000000, 0x400000, CRC(34575a14) SHA1(53d458513f208f07844e1727d5889e85dcd4f0ed) )
  4551: ROM_END
  4552: 
  4553: 
  4554: /***************************************************************************
  4555: 
  4556: Mahjong Gakuensai 2 (JPN Ver.)
  4557: (c)1998 Make Software
  4558: 
  4559: Board:	VG340-A
  4560: 
  4561: CPU:	68000-16
  4562: Sound:	M6295
  4563: 		YM2413
  4564: OSC:	26.6660MHz
  4565: 		3.579545MHz
  4566: 
  4567: Custom:	14300 095
  4568: 
  4569: ***************************************************************************/
  4570: 
  4571: ROM_START( gakusai2 )
  4572: 	ROM_REGION( 0x040000, REGION_CPU1, 0 )		/* 68000 Code */
  4573: 	ROM_LOAD16_BYTE( "mg2a06.bin", 0x000000, 0x020000, CRC(8b006dd4) SHA1(893ec0e7c367d79bc99e65ab8abd0d290f2ede58) )
  4574: 	ROM_LOAD16_BYTE( "mg2a05.bin", 0x000001, 0x020000, CRC(7702b9ac) SHA1(09d0c11fa2c9ed9cde365cb1ff215d55e39b7734) )
  4575: 
  4576: 	ROM_REGION( 0x2000000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4577: 	ROMX_LOAD( "mg22l.bin", 0x0000000, 0x400000, CRC(28366708) SHA1(56fccee126916cc301678a205dfe629efefb79db) , ROM_GROUPWORD | ROM_SKIP(6))
  4578: 	ROMX_LOAD( "mg24l.bin", 0x0000002, 0x400000, CRC(9e003bb0) SHA1(aa73cc0e79732fd6826c89671b179cb3189571e0) , ROM_GROUPWORD | ROM_SKIP(6))
  4579: 	ROMX_LOAD( "mg21l.bin", 0x0000004, 0x400000, CRC(3827098d) SHA1(dda9fb6c56c4408802d54c5975fb9470ca2e1d34) , ROM_GROUPWORD | ROM_SKIP(6))
  4580: 	ROMX_LOAD( "mg23l.bin", 0x0000006, 0x400000, CRC(a6f96961) SHA1(dd2578da5d091991580a2c7a979ba8dbfa0cceb3) , ROM_GROUPWORD | ROM_SKIP(6))
  4581: 	ROMX_LOAD( "mg22u.bin", 0x1000000, 0x400000, CRC(53ffa68a) SHA1(3d8d69c2063c78bd79cdbd7457bca1af9700bf3c) , ROM_GROUPWORD | ROM_SKIP(6))
  4582: 	ROMX_LOAD( "mg24u.bin", 0x1000002, 0x400000, CRC(c218e9ab) SHA1(3b6ee4cc828198b284ac9020e2da911efc90725a) , ROM_GROUPWORD | ROM_SKIP(6))
  4583: 	ROMX_LOAD( "mg21u.bin", 0x1000004, 0x400000, CRC(385495e5) SHA1(5181e279fef23780d07ab5a124618e4d0e5cb821) , ROM_GROUPWORD | ROM_SKIP(6))
  4584: 	ROMX_LOAD( "mg23u.bin", 0x1000006, 0x400000, CRC(d8315923) SHA1(6bb5cad317f7efa6a384f6c257c5faeb789a8eed) , ROM_GROUPWORD | ROM_SKIP(6))
  4585: 
  4586: 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4587: 	ROM_LOAD( "mg2-7.bin", 0x000000, 0x400000, CRC(2f1c041e) SHA1(a72720b3d7f816e23452775f2fd4223cf2d02985) )
  4588: ROM_END
  4589: 
  4590: 
  4591: /***************************************************************************
  4592: 
  4593: Mouja (JPN Ver.)
  4594: (c)1996 Etona / (c)1995 FPS/FWS
  4595: VG410-B
  4596: 
  4597: CPU 	:TMP68H000P-12
  4598: Sound	:YM2413,OKI M6295
  4599: OSC 	:16000.00KHz,3.579545MHz,26.666MHz
  4600: other	:Imagetek Inc 14300 095
  4601: 
  4602: ***************************************************************************/
  4603: 
  4604: ROM_START( mouja )
  4605: 	ROM_REGION( 0x080000, REGION_CPU1, 0 )		/* 68000 Code */
  4606: 	ROM_LOAD16_BYTE( "10.bin",      0x000000, 0x040000, CRC(f9742b69) SHA1(f8c6508b227403a82413ceeb0651922759d7e0f4) )
  4607: 	ROM_LOAD16_BYTE( "9.bin",       0x000001, 0x040000, CRC(dc77216f) SHA1(3b73d29f4e8e385f45f2abfb38eaffc2d8406948) )
  4608: 
  4609: 	ROM_REGION( 0x400000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4610: 	ROMX_LOAD( "42.bin",      0x000000, 0x100000, CRC(c4dd3194) SHA1(c9c88a8d2046224957b35de14763aa4bdf0d407f) , ROM_GROUPWORD | ROM_SKIP(6))
  4611: 	ROMX_LOAD( "86.bin",      0x000002, 0x100000, CRC(09530f9d) SHA1(03f2ec5ea694266808d245abe7f688de0ef6d853) , ROM_GROUPWORD | ROM_SKIP(6))
  4612: 	ROMX_LOAD( "31.bin",      0x000004, 0x100000, CRC(5dd7a7b2) SHA1(b0347e8951b29356a7d945b906d93c40b9abc19c) , ROM_GROUPWORD | ROM_SKIP(6))
  4613: 	ROMX_LOAD( "75.bin",      0x000006, 0x100000, CRC(430c3925) SHA1(41e5bd02a665eee87ef8f4ae9f4bee374c25e00b) , ROM_GROUPWORD | ROM_SKIP(6))
  4614: 
  4615: 	ROM_REGION( 0x100000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4616: 	ROM_LOAD( "11.bin",     0x000000, 0x100000, CRC(fe3df432) SHA1(4fb7ad997ca6e91468d7516e5c4a94cde6e07104) )
  4617: ROM_END
  4618: 
  4619: 
  4620: /***************************************************************************
  4621: 
  4622: Pang Poms (c) 1992 Metro
  4623: 
  4624: Pcb code:  VG420 (Same as Toride)
  4625: 
  4626: Cpus:  M68000, Z80
  4627: Clocks: 24 MHz, 3.579 MHz
  4628: Sound: M6295, YM2413, _unused_ slot for a YM2151
  4629: 
  4630: Custom graphics chip - Imagetek 14100 052 9227KK701 (same as Karate Tournament)
  4631: 
  4632: ***************************************************************************/
  4633: 
  4634: ROM_START( pangpoms )
  4635: 	ROM_REGION( 0x040000, REGION_CPU1, 0 )		/* 68000 Code */
  4636: 	ROM_LOAD16_BYTE( "ppoms09.bin", 0x000000, 0x020000, CRC(0c292dbc) SHA1(8b09de2a560e804e0dea514c95b317c2e2b6501d) )
  4637: 	ROM_LOAD16_BYTE( "ppoms10.bin", 0x000001, 0x020000, CRC(0bc18853) SHA1(68d50ad50caad34e72d32e7b9fea1d85af74b879) )
  4638: 
  4639: 	ROM_REGION( 0x020000, REGION_CPU2, 0 )		/* NEC78C10 Code */
  4640: 	ROM_LOAD( "ppoms12.bin", 0x000000, 0x020000, CRC(a749357b) SHA1(1555f565c301c5be7c49fc44a004b5c0cb3777c6) )
  4641: 
  4642: 	ROM_REGION( 0x100000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4643: 	ROMX_LOAD( "ppoms02.bin", 0x000000, 0x020000, CRC(88f902f7) SHA1(12ea58d7c000b629ccdceec3dedc2747a63b84be) , ROM_SKIP(7))
  4644: 	ROMX_LOAD( "ppoms04.bin", 0x000001, 0x020000, CRC(9190c2a0) SHA1(a7399cc2dea5a963e7c930e426915e8eb3552213) , ROM_SKIP(7))
  4645: 	ROMX_LOAD( "ppoms06.bin", 0x000002, 0x020000, CRC(ed15c93d) SHA1(95072e7d1def0d8e97946a612b90ce078c64aed2) , ROM_SKIP(7))
  4646: 	ROMX_LOAD( "ppoms08.bin", 0x000003, 0x020000, CRC(9a3408b9) SHA1(924b184d3a47bbe8aa5d41761ea5e94ba7e4f2e9) , ROM_SKIP(7))
  4647: 	ROMX_LOAD( "ppoms01.bin", 0x000004, 0x020000, CRC(11ac3810) SHA1(6ada82a73d4383f99f5be67369b810a692d27ef9) , ROM_SKIP(7))
  4648: 	ROMX_LOAD( "ppoms03.bin", 0x000005, 0x020000, CRC(e595529e) SHA1(91b4bd1f029ce09d7689815099b38916fe0d2686) , ROM_SKIP(7))
  4649: 	ROMX_LOAD( "ppoms05.bin", 0x000006, 0x020000, CRC(02226214) SHA1(82302e7f1e7269c45e11dfba45ec7bbf522b47f1) , ROM_SKIP(7))
  4650: 	ROMX_LOAD( "ppoms07.bin", 0x000007, 0x020000, CRC(48471c87) SHA1(025fa79993788a0091c4edb83423725abd3a47a2) , ROM_SKIP(7))
  4651: 
  4652: 	ROM_REGION( 0x020000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4653: 	ROM_LOAD( "ppoms11.bin", 0x000000, 0x020000, CRC(e89bd565) SHA1(6c7c1ad67ba708dbbe9654c1d290af290207d2be) )
  4654: ROM_END
  4655: 
  4656: ROM_START( pangpomm )
  4657: 	ROM_REGION( 0x040000, REGION_CPU1, 0 )		/* 68000 Code */
  4658: 	ROM_LOAD16_BYTE( "pa.c09", 0x000000, 0x020000, CRC(e01a7a08) SHA1(1890b290dfb1521ab73b2392409aaf44b99d63bb) )
  4659: 	ROM_LOAD16_BYTE( "pa.c10", 0x000001, 0x020000, CRC(5e509cee) SHA1(821cfbf5f65cc3091eb8008310266f9f2c838072) )
  4660: 
  4661: 	ROM_REGION( 0x020000, REGION_CPU2, 0 )		/* NEC78C10 Code */
  4662: 	ROM_LOAD( "ppoms12.bin", 0x000000, 0x020000, CRC(a749357b) SHA1(1555f565c301c5be7c49fc44a004b5c0cb3777c6) )
  4663: 
  4664: 	ROM_REGION( 0x100000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4665: 	ROMX_LOAD( "ppoms02.bin", 0x000000, 0x020000, CRC(88f902f7) SHA1(12ea58d7c000b629ccdceec3dedc2747a63b84be) , ROM_SKIP(7))
  4666: 	ROMX_LOAD( "pj.e04",      0x000001, 0x020000, CRC(54bf2f10) SHA1(2f0f18984e336f226457295d375a73bcf86cef31) , ROM_SKIP(7))
  4667: 	ROMX_LOAD( "pj.e06",      0x000002, 0x020000, CRC(c8b6347d) SHA1(7090e44dc7032432795b6fb6bc166bf4de159685) , ROM_SKIP(7))
  4668: 	ROMX_LOAD( "ppoms08.bin", 0x000003, 0x020000, CRC(9a3408b9) SHA1(924b184d3a47bbe8aa5d41761ea5e94ba7e4f2e9) , ROM_SKIP(7))
  4669: 	ROMX_LOAD( "ppoms01.bin", 0x000004, 0x020000, CRC(11ac3810) SHA1(6ada82a73d4383f99f5be67369b810a692d27ef9) , ROM_SKIP(7))
  4670: 	ROMX_LOAD( "pj.e03",      0x000005, 0x020000, CRC(d126e774) SHA1(f782d1e1277956f088dc91dec8f338f85b9af13a) , ROM_SKIP(7))
  4671: 	ROMX_LOAD( "pj.e05",      0x000006, 0x020000, CRC(79c0ec1e) SHA1(b15582e89d859dda4f82908c62e9e07cb45229b9) , ROM_SKIP(7))
  4672: 	ROMX_LOAD( "ppoms07.bin", 0x000007, 0x020000, CRC(48471c87) SHA1(025fa79993788a0091c4edb83423725abd3a47a2) , ROM_SKIP(7))
  4673: 
  4674: 	ROM_REGION( 0x020000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4675: 	ROM_LOAD( "ppoms11.bin", 0x000000, 0x020000, CRC(e89bd565) SHA1(6c7c1ad67ba708dbbe9654c1d290af290207d2be) )
  4676: ROM_END
  4677: 
  4678: 
  4679: /***************************************************************************
  4680: 
  4681: Poitto! (c)1993 Metro corp
  4682: MTR5260-A
  4683: 
  4684: CPU  : TMP68HC000P-16
  4685: Sound: D78C10ACW M6295 YM2413
  4686: OSC  : 24.0000MHz  (OSC1)
  4687:                    (OSC2)
  4688:                    (OSC3)
  4689:        3.579545MHz (OSC4)
  4690:                    (OSC5)
  4691: 
  4692: ROMs:
  4693: pt-1.13i - Graphics (23c4000)
  4694: pt-2.15i |
  4695: pt-3.17i |
  4696: pt-4.19i /
  4697: 
  4698: pt-jd05.20e - Main programs (27c010)
  4699: pt-jd06.20c /
  4700: 
  4701: pt-jc07.3g - Sound data (27c020)
  4702: pt-jc08.3i - Sound program (27c010)
  4703: 
  4704: Others:
  4705: Imagetek 14100 052 9309EK701 (208pin PQFP)
  4706: AMD MACH110-20 (CPLD)
  4707: 
  4708: ***************************************************************************/
  4709: 
  4710: ROM_START( poitto )
  4711: 	ROM_REGION( 0x040000, REGION_CPU1, 0 )		/* 68000 Code */
  4712: 	ROM_LOAD16_BYTE( "pt-jd05.20e", 0x000000, 0x020000, CRC(6b1be034) SHA1(270c94f6017c5ce77f562bfe17273c79d4455053) )
  4713: 	ROM_LOAD16_BYTE( "pt-jd06.20c", 0x000001, 0x020000, CRC(3092d9d4) SHA1(4ff95355fdf94eaa55c0ad46e6ce3b505e3ef790) )
  4714: 
  4715: 	ROM_REGION( 0x020000, REGION_CPU2, 0 )		/* NEC78C10 Code */
  4716: 	ROM_LOAD( "pt-jc08.3i", 0x000000, 0x020000, CRC(f32d386a) SHA1(655c561aec1112d88c1b94725e932059e5d1d5a8) )	// 1xxxxxxxxxxxxxxxx = 0xFF
  4717: 
  4718: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4719: 	ROMX_LOAD( "pt-2.15i", 0x000000, 0x080000, CRC(05d15d01) SHA1(24405908fb8207228cd3419657e0be49e413f152) , ROM_GROUPWORD | ROM_SKIP(6))
  4720: 	ROMX_LOAD( "pt-4.19i", 0x000002, 0x080000, CRC(8a39edb5) SHA1(1d860e0a1b975a93907d5bb0704e3bad383bbda7) , ROM_GROUPWORD | ROM_SKIP(6))
  4721: 	ROMX_LOAD( "pt-1.13i", 0x000004, 0x080000, CRC(ea6e2289) SHA1(2c939b32d2bf155bb5c8bd979dadcf4f75e178b0) , ROM_GROUPWORD | ROM_SKIP(6))
  4722: 	ROMX_LOAD( "pt-3.17i", 0x000006, 0x080000, CRC(522917c1) SHA1(cc2f5b574d31b0b93fe52c690f450b20b233dcad) , ROM_GROUPWORD | ROM_SKIP(6))
  4723: 
  4724: 	ROM_REGION( 0x040000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4725: 	ROM_LOAD( "pt-jc07.3g", 0x000000, 0x040000, CRC(5ae28b8d) SHA1(5e5f80ebbc4e3726ac8dbbfbefb9217f2e3e3563) )
  4726: ROM_END
  4727: 
  4728: 
  4729: /***************************************************************************
  4730: 
  4731: Puzzli
  4732: Metro/Banpresto 1995
  4733: 
  4734: MTR5260-A                3.5759MHz  12MHz
  4735:                YM2151                         6116
  4736:    26.666MHz           M6295    PZ.JB7  PZ.JB8
  4737:                                      78C10
  4738:       7C199         Imagetek
  4739:       7C199           14220
  4740:       61C64
  4741: 
  4742:                                           PZ.JB1
  4743:            68000-16                       PZ.JB2
  4744:                32MHz   6164               PZ.JB3
  4745:                        6164               PZ.JB4
  4746:     SW      PZ.JB6 PZ.JB5
  4747:     SW
  4748: 
  4749: ***************************************************************************/
  4750: 
  4751: ROM_START( puzzli )
  4752: 	ROM_REGION( 0x040000, REGION_CPU1, 0 )		/* 68000 Code */
  4753: 	ROM_LOAD16_BYTE( "pz.jb5",       0x000000, 0x020000, CRC(33bbbd28) SHA1(41a98cfbdd60a638e4aa08f15f1730a2436106f9) )
  4754: 	ROM_LOAD16_BYTE( "pz.jb6",       0x000001, 0x020000, CRC(e0bdea18) SHA1(9941a2cd88d7a3c1a640f837d9f34c39ba643ee5) )
  4755: 
  4756: 	ROM_REGION( 0x020000, REGION_CPU2, 0 )		/* NEC78C10 Code */
  4757: 	ROM_LOAD( "pz.jb8",      0x000000, 0x020000, CRC(c652da32) SHA1(907eba5103373ca6204f9d62c426ccdeef0a3791) )
  4758: 
  4759: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4760: 	ROMX_LOAD( "pz.jb2",       0x000000, 0x080000, CRC(0c0997d4) SHA1(922d8553ef505f65238e5cc77b45861a80022d75) , ROM_GROUPWORD | ROM_SKIP(6))
  4761: 	ROMX_LOAD( "pz.jb4",       0x000002, 0x080000, CRC(576bc5c2) SHA1(08c10e0a3356ee1f79b78eff92395d8b18e43485) , ROM_GROUPWORD | ROM_SKIP(6))
  4762: 	ROMX_LOAD( "pz.jb1",       0x000004, 0x080000, CRC(29f01eb3) SHA1(1a56f0b8efb599ae4f3cd0a4f0b6a6152ea6b117) , ROM_GROUPWORD | ROM_SKIP(6))
  4763: 	ROMX_LOAD( "pz.jb3",       0x000006, 0x080000, CRC(6753e282) SHA1(49d092543db34f2cb54697897790df12ca3eda74) , ROM_GROUPWORD | ROM_SKIP(6))
  4764: 
  4765: 	ROM_REGION( 0x040000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4766: 	ROM_LOAD( "pz.jb7",      0x000000, 0x040000, CRC(b3aab610) SHA1(9bcf1f98e19a7e26b22e152313dfbd43c882f008) )
  4767: ROM_END
  4768: 
  4769: 
  4770: /***************************************************************************
  4771: 
  4772: Sankokushi (JPN Ver.)
  4773: (c)1996 Mitchell
  4774: 
  4775: Board:  MTR5260-A
  4776: 
  4777: sound: YM2413 + M6295
  4778: 
  4779: ***************************************************************************/
  4780: 
  4781: ROM_START( 3kokushi )
  4782: 	ROM_REGION( 0x080000, REGION_CPU1, 0 )		/* 68000 Code */
  4783: 	ROM_LOAD16_BYTE( "5.bin",        0x000000, 0x040000, CRC(6104ea35) SHA1(efb4a9a98577894fac720028f18cb9877a00239a) )
  4784: 	ROM_LOAD16_BYTE( "6.bin",        0x000001, 0x040000, CRC(aac25540) SHA1(811de761bb1b3cc47d811b00f4b5c960c8f061d0) )
  4785: 
  4786: 	ROM_REGION( 0x020000, REGION_CPU2, 0 )		/* NEC78C10 Code */
  4787: 	ROM_LOAD( "8.bin",       0x000000, 0x020000, CRC(f56cca45) SHA1(4739b83b0b3a4235fac10def3d26b0bd190eb12a) )	// (c)1992 Imagetek (11xxxxxxxxxxxxxxx = 0xFF)
  4788: 
  4789: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4790: 	ROMX_LOAD( "2.bin",        0x000000, 0x080000, CRC(291f8149) SHA1(82f460517543ef544c21a81e51987fb2f5c6273d) , ROM_GROUPWORD | ROM_SKIP(6))
  4791: 	ROMX_LOAD( "4.bin",        0x000002, 0x080000, CRC(9317c359) SHA1(9756757fb5d2b298a2b1917a131f391ef0e31fb9) , ROM_GROUPWORD | ROM_SKIP(6))
  4792: 	ROMX_LOAD( "1.bin",        0x000004, 0x080000, CRC(d5495759) SHA1(9cbcb48915ec44a8026d88d96ab391e118e89df5) , ROM_GROUPWORD | ROM_SKIP(6))
  4793: 	ROMX_LOAD( "3.bin",        0x000006, 0x080000, CRC(3d76bdf3) SHA1(f621fcc8e6bde58077216b534c2e876ea9311e15) , ROM_GROUPWORD | ROM_SKIP(6))
  4794: 
  4795: 	ROM_REGION( 0x040000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4796: 	ROM_LOAD( "7.bin",       0x000000, 0x040000, CRC(78fe9d44) SHA1(365a2d51daa24741957fa619bbbbf96e8f370701) )
  4797: 
  4798: 	/* Additional memory for the layers' ram */
  4799: 	ROM_REGION( 0x20000*3, REGION_USER1, 0 )
  4800: ROM_END
  4801: 
  4802: 
  4803: /***************************************************************************
  4804: 
  4805: Pururun (c)1995 Metro/Banpresto
  4806: MTR5260-A
  4807: 
  4808: CPU  : TMP68HC000P-16
  4809: Sound: D78C10ACW M6295 YM2151 Y3012
  4810: OSC  : 24.000MHz   (OSC1)
  4811:                    (OSC2)
  4812:        26.6660MHz  (OSC3)
  4813:                    (OSC4)
  4814:        3.579545MHz (OSC5)
  4815: 
  4816: ROMs:
  4817: pu9-19-1.12i - Graphics (27c4096)
  4818: pu9-19-2.14i |
  4819: pu9-19-3.16i |
  4820: pu9-19-4.18i /
  4821: 
  4822: pu9-19-5.20e - Main programs (27c010)
  4823: pu9-19-6.20c /
  4824: 
  4825: pu9-19-7.3g - Sound data (27c020)
  4826: pu9-19-8.3i - Sound program (27c010)
  4827: 
  4828: Others:
  4829: Imagetek 14220 071 9338EK707 (208pin PQFP)
  4830: AMD MACH110-20 (CPLD)
  4831: 
  4832: ***************************************************************************/
  4833: 
  4834: ROM_START( pururun )
  4835: 	ROM_REGION( 0x040000, REGION_CPU1, 0 )		/* 68000 Code */
  4836: 	ROM_LOAD16_BYTE( "pu9-19-5.20e", 0x000000, 0x020000, CRC(5a466a1b) SHA1(032eeaf66ce1b601385a8e76d2efd9ea6fd34680) )
  4837: 	ROM_LOAD16_BYTE( "pu9-19-6.20c", 0x000001, 0x020000, CRC(d155a53c) SHA1(6916a1bad82c624b8757f5124416dac50a8dd7f5) )
  4838: 
  4839: 	ROM_REGION( 0x020000, REGION_CPU2, 0 )		/* NEC78C10 Code */
  4840: 	ROM_LOAD( "pu9-19-8.3i", 0x000000, 0x020000, CRC(edc3830b) SHA1(13ee759d10711218465f6d7155e9c443a82b323c) )
  4841: 
  4842: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4843: 	ROMX_LOAD( "pu9-19-2.14i", 0x000000, 0x080000, CRC(21550b26) SHA1(cb2a2f672cdca84def2fac8d325b7a80a1e9bfc0) , ROM_GROUPWORD | ROM_SKIP(6))
  4844: 	ROMX_LOAD( "pu9-19-4.18i", 0x000002, 0x080000, CRC(3f3e216d) SHA1(9881e07d5ee237b7134e2ddcf9a9887a1d7f3b4c) , ROM_GROUPWORD | ROM_SKIP(6))
  4845: 	ROMX_LOAD( "pu9-19-1.12i", 0x000004, 0x080000, CRC(7e83a75f) SHA1(9f516bbfc4ca8a8e857ebf7a19c37d7f026695a6) , ROM_GROUPWORD | ROM_SKIP(6))
  4846: 	ROMX_LOAD( "pu9-19-3.16i", 0x000006, 0x080000, CRC(d15485c5) SHA1(d37670b0d696f4ee9da7b8199da114fb4e45cd20) , ROM_GROUPWORD | ROM_SKIP(6))
  4847: 
  4848: 	ROM_REGION( 0x040000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4849: 	ROM_LOAD( "pu9-19-7.3g", 0x000000, 0x040000, CRC(51ae4926) SHA1(1a69a00e960bda399aaf051b3dcc9e0a108c8047) )
  4850: ROM_END
  4851: 
  4852: 
  4853: /***************************************************************************
  4854: 
  4855: Sky Alert (JPN Ver.)
  4856: (c)1992 Metro
  4857: VG420
  4858: 
  4859: CPU 	:MC68000P12
  4860: Sound	:YM2413,OKI M6295
  4861: OSC 	:24.0000MHz,3.579545MHz
  4862: other	:D78C10ACW,Imagetek Inc 14100 052
  4863: 
  4864: ***************************************************************************/
  4865: 
  4866: ROM_START( skyalert )
  4867: 	ROM_REGION( 0x040000, REGION_CPU1, 0 )		/* 68000 Code */
  4868: 	ROM_LOAD16_BYTE( "sa_c_09.bin", 0x000000, 0x020000, CRC(6f14d9ae) SHA1(37e134af3d8461280dab971bc3ee9112f25de335) )
  4869: 	ROM_LOAD16_BYTE( "sa_c_10.bin", 0x000001, 0x020000, CRC(f10bb216) SHA1(d904030fbb838d906ca69a77cffe286e903b273d) )
  4870: 
  4871: 	ROM_REGION( 0x020000, REGION_CPU2, 0 )		/* NEC78C10 Code */
  4872: 	ROM_LOAD( "sa_b_12.bin", 0x000000, 0x020000, CRC(f358175d) SHA1(781d0f846217aa71e3c6d73c1d63bd87d1fa6b48) )	// (c)1992 Imagetek (1xxxxxxxxxxxxxxxx = 0xFF)
  4873: 
  4874: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4875: 	ROMX_LOAD( "sa_a_02.bin", 0x000000, 0x040000, CRC(f4f81d41) SHA1(85e587b4fda71fa5b944b0ac158d36c00e290f5f) , ROM_SKIP(7))
  4876: 	ROMX_LOAD( "sa_a_04.bin", 0x000001, 0x040000, CRC(7d071e7e) SHA1(24b9b0cb7e9f719259b0444ee896bdc1ad79a28d) , ROM_SKIP(7))
  4877: 	ROMX_LOAD( "sa_a_06.bin", 0x000002, 0x040000, CRC(77e4d5e1) SHA1(420e5aaf187e297b371830ebd5787675cff6177b) , ROM_SKIP(7))
  4878: 	ROMX_LOAD( "sa_a_08.bin", 0x000003, 0x040000, CRC(f2a5a093) SHA1(66d482cc3f45ff7bf1363cf3c88e2dabc902a299) , ROM_SKIP(7))
  4879: 	ROMX_LOAD( "sa_a_01.bin", 0x000004, 0x040000, CRC(41ec6491) SHA1(c0bd66409bc6ea969f4c45cc006fde891ba8b4d7) , ROM_SKIP(7))
  4880: 	ROMX_LOAD( "sa_a_03.bin", 0x000005, 0x040000, CRC(e0dff10d) SHA1(3aa18b05f06b4b0a88ba4df86dfc0ca650c2684e) , ROM_SKIP(7))
  4881: 	ROMX_LOAD( "sa_a_05.bin", 0x000006, 0x040000, CRC(62169d31) SHA1(294887b6ce0d56e053e7f7583b8a160afeef4ce5) , ROM_SKIP(7))
  4882: 	ROMX_LOAD( "sa_a_07.bin", 0x000007, 0x040000, CRC(a6f5966f) SHA1(00319b96dacc4dcfd70935e1626da0ae6aa63e5a) , ROM_SKIP(7))
  4883: 
  4884: 	ROM_REGION( 0x020000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4885: 	ROM_LOAD( "sa_a_11.bin", 0x000000, 0x020000, CRC(04842a60) SHA1(ade016c85867dee7ac27efe3910b01f5f8e730a0) )
  4886: ROM_END
  4887: 
  4888: 
  4889: /***************************************************************************
  4890: 
  4891: Toride II Adauchi Gaiden (c)1994 Metro corp
  4892: MTR5260-A
  4893: 
  4894: CPU  : TMP68HC000P-16
  4895: Sound: D78C10ACW M6295 YM2413
  4896: OSC  : 24.0000MHz  (OSC1)
  4897:                    (OSC2)
  4898:        26.6660MHz  (OSC3)
  4899:        3.579545MHz (OSC4)
  4900:                    (OSC5)
  4901: 
  4902: ROMs:
  4903: tr2aja-1.12i - Graphics (27c4096)
  4904: tr2aja-2.14i |
  4905: tr2aja-3.16i |
  4906: tr2aja-4.18i /
  4907: 
  4908: tr2aja-5.20e - Main programs (27c020)
  4909: tr2aja-6.20c /
  4910: 
  4911: tr2aja-7.3g - Sound data (27c010)
  4912: tr2aja-8.3i - Sound program (27c010)
  4913: 
  4914: Others:
  4915: Imagetek 14220 071 9338EK700 (208pin PQFP)
  4916: AMD MACH110-20 (CPLD)
  4917: 
  4918: ***************************************************************************/
  4919: 
  4920: ROM_START( toride2g )
  4921: 	ROM_REGION( 0x080000, REGION_CPU1, 0 )		/* 68000 Code */
  4922: 	ROM_LOAD16_BYTE( "tr2aja-5.20e", 0x000000, 0x040000, CRC(b96a52f6) SHA1(353b5599d50d96b96bdd6352c046ad669cf8da44) )
  4923: 	ROM_LOAD16_BYTE( "tr2aja-6.20c", 0x000001, 0x040000, CRC(2918b6b4) SHA1(86ebb884759dc9a8a701784d19845467aa1ce11b) )
  4924: 
  4925: 	ROM_REGION( 0x020000, REGION_CPU2, 0 )		/* NEC78C10 Code */
  4926: 	ROM_LOAD( "tr2aja-8.3i", 0x000000, 0x020000, CRC(fdd29146) SHA1(8e996e1afd33f16d35ebf5a40829feb3e92f781f) )
  4927: 
  4928: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )	/* Gfx + Data (Addressable by CPU & Blitter) */
  4929: 	ROMX_LOAD( "tr2aja-2.14i", 0x000000, 0x080000, CRC(5c73f629) SHA1(b38b7ee213bcc0dd5e4c339a8f9f2fdd81ede6ad) , ROM_GROUPWORD | ROM_SKIP(6))
  4930: 	ROMX_LOAD( "tr2aja-4.18i", 0x000002, 0x080000, CRC(67ebaf1b) SHA1(a0c5f253cc33620251fb58ef6f1647453d778462) , ROM_GROUPWORD | ROM_SKIP(6))
  4931: 	ROMX_LOAD( "tr2aja-1.12i", 0x000004, 0x080000, CRC(96245a5c) SHA1(524990c88a08648de6f330652fc5c02a27e1325c) , ROM_GROUPWORD | ROM_SKIP(6))
  4932: 	ROMX_LOAD( "tr2aja-3.16i", 0x000006, 0x080000, CRC(49013f5d) SHA1(8f29bd2606b30260e9b21886f2b257f7ae8fb2bf) , ROM_GROUPWORD | ROM_SKIP(6))
  4933: 
  4934: 	ROM_REGION( 0x020000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
  4935: 	ROM_LOAD( "tr2aja-7.3g", 0x000000, 0x020000, CRC(630c6193) SHA1(ddb63724e0b0f7264cb02904e49b24b87beb35a9) )
  4936: ROM_END
  4937: 
  4938: 
  4939: /***************************************************************************
  4940: 
  4941: 
  4942: 								Game Drivers
  4943: 
  4944: 
  4945: ***************************************************************************/
  4946: 
  4947: GAMEX( 1992, karatour, 0,        karatour, karatour, karatour, ROT0,   "Mitchell",                   "The Karate Tournament",           GAME_NO_SOUND )
  4948: GAMEX( 1992, pangpoms, 0,        pangpoms, pangpoms, metro,    ROT0,   "Metro",                      "Pang Poms",                       GAME_NO_SOUND )
  4949: GAMEX( 1992, pangpomm, pangpoms, pangpoms, pangpoms, metro,    ROT0,   "Metro (Mitchell license)",   "Pang Poms (Mitchell)",            GAME_NO_SOUND )
  4950: GAMEX( 1992, skyalert, 0,        skyalert, skyalert, metro,    ROT270, "Metro",                      "Sky Alert",                       GAME_NO_SOUND )
  4951: GAMEX( 1993?,ladykill, 0,        karatour, ladykill, karatour, ROT90,  "Yanyaka (Mitchell license)", "Lady Killer",                     GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
  4952: GAMEX( 1993?,moegonta, ladykill, karatour, moegonta, karatour, ROT90,  "Yanyaka",                    "Moeyo Gonta!! (Japan)",           GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
  4953: GAMEX( 1993, poitto,   0,        poitto,   poitto,   metro,    ROT0,   "Metro / Able Corp.",         "Poitto!",                         GAME_NO_SOUND )
  4954: GAMEX( 1994, dharma,   0,        dharma,   dharma,   metro,    ROT0,   "Metro",                      "Dharma Doujou",                   GAME_NO_SOUND )
  4955: GAMEX( 1994, lastfort, 0,        lastfort, lastfort, metro,    ROT0,   "Metro",                      "Last Fortress - Toride",          GAME_NO_SOUND )
  4956: GAMEX( 1994, lastfero, lastfort, lastfort, lastfero, metro,    ROT0,   "Metro",                      "Last Fortress - Toride (Erotic)", GAME_NO_SOUND )
  4957: GAMEX( 1994, toride2g, 0,        toride2g, toride2g, metro,    ROT0,   "Metro",                      "Toride II Adauchi Gaiden",        GAME_NO_SOUND )
  4958: GAMEX( 1995, daitorid, 0,        daitorid, daitorid, metro,    ROT0,   "Metro",                      "Daitoride",                       GAME_NO_SOUND )
  4959: GAME ( 1995, dokyusei, 0,        dokyusei, dokyusei, gakusai,  ROT0,   "Make Software / Elf / Media Trading", "Mahjong Doukyuusei"                    )
  4960: GAME ( 1995, dokyusp,  0,        dokyusp,  gakusai,  gakusai,  ROT0,   "Make Software / Elf / Media Trading", "Mahjong Doukyuusei Special"            )
  4961: GAMEX( 1995, pururun,  0,        pururun,  pururun,  metro,    ROT0,   "Metro / Banpresto",          "Pururun",                         GAME_NO_SOUND )
  4962: GAMEX( 1995, puzzli,   0,        daitorid, puzzli,   metro,    ROT0,   "Metro / Banpresto",          "Puzzli",                          GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
  4963: GAMEX( 1996, 3kokushi, 0,        3kokushi, 3kokushi, karatour, ROT0,   "Mitchell",                   "Sankokushi (Japan)",              GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
  4964: GAME ( 1996, balcube,  0,        balcube,  balcube,  balcube,  ROT0,   "Metro",                      "Bal Cube"                                       )
  4965: GAME ( 1996, bangball, 0,        bangball, bangball, balcube,  ROT0,   "Banpresto / Kunihiko Tashiro+Goodhouse", "Bang Bang Ball (v1.05)"             )
  4966: GAMEX( 1996, mouja,    0,        mouja,    mouja,    mouja,    ROT0,   "Etona",                      "Mouja (Japan)",                   GAME_NO_COCKTAIL )
  4967: GAMEX( 1997, gakusai,  0,        gakusai,  gakusai,  gakusai,  ROT0,   "MakeSoft",                   "Mahjong Gakuensai (Japan)",       GAME_IMPERFECT_GRAPHICS )
  4968: GAME ( 1998, gakusai2, 0,        gakusai2, gakusai,  gakusai,  ROT0,   "MakeSoft",                   "Mahjong Gakuensai 2 (Japan)"                    )
  4969: 
  4970: GAMEX( 1994, blzntrnd, 0,        blzntrnd, blzntrnd, blzntrnd, ROT0,   "Human Amusement",            "Blazing Tornado",                 GAME_IMPERFECT_GRAPHICS )
  4971: 




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