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 : Space Zap : VM Driver Source

Source Listing


     1: /****************************************************************************
     2: 
     3: Bally Astrocade style games
     4: 
     5: driver by Nicola Salmoria, Mike Coates, Frank Palazzolo
     6: 
     7: TODO:
     8: - support stereo sound in Gorf (and maybe others, Wow has 3 speakers)
     9: 
    10: Notes:
    11: - In seawolf2, service mode dip switch turns on memory test. Reset with 2 pressed
    12:   to get to an input check screen, reset with 1+2 pressed to get to a convergence
    13:   test screen.
    14: 
    15: 
    16: memory map (preliminary)
    17: 
    18: 0000-3fff ROM but also "magic" RAM (which processes data and copies it to the video RAM)
    19: 4000-7fff SCREEN RAM (bitmap)
    20: 8000-cfff ROM
    21: d000-d3ff STATIC RAM
    22: 
    23: I/O ports:
    24: IN:
    25: 08        intercept register (collision detector)
    26: 	      bit 0: intercept in pixel 3 in an OR or XOR write since last reset
    27: 	      bit 1: intercept in pixel 2 in an OR or XOR write since last reset
    28: 	      bit 2: intercept in pixel 1 in an OR or XOR write since last reset
    29: 	      bit 3: intercept in pixel 0 in an OR or XOR write since last reset
    30: 	      bit 4: intercept in pixel 3 in last OR or XOR write
    31: 	      bit 5: intercept in pixel 2 in last OR or XOR write
    32: 	      bit 6: intercept in pixel 1 in last OR or XOR write
    33: 	      bit 7: intercept in pixel 0 in last OR or XOR write
    34: 10        IN0
    35: 11        IN1
    36: 12        IN2
    37: 13        DSW
    38: 14		  Video Retrace
    39: 15        ?
    40: 17        Speech Synthesizer (Output)
    41: 
    42: OUT:
    43: 00-07     palette (00-03 = right part of screen; 04-07 left part)
    44: 08        select video mode (0 = low res 160x102, 1 = high res 320x204)
    45: 09        --xxxxxx position where to switch from the "left" to the "right" palette (/2).
    46:           xx------ background color (portion of screen after vblank)
    47: 0a        screen height
    48: 0b        color block transfer
    49: 0c        magic RAM control
    50: 	      bit 7: ?
    51: 	      bit 6: flip
    52: 	      bit 5: draw in XOR mode
    53: 	      bit 4: draw in OR mode
    54: 	      bit 3: "expand" mode (convert 1bpp data to 2bpp)
    55: 	      bit 2: "rotate" mode (rotate 90 degrees - NOT EMULATED)
    56: 	      bit 1:\ shift amount to be applied before copying
    57: 	      bit 0:/
    58: 0d        set interrupt vector
    59: 10-18     sound
    60: 19        magic RAM expand mode color
    61: 78-7e     pattern board (see vidhrdw.c for details)
    62: 
    63: ****************************************************************************/
    64: 
    65: #include "driver.h" 
    66: #include "vidhrdw/generic.h" 
    67: 
    68: extern unsigned char *wow_videoram;
    69: 
    70: extern const char *wow_sample_names[];
    71: extern const char *gorf_sample_names[];
    72: 
    73: PALETTE_INIT( astrocde );
    74: READ_HANDLER( wow_intercept_r );
    75: WRITE_HANDLER( wow_videoram_w );
    76: WRITE_HANDLER( astrocde_magic_expand_color_w );
    77: WRITE_HANDLER( astrocde_magic_control_w );
    78: WRITE_HANDLER( wow_magicram_w );
    79: WRITE_HANDLER( astrocde_pattern_board_w );
    80: VIDEO_UPDATE( astrocde );
    81: READ_HANDLER( wow_video_retrace_r );
    82: 
    83: WRITE_HANDLER( astrocde_interrupt_vector_w );
    84: WRITE_HANDLER( astrocde_interrupt_enable_w );
    85: WRITE_HANDLER( astrocde_interrupt_w );
    86: INTERRUPT_GEN( wow_interrupt );
    87: 
    88: READ_HANDLER( seawolf2_controller1_r );
    89: READ_HANDLER( seawolf2_controller2_r );
    90: VIDEO_UPDATE( seawolf2 );
    91: 
    92: INTERRUPT_GEN( gorf_interrupt );
    93: READ_HANDLER( gorf_timer_r );
    94: READ_HANDLER( gorf_io_r );
    95: 
    96: VIDEO_START( astrocde );
    97: VIDEO_START( astrocde_stars );
    98: 
    99: int  wow_sh_start(const struct MachineSound *msound);
   100: void wow_sh_update(void);
   101: 
   102: READ_HANDLER( wow_speech_r );
   103: READ_HANDLER( wow_port_2_r );
   104: READ_HANDLER( wow_io_r );
   105: 
   106: int  gorf_sh_start(const struct MachineSound *msound);
   107: void gorf_sh_update(void);
   108: READ_HANDLER( gorf_speech_r );
   109: READ_HANDLER( gorf_port_2_r );
   110: WRITE_HANDLER( gorf_sound_control_a_w );
   111: 
   112: WRITE_HANDLER( astrocde_mode_w );
   113: WRITE_HANDLER( astrocde_vertical_blank_w );
   114: WRITE_HANDLER( astrocde_colour_register_w );
   115: WRITE_HANDLER( astrocde_colour_split_w );
   116: WRITE_HANDLER( astrocde_colour_block_w );
   117: 
   118: WRITE_HANDLER( ebases_trackball_select_w );
   119: READ_HANDLER( ebases_trackball_r );
   120: 
   121: 
   122: static WRITE_HANDLER( seawolf2_lamps_w )
   123: {
   124: 	/* 0x42 = player 2 (left), 0x43 = player 1 (right) */
   125: 	/* --x----- explosion */
   126: 	/* ---x---- RELOAD (active low) */
   127: 	/* ----x--- torpedo 1 available */
   128: 	/* -----x-- torpedo 2 available */
   129: 	/* ------x- torpedo 3 available */
   130: 	/* -------x torpedo 4 available */
   131: 
   132: 	/* I'm only supporting the "RELOAD" lamp since we don't have enough leds ;-) */
   133: 	set_led_status(offset^1,data & 0x10);
   134: }
   135: 
   136: 
   137: static MEMORY_READ_START( seawolf2_readmem )
   138: 	{ 0x0000, 0x1fff, MRA_ROM },
   139: 	{ 0x4000, 0x7fff, MRA_RAM },
   140: 	{ 0xc000, 0xc3ff, MRA_RAM },
   141: MEMORY_END
   142: 
   143: static MEMORY_WRITE_START( seawolf2_writemem )
   144: 	{ 0x0000, 0x3fff, wow_magicram_w },
   145: 	{ 0x4000, 0x7fff, wow_videoram_w, &wow_videoram, &videoram_size },
   146: 	{ 0xc000, 0xc3ff, MWA_RAM },
   147: MEMORY_END
   148: 
   149: static MEMORY_READ_START( readmem )
   150: 	{ 0x0000, 0x3fff, MRA_ROM },
   151: 	{ 0x4000, 0x7fff, MRA_RAM },
   152: 	{ 0x8000, 0xcfff, MRA_ROM },
   153: 	{ 0xd000, 0xdfff, MRA_RAM },
   154: MEMORY_END
   155: 
   156: static MEMORY_WRITE_START( writemem )
   157: 	{ 0x0000, 0x3fff, wow_magicram_w },
   158: 	{ 0x4000, 0x7fff, wow_videoram_w, &wow_videoram, &videoram_size },	/* ASG */
   159: 	{ 0x8000, 0xcfff, MWA_ROM },
   160: 	{ 0xd000, 0xdfff, MWA_RAM },
   161: MEMORY_END
   162: 
   163: static MEMORY_READ_START( robby_readmem )
   164: 	{ 0x0000, 0x3fff, MRA_ROM },
   165: 	{ 0x4000, 0x7fff, MRA_RAM },
   166: 	{ 0x8000, 0xdfff, MRA_ROM },
   167: 	{ 0xe000, 0xffff, MRA_RAM },
   168: MEMORY_END
   169: 
   170: static MEMORY_WRITE_START( robby_writemem )
   171: 	{ 0x0000, 0x3fff, wow_magicram_w },
   172: 	{ 0x4000, 0x7fff, wow_videoram_w, &wow_videoram, &videoram_size },
   173: 	{ 0x8000, 0xdfff, MWA_ROM },
   174: 	{ 0xe000, 0xffff, MWA_RAM },
   175: MEMORY_END
   176: 
   177: static MEMORY_READ_START( profpac_readmem )
   178: 	{ 0x0000, 0x3fff, MRA_ROM },
   179: 	{ 0x8000, 0xdfff, MRA_ROM },
   180: 	{ 0xe000, 0xffff, MRA_RAM },
   181: MEMORY_END
   182: 
   183: static MEMORY_WRITE_START( profpac_writemem )
   184: 	{ 0x0000, 0x3fff, wow_magicram_w },
   185: 	{ 0x4000, 0x7fff, wow_videoram_w, &wow_videoram, &videoram_size },
   186: 	{ 0x8000, 0xdfff, MWA_ROM },
   187: 	{ 0xe000, 0xffff, MWA_RAM },
   188: MEMORY_END
   189: 
   190: static PORT_READ_START( readport )
   191: 	{ 0x08, 0x08, wow_intercept_r },
   192: 	{ 0x0e, 0x0e, wow_video_retrace_r },
   193: 	{ 0x10, 0x10, input_port_0_r },
   194: 	{ 0x11, 0x11, input_port_1_r },
   195:   	{ 0x12, 0x12, input_port_2_r },
   196: 	{ 0x13, 0x13, input_port_3_r },
   197: PORT_END
   198: 
   199: static PORT_WRITE_START( seawolf2_writeport )
   200: 	{ 0x00, 0x07, astrocde_colour_register_w },
   201: 	{ 0x08, 0x08, astrocde_mode_w },
   202: 	{ 0x09, 0x09, astrocde_colour_split_w },
   203: 	{ 0x0a, 0x0a, astrocde_vertical_blank_w },
   204: 	{ 0x0b, 0x0b, astrocde_colour_block_w },
   205: 	{ 0x0c, 0x0c, astrocde_magic_control_w },
   206: 	{ 0x0d, 0x0d, astrocde_interrupt_vector_w },
   207: 	{ 0x0e, 0x0e, astrocde_interrupt_enable_w },
   208: 	{ 0x0f, 0x0f, astrocde_interrupt_w },
   209: 	{ 0x19, 0x19, astrocde_magic_expand_color_w },
   210: 	{ 0x40, 0x41, MWA_NOP }, /* analog sound */
   211: 	{ 0x42, 0x43, seawolf2_lamps_w },	/* cabinet lamps */
   212: PORT_END
   213: 
   214: static PORT_WRITE_START( writeport )
   215: 	{ 0x00, 0x07, astrocde_colour_register_w },
   216: 	{ 0x08, 0x08, astrocde_mode_w },
   217: 	{ 0x09, 0x09, astrocde_colour_split_w },
   218: 	{ 0x0a, 0x0a, astrocde_vertical_blank_w },
   219: 	{ 0x0b, 0x0b, astrocde_colour_block_w },
   220: 	{ 0x0c, 0x0c, astrocde_magic_control_w },
   221: 	{ 0x0d, 0x0d, astrocde_interrupt_vector_w },
   222: 	{ 0x0e, 0x0e, astrocde_interrupt_enable_w },
   223: 	{ 0x0f, 0x0f, astrocde_interrupt_w },
   224: 	{ 0x10, 0x18, astrocade_sound1_w },
   225: 	{ 0x19, 0x19, astrocde_magic_expand_color_w },
   226: 	{ 0x50, 0x58, astrocade_sound2_w },
   227: 	{ 0x5b, 0x5b, MWA_NOP }, /* speech board ? Wow always sets this to a5*/
   228: 	{ 0x78, 0x7e, astrocde_pattern_board_w },
   229: /*	{ 0xf8, 0xff, MWA_NOP }, */ /* Gorf uses these */
   230: PORT_END
   231: 
   232: 
   233: 
   234: INPUT_PORTS_START( seawolf2 )
   235: 	PORT_START /* IN0 */
   236: 	PORT_ANALOG( 0x3f, 0x20, IPT_PADDLE | IPF_REVERSE | IPF_PLAYER1, 20, 5, 0, 0x3f)
   237: 	PORT_DIPNAME( 0x40, 0x00, "Language 1" )
   238: 	PORT_DIPSETTING(    0x00, "Language 2" )
   239: 	PORT_DIPSETTING(    0x40, "French" )
   240: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER1 )
   241: 
   242: 	PORT_START /* IN1 */
   243: 	PORT_ANALOG( 0x3f, 0x20, IPT_PADDLE | IPF_REVERSE | IPF_PLAYER2, 20, 5, 0, 0x3f)
   244: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   245: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
   246: 
   247: 	PORT_START /* IN2 */
   248: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
   249: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 )
   250: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START2 )
   251: 	PORT_DIPNAME( 0x08, 0x00, "Language 2" )
   252: 	PORT_DIPSETTING(    0x00, "English" )
   253: 	PORT_DIPSETTING(    0x08, "German" )
   254: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   255: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   256: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   257: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   258: 
   259: 	PORT_START /* Dip Switch */
   260: 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Coinage ) )
   261: 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
   262: 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
   263: 	PORT_DIPNAME( 0x06, 0x00, "Play Time" )
   264: 	PORT_DIPSETTING(    0x06, "40" )
   265: 	PORT_DIPSETTING(    0x04, "50" )
   266: 	PORT_DIPSETTING(    0x02, "60" )
   267: 	PORT_DIPSETTING(    0x00, "70" )
   268: 	PORT_DIPNAME( 0x08, 0x08, "2 Players Game" )
   269: 	PORT_DIPSETTING(    0x00, "1 Credit" )
   270: 	PORT_DIPSETTING(    0x08, "2 Credits" )
   271: 	PORT_DIPNAME( 0x30, 0x00, "Extended Play" )
   272: 	PORT_DIPSETTING(    0x10, "5000" )
   273: 	PORT_DIPSETTING(    0x20, "6000" )
   274: 	PORT_DIPSETTING(    0x30, "7000" )
   275: 	PORT_DIPSETTING(    0x00, "None" )
   276: 	PORT_DIPNAME( 0x40, 0x40, "Monitor" )
   277: 	PORT_DIPSETTING(    0x40, "Color" )
   278: 	PORT_DIPSETTING(    0x00, "B/W" )
   279: 	PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
   280: INPUT_PORTS_END
   281: 
   282: INPUT_PORTS_START( spacezap )
   283: 	PORT_START /* IN0 */
   284: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
   285: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
   286: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT )
   287: 	PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
   288: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
   289: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )	// starts a 1 player game if 1 credit
   290: 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
   291: 
   292: 	PORT_START /* IN1 */
   293: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_COCKTAIL )
   294: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_COCKTAIL )
   295: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_COCKTAIL )
   296: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_COCKTAIL )
   297: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
   298: 	PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED )
   299: 
   300: 	PORT_START /* IN2 */
   301: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY )
   302: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY )
   303: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY )
   304: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
   305: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
   306: 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Cabinet ) )
   307: 	PORT_DIPSETTING(    0x20, DEF_STR( Upright ) )
   308: 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
   309: 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
   310: 
   311: 	PORT_START /* Dip Switch */
   312: 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Coin_A ) )
   313: 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
   314: 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
   315: 	PORT_DIPNAME( 0x06, 0x06, DEF_STR( Coin_B ) )
   316: 	PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
   317: 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_1C ) )
   318: 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
   319: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_5C ) )
   320: 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
   321: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   322: 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
   323: 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
   324: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   325: 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
   326: 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
   327: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   328: 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
   329: 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
   330: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   331: 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
   332: 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
   333: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   334: 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
   335: INPUT_PORTS_END
   336: 
   337: INPUT_PORTS_START( ebases )
   338: 	PORT_START /* IN0 */
   339: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   340: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
   341: 	PORT_BIT( 0x0c, IP_ACTIVE_LOW, IPT_UNKNOWN )
   342: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
   343: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
   344: 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
   345: 
   346: 	PORT_START
   347: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
   348: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
   349: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT )
   350: 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
   351: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   352: 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
   353: 	PORT_DIPNAME( 0x10, 0x00, "Monitor" )
   354: 	PORT_DIPSETTING(    0x00, "Color" )
   355: 	PORT_DIPSETTING(    0x10, "B/W" )
   356: 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
   357: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   358: 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
   359: 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
   360: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   361: 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
   362: 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
   363: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   364: 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
   365: 
   366: 	PORT_START /* Dip Switch */
   367: 	PORT_DIPNAME( 0x01, 0x00, "2 Players Game" )
   368: 	PORT_DIPSETTING(    0x00, "1 Credit" )
   369: 	PORT_DIPSETTING(    0x01, "2 Credits" )
   370: 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
   371: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   372: 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
   373: 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
   374: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   375: 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
   376: 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
   377: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   378: 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
   379: 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
   380: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   381: 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
   382: 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
   383: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   384: 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
   385: 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
   386: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   387: 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
   388: 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
   389: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   390: 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
   391: 
   392: 	PORT_START
   393: 	PORT_ANALOGX( 0xff, 0x00, IPT_TRACKBALL_X | IPF_PLAYER2 | IPF_CENTER, 50, 10, 0, 0, IP_KEY_NONE, IP_KEY_NONE, IP_JOY_NONE, IP_JOY_NONE )	\
   394: 
   395: 	PORT_START
   396: 	PORT_ANALOGX( 0xff, 0x00, IPT_TRACKBALL_Y | IPF_PLAYER2 | IPF_CENTER, 50, 10, 0, 0, IP_KEY_NONE, IP_KEY_NONE, IP_JOY_NONE, IP_JOY_NONE )	\
   397: 
   398: 	PORT_START
   399: 	PORT_ANALOGX( 0xff, 0x00, IPT_TRACKBALL_X | IPF_CENTER, 50, 10, 0, 0, IP_KEY_NONE, IP_KEY_NONE, IP_JOY_NONE, IP_JOY_NONE )	\
   400: 
   401: 	PORT_START
   402: 	PORT_ANALOGX( 0xff, 0x00, IPT_TRACKBALL_Y | IPF_CENTER, 50, 10, 0, 0, IP_KEY_NONE, IP_KEY_NONE, IP_JOY_NONE, IP_JOY_NONE )	\
   403: INPUT_PORTS_END
   404: 
   405: INPUT_PORTS_START( wow )
   406: 	PORT_START /* IN0 */
   407: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
   408: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
   409: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
   410: 	PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
   411: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_TILT )
   412: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
   413: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
   414: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) )
   415: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   416: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   417: 
   418: 	PORT_START /* IN1 */
   419: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
   420: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
   421: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
   422: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
   423: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER2 )
   424: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   425: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
   426: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
   427: 
   428: 	PORT_START /* IN2 */
   429: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
   430: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
   431: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
   432: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
   433: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 )
   434: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
   435: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
   436: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )	/* speech status */
   437: 
   438: 	PORT_START /* Dip Switch */
   439: 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Coin_A ) )
   440: 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
   441: 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
   442: 	PORT_DIPNAME( 0x06, 0x06, DEF_STR( Coin_B ) )
   443: 	PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
   444: 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_1C ) )
   445: 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
   446: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_5C ) )
   447: 	PORT_DIPNAME( 0x08, 0x08, "Language" )
   448: 	PORT_DIPSETTING(    0x08, "English" )
   449: 	PORT_DIPSETTING(    0x00, "Foreign (NEED ROM)" )
   450: 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Lives ) )
   451:  	PORT_DIPSETTING(    0x10, "2 for 1 Credit / 5 for 2 Credits" )
   452:  	PORT_DIPSETTING(    0x00, "3 for 1 Credit / 7 for 2 Credits" )
   453: 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Bonus_Life ) )
   454: 	PORT_DIPSETTING(    0x20, "3rd Level" )
   455: 	PORT_DIPSETTING(    0x00, "4th Level" )
   456: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Free_Play ) )
   457: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   458: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   459: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
   460: 	PORT_DIPSETTING(    0x00, "On only when controls are touched" )
   461: 	PORT_DIPSETTING(    0x80, "Always On"  )
   462: INPUT_PORTS_END
   463: 
   464: INPUT_PORTS_START( gorf )
   465: 	PORT_START /* IN0 */
   466: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
   467: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
   468: 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
   469: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT )
   470: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
   471: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
   472: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Cabinet ) )
   473: 	PORT_DIPSETTING(    0x40, DEF_STR( Upright ) )
   474: 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
   475: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
   476: 
   477: 	PORT_START /* IN1 */
   478: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
   479: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
   480: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
   481: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
   482: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
   483: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
   484: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
   485: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
   486: 
   487: 	PORT_START /* IN2 */
   488: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
   489: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
   490: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
   491: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
   492: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
   493: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
   494: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
   495: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )	/* speech status */
   496: 
   497: 	PORT_START /* Dip Switch */
   498: 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Coin_A ) )
   499: 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
   500: 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
   501: 	PORT_DIPNAME( 0x06, 0x06, DEF_STR( Coin_B ) )
   502: 	PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
   503: 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_1C ) )
   504: 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
   505: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_5C ) )
   506: 	PORT_DIPNAME( 0x08, 0x08, "Language" )
   507: 	PORT_DIPSETTING(    0x08, "English" )
   508: 	PORT_DIPSETTING(    0x00, "Foreign (NEED ROM)" )
   509: 	PORT_DIPNAME( 0x10, 0x00, "Lives per Credit" )
   510: 	PORT_DIPSETTING(    0x10, "2" )
   511: 	PORT_DIPSETTING(    0x00, "3" )
   512: 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Bonus_Life ) )
   513: 	PORT_DIPSETTING(    0x00, "Mission 5" )
   514: 	PORT_DIPSETTING(    0x20, "None" )
   515: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Free_Play ) )
   516: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   517: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   518: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
   519: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   520: 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
   521: INPUT_PORTS_END
   522: 
   523: INPUT_PORTS_START( robby )
   524: 	PORT_START /* IN0 */
   525: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
   526: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
   527: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
   528: 	PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
   529: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_TILT )
   530: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
   531: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
   532: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
   533: 
   534: 	PORT_START /* IN1 */
   535: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY | IPF_COCKTAIL )
   536: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY | IPF_COCKTAIL )
   537: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY | IPF_COCKTAIL )
   538: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_COCKTAIL )
   539: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
   540: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
   541: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
   542: 
   543: 	PORT_START /* IN2 */
   544: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
   545: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
   546: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
   547: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
   548: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
   549: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
   550: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
   551: 
   552: 	PORT_START /* Dip Switch */
   553: 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
   554: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   555: 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
   556: 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
   557: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   558: 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
   559: 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) )
   560: 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
   561: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   562: 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) )
   563: 	PORT_DIPSETTING(    0x08, DEF_STR( Upright ) )
   564: 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
   565: 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
   566: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   567: 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
   568: 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
   569: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   570: 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
   571: 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
   572: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   573: 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
   574: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
   575: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   576: 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
   577: INPUT_PORTS_END
   578: 
   579: 
   580: 
   581: static struct Samplesinterface wow_samples_interface =
   582: {
   583: 	8,	/* 8 channels */
   584: 	25,	/* volume */
   585: 	wow_sample_names
   586: };
   587: 
   588: static struct Samplesinterface gorf_samples_interface =
   589: {
   590: 	8,	/* 8 channels */
   591: 	25,	/* volume */
   592: 	gorf_sample_names
   593: };
   594: 
   595: static struct astrocade_interface astrocade_2chip_interface =
   596: {
   597: 	2,			/* Number of chips */
   598: 	1789773,	/* Clock speed */
   599: 	{255,255}			/* Volume */
   600: };
   601: 
   602: static struct astrocade_interface astrocade_1chip_interface =
   603: {
   604: 	1,			/* Number of chips */
   605: 	1789773,	/* Clock speed */
   606: 	{255}			/* Volume */
   607: };
   608: 
   609: static struct CustomSound_interface gorf_custom_interface =
   610: {
   611: 	gorf_sh_start,
   612: 	0,
   613: 	gorf_sh_update
   614: };
   615: 
   616: static struct CustomSound_interface wow_custom_interface =
   617: {
   618: 	wow_sh_start,
   619: 	0,
   620: 	wow_sh_update
   621: };
   622: 
   623: 
   624: 
   625: 
   626: static MACHINE_DRIVER_START( seawolf2 )
   627: 
   628: 	/* basic machine hardware */
   629: 	MDRV_CPU_ADD(Z80, 1789773)	/* 1.789 MHz */
   630: 	MDRV_CPU_MEMORY(seawolf2_readmem,seawolf2_writemem)
   631: 	MDRV_CPU_PORTS(readport,seawolf2_writeport)
   632: 	MDRV_CPU_VBLANK_INT(wow_interrupt,256)
   633: 
   634: 	MDRV_FRAMES_PER_SECOND(60)
   635: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   636: 
   637: 	/* video hardware */
   638: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   639: 	MDRV_SCREEN_SIZE(320, 204)
   640: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 204-1)
   641: 	MDRV_PALETTE_LENGTH(256)
   642: 
   643: 	MDRV_PALETTE_INIT(astrocde)
   644: 	MDRV_VIDEO_START(astrocde)
   645: 	MDRV_VIDEO_UPDATE(seawolf2)
   646: 
   647: 	/* sound hardware */
   648: MACHINE_DRIVER_END
   649: 
   650: static MACHINE_DRIVER_START( spacezap )
   651: 
   652: 	/* basic machine hardware */
   653: 	MDRV_CPU_ADD(Z80, 1789773)	/* 1.789 MHz */
   654: 	MDRV_CPU_MEMORY(readmem,writemem)
   655: 	MDRV_CPU_PORTS(readport,writeport)
   656: 	MDRV_CPU_VBLANK_INT(wow_interrupt,256)
   657: 
   658: 	MDRV_FRAMES_PER_SECOND(60)
   659: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   660: 
   661: 	/* video hardware */
   662: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   663: 	MDRV_SCREEN_SIZE(320, 204)
   664: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 204-1)
   665: 	MDRV_PALETTE_LENGTH(256)
   666: 
   667: 	MDRV_PALETTE_INIT(astrocde)
   668: 	MDRV_VIDEO_START(astrocde)
   669: 	MDRV_VIDEO_UPDATE(astrocde)
   670: 
   671: 	/* sound hardware */
   672: 	MDRV_SOUND_ADD(ASTROCADE, astrocade_2chip_interface)
   673: MACHINE_DRIVER_END
   674: 
   675: static MACHINE_DRIVER_START( ebases )
   676: 
   677: 	/* basic machine hardware */
   678: 	MDRV_CPU_ADD(Z80, 1789773)	/* 1.789 MHz */
   679: 	MDRV_CPU_MEMORY(readmem,writemem)
   680: 	MDRV_CPU_PORTS(readport,writeport)
   681: 	MDRV_CPU_VBLANK_INT(wow_interrupt,256)
   682: 
   683: 	MDRV_FRAMES_PER_SECOND(60)
   684: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   685: 
   686: 	/* video hardware */
   687: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   688: 	MDRV_SCREEN_SIZE(320, 204)
   689: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 204-1)
   690: 	MDRV_PALETTE_LENGTH(256)
   691: 
   692: 	MDRV_PALETTE_INIT(astrocde)
   693: 	MDRV_VIDEO_START(astrocde)
   694: 	MDRV_VIDEO_UPDATE(astrocde)
   695: 
   696: 	/* sound hardware */
   697: 	MDRV_SOUND_ADD(ASTROCADE, astrocade_1chip_interface)
   698: MACHINE_DRIVER_END
   699: 
   700: static MACHINE_DRIVER_START( wow )
   701: 
   702: 	/* basic machine hardware */
   703: 	MDRV_CPU_ADD(Z80, 1789773)	/* 1.789 MHz */
   704: 	MDRV_CPU_MEMORY(readmem,writemem)
   705: 	MDRV_CPU_PORTS(readport,writeport)
   706: 	MDRV_CPU_VBLANK_INT(wow_interrupt,256)
   707: 
   708: 	MDRV_FRAMES_PER_SECOND(60)
   709: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   710: 
   711: 	/* video hardware */
   712: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   713: 	MDRV_SCREEN_SIZE(320, 204)
   714: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 204-1)
   715: 	MDRV_PALETTE_LENGTH(256)
   716: 	MDRV_PALETTE_INIT(astrocde)
   717: 
   718: 	MDRV_VIDEO_START(astrocde_stars)
   719: 	MDRV_VIDEO_UPDATE(astrocde)
   720: 
   721: 	/* sound hardware */
   722: 	MDRV_SOUND_ADD(ASTROCADE, astrocade_2chip_interface)
   723: 	MDRV_SOUND_ADD(SAMPLES, wow_samples_interface)
   724: 	MDRV_SOUND_ADD(CUSTOM, wow_custom_interface)
   725: MACHINE_DRIVER_END
   726: 
   727: static MACHINE_DRIVER_START( gorf )
   728: 
   729: 	/* basic machine hardware */
   730: 	MDRV_CPU_ADD(Z80, 1789773)	/* 1.789 MHz */
   731: 	MDRV_CPU_MEMORY(readmem,writemem)
   732: 	MDRV_CPU_PORTS(readport,writeport)
   733: 	MDRV_CPU_VBLANK_INT(gorf_interrupt,256)
   734: 
   735: 	MDRV_FRAMES_PER_SECOND(60)
   736: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   737: 
   738: 	/* video hardware */
   739: 	/* it may look like the right hand side of the screen needs clipping, but */
   740: 	/* this isn't the case: cocktail mode would be clipped on the wrong side */
   741: 
   742: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   743: 	MDRV_SCREEN_SIZE(320, 204)
   744: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 204-1)
   745: 	MDRV_PALETTE_LENGTH(256)
   746: 
   747: 	MDRV_PALETTE_INIT(astrocde)
   748: 	MDRV_VIDEO_START(astrocde_stars)
   749: 	MDRV_VIDEO_UPDATE(astrocde)
   750: 
   751: 	/* sound hardware */
   752: 	MDRV_SOUND_ADD(ASTROCADE, astrocade_2chip_interface)
   753: 	MDRV_SOUND_ADD(SAMPLES, gorf_samples_interface)
   754: 	MDRV_SOUND_ADD(CUSTOM, gorf_custom_interface)
   755: MACHINE_DRIVER_END
   756: 
   757: static MACHINE_DRIVER_START( robby )
   758: 
   759: 	/* basic machine hardware */
   760: 	MDRV_CPU_ADD(Z80, 1789773)	/* 1.789 MHz */
   761: 	MDRV_CPU_MEMORY(robby_readmem,robby_writemem)
   762: 	MDRV_CPU_PORTS(readport,writeport)
   763: 	MDRV_CPU_VBLANK_INT(wow_interrupt,256)
   764: 
   765: 	MDRV_FRAMES_PER_SECOND(60)
   766: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   767: 
   768: 	/* video hardware */
   769: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   770: 	MDRV_SCREEN_SIZE(320, 204)
   771: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 204-1)
   772: 	MDRV_PALETTE_LENGTH(256)
   773: 	MDRV_PALETTE_INIT(astrocde)
   774: 
   775: 	MDRV_VIDEO_START(astrocde)
   776: 	MDRV_VIDEO_UPDATE(astrocde)
   777: 
   778: 	/* sound hardware */
   779: 	MDRV_SOUND_ADD(ASTROCADE, astrocade_2chip_interface)
   780: MACHINE_DRIVER_END
   781: 
   782: static MACHINE_DRIVER_START( profpac )
   783: 
   784: 	/* basic machine hardware */
   785: 	MDRV_CPU_ADD(Z80, 1789773)	/* 1.789 MHz */
   786: 	MDRV_CPU_MEMORY(profpac_readmem,profpac_writemem)
   787: 	MDRV_CPU_PORTS(readport,writeport)
   788: 	MDRV_CPU_VBLANK_INT(wow_interrupt,256)
   789: 
   790: 	MDRV_FRAMES_PER_SECOND(60)
   791: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   792: 
   793: 	/* video hardware */
   794: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   795: 	MDRV_SCREEN_SIZE(320, 204)
   796: 	MDRV_VISIBLE_AREA(0, 320-1, 0, 204-1)
   797: 	MDRV_PALETTE_LENGTH(256)
   798: 
   799: 	MDRV_PALETTE_INIT(astrocde)
   800: 	MDRV_VIDEO_START(astrocde)
   801: 	MDRV_VIDEO_UPDATE(astrocde)
   802: 
   803: 	/* sound hardware */
   804: 	MDRV_SOUND_ADD(ASTROCADE, astrocade_2chip_interface)
   805: MACHINE_DRIVER_END
   806: 
   807: 
   808: 
   809: ROM_START( seawolf2 )
   810: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )
   811: 	ROM_LOAD( "sw2x1.bin",    0x0000, 0x0800, CRC(ad0103f6) SHA1(c6e411444a824ce54b0eee10f7dc15e4229ec070) )
   812: 	ROM_LOAD( "sw2x2.bin",    0x0800, 0x0800, CRC(e0430f0a) SHA1(63d8c6b77e0aa536b4f5bb774bc9285f736d4265) )
   813: 	ROM_LOAD( "sw2x3.bin",    0x1000, 0x0800, CRC(05ad1619) SHA1(c9dbeaa4540dc95f98970f501a420b18b9898c91) )
   814: 	ROM_LOAD( "sw2x4.bin",    0x1800, 0x0800, CRC(1a1a14a2) SHA1(57d0ddea9f8bf082f50d0468a726fd91aaabf4e4) )
   815: ROM_END
   816: 
   817: ROM_START( spacezap )
   818: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )
   819: 	ROM_LOAD( "0662.01",      0x0000, 0x1000, CRC(a92de312) SHA1(784ac67c75c7c101f97ebfd39b2b3f7bf7fa470a) )
   820: 	ROM_LOAD( "0663.xx",      0x1000, 0x1000, CRC(4836ebf1) SHA1(ad0e8c34a209c827c1336f0250cc61fee667fb03) )
   821: 	ROM_LOAD( "0664.xx",      0x2000, 0x1000, CRC(d8193a80) SHA1(72151e773562da62acd2c1d9638711711cbc13a3) )
   822: 	ROM_LOAD( "0665.xx",      0x3000, 0x1000, CRC(3784228d) SHA1(5aabd720a106158a892368c4920d9cd0f5235e34) )
   823: ROM_END
   824: 
   825: ROM_START( ebases )
   826: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )
   827: 	ROM_LOAD( "m761a",        0x0000, 0x1000, CRC(34422147) SHA1(6483ca1359b675b0dd739605db2a1dbd4b7fb8cb) )
   828: 	ROM_LOAD( "m761b",        0x1000, 0x1000, CRC(4f28dfd6) SHA1(52e571e671fa61b0f9ab397a5947094c24f6c388) )
   829: 	ROM_LOAD( "m761c",        0x2000, 0x1000, CRC(bff6c97e) SHA1(e41fb9db919039c8a48b4caebf80821a066d7ccf) )
   830: 	ROM_LOAD( "m761d",        0x3000, 0x1000, CRC(5173781a) SHA1(e60c3f4b075f8b811ff6a8637c4aa0b089847a82) )
   831: ROM_END
   832: 
   833: ROM_START( wow )
   834: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )
   835: 	ROM_LOAD( "wow.x1",       0x0000, 0x1000, CRC(c1295786) SHA1(1e4f30cc15537aed6603b4e664e6e60f4bccb5c5) )
   836: 	ROM_LOAD( "wow.x2",       0x1000, 0x1000, CRC(9be93215) SHA1(0bc8ee6d8391104eb217b612f32856b105946682) )
   837: 	ROM_LOAD( "wow.x3",       0x2000, 0x1000, CRC(75e5a22e) SHA1(50a8ca11909ce49412c47de4da69e39a083ce5af) )
   838: 	ROM_LOAD( "wow.x4",       0x3000, 0x1000, CRC(ef28eb84) SHA1(d6318b3649fccafc2d0a05e5530e88819d299356) )
   839: 	ROM_LOAD( "wow.x5",       0x8000, 0x1000, CRC(16912c2b) SHA1(faf9c96d99bc111c5f1618f6863f22fd9269027b) )
   840: 	ROM_LOAD( "wow.x6",       0x9000, 0x1000, CRC(35797f82) SHA1(376bba29e88c16d95438fa996913b76581df0937) )
   841: 	ROM_LOAD( "wow.x7",       0xa000, 0x1000, CRC(ce404305) SHA1(a52c6c7b77842f25c79515460be6b7ed959b5edb) )
   842: /*	ROM_LOAD( "wow.x8",       0xc000, CRC(00001000) , ? )	here would go the foreign language ROM */
   843: ROM_END
   844: 
   845: ROM_START( gorf )
   846: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )
   847: 	ROM_LOAD( "gorf-a.bin",   0x0000, 0x1000, CRC(5b348321) SHA1(76e2e3ad1a66755f1a369167fdb157690fd44a52) )
   848: 	ROM_LOAD( "gorf-b.bin",   0x1000, 0x1000, CRC(62d6de77) SHA1(2601faf12d0ab4972c5535ffd722b03ecd8c097c) )
   849: 	ROM_LOAD( "gorf-c.bin",   0x2000, 0x1000, CRC(1d3bc9c9) SHA1(0b363a71d7585a4828e08668ebb2999c55e02721) )
   850: 	ROM_LOAD( "gorf-d.bin",   0x3000, 0x1000, CRC(70046e56) SHA1(392214cc6ed4155bfe022d36f0f86c2594a5ab57) )
   851: 	ROM_LOAD( "gorf-e.bin",   0x8000, 0x1000, CRC(2d456eb5) SHA1(720fb8b48e20c1fc281d8804259016c3c5364a07) )
   852: 	ROM_LOAD( "gorf-f.bin",   0x9000, 0x1000, CRC(f7e4e155) SHA1(9c9d6d3bfee6556dc7a01de81d6148dd02f04fc9) )
   853: 	ROM_LOAD( "gorf-g.bin",   0xa000, 0x1000, CRC(4e2bd9b9) SHA1(9edccceea5af015275582553ed238c40c73d8f4f) )
   854: 	ROM_LOAD( "gorf-h.bin",   0xb000, 0x1000, CRC(fe7b863d) SHA1(5aa8d824814ee1c30eaf0044da78d3aa8220dcaa) )
   855: ROM_END
   856: 
   857: ROM_START( gorfpgm1 )
   858: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )
   859: 	ROM_LOAD( "873a",         0x0000, 0x1000, CRC(97cb4a6a) SHA1(efdae9a437c665fb861665a38c6cb13fd848ad91) )
   860: 	ROM_LOAD( "873b",         0x1000, 0x1000, CRC(257236f8) SHA1(d1e8555fe5e6705ef88535bcd6071d1072b01386) )
   861: 	ROM_LOAD( "873c",         0x2000, 0x1000, CRC(16b0638b) SHA1(65e1e2e4df80140976915e0982ce3219b14beece) )
   862: 	ROM_LOAD( "873d",         0x3000, 0x1000, CRC(b5e821dc) SHA1(152840e353d567cbf5a86206dde70e5b64b27236) )
   863: 	ROM_LOAD( "873e",         0x8000, 0x1000, CRC(8e82804b) SHA1(24250edb30efa63c80514629c86c9372b7ca3020) )
   864: 	ROM_LOAD( "873f",         0x9000, 0x1000, CRC(715fb4d9) SHA1(c9f33162093e6ed7e3cb6bb716419e5bc43c0381) )
   865: 	ROM_LOAD( "873g",         0xa000, 0x1000, CRC(8a066456) SHA1(f64bcdadbc62566b55573039b03baf5358e24a36) )
   866: 	ROM_LOAD( "873h",         0xb000, 0x1000, CRC(56d40c7c) SHA1(c7c9a618d9438a76121972ac029ad7036bcf8c6f) )
   867: ROM_END
   868: 
   869: ROM_START( robby )
   870: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )
   871: 	ROM_LOAD( "rotox1.bin",   0x0000, 0x1000, CRC(a431b85a) SHA1(3478da56addba1cdd98cbef7a15b17fca9aed2cd) )
   872: 	ROM_LOAD( "rotox2.bin",   0x1000, 0x1000, CRC(33cdda83) SHA1(ccbc741a2fc0b7385ca42afe5b377432249b44cb) )
   873: 	ROM_LOAD( "rotox3.bin",   0x2000, 0x1000, CRC(dbf97491) SHA1(11574baf04af02b38ae147be8409de7c34e87611) )
   874: 	ROM_LOAD( "rotox4.bin",   0x3000, 0x1000, CRC(a3b90ac8) SHA1(8c585d26011c9ea047895a0388835ff2bb80e1ff) )
   875: 	ROM_LOAD( "rotox5.bin",   0x8000, 0x1000, CRC(46ae8a94) SHA1(218edcc5257c9cc58c5e667fff64767b313daaab) )
   876: 	ROM_LOAD( "rotox6.bin",   0x9000, 0x1000, CRC(7916b730) SHA1(c5166625a404da4a93a1a7ae21d01fdb6e78680e) )
   877: 	ROM_LOAD( "rotox7.bin",   0xa000, 0x1000, CRC(276dc4a5) SHA1(d740b30c28f6a94ee2348291e80d57af5c2e2d99) )
   878: 	ROM_LOAD( "rotox8.bin",   0xb000, 0x1000, CRC(1ef13457) SHA1(4dc1ee9ce2a28c4ba75e630fbfe4659cd68d3a66) )
   879:   	ROM_LOAD( "rotox9.bin",   0xc000, 0x1000, CRC(370352bf) SHA1(72cd35b4306b46de3d2a3e4e46fa4917ed9d18cb) )
   880: 	ROM_LOAD( "rotox10.bin",  0xd000, 0x1000, CRC(e762cbda) SHA1(48c274a859963097a90f80c48366250301eddb5f) )
   881: ROM_END
   882: 
   883: ROM_START( profpac )
   884: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )
   885: 	ROM_LOAD( "pps1",         0x0000, 0x2000, CRC(a244a62d) )
   886: 	ROM_LOAD( "pps2",         0x2000, 0x2000, CRC(8a9a6653) )
   887: 	ROM_LOAD( "pps7",         0x8000, 0x2000, CRC(f9c26aba) )
   888: 	ROM_LOAD( "pps8",         0xa000, 0x2000, CRC(4d201e41) )
   889: 	ROM_LOAD( "pps9",         0xc000, 0x2000, CRC(17a0b418) )
   890: 
   891: 	ROM_REGION( 0x04000, REGION_USER1, 0 )
   892: 	ROM_LOAD( "pps3",         0x0000, 0x2000, CRC(15717fd8) )
   893: 	ROM_LOAD( "pps4",         0x0000, 0x2000, CRC(36540598) )
   894: 	ROM_LOAD( "pps5",         0x0000, 0x2000, CRC(8dc89a59) )
   895: 	ROM_LOAD( "pps6",         0x0000, 0x2000, CRC(5a2186c3) )
   896: 	ROM_LOAD( "ppq1",         0x0000, 0x4000, CRC(dddc2ccc) )
   897: 	ROM_LOAD( "ppq2",         0x0000, 0x4000, CRC(33bbcabe) )
   898: 	ROM_LOAD( "ppq3",         0x0000, 0x4000, CRC(3534d895) )
   899: 	ROM_LOAD( "ppq4",         0x0000, 0x4000, CRC(17e3581d) )
   900: 	ROM_LOAD( "ppq5",         0x0000, 0x4000, CRC(80882a93) )
   901: 	ROM_LOAD( "ppq6",         0x0000, 0x4000, CRC(e5ddaee5) )
   902: 	ROM_LOAD( "ppq7",         0x0000, 0x4000, CRC(c029cd34) )
   903: 	ROM_LOAD( "ppq8",         0x0000, 0x4000, CRC(fb3a1ac9) )
   904: 	ROM_LOAD( "ppq9",         0x0000, 0x4000, CRC(5e944488) )
   905: 	ROM_LOAD( "ppq10",        0x0000, 0x4000, CRC(ed72a81f) )
   906: 	ROM_LOAD( "ppq11",        0x0000, 0x4000, CRC(98295020) )
   907: 	ROM_LOAD( "ppq12",        0x0000, 0x4000, CRC(e01a8dbe) )
   908: 	ROM_LOAD( "ppq13",        0x0000, 0x4000, CRC(87165d4f) )
   909: 	ROM_LOAD( "ppq14",        0x0000, 0x4000, CRC(ecb861de) )
   910: ROM_END
   911: 
   912: 
   913: 
   914: static DRIVER_INIT( seawolf2 )
   915: {
   916: 	install_port_read_handler(0, 0x10, 0x10, seawolf2_controller2_r);
   917: 	install_port_read_handler(0, 0x11, 0x11, seawolf2_controller1_r);
   918: }
   919: static DRIVER_INIT( ebases )
   920: {
   921: 	install_port_read_handler (0, 0x13, 0x13, ebases_trackball_r);
   922: 	install_port_write_handler(0, 0x28, 0x28, ebases_trackball_select_w);
   923: }
   924: static DRIVER_INIT( wow )
   925: {
   926: 	install_port_read_handler(0, 0x12, 0x12, wow_port_2_r);
   927: 	install_port_read_handler(0, 0x15, 0x15, wow_io_r);
   928: 	install_port_read_handler(0, 0x17, 0x17, wow_speech_r);
   929: }
   930: static DRIVER_INIT( gorf )
   931: {
   932: 	install_mem_read_handler (0, 0xd0a5, 0xd0a5, gorf_timer_r);
   933: 
   934: 	install_port_read_handler(0, 0x12, 0x12, gorf_port_2_r);
   935: 	install_port_read_handler(0, 0x15, 0x16, gorf_io_r);
   936: 	install_port_read_handler(0, 0x17, 0x17, gorf_speech_r);
   937: }
   938: 
   939: 
   940: GAMEX(1978, seawolf2, 0,    seawolf2, seawolf2, seawolf2, ROT0,   "Midway", "Sea Wolf II", GAME_NO_SOUND )
   941: GAME( 1980, spacezap, 0,    spacezap, spacezap, 0,        ROT0,   "Midway", "Space Zap" )
   942: GAME( 1980, ebases,   0,    ebases,   ebases,   ebases,   ROT0,   "Midway", "Extra Bases" )
   943: GAME( 1980, wow,      0,    wow,      wow,      wow,      ROT0,   "Midway", "Wizard of Wor" )
   944: GAME( 1981, gorf,     0,    gorf,     gorf,     gorf,     ROT270, "Midway", "Gorf" )
   945: GAME( 1981, gorfpgm1, gorf, gorf,     gorf,     gorf,     ROT270, "Midway", "Gorf (Program 1)" )
   946: GAME( 1981, robby,    0,    robby,    robby,    0,        ROT0,   "Bally Midway", "Robby Roto" )
   947: GAME( 1983, profpac,  0,    profpac,  gorf,     0,        ROT0,   "Bally Midway", "Professor PacMan" )
   948: 




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