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

Source Listing


     1: /********************************************************************
     2: 
     3: 			  Bionic Commando
     4: 
     5: 
     6: 
     7: ToDo:
     8: - finish video driver
     9: 	Some attributes are unknown. I don't remember the original game but
    10: 	seems there are some problems:
    11: 	- misplaced sprites ? ( see beginning of level 1 or 2 for example )
    12: 	- sprite / sprite priority ? ( see level 2 the reflectors )
    13: 	- sprite / background priority ? ( see level 1: birds walk through
    14: 		branches of different trees )
    15: 	- see the beginning of level 3: is the background screwed ?
    16: 
    17: - get rid of input port hack
    18: 
    19: 	Controls appear to be mapped at 0xFE4000, alongside dip switches, but there
    20: 	is something strange going on that I can't (yet) figure out.
    21: 	Player controls and coin inputs are supposed to magically appear at
    22: 	0xFFFFFB (coin/start)
    23: 	0xFFFFFD (player 2)
    24: 	0xFFFFFF (player 1)
    25: 	This is probably done by an MPU on the board (whose ROM is not
    26: 	available).
    27: 
    28: 	The MPU also takes care of the commands for the sound CPU, which are stored
    29: 	at FFFFF9.
    30: 
    31: 	IRQ4 seems to be control related.
    32: 	On each interrupt, it reads 0xFE4000 (coin/start), shift the bits around
    33: 	and move the resulting byte into a dword RAM location. The dword RAM location
    34: 	is rotated by 8 bits each time this happens.
    35: 	This is probably done to be pedantic about coin insertions (might be protection
    36: 	related). In fact, currently coin insertions are not consistently recognized.
    37: 
    38: ********************************************************************/
    39: 
    40: #include "driver.h" 
    41: #include "vidhrdw/generic.h" 
    42: 
    43: 
    44: WRITE16_HANDLER( bionicc_fgvideoram_w );
    45: WRITE16_HANDLER( bionicc_bgvideoram_w );
    46: WRITE16_HANDLER( bionicc_txvideoram_w );
    47: WRITE16_HANDLER( bionicc_paletteram_w );
    48: WRITE16_HANDLER( bionicc_scroll_w );
    49: WRITE16_HANDLER( bionicc_gfxctrl_w );
    50: 
    51: extern data16_t *bionicc_bgvideoram;
    52: extern data16_t *bionicc_fgvideoram;
    53: extern data16_t *bionicc_txvideoram;
    54: 
    55: VIDEO_START( bionicc );
    56: VIDEO_UPDATE( bionicc );
    57: VIDEO_EOF( bionicc );
    58: 
    59: void bionicc_readinputs(void);
    60: void bionicc_sound_cmd(int data);
    61: 
    62: 
    63: 
    64: static data16_t bionicc_inp[3];
    65: 
    66: WRITE16_HANDLER( hacked_controls_w )
    67: {
    68: logerror("%06x: hacked_controls_w %04x %02x\n",activecpu_get_pc(),offset,data);
    69: 	COMBINE_DATA(&bionicc_inp[offset]);
    70: }
    71: 
    72: static READ16_HANDLER( hacked_controls_r )
    73: {
    74: logerror("%06x: hacked_controls_r %04x %04x\n",activecpu_get_pc(),offset,bionicc_inp[offset]);
    75: 	return bionicc_inp[offset];
    76: }
    77: 
    78: static WRITE16_HANDLER( bionicc_mpu_trigger_w )
    79: {
    80: 	data = readinputport(0) >> 12;
    81: 	bionicc_inp[0] = data ^ 0x0f;
    82: 
    83: 	data = readinputport(3); /* player 2 controls */
    84: 	bionicc_inp[1] = data ^ 0xff;
    85: 
    86: 	data = readinputport(2); /* player 1 controls */
    87: 	bionicc_inp[2] = data ^ 0xff;
    88: }
    89: 
    90: 
    91: static data16_t soundcommand;
    92: 
    93: WRITE16_HANDLER( hacked_soundcommand_w )
    94: {
    95: 	COMBINE_DATA(&soundcommand);
    96: 	soundlatch_w(0,soundcommand & 0xff);
    97: }
    98: 
    99: static READ16_HANDLER( hacked_soundcommand_r )
   100: {
   101: 	return soundcommand;
   102: }
   103: 
   104: 
   105: /********************************************************************
   106: 
   107:   INTERRUPT
   108: 
   109:   The game runs on 2 interrupts.
   110: 
   111:   IRQ 2 drives the game
   112:   IRQ 4 processes the input ports
   113: 
   114:   The game is very picky about timing. The following is the only
   115:   way I have found it to work.
   116: 
   117: ********************************************************************/
   118: 
   119: INTERRUPT_GEN( bionicc_interrupt )
   120: {
   121: 	if (cpu_getiloops() == 0) 
   122: 		cpu_set_irq_line(0, 2, HOLD_LINE);
   123: 	else
   124: 		cpu_set_irq_line(0, 4, HOLD_LINE);
   125: }
   126: 
   127: static MEMORY_READ16_START( readmem )
   128: 	{ 0x000000, 0x03ffff, MRA16_ROM },                /* 68000 ROM */
   129: 	{ 0xfe0000, 0xfe07ff, MRA16_RAM },                /* RAM? */
   130: 	{ 0xfe0800, 0xfe0cff, MRA16_RAM },                /* sprites */
   131: 	{ 0xfe0d00, 0xfe3fff, MRA16_RAM },                /* RAM? */
   132: 	{ 0xfe4000, 0xfe4001, input_port_0_word_r },
   133: 	{ 0xfe4002, 0xfe4003, input_port_1_word_r },
   134: 	{ 0xfec000, 0xfecfff, MRA16_RAM },
   135: 	{ 0xff0000, 0xff3fff, MRA16_RAM },
   136: 	{ 0xff4000, 0xff7fff, MRA16_RAM },
   137: 	{ 0xff8000, 0xff87ff, MRA16_RAM },
   138: 	{ 0xffc000, 0xfffff7, MRA16_RAM },                /* working RAM */
   139: 	{ 0xfffff8, 0xfffff9, hacked_soundcommand_r },      /* hack */
   140: 	{ 0xfffffa, 0xffffff, hacked_controls_r },      /* hack */
   141: MEMORY_END
   142: 
   143: static MEMORY_WRITE16_START( writemem )
   144: 	{ 0x000000, 0x03ffff, MWA16_ROM },
   145: 	{ 0xfe0000, 0xfe07ff, MWA16_RAM },	/* RAM? */
   146: 	{ 0xfe0800, 0xfe0cff, MWA16_RAM, &spriteram16, &spriteram_size },
   147: 	{ 0xfe0d00, 0xfe3fff, MWA16_RAM },              /* RAM? */
   148: 	{ 0xfe4000, 0xfe4001, bionicc_gfxctrl_w },	/* + coin counters */
   149: 	{ 0xfe8010, 0xfe8017, bionicc_scroll_w },
   150: 	{ 0xfe801a, 0xfe801b, bionicc_mpu_trigger_w },	/* ??? not sure, but looks like it */
   151: 	{ 0xfec000, 0xfecfff, bionicc_txvideoram_w, &bionicc_txvideoram },
   152: 	{ 0xff0000, 0xff3fff, bionicc_fgvideoram_w, &bionicc_fgvideoram },
   153: 	{ 0xff4000, 0xff7fff, bionicc_bgvideoram_w, &bionicc_bgvideoram },
   154: 	{ 0xff8000, 0xff87ff, bionicc_paletteram_w, &paletteram16 },
   155: 	{ 0xffc000, 0xfffff7, MWA16_RAM },	/* working RAM */
   156: 	{ 0xfffff8, 0xfffff9, hacked_soundcommand_w },      /* hack */
   157: 	{ 0xfffffa, 0xffffff, hacked_controls_w },	/* hack */
   158: MEMORY_END
   159: 
   160: 
   161: static MEMORY_READ_START( sound_readmem )
   162: 	{ 0x0000, 0x7fff, MRA_ROM },
   163: 	{ 0x8001, 0x8001, YM2151_status_port_0_r },
   164: 	{ 0xa000, 0xa000, soundlatch_r },
   165: 	{ 0xc000, 0xc7ff, MRA_RAM },
   166: MEMORY_END
   167: 
   168: static MEMORY_WRITE_START( sound_writemem )
   169: 	{ 0x0000, 0x7fff, MWA_ROM },
   170: 	{ 0x8000, 0x8000, YM2151_register_port_0_w },
   171: 	{ 0x8001, 0x8001, YM2151_data_port_0_w },
   172: 	{ 0xc000, 0xc7ff, MWA_RAM },
   173: MEMORY_END
   174: 
   175: 
   176: 
   177: INPUT_PORTS_START( bionicc )
   178: 	PORT_START
   179: 	PORT_BIT( 0x0fff, IP_ACTIVE_LOW, IPT_UNKNOWN )
   180: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_START2 )
   181: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_START1 )
   182: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN2 )
   183: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN1 )
   184: 
   185: 	PORT_START
   186: 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) )
   187: 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
   188: 	PORT_DIPSETTING(      0x0001, DEF_STR( 3C_1C ) )
   189: 	PORT_DIPSETTING(      0x0002, DEF_STR( 2C_1C ) )
   190: 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
   191: 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
   192: 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
   193: 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
   194: 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_6C ) )
   195: 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) )
   196: 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
   197: 	PORT_DIPSETTING(      0x0008, DEF_STR( 3C_1C ) )
   198: 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )
   199: 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
   200: 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
   201: 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
   202: 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
   203: 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_6C ) )
   204: 	PORT_SERVICE( 0x0040, IP_ACTIVE_LOW )
   205: 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) )
   206: 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ))
   207: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   208: 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) )
   209: 	PORT_DIPSETTING(      0x0300, "3" )
   210: 	PORT_DIPSETTING(      0x0200, "4" )
   211: 	PORT_DIPSETTING(      0x0100, "5" )
   212: 	PORT_DIPSETTING(      0x0000, "7" )
   213: 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Cabinet ) )
   214: 	PORT_DIPSETTING(      0x0400, DEF_STR( Upright ) )
   215: 	PORT_DIPSETTING(      0x0000, DEF_STR( Cocktail ) )
   216: 	PORT_DIPNAME( 0x1800, 0x1800, DEF_STR( Bonus_Life ) )
   217: 	PORT_DIPSETTING(      0x1800, "20K, 40K, every 60K")
   218: 	PORT_DIPSETTING(      0x1000, "30K, 50K, every 70K" )
   219: 	PORT_DIPSETTING(      0x0800, "20K and 60K only")
   220: 	PORT_DIPSETTING(      0x0000, "30K and 70K only" )
   221: 	PORT_DIPNAME( 0x6000, 0x4000, DEF_STR( Difficulty ) )
   222: 	PORT_DIPSETTING(      0x4000, "Easy" )
   223: 	PORT_DIPSETTING(      0x6000, "Medium")
   224: 	PORT_DIPSETTING(      0x2000, "Hard")
   225: 	PORT_DIPSETTING(      0x0000, "Hardest" )
   226: 	PORT_DIPNAME( 0x8000, 0x8000, "Freeze" )
   227: 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ))
   228: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   229: 
   230: 	PORT_START
   231: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )
   232: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
   233: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
   234: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
   235: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
   236: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
   237: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
   238: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
   239: 
   240: 	PORT_START
   241: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
   242: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
   243: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
   244: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
   245: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
   246: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
   247: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
   248: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
   249: INPUT_PORTS_END
   250: 
   251: 
   252: 
   253: /********************************************************************
   254: 
   255:   GRAPHICS
   256: 
   257: ********************************************************************/
   258: 
   259: 
   260: static struct GfxLayout spritelayout_bionicc=
   261: {
   262: 	16,16,  /* 16*16 sprites */
   263: 	2048,   /* 2048 sprites */
   264: 	4,      /* 4 bits per pixel */
   265: 	{ 0x30000*8,0x20000*8,0x10000*8,0 },
   266: 	{
   267: 		0,1,2,3,4,5,6,7,
   268: 		(16*8)+0,(16*8)+1,(16*8)+2,(16*8)+3,
   269: 		(16*8)+4,(16*8)+5,(16*8)+6,(16*8)+7
   270: 	},
   271: 	{
   272: 		0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
   273: 		8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8,
   274: 	},
   275: 	256   /* every sprite takes 256 consecutive bytes */
   276: };
   277: 
   278: static struct GfxLayout vramlayout_bionicc=
   279: {
   280: 	8,8,    /* 8*8 characters */
   281: 	1024,   /* 1024 character */
   282: 	2,      /* 2 bitplanes */
   283: 	{ 4,0 },
   284: 	{ 0,1,2,3,8,9,10,11 },
   285: 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
   286: 	128   /* every character takes 128 consecutive bytes */
   287: };
   288: 
   289: static struct GfxLayout scroll2layout_bionicc=
   290: {
   291: 	8,8,    /* 8*8 tiles */
   292: 	2048,   /* 2048 tiles */
   293: 	4,      /* 4 bits per pixel */
   294: 	{ (0x08000*8)+4,0x08000*8,4,0 },
   295: 	{ 0,1,2,3, 8,9,10,11 },
   296: 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
   297: 	128   /* every tile takes 128 consecutive bytes */
   298: };
   299: 
   300: static struct GfxLayout scroll1layout_bionicc=
   301: {
   302: 	16,16,  /* 16*16 tiles */
   303: 	2048,   /* 2048 tiles */
   304: 	4,      /* 4 bits per pixel */
   305: 	{ (0x020000*8)+4,0x020000*8,4,0 },
   306: 	{
   307: 		0,1,2,3, 8,9,10,11,
   308: 		(8*4*8)+0,(8*4*8)+1,(8*4*8)+2,(8*4*8)+3,
   309: 		(8*4*8)+8,(8*4*8)+9,(8*4*8)+10,(8*4*8)+11
   310: 	},
   311: 	{
   312: 		0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
   313: 		8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16
   314: 	},
   315: 	512   /* each tile takes 512 consecutive bytes */
   316: };
   317: 
   318: static struct GfxDecodeInfo gfxdecodeinfo_bionicc[] =
   319: {
   320: 	{ REGION_GFX1, 0, &vramlayout_bionicc,    768, 64 },	/* colors 768-1023 */
   321: 	{ REGION_GFX2, 0, &scroll2layout_bionicc,   0,  4 },	/* colors   0-  63 */
   322: 	{ REGION_GFX3, 0, &scroll1layout_bionicc, 256,  4 },	/* colors 256- 319 */
   323: 	{ REGION_GFX4, 0, &spritelayout_bionicc,  512, 16 },	/* colors 512- 767 */
   324: 	{ -1 }
   325: };
   326: 
   327: 
   328: static struct YM2151interface ym2151_interface =
   329: {
   330: 	1,                      /* 1 chip */
   331: 	3579545,                /* 3.579545 MHz ? */
   332: 	{ YM3012_VOL(60,MIXER_PAN_LEFT,60,MIXER_PAN_RIGHT) },
   333: 	{ 0 }
   334: };
   335: 
   336: 
   337: static MACHINE_DRIVER_START( bionicc )
   338: 
   339: 	/* basic machine hardware */
   340: 	MDRV_CPU_ADD(M68000, 10000000) /* ?? MHz ? */
   341: 	MDRV_CPU_MEMORY(readmem,writemem)
   342: 	MDRV_CPU_VBLANK_INT(bionicc_interrupt,8)
   343: 
   344: 	MDRV_CPU_ADD(Z80, 4000000)
   345: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)  /* 4 MHz ??? TODO: find real FRQ */
   346: 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
   347: 	MDRV_CPU_VBLANK_INT(nmi_line_pulse,4)	/* ??? */
   348: 
   349: 	MDRV_FRAMES_PER_SECOND(60)
   350: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
   351: 
   352: 	/* video hardware */
   353: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_NEEDS_6BITS_PER_GUN | VIDEO_BUFFERS_SPRITERAM)
   354: 	MDRV_SCREEN_SIZE(32*8, 32*8)
   355: 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
   356: 	MDRV_GFXDECODE(gfxdecodeinfo_bionicc)
   357: 	MDRV_PALETTE_LENGTH(1024)
   358: 
   359: 	MDRV_VIDEO_START(bionicc)
   360: 	MDRV_VIDEO_EOF(bionicc)
   361: 	MDRV_VIDEO_UPDATE(bionicc)
   362: 
   363: 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
   364: MACHINE_DRIVER_END
   365: 
   366: 
   367: 
   368: ROM_START( bionicc )
   369: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )      /* 68000 code */
   370: 	ROM_LOAD16_BYTE( "tsu_02b.rom",  0x00000, 0x10000, CRC(cf965a0a) SHA1(ab88742a3225a0b82ee2dfef6ed0058d3e11c38c) ) /* 68000 code */
   371: 	ROM_LOAD16_BYTE( "tsu_04b.rom",  0x00001, 0x10000, CRC(c9884bfb) SHA1(7d10cedff0a62847f8deb61a9611cc6661efb037) ) /* 68000 code */
   372: 	ROM_LOAD16_BYTE( "tsu_03b.rom",  0x20000, 0x10000, CRC(4e157ae2) SHA1(cc02931376d22a7fcfc320e6fd4129e03a461a49) ) /* 68000 code */
   373: 	ROM_LOAD16_BYTE( "tsu_05b.rom",  0x20001, 0x10000, CRC(e66ca0f9) SHA1(a503badf2fed38786d38c313d1dc315f3175d6de) ) /* 68000 code */
   374: 
   375: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for the audio CPU */
   376: 	ROM_LOAD( "tsu_01b.rom",  0x00000, 0x8000, CRC(a9a6cafa) SHA1(55e0a0e6ca11e8e73339d5b4604e130031211291) )
   377: 
   378: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
   379: 	ROM_LOAD( "tsu_08.rom",   0x00000, 0x8000, CRC(9bf0b7a2) SHA1(1361335c3c2c8a9c6a7d99566048d8aac99e7c8f) )	/* VIDEORAM (text layer) tiles */
   380: 
   381: 	ROM_REGION( 0x10000, REGION_GFX2, ROMREGION_DISPOSE )
   382: 	ROM_LOAD( "tsu_07.rom",   0x00000, 0x8000, CRC(9469efa4) SHA1(53c70361e8d9e54825f61b87a10df42438aaf5b0) )	/* SCROLL2 Layer Tiles */
   383: 	ROM_LOAD( "tsu_06.rom",   0x08000, 0x8000, CRC(40bf0eb4) SHA1(fcb186c31747e2c9872de01e34b3e713dc74df82) )
   384: 
   385: 	ROM_REGION( 0x40000, REGION_GFX3, ROMREGION_DISPOSE )
   386: 	ROM_LOAD( "ts_12.rom",    0x00000, 0x8000, CRC(e4b4619e) SHA1(3bec8399ffb28fd50ce6ae88d90b091eadf8bda1) )	/* SCROLL1 Layer Tiles */
   387: 	ROM_LOAD( "ts_11.rom",    0x08000, 0x8000, CRC(ab30237a) SHA1(ea6c07df992ba48f9eca7daa4ea775faa94358d2) )
   388: 	ROM_LOAD( "ts_17.rom",    0x10000, 0x8000, CRC(deb657e4) SHA1(b36b468f9bbb7a4937286230d3f6caa14c61d4dd) )
   389: 	ROM_LOAD( "ts_16.rom",    0x18000, 0x8000, CRC(d363b5f9) SHA1(1dd3991d99db2d6bcbdb12879ba50a01fef95004) )
   390: 	ROM_LOAD( "ts_13.rom",    0x20000, 0x8000, CRC(a8f5a004) SHA1(36ab0cb8ec9ce0519876f7461ccc5020c9c5b597) )
   391: 	ROM_LOAD( "ts_18.rom",    0x28000, 0x8000, CRC(3b36948c) SHA1(d85fcc0265ba1729c587b046cc5a7ba6f25363dd) )
   392: 	ROM_LOAD( "ts_23.rom",    0x30000, 0x8000, CRC(bbfbe58a) SHA1(9b1d5672b6f3c5c0952f8dcd0da71acc68a97a5e) )
   393: 	ROM_LOAD( "ts_24.rom",    0x38000, 0x8000, CRC(f156e564) SHA1(a6cad05bcc6d9ded6294f9b5aa856d05641aed02) )
   394: 
   395: 	ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE )
   396: 	ROM_LOAD( "tsu_10.rom",   0x00000, 0x8000, CRC(f1180d02) SHA1(312626af48235a1f726ab596f296ef4739785ca0) )	/* Sprites */
   397: 	ROM_LOAD( "tsu_09.rom",   0x08000, 0x8000, CRC(6a049292) SHA1(525c862061f426d679b539b6926af4c9f14b47b5) )
   398: 	ROM_LOAD( "tsu_15.rom",   0x10000, 0x8000, CRC(ea912701) SHA1(106336c63a1c8a0b13236268bc533a8263285cad) )
   399: 	ROM_LOAD( "tsu_14.rom",   0x18000, 0x8000, CRC(46b2ad83) SHA1(21ebd5691a544323fdfcf330b9a37bbe0428e3e3) )
   400: 	ROM_LOAD( "tsu_20.rom",   0x20000, 0x8000, CRC(17857ad2) SHA1(9f45cea6e9ce82bfc9ee6896a30257d20fb38bca) )
   401: 	ROM_LOAD( "tsu_19.rom",   0x28000, 0x8000, CRC(b5c82722) SHA1(969f9159f7d59e4e4c9ef9ddbdc27cbfa531eabf) )
   402: 	ROM_LOAD( "tsu_22.rom",   0x30000, 0x8000, CRC(5ee1ae6a) SHA1(76ca53d847c940c4176d79ba49b0c10efd6342e8) )
   403: 	ROM_LOAD( "tsu_21.rom",   0x38000, 0x8000, CRC(98777006) SHA1(bcc2058b639e9b71d16af05f63df298bcce91fdc) )
   404: 
   405: 	ROM_REGION( 0x0100, REGION_PROMS, 0 )
   406: 	ROM_LOAD( "63s141.18f",   0x0000, 0x0100, CRC(b58d0023) SHA1(e8a4a2e2951bf73b3d9eed6957e9ee1e61c9c58a) )	/* priority (not used) */
   407: ROM_END
   408: 
   409: ROM_START( bionicc2 )
   410: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )      /* 68000 code */
   411: 	ROM_LOAD16_BYTE( "02",      0x00000, 0x10000, CRC(f2528f08) SHA1(04c793837c86d83312fd44b46a6a94378c90113b) ) /* 68000 code */
   412: 	ROM_LOAD16_BYTE( "04",      0x00001, 0x10000, CRC(38b1c7e4) SHA1(14bf743726c214bd00177e7b410c272dd7ab3d3f) ) /* 68000 code */
   413: 	ROM_LOAD16_BYTE( "03",      0x20000, 0x10000, CRC(72c3b76f) SHA1(f7f71eae7617e3348b727775088b496e86d51e38) ) /* 68000 code */
   414: 	ROM_LOAD16_BYTE( "05",      0x20001, 0x10000, CRC(70621f83) SHA1(0a77c2827a5c50457d90ccc62e463508d83d2f20) ) /* 68000 code */
   415: 
   416: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for the audio CPU */
   417: 	ROM_LOAD( "tsu_01b.rom",  0x00000, 0x8000, CRC(a9a6cafa) SHA1(55e0a0e6ca11e8e73339d5b4604e130031211291) )
   418: 
   419: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
   420: 	ROM_LOAD( "tsu_08.rom",   0x00000, 0x8000, CRC(9bf0b7a2) SHA1(1361335c3c2c8a9c6a7d99566048d8aac99e7c8f) )	/* VIDEORAM (text layer) tiles */
   421: 
   422: 	ROM_REGION( 0x10000, REGION_GFX2, ROMREGION_DISPOSE )
   423: 	ROM_LOAD( "tsu_07.rom",   0x00000, 0x8000, CRC(9469efa4) SHA1(53c70361e8d9e54825f61b87a10df42438aaf5b0) )	/* SCROLL2 Layer Tiles */
   424: 	ROM_LOAD( "tsu_06.rom",   0x08000, 0x8000, CRC(40bf0eb4) SHA1(fcb186c31747e2c9872de01e34b3e713dc74df82) )
   425: 
   426: 	ROM_REGION( 0x40000, REGION_GFX3, ROMREGION_DISPOSE )
   427: 	ROM_LOAD( "ts_12.rom",    0x00000, 0x8000, CRC(e4b4619e) SHA1(3bec8399ffb28fd50ce6ae88d90b091eadf8bda1) )	/* SCROLL1 Layer Tiles */
   428: 	ROM_LOAD( "ts_11.rom",    0x08000, 0x8000, CRC(ab30237a) SHA1(ea6c07df992ba48f9eca7daa4ea775faa94358d2) )
   429: 	ROM_LOAD( "ts_17.rom",    0x10000, 0x8000, CRC(deb657e4) SHA1(b36b468f9bbb7a4937286230d3f6caa14c61d4dd) )
   430: 	ROM_LOAD( "ts_16.rom",    0x18000, 0x8000, CRC(d363b5f9) SHA1(1dd3991d99db2d6bcbdb12879ba50a01fef95004) )
   431: 	ROM_LOAD( "ts_13.rom",    0x20000, 0x8000, CRC(a8f5a004) SHA1(36ab0cb8ec9ce0519876f7461ccc5020c9c5b597) )
   432: 	ROM_LOAD( "ts_18.rom",    0x28000, 0x8000, CRC(3b36948c) SHA1(d85fcc0265ba1729c587b046cc5a7ba6f25363dd) )
   433: 	ROM_LOAD( "ts_23.rom",    0x30000, 0x8000, CRC(bbfbe58a) SHA1(9b1d5672b6f3c5c0952f8dcd0da71acc68a97a5e) )
   434: 	ROM_LOAD( "ts_24.rom",    0x38000, 0x8000, CRC(f156e564) SHA1(a6cad05bcc6d9ded6294f9b5aa856d05641aed02) )
   435: 
   436: 	ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE )
   437: 	ROM_LOAD( "tsu_10.rom",   0x00000, 0x8000, CRC(f1180d02) SHA1(312626af48235a1f726ab596f296ef4739785ca0) )	/* Sprites */
   438: 	ROM_LOAD( "tsu_09.rom",   0x08000, 0x8000, CRC(6a049292) SHA1(525c862061f426d679b539b6926af4c9f14b47b5) )
   439: 	ROM_LOAD( "tsu_15.rom",   0x10000, 0x8000, CRC(ea912701) SHA1(106336c63a1c8a0b13236268bc533a8263285cad) )
   440: 	ROM_LOAD( "tsu_14.rom",   0x18000, 0x8000, CRC(46b2ad83) SHA1(21ebd5691a544323fdfcf330b9a37bbe0428e3e3) )
   441: 	ROM_LOAD( "tsu_20.rom",   0x20000, 0x8000, CRC(17857ad2) SHA1(9f45cea6e9ce82bfc9ee6896a30257d20fb38bca) )
   442: 	ROM_LOAD( "tsu_19.rom",   0x28000, 0x8000, CRC(b5c82722) SHA1(969f9159f7d59e4e4c9ef9ddbdc27cbfa531eabf) )
   443: 	ROM_LOAD( "tsu_22.rom",   0x30000, 0x8000, CRC(5ee1ae6a) SHA1(76ca53d847c940c4176d79ba49b0c10efd6342e8) )
   444: 	ROM_LOAD( "tsu_21.rom",   0x38000, 0x8000, CRC(98777006) SHA1(bcc2058b639e9b71d16af05f63df298bcce91fdc) )
   445: 
   446: 	ROM_REGION( 0x0100, REGION_PROMS, 0 )
   447: 	ROM_LOAD( "63s141.18f",   0x0000, 0x0100, CRC(b58d0023) SHA1(e8a4a2e2951bf73b3d9eed6957e9ee1e61c9c58a) )	/* priority (not used) */
   448: ROM_END
   449: 
   450: ROM_START( topsecrt )
   451: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )      /* 68000 code */
   452: 	ROM_LOAD16_BYTE( "ts_02.rom",  0x00000, 0x10000, CRC(b2fe1ddb) SHA1(892f19124993add96edabdba3aafeecc6668c5d9) ) /* 68000 code */
   453: 	ROM_LOAD16_BYTE( "ts_04.rom",  0x00001, 0x10000, CRC(427a003d) SHA1(5a379fe2942e5565810939d5eb843003226222cc) ) /* 68000 code */
   454: 	ROM_LOAD16_BYTE( "ts_03.rom",  0x20000, 0x10000, CRC(27f04bb6) SHA1(41d17b84b34dc8b2e5dfa67794a8df3e898b740b) ) /* 68000 code */
   455: 	ROM_LOAD16_BYTE( "ts_05.rom",  0x20001, 0x10000, CRC(c01547b1) SHA1(563bf6be4f10f5e6eb5b562266accf168f62bf30) ) /* 68000 code */
   456: 
   457: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for the audio CPU */
   458: 	ROM_LOAD( "ts_01.rom",    0x00000, 0x8000, CRC(8ea07917) SHA1(e9ace70d89482fc3669860450a41aacacbee9083) )
   459: 
   460: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
   461: 	ROM_LOAD( "ts_08.rom",    0x00000, 0x8000, CRC(96ad379e) SHA1(accd3a560b259c186bc28cdc004ed8de0b12f9d5) )	/* VIDEORAM (text layer) tiles */
   462: 
   463: 	ROM_REGION( 0x10000, REGION_GFX2, ROMREGION_DISPOSE )
   464: 	ROM_LOAD( "ts_07.rom",    0x00000, 0x8000, CRC(25cdf8b2) SHA1(316f6acc46878682dabeab12722e6a64504d23bd) )	/* SCROLL2 Layer Tiles */
   465: 	ROM_LOAD( "ts_06.rom",    0x08000, 0x8000, CRC(314fb12d) SHA1(dab0519a49b64fe7a837b3c6383f6147e1ab6ffd) )
   466: 
   467: 	ROM_REGION( 0x40000, REGION_GFX3, ROMREGION_DISPOSE )
   468: 	ROM_LOAD( "ts_12.rom",    0x00000, 0x8000, CRC(e4b4619e) SHA1(3bec8399ffb28fd50ce6ae88d90b091eadf8bda1) )	/* SCROLL1 Layer Tiles */
   469: 	ROM_LOAD( "ts_11.rom",    0x08000, 0x8000, CRC(ab30237a) SHA1(ea6c07df992ba48f9eca7daa4ea775faa94358d2) )
   470: 	ROM_LOAD( "ts_17.rom",    0x10000, 0x8000, CRC(deb657e4) SHA1(b36b468f9bbb7a4937286230d3f6caa14c61d4dd) )
   471: 	ROM_LOAD( "ts_16.rom",    0x18000, 0x8000, CRC(d363b5f9) SHA1(1dd3991d99db2d6bcbdb12879ba50a01fef95004) )
   472: 	ROM_LOAD( "ts_13.rom",    0x20000, 0x8000, CRC(a8f5a004) SHA1(36ab0cb8ec9ce0519876f7461ccc5020c9c5b597) )
   473: 	ROM_LOAD( "ts_18.rom",    0x28000, 0x8000, CRC(3b36948c) SHA1(d85fcc0265ba1729c587b046cc5a7ba6f25363dd) )
   474: 	ROM_LOAD( "ts_23.rom",    0x30000, 0x8000, CRC(bbfbe58a) SHA1(9b1d5672b6f3c5c0952f8dcd0da71acc68a97a5e) )
   475: 	ROM_LOAD( "ts_24.rom",    0x38000, 0x8000, CRC(f156e564) SHA1(a6cad05bcc6d9ded6294f9b5aa856d05641aed02) )
   476: 
   477: 	ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE )
   478: 	ROM_LOAD( "ts_10.rom",    0x00000, 0x8000, CRC(c3587d05) SHA1(ad0898a5d4cf110783ef092bf8e65b6ef31a8ae0) )	/* Sprites */
   479: 	ROM_LOAD( "ts_09.rom",    0x08000, 0x8000, CRC(6b63eef2) SHA1(5d1580db7f49c5994c2a08a36c2d05f3e246930d) )
   480: 	ROM_LOAD( "ts_15.rom",    0x10000, 0x8000, CRC(db8cebb0) SHA1(1cc9eac14851cde95fb2d69d6f5ffb08bc9c0d93) )
   481: 	ROM_LOAD( "ts_14.rom",    0x18000, 0x8000, CRC(e2e41abf) SHA1(d002d0d8fdbb9ec3e2eac218f6338f733953ca82) )
   482: 	ROM_LOAD( "ts_20.rom",    0x20000, 0x8000, CRC(bfd1a695) SHA1(bf93486b96bfa1a1d5015189043b07e6130e6df1) )
   483: 	ROM_LOAD( "ts_19.rom",    0x28000, 0x8000, CRC(928b669e) SHA1(98ea9d23a46b0700490fd2fa7ab4fb0988dd5ca6) )
   484: 	ROM_LOAD( "ts_22.rom",    0x30000, 0x8000, CRC(3fe05d9a) SHA1(32e28ef03fb82785019d1ae8b3859215b5368c2b) )
   485: 	ROM_LOAD( "ts_21.rom",    0x38000, 0x8000, CRC(27a9bb7c) SHA1(bb60332c0ecde4d7797960dec39c1079498175c3) )
   486: 
   487: 	ROM_REGION( 0x0100, REGION_PROMS, 0 )
   488: 	ROM_LOAD( "63s141.18f",   0x0000, 0x0100, CRC(b58d0023) SHA1(e8a4a2e2951bf73b3d9eed6957e9ee1e61c9c58a) )	/* priority (not used) */
   489: ROM_END
   490: 
   491: 
   492: 
   493: GAME( 1987, bionicc,  0,       bionicc, bionicc, 0, ROT0, "Capcom", "Bionic Commando (US set 1)" )
   494: GAME( 1987, bionicc2, bionicc, bionicc, bionicc, 0, ROT0, "Capcom", "Bionic Commando (US set 2)" )
   495: GAME( 1987, topsecrt, bionicc, bionicc, bionicc, 0, ROT0, "Capcom", "Top Secret (Japan)" )
   496: 




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