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

Source Listing


     1: /*
     2: To Do:
     3: - get sound working
     4: - map and test any remaining input ports
     5: 
     6: Looping
     7: (C)1981 Venture Line
     8: 
     9: 	Main CPU
    10: 		TMS9995
    11: 
    12: 	COP420 Microcontroller
    13: 		manages CPU communnication?
    14: 
    15: 	Sound CPU
    16: 		TMS9980
    17: 		AY-3-8910
    18: 		TMS5220 (SPEECH)
    19: 
    20: ---------------------------------------------------------------
    21: 
    22: Sky Bumper
    23: (C)1982 Venture Line
    24: 
    25: 	This is a ROM swap for Looping.  There are two 6116's on
    26: 	the CPU board, where there is only one on Looping.
    27: 
    28: ---------------------------------------------------------------
    29: 
    30: Super Tank
    31: (C)19?? Venture Line
    32: 
    33: Runs on simpler hardware; not yet emulated.
    34: 
    35: ===============================================================
    36: 
    37: LOOPING CHIP PLACEMENT
    38: 
    39: THERE ARE AT LEAST TWO VERSIONS OF THIS GAME
    40: VERSION NUMBERS FOR THIS PURPOSE ARE CHOSEN AT RANDOM
    41: 
    42: IC NAME   POSITION   BOARD  TYPE   IC NAME  POSITION  TYPE
    43: VER-1                         VER-2
    44: ---------------------------------------------------------------
    45: LOS-2-7   13A        I/O    2532    SAME    13A       2532
    46: LOS-1-1-2 11A         "      "      SAME    11A        "
    47: LOS-3-1   13C         "      "      I-O-V2  13C        "
    48: 
    49: VLI1      2A         ROM    2764    VLI-7-1 2A         "
    50: VLI3      5A          "      "      VLI-7-2 4A         "
    51: VLI9-5    8A          "      "      VLI-4-3 5A         "
    52: L056-6    9A          "      "      VLI-8-4 7A         "
    53:                       "             LO56-5  8A         "
    54:                       "             LO56-6  9A         "
    55:                       "             VLI-8-7 10A        "
    56:                   ON RIBBON CABLE   18S030  11B				color prom?
    57:                      REAR BD      LOG.1-9-3 6A        2716	tiles
    58:                                   LOG.3     8A         "	tiles
    59: */
    60: 
    61: #include "driver.h" 
    62: #include "vidhrdw/generic.h" 
    63: 
    64: static struct tilemap *tilemap;
    65: 
    66: PALETTE_INIT( looping )
    67: {
    68: 	int i;
    69: 	for (i = 0;i < 0x20;i++)
    70: 	{
    71: 		int bit0,bit1,bit2,r,g,b;
    72: 
    73: 		/* red component */
    74: 		bit0 = (*color_prom >> 0) & 0x01;
    75: 		bit1 = (*color_prom >> 1) & 0x01;
    76: 		bit2 = (*color_prom >> 2) & 0x01;
    77: 		r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
    78: 		/* green component */
    79: 		bit0 = (*color_prom >> 3) & 0x01;
    80: 		bit1 = (*color_prom >> 4) & 0x01;
    81: 		bit2 = (*color_prom >> 5) & 0x01;
    82: 		g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
    83: 		/* blue component */
    84: 		bit0 = (*color_prom >> 6) & 0x01;
    85: 		bit1 = (*color_prom >> 7) & 0x01;
    86: 		b = 0x4f * bit0 + 0xa8 * bit1;
    87: 
    88: 		palette_set_color(i,r,g,b);
    89: 		color_prom++;
    90: 	}
    91: }
    92: 
    93: static void get_tile_info( int offset )
    94: {
    95: 	int tile_number = videoram[offset];
    96: 	int color = colorram[(offset&0x1f)*2+1]&0x7;
    97: 	SET_TILE_INFO(
    98: 			0,
    99: 			tile_number,
   100: 			color,
   101: 			0)
   102: }
   103: 
   104: WRITE_HANDLER( looping_flip_screen_x_w )
   105: {
   106: 	flip_screen_x_set(~data & 0x01);
   107: }
   108: 
   109: WRITE_HANDLER( looping_flip_screen_y_w )
   110: {
   111: 	flip_screen_y_set(~data & 0x01);
   112: }
   113: 
   114: WRITE_HANDLER( looping_colorram_w )
   115: {
   116: 	int i,offs;
   117: 	if( colorram[offset]!=data )
   118: 	{
   119: 		colorram[offset] = data;
   120: 		if( offset&1 )
   121: 		{
   122: 			/* odd bytes are column color attribute */
   123: 			offs = (offset/2);
   124: 			/* mark the whole column dirty */
   125: 			for( i=0; i<0x20; i++ )
   126: 			{
   127: 				tilemap_mark_tile_dirty( tilemap, offs );
   128: 				offs += 0x20;
   129: 			}
   130: 		}
   131: 		else
   132: 		{
   133: 			/* even bytes are column scroll */
   134: 			tilemap_set_scrolly( tilemap,offset/2,data );
   135: 		}
   136: 	}
   137: }
   138: 
   139: VIDEO_START( looping )
   140: {
   141: 	tilemap = tilemap_create( get_tile_info,tilemap_scan_rows,TILEMAP_OPAQUE,8,8,32,32 );
   142: 	if( tilemap )
   143: 	{
   144: 		tilemap_set_scroll_cols( tilemap, 0x20 );
   145: 		return 0;
   146: 	}
   147: 	return -1;
   148: }
   149: 
   150: WRITE_HANDLER( looping_videoram_w )
   151: {
   152: 	if( videoram[offset]!=data )
   153: 	{
   154: 		videoram[offset] = data;
   155: 		tilemap_mark_tile_dirty( tilemap, offset );
   156: 	}
   157: }
   158: 
   159: static void draw_sprites( struct mame_bitmap *bitmap, const struct rectangle *cliprect )
   160: {
   161: 	const UINT8 *source = spriteram;
   162: 	const UINT8 *finish = source + 0x10*4; /* ? */
   163: 
   164: 	UINT8 sx, sy;
   165: 	int flipx, flipy, code, color;
   166: 
   167: 	while( source < finish )
   168: 	{
   169: 		sx = source[3];
   170: 		sy = source[0];
   171: 		flipx = source[1] & 0x40;
   172: 		flipy = source[1] & 0x80;
   173: 		code  = source[1] & 0x3f;
   174: 		color = source[2];
   175: 
   176: 		if (flip_screen_x)
   177: 		{
   178: 			sx = 240 - sx;
   179: 			flipx = !flipx;
   180: 		}
   181: 
   182: 		if (flip_screen_y)
   183: 		{
   184: 			flipy = !flipy;
   185: 		}
   186: 		else
   187: 		{
   188: 			sy = 240 - sy;
   189: 		}
   190: 
   191: 		drawgfx( bitmap, Machine->gfx[1],
   192: 				code, color,
   193: 				flipx, flipy,
   194: 				sx, sy,
   195: 				&Machine->visible_area,
   196: 				TRANSPARENCY_PEN, 0 );
   197: 
   198: 		source += 4;
   199: 	}
   200: }
   201: 
   202: VIDEO_UPDATE( looping )
   203: {
   204: 	tilemap_draw( bitmap,cliprect,tilemap,0,0 );
   205: 	draw_sprites( bitmap,cliprect );
   206: }
   207: 
   208: WRITE_HANDLER( looping_intack )
   209: {
   210: 	if (data==0)
   211: 	{
   212: 		cpu_irq_line_vector_w(0, 0, 4);
   213: 		cpu_set_irq_line(0, 0, CLEAR_LINE);
   214: 	}
   215: }
   216: 
   217: INTERRUPT_GEN( looping_interrupt )
   218: {
   219: 	cpu_irq_line_vector_w(0, 0, 4);
   220: 	cpu_set_irq_line(0, 0, ASSERT_LINE);
   221: }
   222: 
   223: /****** sound *******/
   224: 
   225: WRITE_HANDLER( looping_soundlatch_w )
   226: {
   227: 	soundlatch_w(offset, data);
   228: 	cpu_irq_line_vector_w(1, 0, 4);
   229: 	cpu_set_irq_line(1, 0, ASSERT_LINE);
   230: }
   231: 
   232: WRITE_HANDLER( looping_souint_clr )
   233: {
   234: 	if (data==0)
   235: 	{
   236: 		cpu_irq_line_vector_w(1, 0, 4);
   237: 		cpu_set_irq_line(1, 0, CLEAR_LINE);
   238: 	}
   239: }
   240: 
   241: void looping_spcint(int state)
   242: {
   243: 	cpu_irq_line_vector_w(1, 0, 6);
   244: 	cpu_set_irq_line(1, 0, state);
   245: }
   246: 
   247: WRITE_HANDLER( looping_sound_sw )
   248: {
   249: 	/* this can be improved by adding the missing
   250: 	   signals for decay etc. (see schematics) */
   251: 	static int r[8];
   252: 	r[offset]=data^1;
   253: 	DAC_data_w(0, ((r[1]<<7) + (r[2]<<6))*r[6]);
   254: }
   255: 
   256: static MEMORY_READ_START( looping_readmem )
   257: 	{ 0x0000, 0x7fff, MRA_ROM },
   258: /*	{ 0x9000, 0x9fff, MRA_RAM }, videoram is write only? */
   259: 	{ 0xe000, 0xefff, MRA_RAM },
   260: 	{ 0xf800, 0xf800, input_port_0_r },	/* inp */
   261: 	{ 0xf801, 0xf801, input_port_1_r },
   262: 	{ 0xf802, 0xf802, input_port_2_r },	/* dsw */
   263: MEMORY_END
   264: 
   265: static MEMORY_WRITE_START( looping_writemem )
   266: 	{ 0x0000, 0x7fff, MWA_ROM },
   267: 	{ 0x9000, 0x93ff, looping_videoram_w, &videoram },
   268: 	{ 0x9800, 0x983f, looping_colorram_w, &colorram },
   269: 	{ 0x9840, 0x987f, MWA_RAM, &spriteram },
   270: 	{ 0xe000, 0xefff, MWA_RAM },
   271: 	{ 0xb006, 0xb006, looping_flip_screen_x_w },
   272: 	{ 0xb007, 0xb007, looping_flip_screen_y_w },
   273: 	{ 0xf801, 0xf801, looping_soundlatch_w },
   274: MEMORY_END
   275: 
   276: static PORT_WRITE_START( looping_writeport)
   277: 	{ 0x000, 0x000, MWA_NOP },
   278: 	{ 0x406, 0x406, looping_intack },
   279: 	{ 0x407, 0x407, watchdog_reset_w },
   280: PORT_END
   281: 
   282: static MEMORY_READ_START( looping_io_readmem )
   283: 	{ 0x0000, 0x37ff, MRA_ROM },
   284: 	{ 0x3800, 0x3bff, MRA_RAM },
   285: 	{ 0x3c00, 0x3c00, AY8910_read_port_0_r },
   286: 	{ 0x3e02, 0x3e02, tms5220_status_r },
   287: MEMORY_END
   288: 
   289: static MEMORY_WRITE_START( looping_io_writemem )
   290: 	{ 0x0000, 0x37ff, MWA_ROM },
   291: 	{ 0x3800, 0x3bff, MWA_RAM },
   292: 	{ 0x3c00, 0x3c00, AY8910_control_port_0_w },
   293: 	{ 0x3c02, 0x3c02, AY8910_write_port_0_w },
   294: 	{ 0x3e00, 0x3e00, tms5220_data_w },
   295: MEMORY_END
   296: 
   297: static PORT_WRITE_START( looping_io_writeport)
   298: 	{ 0x000, 0x000, looping_souint_clr },
   299: 	{ 0x001, 0x007, looping_sound_sw },
   300: PORT_END
   301: 
   302: static struct GfxLayout tile_layout =
   303: {
   304: 	8,8,		/* 8*8 characters */
   305: 	0x100,		/* number of characters */
   306: 	2,			/* 2 bits per pixel */
   307: 	{ 0,0x800*8 },
   308: 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
   309: 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
   310: 	8*8
   311: };
   312: 
   313: static struct GfxLayout sprite_layout =
   314: {
   315: 	16,16,		/* 8*8 characters */
   316: 	0x40,		/* number of characters */
   317: 	2,			/* 2 bits per pixel */
   318: 	{ 0,0x800*8 },
   319: 	{
   320: 		0, 1, 2, 3, 4, 5, 6, 7,
   321: 		64+0, 64+1, 64+2, 64+3, 64+4, 64+5, 64+6, 64+7
   322: 	},
   323: 	{
   324: 		0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
   325: 		128+0*8, 128+1*8, 128+2*8, 128+3*8, 128+4*8, 128+5*8, 128+6*8, 128+7*8
   326: 	},
   327: 	8*8*4
   328: };
   329: 
   330: static struct GfxDecodeInfo looping_gfxdecodeinfo[] =
   331: {
   332: 	{ REGION_GFX1, 0, &tile_layout,		0, 8 },
   333: 	{ REGION_GFX1, 0, &sprite_layout,	0, 8 },
   334: 	{ -1 }
   335: };
   336: 
   337: static struct TMS5220interface tms5220_interface =
   338: {
   339: 	640000,         /* clock speed (80*samplerate) */
   340: 	50,             /* volume */
   341: 	looping_spcint  /* IRQ handler */
   342: };
   343: 
   344: static struct AY8910interface ay8910_interface =
   345: {
   346: 	1,
   347: 	2000000,
   348: 	{ 20 },
   349: 	{ soundlatch_r },
   350: 	{ 0 },
   351: 	{ 0 },
   352: 	{ 0 }
   353: };
   354: 
   355: static struct DACinterface dac_interface =
   356: {
   357: 	1,
   358: 	{ 30 }
   359: };
   360: 
   361: static MACHINE_DRIVER_START( looping )
   362: 
   363: 	/* basic machine hardware */
   364: 	MDRV_CPU_ADD(TMS9995, 3000000) /* ? */
   365: 	MDRV_CPU_MEMORY(looping_readmem,looping_writemem)
   366: 	MDRV_CPU_PORTS(0,looping_writeport)
   367: 	MDRV_CPU_VBLANK_INT(looping_interrupt,1)
   368: 
   369: 	MDRV_CPU_ADD(TMS9980, 2000000) // ?
   370: 	MDRV_CPU_MEMORY(looping_io_readmem,looping_io_writemem)
   371: 	MDRV_CPU_PORTS(0,looping_io_writeport)
   372: 
   373: 	MDRV_FRAMES_PER_SECOND(60)
   374: 	MDRV_VBLANK_DURATION(2500)
   375: 
   376: 	/* video hardware */
   377: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   378: 	MDRV_SCREEN_SIZE(32*8, 32*8)
   379: 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
   380: 	MDRV_GFXDECODE(looping_gfxdecodeinfo)
   381: 	MDRV_PALETTE_LENGTH(32)
   382: 	MDRV_COLORTABLE_LENGTH(32)
   383: 
   384: 	MDRV_PALETTE_INIT(looping)
   385: 	MDRV_VIDEO_START(looping)
   386: 	MDRV_VIDEO_UPDATE(looping)
   387: 
   388: 	/* sound hardware */
   389: 	MDRV_SOUND_ADD(AY8910, ay8910_interface)
   390: 	MDRV_SOUND_ADD(TMS5220, tms5220_interface)
   391: 	MDRV_SOUND_ADD(DAC, dac_interface)
   392: MACHINE_DRIVER_END
   393: 
   394: 
   395: 
   396: INPUT_PORTS_START( looping )
   397: 	PORT_START
   398: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
   399: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
   400: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) /* shoot */
   401: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
   402: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
   403: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) /* accel? */
   404: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
   405: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
   406: 
   407: 	PORT_START /* cocktail? */
   408: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_COCKTAIL )
   409: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_COCKTAIL )
   410: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
   411: 	PORT_BIT( 0x18, IP_ACTIVE_LOW, IPT_UNUSED )
   412: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
   413: 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
   414: 
   415: 	PORT_START
   416: 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Coin_B ) )
   417: 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
   418: 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
   419: 	PORT_DIPNAME( 0x0e, 0x02, DEF_STR( Coin_A ) )
   420: 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_1C ) )
   421: 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
   422: 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_3C ) )
   423: 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_4C ) )
   424: 	PORT_DIPSETTING(    0x0a, DEF_STR( 1C_5C ) )
   425: 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_6C ) )
   426: 	PORT_DIPSETTING(    0x0e, DEF_STR( 1C_7C ) )
   427: 	PORT_DIPSETTING(    0x00, "1 Coin/10 Credits" )
   428: 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )		// Check code at 0x2c00
   429: 	PORT_DIPSETTING(	0x00, DEF_STR( No ) )
   430: 	PORT_DIPSETTING(	0x10, DEF_STR( Yes ) )
   431: 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Lives ) )
   432: 	PORT_DIPSETTING(    0x00, "3" )
   433: 	PORT_DIPSETTING(    0x20, "5" )
   434: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
   435: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
   436: 	PORT_DIPSETTING(    0x80, DEF_STR( Upright ) )
   437: 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
   438: INPUT_PORTS_END
   439: 
   440: /* Same as 'looping' but additional "Infinite Lives" Dip Switch */
   441: INPUT_PORTS_START( skybump )
   442: 	PORT_START
   443: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
   444: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
   445: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) /* shoot */
   446: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
   447: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
   448: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) /* accel? */
   449: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
   450: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
   451: 
   452: 	PORT_START /* cocktail? */
   453: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_COCKTAIL )
   454: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_COCKTAIL )
   455: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
   456: 	PORT_BIT( 0x18, IP_ACTIVE_LOW, IPT_UNUSED )
   457: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
   458: 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
   459: 
   460: 	PORT_START
   461: 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Coin_B ) )
   462: 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
   463: 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
   464: 	PORT_DIPNAME( 0x0e, 0x02, DEF_STR( Coin_A ) )
   465: 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_1C ) )
   466: 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
   467: 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_3C ) )
   468: 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_4C ) )
   469: 	PORT_DIPSETTING(    0x0a, DEF_STR( 1C_5C ) )
   470: 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_6C ) )
   471: 	PORT_DIPSETTING(    0x0e, DEF_STR( 1C_7C ) )
   472: 	PORT_DIPSETTING(    0x00, "1 Coin/10 Credits" )
   473: 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )		// Check code at 0x2c00
   474: 	PORT_DIPSETTING(	0x00, DEF_STR( No ) )
   475: 	PORT_DIPSETTING(	0x10, DEF_STR( Yes ) )
   476: 	PORT_DIPNAME( 0x60, 0x40, DEF_STR( Lives ) )
   477: 	PORT_DIPSETTING(    0x40, "3" )
   478: 	PORT_DIPSETTING(    0x60, "5" )
   479: 	PORT_BITX( 0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Infinite", IP_KEY_NONE, IP_JOY_NONE )
   480: //	PORT_BITX( 0,       0x20, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Infinite", IP_KEY_NONE, IP_JOY_NONE )
   481: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
   482: 	PORT_DIPSETTING(    0x80, DEF_STR( Upright ) )
   483: 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
   484: INPUT_PORTS_END
   485: 
   486: ROM_START( loopinga )
   487: 	ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for TMS9995 code */
   488: 	ROM_LOAD( "vli3.5a",		0x0000, 0x2000, CRC(1ac3ccdf) SHA1(9d1cde8bd4d0f12eaf06225b3ecc4a5c3e4f0c11) )
   489: 	ROM_LOAD( "vli-4-3",		0x2000, 0x1000, CRC(f32cae2b) SHA1(2c6ef82af438e588b56fd58b95cf969c97bb9a66) )
   490: 	ROM_LOAD( "vli-8-4",		0x3000, 0x1000, CRC(611e1dbf) SHA1(0ab6669f1dec30c3f7bca49e158e4790a78fa308) )
   491: 	ROM_LOAD( "l056-6.9a",		0x4000, 0x2000, CRC(548afa52) SHA1(0b88ac7394feede023519c585a4084591eb9661a) )
   492: 	ROM_LOAD( "vli9-5.8a",		0x6000, 0x2000, CRC(5d122f86) SHA1(d1c66b890142bb4d4648f3edec6567f58107dbf0) )
   493: 
   494: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for TMS9980 code */
   495: 	ROM_LOAD( "i-o-v2.13c",		0x0000, 0x0800, CRC(09765ebe) SHA1(93b035c3a94f2f6d5e463256e26b600a4dd5d3ea) )
   496:     ROM_LOAD( "i-o.13a",		0x0800, 0x1000, CRC(1de29f25) SHA1(535acb132266d6137b0610ee9a9b946459ae44af) ) /* speech */
   497: 	ROM_LOAD( "i-o.11a",		0x2800, 0x1000, CRC(61c74c79) SHA1(9f34d18a919446dd76857b851cea23fc1526f3c2) )
   498: 
   499: 	ROM_REGION( 0x1000, REGION_CPU3, 0 ) /* COP420 microcontroller code */
   500: 	ROM_LOAD( "cop.bin",		0x0000, 0x1000, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) )
   501: 
   502: 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
   503: 	ROM_LOAD( "log1-9-3.6a",	0x0000, 0x800, CRC(c434c14c) SHA1(3669aaf7adc6b250378bcf62eb8e7058f55476ef) )
   504: 	ROM_LOAD( "log2.8a",		0x0800, 0x800, CRC(ef3284ac) SHA1(8719c9df8c972a56c306b3c707aaa53092ffa2d6) )
   505: 
   506: 	ROM_REGION( 0x0020, REGION_PROMS, 0 ) /* color prom */
   507: 	ROM_LOAD( "18s030.11b",		0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) )
   508: ROM_END
   509: 
   510: ROM_START( looping )
   511: 	ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for TMS9995 code */
   512: 	ROM_LOAD( "vli3.5a",		0x0000, 0x2000, CRC(1ac3ccdf) SHA1(9d1cde8bd4d0f12eaf06225b3ecc4a5c3e4f0c11) )
   513: 	ROM_LOAD( "vli1.2a",		0x2000, 0x2000, CRC(97755fd4) SHA1(4a6ef02b0128cd516ff95083a7caaad8f3756f09) )
   514: 	ROM_LOAD( "l056-6.9a",		0x4000, 0x2000, CRC(548afa52) SHA1(0b88ac7394feede023519c585a4084591eb9661a) )
   515: 	ROM_LOAD( "vli9-5.8a",		0x6000, 0x2000, CRC(5d122f86) SHA1(d1c66b890142bb4d4648f3edec6567f58107dbf0) )
   516: 
   517: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for TMS9980 code */
   518: 	ROM_LOAD( "i-o.13c",		0x0000, 0x0800, CRC(21e9350c) SHA1(f30a180309e373a17569351944f5e7982c3b3f9d) )
   519: 	ROM_LOAD( "i-o.13a",		0x0800, 0x1000, CRC(1de29f25) SHA1(535acb132266d6137b0610ee9a9b946459ae44af) )
   520: 	ROM_LOAD( "i-o.11a",		0x2800, 0x1000, CRC(61c74c79) SHA1(9f34d18a919446dd76857b851cea23fc1526f3c2) ) /* speech */
   521: 
   522: 	ROM_REGION( 0x1000, REGION_CPU3, 0 ) /* COP420 microcontroller code */
   523: 	ROM_LOAD( "cop.bin",		0x0000, 0x1000, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) )
   524: 
   525: 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
   526: 	ROM_LOAD( "log1-9-3.6a",	0x0000, 0x800, CRC(c434c14c) SHA1(3669aaf7adc6b250378bcf62eb8e7058f55476ef) )
   527: 	ROM_LOAD( "log2.8a",		0x0800, 0x800, CRC(ef3284ac) SHA1(8719c9df8c972a56c306b3c707aaa53092ffa2d6) )
   528: 
   529: 	ROM_REGION( 0x0020, REGION_PROMS, 0 ) /* color prom */
   530: 	ROM_LOAD( "18s030.11b",		0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) )
   531: ROM_END
   532: 
   533: ROM_START( skybump )
   534: 	ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for TMS9995 code */
   535: 	ROM_LOAD( "cpu.5a",			0x0000, 0x2000, CRC(dca38df0) SHA1(86abe04cbabf81399f842f53668fe7a3f7ed3757) )
   536: 	ROM_LOAD( "cpu.2a",			0x2000, 0x2000, CRC(6bcc211a) SHA1(245ebae3934df9c3920743a941546d96bb2e7c03) )
   537: 	ROM_LOAD( "cpu.9a",			0x4000, 0x2000, CRC(c7a50797) SHA1(60aa0a28ba970f12d0a0e538ae1c6807d105855c) )
   538: 	ROM_LOAD( "cpu.8a",			0x6000, 0x2000, CRC(a718c6f2) SHA1(19afa8c353829232cb96c27b87f13b43166ab6fc) )
   539: 
   540:     ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for TMS9980 code */
   541: 	ROM_LOAD( "snd.13c",		0x0000, 0x0800, CRC(21e9350c) SHA1(f30a180309e373a17569351944f5e7982c3b3f9d) )
   542: 	ROM_LOAD( "snd.13a",		0x0800, 0x1000, CRC(1de29f25) SHA1(535acb132266d6137b0610ee9a9b946459ae44af) )
   543: 	ROM_LOAD( "snd.11a",		0x2800, 0x1000, CRC(61c74c79) SHA1(9f34d18a919446dd76857b851cea23fc1526f3c2) )
   544: 
   545: 	ROM_REGION( 0x1000, REGION_CPU3, 0 ) /* COP420 microcontroller code */
   546: 	ROM_LOAD( "cop.bin",		0x0000, 0x1000, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) )
   547: 
   548: 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
   549: 	ROM_LOAD( "vid.6a",			0x0000, 0x800, CRC(12ebbe74) SHA1(0f87c81a45d1bf3b8c6a70ee5e1a014069f67755) )
   550: 	ROM_LOAD( "vid.8a",			0x0800, 0x800, CRC(459ccc55) SHA1(747f6789605b48be9e22f779f9e3f6c98ad4e594) )
   551: 
   552: 	ROM_REGION( 0x0020, REGION_PROMS, 0 ) /* color prom */
   553: 	ROM_LOAD( "vid.clr",		0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) )
   554: ROM_END
   555: 
   556: DRIVER_INIT( looping ){
   557: 	/* unscramble the TMS9995 ROMs */
   558: 	UINT8 *pMem = memory_region( REGION_CPU1 );
   559: 	UINT8 raw,code;
   560: 	int i;
   561: 	for( i=0; i<0x8000; i++ )
   562: 	{
   563: 		raw = pMem[i];
   564: 		code = 0;
   565: 		if( raw&0x01 ) code |= 0x80;
   566: 		if( raw&0x02 ) code |= 0x40;
   567: 		if( raw&0x04 ) code |= 0x20;
   568: 		if( raw&0x08 ) code |= 0x10;
   569: 		if( raw&0x10 ) code |= 0x08;
   570: 		if( raw&0x20 ) code |= 0x04;
   571: 		if( raw&0x40 ) code |= 0x02;
   572: 		if( raw&0x80 ) code |= 0x01;
   573: 		pMem[i] = code;
   574: 	}
   575: }
   576: 
   577: /*          rom       parent    machine   inp       init */
   578: GAME( 1982, looping,  0,        looping, looping, looping, ROT90, "Venture Line", "Looping (set 1)" )
   579: GAME( 1982, loopinga, looping,  looping, looping, looping, ROT90, "Venture Line", "Looping (set 2)" )
   580: GAME( 1982, skybump,  0,        looping, skybump, looping, ROT90, "Venture Line", "Sky Bumper" )
   581: 
   582: 




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