QuarterArcade Coin-Op Tech Net

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

: : : VM Driver Source

Source Listing


     1: /***************************************************************************
     2: 
     3:   Super Shanghai Dragon's Eye             (c) 1992 Hot-B
     4: 
     5:   PCB is manufactured by either Hot-B or Taito, but uses Data East custom
     6:   chips.
     7: 
     8:   HB-PCB-A4
     9:   M6100691A (distributed by Taito)
    10: 
    11:   CPU  : 68000
    12:   Sound: Z80B YM2203 Y3014 M6295
    13:   OSC  : 28.0000MHz 16.0000MHz
    14: 
    15:   The original uses a protection chip which isn't fully worked out yet.
    16:   Sound doesn't work.  The bootleg never seems to write to a sound latch
    17:   (Not sure the bootleg even has the same sound hardware as the original).
    18: 
    19:   Emulation by Bryan McPhail, mish@tendril.co.uk
    20: 
    21: 
    22: Stephh's notes (based on the games M68000 code and some tests) :
    23: 
    24: 0) all games
    25: 
    26:   - There is no confirmation yet that the "Demo Sounds" Dip Switch does
    27:     something as I don't see where bit 0 of 0xfec04a is tested 8(
    28: 
    29:   - The First "Unused" Dip Switch is probably used in other (older ?) versions
    30:     to act as a "Debug Mode" Dip Switch. When it's ON, you have these features :
    31: 
    32:       * there is an extended "test mode" that also allows you to test the
    33:         BG and Object ROMS via a menu.
    34:       * You can end a level by pressing BUTTON3 from player 2 8)
    35: 
    36:   - The "Adult Mode" Dip Switch determines if "Shanghai Paradise" is available.
    37:   - The "Quest Mode" Dip Switch determines if "Shanghai Quest" is available.
    38:   - The "Use Mahjong Tiles" Dip Switch only has an effect when playing
    39:     "Shanghai Advanced".
    40: 
    41: 1) 'sshangha'
    42: 
    43:   - There are writes to 0x100000-0x10000f (code from 0x000964 to 0x000a8c),
    44:     but their effect is unknown.
    45: 
    46: 2) 'sshanghb'
    47: 
    48:   - There are writes to 0x101000-0x10100f (code from 0x000964 to 0x000a8c),
    49:     but their effect is unknown. Note that the code is the SAME as the one
    50:     in 'sshangha' (only the 0x10?00? addresses are different).
    51: 
    52: ***************************************************************************/
    53: 
    54: #include "driver.h" 
    55: #include "vidhrdw/generic.h" 
    56: 
    57: #define SSHANGHA_HACK	0 
    58: 
    59: VIDEO_START( sshangha );
    60: VIDEO_UPDATE( sshangha );
    61: 
    62: WRITE16_HANDLER( sshangha_pf2_data_w );
    63: WRITE16_HANDLER( sshangha_pf1_data_w );
    64: WRITE16_HANDLER( sshangha_control_0_w );
    65: WRITE16_HANDLER( sshangha_palette_24bit_w );
    66: WRITE16_HANDLER (sshangha_video_w);
    67: 
    68: extern data16_t *sshangha_pf1_data;
    69: extern data16_t *sshangha_pf2_data;
    70: extern data16_t *sshangha_pf1_rowscroll, *sshangha_pf2_rowscroll;
    71: 
    72: static data16_t *sshangha_prot_data;
    73: 
    74: /******************************************************************************/
    75: 
    76: static WRITE16_HANDLER( sshangha_protection16_w )
    77: {
    78: 	COMBINE_DATA(&sshangha_prot_data[offset]);
    79: 
    80: 	logerror("CPU #0 PC %06x: warning - write unmapped control address %06x %04x\n",activecpu_get_pc(),offset<<1,data);
    81: 
    82: 	if (offset == (0x260 >> 1)) {
    83: 		//soundlatch_w(0,data&0xff);
    84: 		//cpu_set_irq_line(1, IRQ_LINE_NMI, PULSE_LINE);
    85: 	}
    86: }
    87: 
    88: static WRITE16_HANDLER( sshangha_sound_w )
    89: {
    90: 	soundlatch_w(0,data&0xff);
    91: 	cpu_set_irq_line(1, IRQ_LINE_NMI, PULSE_LINE);
    92: }
    93: 
    94: /* Protection/IO chip 146 */
    95: static READ16_HANDLER( sshangha_protection16_r )
    96: {
    97: 	switch (offset)
    98: 	{
    99: 		case 0x050 >> 1: /* Player 1 & Player 2 joysticks & fire buttons */
   100: 			return (readinputport(0) + (readinputport(1) << 8));
   101: 		case 0x76a >> 1: /* Credits */
   102: 			return readinputport(2);
   103: 		case 0x0ac >> 1: /* DIPS */
   104: 			return (readinputport(3) + (readinputport(4) << 8));
   105: 
   106: 		// Protection TODO
   107: 	}
   108: 
   109: 	logerror("CPU #0 PC %06x: warning - read unmapped control address %06x\n",activecpu_get_pc(),offset<<1);
   110: 	return sshangha_prot_data[offset];
   111: }
   112: 
   113: static READ16_HANDLER( sshanghb_protection16_r )
   114: {
   115: 	switch (offset)
   116: 	{
   117: 		case 0x050 >> 1: /* Player 1 & Player 2 joysticks & fire buttons */
   118: 			return (readinputport(0) + (readinputport(1) << 8));
   119: 		case 0x76a >> 1: /* Credits */
   120: 			return readinputport(2);
   121: 		case 0x0ac >> 1: /* DIPS */
   122: 			return (readinputport(3) + (readinputport(4) << 8));
   123: 	}
   124: 	return sshangha_prot_data[offset];
   125: }
   126: 
   127: /* Probably returns 0xffff when sprite DMA is complete, the game waits on it */
   128: static READ16_HANDLER( deco_71_r )
   129: {
   130: 	return 0xffff;
   131: }
   132: 
   133: /******************************************************************************/
   134: 
   135: static MACHINE_INIT( sshangha )
   136: {
   137: 	/* Such thing is needed as there is no code to turn the screen
   138: 	   to normal orientation when the game is reset.
   139: 	   I'm using the value that forces the screen to be in normal
   140:          orientation when entering the "test mode"
   141:          (check the game code from 0x0006b8 to 0x0006f0).
   142: 	   I can't tell however if this is accurate or not. */
   143: 	sshangha_control_0_w(0, 0x10, 0xff00);
   144: }
   145: 
   146: /******************************************************************************/
   147: 
   148: static MEMORY_READ16_START( sshangha_readmem )
   149: 	{ 0x000000, 0x03ffff, MRA16_ROM },
   150: 
   151: 	{ 0x084000, 0x0847ff, sshanghb_protection16_r },
   152: 	{ 0x101000, 0x101001, deco_71_r },//bootleg hack
   153: 
   154: 	{ 0x200000, 0x207fff, MRA16_RAM },
   155: 	{ 0x340000, 0x340fff, MRA16_RAM },
   156: 	{ 0x350000, 0x350001, deco_71_r },
   157: 	{ 0x360000, 0x360fff, MRA16_RAM },
   158: 	{ 0x370000, 0x370001, deco_71_r },
   159: 	{ 0x380000, 0x383fff, MRA16_RAM },
   160: 	{ 0xfec000, 0xff3fff, MRA16_RAM },
   161: 	{ 0xff4000, 0xff47ff, sshangha_protection16_r },
   162: MEMORY_END
   163: 
   164: static MEMORY_WRITE16_START( sshangha_writemem )
   165: 	{ 0x000000, 0x03ffff, MWA16_ROM },
   166: 	{ 0x10000c, 0x10000d, sshangha_sound_w },
   167: 	{ 0x10100c, 0x10100d, sshangha_sound_w },	/* the bootleg writes here */
   168: 	{ 0x200000, 0x201fff, sshangha_pf1_data_w, &sshangha_pf1_data },
   169: 	{ 0x202000, 0x203fff, sshangha_pf2_data_w, &sshangha_pf2_data },
   170: 	{ 0x204000, 0x2047ff, MWA16_RAM, &sshangha_pf1_rowscroll },
   171: 	{ 0x206000, 0x2067ff, MWA16_RAM, &sshangha_pf2_rowscroll },
   172: 	{ 0x300000, 0x30000f, sshangha_control_0_w },
   173: 	{ 0x320000, 0x320001, sshangha_video_w },
   174: 	{ 0x320002, 0x320005, MWA16_NOP },
   175: 	{ 0x340000, 0x340fff, MWA16_RAM, &spriteram16 },
   176: 	{ 0x350000, 0x350007, MWA16_NOP },
   177: 	{ 0x360000, 0x360fff, MWA16_RAM, &spriteram16_2 },
   178: 	{ 0x370000, 0x370007, MWA16_NOP },
   179: 	{ 0x380000, 0x383fff, sshangha_palette_24bit_w, &paletteram16 },
   180: 	{ 0x3c0000, 0x3c0fff, MWA16_RAM },	/* Sprite ram buffer on bootleg only?? */
   181: 	{ 0xfec000, 0xff3fff, MWA16_RAM },
   182: 	{ 0xff4000, 0xff47ff, sshangha_protection16_w, &sshangha_prot_data },
   183: MEMORY_END
   184: 
   185: /******************************************************************************/
   186: 
   187: static MEMORY_READ_START( sound_readmem )
   188: 	{ 0x0000, 0x7fff, MRA_ROM },
   189: 	{ 0xc000, 0xc000, YM2203_status_port_0_r },
   190: 	{ 0xf800, 0xffff, MRA_RAM },
   191: //	{ 0xf800, 0xf800, soundlatch_r },
   192: MEMORY_END
   193: 
   194: static MEMORY_WRITE_START( sound_writemem )
   195: 	{ 0x0000, 0x7fff, MWA_ROM },
   196: 	{ 0xc000, 0xc000, YM2203_control_port_0_w },
   197: 	{ 0xc001, 0xc001, YM2203_write_port_0_w },
   198: 	{ 0xf800, 0xffff, MWA_RAM },
   199: MEMORY_END
   200: 
   201: /******************************************************************************/
   202: 
   203: INPUT_PORTS_START( sshangha )
   204: 	PORT_START	/* Player 1 controls (0xfec047.b) */
   205: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
   206: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
   207: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
   208: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
   209: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )	// "Pick Tile"
   210: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )	// "Cancel"
   211: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )	// "Help"
   212: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
   213: 
   214: 	PORT_START	/* Player 2 controls (0xfec046.b) */
   215: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
   216: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
   217: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
   218: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
   219: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )	// "Pick Tile"
   220: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )	// "Cancel"
   221: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )	// "Help"
   222: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
   223: 
   224: 	PORT_START	/* Credits */
   225: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
   226: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
   227: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
   228: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
   229: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
   230: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
   231: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
   232: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
   233: 
   234: 	/* Dips seem inverted with respect to other Deco games */
   235: 
   236: 	PORT_START	/* Dip switch bank 1 (0xfec04a.b, inverted bits order) */
   237: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )	// To be confirmed
   238: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   239: 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
   240: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
   241: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   242: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   243: 	PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
   244: 	PORT_DIPNAME( 0x10, 0x10, "Coin Mode" )			// Check code at 0x0010f2
   245: 	PORT_DIPSETTING(    0x10, "Mode 1" )
   246: 	PORT_DIPSETTING(    0x00, "Mode 2" )
   247: 	/* Settings for "Mode 1" */
   248: 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_A ) )
   249: 	PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
   250: 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
   251: 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
   252: 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
   253: 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_B ) )
   254: 	PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
   255: 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
   256: 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
   257: 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
   258: 	/* Settings for "Mode 2"
   259: 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_A ) )
   260: 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
   261: 	PORT_DIPSETTING(    0x08, DEF_STR( 3C_1C ) )
   262: 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
   263: 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
   264: 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_B ) )
   265: 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
   266: 	PORT_DIPSETTING(    0x02, DEF_STR( 3C_1C ) )
   267: 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
   268: 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_4C ) )
   269: 	*/
   270: 
   271: 	PORT_START	/* Dip switch bank 2 (0xfec04b.b, inverted bits order) */
   272: 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
   273: 	PORT_DIPSETTING(    0x40, "Easy" )
   274: 	PORT_DIPSETTING(    0xc0, "Normal" )
   275: 	PORT_DIPSETTING(    0x80, "Hard" )
   276: 	PORT_DIPSETTING(    0x00, "Hardest" )
   277: #if SSHANGHA_HACK 
   278: 	PORT_DIPNAME( 0x20, 0x20, "Debug Mode" )
   279: #else 
   280: 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )		// See notes
   281: #endif 
   282: 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
   283: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   284: 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
   285: 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
   286: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   287: 	PORT_DIPNAME( 0x08, 0x08, "Tile Animation" )
   288: 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
   289: 	PORT_DIPSETTING(    0x08, DEF_STR( Yes ) )
   290: 	PORT_DIPNAME( 0x04, 0x04, "Use Mahjong Tiles" )
   291: 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
   292: 	PORT_DIPSETTING(    0x04, DEF_STR( Yes ) )
   293: 	PORT_DIPNAME( 0x02, 0x02, "Adult Mode" )
   294: 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
   295: 	PORT_DIPSETTING(    0x02, DEF_STR( Yes ) )
   296:   	PORT_DIPNAME( 0x01, 0x01, "Quest Mode" )
   297: 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
   298: 	PORT_DIPSETTING(    0x01, DEF_STR( Yes ) )
   299: INPUT_PORTS_END
   300: 
   301: /******************************************************************************/
   302: 
   303: static struct GfxLayout charlayout =
   304: {
   305: 	8,8,	/* 8*8 chars */
   306: 	4096,
   307: 	4,		/* 4 bits per pixel  */
   308: 	{ 8, 0, 0x100000*8+8,0x100000*8+0 },
   309: 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
   310: 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
   311: 	16*8
   312: };
   313: 
   314: static struct GfxLayout tilelayout =
   315: {
   316: 	16,16,
   317: 	RGN_FRAC(1,2),
   318: 	4,
   319: 	{ 8, 0, 0x100000*8+8, 0x100000*8+0 },
   320: 	{ 32*8+0, 32*8+1, 32*8+2, 32*8+3, 32*8+4, 32*8+5, 32*8+6, 32*8+7,
   321: 		0, 1, 2, 3, 4, 5, 6, 7 },
   322: 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
   323: 			8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
   324: 	64*8
   325: };
   326: 
   327: static struct GfxDecodeInfo gfxdecodeinfo[] =
   328: {
   329: 	{ REGION_GFX1, 0, &charlayout,  256, 64 }, /* Characters 8x8 */
   330: 	{ REGION_GFX1, 0, &tilelayout,  256, 64 }, /* Tiles 16x16 */
   331: 	{ REGION_GFX2, 0, &tilelayout,    0, 32 }, /* Sprites 16x16 */
   332: 	{ -1 } /* end of array */
   333: };
   334: 
   335: /******************************************************************************/
   336: 
   337: static struct OKIM6295interface okim6295_interface =
   338: {
   339: 	1,          /* 1 chip */
   340: 	{ 7757 },	/* Frequency */
   341: 	{ REGION_SOUND1 },      /* memory region */
   342: 	{ 50 }
   343: };
   344: 
   345: static void irqhandler(int state)
   346: {
   347: 	cpu_set_irq_line(1,0,state);
   348: }
   349: 
   350: static struct YM2203interface ym2203_interface =
   351: {
   352: 	1,
   353: 	16000000/4,
   354: 	{ YM2203_VOL(60,60) },
   355: 	{ 0 },
   356: 	{ 0 },
   357: 	{ 0 },
   358: 	{ 0 },
   359: 	{ irqhandler }
   360: };
   361: 
   362: static MACHINE_DRIVER_START( sshangha )
   363: 
   364: 	/* basic machine hardware */
   365: 	MDRV_CPU_ADD(M68000, 28000000/2)
   366: 	MDRV_CPU_MEMORY(sshangha_readmem,sshangha_writemem)
   367: 	MDRV_CPU_VBLANK_INT(irq6_line_hold,1)
   368: 
   369: 	MDRV_CPU_ADD(Z80, 16000000/4)
   370: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
   371: 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
   372: 
   373: 	MDRV_FRAMES_PER_SECOND(60)
   374: 	MDRV_VBLANK_DURATION(529)
   375: 	MDRV_MACHINE_INIT(sshangha)	/* init machine */
   376: 
   377: 	/* video hardware */
   378: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_NEEDS_6BITS_PER_GUN /*| VIDEO_BUFFERS_SPRITERAM*/)
   379: 	MDRV_SCREEN_SIZE(40*8, 32*8)
   380: 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
   381: 	MDRV_GFXDECODE(gfxdecodeinfo)
   382: 	MDRV_PALETTE_LENGTH(4096)
   383: 
   384: 	MDRV_VIDEO_START(sshangha)
   385: 	MDRV_VIDEO_UPDATE(sshangha)
   386: 
   387: 	/* sound hardware */
   388: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
   389: 	MDRV_SOUND_ADD(YM2203, ym2203_interface)
   390: 	MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
   391: MACHINE_DRIVER_END
   392: 
   393: /******************************************************************************/
   394: 
   395: ROM_START( sshangha )
   396: 	ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 68000 code */
   397: 	ROM_LOAD16_BYTE( "ss007-1.u28", 0x00000, 0x20000, CRC(bc466edf) SHA1(b96525b2c879d15b46a7753fa6ebf12a851cd019) )
   398: 	ROM_LOAD16_BYTE( "ss006-1.u27", 0x00001, 0x20000, CRC(872a2a2d) SHA1(42d7a01465d5c403354aaf0f2dab8adb9afe61b0) )
   399: 
   400: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* Sound CPU */
   401: 	ROM_LOAD( "ss008.u82", 0x000000, 0x010000, CRC(04dc3647) SHA1(c06a7e8932c03de5759a9b69da0d761006b49517) )
   402: 
   403: 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
   404: 	ROM_LOAD( "ss001.u8",  0x000000, 0x100000, CRC(ebeca5b7) SHA1(1746e757ad9bbef2aa9028c54f25d4aa4dedf79e) )
   405: 	ROM_LOAD( "ss002.u7",  0x100000, 0x100000, CRC(67659f29) SHA1(50944877665b7b848b3f7063892bd39a96a847cf) )
   406: 
   407: 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
   408: 	ROM_LOAD( "ss003.u39", 0x000000, 0x100000, CRC(fbecde72) SHA1(2fe32b28e77ec390c534d276261eefac3fbe21fd) ) /* Copy of rom at u47 */
   409: 	ROM_LOAD( "ss004.u37", 0x100000, 0x100000, CRC(98b82c5e) SHA1(af1b52d4b36b1776c148478b5a5581e6a57256b8) ) /* Copy of rom at u46 */
   410: 
   411: 	ROM_REGION( 0x40000, REGION_SOUND1, 0 )	/* ADPCM samples */
   412: 	ROM_LOAD( "ss005.u86", 0x000000, 0x040000, CRC(c53a82ad) SHA1(756e453c8b5ce8e47f93fbda3a9e48bb73e93e2e) )
   413: ROM_END
   414: 
   415: ROM_START( sshanghb )
   416: 	ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 68000 code */
   417: 	ROM_LOAD16_BYTE( "sshanb_2.010", 0x00000, 0x20000, CRC(bc7ed254) SHA1(aeee4b8a8265902bb41575cc143738ecf3aff57d) )
   418: 	ROM_LOAD16_BYTE( "sshanb_1.010", 0x00001, 0x20000, CRC(7b049f49) SHA1(2570077c67dbd35053d475a18c3f10813bf914f7) )
   419: 
   420: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* Sound CPU */
   421: 	ROM_LOAD( "ss008.u82", 0x000000, 0x010000, CRC(04dc3647) SHA1(c06a7e8932c03de5759a9b69da0d761006b49517) )
   422: 
   423: 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
   424: 	ROM_LOAD( "ss001.u8",  0x000000, 0x100000, CRC(ebeca5b7) SHA1(1746e757ad9bbef2aa9028c54f25d4aa4dedf79e) )
   425: 	ROM_LOAD( "ss002.u7",  0x100000, 0x100000, CRC(67659f29) SHA1(50944877665b7b848b3f7063892bd39a96a847cf) )
   426: 
   427: 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
   428: 	ROM_LOAD( "ss003.u39", 0x000000, 0x100000, CRC(fbecde72) SHA1(2fe32b28e77ec390c534d276261eefac3fbe21fd) ) /* Copy of rom at u47 */
   429: 	ROM_LOAD( "ss004.u37", 0x100000, 0x100000, CRC(98b82c5e) SHA1(af1b52d4b36b1776c148478b5a5581e6a57256b8) ) /* Copy of rom at u46 */
   430: 
   431: 	ROM_REGION( 0x40000, REGION_SOUND1, 0 )	/* ADPCM samples */
   432: 	ROM_LOAD( "ss005.u86", 0x000000, 0x040000, CRC(c53a82ad) SHA1(756e453c8b5ce8e47f93fbda3a9e48bb73e93e2e) )
   433: ROM_END
   434: 
   435: 
   436: static DRIVER_INIT( sshangha )
   437: {
   438: #if SSHANGHA_HACK 
   439: 	/* This is a hack to allow you to use the extra features
   440:          of the first "Unused" Dip Switch (see notes above). */
   441: 	data16_t *RAM = (data16_t *)memory_region(REGION_CPU1);
   442: 	RAM[0x000384/2] = 0x4e71;
   443: 	RAM[0x000386/2] = 0x4e71;
   444: 	RAM[0x000388/2] = 0x4e71;
   445: 	RAM[0x00038a/2] = 0x4e71;
   446: 	/* To avoid checksum error (only useful for 'sshangha') */
   447: 	RAM[0x000428/2] = 0x4e71;
   448: 	RAM[0x00042a/2] = 0x4e71;
   449: #endif 
   450: }
   451: 
   452: 
   453: GAMEX( 1992, sshangha, 0,        sshangha, sshangha, sshangha, ROT0, "Hot-B.",   "Super Shanghai Dragon's Eye (Japan)", GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND )
   454: GAMEX( 1992, sshanghb, sshangha, sshangha, sshangha, sshangha, ROT0, "bootleg", "Super Shanghai Dragon's Eye (World, bootleg)", GAME_NO_SOUND )
   455: 




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