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

Source Listing


     1: /*
     2: Dynamic Ski
     3: (c)1984 Taiyo
     4: 
     5: Dynamic Ski runs on a single Z80.  It has the same graphics format as the
     6: newer Taiyo games.
     7: 
     8: The game has some minor priority glitches.
     9: 
    10: ---------------------------------------------------------------------------
    11: 
    12: Chinese Hero (developed by Taiyo)
    13: (c)1984 Taiyo
    14: 
    15: Chinese Hero hardware differs only slightly from Shanghai Kid:
    16: - sprites have 3 bitplanes instead of 2
    17: - videoram attributes for the tilemap don't include xflip
    18: - no protection
    19: 
    20: ---------------------------------------------------------------------------
    21: 
    22: Shanghai Kid / (Hokuha Syourin) Hiryu no Ken
    23: (c)1985 Nihon Game (distributed by Taito)
    24: 
    25: 	3 Z-80A CPU
    26: 	1 AY-3-8910
    27: 	1 XTAL 18.432MHz
    28: 
    29: Also distributed with Data East and Memetron license.
    30: 
    31: Two board set CPU/sound & video.
    32: 
    33: There is a 1.5" by 2" by 4" black epoxy block that has an external battery.
    34: The block is connected to the PCB by a 40 pin DIP socket labeled IC30.
    35: There is a small smt IC on the video board with the numbers ground off.
    36: 
    37: ---------------------------------------------------------------------------
    38: 
    39: Some company history:
    40: 
    41: Nihon Game changed their name to Culture Brain.
    42: 
    43: Games by Nihon Game/Culture Brain:
    44: 	1982 Monster Zero
    45: 	1983 Space Hunter
    46: 	1984 Chinese Hero
    47: 	1985 Hokuha Syourin Hiryuu no Ken / Shanghai Kid
    48: 	1986 Super Chinese (Nintendo Vs. System)
    49: */
    50: 
    51: #include "driver.h" 
    52: #include "vidhrdw/generic.h" 
    53: #include "cpu/z80/z80.h" 
    54: 
    55: /* from vidhrdw/shangkid.c */
    56: extern UINT8 *shangkid_videoreg;
    57: extern int shangkid_gfx_type;
    58: 
    59: VIDEO_START( shangkid );
    60: VIDEO_UPDATE( shangkid );
    61: WRITE_HANDLER( shangkid_videoram_w );
    62: 
    63: PALETTE_INIT( dynamski );
    64: VIDEO_UPDATE( dynamski );
    65: 
    66: /***************************************************************************************/
    67: 
    68: static data8_t bbx_sound_enable;
    69: static data8_t bbx_AY8910_control;
    70: static data8_t sound_latch;
    71: static data8_t *shareram;
    72: 
    73: /***************************************************************************************/
    74: 
    75: static struct DACinterface dac_interface = {
    76: 	1,
    77: 	{ MIXER(50,50) }
    78: };
    79: 
    80: static struct AY8910interface ay8910_interface = {
    81: 	1,	/* number of chips */
    82: 	2000000, /* 2 MHz? */
    83: 	{ 10 }, /* volume */
    84: 	{ 0 },
    85: 	{ 0 },
    86: 	{ 0 },
    87: 	{ 0 }
    88: };
    89: 
    90: /***************************************************************************************/
    91: 
    92: static DRIVER_INIT( chinhero )
    93: {
    94: 	shangkid_gfx_type = 0;
    95: }
    96: 
    97: static DRIVER_INIT( shangkid )
    98: {
    99: 	shangkid_gfx_type = 1;
   100: }
   101: 
   102: /***************************************************************************************/
   103: 
   104: static WRITE_HANDLER( shangkid_maincpu_bank_w )
   105: {
   106: 	cpu_setbank( 1,&memory_region(REGION_CPU1)[(data&1)?0x10000:0x8000] );
   107: }
   108: 
   109: static WRITE_HANDLER( shangkid_bbx_enable_w )
   110: {
   111: 	cpu_set_halt_line( 1, data?0:1 );
   112: }
   113: 
   114: static WRITE_HANDLER( shangkid_cpu_reset_w )
   115: {
   116: 	if( data == 0 )
   117: 	{
   118: 		cpu_set_reset_line(1,PULSE_LINE);
   119: 	}
   120: 	else if( data == 1 )
   121: 	{
   122: 		cpu_set_reset_line(0,PULSE_LINE);
   123: 	}
   124: }
   125: 
   126: static WRITE_HANDLER( shangkid_sound_enable_w )
   127: {
   128: 	bbx_sound_enable = data;
   129: }
   130: 
   131: WRITE_HANDLER( shangkid_bbx_AY8910_control_w )
   132: {
   133: 	bbx_AY8910_control = data;
   134: 	AY8910_control_port_0_w( offset, data );
   135: }
   136: 
   137: WRITE_HANDLER( shangkid_bbx_AY8910_write_w )
   138: {
   139: 	switch( bbx_AY8910_control )
   140: 	{
   141: 	case 0x0e:
   142: 		if( bbx_sound_enable )
   143: 		{
   144: 			if( data == 0x01 )
   145: 			{
   146: 				/* 0->1 transition triggers interrupt on Sound CPU */
   147: 				cpu_set_irq_line( 2, 0, HOLD_LINE );
   148: 			}
   149: 		}
   150: 		else
   151: 		{
   152: 			cpu_setbank( 2,&memory_region( REGION_CPU3 )[data?0x0000:0x10000] );
   153: 		}
   154: 		break;
   155: 
   156: 	case 0x0f:
   157: 		sound_latch = data;
   158: 		break;
   159: 
   160: 	default:
   161: 		AY8910_write_port_0_w( offset, data );
   162: 		break;
   163: 	}
   164: }
   165: 
   166: /***************************************************************************************/
   167: 
   168: READ_HANDLER( shangkid_soundlatch_r )
   169: {
   170: 	return sound_latch;
   171: }
   172: 
   173: /***************************************************************************************/
   174: 
   175: static WRITE_HANDLER( shareram_w )
   176: {
   177: 	shareram[offset] = data;
   178: }
   179: 
   180: static READ_HANDLER( shareram_r )
   181: {
   182: 	return shareram[offset];
   183: }
   184: 
   185: /***************************************************************************************/
   186: 
   187: static struct GfxLayout shangkid_char_layout = {
   188: 	8,8,
   189: 	RGN_FRAC(1,1),
   190: 	2,
   191: 	{ 0,4 },
   192: 	{ 0,1,2,3,8,9,10,11 },
   193: 	{ 0*16,1*16,2*16,3*16,4*16,5*16,6*16,7*16 },
   194: 	8*16
   195: };
   196: 
   197: static struct GfxLayout shangkid_sprite_layout = {
   198: 	16,16,
   199: 	RGN_FRAC(1,1),
   200: 	2,
   201: 	{ 0,4 },
   202: 	{
   203: 		0,1,2,3,8,9,10,11,
   204: 		128+0,128+1,128+2,128+3,128+8,128+9,128+10,128+11
   205: 	},
   206: 	{
   207: 		0*16,1*16,2*16,3*16,4*16,5*16,6*16,7*16,
   208: 		256+0*16,256+1*16,256+2*16,256+3*16,256+4*16,256+5*16,256+6*16,256+7*16
   209: 	},
   210: 	8*0x40
   211: };
   212: 
   213: static struct GfxLayout chinhero_sprite_layout1 = {
   214: 	16,16,
   215: 	0x80,
   216: 	3,
   217: 	{ 0x4000*8+4,0,4 },
   218: 	{
   219: 		0,1,2,3,8,9,10,11,
   220: 		128+0,128+1,128+2,128+3,128+8,128+9,128+10,128+11
   221: 	},
   222: 	{
   223: 		0*16,1*16,2*16,3*16,4*16,5*16,6*16,7*16,
   224: 		256+0*16,256+1*16,256+2*16,256+3*16,256+4*16,256+5*16,256+6*16,256+7*16
   225: 	},
   226: 	8*0x40
   227: };
   228: 
   229: static struct GfxLayout chinhero_sprite_layout2 = {
   230: 	16,16,
   231: 	0x80,
   232: 	3,
   233: 	{ 0x4000*8,0x2000*8+0,0x2000*8+4 },
   234: 	{
   235: 		0,1,2,3,8,9,10,11,
   236: 		128+0,128+1,128+2,128+3,128+8,128+9,128+10,128+11
   237: 	},
   238: 	{
   239: 		0*16,1*16,2*16,3*16,4*16,5*16,6*16,7*16,
   240: 		256+0*16,256+1*16,256+2*16,256+3*16,256+4*16,256+5*16,256+6*16,256+7*16
   241: 	},
   242: 	8*0x40
   243: };
   244: 
   245: static struct GfxDecodeInfo chinhero_gfxdecodeinfo[] = {
   246: 	{ REGION_GFX1, 0, &shangkid_char_layout,	0, 0x40 },
   247: 	{ REGION_GFX2, 0, &chinhero_sprite_layout1,	0, 0x20 },
   248: 	{ REGION_GFX2, 0, &chinhero_sprite_layout2,	0, 0x20 },
   249: 	{ REGION_GFX3, 0, &chinhero_sprite_layout1,	0, 0x20 },
   250: 	{ REGION_GFX3, 0, &chinhero_sprite_layout2,	0, 0x20 },
   251: 	{ -1 }
   252: };
   253: 
   254: static struct GfxDecodeInfo shangkid_gfxdecodeinfo[] = {
   255: 	{ REGION_GFX1, 0, &shangkid_char_layout,	0, 0x40 },
   256: 	{ REGION_GFX2, 0, &shangkid_sprite_layout,	0, 0x40 },
   257: 	{ -1 }
   258: };
   259: 
   260: static struct GfxDecodeInfo dynamski_gfxdecodeinfo[] = {
   261: 	{ REGION_GFX1, 0, &shangkid_char_layout,	   0, 0x10 },
   262: 	{ REGION_GFX2, 0, &shangkid_sprite_layout,	0x40, 0x10 },
   263: 	{ -1 }
   264: };
   265: 
   266: /***************************************************************************************/
   267: 
   268: static MEMORY_READ_START( main_readmem )
   269: 	{ 0x0000, 0x7fff, MRA_ROM },
   270: 	{ 0x8000, 0x9fff, MRA_BANK1 },
   271: 	{ 0xb800, 0xb800, input_port_0_r }, /* SW1 */
   272: 	{ 0xb801, 0xb801, input_port_1_r }, /* coin/start */
   273: 	{ 0xb802, 0xb802, input_port_2_r }, /* player#2 */
   274: 	{ 0xb803, 0xb803, input_port_3_r }, /* player#1 */
   275: 	{ 0xd000, 0xffff, MRA_RAM },
   276: MEMORY_END
   277: 
   278: static MEMORY_WRITE_START( main_writemem )
   279: 	{ 0x0000, 0x9fff, MWA_ROM },
   280: 	{ 0xa000, 0xa000, MWA_NOP }, /* ? */
   281: 	{ 0xb000, 0xb000, shangkid_bbx_enable_w },
   282: 	{ 0xb001, 0xb001, shangkid_sound_enable_w },
   283: 	{ 0xb002, 0xb002, MWA_NOP },		/* main CPU interrupt-related */
   284: 	{ 0xb003, 0xb003, MWA_NOP },		/* BBX interrupt-related */
   285: 	{ 0xb004, 0xb004, shangkid_cpu_reset_w },
   286: 	{ 0xb006, 0xb006, MWA_NOP },		/* coin counter */
   287: 	{ 0xb007, 0xb007, shangkid_maincpu_bank_w },
   288: 	{ 0xc000, 0xc002, MWA_RAM, &shangkid_videoreg },
   289: 	{ 0xd000, 0xdfff, shangkid_videoram_w, &videoram },
   290: 	{ 0xe000, 0xfdff, MWA_RAM, &shareram },
   291: 	{ 0xfe00, 0xffff, MWA_RAM, &spriteram },
   292: MEMORY_END
   293: 
   294: /***************************************************************************************/
   295: 
   296: static MEMORY_READ_START( bbx_readmem )
   297: 	{ 0x0000, 0x9fff, MRA_ROM },
   298: 	{ 0xb800, 0xb800, input_port_0_r }, /* SW1 */
   299: 	{ 0xb801, 0xb801, input_port_1_r }, /* coin/start */
   300: 	{ 0xb802, 0xb802, input_port_2_r }, /* player#2 */
   301: 	{ 0xb803, 0xb803, input_port_3_r }, /* player#1 */
   302: 	{ 0xd000, 0xdfff, videoram_r },
   303: 	{ 0xe000, 0xffff, shareram_r },
   304: MEMORY_END
   305: 
   306: static MEMORY_WRITE_START( bbx_writemem )
   307: 	{ 0x0000, 0x9fff, MWA_ROM },
   308: 	{ 0xa000, 0xa000, MWA_NOP }, /* ? */
   309: 	{ 0xb000, 0xb000, shangkid_bbx_enable_w },
   310: 	{ 0xb001, 0xb001, shangkid_sound_enable_w },
   311: 	{ 0xb002, 0xb002, MWA_NOP },		/* main CPU interrupt-related */
   312: 	{ 0xb003, 0xb003, MWA_NOP },		/* BBX interrupt-related */
   313: 	{ 0xb004, 0xb004, shangkid_cpu_reset_w },
   314: 	{ 0xb006, 0xb006, MWA_NOP },		/* coin counter */
   315: 	{ 0xb007, 0xb007, shangkid_maincpu_bank_w },
   316: 	{ 0xd000, 0xdfff, shangkid_videoram_w },
   317: 	{ 0xe000, 0xffff, shareram_w },
   318: MEMORY_END
   319: 
   320: static PORT_WRITE_START( bbx_writeport )
   321: 	{ 0x00, 0x00, shangkid_bbx_AY8910_control_w },
   322: 	{ 0x01, 0x01, shangkid_bbx_AY8910_write_w },
   323: PORT_END
   324: 
   325: /***************************************************************************************/
   326: 
   327: static MEMORY_READ_START( sound_readmem )
   328: 	{ 0x0000, 0xdfff, MRA_BANK2 },
   329: 	{ 0xe000, 0xefff, MRA_RAM },
   330: MEMORY_END
   331: 
   332: static MEMORY_WRITE_START( sound_writemem )
   333: 	{ 0x0000, 0xdfff, MWA_NOP }, /* sample player writes to ROM area */
   334: 	{ 0xe000, 0xefff, MWA_RAM },
   335: MEMORY_END
   336: 
   337: static PORT_READ_START( readport_sound )
   338: 	{ 0x00, 0x00, shangkid_soundlatch_r },
   339: PORT_END
   340: 
   341: static PORT_WRITE_START( writeport_sound )
   342: 	{ 0x00, 0x00, DAC_0_data_w },
   343: PORT_END
   344: 
   345: /***************************************************************************************/
   346: 
   347: static MACHINE_DRIVER_START( chinhero )
   348: 
   349: 	/* basic machine hardware */
   350: 	MDRV_CPU_ADD(Z80, 3000000) /* ? */
   351: 	MDRV_CPU_MEMORY(main_readmem,main_writemem)
   352: 	MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
   353: 
   354: 	MDRV_CPU_ADD(Z80, 3000000) /* ? */
   355: 	MDRV_CPU_MEMORY(bbx_readmem,bbx_writemem)
   356: 	MDRV_CPU_PORTS(0,bbx_writeport)
   357: 	MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
   358: 
   359: 	MDRV_CPU_ADD(Z80, 3000000) /* ? */
   360: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
   361: 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
   362: 	MDRV_CPU_PORTS(readport_sound,writeport_sound)
   363: 
   364: 	MDRV_FRAMES_PER_SECOND(60)
   365: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
   366: 	MDRV_INTERLEAVE(10)
   367: 
   368: 	/* video hardware */
   369: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   370: 	MDRV_SCREEN_SIZE(40*8, 28*8)
   371: 	MDRV_VISIBLE_AREA(16, 319-16, 0, 223)
   372: 	MDRV_GFXDECODE(chinhero_gfxdecodeinfo)
   373: 	MDRV_PALETTE_LENGTH(256)
   374: 
   375: 	MDRV_PALETTE_INIT(RRRR_GGGG_BBBB)
   376: 	MDRV_VIDEO_START(shangkid)
   377: 	MDRV_VIDEO_UPDATE(shangkid)
   378: 
   379: 	/* sound hardware */
   380: 	MDRV_SOUND_ADD(DAC, dac_interface)
   381: 	MDRV_SOUND_ADD(AY8910, ay8910_interface)
   382: MACHINE_DRIVER_END
   383: 
   384: 
   385: static MACHINE_DRIVER_START( shangkid )
   386: 
   387: 	/* basic machine hardware */
   388: 	MDRV_IMPORT_FROM(chinhero)
   389: 
   390: 	/* video hardware */
   391: 	MDRV_GFXDECODE(shangkid_gfxdecodeinfo)
   392: MACHINE_DRIVER_END
   393: 
   394: 
   395: 
   396: static MEMORY_READ_START( dynamski_readmem )
   397: 	{ 0x0000, 0x7fff, MRA_ROM },
   398: 	{ 0xc000, 0xc7ff, MRA_RAM },
   399: 	{ 0xc800, 0xcbff, MRA_RAM },
   400: 	{ 0xd000, 0xd3ff, MRA_RAM },
   401: 	{ 0xd800, 0xdbff, MRA_RAM },
   402: 	{ 0xe000, 0xe002, MRA_RAM },
   403: 	{ 0xe800, 0xe800, input_port_0_r },
   404: 	{ 0xe801, 0xe801, input_port_1_r },
   405: 	{ 0xe802, 0xe802, input_port_2_r },
   406: 	{ 0xe803, 0xe803, input_port_3_r },
   407: 	{ 0xf000, 0xf7ff, MRA_RAM }, /* work ram */
   408: MEMORY_END
   409: 
   410: static MEMORY_WRITE_START( dynamski_writemem )
   411: 	{ 0x0000, 0x7fff, MWA_ROM },
   412: 	{ 0xc000, 0xc7ff, MWA_RAM, &videoram }, /* tilemap */
   413: 	{ 0xc800, 0xcbff, MWA_RAM },
   414: 	{ 0xd000, 0xd3ff, MWA_RAM },
   415: 	{ 0xd800, 0xdbff, MWA_RAM },
   416: 	{ 0xe000, 0xe000, MWA_NOP }, /* IRQ disable */
   417: 	{ 0xe001, 0xe002, MWA_RAM }, /* screen flip */
   418: 	{ 0xf000, 0xf7ff, MWA_RAM },
   419: MEMORY_END
   420: 
   421: static PORT_WRITE_START( dynamski_writeport )
   422: 	/* ports are reversed */
   423: 	{ 0x00, 0x00, AY8910_write_port_0_w },
   424: 	{ 0x01, 0x01, AY8910_control_port_0_w },
   425: PORT_END
   426: 
   427: static MACHINE_DRIVER_START( dynamski )
   428: 
   429: 	/* basic machine hardware */
   430: 	MDRV_CPU_ADD(Z80, 3000000) /* ? */
   431: 	MDRV_CPU_MEMORY(dynamski_readmem,dynamski_writemem)
   432: 	MDRV_CPU_PORTS(0,dynamski_writeport)
   433: 	MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
   434: 
   435: 	MDRV_FRAMES_PER_SECOND(60)
   436: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
   437: 
   438: 	/* video hardware */
   439: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   440: 	MDRV_SCREEN_SIZE(256+32, 256)
   441: 	MDRV_VISIBLE_AREA(0, 255+32, 16, 255-16)
   442: 	MDRV_GFXDECODE(dynamski_gfxdecodeinfo)
   443: 	MDRV_PALETTE_LENGTH(32)
   444: 	MDRV_COLORTABLE_LENGTH(16*4+16*4)
   445: 
   446: 	MDRV_PALETTE_INIT(dynamski)
   447: 	MDRV_VIDEO_UPDATE(dynamski)
   448: 
   449: 	/* sound hardware */
   450: 	MDRV_SOUND_ADD(AY8910, ay8910_interface)
   451: MACHINE_DRIVER_END
   452: 
   453: /***************************************************************************************/
   454: 
   455: INPUT_PORTS_START( dynamski )
   456: 	PORT_START
   457: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
   458: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
   459: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 ) /* service */
   460: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 )
   461: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 )
   462: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   463: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   464: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   465: 
   466: 	PORT_START
   467: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
   468: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
   469: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   470: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   471: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
   472: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 )
   473: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   474: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   475: 
   476: 	PORT_START
   477: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
   478: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
   479: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   480: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   481: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
   482: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER2 )
   483: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   484: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   485: 
   486: 	PORT_START
   487: 	PORT_DIPNAME( 0x03, 0x01, DEF_STR( Unknown ) )
   488: 	/* what's 00 ? */
   489: 	PORT_DIPSETTING(	0x01, "A" )
   490: 	PORT_DIPSETTING(	0x02, "B" )
   491: 	PORT_DIPSETTING(	0x03, "C" )
   492: 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Cabinet ) )
   493: 	PORT_DIPSETTING(	0x04, DEF_STR( Upright ) )
   494: 	PORT_DIPSETTING(	0x00, DEF_STR( Cocktail ) )
   495: 	PORT_DIPNAME( 0x18, 0x00, DEF_STR( Coinage ) )
   496: 	PORT_DIPSETTING(	0x18, DEF_STR( 3C_1C ) )
   497: 	PORT_DIPSETTING(	0x10, DEF_STR( 2C_1C ) )
   498: 	PORT_DIPSETTING(	0x00, DEF_STR( 1C_1C ) )
   499: 	PORT_DIPSETTING(	0x08, DEF_STR( 1C_2C ) )
   500: 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
   501: 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
   502: 	PORT_DIPSETTING(	0x20, DEF_STR( On ) )
   503: 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) /* unused? */
   504: 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
   505: 	PORT_DIPSETTING(	0x40, DEF_STR( On ) )
   506: 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) /* unused? */
   507: 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
   508: 	PORT_DIPSETTING(	0x80, DEF_STR( On ) )
   509: INPUT_PORTS_END
   510: 
   511: INPUT_PORTS_START( chinhero )
   512: 	PORT_START
   513: 	PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) )
   514: 	PORT_DIPSETTING(	0x01, "3" )
   515: 	PORT_DIPSETTING(	0x02, "4" )
   516: 	PORT_DIPSETTING(	0x03, "5" )
   517: 	PORT_BITX( 0,0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Infinite",0,0 )
   518: 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
   519: 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
   520: 	PORT_DIPSETTING(	0x04, DEF_STR( On ) )
   521: 	PORT_DIPNAME( 0x18, 0x00, DEF_STR( Coinage ) )
   522: 	PORT_DIPSETTING(	0x18, DEF_STR( 3C_1C ) )
   523: 	PORT_DIPSETTING(	0x10, DEF_STR( 2C_1C ) )
   524: 	PORT_DIPSETTING(	0x00, DEF_STR( 1C_1C ) )
   525: 	PORT_DIPSETTING(	0x08, DEF_STR( 1C_2C ) )
   526: 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) )
   527: 	PORT_DIPSETTING(	0x20, DEF_STR( Off ) )
   528: 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
   529: 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Difficulty ) ) /* not verified */
   530: 	PORT_DIPSETTING(	0x00, "Easy" )
   531: 	PORT_DIPSETTING(	0x40, "Medium" )
   532: 	PORT_DIPSETTING(	0x80, "Hard" )
   533: 	PORT_DIPSETTING(	0xc0, "Hardest" )
   534: 
   535: 	PORT_START
   536: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
   537: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
   538: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 ) /* service */
   539: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 )
   540: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 )
   541: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
   542: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
   543: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
   544: 
   545: 	PORT_START
   546: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_PLAYER2 )
   547: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER2 )
   548: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_PLAYER2 )
   549: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_PLAYER2 )
   550: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
   551: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER2 )
   552: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 | IPF_PLAYER2 )
   553: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON4 | IPF_PLAYER2 )
   554: 
   555: 	PORT_START
   556: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY )
   557: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY )
   558: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY )
   559: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY )
   560: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
   561: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 )
   562: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 )
   563: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON4 )
   564: INPUT_PORTS_END
   565: 
   566: INPUT_PORTS_START( shangkid )
   567: 	PORT_START
   568: 	/*	There are also two potentiometers on the PCB for volume:
   569: 	**	RV1 - Music
   570: 	**	RV2 - Sound Effects
   571: 	*/
   572: 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
   573: 	PORT_DIPSETTING(	0x01, DEF_STR( Off ) )
   574: 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
   575: 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Cabinet ) )
   576: 	PORT_DIPSETTING(	0x02, DEF_STR( Upright ) )
   577: 	PORT_DIPSETTING(	0x00, DEF_STR( Cocktail ) )
   578: 	PORT_DIPNAME( 0x1c, 0x04, DEF_STR( Coinage ) )
   579: 	PORT_DIPSETTING(	0x10, DEF_STR( 4C_1C ) )
   580: 	PORT_DIPSETTING(	0x0c, DEF_STR( 3C_1C ) )
   581: 	PORT_DIPSETTING(	0x08, DEF_STR( 2C_1C ) )
   582: 	PORT_DIPSETTING(	0x00, DEF_STR( Unknown ) ) /* 1C_1C; no coin counter */
   583: 	PORT_DIPSETTING(	0x04, DEF_STR( 1C_1C ) )
   584: 	PORT_DIPSETTING(	0x14, DEF_STR( 1C_2C ) )
   585: 	PORT_DIPSETTING(	0x18, DEF_STR( 1C_3C ) )
   586: 	PORT_DIPSETTING(	0x1c, DEF_STR( 1C_5C ) )
   587: 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) )
   588: 	PORT_DIPSETTING(	0x20, DEF_STR( Off ) )
   589: 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
   590: 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Difficulty ) )
   591: 	PORT_DIPSETTING(	0x00, "Easy" )
   592: 	PORT_DIPSETTING(	0x40, "Medium" )
   593: 	PORT_DIPSETTING(	0x80, "Hard" )
   594: 	PORT_DIPSETTING(	0xc0, "Hardest" )
   595: 
   596: 	PORT_START
   597: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
   598: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
   599: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 ) /* service */
   600: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 )
   601: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 )
   602: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
   603: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
   604: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) /* busy flag? */
   605: 
   606: 	PORT_START
   607: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 ) /* kick */
   608: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER2 ) /* punch */
   609: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
   610: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
   611: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
   612: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
   613: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_PLAYER2 )
   614: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
   615: 
   616: 	PORT_START
   617: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) /* kick */
   618: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) /* punch */
   619: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
   620: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
   621: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
   622: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
   623: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
   624: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
   625: INPUT_PORTS_END
   626: 
   627: /***************************************************************************************/
   628: 
   629: ROM_START( chinhero )
   630: 	ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* Z80 code (main) */
   631: 	ROM_LOAD( "ic2.1",		  0x0000, 0x2000, CRC(8974bac4) SHA1(932a677d0928f4146201f206b71ac2bcc0f6735c) )
   632: 	ROM_LOAD( "ic3.2",		  0x2000, 0x2000, CRC(9b7a02fe) SHA1(b17593262ec24b999d66634b84eee95c1088f7eb) )
   633: 	ROM_LOAD( "ic4.3",		  0x4000, 0x2000, CRC(e86d4195) SHA1(5081500e0a6d4fd19690134efd6f35b6047e6727) )
   634: 	ROM_LOAD( "ic5.4",		  0x6000, 0x2000, CRC(2b629d2c) SHA1(7e92e2c2d09d3501ddbf79a14228cf273f4a17df) )
   635: 	ROM_LOAD( "ic6.5",		  0x8000, 0x2000, CRC(35bf4a4f) SHA1(2600c57d40355775847eed8a9592c67f5d11f1f1) )
   636: 
   637: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 code (coprocessor) */
   638: 	ROM_LOAD( "ic31.6",		  0x0000, 0x2000, CRC(7c56927b) SHA1(565a10b39f2d5d38cb5415aadd7fbdb90dcf13cb) )
   639: 	ROM_LOAD( "ic32.7",		  0x2000, 0x2000, CRC(d67b8045) SHA1(0374cafb8d4828e195791784ac187772c49c18f9) )
   640: 
   641: 	ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Z80 code (sound) */
   642: 	ROM_LOAD( "ic47.8",		  0x0000, 0x2000, CRC(3c396062) SHA1(2c1540eb123b3124e1679ba09e063e80f2423022) )
   643: 	ROM_LOAD( "ic48.9",		  0x2000, 0x2000, CRC(b14f2bab) SHA1(3643b430e3b464b0bc9aca81122b07fb8eb0fb9f) )
   644: 	ROM_LOAD( "ic49.10",	  0x4000, 0x2000, CRC(8c0e43d1) SHA1(acaead801b4782875c8b6092e987b73f9973f8b0) )
   645: 
   646: 	ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE|ROMREGION_INVERT ) /* tiles */
   647: 	ROM_LOAD( "ic21.11",	  0x0000, 0x2000, CRC(3a37fb45) SHA1(4c631cf924f1e1dfea6db3f014ab7d9cb9f4b0c4) )
   648: 	ROM_LOAD( "ic22.12",	  0x2000, 0x2000, CRC(bc21c002) SHA1(4fc5e4dfe8331a3feb1c370a8aca9c8303eb7b4e) )
   649: 
   650: 	ROM_REGION( 0x6000, REGION_GFX2, ROMREGION_DISPOSE|ROMREGION_INVERT ) /* sprites */
   651: 	ROM_LOAD( "ic114.18",	  0x0000, 0x2000, CRC(fc4183a8) SHA1(4bc891a9e16cd84ce353180705cc8fcadf414a49) )
   652: 	ROM_LOAD( "ic113.17",	  0x2000, 0x2000, CRC(d713d7fe) SHA1(8dd97f96a1190c5be5e19721227dd80adf060b4d) )
   653: 	ROM_LOAD(  "ic99.13",	  0x4000, 0x2000, CRC(a8e2a3f4) SHA1(db9f954d4b46660f5f1cb4122838e6418f92d0a3) )
   654: 
   655: 	ROM_REGION( 0x6000, REGION_GFX3, ROMREGION_DISPOSE|ROMREGION_INVERT ) /* sprites */
   656: 	ROM_LOAD( "ic112.16",	  0x0000, 0x2000, CRC(dd5170ca) SHA1(e0a9d1dbc021a8ad84dd7d1bd7e390e51e6328b7) )
   657: 	ROM_LOAD( "ic111.15",	  0x2000, 0x2000, CRC(20f6052e) SHA1(e22ddb3fb90ff8df5ce7fda6a26c1b9fce2f59ab) )
   658: 	ROM_LOAD( "ic110.14",	  0x4000, 0x2000, CRC(9bc2d568) SHA1(a4ee8822709645b0dc088635c0a9c263fb5a2245) )
   659: 
   660: 	ROM_REGION( 0xa80, REGION_PROMS, 0 )
   661: 	ROM_LOAD( "v_ic36_r",	  0x000, 0x100, CRC(16ae1692) SHA1(e287b96890da4815350af72e9f2189d0c72313b6) ) /* red */
   662: 	ROM_LOAD( "v_ic35_g",	  0x100, 0x100, CRC(b3d0a074) SHA1(e955fda8cb8df389507e17b7b4609e845e5ef0c4) ) /* green */
   663: 	ROM_LOAD( "v_ic27_b",	  0x200, 0x100, CRC(353a2d11) SHA1(76f21e3e092024592d9ccd33ae69c438254c5755) ) /* blue */
   664: 
   665: 	ROM_LOAD( "v_ic28_m",	  0x300, 0x100, CRC(7ca273c1) SHA1(20d85547d96bea8b310c943c45e4978a7e5b5585) ) /* unknown */
   666: 	ROM_LOAD( "v_ic69",		  0x400, 0x200, CRC(410d6f86) SHA1(3cfaef3702dbda3e7c7eb84a93561e36778aec3e) ) /* zoom */
   667: 	ROM_LOAD( "v_ic108",	  0x600, 0x200, CRC(d33c02ae) SHA1(1a2146ae404a5e8a701e1d547a8409a376d4bee4) ) /* zoom */
   668: 
   669: 	ROM_LOAD( "v_ic12",		  0x800, 0x100, CRC(0de07e89) SHA1(5655bce6ff3abad63f5b31add402cdbb51c323f0) ) /* tile pen priority */
   670: 	ROM_LOAD( "v_ic15_p",	  0x900, 0x100, CRC(7e0a0581) SHA1(e355a6ef21a65a1e828d7bd5b0f2224b06438b4a) ) /* sprite pen transparency */
   671: 	ROM_LOAD( "v_ic8",		  0xa00, 0x020, CRC(4c62974d) SHA1(fd5970b5ba1d9e986515ae06c2e83f8bf20b3cdc) )
   672: 
   673: 	ROM_LOAD( "ic8",		  0xa20, 0x020, CRC(84bcd9af) SHA1(5a5afeb6aedb8ac6ac49fb8da62df57fbd8b1780) ) /* main CPU banking */
   674: 	ROM_LOAD( "ic22",		  0xa40, 0x020, CRC(84bcd9af) SHA1(5a5afeb6aedb8ac6ac49fb8da62df57fbd8b1780) ) /* coprocessor banking */
   675: 	ROM_LOAD( "ic42",		  0xa60, 0x020, CRC(2ccfe10a) SHA1(d89ea91e5da436805fca9ded9b33609f4a862724) ) /* sound cpu banking */
   676: ROM_END
   677: 
   678: ROM_START( shangkid )
   679: 	/* Main CPU - handles game logic */
   680: 	ROM_REGION( 0x12000, REGION_CPU1, 0 ) /* Z80 (NEC D780C-1) code */
   681: 	ROM_LOAD( "cr00ic02.bin", 0x00000, 0x4000, CRC(2e420377) SHA1(73eb916b1693ffab8049ea0d8d3503629fa27948) )
   682: 	ROM_LOAD( "cr01ic03.bin", 0x04000, 0x4000, CRC(161cd358) SHA1(2cc1c30b3d3215ddc7c7f96a3358ed50e0f850e3) )
   683: 	ROM_LOAD( "cr02ic04.bin", 0x08000, 0x2000, CRC(85b6e455) SHA1(3b2cd1e55355d24c014c5afe0212c6c9f0899a28) )	/* banked at 0x8000 */
   684: 	ROM_LOAD( "cr03ic05.bin", 0x10000, 0x2000, CRC(3b383863) SHA1(3fb10a7f89cf2387d70b0337916063fd4ec5f754) )	/* banked at 0x8000 */
   685: 
   686: 	/* The BBX coprocessor is burried in an epoxy block.  It contains:
   687: 	**	-	a surface-mounted Z80 (TMPZ84C00P)
   688: 	**	-	LS245 logic IC
   689: 	**	-	battery backed ram chip Fujitsu MB8464
   690: 	**
   691: 	**	The BBX coprocessor receives graphics and sound-related commands from
   692: 	**	the main CPU via shared RAM.  It directly manages an AY8910, is
   693: 	**	responsible for populating spriteram, and forwards appropriate sound
   694: 	**	commands to the sample-playing CPU.
   695: 	*/
   696: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80: bbx module */
   697: 	ROM_LOAD( "bbx.bin",	  0x0000, 0x2000, CRC(560c0abd) SHA1(165beadd55bc29195cc680825f71f3f7f60fa0f6) ) /* battery-backed RAM */
   698: 	ROM_LOAD( "cr04ic31.bin", 0x2000, 0x2000, CRC(cb207885) SHA1(b73458c959a4ebceb4c88931f8e3d1aff01dbaff) )
   699: 	ROM_LOAD( "cr05ic32.bin", 0x4000, 0x4000, CRC(cf3b8d55) SHA1(c2e196e2762dd7884f461fc2be37698b9ed1deef) )
   700: 	ROM_LOAD( "cr06ic33.bin", 0x8000, 0x2000, CRC(0f3bdbd8) SHA1(2e0e81425e4e5592d3e2c8395075720c2ad3f79a) )
   701: 
   702: 	/*	The Sound CPU is a dedicated Sample Player */
   703: 	ROM_REGION( 0x1e000, REGION_CPU3, 0 ) /* Z80 (NEC D780C-1) */
   704: 	ROM_LOAD( "cr11ic51.bin", 0x00000, 0x4000, CRC(2e2d6afe) SHA1(1414a06b6cf14dfd69ca6cf35e4eb7d75af3f219) )
   705: 	ROM_LOAD( "cr12ic43.bin", 0x04000, 0x4000, CRC(dd29a0c8) SHA1(8411c31fefdce8c9233fe531b5bf3b6c43c03cba) )
   706: 	ROM_LOAD( "cr13ic44.bin", 0x08000, 0x4000, CRC(879d0de0) SHA1(b1422cf239381ac949867c42ca8101fa8dcac9d6) )
   707: 	ROM_LOAD( "cr07ic47.bin", 0x10000, 0x4000, CRC(20540f7c) SHA1(85c0b913948a67a34b25f0974fdd22e1dbb63166) )
   708: 	ROM_LOAD( "cr08ic48.bin", 0x14000, 0x2000, CRC(392f24db) SHA1(5bd68a4105717e18e79afba4c00733ad74b39875) )
   709: 	ROM_LOAD( "cr09ic49.bin", 0x18000, 0x4000, CRC(d50c96a8) SHA1(7fcf798b49b0827349366475dbbca1554df25cc4) )
   710: 	ROM_LOAD( "cr10ic50.bin", 0x1c000, 0x2000, CRC(873a5f2d) SHA1(32f806da319807bef68b5e810815ef2aba6ea0a7) )
   711: 
   712: 	ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE|ROMREGION_INVERT ) /* 8x8 tiles */
   713: 	ROM_LOAD( "cr20ic21.bin", 0x0000, 0x2000, CRC(eb3cbb11) SHA1(8d36d6f328263eb0b956c0bd752d2cac84795c1a) )
   714: 	ROM_LOAD( "cr21ic22.bin", 0x2000, 0x2000, CRC(7c6e75f4) SHA1(2a4a7971777136a476b8ca0b888e65a31a032a9e) )
   715: 
   716: 	ROM_REGION( 0x18000, REGION_GFX2, ROMREGION_DISPOSE|ROMREGION_INVERT ) /* 16x16 sprites */
   717: 	ROM_LOAD( "cr14i114.bin", 0x00000, 0x4000, CRC(ee1f348f) SHA1(7bfcdf645a2f406130444bb7b641a91351761c83) )
   718: 	ROM_LOAD( "cr15i113.bin", 0x04000, 0x4000, CRC(a46398bd) SHA1(2f968eb95f3406110b4b503fe4da735bb64b548b) )
   719: 	ROM_LOAD( "cr16i112.bin", 0x08000, 0x4000, CRC(cbed446c) SHA1(cc36ab32b42f6ec8ce574f040f7fb034b1351467) )
   720: 	ROM_LOAD( "cr17i111.bin", 0x0c000, 0x4000, CRC(b0a44330) SHA1(9d52856243e21ab906ee1701b6485411f2933707) )
   721: 	ROM_LOAD( "cr18ic99.bin", 0x10000, 0x4000, CRC(ff7efd7c) SHA1(95f83a9aa2f0845efe2c9c72d29e7a08c78d9b1f) )
   722: 	ROM_LOAD( "cr19i100.bin", 0x14000, 0x4000, CRC(f948f829) SHA1(c4305d4a04213af39413e1575eaee3905344c788) )
   723: 
   724: 	ROM_REGION( 0xa80, REGION_PROMS, 0 )
   725: 	ROM_LOAD( "cr31ic36.bin", 0x000, 0x100, CRC(9439590b) SHA1(cd07526d6373358bae6bfce8dbcab7d44472041f) )	/* 82S129 - red */
   726: 	ROM_LOAD( "cr30ic35.bin", 0x100, 0x100, CRC(324e295e) SHA1(9076e3da2edc8889bd635191e7687676b6fb4cec) )	/* 82S129 - green */
   727: 	ROM_LOAD( "cr28ic27.bin", 0x200, 0x100, CRC(375cba96) SHA1(fd3ba36588147a3252b800f1f86b2897e9605b8d) )	/* 82S129 - blue */
   728: 
   729: 	ROM_LOAD( "cr29ic28.bin", 0x300, 0x100, CRC(7ca273c1) SHA1(20d85547d96bea8b310c943c45e4978a7e5b5585) )	/* 82S129 - unknown */
   730: 	ROM_LOAD( "cr32ic69.bin", 0x400, 0x200, CRC(410d6f86) SHA1(3cfaef3702dbda3e7c7eb84a93561e36778aec3e) )	/* 82S147 - sprite-related (zoom?) */
   731: 	ROM_LOAD( "cr33-108.bin", 0x600, 0x200, CRC(d33c02ae) SHA1(1a2146ae404a5e8a701e1d547a8409a376d4bee4) )	/* 82S147 - sprite-related (zoom?) */
   732: 
   733: 	ROM_LOAD( "cr26ic12.bin", 0x800, 0x100, CRC(85b5e958) SHA1(f211b5122fccf84e4aa1556c0290b5cb83935386) )	/* 82S129 - tile pen priority? */
   734: 	ROM_LOAD( "cr27ic15.bin", 0x900, 0x100, CRC(f7a19fe2) SHA1(d88e0743aa858b132f636fcd5d493ccb1af82224) )	/* 82S129 - sprite pen transparency */
   735: 
   736: 	ROM_LOAD( "cr25ic8.bin",  0xa00, 0x020, CRC(c85e09ad) SHA1(f42e3840ec0e4720067eda7c536b6dcc540e63ff) )	/* 82S123 */
   737: 	ROM_LOAD( "cr22ic8.bin",  0xa20, 0x020, CRC(1a7e0b06) SHA1(648d58a4ad14f4b242e492cf302d6678d899cf4f) )	/* 82S123 - main CPU banking */
   738: 	ROM_LOAD( "cr23ic22.bin", 0xa40, 0x020, CRC(efb5f265) SHA1(3de15e03cb12956d34074abb48236537f2b47dba) )	/* 82S123 - coprocessor banking */
   739: 	ROM_LOAD( "cr24ic42.bin", 0xa60, 0x020, CRC(823878aa) SHA1(eb5026270890e5af9193e354b7e814f32238a9bf) )	/* 82S123 - sample player banking */
   740: ROM_END
   741: 
   742: ROM_START( hiryuken )
   743: 	/* Main CPU - handles game logic */
   744: 	ROM_REGION( 0x12000, REGION_CPU1, 0 ) /* Z80 (NEC D780C-1) code */
   745: 	ROM_LOAD( "1.2", 0x00000, 0x4000, CRC(c7af7f2e) SHA1(b035a4230e10bcf0891e41423a51fb6169087b8e) )
   746: 	ROM_LOAD( "2.3", 0x04000, 0x4000, CRC(639afdb3) SHA1(50bd1deffb66049f101faceb108ee95eb3fe8ae6) )
   747: 	ROM_LOAD( "3.4", 0x08000, 0x2000, CRC(ad210482) SHA1(9a32bbaf601d3b00f0a79ce90bb9a32e8e608977) ) /* banked at 0x8000 */
   748: 	ROM_LOAD( "4.5", 0x10000, 0x2000, CRC(6518943a) SHA1(b5e78267d5a58c466c9ae20ba4f9c5e14e252287) ) /* banked at 0x8000 */
   749: 
   750: 	/* The BBX coprocessor is burried in an epoxy block.  It contains:
   751: 	** - a surface-mounted Z80 (TMPZ84C00P)
   752: 	** - LS245 logic IC
   753: 	** - battery backed ram chip Fujitsu MB8464
   754: 	**
   755: 	** The BBX coprocessor receives graphics and sound-related commands from
   756: 	** the main CPU via shared RAM.  It directly manages an AY8910, is
   757: 	** responsible for populating spriteram, and forwards appropriate sound
   758: 	** commands to the sample-playing CPU.
   759: 	*/
   760: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80: bbx module */
   761: 	ROM_LOAD( "bbxj.bin",     0x0000, 0x2000, CRC(8def4aaf) SHA1(bfb9b2874294499c1026f2a4cd20f9cd0efd30f9) ) /* battery-backed RAM */
   762: 	ROM_LOAD( "5.31",         0x2000, 0x2000, CRC(8ae37ce7) SHA1(6299b0cd4e7348d4599126d61192924f19ae5401) )
   763: 	ROM_LOAD( "6.32",         0x4000, 0x4000, CRC(e835bb7f) SHA1(4ed8033994fe6ca268e20e30382dbe61eb8d2cf6) )
   764: 	ROM_LOAD( "7.33",         0x8000, 0x2000, CRC(3745ed36) SHA1(29a462a7d6e994cd2a917ce0b79fe342cfcc2417) )
   765: 
   766: 	/* The Sound CPU is a dedicated Sample Player */
   767: 	ROM_REGION( 0x1e000, REGION_CPU3, 0 ) /* Z80 (NEC D780C-1) */
   768: 	ROM_LOAD( "cr11ic51.bin", 0x00000, 0x4000, CRC(2e2d6afe) SHA1(1414a06b6cf14dfd69ca6cf35e4eb7d75af3f219) )	// 12.51
   769: //	ROM_LOAD( "cr12ic43.bin", 0x04000, 0x4000, CRC(dd29a0c8) SHA1(8411c31fefdce8c9233fe531b5bf3b6c43c03cba) )	// not present in this set
   770: //	ROM_LOAD( "cr13ic44.bin", 0x08000, 0x4000, CRC(879d0de0) SHA1(b1422cf239381ac949867c42ca8101fa8dcac9d6) )	// not present in this set
   771: 	ROM_LOAD( "cr07ic47.bin", 0x10000, 0x4000, CRC(20540f7c) SHA1(85c0b913948a67a34b25f0974fdd22e1dbb63166) )	// 8.47
   772: 	ROM_LOAD( "9.48",         0x14000, 0x4000, CRC(8da23cad) SHA1(051459d7b5395336d698b03f1cc8566f33b62c8b) )
   773: 	ROM_LOAD( "10.49",        0x18000, 0x4000, CRC(52b82fee) SHA1(99a2952af6493586745463c33b11ab69251af063) )
   774: 	ROM_LOAD( "cr10ic50.bin", 0x1c000, 0x2000, CRC(873a5f2d) SHA1(32f806da319807bef68b5e810815ef2aba6ea0a7) )	// 11.50
   775: 
   776: 	ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE|ROMREGION_INVERT ) /* 8x8 tiles */
   777: 	ROM_LOAD( "21.21",        0x0000, 0x2000, CRC(ce20a1d4) SHA1(4d5708a1b8b3ac81afeebd82eb6a3d9763ef3d39) )
   778: 	ROM_LOAD( "22.22",        0x2000, 0x2000, CRC(26fc88bf) SHA1(663c88510b4df8153b10d1b0cc20b332aab5ca2e) )
   779: 
   780: 	ROM_REGION( 0x18000, REGION_GFX2, ROMREGION_DISPOSE|ROMREGION_INVERT ) /* 16x16 sprites */
   781: 	ROM_LOAD( "15.114",       0x00000, 0x4000, CRC(ed07854e) SHA1(caebd227c458717a5fc58daa6e774b1a09e68d34) )
   782: 	ROM_LOAD( "16.113",       0x04000, 0x4000, CRC(85cf1939) SHA1(8bf410a91aba40b0336e3c6c5b2c2b353aeea420) )
   783: 	ROM_LOAD( "cr16i112.bin", 0x08000, 0x4000, CRC(cbed446c) SHA1(cc36ab32b42f6ec8ce574f040f7fb034b1351467) )	// 17.112
   784: 	ROM_LOAD( "cr17i111.bin", 0x0c000, 0x4000, CRC(b0a44330) SHA1(9d52856243e21ab906ee1701b6485411f2933707) )	// 18.111
   785: 	ROM_LOAD( "cr18ic99.bin", 0x10000, 0x4000, CRC(ff7efd7c) SHA1(95f83a9aa2f0845efe2c9c72d29e7a08c78d9b1f) )	// 19.99
   786: 	ROM_LOAD( "20.100",       0x14000, 0x4000, CRC(4bc77ca0) SHA1(22a057c3c29ff9feb0afab0cb76b37c4a1363cb1) )
   787: 
   788: 	ROM_REGION( 0xa80, REGION_PROMS, 0 )
   789: 	ROM_LOAD( "r.36",         0x000, 0x100, CRC(65dec63d) SHA1(b481151687311f8d732f8c313f8af183a53dbc2f) ) /* 82S129 - red */
   790: 	ROM_LOAD( "g.35",         0x100, 0x100, CRC(e79de8cf) SHA1(65cc626c91830eafbf5a7e4ce7571cbb0ada91c1) ) /* 82S129 - green */
   791: 	ROM_LOAD( "b.27",         0x200, 0x100, CRC(d6ab3448) SHA1(efb879e7c5dd50ea70fb5ed5e4d3b87ab2c1b8b9) ) /* 82S129 - blue */
   792: 
   793: 	ROM_LOAD( "cr29ic28.bin", 0x300, 0x100, CRC(7ca273c1) SHA1(20d85547d96bea8b310c943c45e4978a7e5b5585) ) /* 82S129 - unknown */					// m.28
   794: 	ROM_LOAD( "cr32ic69.bin", 0x400, 0x200, CRC(410d6f86) SHA1(3cfaef3702dbda3e7c7eb84a93561e36778aec3e) ) /* 82S147 - sprite-related (zoom?) */	// ic69
   795: 	ROM_LOAD( "cr33-108.bin", 0x600, 0x200, CRC(d33c02ae) SHA1(1a2146ae404a5e8a701e1d547a8409a376d4bee4) ) /* 82S147 - sprite-related (zoom?) */	// ic108
   796: 
   797: 	ROM_LOAD( "cr26ic12.bin", 0x800, 0x100, CRC(85b5e958) SHA1(f211b5122fccf84e4aa1556c0290b5cb83935386) ) /* 82S129 - tile pen priority? */		// sc.12
   798: 	ROM_LOAD( "cr27ic15.bin", 0x900, 0x100, CRC(f7a19fe2) SHA1(d88e0743aa858b132f636fcd5d493ccb1af82224) ) /* 82S129 - sprite pen transparency */	// sp.15
   799: 
   800: 	ROM_LOAD( "cr25ic8.bin",  0xa00, 0x020, CRC(c85e09ad) SHA1(f42e3840ec0e4720067eda7c536b6dcc540e63ff) ) /* 82S123 */							// a.8
   801: 	ROM_LOAD( "cr22ic8.bin",  0xa20, 0x020, CRC(1a7e0b06) SHA1(648d58a4ad14f4b242e492cf302d6678d899cf4f) ) /* 82S123 - main CPU banking */		// 1.8
   802: 	ROM_LOAD( "cr23ic22.bin", 0xa40, 0x020, CRC(efb5f265) SHA1(3de15e03cb12956d34074abb48236537f2b47dba) ) /* 82S123 - coprocessor banking */		// 2.22
   803: 	ROM_LOAD( "cr24ic42.bin", 0xa60, 0x020, CRC(823878aa) SHA1(eb5026270890e5af9193e354b7e814f32238a9bf) ) /* 82S123 - sample player banking */	// 3.42
   804: ROM_END
   805: 
   806: ROM_START( dynamski )
   807: 	ROM_REGION( 0x12000, REGION_CPU1, 0 ) /* Z80 code */
   808: 	ROM_LOAD( "dynski.1",     0x00000, 0x1000, CRC(30191160) SHA1(5ffa3355f53e4be65bd96101088d2d7b66490141) ) /* code */
   809: 	ROM_LOAD( "dynski.2",     0x01000, 0x1000, CRC(5e08a0b0) SHA1(89398752e8ea1ffd8ec8392f5c8e20f25cf8fdfb) )
   810: 	ROM_LOAD( "dynski.3",     0x02000, 0x1000, CRC(29cfd740) SHA1(a5d6b7b59e631f387788f29e8f029eaf00d1ea3f) )
   811: 	ROM_LOAD( "dynski.4",     0x03000, 0x1000, CRC(e1d47776) SHA1(d08985a5b523706bc2b3e090373a72b781116a80) )
   812: 	ROM_LOAD( "dynski.5",     0x04000, 0x1000, CRC(e39aba1b) SHA1(133d6280abccdca248b553e80dedcc4682ae8d70) )
   813: 	ROM_LOAD( "dynski.6",     0x05000, 0x1000, CRC(95780608) SHA1(16b28e014ec5602df48e382e2b63d14acb60b9ba) )
   814: 	ROM_LOAD( "dynski.7",     0x06000, 0x1000, CRC(b88d328b) SHA1(5229fcb0ed1067770fcd47bec674a6fd7b999484) )
   815: 	ROM_LOAD( "dynski.8",     0x07000, 0x1000, CRC(8db5e691) SHA1(ccacfb7cd30f03de95690bbd32ab46e39d084244) )
   816: 
   817: 	ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE|ROMREGION_INVERT ) /* 8x8 tiles */
   818: 	ROM_LOAD( "dynski8.3e",   0x0000, 0x2000, CRC(32c354dc) SHA1(6f73c9fc3802ec5f349a6088d7eaee5876c901de) )
   819: 	ROM_LOAD( "dynski9.2e",   0x2000, 0x2000, CRC(80a6290c) SHA1(3a1581451802bf2e822fba1084800e6de9bd0f7a) )
   820: 
   821: 	ROM_REGION( 0x6000, REGION_GFX2, ROMREGION_DISPOSE|ROMREGION_INVERT ) /* 16x16 sprites */
   822: 	ROM_LOAD( "dynski5.14b",  0x0000, 0x2000, CRC(aa4ac6e2) SHA1(b6f7cb7310be2a12ca17dfd0ee3526e0522eb85b) )
   823: 	ROM_LOAD( "dynski6.15b",  0x2000, 0x2000, CRC(47e76886) SHA1(c42bd3d973cf17ec265852527085085bcc674b18) )
   824: 	ROM_LOAD( "dynski7.14d",  0x4000, 0x2000, CRC(a153dfa9) SHA1(c81dbdce2e11e9d6d8465f400a048d7688745232) )
   825: 
   826: 	ROM_REGION( 0x240, REGION_PROMS, 0 )
   827: 	ROM_LOAD( "dynskic.15g",  0x000, 0x020, CRC(9333a5e4) SHA1(11025f53c98c2ae21e9d4f95da86bba4703a52bc) )	/* palette */
   828: 	ROM_LOAD( "dynskic.15f",  0x020, 0x020, CRC(3869514b) SHA1(1ef062284e52777ec6e269368a16b9b357a2647a) )	/* palette */
   829: 	ROM_LOAD( "dynski.11e",   0x040, 0x100, CRC(e625aa09) SHA1(c10371f1adf7245815c0bdcb24458c7b04edd5b9) )	/* lookup table */
   830: 	ROM_LOAD( "dynski.4g",    0x140, 0x100, CRC(761fe465) SHA1(87741a6e4d14440073aaed3a8a15bc5e30b8fcfc) )	/* lookup table */
   831: ROM_END
   832: 
   833: 
   834: GAMEX( 1984, dynamski, 0,        dynamski, dynamski, 0,        ROT90, "Taiyo", "Dynamic Ski", GAME_NO_COCKTAIL )
   835: GAME ( 1984, chinhero, 0,        chinhero, chinhero, chinhero, ROT90, "Taiyo", "Chinese Hero" )
   836: GAMEX( 1985, shangkid, 0,        shangkid, shangkid, shangkid, ROT0,  "Taiyo (Data East license)", "Shanghai Kid", GAME_NO_COCKTAIL )
   837: GAMEX( 1985, hiryuken, shangkid, shangkid, shangkid, shangkid, ROT0,  "[Nihon Game] (Taito license)", "Hokuha Syourin Hiryu no Ken", GAME_NO_COCKTAIL )
   838: 




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