Viewing File: <root>/src/mame/drivers/gottlieb.c

    1  /***************************************************************************
    2  
    3      Gottlieb hardware
    4      dedicated to Warren Davis, Jeff Lee, Tim Skelly & David Thiel
    5  
    6      driver by Fabrice Frances & Nicola Salmoria
    7  
    8      Games supported:
    9          * Reactor
   10          * Q*Bert [6 sets]
   11          * Insector (prototype)
   12          * Tylz (prototype)
   13          * Argus (prototype)
   14          * Mad Planets
   15          * Krull
   16          * Knightmare (prototype)
   17          * Faster, Harder, More Challenging Q*bert (prototype)
   18          * Q*Bert's Qubes
   19          * M.A.C.H. 3
   20          * Screw Loose (prototype)
   21          * Cobra Command
   22          * Curve Ball
   23          * Us vs. Them
   24          * The Three Stooges in Brides Is Brides
   25          * Video Vince and the Game Factory (prototype)
   26          * Wiz Warz (prototype)
   27  
   28      Known issues:
   29          * none at this time
   30  
   31  ****************************************************************************
   32  
   33      Board Id           Game             Game Id
   34      ---------------    -------------    --------
   35                         Reactor          GV-100
   36                         Argus            GV-101 (unreleased)
   37                         Mad Planets      GV-102
   38      C-22248-2          Q*Bert           GV-103
   39                         Krull            GV-105
   40      22399-1 (GD-01)    M.A.C.H. 3       GV-109
   41                         Wiz Warz         GV-110
   42                         Knightmare       GV-112
   43                         Three Stooges    GV-113
   44                         Q*Bert Qubes     GV-118
   45                         Us vs. Them      GV-126
   46                         Video Vince      GV-132
   47                         Curve Ball       GV-134
   48  
   49  ****************************************************************************
   50  
   51      Thanks to Frans van Egmond for locating and dumping Tylz
   52  
   53      Notes:
   54  
   55      There was a bug in the hardware of the GG1 and GG2 boards, which is not
   56      emulated. The bug seems to have disappeared with the later revision of
   57      the board, e.g the board used by 3Stooges and Mach3 don't seem to have
   58      it). The bug was affecting the first character column (on horizontal
   59      games): screen memory could be used, but whatever was stored in this
   60      column, always the same character was displayed.
   61  
   62      This led to two consequences:
   63      - the image on the monitor had to be stretched so that the column was
   64        not visible
   65      - game designers were not using the first column. In fact, when the
   66        first column was ejected from the screen, the last one was usually
   67        out too, so it wasn't used either...
   68  
   69  ****************************************************************************
   70  
   71  Reactor: earlier version of the board, with a different memory map
   72  
   73  Main processor (8088 minimum mode)
   74  0000-1fff RAM (NOT battery backed unlike all the others)
   75  2000-2fff sprites
   76  3000-37ff video ram
   77  4000-4fff char generator ram
   78  6000-67ff palette ram (palette of 16 colors)
   79  7000-77ff i/o ports
   80  8000-ffff ROM
   81  
   82  memory mapped ports:
   83  
   84  read:
   85  7000    Dip switch
   86  7001    Inputs 10-17
   87  7002    trackball H
   88  7003    trackball V
   89  7004    Inputs 40-47
   90  
   91  write:
   92  7000    watchdog reset
   93  7001    trackball clear
   94  7002    Outputs 20-27
   95  7003    Flipflop outputs:
   96          b0: F/B priority
   97          b1: horiz. flip
   98          b2: vert. flip
   99          b3: Output 33
  100          b4: coin counter
  101          b5: left lamp (1P/3Lives start)
  102          b6: middle lamps (2P/3Lives start, 1P/7Lives start)
  103          b7: right lamp (2P/7Lives start)
  104  7004    Outputs 40-47
  105  
  106  interrupts:
  107  INTR not connected
  108  NMI connected to vertical blank
  109  
  110  
  111  
  112  Gottlieb games memory map
  113  
  114  Main processor (8088 minimum mode)
  115  0000-0fff RAM (battery backed)
  116  1000-1fff RAM or ROM (selected with jumpers on the board)
  117  2000-2fff RAM or ROM (selected with jumpers on the board)
  118  3000-37ff sprites. The manual says there are 63 sprites (NOT 64),
  119            but the Q*Bert object priority test leaves sprite #63 dangling, so
  120            they are probably only 62.
  121  3800-3fff video RAM
  122  4000-4fff char generator RAM (can be replaced by a ROM twice as large,
  123            selection made with jumpers on the board. If it's ROM, the CPU
  124            cannot fully access it, I think it could read half the data if it
  125            wanted to but none of the games do that)
  126  5000-57ff palette ram (palette of 16 colors)
  127  5800-5fff i/o ports
  128  6000-ffff ROM (not necessarily fully populated)
  129  
  130  memory mapped ports:
  131  
  132  read:
  133  5800    Dip switch
  134  5801    Inputs 10-17
  135  5802    trackball H (optional)
  136  5803    trackball V (optional)
  137  5804    Inputs 40-47
  138  
  139  write:
  140  5800    watchdog reset
  141  5801    trackball clear (optional)
  142  5802    Outputs 20-27
  143  5803    Flipflop outputs:
  144          b0: F/B priority
  145          b1: horiz. flip (sprite bank in Us vs. Them)
  146          b2: vert. flip (maybe genlock control in the laser disc games)
  147          b3: Output 33
  148          b4: coin counter (sprite bank in Q*Bert Qubes)
  149          b5: Q*Bert: kicker; Q*Bert Qubes: coin counter
  150          b5/b6: 3 Stooges: joystick input multiplexer
  151          b7: ?
  152  5804    Outputs 40-47
  153  
  154  interrupts:
  155  INTR not connected
  156  NMI connected to vertical blank
  157  
  158  
  159  
  160  Sound processor (6502) memory map (earlier revision, used by games up to Krull):
  161  0000-0fff RIOT (6532)
  162  1000-1fff amplitude DAC
  163  2000-2fff SC01 voice chip
  164  3000-3fff voice clock DAC
  165  4000-4fff expansion socket
  166  5000-5fff expansion socket
  167  6000-6fff expansion socket or ROM (selected with jumpers on the board)
  168  7000-7fff ROM
  169  (repeated in 8000-ffff, A15 only used in expansion socket)
  170  
  171  Use of I/Os on the RIOT:
  172  both ports A and B are programmed as inputs, A is connected to the main
  173  motherboard, and B has SW1 (test) connected on bit 6.
  174  
  175  interrupts:
  176  INTR is connected to the RIOT, so an INTR can be generated by a variety
  177  of sources, e.g active edge detection on PA7, or timer countdown.
  178  It seems that all gottlieb games program the interrupt conditions so that
  179  a positive active edge on PA7 triggers an interrupt, so the
  180  main board ensures a command is correctly received by sending nul (0)
  181  commands between two commands. Also, the timer interrupt is enabled but
  182  doesn't seem to serve any purpose...(?)
  183  
  184  
  185  In the later revision of the sound board, used from M.A.C.H. 3 onwards, there
  186  are two 6502, two 8910, a DAC and a GI SP-0250 speech chip.
  187  
  188  
  189  Video timings:
  190  XTAL = 20 MHz
  191  Horizontal video frequency: HSYNC = XTAL/4/318 = 15.72327 kHz
  192  Video frequency: VSYNC = HSYNC/256 = 61.41903 Hz
  193  VBlank duration: 1/VSYNC * (16/256) = 1017.6 us
  194  
  195  ***************************************************************************/
  196  
  197  #include "emu.h"
  198  #include "machine/6532riot.h"
  199  #include "sound/ay8910.h"
  200  #include "sound/dac.h"
  201  #include "sound/samples.h"
  202  #include "sound/sp0250.h"
  203  #include "machine/nvram.h"
  204  #include "includes/gottlieb.h"
  205  
  206  
  207  #define LOG_AUDIO_DECODE    (0)
  208  
  209  #define SYSTEM_CLOCK        XTAL_20MHz
  210  #define CPU_CLOCK           XTAL_15MHz
  211  #define NTSC_CLOCK          XTAL_14_31818MHz
  212  #define LASERDISC_CLOCK     PERIOD_OF_555_ASTABLE(16000, 10000, 0.001e-6)
  213  
  214  #define AUDIORAM_SIZE       0x400
  215  
  216  
  217  
  218  /*************************************
  219   *
  220   *  Initialization
  221   *
  222   *************************************/
  223  
  224  void gottlieb_state::machine_start()
  225  {
  226      /* register for save states */
  227      state_save_register_global(machine(), m_joystick_select);
  228      state_save_register_global_array(machine(), m_track);
  229  
  230      /* see if we have a laserdisc */
  231      if (m_laserdisc != NULL)
  232      {
  233          /* attach to the I/O ports */
  234          machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x05805, 0x05807, 0, 0x07f8, read8_delegate(FUNC(gottlieb_state::laserdisc_status_r),this));
  235          machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x05805, 0x05805, 0, 0x07f8, write8_delegate(FUNC(gottlieb_state::laserdisc_command_w),this));    /* command for the player */
  236          machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x05806, 0x05806, 0, 0x07f8, write8_delegate(FUNC(gottlieb_state::laserdisc_select_w),this));
  237  
  238          /* allocate a timer for serial transmission, and one for philips code processing */
  239          m_laserdisc_bit_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gottlieb_state::laserdisc_bit_callback),this));
  240          m_laserdisc_philips_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gottlieb_state::laserdisc_philips_callback),this));
  241  
  242          /* create some audio RAM */
  243          m_laserdisc_audio_buffer = auto_alloc_array(machine(), UINT8, AUDIORAM_SIZE);
  244          m_laserdisc_status = 0x38;
  245  
  246          /* more save state registration */
  247          state_save_register_global(machine(), m_laserdisc_select);
  248          state_save_register_global(machine(), m_laserdisc_status);
  249          state_save_register_global(machine(), m_laserdisc_philips_code);
  250  
  251          state_save_register_global_pointer(machine(), m_laserdisc_audio_buffer, AUDIORAM_SIZE);
  252          state_save_register_global(machine(), m_laserdisc_audio_address);
  253          state_save_register_global_array(machine(), m_laserdisc_last_samples);
  254          state_save_register_global(machine(), m_laserdisc_last_time);
  255          state_save_register_global(machine(), m_laserdisc_last_clock);
  256          state_save_register_global(machine(), m_laserdisc_zero_seen);
  257          state_save_register_global(machine(), m_laserdisc_audio_bits);
  258          state_save_register_global(machine(), m_laserdisc_audio_bit_count);
  259      }
  260  }
  261  
  262  
  263  void gottlieb_state::machine_reset()
  264  {
  265      /* if we have a laserdisc, reset our philips code callback for the next line 17 */
  266      if (m_laserdisc != NULL)
  267          m_laserdisc_philips_timer->adjust(machine().primary_screen->time_until_pos(17), 17);
  268  }
  269  
  270  
  271  
  272  /*************************************
  273   *
  274   *  Input ports
  275   *
  276   *************************************/
  277  
  278  CUSTOM_INPUT_MEMBER(gottlieb_state::analog_delta_r)
  279  {
  280      const char *string = (const char *)param;
  281      int which = string[0] - '0';
  282  
  283      return ioport(&string[1])->read() - m_track[which];
  284  }
  285  
  286  
  287  WRITE8_MEMBER(gottlieb_state::gottlieb_analog_reset_w)
  288  {
  289      /* reset the trackball counters */
  290      m_track[0] = ioport("TRACKX")->read_safe(0);
  291      m_track[1] = ioport("TRACKY")->read_safe(0);
  292  }
  293  
  294  
  295  CUSTOM_INPUT_MEMBER(gottlieb_state::stooges_joystick_r)
  296  {
  297      static const char *const joyport[] = { "P2JOY", "P3JOY", "P1JOY", NULL };
  298      return (joyport[m_joystick_select & 3] != NULL) ? ioport(joyport[m_joystick_select & 3])->read() : 0xff;
  299  }
  300  
  301  
  302  
  303  /*************************************
  304   *
  305   *  Output ports
  306   *
  307   *************************************/
  308  
  309  WRITE8_MEMBER(gottlieb_state::general_output_w)
  310  {
  311      /* bits 0-3 control video features, and are different for laserdisc games */
  312      if (m_laserdisc == NULL)
  313          gottlieb_video_control_w(space, offset, data);
  314      else
  315          gottlieb_laserdisc_video_control_w(space, offset, data);
  316  
  317      /* bit 4 normally controls the coin meter */
  318      coin_counter_w(machine(), 0, data & 0x10);
  319  
  320      /* bit 5 doesn't have a generic function */
  321      /* bit 6 controls "COIN1"; it appears that no games used this */
  322      /* bit 7 controls the optional coin lockout; it appears that no games used this */
  323  }
  324  
  325  // custom overrides
  326  WRITE8_MEMBER(gottlieb_state::reactor_output_w)
  327  {
  328      general_output_w(space, offset, data & ~0xe0);
  329  
  330      set_led_status(machine(), 0, data & 0x20);
  331      set_led_status(machine(), 1, data & 0x40);
  332      set_led_status(machine(), 2, data & 0x80);
  333  }
  334  
  335  WRITE8_MEMBER(gottlieb_state::qbert_output_w)
  336  {
  337      general_output_w(space, offset, data & ~0x20);
  338  
  339      // bit 5 controls the knocker
  340      qbert_knocker(data >> 5 & 1);
  341  }
  342  
  343  WRITE8_MEMBER(gottlieb_state::qbertqub_output_w)
  344  {
  345      // coincounter is on bit 5 instead
  346      general_output_w(space, offset, (data >> 1 & 0x10) | (data & ~0x30));
  347  
  348      // bit 4 controls the sprite bank
  349      m_spritebank = (data & 0x10) >> 4;
  350  }
  351  
  352  WRITE8_MEMBER(gottlieb_state::stooges_output_w)
  353  {
  354      general_output_w(space, offset, data & ~0x60);
  355  
  356      // bit 5,6: joystick input multiplexer
  357      m_joystick_select = (data >> 5) & 0x03;
  358  }
  359  
  360  
  361  
  362  /*************************************
  363   *
  364   *  Laserdisc I/O interface
  365   *
  366   *************************************/
  367  
  368  READ8_MEMBER(gottlieb_state::laserdisc_status_r)
  369  {
  370      /* IP5 reads low 8 bits of philips code */
  371      if (offset == 0)
  372          return m_laserdisc_philips_code;
  373  
  374      /* IP6 reads middle 8 bits of philips code */
  375      if (offset == 1)
  376          return m_laserdisc_philips_code >> 8;
  377  
  378      /* IP7 reads either status or audio detect, depending on the select */
  379      if (m_laserdisc_select)
  380      {
  381          /* bits 0-2 frame number MSN */
  382          /* bit 3 audio buffer ready */
  383          /* bit 4 ready to send new laserdisc command? */
  384          /* bit 5 disc ready */
  385          /* bit 6 break in audio trasmission */
  386          /* bit 7 missing audio clock */
  387          return m_laserdisc_status;
  388      }
  389      else
  390      {
  391          UINT8 result = m_laserdisc_audio_buffer[m_laserdisc_audio_address++];
  392          m_laserdisc_audio_address %= AUDIORAM_SIZE;
  393          return result;
  394      }
  395      return 0;
  396  }
  397  
  398  
  399  WRITE8_MEMBER(gottlieb_state::laserdisc_select_w)
  400  {
  401      /* selects between reading audio data and reading status */
  402      m_laserdisc_select = data & 1;
  403  }
  404  
  405  
  406  WRITE8_MEMBER(gottlieb_state::laserdisc_command_w)
  407  {
  408      /* a write here latches data into a 8-bit register and starts
  409         a sequence of events that sends serial data to the player */
  410  
  411      /* set a timer to clock the bits through; a total of 12 bits are clocked */
  412      m_laserdisc_bit_timer->adjust(LASERDISC_CLOCK * 10, (12 << 16) | data);
  413  
  414      /* it also clears bit 4 of the status (will be set when transmission is complete) */
  415      m_laserdisc_status &= ~0x10;
  416  }
  417  
  418  
  419  
  420  /*************************************
  421   *
  422   *  Laserdisc command/status interfacing
  423   *
  424   *************************************/
  425  
  426  TIMER_CALLBACK_MEMBER(gottlieb_state::laserdisc_philips_callback)
  427  {
  428      UINT32 newcode = m_laserdisc->get_field_code((param == 17) ? LASERDISC_CODE_LINE17 : LASERDISC_CODE_LINE18, TRUE);
  429  
  430      /* the PR8210 sends line 17/18 data on each frame; the laserdisc interface
  431         board receives notification and latches the most recent frame number */
  432  
  433      /* the logic detects a valid code when the top 4 bits are all 1s */
  434      if ((newcode & 0xf00000) == 0xf00000)
  435      {
  436          m_laserdisc_philips_code = newcode;
  437          m_laserdisc_status = (m_laserdisc_status & ~0x07) | ((newcode >> 16) & 7);
  438      }
  439  
  440      /* toggle to the next one */
  441      param = (param == 17) ? 18 : 17;
  442      m_laserdisc_philips_timer->adjust(machine().primary_screen->time_until_pos(param * 2), param);
  443  }
  444  
  445  
  446  TIMER_CALLBACK_MEMBER(gottlieb_state::laserdisc_bit_off_callback)
  447  {
  448      /* deassert the control line */
  449      m_laserdisc->control_w(CLEAR_LINE);
  450  }
  451  
  452  
  453  TIMER_CALLBACK_MEMBER(gottlieb_state::laserdisc_bit_callback)
  454  {
  455      UINT8 bitsleft = param >> 16;
  456      UINT8 data = param;
  457      attotime duration;
  458  
  459      /* assert the line and set a timer for deassertion */
  460      m_laserdisc->control_w(ASSERT_LINE);
  461      machine().scheduler().timer_set(LASERDISC_CLOCK * 10, timer_expired_delegate(FUNC(gottlieb_state::laserdisc_bit_off_callback),this));
  462  
  463      /* determine how long for the next command; there is a 555 timer with a
  464         variable resistor controlling the timing of the pulses. Nominally, the
  465         555 runs at 40083Hz, is divided by 10, and then is divided by 4 for a
  466         0 bit or 8 for a 1 bit. This gives 998usec per 0 pulse or 1996usec
  467         per 1 pulse. */
  468      duration = LASERDISC_CLOCK * (10 * ((data & 0x80) ? 8 : 4));
  469      data <<= 1;
  470  
  471      /* if we're not out of bits, set a timer for the next one; else set the ready bit */
  472      if (bitsleft-- != 0)
  473          m_laserdisc_bit_timer->adjust(duration, (bitsleft << 16) | data);
  474      else
  475          m_laserdisc_status |= 0x10;
  476  }
  477  
  478  
  479  
  480  /*************************************
  481   *
  482   *  Laserdisc sound channel
  483   *
  484   *************************************/
  485  
  486  inline void gottlieb_state::audio_end_state()
  487  {
  488      /* this occurs either when the "break in transmission" condition is hit (no zero crossings
  489         for 400usec) or when the entire audio buffer is full */
  490      m_laserdisc_status |= 0x08;
  491      m_laserdisc_audio_bit_count = 0;
  492      m_laserdisc_audio_address = 0;
  493      if (m_laserdisc_audio_address != 0)
  494          printf("Got %d bytes\n", m_laserdisc_audio_address);
  495  }
  496  
  497  
  498  void gottlieb_state::audio_process_clock(int logit)
  499  {
  500      /* clock the bit through the shift register */
  501      m_laserdisc_audio_bits >>= 1;
  502      if (m_laserdisc_zero_seen)
  503          m_laserdisc_audio_bits |= 0x80;
  504      m_laserdisc_zero_seen = 0;
  505  
  506      /* if the buffer ready flag is set, then we are looking for the magic $67 pattern */
  507      if (m_laserdisc_status & 0x08)
  508      {
  509          if (m_laserdisc_audio_bits == 0x67)
  510          {
  511              if (logit)
  512                  logerror(" -- got 0x67");
  513              m_laserdisc_status &= ~0x08;
  514              m_laserdisc_audio_address = 0;
  515          }
  516      }
  517  
  518      /* otherwise, we keep clocking bytes into the audio buffer */
  519      else
  520      {
  521          m_laserdisc_audio_bit_count++;
  522  
  523          /* if we collect 8 bits, add to the buffer */
  524          if (m_laserdisc_audio_bit_count == 8)
  525          {
  526              if (logit)
  527                  logerror(" -- got new byte %02X", m_laserdisc_audio_bits);
  528              m_laserdisc_audio_bit_count = 0;
  529              m_laserdisc_audio_buffer[m_laserdisc_audio_address++] = m_laserdisc_audio_bits;
  530  
  531              /* if we collect a full buffer, signal */
  532              if (m_laserdisc_audio_address >= AUDIORAM_SIZE)
  533                  audio_end_state();
  534          }
  535      }
  536  }
  537  
  538  
  539  void gottlieb_state::audio_handle_zero_crossing(attotime zerotime, int logit)
  540  {
  541      /* compute time from last clock */
  542      attotime deltaclock = zerotime - m_laserdisc_last_clock;
  543      if (logit)
  544          logerror(" -- zero @ %s (delta=%s)", zerotime.as_string(6), deltaclock.as_string(6));
  545  
  546      /* if we are within 150usec, we count as a bit */
  547      if (deltaclock < attotime::from_usec(150))
  548      {
  549          if (logit)
  550              logerror(" -- count as bit");
  551          m_laserdisc_zero_seen++;
  552          return;
  553      }
  554  
  555      /* if we are within 215usec, we count as a clock */
  556      else if (deltaclock < attotime::from_usec(215))
  557      {
  558          if (logit)
  559              logerror(" -- clock, bit=%d", m_laserdisc_zero_seen);
  560          m_laserdisc_last_clock = zerotime;
  561      }
  562  
  563      /* if we are outside of 215usec, we are technically a missing clock
  564         however, due to sampling errors, it is best to assume this is just
  565         an out-of-skew clock, so we correct it if we are within 75usec */
  566      else if (deltaclock < attotime::from_usec(275))
  567      {
  568          if (logit)
  569              logerror(" -- skewed clock, correcting");
  570          m_laserdisc_last_clock += attotime::from_usec(200);
  571      }
  572  
  573      /* we'll count anything more than 275us as an actual missing clock */
  574      else
  575      {
  576          if (logit)
  577              logerror(" -- missing clock");
  578          m_laserdisc_last_clock = zerotime;
  579      }
  580  
  581      /* we have a clock, process it */
  582      audio_process_clock(logit);
  583  }
  584  
  585  
  586  void gottlieb_state::laserdisc_audio_process(laserdisc_device &device, int samplerate, int samples, const INT16 *ch0, const INT16 *ch1)
  587  {
  588      int logit = LOG_AUDIO_DECODE && machine().input().code_pressed(KEYCODE_L);
  589      attotime time_per_sample = attotime::from_hz(samplerate);
  590      attotime curtime = m_laserdisc_last_time;
  591      int cursamp;
  592  
  593      if (logit)
  594          logerror("--------------\n");
  595  
  596      /* if no data, reset it all */
  597      if (ch1 == NULL)
  598      {
  599          m_laserdisc_last_time = curtime + time_per_sample * samples;
  600          return;
  601      }
  602  
  603      /* iterate over samples */
  604      for (cursamp = 0; cursamp < samples; cursamp++)
  605      {
  606          INT16 sample = ch1[cursamp];
  607  
  608          /* start by logging the current sample and time */
  609          if (logit)
  610              logerror("%s: %d", (curtime + time_per_sample + time_per_sample).as_string(6), sample);
  611  
  612          /* if we are past the "break in transmission" time, reset everything */
  613          if ((curtime - m_laserdisc_last_clock) > attotime::from_usec(400))
  614              audio_end_state();
  615  
  616          /* if this sample reinforces that the previous one ended a zero crossing, count it */
  617          if ((sample >= 256 && m_laserdisc_last_samples[1] >= 0 && m_laserdisc_last_samples[0] < 0) ||
  618              (sample <= -256 && m_laserdisc_last_samples[1] <= 0 && m_laserdisc_last_samples[0] > 0))
  619          {
  620              attotime zerotime;
  621              int fractime;
  622  
  623              /* compute the fractional position of the 0-crossing, between the two samples involved */
  624              fractime = (-m_laserdisc_last_samples[0] * 1000) / (m_laserdisc_last_samples[1] - m_laserdisc_last_samples[0]);
  625  
  626              /* use this fraction to compute the approximate actual zero crossing time */
  627              zerotime = curtime + time_per_sample * fractime / 1000;
  628  
  629              /* determine if this is a clock; if it is, process */
  630              audio_handle_zero_crossing(zerotime, logit);
  631          }
  632          if (logit)
  633              logerror(" \n");
  634  
  635          /* update our sample tracking and advance time */
  636          m_laserdisc_last_samples[0] = m_laserdisc_last_samples[1];
  637          m_laserdisc_last_samples[1] = sample;
  638          curtime += time_per_sample;
  639      }
  640  
  641      /* remember the last time */
  642      m_laserdisc_last_time = curtime;
  643  }
  644  
  645  
  646  
  647      /*************************************
  648      *
  649      *  Interrupt generation
  650      *
  651      *************************************/
  652  
  653  TIMER_CALLBACK_MEMBER(gottlieb_state::nmi_clear)
  654  {
  655      machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
  656  }
  657  
  658  
  659  INTERRUPT_GEN_MEMBER(gottlieb_state::gottlieb_interrupt)
  660  {
  661      /* assert the NMI and set a timer to clear it at the first visible line */
  662      device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
  663      machine().scheduler().timer_set(machine().primary_screen->time_until_pos(0), timer_expired_delegate(FUNC(gottlieb_state::nmi_clear),this));
  664  
  665      /* if we have a laserdisc, update it */
  666      if (m_laserdisc != NULL)
  667      {
  668          /* set the "disc ready" bit, which basically indicates whether or not we have a proper video frame */
  669          if (!m_laserdisc->video_active())
  670              m_laserdisc_status &= ~0x20;
  671          else
  672              m_laserdisc_status |= 0x20;
  673      }
  674  }
  675  
  676  
  677  
  678  /*************************************
  679   *
  680   *  Main CPU memory handlers
  681   *
  682   *************************************/
  683  
  684  WRITE8_MEMBER(gottlieb_state::gottlieb_sh_w)
  685  {
  686      if (m_r1_sound != NULL)
  687          m_r1_sound->write(space, offset, data);
  688      if (m_r2_sound != NULL)
  689          m_r2_sound->write(space, offset, data);
  690  }
  691  
  692  static ADDRESS_MAP_START( reactor_map, AS_PROGRAM, 8, gottlieb_state )
  693      ADDRESS_MAP_GLOBAL_MASK(0xffff)
  694      AM_RANGE(0x0000, 0x1fff) AM_RAM
  695      AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x0f00) AM_WRITEONLY AM_SHARE("spriteram")                           /* FRSEL */
  696      AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0x0c00) AM_RAM_WRITE(gottlieb_videoram_w) AM_SHARE("videoram")       /* BRSEL */
  697      AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(gottlieb_charram_w) AM_SHARE("charram")               /* BOJRSEL1 */
  698  /*  AM_RANGE(0x5000, 0x5fff) AM_WRITE_LEGACY() */                                                               /* BOJRSEL2 */
  699      AM_RANGE(0x6000, 0x601f) AM_MIRROR(0x0fe0) AM_WRITE(gottlieb_paletteram_w) AM_SHARE("paletteram")       /* COLSEL */
  700      AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0ff8) AM_WRITE(watchdog_reset_w)
  701      AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x0ff8) AM_WRITE(gottlieb_analog_reset_w)                        /* A1J2 interface */
  702      AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x0ff8) AM_WRITE(gottlieb_sh_w)                                  /* trackball H */
  703      AM_RANGE(0x7003, 0x7003) AM_MIRROR(0x0ff8) AM_WRITE(reactor_output_w)                               /* trackball V */
  704      AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0ff8) AM_READ_PORT("DSW")
  705      AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x0ff8) AM_READ_PORT("IN1")                                      /* buttons */
  706      AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x0ff8) AM_READ_PORT("IN2")                                      /* trackball H */
  707      AM_RANGE(0x7003, 0x7003) AM_MIRROR(0x0ff8) AM_READ_PORT("IN3")                                      /* trackball V */
  708      AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x0ff8) AM_READ_PORT("IN4")
  709      AM_RANGE(0x8000, 0xffff) AM_ROM
  710  ADDRESS_MAP_END
  711  
  712  
  713  static ADDRESS_MAP_START( gottlieb_map, AS_PROGRAM, 8, gottlieb_state )
  714      ADDRESS_MAP_GLOBAL_MASK(0xffff)
  715      AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram")
  716      AM_RANGE(0x1000, 0x1fff) AM_RAM AM_REGION("maincpu", 0x1000)    /* or ROM */
  717      AM_RANGE(0x2000, 0x2fff) AM_RAM AM_REGION("maincpu", 0x2000)    /* or ROM */
  718      AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0x0700) AM_WRITEONLY AM_SHARE("spriteram")                           /* FRSEL */
  719      AM_RANGE(0x3800, 0x3bff) AM_MIRROR(0x0400) AM_RAM_WRITE(gottlieb_videoram_w) AM_SHARE("videoram")       /* BRSEL */
  720      AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(gottlieb_charram_w) AM_SHARE("charram")               /* BOJRSEL1 */
  721      AM_RANGE(0x5000, 0x501f) AM_MIRROR(0x07e0) AM_WRITE(gottlieb_paletteram_w) AM_SHARE("paletteram")       /* COLSEL */
  722      AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x07f8) AM_WRITE(watchdog_reset_w)
  723      AM_RANGE(0x5801, 0x5801) AM_MIRROR(0x07f8) AM_WRITE(gottlieb_analog_reset_w)                        /* A1J2 interface */
  724      AM_RANGE(0x5802, 0x5802) AM_MIRROR(0x07f8) AM_WRITE(gottlieb_sh_w)                                  /* OP20-27 */
  725      AM_RANGE(0x5803, 0x5803) AM_MIRROR(0x07f8) AM_WRITE(general_output_w)                               /* OP30-37 */
  726  /*  AM_RANGE(0x5804, 0x5804) AM_MIRROR(0x07f8) AM_WRITE_LEGACY()*/                                              /* OP40-47 */
  727      AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x07f8) AM_READ_PORT("DSW")
  728      AM_RANGE(0x5801, 0x5801) AM_MIRROR(0x07f8) AM_READ_PORT("IN1")                                      /* IP10-17 */
  729      AM_RANGE(0x5802, 0x5802) AM_MIRROR(0x07f8) AM_READ_PORT("IN2")                                      /* trackball H */
  730      AM_RANGE(0x5803, 0x5803) AM_MIRROR(0x07f8) AM_READ_PORT("IN3")                                      /* trackball V */
  731      AM_RANGE(0x5804, 0x5804) AM_MIRROR(0x07f8) AM_READ_PORT("IN4")                                      /* IP40-47 */
  732      AM_RANGE(0x6000, 0xffff) AM_ROM
  733  ADDRESS_MAP_END
  734  
  735  
  736  
  737  /*************************************
  738   *
  739   *  Port definitions
  740   *
  741   *************************************/
  742  
  743  static INPUT_PORTS_START( reactor )
  744      PORT_START("DSW")
  745      PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("DSW:!2")
  746      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  747      PORT_DIPSETTING(    0x01, DEF_STR( On ) )
  748      PORT_DIPNAME( 0x02, 0x02, "Bounce Chambers Points" )        PORT_DIPLOCATION("DSW:!6")
  749      PORT_DIPSETTING(    0x00, "10" )
  750      PORT_DIPSETTING(    0x02, "15" )
  751      PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) )        PORT_DIPLOCATION("DSW:!4")
  752      PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  753      PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  754      PORT_DIPNAME( 0x08, 0x08, "Sound with Instructions" )       PORT_DIPLOCATION("DSW:!1")
  755      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  756      PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  757      PORT_DIPNAME( 0x10, 0x10, DEF_STR( Cabinet ) )          PORT_DIPLOCATION("DSW:!3")
  758      PORT_DIPSETTING(    0x10, DEF_STR( Upright ) )
  759      PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  760      PORT_DIPNAME( 0x20, 0x20, DEF_STR( Coinage ) )          PORT_DIPLOCATION("DSW:!5")
  761      PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
  762      PORT_DIPSETTING(    0x20, DEF_STR( 1C_1C ) )
  763      PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Bonus_Life ) )       PORT_DIPLOCATION("DSW:!7,!8")
  764      PORT_DIPSETTING(    0x00, "10000" )
  765      PORT_DIPSETTING(    0x40, "12000" )
  766      PORT_DIPSETTING(    0xc0, "15000" )
  767      PORT_DIPSETTING(    0x80, "20000" )
  768  
  769      PORT_START("IN1")
  770      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1)
  771      PORT_SERVICE_DIPLOC( 0x02, IP_ACTIVE_LOW, "SB1:8" )
  772      PORT_BIT ( 0xfc, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  773  
  774      PORT_START("IN2")   /* trackball H */
  775      PORT_BIT( 0xff, 0, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, gottlieb_state,analog_delta_r, "0TRACKX")
  776  
  777      PORT_START("IN3")   /* trackball V */
  778      PORT_BIT( 0xff, 0, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, gottlieb_state,analog_delta_r, "1TRACKY")
  779  
  780      PORT_START("IN4")
  781      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
  782      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  783      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 )
  784      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  785      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
  786      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
  787      PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  788  
  789      PORT_START("TRACKX")    /* trackball H */
  790      PORT_BIT( 0xff, 0, IPT_TRACKBALL_X ) PORT_SENSITIVITY(15) PORT_KEYDELTA(20)
  791  
  792      PORT_START("TRACKY")    /* trackball V */
  793      PORT_BIT( 0xff, 0, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(15) PORT_KEYDELTA(20)
  794  INPUT_PORTS_END
  795  
  796  
  797  static INPUT_PORTS_START( qbert )
  798      PORT_START("DSW")
  799      PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("DSW:!2")
  800      PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  801      PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  802      PORT_DIPNAME( 0x02, 0x02, "Kicker" )                PORT_DIPLOCATION("DSW:!6")
  803      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  804      PORT_DIPSETTING(    0x02, DEF_STR( On ) )
  805      PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) )          PORT_DIPLOCATION("DSW:!4")
  806      PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  807      PORT_DIPSETTING(    0x04, DEF_STR( Cocktail ) )
  808      PORT_DIPNAME( 0x08, 0x00, "Demo Mode (Unlim Lives, Start=Adv (Cheat)")  PORT_DIPLOCATION("DSW:!1")
  809      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  810      PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  811      PORT_DIPNAME( 0x10, 0x00, DEF_STR( Free_Play ) )        PORT_DIPLOCATION("DSW:!3")
  812      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  813      PORT_DIPSETTING(    0x10, DEF_STR( On ) )
  814      PORT_DIPUNUSED_DIPLOC( 0x20, 0x00, "DSW:!5" )
  815      PORT_DIPUNUSED_DIPLOC( 0x40, 0x00, "DSW:!7" )
  816      PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "DSW:!8" )
  817      /* 0x40 must be connected to the IP16 line */
  818  
  819      PORT_START("IN1")
  820      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
  821      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  822      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
  823      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
  824      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  825      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  826      PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
  827      PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1)
  828  
  829      PORT_START("IN2")   /* trackball H not used */
  830      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  831  
  832      PORT_START("IN3")   /* trackball V not used */
  833      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  834  
  835      PORT_START("IN4")      /* joystick - actually 4-Way but assigned as 8-Way to allow diagonal mapping */
  836      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
  837      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
  838      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
  839      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
  840      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
  841      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
  842      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
  843      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
  844  INPUT_PORTS_END
  845  
  846  
  847  static INPUT_PORTS_START( insector )
  848      PORT_START("DSW")
  849      PORT_DIPNAME( 0x01, 0x00, DEF_STR( Bonus_Life ) )       PORT_DIPLOCATION("DSW:!2")
  850      PORT_DIPSETTING(    0x00, "25k 75k and every 50k" )
  851      PORT_DIPSETTING(    0x01, "30k 90k and every 60k" )
  852      PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("DSW:!6")
  853      PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  854      PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  855      PORT_DIPNAME( 0x04, 0x00, "Demo Mode (Unlim Lives, Start 2=Adv. (Cheat)" )  PORT_DIPLOCATION("DSW:!4")
  856      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  857      PORT_DIPSETTING(    0x04, DEF_STR( On ) )
  858      PORT_DIPNAME( 0x08, 0x08, DEF_STR( Lives ) )            PORT_DIPLOCATION("DSW:!1")
  859      PORT_DIPSETTING(    0x08, "3" )
  860      PORT_DIPSETTING(    0x00, "5" )
  861      PORT_DIPNAME( 0x50, 0x00, DEF_STR( Coinage ) )          PORT_DIPLOCATION("DSW:!3,!7")
  862      PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
  863      PORT_DIPSETTING(    0x50, DEF_STR( 2C_2C ) )
  864      PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  865      PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
  866      PORT_DIPNAME( 0x20, 0x00, DEF_STR( Free_Play ) )        PORT_DIPLOCATION("DSW:!5")
  867      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  868      PORT_DIPSETTING(    0x20, DEF_STR( On ) )
  869      PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )          PORT_DIPLOCATION("DSW:!8")
  870      PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  871      PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
  872  
  873      PORT_START("IN1")
  874      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )           PORT_NAME("P1 Start/Button 1")
  875      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 )           PORT_NAME("P2 Start/Button 2")
  876      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
  877      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
  878      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
  879      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL
  880      PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
  881      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  882  
  883      PORT_START("IN2")   /* trackball H not used */
  884      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  885  
  886      PORT_START("IN3")   /* trackball V not used */
  887      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  888  
  889      PORT_START("IN4")
  890      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
  891      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
  892      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
  893      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
  894      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
  895      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
  896      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
  897      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
  898  INPUT_PORTS_END
  899  
  900  
  901  static INPUT_PORTS_START( tylz )
  902      PORT_START("DSW")
  903      PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("DSW:1")
  904      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  905      PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  906      PORT_DIPNAME( 0x11, 0x00, DEF_STR( Coinage ) )          PORT_DIPLOCATION("DSW:2,3")
  907      PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
  908      PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  909      PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
  910      PORT_DIPSETTING(    0x11, DEF_STR( Free_Play ) )
  911      PORT_DIPNAME( 0x04, 0x00, DEF_STR( Lives ) )            PORT_DIPLOCATION("DSW:4")
  912      PORT_DIPSETTING(    0x00, "3" )
  913      PORT_DIPSETTING(    0x04, "5" )
  914      PORT_DIPNAME( 0x22, 0x00, DEF_STR( Bonus_Life ) )       PORT_DIPLOCATION("DSW:5,6")
  915      PORT_DIPSETTING(    0x00, "15k 35k and every 20k" )
  916      PORT_DIPSETTING(    0x20, "15k 45k and every 30k" )
  917      PORT_DIPSETTING(    0x02, "20k 55k and every 35k" )
  918      PORT_DIPSETTING(    0x22, "20k 60k and every 40k" )
  919      PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("DSW:7,8")
  920      PORT_DIPSETTING(    0x00, DEF_STR( Easy ) )
  921      PORT_DIPSETTING(    0x40, "Normal Easy" )
  922      PORT_DIPSETTING(    0x80, "Normal Hard" )
  923      PORT_DIPSETTING(    0xc0, DEF_STR( Hard ) )
  924  
  925      PORT_START("IN1")   /* ? */
  926      PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
  927      PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1) // cycle through test options, hold to do test
  928      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 )
  929      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
  930      PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )    // probably nothing else here
  931  
  932      PORT_START("IN2")   /* trackball H not used */
  933      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  934  
  935      PORT_START("IN3")   /* trackball V (dial) */
  936      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  937  
  938      PORT_START("IN4")   /* ? */
  939      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
  940      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
  941      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
  942      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
  943      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  944      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
  945      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
  946      PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  947      PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  948      PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  949  INPUT_PORTS_END
  950  
  951  
  952  static INPUT_PORTS_START( argusg )
  953      PORT_START("DSW")
  954      PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("DSW:!2")
  955      PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  956      PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  957      PORT_DIPNAME( 0x22, 0x02, "Bonus Human Every" )         PORT_DIPLOCATION("DSW:!5,!6")
  958      PORT_DIPSETTING(    0x00, "15000" )
  959      PORT_DIPSETTING(    0x02, "20000" )
  960      PORT_DIPSETTING(    0x20, "25000" )
  961      PORT_DIPSETTING(    0x22, "30000" )
  962      PORT_DIPNAME( 0x14, 0x10, "Initial Humans" )            PORT_DIPLOCATION("DSW:!3,!4")
  963      PORT_DIPSETTING(    0x00, "4" )
  964      PORT_DIPSETTING(    0x10, "6" )
  965      PORT_DIPSETTING(    0x04, "8" )
  966      PORT_DIPSETTING(    0x14, "10" )
  967      PORT_DIPNAME( 0x08, 0x00, DEF_STR( Free_Play ) )        PORT_DIPLOCATION("DSW:!1")
  968      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  969      PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  970      PORT_DIPNAME( 0x40, 0x00, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("DSW:!7")
  971      PORT_DIPSETTING(    0x00, DEF_STR( Normal ) )
  972      PORT_DIPSETTING(    0x40, DEF_STR( Hard )  )
  973      PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "DSW:8")
  974  
  975      PORT_START("IN1")
  976      PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
  977      PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1)
  978      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
  979      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
  980      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  981      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  982      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  983      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  984  
  985      PORT_START("IN2")   /* trackball H */
  986      PORT_BIT( 0xff, 0, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, gottlieb_state,analog_delta_r, "0TRACKX")
  987  
  988      PORT_START("IN3")   /* trackball V */
  989      PORT_BIT( 0xff, 0, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, gottlieb_state,analog_delta_r, "1TRACKY")
  990  
  991  /* NOTE: Buttons are shared for both players; are mirrored to each side of the controller */
  992      PORT_START("IN4")
  993      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 )
  994      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 )           PORT_NAME("P1 Start/Button 1")
  995      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)PORT_NAME("P2 Start/Button 2")
  996      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
  997      PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  998  
  999      PORT_START("TRACKX")
 1000      PORT_BIT( 0xff, 0, IPT_TRACKBALL_X ) PORT_SENSITIVITY(15) PORT_KEYDELTA(20)
 1001  
 1002      PORT_START("TRACKY")
 1003      PORT_BIT( 0xff, 0, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(15) PORT_KEYDELTA(20)
 1004  INPUT_PORTS_END
 1005  
 1006  
 1007  static INPUT_PORTS_START( mplanets )
 1008      PORT_START("DSW")
 1009      PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("DSW:!2")
 1010      PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
 1011      PORT_DIPSETTING(    0x00, DEF_STR( On ) )
 1012      PORT_DIPNAME( 0x02, 0x00, DEF_STR( Bonus_Life ) )       PORT_DIPLOCATION("DSW:!6")
 1013      PORT_DIPSETTING(    0x00, "Every 10000" )
 1014      PORT_DIPSETTING(    0x02, "Every 12000" )
 1015      PORT_DIPNAME( 0x08, 0x00, "Allow Round Select" )        PORT_DIPLOCATION("DSW:!1")
 1016      PORT_DIPSETTING(    0x00, DEF_STR( No ) )
 1017      PORT_DIPSETTING(    0x08, DEF_STR( Yes ) )
 1018      PORT_DIPNAME( 0x14, 0x00, DEF_STR( Coinage ) )          PORT_DIPLOCATION("DSW:!3,!4")
 1019      PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
 1020      PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
 1021      PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
 1022      PORT_DIPSETTING(    0x14, DEF_STR( Free_Play ) )
 1023      PORT_DIPNAME( 0x20, 0x00, DEF_STR( Lives ) )            PORT_DIPLOCATION("DSW:!5")
 1024      PORT_DIPSETTING(    0x00, "3" )
 1025      PORT_DIPSETTING(    0x20, "5" )
 1026      PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("DSW:!7,!8")
 1027      PORT_DIPSETTING(    0x40, DEF_STR( Easy ) )
 1028      PORT_DIPSETTING(    0x00, DEF_STR( Standard ) )
 1029      PORT_DIPSETTING(    0x80, DEF_STR( Hard ) )
 1030      PORT_DIPSETTING(    0xc0, DEF_STR( Very_Hard ) )
 1031  
 1032      PORT_START("IN1")
 1033      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
 1034      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
 1035      PORT_BIT( 0x3c, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1036      PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1)
 1037      PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
 1038  
 1039      PORT_START("IN2")   /* trackball H not used */
 1040      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1041  
 1042      PORT_START("IN3")   /* trackball V (dial) */
 1043      PORT_BIT( 0xff, 0, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, gottlieb_state,analog_delta_r, "1TRACKY")
 1044  
 1045      PORT_START("IN4")
 1046      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
 1047      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
 1048      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
 1049      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
 1050      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
 1051      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
 1052      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
 1053      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 )
 1054  
 1055      PORT_START("TRACKY")
 1056      PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(5) PORT_KEYDELTA(10) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X)
 1057  INPUT_PORTS_END
 1058  
 1059  
 1060  static INPUT_PORTS_START( krull )
 1061      PORT_START("DSW")
 1062      PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("DSW:!2")
 1063      PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
 1064      PORT_DIPSETTING(    0x00, DEF_STR( On ) )
 1065      PORT_DIPNAME( 0x02, 0x00, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("DSW:!6")
 1066      PORT_DIPSETTING(    0x00, DEF_STR( Normal ) )
 1067      PORT_DIPSETTING(    0x02, DEF_STR( Hard ) )
 1068      PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) )            PORT_DIPLOCATION("DSW:!1")
 1069      PORT_DIPSETTING(    0x00, "3" )
 1070      PORT_DIPSETTING(    0x08, "5" )
 1071      PORT_DIPNAME( 0x14, 0x00, DEF_STR( Coinage ) )          PORT_DIPLOCATION("DSW:!3,!4")
 1072      PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
 1073      PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
 1074      PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
 1075      PORT_DIPSETTING(    0x14, DEF_STR( Free_Play ) )
 1076      PORT_DIPNAME( 0x20, 0x00, "Hexagon" )               PORT_DIPLOCATION("DSW:!5")
 1077      PORT_DIPSETTING(    0x00, "Roving" )
 1078      PORT_DIPSETTING(    0x20, "Stationary" )
 1079      PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Bonus_Life ) )       PORT_DIPLOCATION("DSW:!7,!8")
 1080      PORT_DIPSETTING(    0x40, "30k 60k and every 30k" )
 1081      PORT_DIPSETTING(    0x00, "30k 80k and every 50k" )
 1082      PORT_DIPSETTING(    0x80, "40k 90k and every 50k" )
 1083      PORT_DIPSETTING(    0xc0, "50k 125k and every 75k" )
 1084  
 1085      PORT_START("IN1")
 1086      PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
 1087      PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1)
 1088      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
 1089      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
 1090      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1091      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1092      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
 1093      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
 1094  
 1095      PORT_START("IN2")   /* trackball H not used */
 1096      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1097  
 1098      PORT_START("IN3")   /* trackball V not used */
 1099      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1100  
 1101      PORT_START("IN4")
 1102      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP ) PORT_8WAY
 1103      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_RIGHT ) PORT_8WAY
 1104      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN ) PORT_8WAY
 1105      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_LEFT ) PORT_8WAY
 1106      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP ) PORT_8WAY
 1107      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_RIGHT ) PORT_8WAY
 1108      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN ) PORT_8WAY
 1109      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_LEFT ) PORT_8WAY
 1110  INPUT_PORTS_END
 1111  
 1112  
 1113  static INPUT_PORTS_START( kngtmare )
 1114      PORT_START("DSW")
 1115      PORT_DIPNAME( 0x11, 0x11, DEF_STR( Coinage ) )          PORT_DIPLOCATION("DSW:!1,!5")
 1116      PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
 1117      PORT_DIPSETTING(    0x11, DEF_STR( 1C_1C ) )
 1118  //  PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
 1119      PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
 1120      PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "DSW:!2" )
 1121      PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DSW:!3" )
 1122      PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DSW:!4" )
 1123      PORT_DIPNAME( 0x20, 0x20, DEF_STR( Lives ) )            PORT_DIPLOCATION("DSW:!6")
 1124      PORT_DIPSETTING(    0x00, "3" )
 1125      PORT_DIPSETTING(    0x20, "5" )
 1126      PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DSW:!7" )
 1127      PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DSW:!8" )
 1128  
 1129      PORT_START("IN1")   /* ? */
 1130      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1131      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1132      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
 1133      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
 1134      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1135      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1136      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1137      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1138  
 1139      PORT_START("IN2")   /* trackball H not used */
 1140      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1141  
 1142      PORT_START("IN3")   /* trackball V not used */
 1143      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1144  
 1145      PORT_START("IN4")   /* ? */
 1146      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_RIGHT ) PORT_2WAY
 1147      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_LEFT ) PORT_2WAY
 1148      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_LEFT ) PORT_2WAY
 1149      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_RIGHT ) PORT_2WAY
 1150      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
 1151      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 )
 1152      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
 1153      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
 1154  INPUT_PORTS_END
 1155  
 1156  
 1157  static INPUT_PORTS_START( qbertqub )
 1158      PORT_START("DSW")
 1159      PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("DSW:!1")
 1160      PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
 1161      PORT_DIPSETTING(    0x00, DEF_STR( On ) )
 1162      PORT_DIPNAME( 0x35, 0x00, DEF_STR( Coinage ) )          PORT_DIPLOCATION("DSW:!2,!3,!4,!5")
 1163      PORT_DIPSETTING(    0x24, "A 2/1 B 2/1" )
 1164      PORT_DIPSETTING(    0x14, "A 1/1 B 4/1" )
 1165      PORT_DIPSETTING(    0x30, "A 1/1 B 3/1" )
 1166      PORT_DIPSETTING(    0x10, "A 1/1 B 2/1" )
 1167      PORT_DIPSETTING(    0x00, "A 1/1 B 1/1" )
 1168      PORT_DIPSETTING(    0x11, "A 2/3 B 2/1" )
 1169      PORT_DIPSETTING(    0x15, "A 1/2 B 3/1" )
 1170      PORT_DIPSETTING(    0x20, "A 1/2 B 2/1" )
 1171      PORT_DIPSETTING(    0x21, "A 1/2 B 1/1" )
 1172      PORT_DIPSETTING(    0x31, "A 1/2 B 1/5" )
 1173      PORT_DIPSETTING(    0x04, "A 1/3 B 2/1" )
 1174      PORT_DIPSETTING(    0x05, "A 1/3 B 1/1" )
 1175      PORT_DIPSETTING(    0x35, DEF_STR( Free_Play ) )
 1176  /* 0x25 DEF_STR( 2C_1C )
 1177     0x01 DEF_STR( 1C_1C )
 1178     0x34 DEF_STR( Free_Play ) */
 1179      PORT_DIPNAME( 0x02, 0x00, "Bonus Life at" )         PORT_DIPLOCATION("DSW:!6")
 1180      PORT_DIPSETTING(    0x00, "10000" )
 1181      PORT_DIPSETTING(    0x02, "15000" )
 1182      PORT_DIPNAME( 0x40, 0x00, "Additional Bonus Life Every" )   PORT_DIPLOCATION("DSW:!7")
 1183      PORT_DIPSETTING(    0x00, "20000" )
 1184      PORT_DIPSETTING(    0x40, "25000" )
 1185      PORT_DIPNAME( 0x80, 0x00, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("DSW:!8")
 1186      PORT_DIPSETTING(    0x00, DEF_STR( Normal ) )
 1187      PORT_DIPSETTING(    0x80, DEF_STR( Hard ) )
 1188  
 1189      PORT_START("IN1")      /* buttons */
 1190      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
 1191      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
 1192      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 )
 1193      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
 1194      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1195      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1196      PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
 1197      PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1)
 1198  
 1199      PORT_START("IN2")   /* trackball H not used */
 1200      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1201  
 1202      PORT_START("IN3")   /* trackball V not used */
 1203      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1204  
 1205      PORT_START("IN4")      /* joystick - actually 4-Way but assigned as 8-Way to allow diagonal mapping */
 1206      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
 1207      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
 1208      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
 1209      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
 1210      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1211      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1212      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1213      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1214  INPUT_PORTS_END
 1215  
 1216  
 1217  static INPUT_PORTS_START( curvebal )
 1218      PORT_START("DSW")
 1219      PORT_DIPNAME( 0x08, 0x00, "2 Players Game" )            PORT_DIPLOCATION("DSW:!1")
 1220      PORT_DIPSETTING(    0x08, "1 Credit" )
 1221      PORT_DIPSETTING(    0x00, "2 Credits" )
 1222      PORT_DIPNAME( 0x11, 0x00, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("DSW:!2,!3")
 1223      PORT_DIPSETTING(    0x00, DEF_STR( Easy ) )
 1224      PORT_DIPSETTING(    0x10, DEF_STR( Medium ) )
 1225      PORT_DIPSETTING(    0x01, DEF_STR( Hard ) )
 1226      PORT_DIPSETTING(    0x11, DEF_STR( Very_Hard ) )
 1227      PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("DSW:!4")
 1228      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
 1229      PORT_DIPSETTING(    0x04, DEF_STR( On ) )
 1230      PORT_DIPNAME( 0x20, 0x00, "Coins" )                 PORT_DIPLOCATION("DSW:!5")
 1231      PORT_DIPSETTING(    0x00, DEF_STR( Normal ) )
 1232      PORT_DIPSETTING(    0x20, DEF_STR( French ) )
 1233      PORT_DIPNAME( 0xc2, 0x00, DEF_STR( Coinage ) )          PORT_DIPLOCATION("DSW:!6,!7,!8")
 1234      PORT_DIPSETTING(    0x42, "A 3/1 B 1/2" )   PORT_CONDITION("DSW",0x20,EQUALS,0x20)
 1235      PORT_DIPSETTING(    0x42, "A 4/1 B 1/1" )   PORT_CONDITION("DSW",0x20,EQUALS,0x00)
 1236      PORT_DIPSETTING(    0x82, "A 1/5 B 1/2" )   PORT_CONDITION("DSW",0x20,EQUALS,0x20)
 1237      PORT_DIPSETTING(    0x82, "A 3/1 B 1/1" )   PORT_CONDITION("DSW",0x20,EQUALS,0x00)
 1238      PORT_DIPSETTING(    0x02, "A 2/1 B 2/3" )   PORT_CONDITION("DSW",0x20,EQUALS,0x20)
 1239      PORT_DIPSETTING(    0x02, "A 2/1 B 1/1" )   PORT_CONDITION("DSW",0x20,EQUALS,0x00)
 1240      PORT_DIPSETTING(    0xc0, "A 2/1 B 2/1" )
 1241      PORT_DIPSETTING(    0x80, "A 1/1 B 1/2" )   PORT_CONDITION("DSW",0x20,EQUALS,0x20)
 1242      PORT_DIPSETTING(    0x80, "A 2/1 B 1/2" )   PORT_CONDITION("DSW",0x20,EQUALS,0x00)
 1243      PORT_DIPSETTING(    0x40, "A 1/1 B 1/3" )   PORT_CONDITION("DSW",0x20,EQUALS,0x20)
 1244      PORT_DIPSETTING(    0x40, "A 2/1 B 1/3" )   PORT_CONDITION("DSW",0x20,EQUALS,0x00)
 1245      PORT_DIPSETTING(    0x00, "A 1/1 B 1/1" )
 1246      PORT_DIPSETTING(    0xc2, DEF_STR( Free_Play ) )
 1247  
 1248      PORT_START("IN1")
 1249      PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
 1250      PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1)
 1251      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
 1252      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
 1253      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1254      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1255      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1256      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1257  
 1258      PORT_START("IN2")   /* trackball H not used */
 1259      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1260  
 1261      PORT_START("IN3")   /* trackball V not used */
 1262      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1263  
 1264      PORT_START("IN4")
 1265      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1266      PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Swing") PORT_PLAYER(1)
 1267      PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Pitch Left") PORT_PLAYER(2)
 1268      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1269      PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Pitch Right") PORT_PLAYER(2)
 1270      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1271      PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Bunt") PORT_PLAYER(1)
 1272      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1273  INPUT_PORTS_END
 1274  
 1275  
 1276  static INPUT_PORTS_START( screwloo )
 1277      PORT_START("DSW")
 1278      PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("DSW:!1")
 1279      PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
 1280      PORT_DIPSETTING(    0x00, DEF_STR( On ) )
 1281      PORT_DIPNAME( 0x02, 0x00, "Demo mode" )             PORT_DIPLOCATION("DSW:!2")
 1282      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
 1283      PORT_DIPSETTING(    0x02, DEF_STR( On ) )
 1284      PORT_DIPNAME( 0x04, 0x00, "1st Bonus Atom at" )         PORT_DIPLOCATION("DSW:!3")
 1285      PORT_DIPSETTING(    0x00, "5000" )
 1286      PORT_DIPSETTING(    0x04, "20000" )
 1287      PORT_DIPNAME( 0x08, 0x00, DEF_STR( Free_Play ) )        PORT_DIPLOCATION("DSW:!4")
 1288      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
 1289      PORT_DIPSETTING(    0x08, DEF_STR( On ) )
 1290      PORT_DIPNAME( 0x50, 0x40, DEF_STR( Coinage ) )          PORT_DIPLOCATION("DSW:!5,!6")
 1291      PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
 1292      PORT_DIPSETTING(    0x10, DEF_STR( 2C_2C ) )
 1293      PORT_DIPSETTING(    0x40, DEF_STR( 1C_1C ) )
 1294      PORT_DIPSETTING(    0x50, DEF_STR( 1C_2C ) )
 1295      PORT_DIPNAME( 0x20, 0x00, "1st Bonus Hand at" )         PORT_DIPLOCATION("DSW:!7")
 1296      PORT_DIPSETTING(    0x00, "25000" )
 1297      PORT_DIPSETTING(    0x20, "50000" )
 1298      PORT_DIPNAME( 0x80, 0x00, "Hands" )                 PORT_DIPLOCATION("DSW:!8")
 1299      PORT_DIPSETTING(    0x00, "3" )
 1300      PORT_DIPSETTING(    0x80, "5" )
 1301  
 1302      PORT_START("IN1")
 1303      PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
 1304      PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1)
 1305      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
 1306      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
 1307      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_RIGHT ) PORT_8WAY
 1308      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_LEFT ) PORT_8WAY
 1309      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN ) PORT_8WAY
 1310      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP ) PORT_8WAY
 1311  
 1312      PORT_START("IN2")   /* trackball H not used */
 1313      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1314  
 1315      PORT_START("IN3")   /* trackball V not used */
 1316      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1317  
 1318      PORT_START("IN4")
 1319      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_RIGHT ) PORT_8WAY
 1320      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_LEFT ) PORT_8WAY
 1321      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN ) PORT_8WAY
 1322      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP ) PORT_8WAY
 1323      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Start 2P") PORT_PLAYER(1)
 1324      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Start 1P") PORT_PLAYER(1)
 1325      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1326      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1327  INPUT_PORTS_END
 1328  
 1329  
 1330  static INPUT_PORTS_START( mach3 )
 1331      PORT_START("DSW")
 1332      /* TODO: values are different for 5 lives */
 1333      PORT_DIPNAME( 0x09, 0x08, DEF_STR( Coinage ) )          PORT_DIPLOCATION("DSW:!1,!2")
 1334      PORT_DIPSETTING(    0x09, DEF_STR( 4C_1C ) )
 1335      PORT_DIPSETTING(    0x01, DEF_STR( 3C_1C ) )
 1336      PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
 1337      PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
 1338      PORT_DIPNAME( 0x02, 0x00, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("DSW:!6")
 1339      PORT_DIPSETTING(    0x00, DEF_STR( Normal ) )
 1340      PORT_DIPSETTING(    0x02, DEF_STR( Hard ) )
 1341      PORT_DIPNAME( 0x10, 0x00, DEF_STR( Lives ) )            PORT_DIPLOCATION("DSW:!3")
 1342      PORT_DIPSETTING(    0x00, "3" )
 1343      PORT_DIPSETTING(    0x10, "5" )
 1344      PORT_DIPNAME( 0x24, 0x00, DEF_STR( Bonus_Life ) )       PORT_DIPLOCATION("DSW:!4,!5")
 1345      PORT_DIPSETTING(    0x00, "10000 10000" )
 1346      PORT_DIPSETTING(    0x04, "10000 20000" )
 1347      PORT_DIPSETTING(    0x20, "10000 40000" )
 1348      PORT_DIPSETTING(    0x24, "20000 60000" )
 1349      PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("DSW:!7")
 1350      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
 1351      PORT_DIPSETTING(    0x40, DEF_STR( On ) )
 1352      PORT_DIPNAME( 0x80, 0x00, "Infinite Lives (Cheat)")     PORT_DIPLOCATION("DSW:!8")
 1353      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
 1354      PORT_DIPSETTING(    0x80, DEF_STR( On ) )
 1355  
 1356      PORT_START("IN1")
 1357      PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
 1358      PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1)
 1359      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
 1360      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
 1361      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1362      PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
 1363      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
 1364      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
 1365  
 1366      PORT_START("IN2")   /* trackball H not used */
 1367      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1368  
 1369      PORT_START("IN3")   /* trackball V not used */
 1370      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1371  
 1372      PORT_START("IN4")
 1373      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
 1374      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
 1375      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
 1376      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
 1377      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1378      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 )
 1379      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 )
 1380      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1381  INPUT_PORTS_END
 1382  
 1383  static INPUT_PORTS_START( cobram3 )
 1384      PORT_START("DSW")
 1385      PORT_DIPNAME( 0x01, 0x01, DEF_STR( Coinage ) )          PORT_DIPLOCATION("DSW:!2")
 1386      PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
 1387      PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
 1388      PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("DSW:!6")
 1389      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
 1390      PORT_DIPSETTING(    0x02, DEF_STR( On ) )
 1391      PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) )            PORT_DIPLOCATION("DSW:!1")
 1392      PORT_DIPSETTING(    0x00, "3" )
 1393      PORT_DIPSETTING(    0x08, "5" )
 1394      PORT_DIPNAME( 0x14, 0x00, "1st Bonus / 2nd Bonus" )     PORT_DIPLOCATION("DSW:!3,!4")
 1395      PORT_DIPSETTING(    0x00, "20000 / None" )
 1396      PORT_DIPSETTING(    0x10, "15000 / 30000" )
 1397      PORT_DIPSETTING(    0x04, "20000 / 40000" )
 1398      PORT_DIPSETTING(    0x14, "30000 / 50000" )
 1399      PORT_DIPNAME( 0x20, 0x00, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("DSW:!5")
 1400      PORT_DIPSETTING(    0x00, DEF_STR( Normal ) )
 1401      PORT_DIPSETTING(    0x20, DEF_STR( Difficult ) )
 1402      PORT_DIPNAME( 0x40, 0x00, "Random 1st Level")           PORT_DIPLOCATION("DSW:!7")
 1403      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
 1404      PORT_DIPSETTING(    0x40, DEF_STR( On ) )
 1405      PORT_DIPNAME( 0x80, 0x00, "Self Test")              PORT_DIPLOCATION("DSW:!8")
 1406      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
 1407      PORT_DIPSETTING(    0x80, DEF_STR( On ) )
 1408  
 1409      PORT_START("IN1")
 1410      PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
 1411      PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1)
 1412      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
 1413      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
 1414      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1415      PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
 1416      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
 1417      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
 1418  
 1419      PORT_START("IN2")   /* trackball H not used */
 1420      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1421  
 1422      PORT_START("IN3")   /* trackball V not used */
 1423      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1424  
 1425      PORT_START("IN4")
 1426      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
 1427      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
 1428      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
 1429      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
 1430      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1431      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 )
 1432      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 )
 1433      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1434  INPUT_PORTS_END
 1435  
 1436  
 1437  static INPUT_PORTS_START( usvsthem )
 1438      PORT_START("DSW")
 1439      /* TODO: values are different for 5 lives */
 1440      PORT_DIPNAME( 0x09, 0x00, DEF_STR( Coinage ) )          PORT_DIPLOCATION("DSW:!1,!2")
 1441      PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
 1442      PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
 1443      PORT_DIPSETTING(    0x01, DEF_STR( Free_Play ) )
 1444  /*  PORT_DIPSETTING(    0x09, DEF_STR( Free_Play ) ) */
 1445      PORT_DIPUNUSED_DIPLOC( 0x02, 0x00, "DSW:!3" )
 1446      PORT_DIPNAME( 0x04, 0x00, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("DSW:!4")
 1447      PORT_DIPSETTING(    0x00, DEF_STR( Normal ) )
 1448      PORT_DIPSETTING(    0x04, DEF_STR( Hard ) )
 1449      PORT_DIPUNUSED_DIPLOC( 0x10, 0x00, "DSW:!5" )
 1450      PORT_DIPUNUSED_DIPLOC( 0x20, 0x00, "DSW:!6" )
 1451      PORT_DIPUNUSED_DIPLOC( 0x40, 0x00, "DSW:!7" )
 1452      PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "DSW:!8" )
 1453  
 1454      PORT_START("IN1")
 1455      PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
 1456      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1)
 1457      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
 1458      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
 1459      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1460      PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
 1461      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
 1462      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
 1463  
 1464      PORT_START("IN2")   /* trackball H not used */
 1465      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1466  
 1467      PORT_START("IN3")   /* trackball V not used */
 1468      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1469  
 1470      PORT_START("IN4")
 1471      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
 1472      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
 1473      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
 1474      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
 1475      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
 1476      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 )
 1477      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 )
 1478      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1479  INPUT_PORTS_END
 1480  
 1481  
 1482  static INPUT_PORTS_START( 3stooges )
 1483      PORT_START("DSW")
 1484      PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("DSW:!2")
 1485      PORT_DIPSETTING (   0x01, DEF_STR( Off ) )
 1486      PORT_DIPSETTING (   0x00, DEF_STR( On ) )
 1487      PORT_DIPNAME( 0x02, 0x00, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("DSW:!6")
 1488      PORT_DIPSETTING (   0x00, DEF_STR( Normal ) )
 1489      PORT_DIPSETTING (   0x02, DEF_STR( Hard ) )
 1490      PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) )            PORT_DIPLOCATION("DSW:!1")
 1491      PORT_DIPSETTING (   0x00, "3" )
 1492      PORT_DIPSETTING (   0x08, "5" )
 1493      PORT_DIPNAME( 0x14, 0x00, DEF_STR( Coinage ) )          PORT_DIPLOCATION("DSW:!3,!4")
 1494      PORT_DIPSETTING (   0x04, DEF_STR( 2C_1C ) )
 1495      PORT_DIPSETTING (   0x00, DEF_STR( 1C_1C ) )
 1496      PORT_DIPSETTING (   0x10, DEF_STR( 1C_2C ) )
 1497      PORT_DIPSETTING (   0x14, DEF_STR( Free_Play ) )
 1498      PORT_DIPUNUSED_DIPLOC( 0x20, 0x00, "DSW:5" )
 1499      PORT_DIPNAME( 0xc0, 0xc0, "1st Bonus Life at" )         PORT_DIPLOCATION("DSW:!7,!8")
 1500      PORT_DIPSETTING (   0xc0, "10k 20k and every 10k")
 1501      PORT_DIPSETTING (   0x00, "20k 40k and every 20k")
 1502      PORT_DIPSETTING (   0x40, "10k 30k and every 20k")
 1503      PORT_DIPSETTING (   0x80, "20k 30k and every 10k")
 1504  
 1505      PORT_START("IN1")
 1506      PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
 1507      PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1)
 1508      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 )
 1509      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
 1510      PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_TILT )
 1511      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1512      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1513      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1514  
 1515      PORT_START("IN2")   /* trackball H not used */
 1516      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1517  
 1518      PORT_START("IN3")   /* trackball V not used */
 1519      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1520  
 1521      PORT_START("IN4")   /* joystick inputs */
 1522      PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, gottlieb_state,stooges_joystick_r, NULL)
 1523      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
 1524      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
 1525      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(3)
 1526      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1527  
 1528      PORT_START("P1JOY")
 1529      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
 1530      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
 1531      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
 1532      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
 1533  
 1534      PORT_START("P2JOY")
 1535      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
 1536      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
 1537      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
 1538      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
 1539  
 1540      PORT_START("P3JOY")
 1541      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
 1542      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
 1543      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
 1544      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
 1545  INPUT_PORTS_END
 1546  
 1547  
 1548  static INPUT_PORTS_START( vidvince )
 1549      PORT_START("DSW")
 1550      PORT_DIPNAME( 0x09, 0x01, DEF_STR( Coinage ) )          PORT_DIPLOCATION("DSW:!1,!2")
 1551      PORT_DIPSETTING(    0x09, DEF_STR( 3C_1C ) )
 1552      PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
 1553      PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
 1554      PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
 1555      PORT_DIPNAME( 0x02, 0x00, DEF_STR( Lives ) )            PORT_DIPLOCATION("DSW:!6")
 1556      PORT_DIPSETTING(    0x00, "3" )
 1557      PORT_DIPSETTING(    0x02, "5" )
 1558      PORT_DIPNAME( 0x14, 0x04, DEF_STR( Bonus_Life ) )       PORT_DIPLOCATION("DSW:!3,!4")
 1559      PORT_DIPSETTING(    0x00, "10000" )
 1560      PORT_DIPSETTING(    0x04, "20000" )
 1561      PORT_DIPSETTING(    0x10, "30000" )
 1562      PORT_DIPSETTING(    0x14, "40000" )
 1563      PORT_DIPNAME( 0x20, 0x00, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("DSW:!5")
 1564      PORT_DIPSETTING(    0x20, DEF_STR( Hard )  )
 1565      PORT_DIPSETTING(    0x00, DEF_STR( Normal ) )
 1566      PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("DSW:!7")
 1567      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
 1568      PORT_DIPSETTING(    0x40, DEF_STR( On ) )
 1569      PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "DSW:!8" )
 1570  
 1571      PORT_START("IN1")   /* ? */
 1572      PORT_SERVICE( 0x01, IP_ACTIVE_HIGH )
 1573      PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1) // cycle through test options, hold to do test
 1574      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 )
 1575      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
 1576      PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_TILT )
 1577      PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
 1578      PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
 1579      PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
 1580  
 1581      PORT_START("IN2")   /* trackball H not used */
 1582      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1583  
 1584      PORT_START("IN3")   /* trackball V not used */
 1585      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1586  
 1587      PORT_START("IN4")   /* ? */
 1588      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
 1589      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
 1590      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
 1591      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
 1592      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1593      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 )
 1594      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 )
 1595      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1596  INPUT_PORTS_END
 1597  
 1598  
 1599  static INPUT_PORTS_START( wizwarz )
 1600  /* TODO: Bonus Life and Bonus Mine values are dependent upon each other */
 1601      PORT_START("DSW")
 1602      PORT_DIPNAME( 0x09, 0x00, "Bonuses" )               PORT_DIPLOCATION("DSW:!1,!2")
 1603      PORT_DIPSETTING(    0x00, "Life 20k,50k every 30k / Mine 10k,25k every 15k" )
 1604      PORT_DIPSETTING(    0x08, "Life 20k,55k every 35k / Mine 10k,30k every 20k" )
 1605      PORT_DIPSETTING(    0x01, "Life 25k,60k every 35k / Mine 15k,35k every 20k" )
 1606      PORT_DIPSETTING(    0x09, "Life 30k,40k every 40k / Mine 15k,40k every 25k" )
 1607      PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("DSW:!6")
 1608      PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
 1609      PORT_DIPSETTING(    0x00, DEF_STR( On ) )
 1610      PORT_DIPNAME( 0x04, 0x00, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("DSW:!4")
 1611      PORT_DIPSETTING(    0x00, DEF_STR( Normal ) )
 1612      PORT_DIPSETTING(    0x04, DEF_STR( Hard ) )
 1613      PORT_DIPUNUSED_DIPLOC( 0x10, 0x00, "DSW:!3" )
 1614      PORT_DIPNAME( 0x20, 0x00, DEF_STR( Lives ) )            PORT_DIPLOCATION("DSW:!5")
 1615      PORT_DIPSETTING(    0x00, "3" )
 1616      PORT_DIPSETTING(    0x20, "5" )
 1617      PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coinage ) )          PORT_DIPLOCATION("DSW:!7,!8")
 1618      PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
 1619      PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
 1620      PORT_DIPSETTING(    0x40, DEF_STR( 1C_2C ) )
 1621      PORT_DIPSETTING(    0xc0, DEF_STR( Free_Play ) )
 1622  
 1623      PORT_START("IN1")   /* ? */
 1624      PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
 1625      PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1) // cycle through test options, hold to do test
 1626      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
 1627      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
 1628      PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
 1629  
 1630      PORT_START("IN2")   /* trackball H not used */
 1631      PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
 1632  
 1633      PORT_START("IN3")   /* trackball V is a dial input */
 1634      PORT_BIT( 0xff, 0, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, gottlieb_state,analog_delta_r, "1TRACKY")
 1635  
 1636      PORT_START("IN4")   /* ? */
 1637      PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
 1638      PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
 1639      PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
 1640      PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
 1641      PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
 1642      PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 )
 1643      PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
 1644      PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
 1645  
 1646      PORT_START("TRACKY")
 1647      PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(15) PORT_KEYDELTA(15) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X)
 1648  INPUT_PORTS_END
 1649  
 1650  
 1651  
 1652  /*************************************
 1653   *
 1654   *  Graphics definitions
 1655   *
 1656   *************************************/
 1657  
 1658  /* the games can store char gfx data in either a 4k RAM area (128 chars), or */
 1659  /* a 8k ROM area (256 chars). */
 1660  static const gfx_layout bg_ram_layout =
 1661  {
 1662      8,8,
 1663      128,
 1664      4,
 1665      { STEP4(0,1) },
 1666      { STEP8(0,4) },
 1667      { STEP8(0,32) },
 1668      32*8
 1669  };
 1670  
 1671  static const gfx_layout bg_rom_layout =
 1672  {
 1673      8,8,
 1674      256,
 1675      4,
 1676      { STEP4(0,1) },
 1677      { STEP8(0,4) },
 1678      { STEP8(0,32) },
 1679      32*8
 1680  };
 1681  
 1682  static const gfx_layout fg_layout =
 1683  {
 1684      16,16,
 1685      RGN_FRAC(1,4),
 1686      4,
 1687      { RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) },
 1688      { STEP16(0,1) },
 1689      { STEP16(0,16) },
 1690      32*8
 1691  };
 1692  
 1693  static GFXDECODE_START( gfxdecode )
 1694      GFXDECODE_ENTRY( NULL,      0x4000, bg_ram_layout, 0, 1 )   /* the game dynamically modifies this */
 1695      GFXDECODE_ENTRY( "bgtiles", 0x0000, bg_rom_layout, 0, 1 )
 1696      GFXDECODE_ENTRY( "sprites", 0x0000, fg_layout,     0, 1 )
 1697  GFXDECODE_END
 1698  
 1699  
 1700  
 1701  /*************************************
 1702   *
 1703   *  Core machine drivers
 1704   *
 1705   *************************************/
 1706  
 1707  static MACHINE_CONFIG_START( gottlieb_core, gottlieb_state )
 1708  
 1709      /* basic machine hardware */
 1710      MCFG_CPU_ADD("maincpu", I8088, CPU_CLOCK/3)
 1711      MCFG_CPU_PROGRAM_MAP(gottlieb_map)
 1712      MCFG_CPU_VBLANK_INT_DRIVER("screen", gottlieb_state,  gottlieb_interrupt)
 1713  
 1714      MCFG_NVRAM_ADD_1FILL("nvram")
 1715      MCFG_WATCHDOG_VBLANK_INIT(16)
 1716  
 1717      /* video hardware */
 1718      MCFG_SCREEN_ADD("screen", RASTER)
 1719      MCFG_SCREEN_RAW_PARAMS(SYSTEM_CLOCK/4, GOTTLIEB_VIDEO_HCOUNT, 0, GOTTLIEB_VIDEO_HBLANK, GOTTLIEB_VIDEO_VCOUNT, 0, GOTTLIEB_VIDEO_VBLANK)
 1720      MCFG_SCREEN_UPDATE_DRIVER(gottlieb_state, screen_update_gottlieb)
 1721  
 1722      MCFG_GFXDECODE(gfxdecode)
 1723      MCFG_PALETTE_LENGTH(16)
 1724  
 1725      // basic speaker configuration
 1726      MCFG_SPEAKER_STANDARD_MONO("mono")
 1727  MACHINE_CONFIG_END
 1728  
 1729  
 1730  static MACHINE_CONFIG_DERIVED( gottlieb1, gottlieb_core )
 1731      MCFG_GOTTLIEB_SOUND_R1_ADD("r1sound")
 1732      MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
 1733  MACHINE_CONFIG_END
 1734  
 1735  
 1736  static MACHINE_CONFIG_DERIVED( gottlieb2, gottlieb_core )
 1737      MCFG_GOTTLIEB_SOUND_R2_ADD("r2sound")
 1738      MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
 1739  MACHINE_CONFIG_END
 1740  
 1741  
 1742  static MACHINE_CONFIG_DERIVED( g2laser, gottlieb_core )
 1743      MCFG_GOTTLIEB_SOUND_R2_ADD("r2sound")
 1744      MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
 1745  
 1746      MCFG_LASERDISC_PR8210_ADD("laserdisc")
 1747      MCFG_LASERDISC_AUDIO(laserdisc_audio_delegate(FUNC(gottlieb_state::laserdisc_audio_process), (gottlieb_state*)owner))
 1748      MCFG_LASERDISC_OVERLAY_DRIVER(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, gottlieb_state, screen_update_gottlieb)
 1749      MCFG_LASERDISC_OVERLAY_CLIP(0, GOTTLIEB_VIDEO_HBLANK-1, 0, GOTTLIEB_VIDEO_VBLANK-8)
 1750      MCFG_SOUND_ROUTE(0, "mono", 1.0)
 1751      /* right channel is processed as data */
 1752  
 1753      MCFG_DEVICE_REMOVE("screen")
 1754      MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
 1755  MACHINE_CONFIG_END
 1756  
 1757  
 1758  
 1759  /*************************************
 1760   *
 1761   *  Specific machine drivers
 1762   *
 1763   *************************************/
 1764  
 1765  #if USE_FAKE_VOTRAX
 1766  
 1767  static MACHINE_CONFIG_DERIVED( reactor, gottlieb1 )
 1768  
 1769      /* basic machine hardware */
 1770      MCFG_CPU_MODIFY("maincpu")
 1771      MCFG_CPU_PROGRAM_MAP(reactor_map)
 1772  
 1773      MCFG_DEVICE_REMOVE("nvram")
 1774  
 1775      /* sound hardware */
 1776      MCFG_FRAGMENT_ADD(reactor_samples)
 1777  MACHINE_CONFIG_END
 1778  
 1779  
 1780  static MACHINE_CONFIG_DERIVED( qbert, gottlieb1 )
 1781  
 1782      /* sound hardware */
 1783      MCFG_FRAGMENT_ADD(qbert_knocker)
 1784      MCFG_FRAGMENT_ADD(qbert_samples)
 1785  MACHINE_CONFIG_END
 1786  
 1787  
 1788  static MACHINE_CONFIG_DERIVED( tylz, gottlieb1 )
 1789  
 1790      /* sound hardware */
 1791      MCFG_FRAGMENT_ADD(qbert_samples)
 1792  MACHINE_CONFIG_END
 1793  
 1794  
 1795  #else
 1796  
 1797  
 1798  static MACHINE_CONFIG_DERIVED( gottlieb1_votrax, gottlieb_core )
 1799      MCFG_GOTTLIEB_SOUND_R1_ADD_VOTRAX("r1sound")
 1800      MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
 1801  MACHINE_CONFIG_END
 1802  
 1803  
 1804  static MACHINE_CONFIG_DERIVED( reactor, gottlieb1_votrax )
 1805  
 1806      /* basic machine hardware */
 1807      MCFG_CPU_MODIFY("maincpu")
 1808      MCFG_CPU_PROGRAM_MAP(reactor_map)
 1809  
 1810      MCFG_DEVICE_REMOVE("nvram")
 1811  MACHINE_CONFIG_END
 1812  
 1813  
 1814  static MACHINE_CONFIG_DERIVED( qbert, gottlieb1_votrax )
 1815  
 1816      /* sound hardware */
 1817      MCFG_FRAGMENT_ADD(qbert_knocker)
 1818  MACHINE_CONFIG_END
 1819  
 1820  
 1821  static MACHINE_CONFIG_DERIVED( tylz, gottlieb1_votrax )
 1822  MACHINE_CONFIG_END
 1823  
 1824  
 1825  #endif
 1826  
 1827  
 1828  static MACHINE_CONFIG_DERIVED( screwloo, gottlieb2 )
 1829  
 1830      MCFG_VIDEO_START_OVERRIDE(gottlieb_state,screwloo)
 1831  MACHINE_CONFIG_END
 1832  
 1833  static MACHINE_CONFIG_DERIVED( cobram3, gottlieb_core )
 1834      MCFG_GOTTLIEB_SOUND_R2_ADD_COBRAM3("r2sound")
 1835      MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
 1836  
 1837      MCFG_LASERDISC_PR8210_ADD("laserdisc")
 1838      MCFG_LASERDISC_AUDIO(laserdisc_audio_delegate(FUNC(gottlieb_state::laserdisc_audio_process), (gottlieb_state*)owner))
 1839      MCFG_LASERDISC_OVERLAY_DRIVER(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, gottlieb_state, screen_update_gottlieb)
 1840      MCFG_LASERDISC_OVERLAY_CLIP(0, GOTTLIEB_VIDEO_HBLANK-1, 0, GOTTLIEB_VIDEO_VBLANK-8)
 1841      MCFG_SOUND_ROUTE(0, "mono", 1.0)
 1842      /* right channel is processed as data */
 1843  
 1844      MCFG_DEVICE_REMOVE("screen")
 1845      MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
 1846  
 1847      /* sound hardware */
 1848      MCFG_SOUND_MODIFY("r2sound:dac")
 1849      MCFG_SOUND_ROUTES_RESET()
 1850      MCFG_SOUND_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 1.00)
 1851  MACHINE_CONFIG_END
 1852  
 1853  
 1854  /*************************************
 1855   *
 1856   *  ROM definitions
 1857   *
 1858   *************************************/
 1859  
 1860  ROM_START( reactor )
 1861      ROM_REGION( 0x10000, "maincpu", 0 )
 1862      ROM_LOAD( "rom7",         0x8000, 0x1000, CRC(a62d86fd) SHA1(9ffce668c6f0155568ccb62a6f12a9513f3c513f) )
 1863      ROM_LOAD( "rom6",         0x9000, 0x1000, CRC(6ed841f3) SHA1(b94272457e6a2d0ec46b510d71d69b4ab92a44aa) )
 1864      ROM_LOAD( "rom5",         0xa000, 0x1000, CRC(d90576a3) SHA1(52af7164dc59b9f7d8a1b3ef9d4c1fc81496899f) )
 1865      ROM_LOAD( "rom4",         0xb000, 0x1000, CRC(0155daae) SHA1(3a94952c2830c7bea126cf39b84108936d96dc0e) )
 1866      ROM_LOAD( "rom3",         0xc000, 0x1000, CRC(f8881385) SHA1(baa7ef7309aab9b382442b25ede5d7ecd6e2c370) )
 1867      ROM_LOAD( "rom2",         0xd000, 0x1000, CRC(3caba35b) SHA1(4d3b894821a2cff0ef55cec2b1f62f2e33009b4d) )
 1868      ROM_LOAD( "rom1",         0xe000, 0x1000, CRC(944e1ddf) SHA1(6b487f1cb405e2ba9345190e8ab6022c790882c1) )
 1869      ROM_LOAD( "rom0",         0xf000, 0x1000, CRC(55930aed) SHA1(37ed60386935741e8cc0b8750bfcdf6f54c1bf9e) )
 1870  
 1871      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 1872      ROM_LOAD( "snd1",         0x7000, 0x800, CRC(d958a0fd) SHA1(3c383076c68a929f96d844e89b09f3075f331906) )
 1873      ROM_LOAD( "snd2",         0x7800, 0x800, CRC(5dc86942) SHA1(a449fcfb25521a0e7523184518b5204dac56e5f8) )
 1874  
 1875      ROM_REGION( 0x2000, "bgtiles", ROMREGION_ERASE00 )
 1876      /* no ROMs; RAM is used instead */
 1877  
 1878      ROM_REGION( 0x8000, "sprites", 0 )
 1879      ROM_LOAD( "fg3",          0x1000, 0x1000, CRC(8416ad53) SHA1(f868259b97675e58b6a7f1dc3c2a4ecf6aa0570e) )
 1880      ROM_LOAD( "fg2",          0x3000, 0x1000, CRC(5489605a) SHA1(f4bbaaa8cd881dc164b118d1e516edeeea54c1d8) )
 1881      ROM_LOAD( "fg1",          0x5000, 0x1000, CRC(18396c57) SHA1(39d90a842a03091414ed58d4128b524ecc20c9f1) )
 1882      ROM_LOAD( "fg0",          0x7000, 0x1000, CRC(d1f20e15) SHA1(dba9aa0fec8b720a33d78b3dd1d7f74040048f7e) )
 1883  ROM_END
 1884  
 1885  
 1886  ROM_START( qbert )
 1887      ROM_REGION( 0x10000, "maincpu", 0 )
 1888      ROM_LOAD( "qb-rom2.bin",  0xa000, 0x2000, CRC(fe434526) SHA1(4cfc5d52dd6c82163e035af82d6112c0c93a3797) )
 1889      ROM_LOAD( "qb-rom1.bin",  0xc000, 0x2000, CRC(55635447) SHA1(ca6acdef1c9e06b33efe1f0a2df2dfb03723cfbe) )
 1890      ROM_LOAD( "qb-rom0.bin",  0xe000, 0x2000, CRC(8e318641) SHA1(7f8f66d1e6a7905e93cce07fc92e8801370b7194) )
 1891  
 1892      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 1893      ROM_LOAD( "qb-snd1.bin",  0x7000, 0x800, CRC(15787c07) SHA1(8b7d03fbf2ebaa71b3a7e2f636a0d1bb9b796e43) )
 1894      ROM_LOAD( "qb-snd2.bin",  0x7800, 0x800, CRC(58437508) SHA1(09d8053e7e99679b602dcda230d64db7fe6cb7f5) )
 1895  
 1896      ROM_REGION( 0x2000, "bgtiles", 0 )
 1897      ROM_LOAD( "qb-bg0.bin",   0x0000, 0x1000, CRC(7a9ba824) SHA1(12aa6df499eb6996ee35f56acac403ff6290f844) )
 1898      ROM_LOAD( "qb-bg1.bin",   0x1000, 0x1000, CRC(22e5b891) SHA1(5bb67e333255c0ea679ab4312256a8a71a950db8) )
 1899  
 1900      ROM_REGION( 0x8000, "sprites", 0 )
 1901      ROM_LOAD( "qb-fg3.bin",   0x0000, 0x2000, CRC(dd436d3a) SHA1(ae16087a6ceec84551b5d7aae4036e0ed432cbb7) )
 1902      ROM_LOAD( "qb-fg2.bin",   0x2000, 0x2000, CRC(f69b9483) SHA1(06894a1474c79c1274efbd32d7371179e7e0a661) )
 1903      ROM_LOAD( "qb-fg1.bin",   0x4000, 0x2000, CRC(224e8356) SHA1(f7f26b879aa8b964ff6311136ed8157e44de736c) )
 1904      ROM_LOAD( "qb-fg0.bin",   0x6000, 0x2000, CRC(2f695b85) SHA1(807d16459838f129e10b913890bbc95065d5dd40) )
 1905  ROM_END
 1906  
 1907  ROM_START( qberta )
 1908      ROM_REGION( 0x10000, "maincpu", 0 )
 1909      ROM_LOAD( "qrom_2.bin",  0xa000, 0x2000, CRC(b54a8ffc) SHA1(5e19690f141d3db8f3bfa6c7de75026256758c1f) )
 1910      ROM_LOAD( "qrom_1.bin",  0xc000, 0x2000, CRC(19d924e3) SHA1(af55ecb5b650e7b069d8be67eb9a9d0f3e69e3f1) )
 1911      ROM_LOAD( "qrom_0.bin",  0xe000, 0x2000, CRC(2e7fad1b) SHA1(5c1feafe00c21ddddde67ab0093e847a5fc9ec2d) )
 1912  
 1913      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 1914      ROM_LOAD( "qb-snd1.bin",  0x7000, 0x800, CRC(15787c07) SHA1(8b7d03fbf2ebaa71b3a7e2f636a0d1bb9b796e43) )
 1915      ROM_LOAD( "qb-snd2.bin",  0x7800, 0x800, CRC(58437508) SHA1(09d8053e7e99679b602dcda230d64db7fe6cb7f5) )
 1916  
 1917      ROM_REGION( 0x2000, "bgtiles", 0 )
 1918      ROM_LOAD( "qb-bg0.bin",   0x0000, 0x1000, CRC(7a9ba824) SHA1(12aa6df499eb6996ee35f56acac403ff6290f844) )
 1919      ROM_LOAD( "qb-bg1.bin",   0x1000, 0x1000, CRC(22e5b891) SHA1(5bb67e333255c0ea679ab4312256a8a71a950db8) )
 1920  
 1921      ROM_REGION( 0x8000, "sprites", 0 )
 1922      ROM_LOAD( "qb-fg3.bin",   0x0000, 0x2000, CRC(dd436d3a) SHA1(ae16087a6ceec84551b5d7aae4036e0ed432cbb7) )
 1923      ROM_LOAD( "qb-fg2.bin",   0x2000, 0x2000, CRC(f69b9483) SHA1(06894a1474c79c1274efbd32d7371179e7e0a661) )
 1924      ROM_LOAD( "qb-fg1.bin",   0x4000, 0x2000, CRC(224e8356) SHA1(f7f26b879aa8b964ff6311136ed8157e44de736c) )
 1925      ROM_LOAD( "qb-fg0.bin",   0x6000, 0x2000, CRC(2f695b85) SHA1(807d16459838f129e10b913890bbc95065d5dd40) )
 1926  ROM_END
 1927  
 1928  ROM_START( qbertj )
 1929      ROM_REGION( 0x10000, "maincpu", 0 )
 1930      ROM_LOAD( "qbj-rom2.bin", 0xa000, 0x2000, CRC(67bb1cb2) SHA1(23a7f8c86d6db9220a98b3f630c5d000e80f2d53) )
 1931      ROM_LOAD( "qbj-rom1.bin", 0xc000, 0x2000, CRC(c61216e7) SHA1(e727b85dddc2963e33af6c02b675243f6fbe2710) )
 1932      ROM_LOAD( "qbj-rom0.bin", 0xe000, 0x2000, CRC(69679d5c) SHA1(996d45517d0c01a1952fead05dbe201dbb7dca35) )
 1933  
 1934      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 1935      ROM_LOAD( "qb-snd1.bin",  0x7000, 0x800, CRC(15787c07) SHA1(8b7d03fbf2ebaa71b3a7e2f636a0d1bb9b796e43) )
 1936      ROM_LOAD( "qb-snd2.bin",  0x7800, 0x800, CRC(58437508) SHA1(09d8053e7e99679b602dcda230d64db7fe6cb7f5) )
 1937  
 1938      ROM_REGION( 0x2000, "bgtiles", 0 )
 1939      ROM_LOAD( "qb-bg0.bin",   0x0000, 0x1000, CRC(7a9ba824) SHA1(12aa6df499eb6996ee35f56acac403ff6290f844) )
 1940      ROM_LOAD( "qb-bg1.bin",   0x1000, 0x1000, CRC(22e5b891) SHA1(5bb67e333255c0ea679ab4312256a8a71a950db8) )
 1941  
 1942      ROM_REGION( 0x8000, "sprites", 0 )
 1943      ROM_LOAD( "qb-fg3.bin",   0x0000, 0x2000, CRC(dd436d3a) SHA1(ae16087a6ceec84551b5d7aae4036e0ed432cbb7) )
 1944      ROM_LOAD( "qb-fg2.bin",   0x2000, 0x2000, CRC(f69b9483) SHA1(06894a1474c79c1274efbd32d7371179e7e0a661) )
 1945      ROM_LOAD( "qb-fg1.bin",   0x4000, 0x2000, CRC(224e8356) SHA1(f7f26b879aa8b964ff6311136ed8157e44de736c) )
 1946      ROM_LOAD( "qb-fg0.bin",   0x6000, 0x2000, CRC(2f695b85) SHA1(807d16459838f129e10b913890bbc95065d5dd40) )
 1947  ROM_END
 1948  
 1949  ROM_START( myqbert )
 1950      ROM_REGION( 0x10000, "maincpu", 0 )
 1951      ROM_LOAD( "mqb-rom2.bin",  0xa000, 0x2000, CRC(6860f957) SHA1(ebd68aeb6d54868295bd20cf64ee0187a52df0e3) )
 1952      ROM_LOAD( "mqb-rom1.bin",  0xc000, 0x2000, CRC(11f0a4e4) SHA1(a805e51c40042fae209ace277abd9b35a990905b) )
 1953      ROM_LOAD( "mqb-rom0.bin",  0xe000, 0x2000, CRC(12a90cb2) SHA1(a33203aea79fe43d1233a16e3fdddaceac6e4a20) )
 1954  
 1955      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 1956      ROM_LOAD( "mqb-snd1.bin",  0x7000, 0x800, CRC(495ffcd2) SHA1(b2c16fffbd6af1c17fdb1a99844819e6ee0550ee) )
 1957      ROM_LOAD( "mqb-snd2.bin",  0x7800, 0x800, CRC(9bbaa945) SHA1(13791b69cd6f426ad77a7d0537b10012feb0bc87) )
 1958  
 1959      ROM_REGION( 0x2000, "bgtiles", 0 )
 1960      ROM_LOAD( "qb-bg0.bin",   0x0000, 0x1000, CRC(7a9ba824) SHA1(12aa6df499eb6996ee35f56acac403ff6290f844) ) /* chars */
 1961      ROM_LOAD( "qb-bg1.bin",   0x1000, 0x1000, CRC(22e5b891) SHA1(5bb67e333255c0ea679ab4312256a8a71a950db8) )
 1962  
 1963      ROM_REGION( 0x8000, "sprites", 0 )
 1964      ROM_LOAD( "mqb-fg3.bin",   0x0000, 0x2000, CRC(8b5d0852) SHA1(e2cf1679a7ec9e88b254b0a8d690a74d88db0cdc) ) /* sprites */
 1965      ROM_LOAD( "mqb-fg2.bin",   0x2000, 0x2000, CRC(823f1e57) SHA1(a7305815d71d6e3b1c92c387a675e969edc77b7d) )
 1966      ROM_LOAD( "mqb-fg1.bin",   0x4000, 0x2000, CRC(05343ae6) SHA1(6ae3e6949c9eb0df85216575ffd21adc939df0a2) )
 1967      ROM_LOAD( "mqb-fg0.bin",   0x6000, 0x2000, CRC(abc71bdd) SHA1(b72c6867d8e342a6794a4bbab991761c01cfae44) )
 1968  ROM_END
 1969  
 1970  ROM_START( qberttst )
 1971      ROM_REGION( 0x10000, "maincpu", 0 )
 1972      ROM_LOAD( "qbtst2.bin",   0xa000, 0x2000, CRC(55307b02) SHA1(8a41820211093779d9010b4c9e7d667ad3a31f23) )
 1973      ROM_LOAD( "qbtst1.bin",   0xc000, 0x2000, CRC(e97fdd78) SHA1(98dd07043a72273240c593650aa9947199347870) )
 1974      ROM_LOAD( "qbtst0.bin",   0xe000, 0x2000, CRC(94c9f588) SHA1(f586bcd8e6762614bed634a007508abea071754c) )
 1975  
 1976      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 1977      ROM_LOAD( "qb-snd1.bin",  0x7000, 0x800, CRC(15787c07) SHA1(8b7d03fbf2ebaa71b3a7e2f636a0d1bb9b796e43) )
 1978      ROM_LOAD( "qb-snd2.bin",  0x7800, 0x800, CRC(58437508) SHA1(09d8053e7e99679b602dcda230d64db7fe6cb7f5) )
 1979  
 1980      ROM_REGION( 0x2000, "bgtiles", 0 )
 1981      ROM_LOAD( "qb-bg0.bin",   0x0000, 0x1000, CRC(7a9ba824) SHA1(12aa6df499eb6996ee35f56acac403ff6290f844) )
 1982      ROM_LOAD( "qb-bg1.bin",   0x1000, 0x1000, CRC(22e5b891) SHA1(5bb67e333255c0ea679ab4312256a8a71a950db8) )
 1983  
 1984      ROM_REGION( 0x8000, "sprites", 0 )
 1985      ROM_LOAD( "qb-fg3.bin",   0x0000, 0x2000, CRC(dd436d3a) SHA1(ae16087a6ceec84551b5d7aae4036e0ed432cbb7) )
 1986      ROM_LOAD( "qb-fg2.bin",   0x2000, 0x2000, CRC(f69b9483) SHA1(06894a1474c79c1274efbd32d7371179e7e0a661) )
 1987      ROM_LOAD( "qb-fg1.bin",   0x4000, 0x2000, CRC(224e8356) SHA1(f7f26b879aa8b964ff6311136ed8157e44de736c) )
 1988      ROM_LOAD( "qb-fg0.bin",   0x6000, 0x2000, CRC(2f695b85) SHA1(807d16459838f129e10b913890bbc95065d5dd40) )
 1989  ROM_END
 1990  
 1991  /* test rom, not a game */
 1992  ROM_START( qbtrktst )
 1993      ROM_REGION( 0x10000, "maincpu", 0 )
 1994      ROM_LOAD( "qb-rom2.bin",  0xa000, 0x2000, CRC(fe434526) SHA1(4cfc5d52dd6c82163e035af82d6112c0c93a3797) )
 1995      ROM_LOAD( "qb-rom1.bin",  0xc000, 0x2000, CRC(55635447) SHA1(ca6acdef1c9e06b33efe1f0a2df2dfb03723cfbe) )
 1996      ROM_LOAD( "gv103_t-ball-test_rom0_2764.c11c12",  0xe000, 0x2000, CRC(5d390cd2) SHA1(9031926a6f6179e340b67c3a7949062b4a75e3cf) )
 1997  
 1998      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 1999      ROM_LOAD( "qb-snd1.bin",  0x7000, 0x800, CRC(15787c07) SHA1(8b7d03fbf2ebaa71b3a7e2f636a0d1bb9b796e43) )
 2000      ROM_LOAD( "qb-snd2.bin",  0x7800, 0x800, CRC(58437508) SHA1(09d8053e7e99679b602dcda230d64db7fe6cb7f5) )
 2001  
 2002      ROM_REGION( 0x2000, "bgtiles", 0 )
 2003      ROM_LOAD( "qb-bg0.bin",   0x0000, 0x1000, CRC(7a9ba824) SHA1(12aa6df499eb6996ee35f56acac403ff6290f844) )
 2004      ROM_LOAD( "qb-bg1.bin",   0x1000, 0x1000, CRC(22e5b891) SHA1(5bb67e333255c0ea679ab4312256a8a71a950db8) )
 2005  
 2006      ROM_REGION( 0x8000, "sprites", 0 )
 2007      ROM_LOAD( "qb-fg3.bin",   0x0000, 0x2000, CRC(dd436d3a) SHA1(ae16087a6ceec84551b5d7aae4036e0ed432cbb7) )
 2008      ROM_LOAD( "qb-fg2.bin",   0x2000, 0x2000, CRC(f69b9483) SHA1(06894a1474c79c1274efbd32d7371179e7e0a661) )
 2009      ROM_LOAD( "qb-fg1.bin",   0x4000, 0x2000, CRC(224e8356) SHA1(f7f26b879aa8b964ff6311136ed8157e44de736c) )
 2010      ROM_LOAD( "qb-fg0.bin",   0x6000, 0x2000, CRC(2f695b85) SHA1(807d16459838f129e10b913890bbc95065d5dd40) )
 2011  ROM_END
 2012  
 2013  
 2014  ROM_START( insector )
 2015      ROM_REGION( 0x10000, "maincpu", 0 )
 2016      ROM_LOAD( "rom3",         0x8000, 0x2000, CRC(640881fd) SHA1(2832183e41ae7e631b61e4845fa68ce1c49edf29) )
 2017      ROM_LOAD( "rom2",         0xa000, 0x2000, CRC(456bc3f4) SHA1(b61a56a65639f97399a8a3a4293ac2292edfd159) )
 2018      ROM_LOAD( "rom1",         0xc000, 0x2000, CRC(706962af) SHA1(e40b567fdf6a3f7c6485808b4db45cea322c7724) )
 2019      ROM_LOAD( "rom0",         0xe000, 0x2000, CRC(31cee24b) SHA1(3d21f5d530cc022f9633ad487e13a664848dd3e6) )
 2020  
 2021      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 2022      ROM_LOAD( "gv106s.bin",   0x7000, 0x1000, CRC(25bcc8bc) SHA1(adf401901f1479a5bffaed85135669b1133334b4) )
 2023  
 2024      ROM_REGION( 0x2000, "bgtiles", 0 )
 2025      ROM_LOAD( "bg0",          0x0000, 0x1000, CRC(0dc2037e) SHA1(aa3fdec7884aad782e430182326f5b113f59bf00) )
 2026      ROM_LOAD( "bg1",          0x1000, 0x1000, CRC(3dd73b94) SHA1(98b6592a907d6cb6a692c576f757bb612f8d3b72) )
 2027  
 2028      ROM_REGION( 0x8000, "sprites", 0 )
 2029      ROM_LOAD( "fg3",          0x0000, 0x2000, CRC(9bbf5b6b) SHA1(3866d4f5231140e0b7ffe5daa4752d09d3bd7241) )
 2030      ROM_LOAD( "fg2",          0x2000, 0x2000, CRC(5adf9986) SHA1(2ef0d002d7ab4c9199e40dfcb25747564ecc0495) )
 2031      ROM_LOAD( "fg1",          0x4000, 0x2000, CRC(4bb16111) SHA1(88ac8c957c6968d355c494bf95ccf8a99152e5e9) )
 2032      ROM_LOAD( "fg0",          0x6000, 0x2000, CRC(965f6b76) SHA1(faec9d43f39e730eefd08d4c3337ed4b230bf7e1) )
 2033  ROM_END
 2034  
 2035  
 2036  ROM_START( tylz )
 2037      ROM_REGION( 0x10000, "maincpu", 0 )
 2038      ROM_LOAD( "tylz.s4t",        0x8000, 0x2000, CRC(28ed146d) SHA1(52d72503b456b1411cd91724c6d524b78ca6fe03) )
 2039      ROM_LOAD( "tylz.s4b",        0xa000, 0x2000, CRC(18ee09f9) SHA1(632896bfe7e14f93665671dbcc17b7cabc754a98) )
 2040      ROM_LOAD( "tylz.r4",         0xc000, 0x2000, CRC(657c3d2e) SHA1(9908a2dd5109e632dff38b8b4b56160615355200) )
 2041      ROM_LOAD( "tylz.n4",         0xe000, 0x2000, CRC(b2a15510) SHA1(15db4d1a2fb70d8111940246cd7a8ae06403cac5) )
 2042  
 2043      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 2044      ROM_LOAD( "tylz.f2",   0x7000, 0x1000, CRC(ebcedba9) SHA1(94aee8e32bdc80bbc5dc1423ca97597bdb9d808c) )
 2045  
 2046      ROM_REGION( 0x2000, "bgtiles", 0 )
 2047      ROM_LOAD( "tylz.m6",          0x0000, 0x1000, CRC(5e300b9b) SHA1(3b1e0371ba6d76ace893b92728c7a64b0e207d22) )
 2048      ROM_LOAD( "tylz.n6",          0x1000, 0x1000, CRC(af56292e) SHA1(772b2fb8efaaaccd465ab9d61fc295ef09e3a10d) )
 2049  
 2050      ROM_REGION( 0x8000, "sprites", 0 )
 2051      ROM_LOAD( "tylz.f12",          0x6000, 0x2000, CRC(6d2c5ad8) SHA1(851592d82680f9983f5d8c10c0a13fbaf31cfe41) )
 2052      ROM_LOAD( "tylz.g12",          0x4000, 0x2000, CRC(1eb26e6f) SHA1(bc50069cefaafa302d559a2c2d3ab93f58900a24) )
 2053      ROM_LOAD( "tylz.j12",          0x2000, 0x2000, CRC(bc319067) SHA1(cdaacd4d5a7644468c913076850f08d979cbb004) )
 2054      ROM_LOAD( "tylz.k12",          0x0000, 0x2000, CRC(ff62bc4b) SHA1(71de79a92f23a1fcf4331c7fb1762870d74f7ea9) )
 2055  ROM_END
 2056  
 2057  
 2058  ROM_START( argusg )
 2059      ROM_REGION( 0x10000, "maincpu", 0 )
 2060      ROM_LOAD( "arg_ram2_2732.c7",         0x1000, 0x1000, CRC(5d35b83e) SHA1(5a1c3b2ae138d5509b8daaf03036f000bd09d0fc) )
 2061      ROM_LOAD( "arg_ram4_2732.c9c10",      0x2000, 0x1000, CRC(7180e823) SHA1(47124925d863b9b3784c0c990d4a4344e8d09372) )
 2062      ROM_LOAD( "arg_rom4_2764.c16",        0x6000, 0x2000, CRC(2f48bd78) SHA1(b625a03b5a4989b67d5180fca7e9f6b7a24e6d2c) )
 2063      ROM_LOAD( "arg_rom3_2764.c14c15",     0x8000, 0x2000, CRC(4dc2914c) SHA1(8ca0fd2ce1fc9f00afd30a638ff2f8787ef7e3d4) )
 2064      ROM_LOAD( "arg_rom2_2764.c13c14",     0xa000, 0x2000, CRC(b5e9ee77) SHA1(dbdc176e3ca6be17b78eb98c07d5a9b5eaa28ba1) )
 2065      ROM_LOAD( "arg_rom1_2764.c12c13",     0xc000, 0x2000, CRC(733d3d44) SHA1(03c11e89ed6906c0383dc19c0db2d21ebe69b128) )
 2066      ROM_LOAD( "arg_rom0_2764.c11c12",     0xe000, 0x2000, CRC(e1906355) SHA1(4735370ff0dfe381358dfa41d82fab455ec3c016) )
 2067  
 2068      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 2069      ROM_LOAD( "arg_snd1_2716.u5",  0x7000, 0x800, CRC(3a6cf455) SHA1(0c701aa4d956947a101212b494b030cd2df5a2d6) )
 2070      ROM_LOAD( "arg_snd2_2716.u6",  0x7800, 0x800, CRC(ddf32040) SHA1(61ae22faa013b29a5fbd9520073f172a98ca38ec) )
 2071  
 2072      ROM_REGION( 0x2000, "bgtiles", ROMREGION_ERASE00 )
 2073      /* no ROMs; RAM is used instead */
 2074  
 2075      ROM_REGION( 0x8000, "sprites", 0 )
 2076      ROM_LOAD( "arg_fg3_2764.k7k8",    0x0000, 0x2000, CRC(cdb6e25c) SHA1(d439a4c777c585d1ee89410816c9f7580f7e0ae8) )
 2077      ROM_LOAD( "arg_fg2_2764.k6",      0x2000, 0x2000, CRC(f10af1be) SHA1(e9f9b90de374ff9cb7cc072625b4980cef3ab1a6) )
 2078      ROM_LOAD( "arg_fg1_2764.k5",      0x4000, 0x2000, CRC(5add96e5) SHA1(ba8a1e54f12aab43c4dfce8f3bf8fcf4007b2eff) )
 2079      ROM_LOAD( "arg_fg0_2764.k4",      0x6000, 0x2000, CRC(5b7bd588) SHA1(49ee6a747832f0d4d436c199db2022fd5dfb8d4a))
 2080  ROM_END
 2081  
 2082  
 2083  ROM_START( mplanets )
 2084      ROM_REGION( 0x10000, "maincpu", 0 )
 2085      ROM_LOAD( "rom4.c16",     0x6000, 0x2000, CRC(5402077f) SHA1(f4e8699ab3c6dfc0f86b6df86d2a5b35caf2ca73) )
 2086      ROM_LOAD( "rom3.c14-15",  0x8000, 0x2000, CRC(5d18d740) SHA1(30307d98704c49dec5aecd0a1ec2f06f1869a5d2) )
 2087      ROM_LOAD( "rom2.c13-14",  0xa000, 0x2000, CRC(960c3bb1) SHA1(305a7904fa8c0b9823ad186d1c5c7460c0900bad) )
 2088      ROM_LOAD( "rom1.c12-13",  0xc000, 0x2000, CRC(eb515f10) SHA1(31c3519328eba7adc4a3b0adcc0384f606d81a57) )
 2089      ROM_LOAD( "rom0.c11-12",  0xe000, 0x2000, CRC(74de78aa) SHA1(7ebd02e660c1413eff284a7ca77feeff41c1e2b7) )
 2090  
 2091      /* note from f205v: my original Gottlieb PCB only sports one 2732 sound EPROM labeled "snd.3h"
 2092      It contains the two joint roms you can find herefollowing, therefore the sound is identical */
 2093      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 2094      ROM_LOAD( "snd1",         0x7000, 0x0800, CRC(453193a1) SHA1(317ec81f71661eaa92624c0304a52b635dcd5613) )
 2095      ROM_LOAD( "snd2",         0x7800, 0x0800, CRC(f5ffc98f) SHA1(516e895df94942fc51f1b51eb9316d4296df82e7) )
 2096  
 2097      ROM_REGION( 0x2000, "bgtiles", 0 )
 2098      ROM_LOAD( "bg0.e11-12",   0x0000, 0x1000, CRC(709aa24c) SHA1(95be072bf63320f4b44feaf88003ba011754e20f) )
 2099      ROM_LOAD( "bg1.e13",      0x1000, 0x1000, CRC(4921e345) SHA1(7b6e03458222be501ed150ffbd489433027fc6cb) )
 2100  
 2101      ROM_REGION( 0x8000, "sprites", 0 )
 2102      ROM_LOAD( "fg3.k7-8",     0x0000, 0x2000, CRC(c990b39f) SHA1(d1b6060744b78df430e914504b20e8693829bbd5) )
 2103      ROM_LOAD( "fg2.k6",       0x2000, 0x2000, CRC(735e2522) SHA1(9fac59e9b1d81695d3da32107d640726cf96e31a) )
 2104      ROM_LOAD( "fg1.k5",       0x4000, 0x2000, CRC(6456cc1c) SHA1(12c20f0ce49a7d3579049e8ba95e542c4aaee241) )
 2105      ROM_LOAD( "fg0.k4",       0x6000, 0x2000, CRC(a920e325) SHA1(60f15d5014a55d9c18b06c17c7587d45716619e4) )
 2106  ROM_END
 2107  
 2108  ROM_START( mplanetsuk )
 2109      ROM_REGION( 0x10000, "maincpu", 0 )
 2110      ROM_LOAD( "mpt_rom4.bin", 0x6000, 0x2000, CRC(cd88e23c) SHA1(03222e2600f7fb1c6844340d4a56eedfcdeaa3c8) )
 2111      ROM_LOAD( "mpt_rom3.bin", 0x8000, 0x2000, CRC(dc355b2d) SHA1(ae3e376afc7a8cb049d0dd28bf3959cb76780999) )
 2112      ROM_LOAD( "mpt_rom2.bin", 0xa000, 0x2000, CRC(846ddc23) SHA1(eed771d14b195e09f3aac713d19b3919c6c90ed6) )
 2113      ROM_LOAD( "mpt_rom1.bin", 0xc000, 0x2000, CRC(94d67b87) SHA1(2cbf09f0ba3b6769de90d8f61913fec3010553e2) )
 2114      ROM_LOAD( "mpt_rom0.bin", 0xe000, 0x2000, CRC(a9e30ad2) SHA1(39d830dda92ab5a6dbb44943be92bca0464e64e0) )
 2115  
 2116      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 2117      ROM_LOAD( "mpt_snd1.bin", 0x7000, 0x800, CRC(453193a1) SHA1(317ec81f71661eaa92624c0304a52b635dcd5613) )
 2118      ROM_LOAD( "mpt_snd2.bin", 0x7800, 0x800, CRC(f5ffc98f) SHA1(516e895df94942fc51f1b51eb9316d4296df82e7) )
 2119  
 2120      ROM_REGION( 0x2000, "bgtiles", 0 )
 2121      ROM_LOAD( "mpt_bg0.bin",  0x0000, 0x1000, CRC(709aa24c) SHA1(95be072bf63320f4b44feaf88003ba011754e20f) )
 2122      ROM_LOAD( "mpt_bg1.bin",  0x1000, 0x1000, CRC(4921e345) SHA1(7b6e03458222be501ed150ffbd489433027fc6cb) )
 2123  
 2124      ROM_REGION( 0x8000, "sprites", 0 )
 2125      ROM_LOAD( "mpt_fg3.bin",  0x0000, 0x2000, CRC(c990b39f) SHA1(d1b6060744b78df430e914504b20e8693829bbd5) )
 2126      ROM_LOAD( "mpt_fg2.bin",  0x2000, 0x2000, CRC(735e2522) SHA1(9fac59e9b1d81695d3da32107d640726cf96e31a) )
 2127      ROM_LOAD( "mpt_fg1.bin",  0x4000, 0x2000, CRC(6456cc1c) SHA1(12c20f0ce49a7d3579049e8ba95e542c4aaee241) )
 2128      ROM_LOAD( "mpt_fg0.bin",  0x6000, 0x2000, CRC(a920e325) SHA1(60f15d5014a55d9c18b06c17c7587d45716619e4) )
 2129  ROM_END
 2130  
 2131  
 2132  ROM_START( krull )
 2133      ROM_REGION( 0x10000, "maincpu", 0 )
 2134      ROM_LOAD( "ram2.bin",     0x1000, 0x1000, CRC(302feadf) SHA1(9d70de35e4f0490dc4e601070993ad146f250dea) )
 2135      ROM_LOAD( "ram4.bin",     0x2000, 0x1000, CRC(79355a60) SHA1(57ad5c904b9ac4bf7c7d828bf755bbcbba6a4fd7) )
 2136      ROM_LOAD( "rom4.bin",     0x6000, 0x2000, CRC(2b696394) SHA1(b18270f4ad97743f6ff8c4cbc93e523c77a8e794) )
 2137      ROM_LOAD( "rom3.bin",     0x8000, 0x2000, CRC(14b0ee42) SHA1(276c4008a013806b3989c529f41cbc358ec49fd6) )
 2138      ROM_LOAD( "rom2.bin",     0xa000, 0x2000, CRC(b5fad94a) SHA1(1bae895fbdd658cfb56c53cc2139282cc1e778de) )
 2139      ROM_LOAD( "rom1.bin",     0xc000, 0x2000, CRC(1ad956a3) SHA1(f5b74b196fe1bd9ab48336e0051cbf29c650cfc1) )
 2140      ROM_LOAD( "rom0.bin",     0xe000, 0x2000, CRC(a466afae) SHA1(d691cbb46e8c3b71f9b1688d7fcef36df82aa854) )
 2141  
 2142      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 2143      ROM_LOAD( "snd1.bin",     0x6000, 0x1000, CRC(dd2b30b4) SHA1(f01cb64932493bf69d4fc75a7fa809ff6f6e4263) )
 2144      ROM_LOAD( "snd2.bin",     0x7000, 0x1000, CRC(8cab901b) SHA1(b886532828efc8cf442e2ee4ebbfe37acd489f62) )
 2145  
 2146      ROM_REGION( 0x2000, "bgtiles", ROMREGION_ERASE00 )
 2147      /* no ROMs; RAM is used instead */
 2148  
 2149      ROM_REGION( 0x8000, "sprites", 0 )
 2150      ROM_LOAD( "fg3.bin",      0x0000, 0x2000, CRC(82d77a45) SHA1(753476609c4bf4f0f0cd28d61fd8aef6967bda57) )
 2151      ROM_LOAD( "fg2.bin",      0x2000, 0x2000, CRC(25a24317) SHA1(33d2c23a388b09c4a09b9893648c30fbd5482cc3) )
 2152      ROM_LOAD( "fg1.bin",      0x4000, 0x2000, CRC(7e3ad7b0) SHA1(0de86e632e5a9e6c1ec82550b15dc25a17ab7066) )
 2153      ROM_LOAD( "fg0.bin",      0x6000, 0x2000, CRC(7402dc19) SHA1(d6d1b8aca8e9ee3bdc57f4474d22b405963909ec) )
 2154  ROM_END
 2155  
 2156  
 2157  ROM_START( kngtmare )
 2158      ROM_REGION( 0x10000, "maincpu", 0 )
 2159      ROM_LOAD( "gv112_rom3_2764.c14c15", 0x8000, 0x2000, CRC(47351270) SHA1(e6ca0b27b8f703cf73aad5f82d3b986823fbda88) )
 2160      ROM_LOAD( "gv112_rom2_2764.c13c14", 0xa000, 0x2000, CRC(53e01f97) SHA1(0fbb92789609ba1df6e4ae56b2fc77a004e3a4ea) )
 2161      ROM_LOAD( "gv112_rom1_2764.c12c13", 0xc000, 0x2000, CRC(5b340640) SHA1(8ccad017d5b9b748327baf22ff51d30ee96cb25e) )
 2162      ROM_LOAD( "gv112_rom0_2764.c11c12", 0xe000, 0x2000, CRC(620dc629) SHA1(0d94b7c50ef499eb9bb3f4986a8d29547181f7ea) )
 2163  
 2164      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 2165      ROM_LOAD( "gv112_snd",              0x7000, 0x1000, NO_DUMP )
 2166  
 2167      ROM_REGION( 0x2000, "bgtiles", 0 )
 2168      ROM_LOAD( "gv112_bg0_2732.e11e12",  0x0000, 0x1000, CRC(a74591fd) SHA1(e6916cfa44cbe4c0d58fb0307c70580a6fabfcf1) )
 2169      ROM_LOAD( "gv112_bg1_2732.e13",     0x1000, 0x1000, CRC(5a226e6a) SHA1(faf119a8db823f2fc57c0e789b5f3486bca1feb1) )
 2170  
 2171      ROM_REGION( 0x8000, "sprites", 0 )
 2172      ROM_LOAD( "gv112_fg3_2764.k7k8",    0x0000, 0x2000, CRC(d1886658) SHA1(2ba452acfb3548c02137c8732e1f7cf8f4c31275) )
 2173      ROM_LOAD( "gv112_fg2_2764.k6",      0x2000, 0x2000, CRC(e1c73f0c) SHA1(3e91d6184f94b06ab0342504da387ac41d1a83b3) )
 2174      ROM_LOAD( "gv112_fg1_2764.k5",      0x4000, 0x2000, CRC(724bc3ea) SHA1(305945e7224c3463083c7579a826ec7eba846067) )
 2175      ROM_LOAD( "gv112_fg0_2764.k4",      0x6000, 0x2000, CRC(0311bbd9) SHA1(0a4f8268dab696bcb25738a482add24fb1f5f09d) )
 2176  ROM_END
 2177  
 2178  
 2179  ROM_START( sqbert )
 2180      ROM_REGION( 0x10000, "maincpu", 0 )
 2181      ROM_LOAD( "qb-rom2.bin",  0xa000, 0x2000, CRC(1e3d4038) SHA1(d4402c5d16c0aa55efbceb83f0b30082b8434df7) )
 2182      ROM_LOAD( "qb-rom1.bin",  0xc000, 0x2000, CRC(eaf3076c) SHA1(749a87b3c40ba0a2ecd2ca962786e066daf63e30) )
 2183      ROM_LOAD( "qb-rom0.bin",  0xe000, 0x2000, CRC(61260a7e) SHA1(e2028a453aa34aaffa2c465f64a963504315df3c) )
 2184  
 2185      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 2186      ROM_LOAD( "qb-snd1.bin",  0x7000, 0x800, CRC(15787c07) SHA1(8b7d03fbf2ebaa71b3a7e2f636a0d1bb9b796e43) )
 2187      ROM_LOAD( "qb-snd2.bin",  0x7800, 0x800, CRC(58437508) SHA1(09d8053e7e99679b602dcda230d64db7fe6cb7f5) )
 2188  
 2189      ROM_REGION( 0x2000, "bgtiles", 0 )
 2190      ROM_LOAD( "qb-bg0.bin",   0x0000, 0x1000, CRC(c3118eef) SHA1(2c320eb8aae8841046ac3fca3bdaeeba778360e4) )
 2191      ROM_LOAD( "qb-bg1.bin",   0x1000, 0x1000, CRC(4f6d8075) SHA1(dc1897f939c8d837627ff6e06609afe305566a3b) )
 2192  
 2193      ROM_REGION( 0x8000, "sprites", 0 )
 2194      ROM_LOAD( "qb-fg3.bin",   0x0000, 0x2000, CRC(ee595eda) SHA1(11777d95ba79bd0ec7b964b76c1dc129db857816) )
 2195      ROM_LOAD( "qb-fg2.bin",   0x2000, 0x2000, CRC(59884c78) SHA1(5e77ef46ccd55f79a5fa90521baa7c22e3783fe5) )
 2196      ROM_LOAD( "qb-fg1.bin",   0x4000, 0x2000, CRC(2a60e3ad) SHA1(9ed83017f6c8e44337ad76c68b095f2c3300aadb) )
 2197      ROM_LOAD( "qb-fg0.bin",   0x6000, 0x2000, CRC(b11ad9d8) SHA1(5264598f33aa76455ae4107d0f265c2a372ed67a) )
 2198  ROM_END
 2199  
 2200  
 2201  ROM_START( qbertqub )
 2202      ROM_REGION( 0x10000, "maincpu", 0 )
 2203      ROM_LOAD( "qq-rom3.bin",  0x8000, 0x2000, CRC(c4dbdcd7) SHA1(34aaa4762073680e2b4d024ce7106315ffc6bcf3) )
 2204      ROM_LOAD( "qq-rom2.bin",  0xa000, 0x2000, CRC(21a6c6cc) SHA1(6d4d81d9ad85be3792584e39dbeaf0dfeeda1503) )
 2205      ROM_LOAD( "qq-rom1.bin",  0xc000, 0x2000, CRC(63e6c43d) SHA1(9435eb06dc069e5bf1c439f0c772fef3183745b0) )
 2206      ROM_LOAD( "qq-rom0.bin",  0xe000, 0x2000, CRC(8ddbe438) SHA1(31112d711af5d4039491e99a0be0c088b3272482) )
 2207  
 2208      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 2209      ROM_LOAD( "qq-snd1.bin",  0x7000, 0x800, CRC(e704b450) SHA1(d509f54658e9f0264b9ab865a6f36e5423a28904) )
 2210      ROM_LOAD( "qq-snd2.bin",  0x7800, 0x800, CRC(c6a98bf8) SHA1(cc5b5bb5966f5d79226f1f665a3f9fc934f4ef7f) )
 2211  
 2212      ROM_REGION( 0x2000, "bgtiles", 0 )
 2213      ROM_LOAD( "qq-bg0.bin",   0x0000, 0x1000, CRC(050badde) SHA1(d049367e262cc6080e01d32227e86310166e00bb) )
 2214      ROM_LOAD( "qq-bg1.bin",   0x1000, 0x1000, CRC(8875902f) SHA1(715e05b555d52c0445c4bec7fb6d1c02053505e6) )
 2215  
 2216      ROM_REGION( 0x10000, "sprites", 0 )
 2217      ROM_LOAD( "qq-fg3.bin",   0x0000, 0x4000, CRC(91a949cc) SHA1(bd27a6bb744f73cb918318f1bc3aa5bde39417c2) )
 2218      ROM_LOAD( "qq-fg2.bin",   0x4000, 0x4000, CRC(782d9431) SHA1(04d46014e9a5b80b8215b5338fa9de27e530e4a9) )
 2219      ROM_LOAD( "qq-fg1.bin",   0x8000, 0x4000, CRC(71c3ac4c) SHA1(ed3444b3c8bd332b83f2700f1d6ea6bc9e185d8c) )
 2220      ROM_LOAD( "qq-fg0.bin",   0xc000, 0x4000, CRC(6192853f) SHA1(907e62a3835bacda4104dcc1d7e946e4e8e821ef) )
 2221  ROM_END
 2222  
 2223  
 2224  ROM_START( curvebal )
 2225      ROM_REGION( 0x10000, "maincpu", 0 )
 2226      ROM_LOAD( "cb-rom-3.chp", 0x8000, 0x2000, CRC(72ad4d45) SHA1(9537eb360ed1d33d399cc2d8761c36b7d25fdae0) )
 2227      ROM_LOAD( "cb-rom-2.chp", 0xa000, 0x2000, CRC(d46c3db5) SHA1(d4f464a6ebc090d100e890303557f0d05214033b) )
 2228      ROM_LOAD( "cb-rom-1.chp", 0xc000, 0x2000, CRC(eb1e08bd) SHA1(f558664df12e4e15ef2779a0bdf99538f8c43ca3) )
 2229      ROM_LOAD( "cb-rom-0.chp", 0xe000, 0x2000, CRC(401fc7e3) SHA1(86ca53cb6f1d88d5a95baa9524c6b42a1f7fc9c2) )
 2230  
 2231      ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
 2232      ROM_LOAD( "yrom.sbd",     0x6000, 0x1000, CRC(4c313d9b) SHA1(c61a8c827f4b199fdfb6ffc0bc6cca396c73625e) )
 2233      ROM_LOAD( "drom.sbd",     0x7000, 0x1000, CRC(cecece88) SHA1(4c6639f6f89f80b04b6ffbb5004ea2121e71f504) )
 2234  
 2235      ROM_REGION( 0x2000, "bgtiles", 0 )
 2236      ROM_LOAD( "cb-bg-0.chp",  0x0000, 0x1000, CRC(d666a179) SHA1(3b9aca5272ae3f3d99ba55f5dc2db4eac82896bc) )
 2237      ROM_LOAD( "cb-bg-1.chp",  0x1000, 0x1000, CRC(5e34ff4e) SHA1(f88234c0f46533540815e05479938810ea4fb4f8) )
 2238  
 2239      ROM_REGION( 0x8000, "sprites", 0 )
 2240      ROM_LOAD( "cb-fg-3.chp",  0x0000, 0x2000, CRC(9c9452fe) SHA1(4cf5ee2efa5734849781aa57c2b92ed542d5cb4e) )
 2241      ROM_LOAD( "cb-fg-2.chp",  0x2000, 0x2000, CRC(065131af) SHA1(fe78ee907f1d0e9f6fc3c96e4fa4aff390115147) )
 2242      ROM_LOAD( "cb-fg-1.chp",  0x4000, 0x2000, CRC(1b7b7f94) SHA1(ffb0f163531c2f9d184d8733466d23ab9d48ea2e) )
 2243      ROM_LOAD( "cb-fg-0.chp",  0x6000, 0x2000, CRC(e3a8230e) SHA1(c256b5ca25dc15c11d574d0ad823b34093933802) )
 2244  ROM_END
 2245  
 2246  
 2247  ROM_START( screwloo )
 2248      ROM_REGION( 0x10000, "maincpu", 0 )
 2249      ROM_LOAD( "rom4",         0x6000, 0x2000, CRC(744a2513) SHA1(d6e8e016d9af984fae9b6667bedeea069637bd3a) )
 2250      ROM_LOAD( "rom3",         0x8000, 0x2000, CRC(ffde5b5d) SHA1(50ac0e600935b8b1f8b68c40ad21a179b176e535) )
 2251      ROM_LOAD( "rom2",         0xa000, 0x2000, CRC(97932b05) SHA1(6807c6e08edeb93aa7b4969eb78de3cf88a00b72) )
 2252      ROM_LOAD( "rom1",         0xc000, 0x2000, CRC(571b65ca) SHA1(75077f4fab296b3802271fa77af588003570cde6) )
 2253      ROM_LOAD( "rom0",         0xe000, 0x2000, CRC(6447fe54) SHA1(6391c841cafd35dd315d9fac99ed5d8304018747) )
 2254  
 2255      ROM_REGION( 0x10000, "r2sound:audiocpu", 0 )
 2256      ROM_LOAD( "drom1",        0xc000, 0x2000, CRC(ae965ade) SHA1(84a690cba8990fe6406b7cfbd6ea643a48446567) )
 2257  
 2258      ROM_REGION( 0x10000, "r2sound:speechcpu", 0 )
 2259      ROM_LOAD( "yrom1",        0xe000, 0x2000, CRC(3719b0b5) SHA1(4f215ca2f15956374c4cd9484b6798f1c4d60fc7) )
 2260  
 2261      ROM_REGION( 0x2000, "bgtiles", 0 )
 2262      ROM_LOAD( "bg0",          0x0000, 0x1000, CRC(1fd5b649) SHA1(4e2127a4458d54f094934c6f5f154a6db5d0c8b0) )
 2263      ROM_LOAD( "bg1",          0x1000, 0x1000, CRC(c8ddb8ba) SHA1(58137a5043157d08af4d628cf5384d7f530393f7) )
 2264  
 2265      ROM_REGION( 0x8000, "sprites", 0 )
 2266      ROM_LOAD( "fg3",          0x0000, 0x2000, CRC(97d4e63b) SHA1(e06ecb73148f16b33132767f8f0dffc37eeba5f1) )
 2267      ROM_LOAD( "fg2",          0x2000, 0x2000, CRC(f76e56ca) SHA1(32252d424f31aa899d6c614f1d1006c2ef49df84) )
 2268      ROM_LOAD( "fg1",          0x4000, 0x2000, CRC(698c395f) SHA1(46c6700b2943c35c9ac45791652eafbb4a4e059a) )
 2269      ROM_LOAD( "fg0",          0x6000, 0x2000, CRC(f23269fb) SHA1(9a418a372da18cf33bcfba07202cf2ac7a1dcd1d) )
 2270  ROM_END
 2271  
 2272  
 2273  ROM_START( mach3 )
 2274      ROM_REGION( 0x10000, "maincpu", 0 )
 2275      ROM_LOAD( "m3rom4.bin",   0x6000, 0x2000, CRC(8bfd5a44) SHA1(61f5c6c39047c1d0296e2cacce2be9525cb47176) )
 2276      ROM_LOAD( "m3rom3.bin",   0x8000, 0x2000, CRC(b1b045af) SHA1(4e71ca4661bf5daaf9e2ffbb930ac3b13e2e57bd) )
 2277      ROM_LOAD( "m3rom2.bin",   0xa000, 0x2000, CRC(fbdfb03d) SHA1(61d587558fc036fc3b55d3e36ebb6940e9eda258) )
 2278      ROM_LOAD( "m3rom1.bin",   0xc000, 0x2000, CRC(3b0ba80b) SHA1(bc7e961311b40f05f2998f10f0a68f2e515c8e66) )
 2279      ROM_LOAD( "m3rom0.bin",   0xe000, 0x2000, CRC(70c12bf4) SHA1(c26127b6e2a16791b3be8abac93be6af4f30fb3b) )
 2280  
 2281      ROM_REGION( 0x10000, "r2sound:audiocpu", 0 )
 2282      ROM_LOAD( "m3drom1.bin",  0xd000, 0x1000, CRC(a6e29212) SHA1(a73aafc2efa99e9ae0aecbb6075a10f7178ac938) )
 2283  
 2284      ROM_REGION( 0x10000, "r2sound:speechcpu", 0 )
 2285      ROM_LOAD( "m3yrom1.bin",  0xf000, 0x1000, CRC(eddf8872) SHA1(29ed0d1828639849bab826b3e2ab4eefac45fd85) )
 2286  
 2287      ROM_REGION( 0x2000, "bgtiles", 0 )
 2288      ROM_LOAD( "mach3bg0.bin", 0x0000, 0x1000, CRC(ea2f5257) SHA1(664502dd2b7ee4ce96820da532615f3902b45557) )
 2289      ROM_LOAD( "mach3bg1.bin", 0x1000, 0x1000, CRC(f543e4ce) SHA1(2a1b7dbbcd9756f836ca2e42973043b98a303082) )
 2290  
 2291      ROM_REGION( 0x8000, "sprites", 0 )
 2292      ROM_LOAD( "mach3fg3.bin", 0x0000, 0x2000, CRC(472128b4) SHA1(8c6f36cab5ec8abb6db2e6d52530560664b950fe) )
 2293      ROM_LOAD( "mach3fg2.bin", 0x2000, 0x2000, CRC(2a59e99e) SHA1(5c1faa244fc0f53cc2a52c8d4d40fb178706c2ed) )
 2294      ROM_LOAD( "mach3fg1.bin", 0x4000, 0x2000, CRC(9b88767b) SHA1(8071e11906b3f0026f9a210cc5a236d95ca1f659) )
 2295      ROM_LOAD( "mach3fg0.bin", 0x6000, 0x2000, CRC(0bae12a5) SHA1(7bc0b82ccab0e4498a7a2a9dc85f03125f25826e) )
 2296  
 2297      DISK_REGION( "laserdisc" )
 2298      DISK_IMAGE_READONLY( "mach3", 0, SHA1(d0f72bded7feff5c360f8749d6c27650a6964847) )
 2299  ROM_END
 2300  
 2301  
 2302  ROM_START( cobram3 )
 2303      ROM_REGION( 0x10000, "maincpu", 0 )
 2304      ROM_LOAD( "bh03",   0x8000, 0x2000, CRC(755cbbf5) SHA1(e3ea146f8c344af1e9bf51548ae4902cb09e589a) )
 2305      ROM_LOAD( "bh02",   0xa000, 0x2000, CRC(928ef670) SHA1(6f56454aaf76418ae94da2bd16b4e8309aca29a6) )
 2306      ROM_LOAD( "bh01",   0xc000, 0x2000, CRC(7d86ab08) SHA1(26b7eb089ca3fe3f8b1531316ce8f95e33b380e5) )
 2307      ROM_LOAD( "bh00",   0xe000, 0x2000, CRC(c19ad038) SHA1(4d20ae70d8ad1eaa61cb91d7a0cff6932fce30d2) )
 2308  
 2309      ROM_REGION( 0x10000, "r2sound:audiocpu", 0 )
 2310      ROM_LOAD( "m3drom1.bin",  0xd000, 0x1000, CRC(a6e29212) SHA1(a73aafc2efa99e9ae0aecbb6075a10f7178ac938) )
 2311  
 2312      ROM_REGION( 0x10000, "r2sound:speechcpu", 0 )
 2313      ROM_LOAD( "bh04",   0xe000, 0x2000, CRC(c3f61bc9) SHA1(d02374e6e29238def0cfb01c96c78b206f24d77e) )
 2314  
 2315      ROM_REGION( 0x2000, "bgtiles", 0 )
 2316      ROM_LOAD( "bh09",   0x0000, 0x1000, CRC(8c5dfac0) SHA1(5be28f807c4eb9df76a8f7519086ae57953d8c6f) )
 2317      ROM_LOAD( "bh0a",   0x1000, 0x1000, CRC(8b8da8dc) SHA1(9f03ac0e6b6396cd44843ea394d55d79848d6a27) )
 2318  
 2319      ROM_REGION( 0x10000, "sprites", 0 )
 2320      ROM_LOAD( "bh05",   0x0000, 0x2000, CRC(d8f49994) SHA1(0631457264ff7f8d5fb1edc2c0211992a67c73e6) )
 2321      ROM_LOAD( "bh08",   0x4000, 0x2000, CRC(d6439e2f) SHA1(84a6e574f76313ce065d8765f21bdda8fe5a9a7b) )
 2322      ROM_LOAD( "bh07",   0x8000, 0x2000, CRC(f94668d2) SHA1(b5c3a54cf80097ac447a8140bd5877a66712e240) )
 2323      ROM_LOAD( "bh06",   0xc000, 0x2000, CRC(ab6c7cf1) SHA1(3625f2e00a333552036bff99af25edeac5915d78) )
 2324  
 2325      DISK_REGION( "laserdisc" )
 2326      DISK_IMAGE_READONLY( "cobra", 0, SHA1(8390498294aca97a5d1769032e7b115d1a42f5d3) )
 2327  ROM_END
 2328  
 2329  
 2330  ROM_START( usvsthem )
 2331      ROM_REGION( 0x10000, "maincpu", 0 )
 2332      ROM_LOAD( "usvs.rm4",     0x6000, 0x2000, CRC(0d7a4072) SHA1(84a7eec31037243185ab40ab269be0f83946ebd5) )
 2333      ROM_LOAD( "usvs.rm3",     0x8000, 0x2000, CRC(6f32a671) SHA1(d54c1e09988f78ea706b4b0da675b27d9d407696) )
 2334      ROM_LOAD( "usvs.rm2",     0xa000, 0x2000, CRC(36770716) SHA1(797b48ef48f563ed21ea263297fe0ed61c69f41e) )
 2335      ROM_LOAD( "usvs.rm1",     0xc000, 0x2000, CRC(697bc989) SHA1(ebfc0868f949e5aba1efb8fbce06f795888d8e00) )
 2336      ROM_LOAD( "usvs.rm0",     0xe000, 0x2000, CRC(30cf6bd9) SHA1(527ad3b96ea4a77f6d6f8a89a9215da490292297) )
 2337  
 2338      ROM_REGION( 0x10000, "r2sound:audiocpu", 0 )
 2339      ROM_LOAD( "usvsdrom.1",   0xc000, 0x2000, CRC(c0b5cab0) SHA1(b18e8fd9837bb52d6b3d86f2b652f6573c7cd3b3) )
 2340  
 2341      ROM_REGION( 0x10000, "r2sound:speechcpu", 0 )
 2342      ROM_LOAD( "usvsyrom.1",   0xe000, 0x2000, CRC(c3d245ca) SHA1(d281b139ae6c58e855b2914a24ca4bc5f8800681) )
 2343  
 2344      ROM_REGION( 0x2000, "bgtiles", 0 )
 2345      ROM_LOAD( "usvs.bg0",     0x0000, 0x1000, CRC(8a0de09f) SHA1(6b56ffbe8569625ff307510645683b4e3f04e753) )
 2346      ROM_LOAD( "usvs.bg1",     0x1000, 0x1000, CRC(6fb64d3c) SHA1(0cf0fd60995e56eddc56c7fac6280abe3b87dbc9) )
 2347  
 2348      ROM_REGION( 0x10000, "sprites", 0 )
 2349      ROM_LOAD( "usvs.fg3",     0x0000, 0x4000, CRC(98703015) SHA1(120e87ef640db3f23c1d2c0abf4b6acff7714512) )
 2350      ROM_LOAD( "usvs.fg2",     0x4000, 0x4000, CRC(d3990707) SHA1(81d58f6bc6ec04b95036f81c4cd3516d0adf348e) )
 2351      ROM_LOAD( "usvs.fg1",     0x8000, 0x4000, CRC(a2057430) SHA1(e24aa35cb27fa41b75f5c01f4c083dc6eeb04c0d) )
 2352      ROM_LOAD( "usvs.fg0",     0xc000, 0x4000, CRC(7734e53f) SHA1(c1307596ba098c98e741f3c00686b514587e1d0a) )
 2353  
 2354      DISK_REGION( "laserdisc" )
 2355      DISK_IMAGE_READONLY( "usvsthem", 0, SHA1(c52530319dc70486f5ced95c121f1cab872e66d8) )
 2356  ROM_END
 2357  
 2358  
 2359  ROM_START( 3stooges )
 2360      ROM_REGION( 0x10000, "maincpu", 0 )
 2361      ROM_LOAD( "gv113ram.4",   0x2000, 0x1000, CRC(533bff2a) SHA1(58d0be8add4b02dc3e27cf6b17a05baf4304f3ce) )
 2362      ROM_LOAD( "gv113rom.4",   0x6000, 0x2000, CRC(8b6e52b8) SHA1(6e17e11afce92a7fa1735a724f0c0faf9375ac89) )
 2363      ROM_LOAD( "gv113rom.3",   0x8000, 0x2000, CRC(b816d8c4) SHA1(86e16888492390034ac04e3f6a9f56422575c778) )
 2364      ROM_LOAD( "gv113rom.2",   0xa000, 0x2000, CRC(b45b2a79) SHA1(7d0b19bec462ab67f518361afdf4b6982829ed07) )
 2365      ROM_LOAD( "gv113rom.1",   0xc000, 0x2000, CRC(34ab051e) SHA1(df416aaf34d6bbbdd79ae633842355a292ed935d) )
 2366      ROM_LOAD( "gv113rom.0",   0xe000, 0x2000, CRC(ab124329) SHA1(de1bc721eea74426035eec10a389f77b435aa9b9) )
 2367  
 2368      ROM_REGION( 0x10000, "r2sound:audiocpu", 0 )
 2369      ROM_LOAD( "drom1",        0xc000, 0x2000, CRC(87a9fa10) SHA1(9c07837dce1384d6b51b716aa8ceeb5bc247a911) )
 2370  
 2371      ROM_REGION( 0x10000, "r2sound:speechcpu", 0 )
 2372      ROM_LOAD( "yrom2",        0xc000, 0x2000, CRC(90f9c940) SHA1(646dacc902cf235948ac9c064c92390e2764370b) )
 2373      ROM_LOAD( "yrom1",        0xe000, 0x2000, CRC(55f8ab30) SHA1(a6b6318f12fd4a1fab61b82cde33759da615d5b2) )
 2374  
 2375      ROM_REGION( 0x2000, "bgtiles", ROMREGION_ERASE00 )
 2376      /* no ROMs; RAM is used instead */
 2377  
 2378      ROM_REGION( 0x8000, "sprites", 0 )
 2379      ROM_LOAD( "gv113fg3",     0x0000, 0x2000, CRC(28071212) SHA1(33ce5cfae3491658f8b4cb977dc2da0a75dffee4) )
 2380      ROM_LOAD( "gv113fg2",     0x2000, 0x2000, CRC(9fa3dfde) SHA1(693327c60691748bf16e486b2962ebe019009a69) )
 2381      ROM_LOAD( "gv113fg1",     0x4000, 0x2000, CRC(fb223854) SHA1(b1eaad971edd2f3a2aed66c5f9d0f27d6ffd5466) )
 2382      ROM_LOAD( "gv113fg0",     0x6000, 0x2000, CRC(95762c53) SHA1(e486a232e6b62ab21b9c3be521606dea2a451889) )
 2383  ROM_END
 2384  
 2385  
 2386  ROM_START( vidvince )
 2387      ROM_REGION( 0x10000, "maincpu", 0 )
 2388      ROM_LOAD( "gv132_ram4_2732.c9c10",   0x2000, 0x1000, CRC(67a4927b) SHA1(41dfd13ea24bb3b0f8f917f4af5f6b33af1bc2e7) )
 2389      ROM_LOAD( "gv132_rom4_2764.c16",     0x6000, 0x2000, CRC(3c5f39f5) SHA1(3722c30bcd60fc0c1c4ca4dd800a3654fba67599) )
 2390      ROM_LOAD( "gv132_rom3_2764.c14c15",  0x8000, 0x2000, CRC(3983cb79) SHA1(3c527ed2428b8cb86a6896a74c873317a9f7b411) )
 2391      ROM_LOAD( "gv132_rom2_2764.c13c14",  0xa000, 0x2000, CRC(0f5ebab9) SHA1(680874b9857565857375096d05203997669a7215) )
 2392      ROM_LOAD( "gv132_rom1_2764.c12c13",  0xc000, 0x2000, CRC(a5bf40b7) SHA1(a5a193173fa7b764706bf8d3eaaaf18c6812e436) )
 2393      ROM_LOAD( "gv132_rom0_2764.c11c12",  0xe000, 0x2000, CRC(2c02b598) SHA1(0c214f6625d6ef88bf89d96776683e15cf4a85c4) )
 2394  
 2395      ROM_REGION( 0x10000, "r2sound:audiocpu", 0 )
 2396      ROM_LOAD( "gv132_drom_snd_2764.k2",        0xc000, 0x2000, CRC(18d9d72f) SHA1(985007f49885621eb96e86dc51812983bd113550) )
 2397  
 2398      ROM_REGION( 0x10000, "r2sound:speechcpu", 0 )
 2399      ROM_LOAD( "gv132_yrom2_snd_2764.k3",        0xc000, 0x2000, CRC(ff59f618) SHA1(c8b2cb1ab3b69f94dd6be87da8bdfc85c6ed8707) )
 2400      ROM_LOAD( "gv132_yrom1_snd_2764.n3",        0xe000, 0x2000, CRC(befa4b97) SHA1(424b40844629631a3f31cc12c61ac7000b5f3eb9) )
 2401  
 2402      ROM_REGION( 0x2000, "bgtiles", 0 )
 2403      ROM_LOAD( "gv132_bg0_2732.e11e12",          0x0000, 0x1000, CRC(1521bb4a) SHA1(a3a1209c74f1ca18f0be2d2c7b1fa2af625dfa5f) )
 2404      /* RAM is used for the other half */
 2405  
 2406      ROM_REGION( 0x8000, "sprites", 0 )
 2407      ROM_LOAD( "gv132_fg3_2764.k7k8",   0x0000, 0x2000, CRC(42a78a52) SHA1(7d24006d6746d21939dd0c6241a8d67c42073163) )
 2408      ROM_LOAD( "gv132_fg2_2764.k6",     0x2000, 0x2000, CRC(8ae428ba) SHA1(2e7fe726f106f870ac1a7f3463d6e53174a7bc1b) )
 2409      ROM_LOAD( "gv132_fg1_2764.k5",     0x4000, 0x2000, CRC(ea423550) SHA1(f683ddef80a424cee613ab16334a618d68f4595d) )
 2410      ROM_LOAD( "gv132_fg0_2764.k4",     0x6000, 0x2000, CRC(74c996a6) SHA1(de72c9dcd6f6d42403ecaad5c202eb85e805dcc5) )
 2411  ROM_END
 2412  
 2413  
 2414  ROM_START( wizwarz )
 2415      ROM_REGION( 0x10000, "maincpu", 0 )
 2416      ROM_LOAD( "gv110_rom4_2764.c16",    0x6000, 0x2000, CRC(e4e6c29b) SHA1(8cc7b04afb613149c3d2fe160dc0ed1d3fe005af) )
 2417      ROM_LOAD( "gv110_rom3_2764.c14c15", 0x8000, 0x2000, CRC(aa8e0fc4) SHA1(7bae2b48d14c097285d0dc1fa2a133fb24091602) )
 2418      ROM_LOAD( "gv110_rom2_2764.c13c14", 0xa000, 0x2000, CRC(16c7d8ba) SHA1(b0950e45548ba991b0415927c8e46c98c4df5b13) )
 2419      ROM_LOAD( "gv110_rom1_2764.c12c13", 0xc000, 0x2000, CRC(358895b5) SHA1(38a4a27849ab491a6e3dd3415fe684d1c71c392d) )
 2420      ROM_LOAD( "gv110_rom0_2764.c11c12", 0xe000, 0x2000, CRC(f7157e17) SHA1(1b155602557ad173d74d4d5cf953b206b262987b) )
 2421  
 2422      ROM_REGION( 0x10000, "r2sound:audiocpu", 0 )
 2423      ROM_LOAD( "gv110_drom1_snd_2732.k2",0xd000, 0x1000, CRC(05ca79da) SHA1(f9e9b0de02d618aeb73f7218a49b41d7b94c24a4) )
 2424  
 2425      ROM_REGION( 0x10000, "r2sound:speechcpu", 0 )
 2426      ROM_LOAD( "gv110_yrom1_snd_2732.n3",0xf000, 0x1000, CRC(1e3de643) SHA1(7717547c6c5b1ff178595c67f19265dc59130d90) )
 2427  
 2428      ROM_REGION( 0x2000, "bgtiles", 0 )
 2429      ROM_LOAD( "gv110_bg0_2732.e11e12",  0x0000, 0x1000, CRC(7437813c) SHA1(11f93c8b965d861a1ebb0f894a956db4a77ee7e5) )
 2430      ROM_LOAD( "gv110_bg1_2732.e13",     0x1000, 0x1000, CRC(70a54cc5) SHA1(769d17d44c3042df0ea9ff0c20f87f8e44dedc05) )
 2431  
 2432      ROM_REGION( 0x8000, "sprites", 0 )
 2433      ROM_LOAD( "gv110_fg3_2764.k7k8",    0x0000, 0x2000, CRC(ce0c3e8b) SHA1(5823d4705091ecbd7dcd052719a88fd27f2fb8ee) )
 2434      ROM_LOAD( "gv110_fg2_2764.k6",      0x2000, 0x2000, CRC(e42a166f) SHA1(c0f203cd08e6b5db45bd8eb3cfa05fe9a282a97d) )
 2435      ROM_LOAD( "gv110_fg1_2764.k5",      0x4000, 0x2000, CRC(b947cf84) SHA1(7b04ebb408a230696dcc77c6f5b6b46e5b9ae7ea) )
 2436      ROM_LOAD( "gv110_fg0_2764.k4",      0x6000, 0x2000, CRC(f7ba0fcb) SHA1(73d656ac4a4a2bc8d1f04d00c8af0d808ea31388) )
 2437  ROM_END
 2438  
 2439  
 2440  
 2441  /*************************************
 2442   *
 2443   *  Driver initialization
 2444   *
 2445   *************************************/
 2446  
 2447  DRIVER_INIT_MEMBER(gottlieb_state,ramtiles)
 2448  {
 2449      m_gfxcharlo = m_gfxcharhi = 0;
 2450  }
 2451  
 2452  
 2453  DRIVER_INIT_MEMBER(gottlieb_state,romtiles)
 2454  {
 2455      m_gfxcharlo = m_gfxcharhi = 1;
 2456  }
 2457  
 2458  
 2459  DRIVER_INIT_MEMBER(gottlieb_state,qbert)
 2460  {
 2461      DRIVER_INIT_CALL(romtiles);
 2462      machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x5803, 0x5803, 0, 0x07f8, write8_delegate(FUNC(gottlieb_state::qbert_output_w),this));
 2463  }
 2464  
 2465  
 2466  DRIVER_INIT_MEMBER(gottlieb_state,qbertqub)
 2467  {
 2468      DRIVER_INIT_CALL(romtiles);
 2469      machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x5803, 0x5803, 0, 0x07f8, write8_delegate(FUNC(gottlieb_state::qbertqub_output_w),this));
 2470  }
 2471  
 2472  
 2473  DRIVER_INIT_MEMBER(gottlieb_state,stooges)
 2474  {
 2475      DRIVER_INIT_CALL(ramtiles);
 2476      machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x5803, 0x5803, 0, 0x07f8, write8_delegate(FUNC(gottlieb_state::stooges_output_w),this));
 2477  }
 2478  
 2479  
 2480  DRIVER_INIT_MEMBER(gottlieb_state,screwloo)
 2481  {
 2482      m_gfxcharlo = 0;
 2483      m_gfxcharhi = 1;
 2484  }
 2485  
 2486  
 2487  DRIVER_INIT_MEMBER(gottlieb_state,vidvince)
 2488  {
 2489      m_gfxcharlo = 1;
 2490      m_gfxcharhi = 0;
 2491  }
 2492  
 2493  
 2494  
 2495  /*************************************
 2496   *
 2497   *  Game drivers
 2498   *
 2499   *************************************/
 2500  
 2501  /* games using rev 1 sound board */
 2502  GAME( 1982, reactor,   0,        reactor,   reactor,  gottlieb_state, ramtiles, ROT0,   "Gottlieb", "Reactor", GAME_IMPERFECT_SOUND )
 2503  GAME( 1982, qbert,     0,        qbert,     qbert,    gottlieb_state, qbert,    ROT270, "Gottlieb", "Q*bert (US set 1)", GAME_IMPERFECT_SOUND )
 2504  GAME( 1982, qberta,    qbert,    qbert,     qbert,    gottlieb_state, qbert,    ROT270, "Gottlieb", "Q*bert (US set 2)", GAME_IMPERFECT_SOUND )
 2505  GAME( 1982, qbertj,    qbert,    qbert,     qbert,    gottlieb_state, qbert,    ROT270, "Gottlieb (Konami license)", "Q*bert (Japan)", GAME_IMPERFECT_SOUND )
 2506  GAME( 1982, myqbert,   qbert,    qbert,     qbert,    gottlieb_state, qbert,    ROT270, "Gottlieb", "Mello Yello Q*bert", GAME_IMPERFECT_SOUND )
 2507  GAME( 1982, qberttst,  qbert,    qbert,     qbert,    gottlieb_state, qbert,    ROT270, "Gottlieb", "Q*bert (early test version)", GAME_IMPERFECT_SOUND )
 2508  GAME( 1982, qbtrktst,  qbert,    qbert,     qbert,    gottlieb_state, qbert,    ROT270, "Gottlieb", "Q*bert Board Input Test Rom", GAME_IMPERFECT_SOUND )
 2509  GAME( 1982, insector,  0,        gottlieb1, insector, gottlieb_state, romtiles, ROT0,   "Gottlieb", "Insector (prototype)", 0 )
 2510  GAME( 1982, tylz,      0,        tylz,      tylz,     gottlieb_state, romtiles, ROT0,   "Mylstar",  "Tylz (prototype)", GAME_IMPERFECT_SOUND ) // modified sound hw?
 2511  GAME( 1984, argusg,    0,        gottlieb1, argusg,   gottlieb_state, ramtiles, ROT0,   "Gottlieb", "Argus (Gottlieb, prototype)" , 0) // aka Guardian / Protector?
 2512  GAME( 1983, mplanets,  0,        gottlieb1, mplanets, gottlieb_state, romtiles, ROT270, "Gottlieb", "Mad Planets", 0 )
 2513  GAME( 1983, mplanetsuk,mplanets, gottlieb1, mplanets, gottlieb_state, romtiles, ROT270, "Gottlieb (Taitel license)", "Mad Planets (UK)", 0 )
 2514  GAME( 1983, krull,     0,        gottlieb1, krull,    gottlieb_state, ramtiles, ROT270, "Gottlieb", "Krull", 0 )
 2515  GAME( 1983, kngtmare,  0,        gottlieb1, kngtmare, gottlieb_state, romtiles, ROT0,   "Gottlieb", "Knightmare (prototype)", GAME_NO_SOUND )
 2516  GAME( 1983, sqbert,    0,        qbert,     qbert,    gottlieb_state, qbert,    ROT270, "Mylstar", "Faster, Harder, More Challenging Q*bert (prototype)", GAME_IMPERFECT_SOUND )
 2517  GAME( 1983, qbertqub,  0,        qbert,     qbertqub, gottlieb_state, qbertqub, ROT270, "Mylstar", "Q*bert's Qubes", GAME_IMPERFECT_SOUND )
 2518  GAME( 1984, curvebal,  0,        gottlieb1, curvebal, gottlieb_state, romtiles, ROT270, "Mylstar", "Curve Ball", 0 )
 2519  
 2520  /* games using rev 2 sound board */
 2521  GAME( 1983, screwloo, 0,         screwloo,  screwloo, gottlieb_state, screwloo, ROT0,   "Mylstar", "Screw Loose (prototype)", 0 )
 2522  GAME( 1983, mach3,    0,         g2laser,   mach3,    gottlieb_state, romtiles, ROT0,   "Mylstar", "M.A.C.H. 3", 0 )
 2523  GAME( 1984, cobram3,  cobra,     cobram3,   cobram3,  gottlieb_state, romtiles, ROT0,   "Data East", "Cobra Command (M.A.C.H. 3 hardware)", 0 )
 2524  GAME( 1984, usvsthem, 0,         g2laser,   usvsthem, gottlieb_state, romtiles, ROT0,   "Mylstar", "Us vs. Them", 0 )
 2525  GAME( 1984, 3stooges, 0,         gottlieb2, 3stooges, gottlieb_state, stooges,  ROT0,   "Mylstar", "The Three Stooges In Brides Is Brides", 0 )
 2526  GAME( 1984, vidvince, 0,         gottlieb2, vidvince, gottlieb_state, vidvince, ROT0,   "Mylstar", "Video Vince and the Game Factory (prototype)", GAME_IMPERFECT_GRAPHICS ) // sprite wrapping issues
 2527  GAME( 1984, wizwarz,  0,         gottlieb2, wizwarz,  gottlieb_state, romtiles, ROT0,   "Mylstar", "Wiz Warz (prototype)", 0 )