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 : G.I. Joe : VM Driver Source

Source Listing


     1: #define JOE_DEBUG 0 
     2: #define JOE_DMADELAY (42.7+341.3) 
     3: 
     4: /***************************************************************************
     5: 
     6: 	GI Joe  (c) 1992 Konami
     7: 
     8: 
     9: Change Log
    10: ----------
    11: 
    12: AT070403:
    13: 
    14: tilemap.h,tilemap.c
    15: - added tilemap_get_transparency_data() for transparency cache manipulation
    16: 
    17: vidhrdw\konamiic.c
    18: - added preliminary K056832 tilemap<->linemap switching and tileline code
    19: 
    20: drivers\gijoe.c
    21: - updated video settings, memory map and irq handler
    22: - added object blitter
    23: 
    24: vidhrdw\gijoe.c
    25: - completed K054157 to K056832 migration
    26: - added ground scroll emulation
    27: - fixed sprite and BG priority
    28: - improved shadows and layer alignment
    29: 
    30: 
    31: Known Issues
    32: ------------
    33: 
    34: - sprite gaps (K053247 zoom fraction rounding)
    35: - shadow masking (eg. the shadow of Baroness' aircraft should not project on the sky)
    36: 
    37: ***************************************************************************/
    38: 
    39: #include "driver.h" 
    40: #include "vidhrdw/generic.h" 
    41: #include "vidhrdw/konamiic.h" 
    42: #include "cpu/z80/z80.h" 
    43: #include "machine/eeprom.h" 
    44: #include "state.h" 
    45: 
    46: 
    47: VIDEO_START( gijoe );
    48: VIDEO_UPDATE( gijoe );
    49: 
    50: static data16_t *gijoe_workram;
    51: static data16_t cur_control2;
    52: static int init_eeprom_count;
    53: static void *dmadelay_timer;
    54: 
    55: static struct EEPROM_interface eeprom_interface =
    56: {
    57: 	7,				/* address bits */
    58: 	8,				/* data bits */
    59: 	"011000",		/*  read command */
    60: 	"011100",		/* write command */
    61: 	"0100100000000",/* erase command */
    62: 	"0100000000000",/* lock command */
    63: 	"0100110000000" /* unlock command */
    64: };
    65: 
    66: #if 0 
    67: static void eeprom_init(void)
    68: {
    69: 	EEPROM_init(&eeprom_interface);
    70: 	init_eeprom_count = 0;
    71: }
    72: #endif 
    73: 
    74: static NVRAM_HANDLER( gijoe )
    75: {
    76: 	if (read_or_write)
    77: 		EEPROM_save(file);
    78: 	else
    79: 	{
    80: 		EEPROM_init(&eeprom_interface);
    81: 
    82: 		if (file)
    83: 		{
    84: 			init_eeprom_count = 0;
    85: 			EEPROM_load(file);
    86: 		}
    87: 		else
    88: 			init_eeprom_count = 2720;
    89: 	}
    90: }
    91: 
    92: static READ16_HANDLER( control1_r )
    93: {
    94: 	int res;
    95: 
    96: 	/* bit 8  is EEPROM data */
    97: 	/* bit 9  is EEPROM ready */
    98: 	/* bit 11 is service button */
    99: 	res = (EEPROM_read_bit()<<8) | input_port_0_word_r(0,0);
   100: 
   101: 	if (init_eeprom_count)
   102: 	{
   103: 		init_eeprom_count--;
   104: 		res &= 0xf7ff;
   105: 	}
   106: 
   107: 	return res;
   108: }
   109: 
   110: static READ16_HANDLER( control2_r )
   111: {
   112: 	return cur_control2;
   113: }
   114: 
   115: static WRITE16_HANDLER( control2_w )
   116: {
   117: 	if(ACCESSING_LSB) {
   118: 		/* bit 0  is data */
   119: 		/* bit 1  is cs (active low) */
   120: 		/* bit 2  is clock (active high) */
   121: 		/* bit 3  (unknown: coin) */
   122: 		/* bit 5  is enable irq 6 */
   123: 		/* bit 7  (unknown: enable irq 5?) */
   124: 
   125: 		EEPROM_write_bit(data & 0x01);
   126: 		EEPROM_set_cs_line((data & 0x02) ? CLEAR_LINE : ASSERT_LINE);
   127: 		EEPROM_set_clock_line((data & 0x04) ? ASSERT_LINE : CLEAR_LINE);
   128: 		cur_control2 = data;
   129: 
   130: 		/* bit 6 = enable sprite ROM reading */
   131: 		K053246_set_OBJCHA_line((data & 0x0040) ? ASSERT_LINE : CLEAR_LINE);
   132: 	}
   133: }
   134: 
   135: static void gijoe_objdma(void)
   136: {
   137: 	data16_t *src_head, *src_tail, *dst_head, *dst_tail;
   138: 	void *pdummy;
   139: 	int idummy;
   140: 
   141: 	src_head = spriteram16;
   142: 	src_tail = spriteram16 + 255*8;
   143: 	K053247_export_config(&dst_head, (struct GfxElement**)&pdummy, (void**)&pdummy, &idummy, &idummy);
   144: 	dst_tail = dst_head + 255*8;
   145: 
   146: 	for (; src_head<=src_tail; src_head+=8)
   147: 	{
   148: 		if (*src_head & 0x8000)
   149: 		{
   150: 			memcpy(dst_head, src_head, 0x10);
   151: 			dst_head += 8;
   152: 		}
   153: 		else
   154: 		{
   155: 			*dst_tail = 0;
   156: 			dst_tail -= 8;
   157: 		}
   158: 	}
   159: }
   160: 
   161: static void dmaend_callback(int data)
   162: {
   163: 	if (cur_control2 & 0x0020)
   164: 		cpu_set_irq_line(0, 6, HOLD_LINE);
   165: }
   166: 
   167: static INTERRUPT_GEN( gijoe_interrupt )
   168: {
   169: 	// global interrupt masking (*this game only)
   170: 	if (!K056832_is_IRQ_enabled(0)) return;
   171: 
   172: 	if (K053246_is_IRQ_enabled())
   173: 	{
   174: 		gijoe_objdma();
   175: 
   176: 		// 42.7us(clr) + 341.3us(xfer) delay at 6Mhz dotclock
   177: 		timer_adjust(dmadelay_timer, TIME_IN_USEC(JOE_DMADELAY), 0, 0);
   178: 	}
   179: 
   180: 	// trigger V-blank interrupt
   181: 	if (cur_control2 & 0x0080)
   182: 		cpu_set_irq_line(0, 5, HOLD_LINE);
   183: }
   184: 
   185: static WRITE16_HANDLER( sound_cmd_w )
   186: {
   187: 	if(ACCESSING_LSB) {
   188: 		data &= 0xff;
   189: 		soundlatch_w(0, data);
   190: 		if(!Machine->sample_rate)
   191: 			if(data == 0xfc || data == 0xfe)
   192: 				soundlatch2_w(0, 0x7f);
   193: 	}
   194: }
   195: 
   196: static WRITE16_HANDLER( sound_irq_w )
   197: {
   198: 	cpu_set_irq_line(1, 0, HOLD_LINE);
   199: }
   200: 
   201: static READ16_HANDLER( sound_status_r )
   202: {
   203: 	return soundlatch2_r(0);
   204: }
   205: 
   206: static void sound_nmi(void)
   207: {
   208: 	cpu_set_nmi_line(1, PULSE_LINE);
   209: }
   210: 
   211: static MEMORY_READ16_START( readmem )
   212: 	{ 0x000000, 0x0fffff, MRA16_ROM },
   213: 	{ 0x100000, 0x100fff, MRA16_RAM },			// Sprites
   214: 	{ 0x120000, 0x121fff, K056832_ram_word_r },	// Graphic planes
   215: 	{ 0x122000, 0x123fff, K056832_ram_word_r },	// Graphic planes mirror read
   216: 	{ 0x130000, 0x131fff, K056832_rom_word_r },	// Passthrough to tile roms
   217: 	{ 0x180000, 0x18ffff, MRA16_RAM },			// Main RAM.  Spec. 180000-1803ff, 180400-187fff
   218: 	{ 0x190000, 0x190fff, MRA16_RAM },
   219: 	{ 0x1c0014, 0x1c0015, sound_status_r },
   220: 	{ 0x1c0000, 0x1c001f, MRA16_RAM },			// sound regs read fall through
   221: 	{ 0x1e0000, 0x1e0001, input_port_2_word_r },
   222: 	{ 0x1e0002, 0x1e0003, input_port_3_word_r },
   223: 	{ 0x1e4000, 0x1e4001, input_port_1_word_r },
   224: 	{ 0x1e4002, 0x1e4003, control1_r },
   225: 	{ 0x1e8000, 0x1e8001, control2_r },
   226: 	{ 0x1f0000, 0x1f0001, K053246_word_r },
   227: #if JOE_DEBUG 
   228: 	{ 0x110000, 0x110007, K053246_reg_word_r },
   229: 	{ 0x160000, 0x160007, K056832_b_word_r },
   230: 	{ 0x1a0000, 0x1a001f, K053251_lsb_r },
   231: 	{ 0x1b0000, 0x1b003f, K056832_word_r },
   232: #endif 
   233: MEMORY_END
   234: 
   235: static MEMORY_WRITE16_START( writemem )
   236: 	{ 0x000000, 0x0fffff, MWA16_ROM },
   237: 	{ 0x100000, 0x100fff, MWA16_RAM, &spriteram16 },
   238: 	{ 0x110000, 0x110007, K053246_word_w },
   239: 	{ 0x120000, 0x121fff, K056832_ram_word_w },
   240: 	{ 0x122000, 0x123fff, K056832_ram_word_w },
   241: 	{ 0x130000, 0x131fff, MWA16_ROM },
   242: 	{ 0x160000, 0x160007, K056832_b_word_w },	// VSCCS (board dependent)
   243: 	{ 0x170000, 0x170001, MWA16_NOP },			// Watchdog
   244: 	{ 0x180000, 0x18ffff, MWA16_RAM, &gijoe_workram },
   245: 	{ 0x190000, 0x190fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
   246: 	{ 0x1a0000, 0x1a001f, K053251_lsb_w },
   247: 	{ 0x1b0000, 0x1b003f, K056832_word_w },
   248: 	{ 0x1c000c, 0x1c000d, sound_cmd_w },
   249: 	{ 0x1c0000, 0x1c001f, MWA16_RAM },			// sound regs write fall through
   250: 	{ 0x1d0000, 0x1d0001, sound_irq_w },
   251: 	{ 0x1e8000, 0x1e8001, control2_w },
   252: MEMORY_END
   253: 
   254: static MEMORY_READ_START( sound_readmem )
   255: 	{ 0x0000, 0xebff, MRA_ROM },
   256: 	{ 0xf000, 0xf7ff, MRA_RAM },
   257: 	{ 0xf800, 0xfa2f, K054539_0_r },
   258: 	{ 0xfc02, 0xfc02, soundlatch_r },
   259: MEMORY_END
   260: 
   261: static MEMORY_WRITE_START( sound_writemem )
   262: 	{ 0x0000, 0xebff, MWA_ROM },
   263: 	{ 0xf000, 0xf7ff, MWA_RAM },
   264: 	{ 0xf800, 0xfa2f, K054539_0_w },
   265: 	{ 0xfc00, 0xfc00, soundlatch2_w },
   266: MEMORY_END
   267: 
   268: INPUT_PORTS_START( gijoe )
   269: 	PORT_START
   270: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW,  IPT_START1 )
   271: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW,  IPT_START2 )
   272: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW,  IPT_START3 )
   273: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW,  IPT_START4 )
   274: 	PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL )  // EEPROM data
   275: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW,  IPT_SPECIAL )  // EEPROM ready (always 1)
   276: 	PORT_BITX(0x0800, IP_ACTIVE_LOW,  IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
   277: 
   278: 	PORT_START
   279: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW,  IPT_COIN1 )
   280: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW,  IPT_COIN2 )
   281: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW,  IPT_COIN3 )
   282: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW,  IPT_COIN4 )
   283: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW,  IPT_SERVICE1 )
   284: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW,  IPT_SERVICE2 )
   285: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW,  IPT_SERVICE3 )
   286: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW,  IPT_SERVICE4 )
   287: 
   288: 	PORT_START
   289: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
   290: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
   291: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
   292: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
   293: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
   294: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
   295: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
   296: 	PORT_DIPNAME( 0x0080, 0x0000, "Sound" )
   297: 	PORT_DIPSETTING(      0x0080, "Mono" )
   298: 	PORT_DIPSETTING(      0x0000, "Stereo" )
   299: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
   300: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
   301: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
   302: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
   303: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   304: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
   305: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
   306: 	PORT_DIPNAME( 0x8000, 0x8000, "Coin mechanism" )
   307: 	PORT_DIPSETTING(      0x8000, "Common" )
   308: 	PORT_DIPSETTING(      0x0000, "Independant" )
   309: 
   310: 	PORT_START
   311: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER3 )
   312: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
   313: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER3 )
   314: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER3 )
   315: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
   316: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
   317: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
   318: 	PORT_DIPNAME( 0x0080, 0x0000, "Players" )
   319: 	PORT_DIPSETTING(      0x0080, "2" )
   320: 	PORT_DIPSETTING(      0x0000, "4" )
   321: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER4 )
   322: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER4 )
   323: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER4 )
   324: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER4 )
   325: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER4 )
   326: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER4 )
   327: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER4 )
   328: 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unused ) )
   329: 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
   330: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   331: INPUT_PORTS_END
   332: 
   333: static struct YM2151interface ym2151_interface =
   334: {
   335: 	1,			/* 1 chip */
   336: 	3579545,	/* ??? */
   337: 	{ YM3012_VOL(50,MIXER_PAN_LEFT,50,MIXER_PAN_RIGHT) },
   338: 	{ 0 }
   339: };
   340: 
   341: static struct K054539interface k054539_interface =
   342: {
   343: 	1,			/* 1 chip */
   344: 	48000,
   345: 	{ REGION_SOUND1 },
   346: 	{ { 100, 100 } },
   347: 	{ 0 },
   348: 	{ sound_nmi }
   349: };
   350: 
   351: static MACHINE_DRIVER_START( gijoe )
   352: 
   353: 	/* basic machine hardware */
   354: 	MDRV_CPU_ADD(M68000, 16000000)	/* Confirmed */
   355: 	MDRV_CPU_MEMORY(readmem, writemem)
   356: 	MDRV_CPU_VBLANK_INT(gijoe_interrupt, 1)
   357: 
   358: 	MDRV_CPU_ADD(Z80, 8000000)
   359: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* Amuse & confirmed. z80e */
   360: 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
   361: 
   362: 	MDRV_FRAMES_PER_SECOND(60)
   363: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   364: 
   365: 	MDRV_NVRAM_HANDLER(gijoe)
   366: 
   367: 	/* video hardware */
   368: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_NEEDS_6BITS_PER_GUN | VIDEO_HAS_SHADOWS | VIDEO_UPDATE_BEFORE_VBLANK)
   369: 	MDRV_SCREEN_SIZE(64*8, 32*8)
   370: 	MDRV_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
   371: 	MDRV_PALETTE_LENGTH(2048)
   372: 
   373: 	MDRV_VIDEO_START(gijoe)
   374: 	MDRV_VIDEO_UPDATE(gijoe)
   375: 
   376: 	/* sound hardware */
   377: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
   378: 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
   379: 	MDRV_SOUND_ADD(K054539, k054539_interface)
   380: MACHINE_DRIVER_END
   381: 
   382: 
   383: ROM_START( gijoe )
   384: 	ROM_REGION( 0x100000, REGION_CPU1, 0 )
   385: 	ROM_LOAD16_BYTE( "069eab03.rom", 0x000000,  0x40000, CRC(dd2d533f) SHA1(6fc9f7a8fc89155ef2b9ee43fe5e456d9b574f8c) )
   386: 	ROM_LOAD16_BYTE( "069eab02.rom", 0x000001,  0x40000, CRC(6bb11c87) SHA1(86581d24f73f2e837f1d4fc5f1f2188f610c50b6) )
   387: 	ROM_LOAD16_BYTE( "069a12",       0x080000,  0x40000, CRC(75a7585c) SHA1(443d6dee99edbe81ab1b7289e6cad403fe01cc0d) )
   388: 	ROM_LOAD16_BYTE( "069a11",       0x080001,  0x40000, CRC(3153e788) SHA1(fde4543eac707ef24b431e64011cf0f923d4d3ac) )
   389: 
   390: 	ROM_REGION( 0x010000, REGION_CPU2, 0 )
   391: 	ROM_LOAD( "069a01", 0x000000, 0x010000, CRC(74172b99) SHA1(f5e0e0d43317454fdacd3df7cd3035fcae4aef68) )
   392: 
   393: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )
   394: 	ROM_LOAD( "069a10", 0x000000, 0x100000, CRC(4c6743ee) SHA1(fa94fbfb55955fdb40705e79b49103676961d919) )
   395: 	ROM_LOAD( "069a09", 0x100000, 0x100000, CRC(e6e36b05) SHA1(fecad503f2c285b2b0312e888c06dd6e87f95a07) )
   396: 
   397: 	ROM_REGION( 0x400000, REGION_GFX2, 0 )
   398: 	ROM_LOAD( "069a08", 0x000000, 0x100000, CRC(325477d4) SHA1(140c57b0ac9e5cf702d788f416408a5eeb5d6d3c) )
   399: 	ROM_LOAD( "069a05", 0x100000, 0x100000, CRC(c4ab07ed) SHA1(dc806eff00937d9465b1726fae8fdc3022464a28) )
   400: 	ROM_LOAD( "069a07", 0x200000, 0x100000, CRC(ccaa3971) SHA1(16989cbbd65fe1b41c4a85fea02ba1e9880818a9) )
   401: 	ROM_LOAD( "069a06", 0x300000, 0x100000, CRC(63eba8e1) SHA1(aa318d356c2580765452106ea0d2228273a90523) )
   402: 
   403: 	ROM_REGION( 0x200000, REGION_SOUND1, 0 )
   404: 	ROM_LOAD( "069a04", 0x000000, 0x200000, CRC(11d6dcd6) SHA1(04cbff9f61cd8641db538db809ddf20da29fd5ac) )
   405: ROM_END
   406: 
   407: ROM_START( gijoeu )
   408: 	ROM_REGION( 0x100000, REGION_CPU1, 0 )
   409: 	ROM_LOAD16_BYTE("069b03", 0x000000,  0x40000, CRC(25ff77d2) SHA1(bea2ae975718806698fd35ef1217bd842b2b69ec) )
   410: 	ROM_LOAD16_BYTE("069b02", 0x000001,  0x40000, CRC(31cced1c) SHA1(3df1def671966b3c3d8117ac1b68adeeef9d98c0) )
   411: 	ROM_LOAD16_BYTE("069a12", 0x080000,  0x40000, CRC(75a7585c) SHA1(443d6dee99edbe81ab1b7289e6cad403fe01cc0d) )
   412: 	ROM_LOAD16_BYTE("069a11", 0x080001,  0x40000, CRC(3153e788) SHA1(fde4543eac707ef24b431e64011cf0f923d4d3ac) )
   413: 
   414: 	ROM_REGION( 0x010000, REGION_CPU2, 0 )
   415: 	ROM_LOAD( "069a01", 0x000000, 0x010000, CRC(74172b99) SHA1(f5e0e0d43317454fdacd3df7cd3035fcae4aef68) )
   416: 
   417: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )
   418: 	ROM_LOAD( "069a10", 0x000000, 0x100000, CRC(4c6743ee) SHA1(fa94fbfb55955fdb40705e79b49103676961d919) )
   419: 	ROM_LOAD( "069a09", 0x100000, 0x100000, CRC(e6e36b05) SHA1(fecad503f2c285b2b0312e888c06dd6e87f95a07) )
   420: 
   421: 	ROM_REGION( 0x400000, REGION_GFX2, 0 )
   422: 	ROM_LOAD( "069a08", 0x000000, 0x100000, CRC(325477d4) SHA1(140c57b0ac9e5cf702d788f416408a5eeb5d6d3c) )
   423: 	ROM_LOAD( "069a05", 0x100000, 0x100000, CRC(c4ab07ed) SHA1(dc806eff00937d9465b1726fae8fdc3022464a28) )
   424: 	ROM_LOAD( "069a07", 0x200000, 0x100000, CRC(ccaa3971) SHA1(16989cbbd65fe1b41c4a85fea02ba1e9880818a9) )
   425: 	ROM_LOAD( "069a06", 0x300000, 0x100000, CRC(63eba8e1) SHA1(aa318d356c2580765452106ea0d2228273a90523) )
   426: 
   427: 	ROM_REGION( 0x200000, REGION_SOUND1, 0 )
   428: 	ROM_LOAD( "069a04", 0x000000, 0x200000, CRC(11d6dcd6) SHA1(04cbff9f61cd8641db538db809ddf20da29fd5ac) )
   429: ROM_END
   430: 
   431: ROM_START( gijoej )
   432: 	ROM_REGION( 0x100000, REGION_CPU1, 0 )
   433: 	ROM_LOAD16_BYTE("069jaa03", 0x000000,  0x40000, CRC(4b398901) SHA1(98fcc6ae9cc69c67d82eb1a7ab0bb71e61aee623) )
   434: 	ROM_LOAD16_BYTE("069jaa02", 0x000001,  0x40000, CRC(8bb22392) SHA1(9f066ce2b529f7dad6f80a91fff266c478d56414) )
   435: 	ROM_LOAD16_BYTE("069a12", 0x080000,  0x40000, CRC(75a7585c) SHA1(443d6dee99edbe81ab1b7289e6cad403fe01cc0d) )
   436: 	ROM_LOAD16_BYTE("069a11", 0x080001,  0x40000, CRC(3153e788) SHA1(fde4543eac707ef24b431e64011cf0f923d4d3ac) )
   437: 
   438: 	ROM_REGION( 0x010000, REGION_CPU2, 0 )
   439: 	ROM_LOAD( "069a01", 0x000000, 0x010000, CRC(74172b99) SHA1(f5e0e0d43317454fdacd3df7cd3035fcae4aef68) )
   440: 
   441: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )
   442: 	ROM_LOAD( "069a10", 0x000000, 0x100000, CRC(4c6743ee) SHA1(fa94fbfb55955fdb40705e79b49103676961d919) )
   443: 	ROM_LOAD( "069a09", 0x100000, 0x100000, CRC(e6e36b05) SHA1(fecad503f2c285b2b0312e888c06dd6e87f95a07) )
   444: 
   445: 	ROM_REGION( 0x400000, REGION_GFX2, 0 )
   446: 	ROM_LOAD( "069a08", 0x000000, 0x100000, CRC(325477d4) SHA1(140c57b0ac9e5cf702d788f416408a5eeb5d6d3c) )
   447: 	ROM_LOAD( "069a05", 0x100000, 0x100000, CRC(c4ab07ed) SHA1(dc806eff00937d9465b1726fae8fdc3022464a28) )
   448: 	ROM_LOAD( "069a07", 0x200000, 0x100000, CRC(ccaa3971) SHA1(16989cbbd65fe1b41c4a85fea02ba1e9880818a9) )
   449: 	ROM_LOAD( "069a06", 0x300000, 0x100000, CRC(63eba8e1) SHA1(aa318d356c2580765452106ea0d2228273a90523) )
   450: 
   451: 	ROM_REGION( 0x200000, REGION_SOUND1, 0 )
   452: 	ROM_LOAD( "069a04", 0x000000, 0x200000, CRC(11d6dcd6) SHA1(04cbff9f61cd8641db538db809ddf20da29fd5ac) )
   453: ROM_END
   454: 
   455: static DRIVER_INIT( gijoe )
   456: {
   457: 	konami_rom_deinterleave_2(REGION_GFX1);
   458: 	konami_rom_deinterleave_4(REGION_GFX2);
   459: 
   460: 	state_save_register_UINT16("main", 0, "control2", &cur_control2, 1);
   461: 
   462: 	dmadelay_timer = timer_alloc(dmaend_callback);
   463: }
   464: 
   465: GAME( 1992, gijoe,  0,     gijoe, gijoe, gijoe, ROT0, "Konami", "GI Joe (World)")
   466: GAME( 1992, gijoeu, gijoe, gijoe, gijoe, gijoe, ROT0, "Konami", "GI Joe (US)")
   467: GAME( 1992, gijoej, gijoe, gijoe, gijoe, gijoe, ROT0, "Konami", "GI Joe (Japan)")
   468: 




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