QuarterArcade Coin-Op Tech Net

Quick Nav: # A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Coin-Op : Arcade : F-1 Dream : VM Driver Source

Source Listing


     1: /***************************************************************************
     2: 
     3: Tiger Road (C) 1987 Romstar/Capcom USA
     4: 
     5: Please contact Phil Stroffolino (phil@maya.com) if there are any questions
     6: regarding this driver.
     7: 
     8: F1 Dream protection workaround by Eric Hustvedt
     9: 
    10: Memory Overview:
    11: 	0xfe0800    sprites
    12: 	0xfec000    text
    13: 	0xfe4000    input ports,dip switches (read); sound out, video reg (write)
    14: 	0xfe4002	protection (F1 Dream only)
    15: 	0xfe8000    scroll registers
    16: 	0xff8200    palette
    17: 	0xffC000    working RAM
    18: 	0xffEC70    high scores (not saved)
    19: 
    20: ***************************************************************************/
    21: 
    22: #include "driver.h" 
    23: #include "vidhrdw/generic.h" 
    24: #include "cpu/z80/z80.h" 
    25: 
    26: 
    27: extern WRITE16_HANDLER( tigeroad_videoram_w );
    28: extern WRITE16_HANDLER( tigeroad_videoctrl_w );
    29: extern WRITE16_HANDLER( tigeroad_scroll_w );
    30: extern VIDEO_START( tigeroad );
    31: extern VIDEO_UPDATE( tigeroad );
    32: extern VIDEO_EOF( tigeroad );
    33: 
    34: 
    35: static data16_t *ram16;
    36: 
    37: /*
    38:  F1 Dream protection code written by Eric Hustvedt (hustvedt@ma.ultranet.com).
    39: 
    40:  The genuine F1 Dream game uses an 8751 microcontroller as a protection measure.
    41:  Since the microcontroller's ROM is unavailable all interactions with it are handled
    42:  via blackbox algorithm.
    43: 
    44:  Some notes:
    45:  - The 8751 is triggered via location 0xfe4002, in place of the soundlatch normally
    46:  	present. The main cpu writes 0 to the location when it wants the 8751 to perform some work.
    47:  - The 8751 has memory which shadows locations 0xffffe0-0xffffff of the main cpu's address space.
    48:  - The word at 0xffffe0 contains an 'opcode' which is written just before the write to 0xfe4002.
    49:  - Some of the writes to the soundlatch may not be handled. 0x27fc is the main sound routine, the
    50:  	other locations are less frequently used.
    51: */
    52: 
    53: static int f1dream_613ea_lookup[16] = {
    54: 0x0052, 0x0031, 0x00a7, 0x0043, 0x0007, 0x008a, 0x00b1, 0x0066, 0x009f, 0x00cc, 0x0009, 0x004d, 0x0033, 0x0028, 0x00d0, 0x0025};
    55: 
    56: static int f1dream_613eb_lookup[256] = {
    57: 0x0001, 0x00b5, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b7, 0x0001, 0x00b8, 0x002f, 0x002f, 0x002f, 0x002f, 0x00b9,
    58: 0x00aa, 0x0031, 0x00ab, 0x00ab, 0x00ab, 0x00ac, 0x00ad, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x0091,
    59: 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x009b, 0x0091,
    60: 0x00bc, 0x0092, 0x000b, 0x0009, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0073, 0x0001, 0x0098, 0x0099, 0x009a, 0x009b, 0x0091,
    61: 0x00bc, 0x007b, 0x000b, 0x0008, 0x0087, 0x0088, 0x0089, 0x008a, 0x007f, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091,
    62: 0x00bd, 0x007b, 0x000b, 0x0007, 0x007c, 0x007d, 0x007e, 0x0001, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086,
    63: 0x00bc, 0x0070, 0x000b, 0x0006, 0x0071, 0x0072, 0x0073, 0x0001, 0x0074, 0x000d, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a,
    64: 0x00bc, 0x00ba, 0x000a, 0x0005, 0x0065, 0x0066, 0x0067, 0x0068, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
    65: 0x00bc, 0x0059, 0x0001, 0x0004, 0x005a, 0x005b, 0x0001, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064,
    66: 0x0014, 0x004d, 0x0001, 0x0003, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0001, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
    67: 0x0014, 0x0043, 0x0001, 0x0002, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00bb, 0x004a, 0x004b, 0x004c, 0x0001, 0x0001,
    68: 0x0014, 0x002b, 0x0001, 0x0038, 0x0039, 0x003a, 0x003b, 0x0031, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0001,
    69: 0x0014, 0x002d, 0x0001, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0001, 0x0014, 0x0037, 0x0001,
    70: 0x0014, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x0001, 0x0001, 0x0001, 0x002a, 0x002b, 0x002c,
    71: 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001e, 0x001e, 0x001e, 0x001f, 0x0020,
    72: 0x000c, 0x000d, 0x000e, 0x0001, 0x000f, 0x0010, 0x0011, 0x0012, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x0013 };
    73: 
    74: static int f1dream_17b74_lookup[128] = {
    75: 0x0003, 0x0040, 0x0005, 0x0080, 0x0003, 0x0080, 0x0005, 0x00a0, 0x0003, 0x0040, 0x0005, 0x00c0, 0x0003, 0x0080, 0x0005, 0x00e0,
    76: 0x0003, 0x0040, 0x0006, 0x0000, 0x0003, 0x0080, 0x0006, 0x0020, 0x0003, 0x0040, 0x0006, 0x0040, 0x0003, 0x0080, 0x0006, 0x0060,
    77: 0x0000, 0x00a0, 0x0009, 0x00e0, 0x0000, 0x00e0, 0x000a, 0x0000, 0x0000, 0x00a0, 0x000a, 0x0020, 0x0000, 0x00e0, 0x000a, 0x0040,
    78: 0x0000, 0x00a0, 0x000a, 0x0060, 0x0000, 0x00e0, 0x000a, 0x0080, 0x0000, 0x00a0, 0x000a, 0x00a0, 0x0000, 0x00e0, 0x000a, 0x00c0,
    79: 0x0003, 0x0040, 0x0005, 0x0080, 0x0003, 0x0080, 0x0005, 0x00a0, 0x0003, 0x0040, 0x0005, 0x00c0, 0x0003, 0x0080, 0x0005, 0x00e0,
    80: 0x0003, 0x0040, 0x0006, 0x0000, 0x0003, 0x0080, 0x0006, 0x0020, 0x0003, 0x0040, 0x0006, 0x0040, 0x0003, 0x0080, 0x0006, 0x0060,
    81: 0x0000, 0x00a0, 0x0009, 0x00e0, 0x0000, 0x00e0, 0x000a, 0x0000, 0x0000, 0x00a0, 0x000a, 0x0020, 0x0000, 0x00e0, 0x000a, 0x0040,
    82: 0x0000, 0x00a0, 0x000a, 0x0060, 0x0000, 0x00e0, 0x000a, 0x0080, 0x0000, 0x00a0, 0x000a, 0x00a0, 0x0000, 0x00e0, 0x000a, 0x00c0 };
    83: 
    84: static int f1dream_2450_lookup[32] = {
    85: 0x0003, 0x0080, 0x0006, 0x0060, 0x0000, 0x00e0, 0x000a, 0x00c0, 0x0003, 0x0080, 0x0006, 0x0060, 0x0000, 0x00e0, 0x000a, 0x00c0,
    86: 0x0003, 0x0080, 0x0006, 0x0060, 0x0000, 0x00e0, 0x000a, 0x00c0, 0x0003, 0x0080, 0x0006, 0x0060, 0x0000, 0x00e0, 0x000a, 0x00c0 };
    87: 
    88: static void f1dream_protection_w(void)
    89: {
    90: 	int indx;
    91: 	int value = 255;
    92: 	int prevpc = activecpu_get_previouspc();
    93: 
    94: 	if (prevpc == 0x244c)
    95: 	{
    96: 		/* Called once, when a race is started.*/
    97: 		indx = ram16[0x3ff0/2];
    98: 		ram16[0x3fe6/2] = f1dream_2450_lookup[indx];
    99: 		ram16[0x3fe8/2] = f1dream_2450_lookup[++indx];
   100: 		ram16[0x3fea/2] = f1dream_2450_lookup[++indx];
   101: 		ram16[0x3fec/2] = f1dream_2450_lookup[++indx];
   102: 	}
   103: 	else if (prevpc == 0x613a)
   104: 	{
   105: 		/* Called for every sprite on-screen.*/
   106: 		if (ram16[0x3ff6/2] < 15)
   107: 		{
   108: 			indx = f1dream_613ea_lookup[ram16[0x3ff6/2]] - ram16[0x3ff4/2];
   109: 			if (indx > 255)
   110: 			{
   111: 				indx <<= 4;
   112: 				indx += ram16[0x3ff6/2] & 0x00ff;
   113: 				value = f1dream_613eb_lookup[indx];
   114: 			}
   115: 		}
   116: 
   117: 		ram16[0x3ff2/2] = value;
   118: 	}
   119: 	else if (prevpc == 0x17b70)
   120: 	{
   121: 		/* Called only before a real race, not a time trial.*/
   122: 		if (ram16[0x3ff0/2] >= 0x04) indx = 128;
   123: 		else if (ram16[0x3ff0/2] > 0x02) indx = 96;
   124: 		else if (ram16[0x3ff0/2] == 0x02) indx = 64;
   125: 		else if (ram16[0x3ff0/2] == 0x01) indx = 32;
   126: 		else indx = 0;
   127: 
   128: 		indx += ram16[0x3fee/2];
   129: 		if (indx < 128)
   130: 		{
   131: 			ram16[0x3fe6/2] = f1dream_17b74_lookup[indx];
   132: 			ram16[0x3fe8/2] = f1dream_17b74_lookup[++indx];
   133: 			ram16[0x3fea/2] = f1dream_17b74_lookup[++indx];
   134: 			ram16[0x3fec/2] = f1dream_17b74_lookup[++indx];
   135: 		}
   136: 		else
   137: 		{
   138: 			ram16[0x3fe6/2] = 0x00ff;
   139: 			ram16[0x3fe8/2] = 0x00ff;
   140: 			ram16[0x3fea/2] = 0x00ff;
   141: 			ram16[0x3fec/2] = 0x00ff;
   142: 		}
   143: 	}
   144: 	else if ((prevpc == 0x27f8) || (prevpc == 0x511a) || (prevpc == 0x5142) || (prevpc == 0x516a))
   145: 	{
   146: 		/* The main CPU stuffs the byte for the soundlatch into 0xfffffd.*/
   147: 		soundlatch_w(2,ram16[0x3ffc/2]);
   148: 	}
   149: }
   150: 
   151: static WRITE16_HANDLER( f1dream_control_w )
   152: {
   153: 	logerror("protection write, PC: %04x  FFE1 Value:%01x\n",activecpu_get_pc(), ram16[0x3fe0/2]);
   154: 	f1dream_protection_w();
   155: }
   156: 
   157: static WRITE16_HANDLER( tigeroad_soundcmd_w )
   158: {
   159: 	if (ACCESSING_MSB)
   160: 		soundlatch_w(offset,data >> 8);
   161: }
   162: 
   163: static WRITE_HANDLER( msm5205_w )
   164: {
   165: 	MSM5205_reset_w(offset,(data>>7)&1);
   166: 	MSM5205_data_w(offset,data);
   167: 	MSM5205_vclk_w(offset,1);
   168: 	MSM5205_vclk_w(offset,0);
   169: }
   170: 
   171: 
   172: /***************************************************************************/
   173: 
   174: static MEMORY_READ16_START( readmem )
   175: 	{ 0x000000, 0x03ffff, MRA16_ROM },
   176: 	{ 0xfe0800, 0xfe0cff, MRA16_RAM },
   177: 	{ 0xfe0d00, 0xfe1807, MRA16_RAM },
   178: 	{ 0xfe4000, 0xfe4001, input_port_0_word_r },
   179: 	{ 0xfe4002, 0xfe4003, input_port_1_word_r },
   180: 	{ 0xfe4004, 0xfe4005, input_port_2_word_r },
   181: 	{ 0xfec000, 0xfec7ff, MRA16_RAM },
   182: 	{ 0xff8200, 0xff867f, MRA16_RAM },
   183: 	{ 0xffc000, 0xffffff, MRA16_RAM },
   184: MEMORY_END
   185: 
   186: static MEMORY_WRITE16_START( writemem )
   187: 	{ 0x000000, 0x03ffff, MWA16_ROM },
   188: 	{ 0xfe0800, 0xfe0cff, MWA16_RAM, &spriteram16, &spriteram_size },
   189: 	{ 0xfe0d00, 0xfe1807, MWA16_RAM },  /* still part of OBJ RAM */
   190: 	{ 0xfe4000, 0xfe4001, tigeroad_videoctrl_w },	/* char bank, coin counters, + ? */
   191: 	/*{ 0xfe4002, 0xfe4003, tigeroad_soundcmd_w }, added by init_tigeroad() */
   192: 	{ 0xfec000, 0xfec7ff, tigeroad_videoram_w, &videoram16 },
   193: 	{ 0xfe8000, 0xfe8003, tigeroad_scroll_w },
   194: 	{ 0xfe800e, 0xfe800f, MWA16_RAM },    /* fe800e = watchdog or IRQ acknowledge */
   195: 	{ 0xff8200, 0xff867f, paletteram16_xxxxRRRRGGGGBBBB_word_w, &paletteram16 },
   196: 	{ 0xffc000, 0xffffff, MWA16_RAM, &ram16 },
   197: MEMORY_END
   198: 
   199: static MEMORY_READ_START( sound_readmem )
   200: 	{ 0x0000, 0x7fff, MRA_ROM },
   201: 	{ 0x8000, 0x8000, YM2203_status_port_0_r },
   202: 	{ 0xa000, 0xa000, YM2203_status_port_1_r },
   203: 	{ 0xc000, 0xc7ff, MRA_RAM },
   204: 	{ 0xe000, 0xe000, soundlatch_r },
   205: MEMORY_END
   206: 
   207: static MEMORY_WRITE_START( sound_writemem )
   208: 	{ 0x0000, 0x7fff, MWA_ROM },
   209: 	{ 0x8000, 0x8000, YM2203_control_port_0_w },
   210: 	{ 0x8001, 0x8001, YM2203_write_port_0_w },
   211: 	{ 0xa000, 0xa000, YM2203_control_port_1_w },
   212: 	{ 0xa001, 0xa001, YM2203_write_port_1_w },
   213: 	{ 0xc000, 0xc7ff, MWA_RAM },
   214: MEMORY_END
   215: 
   216: static PORT_WRITE_START( sound_writeport )
   217: 	{ 0x7f, 0x7f, soundlatch2_w },
   218: PORT_END
   219: 
   220: static MEMORY_READ_START( sample_readmem )
   221: 	{ 0x0000, 0xffff, MRA_ROM },
   222: MEMORY_END
   223: 
   224: /* yes, no RAM */
   225: static MEMORY_WRITE_START( sample_writemem )
   226: 	{ 0x0000, 0xffff, MWA_ROM },
   227: MEMORY_END
   228: 
   229: static PORT_READ_START( sample_readport )
   230: 	{ 0x00, 0x00, soundlatch2_r },
   231: PORT_END
   232: 
   233: static PORT_WRITE_START( sample_writeport )
   234: 	{ 0x01, 0x01, msm5205_w },
   235: PORT_END
   236: 
   237: 
   238: 
   239: INPUT_PORTS_START( tigeroad )
   240: 	PORT_START  /* IN0 */
   241: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
   242: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
   243: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
   244: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
   245: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
   246: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
   247: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
   248: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
   249: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
   250: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
   251: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
   252: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
   253: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
   254: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
   255: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
   256: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
   257: 
   258: 	PORT_START
   259: 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
   260: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
   261: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
   262: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
   263: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
   264: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
   265: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_COIN3 )
   266: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN1 )
   267: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN2 )
   268: 
   269: 	PORT_START  /* dipswitch */
   270: 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_B ) )
   271: 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
   272: 	PORT_DIPSETTING(      0x0001, DEF_STR( 3C_1C ) )
   273: 	PORT_DIPSETTING(      0x0002, DEF_STR( 2C_1C ) )
   274: 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
   275: 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
   276: 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
   277: 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
   278: 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_6C ) )
   279: 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_A ) )
   280: 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
   281: 	PORT_DIPSETTING(      0x0008, DEF_STR( 3C_1C ) )
   282: 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )
   283: 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
   284: 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
   285: 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
   286: 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
   287: 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_6C ) )
   288: 	PORT_SERVICE( 0x0040, IP_ACTIVE_LOW )
   289: 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) )
   290: 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ))
   291: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   292: 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) )
   293: 	PORT_DIPSETTING(      0x0300, "3" )
   294: 	PORT_DIPSETTING(      0x0200, "4" )
   295: 	PORT_DIPSETTING(      0x0100, "5" )
   296: 	PORT_DIPSETTING(      0x0000, "7" )
   297: 	PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Cabinet ) )
   298: 	PORT_DIPSETTING(      0x0000, DEF_STR( Upright ))
   299: 	PORT_DIPSETTING(      0x0400, DEF_STR( Cocktail ))
   300: 	PORT_DIPNAME( 0x1800, 0x1800, DEF_STR( Bonus_Life ) )
   301: 	PORT_DIPSETTING(      0x1800, "20000 70000 70000" )
   302: 	PORT_DIPSETTING(      0x1000, "20000 80000 80000" )
   303: 	PORT_DIPSETTING(      0x0800, "30000 80000 80000" )
   304: 	PORT_DIPSETTING(      0x0000, "30000 90000 90000" )
   305: 	PORT_DIPNAME( 0x6000, 0x6000, DEF_STR( Difficulty ) )
   306: 	PORT_DIPSETTING(      0x2000, "Very Easy" )
   307: 	PORT_DIPSETTING(      0x4000, "Easy" )
   308: 	PORT_DIPSETTING(      0x6000, "Normal" )
   309: 	PORT_DIPSETTING(      0x0000, "Difficult" )
   310: 	PORT_DIPNAME( 0x8000, 0x8000, "Allow Continue" )
   311: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
   312: 	PORT_DIPSETTING(      0x8000, DEF_STR( Yes ) )
   313: INPUT_PORTS_END
   314: 
   315: INPUT_PORTS_START( toramich )
   316: 	PORT_START  /* IN0 */
   317: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
   318: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
   319: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
   320: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
   321: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
   322: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
   323: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
   324: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
   325: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
   326: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
   327: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
   328: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
   329: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
   330: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
   331: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
   332: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
   333: 
   334: 	PORT_START
   335: 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
   336: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
   337: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
   338: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
   339: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
   340: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
   341: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_COIN3 )
   342: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN1 )
   343: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN2 )
   344: 
   345: 	PORT_START  /* dipswitch */
   346: 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_B ) )
   347: 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
   348: 	PORT_DIPSETTING(      0x0001, DEF_STR( 3C_1C ) )
   349: 	PORT_DIPSETTING(      0x0002, DEF_STR( 2C_1C ) )
   350: 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
   351: 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
   352: 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
   353: 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
   354: 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_6C ) )
   355: 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_A ) )
   356: 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
   357: 	PORT_DIPSETTING(      0x0008, DEF_STR( 3C_1C ) )
   358: 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )
   359: 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
   360: 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
   361: 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
   362: 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
   363: 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_6C ) )
   364: 	PORT_SERVICE( 0x0040, IP_ACTIVE_LOW )
   365: 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) )
   366: 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ))
   367: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   368: 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) )
   369: 	PORT_DIPSETTING(      0x0300, "3" )
   370: 	PORT_DIPSETTING(      0x0200, "4" )
   371: 	PORT_DIPSETTING(      0x0100, "5" )
   372: 	PORT_DIPSETTING(      0x0000, "7" )
   373: 	PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Cabinet ) )
   374: 	PORT_DIPSETTING(      0x0000, DEF_STR( Upright ))
   375: 	PORT_DIPSETTING(      0x0400, DEF_STR( Cocktail ))
   376: 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Bonus_Life ) )
   377: 	PORT_DIPSETTING(      0x0800, "20000 70000 70000" )
   378: 	PORT_DIPSETTING(      0x0000, "20000 80000 80000" )
   379: 	PORT_DIPNAME( 0x1000, 0x1000, "Allow Level Select" )
   380: 	PORT_DIPSETTING(      0x1000, DEF_STR( No ) )
   381: 	PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
   382: 	PORT_DIPNAME( 0x6000, 0x6000, DEF_STR( Difficulty ) )
   383: 	PORT_DIPSETTING(      0x4000, "Easy" )
   384: 	PORT_DIPSETTING(      0x6000, "Normal" )
   385: 	PORT_DIPSETTING(      0x2000, "Difficult" )
   386: 	PORT_DIPSETTING(      0x0000, "Very Difficult" )
   387: 	PORT_DIPNAME( 0x8000, 0x8000, "Allow Continue" )
   388: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
   389: 	PORT_DIPSETTING(      0x8000, DEF_STR( Yes ) )
   390: INPUT_PORTS_END
   391: 
   392: INPUT_PORTS_START( f1dream )
   393: 	PORT_START  /* IN0 */
   394: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
   395: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
   396: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
   397: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
   398: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
   399: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
   400: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
   401: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
   402: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
   403: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
   404: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
   405: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
   406: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
   407: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
   408: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
   409: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
   410: 
   411: 	PORT_START
   412: 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
   413: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
   414: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
   415: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
   416: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
   417: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
   418: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_COIN3 )
   419: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN1 )
   420: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN2 )
   421: 
   422: 	PORT_START  /* dipswitch */
   423: 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_B ) )
   424: 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
   425: 	PORT_DIPSETTING(      0x0001, DEF_STR( 3C_1C ) )
   426: 	PORT_DIPSETTING(      0x0002, DEF_STR( 2C_1C ) )
   427: 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
   428: 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
   429: 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
   430: 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
   431: 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_6C ) )
   432: 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_A ) )
   433: 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
   434: 	PORT_DIPSETTING(      0x0008, DEF_STR( 3C_1C ) )
   435: 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )
   436: 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
   437: 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
   438: 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
   439: 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
   440: 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_6C ) )
   441: 	PORT_SERVICE( 0x0040, IP_ACTIVE_LOW )
   442: 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) )
   443: 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ))
   444: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   445: 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) )
   446: 	PORT_DIPSETTING(      0x0300, "3" )
   447: 	PORT_DIPSETTING(      0x0200, "4" )
   448: 	PORT_DIPSETTING(      0x0100, "5" )
   449: 	PORT_DIPSETTING(      0x0000, "7" )
   450: 	PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Cabinet ) )
   451: 	PORT_DIPSETTING(      0x0000, DEF_STR( Upright ))
   452: 	PORT_DIPSETTING(      0x0400, DEF_STR( Cocktail ))
   453: 	PORT_DIPNAME( 0x1800, 0x1800, "F1 Up Point" )
   454: 	PORT_DIPSETTING(      0x1800, "12" )
   455: 	PORT_DIPSETTING(      0x1000, "16" )
   456: 	PORT_DIPSETTING(      0x0800, "18" )
   457: 	PORT_DIPSETTING(      0x0000, "20" )
   458: 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Difficulty ) )
   459: 	PORT_DIPSETTING(      0x2000, "Normal" )
   460: 	PORT_DIPSETTING(      0x0000, "Difficult" )
   461: 	PORT_DIPNAME( 0x4000, 0x0000, "Version" )
   462: 	PORT_DIPSETTING(      0x0000, "International" )
   463: 	PORT_DIPSETTING(      0x4000, "Japan" )
   464: 	PORT_DIPNAME( 0x8000, 0x8000, "Allow Continue" )
   465: 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
   466: 	PORT_DIPSETTING(      0x8000, DEF_STR( Yes ) )
   467: INPUT_PORTS_END
   468: 
   469: 
   470: 
   471: static struct GfxLayout text_layout =
   472: {
   473: 	8,8,
   474: 	RGN_FRAC(1,1),
   475: 	2,
   476: 	{ 4, 0 },
   477: 	{ 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3 },
   478: 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
   479: 	16*8
   480: };
   481: 
   482: static struct GfxLayout tile_layout =
   483: {
   484: 	32,32,
   485: 	RGN_FRAC(1,2),
   486: 	4,
   487: 	{ RGN_FRAC(1,2)+4, RGN_FRAC(1,2)+0, 4, 0 },
   488: 	{
   489: 		0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3,
   490: 		64*8+0, 64*8+1, 64*8+2, 64*8+3, 64*8+8+0, 64*8+8+1, 64*8+8+2, 64*8+8+3,
   491: 		2*64*8+0, 2*64*8+1, 2*64*8+2, 2*64*8+3, 2*64*8+8+0, 2*64*8+8+1, 2*64*8+8+2, 2*64*8+8+3,
   492: 		3*64*8+0, 3*64*8+1, 3*64*8+2, 3*64*8+3, 3*64*8+8+0, 3*64*8+8+1, 3*64*8+8+2, 3*64*8+8+3,
   493: 	},
   494: 	{
   495: 		0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
   496: 		8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16,
   497: 		16*16, 17*16, 18*16, 19*16, 20*16, 21*16, 22*16, 23*16,
   498: 		24*16, 25*16, 26*16, 27*16, 28*16, 29*16, 30*16, 31*16
   499: 	},
   500: 	256*8
   501: };
   502: 
   503: static struct GfxLayout sprite_layout =
   504: {
   505: 	16,16,
   506: 	RGN_FRAC(1,4),
   507: 	4,
   508: 	{ RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
   509: 	{ 0, 1, 2, 3, 4, 5, 6, 7,
   510: 			16*8+0, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+7 },
   511: 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
   512: 			8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
   513: 	32*8
   514: };
   515: 
   516: static struct GfxDecodeInfo gfxdecodeinfo[] =
   517: {
   518: 	{ REGION_GFX1, 0, &text_layout,   512, 16 },   /* colors 512-575 */
   519: 	{ REGION_GFX2, 0, &tile_layout,     0, 16 },   /* colors   0-255 */
   520: 	{ REGION_GFX3, 0, &sprite_layout, 256, 16 },   /* colors 256-511 */
   521: 	{ -1 } /* end of array */
   522: };
   523: 
   524: 
   525: 
   526: /* handler called by the 2203 emulator when the internal timers cause an IRQ */
   527: static void irqhandler(int irq)
   528: {
   529: 	cpu_set_irq_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE);
   530: }
   531: 
   532: static struct YM2203interface ym2203_interface =
   533: {
   534: 	2,          /* 2 chips */
   535: 	3579545,    /* 3.579 MHz ? */
   536: 	{ YM2203_VOL(25,25), YM2203_VOL(25,25) },
   537: 	{ 0 },
   538: 	{ 0 },
   539: 	{ 0 },
   540: 	{ 0 },
   541: 	{ irqhandler }
   542: };
   543: 
   544: static struct MSM5205interface msm5205_interface =
   545: {
   546: 	1,		/* 1 chip */
   547: 	384000,	/* 384KHz ? */
   548: 	{ 0 },	/* interrupt function */
   549: 	{ MSM5205_SEX_4B },	/* 4KHz playback ?  */
   550: 	{ 100 }
   551: };
   552: 
   553: 
   554: static MACHINE_DRIVER_START( tigeroad )
   555: 
   556: 	/* basic machine hardware */
   557: 	MDRV_CPU_ADD(M68000, 6000000) /* ? Main clock is 24MHz */
   558: 	MDRV_CPU_MEMORY(readmem,writemem)
   559: 	MDRV_CPU_VBLANK_INT(irq2_line_hold,1)
   560: 
   561: 	MDRV_CPU_ADD(Z80, 4000000)
   562: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)    /* 4 MHz ??? */
   563: 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
   564: 	MDRV_CPU_PORTS(0,sound_writeport)
   565: 								/* IRQs are triggered by the YM2203 */
   566: 	MDRV_FRAMES_PER_SECOND(60)
   567: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   568: 
   569: 	/* video hardware */
   570: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_BUFFERS_SPRITERAM)
   571: 	MDRV_SCREEN_SIZE(32*8, 32*8)
   572: 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
   573: 	MDRV_GFXDECODE(gfxdecodeinfo)
   574: 	MDRV_PALETTE_LENGTH(576)
   575: 
   576: 	MDRV_VIDEO_START(tigeroad)
   577: 	MDRV_VIDEO_EOF(tigeroad)
   578: 	MDRV_VIDEO_UPDATE(tigeroad)
   579: 
   580: 	/* sound hardware */
   581: 	MDRV_SOUND_ADD(YM2203, ym2203_interface)
   582: MACHINE_DRIVER_END
   583: 
   584: 
   585: /* same as above but with additional Z80 for samples playback */
   586: static MACHINE_DRIVER_START( toramich )
   587: 
   588: 	/* basic machine hardware */
   589: 	MDRV_IMPORT_FROM(tigeroad)
   590: 
   591: 	MDRV_CPU_ADD(Z80, 3579545)
   592: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* ? */
   593: 	MDRV_CPU_MEMORY(sample_readmem,sample_writemem)
   594: 	MDRV_CPU_PORTS(sample_readport,sample_writeport)
   595: 	MDRV_CPU_PERIODIC_INT(irq0_line_hold,4000)	/* ? */
   596: 
   597: 	/* sound hardware */
   598: 	MDRV_SOUND_ADD(MSM5205, msm5205_interface)
   599: MACHINE_DRIVER_END
   600: 
   601: 
   602: 
   603: /***************************************************************************
   604: 
   605:   Game driver(s)
   606: 
   607: ***************************************************************************/
   608: 
   609: ROM_START( tigeroad )
   610: 	ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256K for 68000 code */
   611: 	ROM_LOAD16_BYTE( "tru02.bin",    0x00000, 0x20000, CRC(8d283a95) SHA1(eb6c9225f79f62c22ae1e8980a557d896f598947) )
   612: 	ROM_LOAD16_BYTE( "tru04.bin",    0x00001, 0x20000, CRC(72e2ef20) SHA1(57ab7df2050042690ccfb1f2d170840f926dcf46) )
   613: 
   614: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* audio CPU */
   615: 	ROM_LOAD( "tru05.bin",    0x0000, 0x8000, CRC(f9a7c9bf) SHA1(4d37c71aa6523ac21c6e8b23f9957e75ec4304bf) )
   616: 
   617: 	/* no samples player in the English version */
   618: 
   619: 	ROM_REGION( 0x008000, REGION_GFX1, ROMREGION_DISPOSE )
   620: 	ROM_LOAD( "tr01.bin",     0x00000, 0x08000, CRC(74a9f08c) SHA1(458958c8d9a2af5df88bb24c9c5bcbd37d6856bc) ) /* 8x8 text */
   621: 
   622: 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
   623: 	ROM_LOAD( "tr-01a.bin",   0x00000, 0x20000, CRC(a8aa2e59) SHA1(792f50d688a4ffb574e41257816bc304d41f0458) ) /* tiles */
   624: 	ROM_LOAD( "tr-04a.bin",   0x20000, 0x20000, CRC(8863a63c) SHA1(11bfce5b09c5b8a781c658f035d5658c3710d189) )
   625: 	ROM_LOAD( "tr-02a.bin",   0x40000, 0x20000, CRC(1a2c5f89) SHA1(2a2aa2f1e2a0cdd4bbdb25236e49c7cc573db9e9) )
   626: 	ROM_LOAD( "tr05.bin",     0x60000, 0x20000, CRC(5bf453b3) SHA1(5eef151974c6b818a17756549d24a702e1f3a859) )
   627: 	ROM_LOAD( "tr-03a.bin",   0x80000, 0x20000, CRC(1e0537ea) SHA1(bc65f7104d5f7728b68b3dcb45151c41fc30aa0d) )
   628: 	ROM_LOAD( "tr-06a.bin",   0xa0000, 0x20000, CRC(b636c23a) SHA1(417e289745996bd00114df6ade591e702265d3a5) )
   629: 	ROM_LOAD( "tr-07a.bin",   0xc0000, 0x20000, CRC(5f907d4d) SHA1(1820c5c6e0b078db9c64655c7983ea115ad81036) )
   630: 	ROM_LOAD( "tr08.bin",     0xe0000, 0x20000, CRC(adee35e2) SHA1(6707cf43a697eb9465449a144ae4508afe2e6496) )
   631: 
   632: 	ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
   633: 	ROM_LOAD( "tr-09a.bin",   0x00000, 0x20000, CRC(3d98ad1e) SHA1(f12cdf50e1708ddae092b9784d4319a7d5f092bc) ) /* sprites */
   634: 	ROM_LOAD( "tr-10a.bin",   0x20000, 0x20000, CRC(8f6f03d7) SHA1(08a02cfb373040ea5ffbf5604f68df92a1338bb0) )
   635: 	ROM_LOAD( "tr-11a.bin",   0x40000, 0x20000, CRC(cd9152e5) SHA1(6df3c43c0c41289890296c2b2aeca915dfdae3b0) )
   636: 	ROM_LOAD( "tr-12a.bin",   0x60000, 0x20000, CRC(7d8a99d0) SHA1(af8221cfd2ce9aa3bf296981fb7fddd1e9ef4599) )
   637: 
   638: 	ROM_REGION( 0x08000, REGION_GFX4, 0 )	/* background tilemaps */
   639: 	ROM_LOAD( "tr13.bin",     0x0000, 0x8000, CRC(a79be1eb) SHA1(4191ccd48f7650930f9a4c2be0790239d7420bb1) )
   640: 
   641: 	ROM_REGION( 0x0100, REGION_PROMS, 0 )
   642: 	ROM_LOAD( "trprom.bin",   0x0000, 0x0100, CRC(ec80ae36) SHA1(397ec8fc1b106c8b8d4bf6798aa429e8768a101a) )	/* priority (not used) */
   643: ROM_END
   644: 
   645: ROM_START( toramich )
   646: 	ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256K for 68000 code */
   647: 	ROM_LOAD16_BYTE( "tr_02.bin",    0x00000, 0x20000, CRC(b54723b1) SHA1(dfad82e96dff072c967dd59e3db71fb3b43b6dcb) )
   648: 	ROM_LOAD16_BYTE( "tr_04.bin",    0x00001, 0x20000, CRC(ab432479) SHA1(b8ec547f7bab67107a7c83931c7ed89142a7af69) )
   649: 
   650: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* audio CPU */
   651: 	ROM_LOAD( "tr_05.bin",    0x0000, 0x8000, CRC(3ebe6e62) SHA1(6f5708b6ff8c91bc706f73300e0785f15999d570) )
   652: 
   653: 	ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* samples player */
   654: 	ROM_LOAD( "tr_03.bin",    0x0000, 0x10000, CRC(ea1807ef) SHA1(f856e7b592c6df81586821284ea2220468c5ea9d) )
   655: 
   656: 	ROM_REGION( 0x008000, REGION_GFX1, ROMREGION_DISPOSE )
   657: 	ROM_LOAD( "tr01.bin",     0x00000, 0x08000, CRC(74a9f08c) SHA1(458958c8d9a2af5df88bb24c9c5bcbd37d6856bc) ) /* 8x8 text */
   658: 
   659: 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
   660: 	ROM_LOAD( "tr-01a.bin",   0x00000, 0x20000, CRC(a8aa2e59) SHA1(792f50d688a4ffb574e41257816bc304d41f0458) ) /* tiles */
   661: 	ROM_LOAD( "tr-04a.bin",   0x20000, 0x20000, CRC(8863a63c) SHA1(11bfce5b09c5b8a781c658f035d5658c3710d189) )
   662: 	ROM_LOAD( "tr-02a.bin",   0x40000, 0x20000, CRC(1a2c5f89) SHA1(2a2aa2f1e2a0cdd4bbdb25236e49c7cc573db9e9) )
   663: 	ROM_LOAD( "tr05.bin",     0x60000, 0x20000, CRC(5bf453b3) SHA1(5eef151974c6b818a17756549d24a702e1f3a859) )
   664: 	ROM_LOAD( "tr-03a.bin",   0x80000, 0x20000, CRC(1e0537ea) SHA1(bc65f7104d5f7728b68b3dcb45151c41fc30aa0d) )
   665: 	ROM_LOAD( "tr-06a.bin",   0xa0000, 0x20000, CRC(b636c23a) SHA1(417e289745996bd00114df6ade591e702265d3a5) )
   666: 	ROM_LOAD( "tr-07a.bin",   0xc0000, 0x20000, CRC(5f907d4d) SHA1(1820c5c6e0b078db9c64655c7983ea115ad81036) )
   667: 	ROM_LOAD( "tr08.bin",     0xe0000, 0x20000, CRC(adee35e2) SHA1(6707cf43a697eb9465449a144ae4508afe2e6496) )
   668: 
   669: 	ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
   670: 	ROM_LOAD( "tr-09a.bin",   0x00000, 0x20000, CRC(3d98ad1e) SHA1(f12cdf50e1708ddae092b9784d4319a7d5f092bc) ) /* sprites */
   671: 	ROM_LOAD( "tr-10a.bin",   0x20000, 0x20000, CRC(8f6f03d7) SHA1(08a02cfb373040ea5ffbf5604f68df92a1338bb0) )
   672: 	ROM_LOAD( "tr-11a.bin",   0x40000, 0x20000, CRC(cd9152e5) SHA1(6df3c43c0c41289890296c2b2aeca915dfdae3b0) )
   673: 	ROM_LOAD( "tr-12a.bin",   0x60000, 0x20000, CRC(7d8a99d0) SHA1(af8221cfd2ce9aa3bf296981fb7fddd1e9ef4599) )
   674: 
   675: 	ROM_REGION( 0x08000, REGION_GFX4, 0 )	/* background tilemaps */
   676: 	ROM_LOAD( "tr13.bin",     0x0000, 0x8000, CRC(a79be1eb) SHA1(4191ccd48f7650930f9a4c2be0790239d7420bb1) )
   677: 
   678: 	ROM_REGION( 0x0100, REGION_PROMS, 0 )
   679: 	ROM_LOAD( "trprom.bin",   0x0000, 0x0100, CRC(ec80ae36) SHA1(397ec8fc1b106c8b8d4bf6798aa429e8768a101a) )	/* priority (not used) */
   680: ROM_END
   681: 
   682: ROM_START( f1dream )
   683: 	ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256K for 68000 code */
   684: 	ROM_LOAD16_BYTE( "06j_02.bin",   0x00000, 0x20000, CRC(3c2ec697) SHA1(bccb431ad92455484420f91770e91db6d69b09ec) )
   685: 	ROM_LOAD16_BYTE( "06k_03.bin",   0x00001, 0x20000, CRC(85ebad91) SHA1(000f5c617417ff20ee9b378166776fecfacdff95) )
   686: 
   687: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* audio CPU */
   688: 	ROM_LOAD( "12k_04.bin",   0x0000, 0x8000, CRC(4b9a7524) SHA1(19004958c19ac0af35f2c97790b0082ee2c15bc4) )
   689: 
   690: 	ROM_REGION( 0x008000, REGION_GFX1, ROMREGION_DISPOSE )
   691: 	ROM_LOAD( "10d_01.bin",   0x00000, 0x08000, CRC(361caf00) SHA1(8a109e4e116d0c5eea86f9c57c05359754daa5b9) ) /* 8x8 text */
   692: 
   693: 	ROM_REGION( 0x060000, REGION_GFX2, ROMREGION_DISPOSE )
   694: 	ROM_LOAD( "03f_12.bin",   0x00000, 0x10000, CRC(bc13e43c) SHA1(f9528839858d7a45395062a43b71d80400c73173) ) /* tiles */
   695: 	ROM_LOAD( "01f_10.bin",   0x10000, 0x10000, CRC(f7617ad9) SHA1(746a0ec433d5246ac4dbae17d6498e3d154e2df1) )
   696: 	ROM_LOAD( "03h_14.bin",   0x20000, 0x10000, CRC(e33cd438) SHA1(89a6faea19e8a01b38ba45413609603e559877e9) )
   697: 	ROM_LOAD( "02f_11.bin",   0x30000, 0x10000, CRC(4aa49cd7) SHA1(b7052d51a3cb570299f4db1492a1293c4d8b067f) )
   698: 	ROM_LOAD( "17f_09.bin",   0x40000, 0x10000, CRC(ca622155) SHA1(00ae4a8e9cad2c42a10b410b594b0e414ada6cfe) )
   699: 	ROM_LOAD( "02h_13.bin",   0x50000, 0x10000, CRC(2a63961e) SHA1(a35e9bf0408716f460487a8d2ae336572a98d2fb) )
   700: 
   701: 	ROM_REGION( 0x040000, REGION_GFX3, ROMREGION_DISPOSE )
   702: 	ROM_LOAD( "03b_06.bin",   0x00000, 0x10000, CRC(5e54e391) SHA1(475c968bfeb41b0448e621f59724c7b70d184d36) ) /* sprites */
   703: 	ROM_LOAD( "02b_05.bin",   0x10000, 0x10000, CRC(cdd119fd) SHA1(e279ada53f5a1e2ada0195b93399731af213f518) )
   704: 	ROM_LOAD( "03d_08.bin",   0x20000, 0x10000, CRC(811f2e22) SHA1(cca7e8cc43408c2c3067a731a98a8a6418a000aa) )
   705: 	ROM_LOAD( "02d_07.bin",   0x30000, 0x10000, CRC(aa9a1233) SHA1(c2079ad81d67b54483ea5f69ac2edf276ad58ca9) )
   706: 
   707: 	ROM_REGION( 0x08000, REGION_GFX4, 0 )	/* background tilemaps */
   708: 	ROM_LOAD( "07l_15.bin",   0x0000, 0x8000, CRC(978758b7) SHA1(ebd415d70e2f1af3b1bd51f40e7d60f22369638c) )
   709: 
   710: 	ROM_REGION( 0x0100, REGION_PROMS, 0 )
   711: 	ROM_LOAD( "09e_tr.bin",   0x0000, 0x0100, CRC(ec80ae36) SHA1(397ec8fc1b106c8b8d4bf6798aa429e8768a101a) )	/* priority (not used) */
   712: ROM_END
   713: 
   714: ROM_START( f1dreamb )
   715: 	ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256K for 68000 code */
   716: 	ROM_LOAD16_BYTE( "f1d_04.bin",   0x00000, 0x10000, CRC(903febad) SHA1(73726b220ce45e1f13798e50fb6455671f1150f3) )
   717: 	ROM_LOAD16_BYTE( "f1d_05.bin",   0x00001, 0x10000, CRC(666fa2a7) SHA1(f38e71293368ddc586f437c38ced1d8ce91527ea) )
   718: 	ROM_LOAD16_BYTE( "f1d_02.bin",   0x20000, 0x10000, CRC(98973c4c) SHA1(a73d396a1c3e43e6250d9e0ab1902d6f754d1ed9) )
   719: 	ROM_LOAD16_BYTE( "f1d_03.bin",   0x20001, 0x10000, CRC(3d21c78a) SHA1(edee180131a5b4d507ce0490fd3890bdd03ce62f) )
   720: 
   721: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* audio CPU */
   722: 	ROM_LOAD( "12k_04.bin",   0x0000, 0x8000, CRC(4b9a7524) SHA1(19004958c19ac0af35f2c97790b0082ee2c15bc4) )
   723: 
   724: 	ROM_REGION( 0x008000, REGION_GFX1, ROMREGION_DISPOSE )
   725: 	ROM_LOAD( "10d_01.bin",   0x00000, 0x08000, CRC(361caf00) SHA1(8a109e4e116d0c5eea86f9c57c05359754daa5b9) ) /* 8x8 text */
   726: 
   727: 	ROM_REGION( 0x060000, REGION_GFX2, ROMREGION_DISPOSE )
   728: 	ROM_LOAD( "03f_12.bin",   0x00000, 0x10000, CRC(bc13e43c) SHA1(f9528839858d7a45395062a43b71d80400c73173) ) /* tiles */
   729: 	ROM_LOAD( "01f_10.bin",   0x10000, 0x10000, CRC(f7617ad9) SHA1(746a0ec433d5246ac4dbae17d6498e3d154e2df1) )
   730: 	ROM_LOAD( "03h_14.bin",   0x20000, 0x10000, CRC(e33cd438) SHA1(89a6faea19e8a01b38ba45413609603e559877e9) )
   731: 	ROM_LOAD( "02f_11.bin",   0x30000, 0x10000, CRC(4aa49cd7) SHA1(b7052d51a3cb570299f4db1492a1293c4d8b067f) )
   732: 	ROM_LOAD( "17f_09.bin",   0x40000, 0x10000, CRC(ca622155) SHA1(00ae4a8e9cad2c42a10b410b594b0e414ada6cfe) )
   733: 	ROM_LOAD( "02h_13.bin",   0x50000, 0x10000, CRC(2a63961e) SHA1(a35e9bf0408716f460487a8d2ae336572a98d2fb) )
   734: 
   735: 	ROM_REGION( 0x040000, REGION_GFX3, ROMREGION_DISPOSE )
   736: 	ROM_LOAD( "03b_06.bin",   0x00000, 0x10000, CRC(5e54e391) SHA1(475c968bfeb41b0448e621f59724c7b70d184d36) ) /* sprites */
   737: 	ROM_LOAD( "02b_05.bin",   0x10000, 0x10000, CRC(cdd119fd) SHA1(e279ada53f5a1e2ada0195b93399731af213f518) )
   738: 	ROM_LOAD( "03d_08.bin",   0x20000, 0x10000, CRC(811f2e22) SHA1(cca7e8cc43408c2c3067a731a98a8a6418a000aa) )
   739: 	ROM_LOAD( "02d_07.bin",   0x30000, 0x10000, CRC(aa9a1233) SHA1(c2079ad81d67b54483ea5f69ac2edf276ad58ca9) )
   740: 
   741: 	ROM_REGION( 0x08000, REGION_GFX4, 0 )	/* background tilemaps */
   742: 	ROM_LOAD( "07l_15.bin",   0x0000, 0x8000, CRC(978758b7) SHA1(ebd415d70e2f1af3b1bd51f40e7d60f22369638c) )
   743: 
   744: 	ROM_REGION( 0x0100, REGION_PROMS, 0 )
   745: 	ROM_LOAD( "09e_tr.bin",   0x0000, 0x0100, CRC(ec80ae36) SHA1(397ec8fc1b106c8b8d4bf6798aa429e8768a101a) )	/* priority (not used) */
   746: ROM_END
   747: 
   748: 
   749: 
   750: DRIVER_INIT( tigeroad )
   751: {
   752: 	install_mem_write16_handler(0, 0xfe4002, 0xfe4003, tigeroad_soundcmd_w);
   753: }
   754: 
   755: DRIVER_INIT( f1dream )
   756: {
   757: 	install_mem_write16_handler(0, 0xfe4002, 0xfe4003, f1dream_control_w);
   758: }
   759: 
   760: 
   761: 
   762: GAME ( 1987, tigeroad, 0,        tigeroad, tigeroad, tigeroad, ROT0, "Capcom (Romstar license)", "Tiger Road (US)" )
   763: GAME ( 1987, toramich, tigeroad, toramich, toramich, tigeroad, ROT0, "Capcom", "Tora-he no Michi (Japan)" )
   764: 
   765: /* F1 Dream has an Intel 8751 microcontroller for protection */
   766: GAME ( 1988, f1dream,  0,        tigeroad, f1dream,  f1dream,  ROT0, "Capcom (Romstar license)", "F-1 Dream" )
   767: GAME ( 1988, f1dreamb, f1dream,  tigeroad, f1dream,  tigeroad, ROT0, "bootleg", "F-1 Dream (bootleg)" )
   768: 




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