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 : Marvin's Maze : VM Driver Source

Source Listing


     1: /*
     2: various early SNK games (1983-1985)
     3: - Marvin's Maze
     4: - Vanguard II
     5: - Mad Crasher
     6: 
     7: driver by Phil Stroffolino
     8: 
     9: Known Issues:
    10: 	Mad Crasher fails the ROM test, but ROMs are verified to be good (reason's unknown)
    11: 	Mad Crasher sound effects aren't being played (fixed)
    12: 	Vanguard II crashes under dos with sound enabled (cannot verify)
    13: 	Marvin's maze crashes under dos with sound enabled, hangs with sound disabled (cannot verify)
    14: 
    15: 
    16: Change Log
    17: ----------
    18: 
    19: AT08XX03:
    20:  - added shadows
    21:  - fixed Mad Crasher bad background, sound effects and foreground priority.
    22:    (great now I can fall under the skyway like I did at Chuck'n Cheese;)
    23:  - fixed Vanguard2 scroll offsets
    24:  - tuned music tempo and wavegen frequency
    25: */
    26: 
    27: #include "driver.h" 
    28: #include "vidhrdw/generic.h" 
    29: #include "cpu/z80/z80.h" 
    30: #include "snk.h" 
    31: 
    32: #define CREDITS "Phil Stroffolino\nTim Lindquist\nCarlos A. Lozano" 
    33: 
    34: 
    35: /***************************************************************************
    36: **
    37: **	CPUA and CPUB communicate through shared RAM.
    38: **
    39: ***************************************************************************/
    40: 
    41: extern READ_HANDLER( marvins_background_ram_r );
    42: extern WRITE_HANDLER( marvins_background_ram_w );
    43: 
    44: extern READ_HANDLER( marvins_foreground_ram_r );
    45: extern WRITE_HANDLER( marvins_foreground_ram_w );
    46: 
    47: extern READ_HANDLER( marvins_text_ram_r );
    48: extern WRITE_HANDLER( marvins_text_ram_w );
    49: 
    50: extern READ_HANDLER( marvins_spriteram_r );
    51: extern WRITE_HANDLER( marvins_spriteram_w );
    52: 
    53: 
    54: /***************************************************************************
    55: **
    56: ** Video Driver
    57: **
    58: ***************************************************************************/
    59: 
    60: extern VIDEO_START( marvins );
    61: extern VIDEO_UPDATE( marvins );
    62: extern VIDEO_UPDATE( madcrash );
    63: 
    64: extern WRITE_HANDLER( marvins_palette_bank_w );
    65: 
    66: 
    67: /***************************************************************************
    68: **
    69: **	Interrupt Handling
    70: **
    71: **	CPUA can trigger an interrupt on CPUB, and CPUB can trigger an interrupt
    72: **	on CPUA.  Each CPU must re-enable interrupts on itself.
    73: **
    74: ***************************************************************************/
    75: 
    76: // see drivers\snk.c
    77: 
    78: 
    79: /***************************************************************************
    80: **
    81: **	Sound System
    82: **
    83: **	The sound CPU is a slave, with communication.
    84: **
    85: **	Sound Chips: PSGX2 + "Wave Generater"
    86: **
    87: **	The Custom Wave Generator is controlled by 6 bytes
    88: **
    89: **	The first pair of registers (0x8002, 0x8003) appear to define frequency
    90: **	as a fraction: RAM[0x8003]/RAM[0x8002].
    91: **
    92: **	(0x8004, 0x8005, 0x8006, 0x8007) are currently unmapped.  Probably they
    93: **	control the shape of the wave being played.
    94: **
    95: **	snkwave_interface is currently implemented with the "namco" sound component.
    96: **
    97: ***************************************************************************/
    98: 
    99: extern WRITE_HANDLER( snkwave_w );
   100: 
   101: static int sound_cpu_busy;
   102: 
   103: static struct namco_interface snkwave_interface =
   104: {
   105: 	8000000/256,	/* (wave generator has a 8MHz clock near it) */
   106: 	1,				/* number of voices */
   107: 	10,				/* playback volume */
   108: 	-1				/* memory region */
   109: };
   110: 
   111: static struct AY8910interface ay8910_interface =
   112: {
   113: 	2,			/* number of chips */
   114: 	2000000,	/* 2 MHz */
   115: 	{ 25,25 },
   116: 	{ 0 },
   117: 	{ 0 },
   118: 	{ 0 },
   119: 	{ 0 }
   120: };
   121: 
   122: static void init_sound( int busy_bit )
   123: {
   124: 	snk_sound_busy_bit = busy_bit;
   125: 	sound_cpu_busy = 0;
   126: }
   127: 
   128: static WRITE_HANDLER( sound_command_w )
   129: {
   130: 	sound_cpu_busy = snk_sound_busy_bit;
   131: 	soundlatch_w(0, data);
   132: 	cpu_set_irq_line(2, 0, HOLD_LINE);
   133: }
   134: 
   135: static READ_HANDLER( sound_command_r )
   136: {
   137: 	sound_cpu_busy = 0;
   138: 	return(soundlatch_r(0));
   139: }
   140: 
   141: static READ_HANDLER( sound_nmi_ack_r )
   142: {
   143: 	cpu_set_nmi_line(2, CLEAR_LINE);
   144: 	return 0;
   145: }
   146: 
   147: /* this input port has one of its bits mapped to sound CPU status */
   148: static READ_HANDLER( marvins_port_0_r )
   149: {
   150: 	return(input_port_0_r(0) | sound_cpu_busy);
   151: }
   152: 
   153: static MEMORY_READ_START( readmem_sound )
   154: 	{ 0x0000, 0x3fff, MRA_ROM },
   155: 	{ 0x4000, 0x4000, sound_command_r },
   156: 	{ 0xa000, 0xa000, sound_nmi_ack_r },
   157: 	{ 0xe000, 0xe7ff, MRA_RAM },
   158: MEMORY_END
   159: 
   160: static MEMORY_WRITE_START( writemem_sound )
   161: 	{ 0x0000, 0x3fff, MWA_ROM, &namco_wavedata },	/* silly hack - this shouldn't be here */
   162: 	{ 0x8000, 0x8000, AY8910_control_port_0_w },
   163: 	{ 0x8001, 0x8001, AY8910_write_port_0_w },
   164: 	{ 0x8002, 0x8007, snkwave_w },
   165: 	{ 0x8008, 0x8008, AY8910_control_port_1_w },
   166: 	{ 0x8009, 0x8009, AY8910_write_port_1_w },
   167: 	{ 0xe000, 0xe7ff, MWA_RAM },
   168: MEMORY_END
   169: 
   170: static PORT_READ_START( readport_sound )
   171: 	{ 0x0000, 0x0000, MRA_NOP },
   172: PORT_END
   173: 
   174: 
   175: /***************************************************************************
   176: **
   177: **	Memory Maps for CPUA, CPUB
   178: **
   179: **	Shared RAM is shuffled in Mad Crasher/Vanguard II compared to
   180: **	Marvin's Maze.
   181: **
   182: **	A few ports are mapped differently for each game.
   183: **
   184: ***************************************************************************/
   185: 
   186: static MEMORY_READ_START( marvins_readmem_CPUA )
   187: 	{ 0x0000, 0x5fff, MRA_ROM },
   188: 	{ 0x8000, 0x8000, marvins_port_0_r },	/* coin input, start, sound CPU status */
   189: 	{ 0x8100, 0x8100, input_port_1_r },		/* player #1 controls */
   190: 	{ 0x8200, 0x8200, input_port_2_r },		/* player #2 controls */
   191: 	{ 0x8400, 0x8400, input_port_3_r },		/* dipswitch#1 */
   192: 	{ 0x8500, 0x8500, input_port_4_r },		/* dipswitch#2 */
   193: 	{ 0x8700, 0x8700, snk_cpuB_nmi_trigger_r },
   194: 	{ 0x8000, 0xffff, MRA_RAM },
   195: MEMORY_END
   196: 
   197: static MEMORY_WRITE_START( marvins_writemem_CPUA )
   198: 	{ 0x0000, 0x5fff, MWA_ROM },
   199: 	{ 0x6000, 0x6000, marvins_palette_bank_w },
   200: 	{ 0x8300, 0x8300, sound_command_w },
   201: 	{ 0x8600, 0x8600, MWA_RAM },	// video attribute
   202: 	{ 0x8700, 0x8700, snk_cpuA_nmi_ack_w },
   203: 	{ 0xc000, 0xcfff, MWA_RAM, &spriteram },
   204: 	{ 0xd000, 0xdfff, marvins_background_ram_w, &spriteram_3 },
   205: 	{ 0xe000, 0xefff, marvins_foreground_ram_w, &spriteram_2 },
   206: 	{ 0xf000, 0xffff, marvins_text_ram_w, &videoram },
   207: MEMORY_END
   208: 
   209: static MEMORY_READ_START( marvins_readmem_CPUB )
   210: 	{ 0x0000, 0x5fff, MRA_ROM },
   211: 	{ 0x8700, 0x8700, snk_cpuA_nmi_trigger_r },
   212: 	{ 0xc000, 0xcfff, marvins_spriteram_r },
   213: 	{ 0xd000, 0xdfff, marvins_background_ram_r },
   214: 	{ 0xe000, 0xefff, marvins_foreground_ram_r },
   215: 	{ 0xf000, 0xffff, marvins_text_ram_r },
   216: MEMORY_END
   217: 
   218: static MEMORY_WRITE_START( marvins_writemem_CPUB )
   219: 	{ 0x0000, 0x5fff, MWA_ROM },
   220: 	{ 0x8700, 0x8700, snk_cpuB_nmi_ack_w },
   221: 	{ 0xc000, 0xcfff, marvins_spriteram_w },
   222: 	{ 0xd000, 0xdfff, marvins_background_ram_w },
   223: 	{ 0xe000, 0xefff, marvins_foreground_ram_w },
   224: 	{ 0xf000, 0xffff, marvins_text_ram_w },
   225: MEMORY_END
   226: 
   227: 
   228: static MEMORY_READ_START( madcrash_readmem_CPUA )
   229: 	{ 0x0000, 0x7fff, MRA_ROM },
   230: 	{ 0x8000, 0x8000, marvins_port_0_r },	/* coin input, start, sound CPU status */
   231: 	{ 0x8100, 0x8100, input_port_1_r },		/* player #1 controls */
   232: 	{ 0x8200, 0x8200, input_port_2_r },		/* player #2 controls */
   233: 	{ 0x8400, 0x8400, input_port_3_r },		/* dipswitch#1 */
   234: 	{ 0x8500, 0x8500, input_port_4_r },		/* dipswitch#2 */
   235: 	{ 0x8700, 0x8700, snk_cpuB_nmi_trigger_r },
   236: 	{ 0x8000, 0xffff, MRA_RAM },
   237: MEMORY_END
   238: 
   239: static MEMORY_WRITE_START( madcrash_writemem_CPUA )
   240: 	{ 0x0000, 0x7fff, MWA_ROM },
   241: 	{ 0x8300, 0x8300, sound_command_w },
   242: 	{ 0x8600, 0x86ff, MWA_RAM },	// video attribute
   243: 	{ 0x8700, 0x8700, snk_cpuA_nmi_ack_w },
   244: //	{ 0xc800, 0xc800, marvins_palette_bank_w },	// palette bank switch (c8f1 for Vanguard)
   245: 	{ 0xc800, 0xc8ff, MWA_RAM },
   246: 	{ 0xc000, 0xcfff, MWA_RAM, &spriteram },
   247: 	{ 0xd000, 0xdfff, marvins_background_ram_w, &spriteram_3 },
   248: 	{ 0xe000, 0xefff, marvins_foreground_ram_w, &spriteram_2 },
   249: 	{ 0xf000, 0xffff, marvins_text_ram_w, &videoram },
   250: MEMORY_END
   251: 
   252: static MEMORY_READ_START( madcrash_readmem_CPUB )
   253: 	{ 0x0000, 0x9fff, MRA_ROM },
   254: 	{ 0xc000, 0xcfff, marvins_foreground_ram_r },
   255: 	{ 0xd000, 0xdfff, marvins_text_ram_r },
   256: 	{ 0xe000, 0xefff, marvins_spriteram_r },
   257: 	{ 0xf000, 0xffff, marvins_background_ram_r },
   258: MEMORY_END
   259: 
   260: static MEMORY_WRITE_START( madcrash_writemem_CPUB )
   261: 	{ 0x0000, 0x7fff, MWA_ROM },
   262: 	{ 0x8700, 0x8700, snk_cpuB_nmi_ack_w },	/* Vangaurd II */
   263: 	{ 0x8000, 0x9fff, MWA_ROM },			/* extra ROM for Mad Crasher */
   264: 	{ 0xa000, 0xa000, snk_cpuB_nmi_ack_w },	/* Mad Crasher */
   265: 	{ 0xc000, 0xcfff, marvins_foreground_ram_w },
   266: 	{ 0xd000, 0xdfff, marvins_text_ram_w },
   267: 	{ 0xe000, 0xefff, marvins_spriteram_w },
   268: 	{ 0xf000, 0xffff, marvins_background_ram_w },
   269: MEMORY_END
   270: 
   271: 
   272: INPUT_PORTS_START( marvins )
   273: 	PORT_START
   274: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
   275: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
   276: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 )
   277: 	PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_START1 )
   278: 	PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_START2 )
   279: 	PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_UNKNOWN )
   280: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* sound CPU status */
   281: 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
   282: 
   283: 	PORT_START /* player#1 controls */
   284: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
   285: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
   286: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
   287: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
   288: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
   289: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
   290: 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
   291: 
   292: 	PORT_START /* player#2 controls */
   293: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
   294: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
   295: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
   296: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
   297: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
   298: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
   299: 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
   300: 
   301: 	PORT_START	/* DSW1 */
   302: 	PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) )
   303: 	PORT_DIPSETTING(    0x00, "1" )
   304: 	PORT_DIPSETTING(    0x01, "2" )
   305: 	PORT_DIPSETTING(    0x02, "3" )
   306: 	PORT_DIPSETTING(    0x03, "5" )
   307: 	PORT_BITX(0x04,     0x04, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Infinite Lives", IP_JOY_NONE, IP_KEY_NONE )
   308: 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
   309: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   310: 	PORT_DIPNAME( 0x38, 0x00, DEF_STR( Coinage ) )
   311: 	PORT_DIPSETTING(    0x38, DEF_STR( 5C_1C ) )
   312: 	PORT_DIPSETTING(    0x30, DEF_STR( 3C_1C ) )
   313: 	PORT_DIPSETTING(    0x28, DEF_STR( 2C_1C ) )
   314: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
   315: 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
   316: 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_3C ) )
   317: 	PORT_DIPSETTING(    0x18, DEF_STR( 1C_5C ) )
   318: 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_6C ) )
   319: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Free_Play ) )
   320: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   321: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   322: 	PORT_DIPNAME( 0x80, 0x80, "Freeze" )
   323: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   324: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   325: 
   326: 	PORT_START	/* DSW2 */
   327: 	PORT_DIPNAME( 0x07, 0x00, "1st Bonus Life" )
   328: 	PORT_DIPSETTING(    0x00, "10000" )
   329: 	PORT_DIPSETTING(    0x01, "20000" )
   330: 	PORT_DIPSETTING(    0x02, "30000" )
   331: 	PORT_DIPSETTING(    0x03, "40000" )
   332: 	PORT_DIPSETTING(    0x04, "50000" )
   333: 	PORT_DIPSETTING(    0x05, "60000" )
   334: 	PORT_DIPSETTING(    0x06, "70000" )
   335: 	PORT_DIPSETTING(    0x07, "80000" )
   336: 	PORT_DIPNAME( 0x18, 0x08, "2nd Bonus Life" )
   337: 	PORT_DIPSETTING(    0x08, "1st bonus*2" )
   338: 	PORT_DIPSETTING(    0x10, "1st bonus*3" )
   339: 	PORT_DIPSETTING(    0x18, "1st bonus*4" )
   340: 	PORT_DIPSETTING(    0x00, "None" )
   341: 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
   342: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   343: 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
   344: 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) )
   345: 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
   346: 	PORT_DIPSETTING(    0x40, DEF_STR( Cocktail ) )
   347: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) )
   348: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   349: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   350: INPUT_PORTS_END
   351: 
   352: 
   353: INPUT_PORTS_START( vangrd2 )
   354: 	PORT_START
   355: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
   356: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   357: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   358: 	PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_START1 )
   359: 	PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_START2 )
   360: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* sound CPU status */
   361: 	PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN )
   362: 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
   363: 
   364: 	PORT_START /* player#1 controls */
   365: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
   366: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
   367: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
   368: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
   369: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 )
   370: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
   371: 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
   372: 
   373: 	PORT_START /* player#2 controls */
   374: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
   375: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
   376: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
   377: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
   378: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
   379: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
   380: 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
   381: 
   382: 	PORT_START	/* DSW1 */
   383: 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
   384: 	PORT_DIPSETTING(    0x00, DEF_STR( 6C_1C ) )
   385: 	PORT_DIPSETTING(    0x01, DEF_STR( 5C_1C ) )
   386: 	PORT_DIPSETTING(    0x02, DEF_STR( 3C_1C ) )
   387: 	PORT_DIPSETTING(    0x03, DEF_STR( 2C_1C ) )
   388: 	PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) )
   389: 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
   390: 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_3C ) )
   391: 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
   392: 	PORT_DIPNAME( 0x38, 0x38, DEF_STR( Bonus_Life ) )
   393: 	PORT_DIPSETTING(    0x38, "30000" )
   394: 	PORT_DIPSETTING(    0x30, "40000" )
   395: 	PORT_DIPSETTING(    0x28, "50000" )
   396: 	PORT_DIPSETTING(    0x20, "60000" )
   397: 	PORT_DIPSETTING(    0x18, "70000" )
   398: 	PORT_DIPSETTING(    0x10, "80000" )
   399: 	PORT_DIPSETTING(    0x08, "90000" )
   400: 	PORT_DIPSETTING(    0x00, "100000" )
   401: 	PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Lives ) )
   402: 	PORT_DIPSETTING(    0x00, "1" )
   403: 	PORT_DIPSETTING(    0x40, "2" )
   404: 	PORT_DIPSETTING(    0x80, "3" )
   405: 	PORT_DIPSETTING(    0xc0, "5" )
   406: 
   407: 	PORT_START	/* DSW2 */
   408: 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
   409: 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
   410: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   411: 	PORT_DIPNAME( 0x02, 0x02, "Freeze" )
   412: 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
   413: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   414: 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Cabinet ) )
   415: 	PORT_DIPSETTING(    0x04, DEF_STR( Upright ) )
   416: 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
   417: 	PORT_DIPNAME( 0x08, 0x08, "Language" )
   418: 	PORT_DIPSETTING(    0x08, "English" )
   419: 	PORT_DIPSETTING(    0x00, "Japanese" )
   420: 	PORT_DIPNAME( 0x10, 0x00, "Bonus Life Occurence" )
   421: 	PORT_DIPSETTING(    0x00, "Every bonus" )
   422: 	PORT_DIPSETTING(    0x10, "Bonus only" )
   423: 	PORT_BITX(0x20,     0x20, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Infinite Lives", IP_JOY_NONE, IP_KEY_NONE )
   424: 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
   425: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   426: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Free_Play ) )
   427: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   428: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   429: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) )
   430: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   431: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   432: INPUT_PORTS_END
   433: 
   434: 
   435: INPUT_PORTS_START( madcrash )
   436: 	PORT_START
   437: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
   438: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
   439: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 )
   440: 	PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_START1 )
   441: 	PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_START2 )
   442: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* sound CPU status */
   443: 	PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN )
   444: 	PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
   445: 
   446: 	PORT_START /* player#1 controls */
   447: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
   448: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
   449: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
   450: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
   451: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 )
   452: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
   453: 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
   454: 
   455: 	PORT_START /* player#2 controls */
   456: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
   457: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
   458: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
   459: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
   460: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
   461: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
   462: 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
   463: 
   464: 	PORT_START	/* DSW1 */
   465: 	PORT_DIPNAME( 0x01, 0x01, "Unused SW 1-0" )
   466: 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
   467: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   468: 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Cabinet ) )
   469: 	PORT_DIPSETTING(    0x02, DEF_STR( Upright ) )
   470: 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
   471: 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Lives ) )
   472: 	PORT_DIPSETTING(    0x04, "3" )
   473: 	PORT_DIPSETTING(    0x00, "5" )
   474: 	PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coinage ) )
   475: //	PORT_DIPSETTING(    0x08, DEF_STR( 5C_1C ) )
   476: 	PORT_DIPSETTING(    0x10, DEF_STR( 5C_1C ) )
   477: 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
   478: 	PORT_DIPSETTING(    0x18, DEF_STR( 2C_1C ) )
   479: 	PORT_DIPSETTING(    0x38, DEF_STR( 1C_1C ) )
   480: 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_2C ) )
   481: 	PORT_DIPSETTING(    0x28, DEF_STR( 1C_3C ) )
   482: 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
   483: 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Bonus_Life ) )
   484: 	PORT_DIPSETTING(    0xc0, "20000 60000" )
   485: 	PORT_DIPSETTING(    0x80, "40000 90000" )
   486: 	PORT_DIPSETTING(    0x40, "50000 120000" )
   487: 	PORT_DIPSETTING(    0x00, "None" )
   488: 
   489: 	PORT_START	/* DSW2 */
   490: 	PORT_DIPNAME( 0x01, 0x00, "Bonus Life Occurence" )
   491: 	PORT_DIPSETTING(    0x01, "1st, 2nd, then every 2nd" )	// Check the "Non Bugs" page
   492: 	PORT_DIPSETTING(    0x00, "1st and 2nd only" )
   493: 	PORT_DIPNAME( 0x06, 0x04, DEF_STR( Difficulty ) )
   494: 	PORT_DIPSETTING(    0x06, "Easy" )
   495: 	PORT_DIPSETTING(    0x04, "Normal" )
   496: 	PORT_DIPSETTING(    0x02, "Hard" )
   497: 	PORT_DIPSETTING(    0x00, "Hardest" )
   498: 	PORT_DIPNAME( 0x18, 0x10, "Game mode" )
   499: 	PORT_DIPSETTING(    0x18, "Demo Sounds Off" )
   500: 	PORT_DIPSETTING(    0x10, "Demo Sounds On" )
   501: 	PORT_BITX(0,        0x08, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Infinite Lives", IP_JOY_NONE, IP_KEY_NONE )
   502: 	PORT_DIPSETTING(    0x00, "Freeze" )
   503: 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) )
   504: 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
   505: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )				// Check the "Non Bugs" page
   506: 	PORT_DIPNAME( 0x40, 0x40, "Unused SW 2-6" )
   507: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   508: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   509: 	PORT_DIPNAME( 0x80, 0x80, "Unknown SW 2-7" )			// tested in many places
   510: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   511: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   512: INPUT_PORTS_END
   513: 
   514: 
   515: /***************************************************************************
   516: **
   517: **	Graphics Layout
   518: **
   519: ***************************************************************************/
   520: 
   521: static struct GfxLayout sprite_layout =
   522: {
   523: 	16,16,
   524: 	0x100,
   525: 	3,
   526: 	{ 0,0x2000*8,0x4000*8 },
   527: 	{
   528: 		7,6,5,4,3,2,1,0,
   529: 		15,14,13,12,11,10,9,8
   530: 	},
   531: 	{
   532: 		0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
   533: 		8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16
   534: 	},
   535: 	256
   536: };
   537: 
   538: static struct GfxLayout tile_layout =
   539: {
   540: 	8,8,
   541: 	0x100,
   542: 	4,
   543: 	{ 0, 1, 2, 3 },
   544: 	{ 4, 0, 12, 8, 20, 16, 28, 24},
   545: 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
   546: 	256
   547: };
   548: 
   549: static struct GfxDecodeInfo marvins_gfxdecodeinfo[] =
   550: {
   551: 	{ REGION_GFX1, 0, &tile_layout,	0x080, 8  }, /* text layer */
   552: 	{ REGION_GFX2, 0, &tile_layout,	0x110, 1  }, /* background */
   553: 	{ REGION_GFX3, 0, &tile_layout,	0x100, 1  }, /* foreground */
   554: 	{ REGION_GFX4, 0, &sprite_layout,	0x000, 16 }, /* sprites */
   555: 	{ -1 }
   556: };
   557: 
   558: 
   559: /***************************************************************************
   560: **
   561: **	Machine Driver
   562: **
   563: ***************************************************************************/
   564: 
   565: static MACHINE_DRIVER_START( marvins )
   566: 
   567: 	/* basic machine hardware */
   568: 	MDRV_CPU_ADD(Z80, 3360000)	/* 3.336 MHz */
   569: 	MDRV_CPU_MEMORY(marvins_readmem_CPUA,marvins_writemem_CPUA)
   570: 	MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
   571: 
   572: 	MDRV_CPU_ADD(Z80, 3360000)	/* 3.336 MHz */
   573: 	MDRV_CPU_MEMORY(marvins_readmem_CPUB,marvins_writemem_CPUB)
   574: 	MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
   575: 
   576: 	MDRV_CPU_ADD(Z80, 4000000)	/* 4.0 MHz */
   577: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
   578: 	MDRV_CPU_MEMORY(readmem_sound,writemem_sound)
   579: 	MDRV_CPU_PORTS(readport_sound,0)
   580: 	MDRV_CPU_PERIODIC_INT(nmi_line_assert, 244)	// schematics show a separate 244Hz timer
   581: 
   582: 	MDRV_FRAMES_PER_SECOND(60.606060)
   583: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
   584: 	MDRV_INTERLEAVE(100)
   585: 
   586: 	/* video hardware */
   587: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_HAS_SHADOWS)
   588: 	MDRV_SCREEN_SIZE(256+32, 224)
   589: 	MDRV_VISIBLE_AREA(0, 255+32,0, 223)
   590: 	MDRV_GFXDECODE(marvins_gfxdecodeinfo)
   591: 	MDRV_PALETTE_LENGTH((16+2)*16)
   592: 
   593: 	MDRV_VIDEO_START(marvins)
   594: 	MDRV_VIDEO_UPDATE(marvins)
   595: 
   596: 	/* sound hardware */
   597: 	MDRV_SOUND_ADD(AY8910, ay8910_interface)
   598: 	MDRV_SOUND_ADD(NAMCO, snkwave_interface)
   599: MACHINE_DRIVER_END
   600: 
   601: 
   602: static MACHINE_DRIVER_START( vangrd2 )
   603: 
   604: 	/* basic machine hardware */
   605: 	MDRV_CPU_ADD_TAG("main", Z80, 3360000)	/* 3.336 MHz */
   606: 	MDRV_CPU_MEMORY(madcrash_readmem_CPUA,madcrash_writemem_CPUA)
   607: 	MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
   608: 
   609: 	MDRV_CPU_ADD_TAG("sub", Z80, 3360000)	/* 3.336 MHz */
   610: 	MDRV_CPU_MEMORY(madcrash_readmem_CPUB,madcrash_writemem_CPUB)
   611: 	MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
   612: 
   613: 	MDRV_CPU_ADD(Z80, 4000000)	/* 4.0 MHz */
   614: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
   615: 	MDRV_CPU_MEMORY(readmem_sound,writemem_sound)
   616: 	MDRV_CPU_PORTS(readport_sound,0)
   617: 	MDRV_CPU_PERIODIC_INT(nmi_line_assert, 244)
   618: 
   619: 	MDRV_FRAMES_PER_SECOND(60.606060)
   620: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
   621: 	MDRV_INTERLEAVE(100)
   622: 
   623: 	/* video hardware */
   624: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_HAS_SHADOWS)
   625: 	MDRV_SCREEN_SIZE(256+32, 224)
   626: 	MDRV_VISIBLE_AREA(0, 255+32,0, 223)
   627: 	MDRV_GFXDECODE(marvins_gfxdecodeinfo)
   628: 	MDRV_PALETTE_LENGTH((16+2)*16)
   629: 
   630: 	MDRV_VIDEO_START(marvins)
   631: 	MDRV_VIDEO_UPDATE(madcrash)
   632: 
   633: 	/* sound hardware */
   634: 	MDRV_SOUND_ADD(AY8910, ay8910_interface)
   635: 	MDRV_SOUND_ADD(NAMCO, snkwave_interface)
   636: MACHINE_DRIVER_END
   637: 
   638: 
   639: static MACHINE_DRIVER_START( madcrash )
   640: 
   641: 	/* basic machine hardware */
   642: 	MDRV_IMPORT_FROM( vangrd2 )
   643: 
   644: 	MDRV_CPU_MODIFY("main")
   645: 	MDRV_CPU_VBLANK_INT(0, 0)
   646: 
   647: 	MDRV_CPU_MODIFY("sub")
   648: 	MDRV_CPU_VBLANK_INT(snk_irq_BA, 1)
   649: 
   650: 	MDRV_INTERLEAVE(300)
   651: 
   652: 	/* video hardware */
   653: 	MDRV_VISIBLE_AREA(16, 16+256-1, 0, 0+216-1)
   654: MACHINE_DRIVER_END
   655: 
   656: 
   657: /***************************************************************************
   658: **
   659: **	ROM Loading
   660: **
   661: **	note:
   662: **		Mad Crasher doesn't pass its internal checksum
   663: **		Also, some of the background graphics look to be incorrect.
   664: **
   665: ***************************************************************************/
   666: 
   667: ROM_START( marvins )
   668: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for CPUA code */
   669: 	ROM_LOAD( "pa1",   0x0000, 0x2000, CRC(0008d791) SHA1(6ffb174b2d680314f74efeef83da9f3ee3e0c753) )
   670: 	ROM_LOAD( "pa2",   0x2000, 0x2000, CRC(9457003c) SHA1(05ecd5c638a12163e2a65bdfcc09875618f792e1) )
   671: 	ROM_LOAD( "pa3",   0x4000, 0x2000, CRC(54c33ecb) SHA1(cfbf9ffc125fbc51f2abef180f36781f9e748bbd) )
   672: 
   673: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for CPUB code */
   674: 	ROM_LOAD( "pb1",   0x0000, 0x2000, CRC(3b6941a5) SHA1(9c29870196eaed87f34456fdb06bf7b69c8f489d) )
   675: 
   676: 	ROM_REGION( 0x10000, REGION_CPU3, 0 )	/* 64k for sound code */
   677: 	ROM_LOAD( "m1",    0x0000, 0x2000, CRC(2314c696) SHA1(1b84a0c82a4dcff648752f53aa1f0abf5357c5d1) )
   678: 	ROM_LOAD( "m2",    0x2000, 0x2000, CRC(74ba5799) SHA1(c278b0e5c4134f6077d4ae7b51e3c5cba28af1a8) )
   679: 
   680: 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
   681: 	ROM_LOAD( "s1",    0x0000, 0x2000, CRC(327f70f3) SHA1(078dcc6b4697617d4d833ccd59c6a543b2a88d9e) )	/* characters */
   682: 
   683: 	ROM_REGION( 0x2000, REGION_GFX2, ROMREGION_DISPOSE )
   684: 	ROM_LOAD( "b1",    0x0000, 0x2000, CRC(e528bc60) SHA1(3365ac7cbc57739054bc11e68831be87c0c1a97a) )	/* background tiles */
   685: 
   686: 	ROM_REGION( 0x2000, REGION_GFX3, ROMREGION_DISPOSE )
   687: 	ROM_LOAD( "b2",    0x0000, 0x2000, CRC(e528bc60) SHA1(3365ac7cbc57739054bc11e68831be87c0c1a97a) )	/* foreground tiles */
   688: 
   689: 	ROM_REGION( 0x6000, REGION_GFX4, ROMREGION_DISPOSE )
   690: 	ROM_LOAD( "f3",    0x0000, 0x2000, CRC(e55c9b83) SHA1(04b0d99955e4b11820015b7721ac6399a3d5a829) )	/* sprites */
   691: 	ROM_LOAD( "f2",    0x2000, 0x2000, CRC(8fc2b081) SHA1(fb345965375cb62ec1b947d6c6d071380dc0f395) )
   692: 	ROM_LOAD( "f1",    0x4000, 0x2000, CRC(0bd6b4e5) SHA1(c56747ff2135db734f1b5f6c2906de5ac8f53bbc) )
   693: 
   694: 	ROM_REGION( 0x0c00, REGION_PROMS, 0 )
   695: 	ROM_LOAD( "marvmaze.j1",  0x000, 0x400, CRC(92f5b06d) SHA1(97979ffb6fb065d9c99da43173180fefb2de1886) )
   696: 	ROM_LOAD( "marvmaze.j2",  0x400, 0x400, CRC(d2b25665) SHA1(b913b8b9c5ee0a29b5a115b2432c5706979059cf) )
   697: 	ROM_LOAD( "marvmaze.j3",  0x800, 0x400, CRC(df9e6005) SHA1(8f633f664c3f8e4f6ca94bee74a68c8fda8873e3) )
   698: ROM_END
   699: 
   700: ROM_START( madcrash )
   701: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for CPUA code */
   702: 	ROM_LOAD( "p8",    0x0000, 0x2000, CRC(ecb2fdc9) SHA1(7dd79fbbe286a9f18ed2cae45b1bfab765e549a1) )
   703: 	ROM_LOAD( "p9",    0x2000, 0x2000, CRC(0a87df26) SHA1(327710452bdc5dbb931abc853957225814f224c5) )
   704: 	ROM_LOAD( "p10",   0x4000, 0x2000, CRC(6eb8a87c) SHA1(375377df22b331175aaf1f9eb8d8ad83e8e146f6) )
   705: 
   706: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for CPUB code */
   707: 	ROM_LOAD( "p4",   0x0000, 0x2000, CRC(5664d699) SHA1(5bfa57a0f8d718d522003da6513a70d7ca3a87a3) )
   708: 	ROM_LOAD( "p5",   0x2000, 0x2000, CRC(dea2865a) SHA1(0807281e35159ee29fbe2d1aa087b57804f1a14f) )
   709: 	ROM_LOAD( "p6",   0x4000, 0x2000, CRC(e25a9b9c) SHA1(26853611e3898907239e15f1a00f62290889f89b) )
   710: 	ROM_LOAD( "p7",   0x6000, 0x2000, CRC(55b14a36) SHA1(7d5566a6ba285af92ddf560efda60a79f1da84c2) )
   711: 	ROM_LOAD( "p3",   0x8000, 0x2000, CRC(e3c8c2cb) SHA1(b3e39eacd2609ff0fa0f511bff0fc83e6b3970d4) )
   712: 
   713: 	ROM_REGION( 0x10000, REGION_CPU3, 0 )	/* 64k for sound code */
   714: 	ROM_LOAD( "p1",   0x0000, 0x2000, CRC(2dcd036d) SHA1(4da42ab1e502fff57f5d5787df406289538fa484) )
   715: 	ROM_LOAD( "p2",   0x2000, 0x2000, CRC(cc30ae8b) SHA1(ffedc747b9e0b616a163ff8bb1def318e522585b) )
   716: 
   717: 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
   718: 	ROM_LOAD( "p13",    0x0000, 0x2000, CRC(48c4ade0) SHA1(3628abb4f425b8c9d8659c8e4082735168b0f3e9) )	/* characters */
   719: 
   720: 	ROM_REGION( 0x2000, REGION_GFX2, ROMREGION_DISPOSE )
   721: 	ROM_LOAD( "p11",    0x0000, 0x2000, CRC(67174956) SHA1(65a921176294212971c748932a9010f45e1fb499) )	/* background tiles */
   722: 
   723: 	ROM_REGION( 0x2000, REGION_GFX3, ROMREGION_DISPOSE )
   724: 	ROM_LOAD( "p12",    0x0000, 0x2000, CRC(085094c1) SHA1(5c5599d1ed7f8a717ada54bbd28383a22e09a8fe) )	/* foreground tiles */
   725: 
   726: 	ROM_REGION( 0x6000, REGION_GFX4, ROMREGION_DISPOSE )
   727: 	ROM_LOAD( "p14",    0x0000, 0x2000, CRC(07e807bc) SHA1(f651d3a5394ced8e0a1b2be3aa52b3e5a5d84c37) )	/* sprites */
   728: 	ROM_LOAD( "p15",    0x2000, 0x2000, CRC(a74149d4) SHA1(e8011a8d4d1a98a0ffe67fc28ea9fa192ca80321) )
   729: 	ROM_LOAD( "p16",    0x4000, 0x2000, CRC(6153611a) SHA1(b352f92b233761122f74830e46913cc4df800259) )
   730: 
   731: 	ROM_REGION( 0x0c00, REGION_PROMS, 0 )
   732: 	ROM_LOAD( "m3-prom.j3",  0x000, 0x400, CRC(d19e8a91) SHA1(b21fbdb8ed8d0b27c3ec78cf2e115624f69c67e0) )
   733: 	ROM_LOAD( "m2-prom.j4",  0x400, 0x400, CRC(9fc325af) SHA1(a180662f168ba001376f25f5d9205cb119c1ffee) )
   734: 	ROM_LOAD( "m1-prom.j5",  0x800, 0x400, CRC(07678443) SHA1(267951886d8b031dd633dc4823d9bd862a585437) )
   735: ROM_END
   736: 
   737: ROM_START( vangrd2 )
   738: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )
   739: 	ROM_LOAD( "p1.9a",  0x0000, 0x2000, CRC(bc9eeca5) SHA1(5a737e0f0aa1a3a5296d1e1fec13b34aee970609) )
   740: 	ROM_LOAD( "p3.11a", 0x2000, 0x2000, CRC(3970f69d) SHA1(b0ef7494888804ab5b4002730fb0232a7fd6797b) )
   741: 	ROM_LOAD( "p2.12a", 0x4000, 0x2000, CRC(58b08b58) SHA1(eccc85191d678a0115a113002a43203afd857a5b) )
   742: 	ROM_LOAD( "p4.14a", 0x6000, 0x2000, CRC(a95f11ea) SHA1(8007efb4ad948c8768e474fc77134f3ce52da1d2) )
   743: 
   744: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )
   745: 	ROM_LOAD( "p5.4a", 0x0000, 0x2000, CRC(e4dfd0ba) SHA1(12d45ff147f3ea9c9e898c3831874cd7c1a071b7) )
   746: 	ROM_LOAD( "p6.6a", 0x2000, 0x2000, CRC(894ff00d) SHA1(1c66f327d8e94dc6ac386e11fcc5eb17c9081434) )
   747: 	ROM_LOAD( "p7.7a", 0x4000, 0x2000, CRC(40b4d069) SHA1(56c464bd055125ffc2da02d70137aa5efe5cd8f6) )
   748: 
   749: 	ROM_REGION( 0x10000, REGION_CPU3, 0 )	/* 64k for sound code */
   750: 	ROM_LOAD( "p8.6a", 0x0000, 0x2000, CRC(a3daa438) SHA1(4e659ac7e3ebaf85bc3ce5c9946fcf0af23083b4) )
   751: 	ROM_LOAD( "p9.8a", 0x2000, 0x2000, CRC(9345101a) SHA1(b99ad1c2a79df50b0a60fdd43ca466f6cb38445b) )
   752: 
   753: 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
   754: 	ROM_LOAD( "p15.1e", 0x0000, 0x2000, CRC(85718a41) SHA1(4c9aa1f8b229410414cd67bac8cb10a14bea12f4) )	/* characters */
   755: 
   756: 	ROM_REGION( 0x2000, REGION_GFX2, ROMREGION_DISPOSE )
   757: 	ROM_LOAD( "p13.1a", 0x0000, 0x2000, CRC(912f22c6) SHA1(5042edc80b58f77b3576b5e6eb8c6460c8a35494) )	/* background tiles */
   758: 
   759: 	ROM_REGION( 0x2000, REGION_GFX3, ROMREGION_DISPOSE )
   760: 	ROM_LOAD( "p9",     0x0000, 0x2000, CRC(7aa0b684) SHA1(d52670ec50b1a07d6c2c537f67922063deacdeea) )	/* foreground tiles */
   761: 
   762: 	ROM_REGION( 0x6000, REGION_GFX4, ROMREGION_DISPOSE )
   763: 	ROM_LOAD( "p12.1kl", 0x0000, 0x2000, CRC(8658ea6c) SHA1(d5ea9be2c1776b11abc77c944a653eeb73b27fc8) )	/* sprites */
   764: 	ROM_LOAD( "p11.3kl", 0x2000, 0x2000, CRC(620cd4ec) SHA1(a2fcc3d24d0d3c7cc601620ae7a709f46b613c0f) )
   765: 	ROM_LOAD( "p10.4kl", 0x4000, 0x2000, CRC(5bfc04c0) SHA1(4eb152fdf39cb0024f71d5bdf1bfc79c2b8c2329) )
   766: 
   767: 	ROM_REGION( 0x0c00, REGION_PROMS, 0 )
   768: 	ROM_LOAD( "mb7054.3j", 0x000, 0x400, CRC(506f659a) SHA1(766f1a0dd462eba64546c514004e6542e200d7c3) )
   769: 	ROM_LOAD( "mb7054.4j", 0x400, 0x400, CRC(222133ce) SHA1(109a63c8c44608a8ad9183e7b5d269765cc5f067) )
   770: 	ROM_LOAD( "mb7054.5j", 0x800, 0x400, CRC(2e21a79b) SHA1(1956377c799e0bbd127bf4fae016adc148efe007) )
   771: ROM_END
   772: 
   773: 
   774: /*******************************************************************************************/
   775: 
   776: static DRIVER_INIT( marvins )
   777: {
   778: 	init_sound( 0x40 );
   779: 	snk_gamegroup = 0;
   780: }
   781: 
   782: static DRIVER_INIT( madcrash )
   783: {
   784: /*
   785: 	The following lines patch out the ROM test (which fails - probably
   786: 	because of bit rot, so the rest of the test mode (what little there
   787: 	is) can be explored.
   788: 
   789: 	unsigned char *mem = memory_region(REGION_CPU1);
   790: 	mem[0x3a5d] = 0; mem[0x3a5e] = 0; mem[0x3a5f] = 0;
   791: */
   792: 	init_sound( 0x20 );
   793: 	snk_gamegroup = 1;
   794: 	snk_irq_delay = 1700;
   795: }
   796: 
   797: static DRIVER_INIT( vangrd2 )
   798: {
   799: 	init_sound( 0x20 );
   800: 	snk_gamegroup = 2;
   801: }
   802: 
   803: 
   804: GAMEX(1983, marvins,  0, marvins,  marvins,  marvins,  ROT270, "SNK", "Marvin's Maze", GAME_NO_COCKTAIL )
   805: GAMEX(1984, madcrash, 0, madcrash, madcrash, madcrash, ROT0,   "SNK", "Mad Crasher", GAME_IMPERFECT_GRAPHICS )
   806: GAMEX(1984, vangrd2,  0, vangrd2,  vangrd2,  vangrd2,  ROT270, "SNK", "Vanguard II", GAME_NO_COCKTAIL )
   807: 




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