1 /***************************************************************************
2 
3 Gottlieb driver : dedicated to Warren Davis, Jeff Lee, Tim Skelly & David Thiel
4 
5 driver by Fabrice Frances & Nicola Salmoria
6 
7 Notes:
8 There was a bug in the hardware of the GG1 and GG2 boards, which is not
9 emulated. The bug seems to have disappeared with the later revision of the
10 board, e.g the board used by 3Stooges and Mach3 don't seem to have it).
11 The bug was affecting the first character column (on horizontal games):
12 screen memory could be used, but whatever was stored in this column, always
13 the same character was displayed.
14 This led to two consequences:
15 - the image on the monitor had to be stretched so that the column was not
16   visible
17 - game designers were not using the first column. In fact, when the first
18   column was ejected from the screen, the last one was usually out too,
19   so it wasn't used either...
20 
21 ****************************************************************************
22 
23 Reactor: earlier version of the board, with a different memory map
24 
25 Main processor (8088 minimum mode)
26 0000-1fff RAM (NOT battery backed unlike all the others)
27 2000-2fff sprites
28 3000-37ff video ram
29 4000-4fff char generator ram
30 6000-67ff palette ram (palette of 16 colors)
31 7000-77ff i/o ports
32 8000-ffff ROM
33 
34 memory mapped ports:
35 
36 read:
37 7000    Dip switch
38 7001    Inputs 10-17
39 7002    trackball H
40 7003    trackball V
41 7004    Inputs 40-47
42 
43 write:
44 7000    watchdog reset
45 7001    trackball clear
46 7002    Outputs 20-27
47 7003    Flipflop outputs:
48 		b0: F/B priority
49 		b1: horiz. flip
50 		b2: vert. flip
51 		b3: Output 33
52 		b4: coin counter
53 		b5: left lamp (1P/3Lives start)
54 		b6: middle lamps (2P/3Lives start, 1P/7Lives start)
55 		b7: right lamp (2P/7Lives start)
56 7004    Outputs 40-47
57 
58 interrupts:
59 INTR not connected
60 NMI connected to vertical blank
61 
62 
63 
64 Gottlieb games memory map
65 
66 Main processor (8088 minimum mode)
67 0000-0fff RAM (battery backed)
68 1000-1fff RAM or ROM (selected with jumpers on the board)
69 2000-2fff RAM or ROM (selected with jumpers on the board)
70 3000-37ff sprites. The manual says there are 63 sprites (NOT 64),
71           but the Q*Bert object priority test leaves sprite #63 dangling, so
72 		  they are probably only 62.
73 3800-3fff video RAM
74 4000-4fff char generator RAM (can be replaced by a ROM twice as large,
75           selection made with jumpers on the board. If it's ROM, the CPU
76 		  cannot fully access it, I think it could read half the data if it
77 		  wanted to but none of the games do that)
78 5000-57ff palette ram (palette of 16 colors)
79 5800-5fff i/o ports
80 6000-ffff ROM (not necessarily fully populated)
81 
82 memory mapped ports:
83 
84 read:
85 5800    Dip switch
86 5801    Inputs 10-17
87 5802    trackball H (optional)
88 5803    trackball V (optional)
89 5804    Inputs 40-47
90 
91 write:
92 5800    watchdog reset
93 5801    trackball clear (optional)
94 5802    Outputs 20-27
95 5803    Flipflop outputs:
96 		b0: F/B priority
97 		b1: horiz. flip (sprite bank in Us vs. Them)
98 		b2: vert. flip (maybe genlock control in the laser disc games)
99 		b3: Output 33
100 		b4: coin counter (sprite bank in Q*Bert Qubes)
101 		b5: Q*Bert: kicker; Q*Bert Qubes: coin counter
102 		b5/b6: 3 Stooges: joystick input multiplexer
103 		b7: ?
104 5804    Outputs 40-47
105 
106 interrupts:
107 INTR not connected
108 NMI connected to vertical blank
109 
110 
111 
112 Sound processor (6502) memory map (earlier revision, used by games up to Krull):
113 0000-0fff RIOT (6532)
114 1000-1fff amplitude DAC
115 2000-2fff SC01 voice chip
116 3000-3fff voice clock DAC
117 4000-4fff expansion socket
118 5000-5fff expansion socket
119 6000-6fff expansion socket or ROM (selected with jumpers on the board)
120 7000-7fff ROM
121 (repeated in 8000-ffff, A15 only used in expansion socket)
122 
123 Use of I/Os on the RIOT:
124 both ports A and B are programmed as inputs, A is connected to the main
125 motherboard, and B has SW1 (test) connected on bit 6.
126 
127 interrupts:
128 INTR is connected to the RIOT, so an INTR can be generated by a variety
129 of sources, e.g active edge detection on PA7, or timer countdown.
130 It seems that all gottlieb games program the interrupt conditions so that
131 a positive active edge on PA7 triggers an interrupt, so the
132 main board ensures a command is correctly received by sending nul (0)
133 commands between two commands. Also, the timer interrupt is enabled but
134 doesn't seem to serve any purpose...(?)
135 
136 
137 In the later revision of the sound board, used from M.A.C.H. 3 onwards, there
138 are two 6502, two 8910, a DAC and a GI SP-0250 speech chip.
139 
140 
141 Video timings:
142 XTAL = 20 MHz
143 Horizontal video frequency: HSYNC = XTAL/4/318 = 15.72327 kHz
144 Video frequency: VSYNC = HSYNC/256 = 61.41903 Hz
145 VBlank duration: 1/VSYNC * (16/256) = 1017.6 us
146 
147 ***************************************************************************/
148 
149 #include "driver.h"
150 #include "vidhrdw/generic.h"
151 
152 extern UINT8 *gottlieb_charram;
153 
154 extern WRITE_HANDLER( gottlieb_videoram_w );
155 extern WRITE_HANDLER( gottlieb_charram_w );
156 extern WRITE_HANDLER( gottlieb_video_outputs_w );
157 extern WRITE_HANDLER( usvsthem_video_outputs_w );
158 extern WRITE_HANDLER( gottlieb_paletteram_w );
159 
160 extern VIDEO_START( gottlieb );
161 extern VIDEO_UPDATE( gottlieb );
162 
163 extern WRITE_HANDLER( gottlieb_sh_w );
164 
165 extern UINT8 *riot_ram;
166 extern READ_HANDLER( riot_ram_r );
167 extern READ_HANDLER( gottlieb_riot_r );
168 extern WRITE_HANDLER( riot_ram_w );
169 extern WRITE_HANDLER( gottlieb_riot_w );
170 extern WRITE_HANDLER( gottlieb_speech_w );
171 extern WRITE_HANDLER( gottlieb_speech_clock_DAC_w );
172 extern void gottlieb_sound_init(void);
173 extern READ_HANDLER( stooges_sound_input_r );
174 extern WRITE_HANDLER( stooges_8910_latch_w );
175 extern WRITE_HANDLER( stooges_sound_control_w );
176 extern WRITE_HANDLER( gottlieb_nmi_rate_w );
177 extern WRITE_HANDLER( gottlieb_cause_dac_nmi_w );
178 
179 
180 static UINT8 *audiobuffer_region;
181 
MACHINE_INIT(gottlieb)182 MACHINE_INIT( gottlieb )
183 {
184 	UINT8 *ram = memory_region(REGION_CPU1);
185 	cpu_setbank(1, &ram[0x8000]);
186 	cpu_setbank(2, &ram[0x0000]);
187 	audiobuffer_region = memory_region(REGION_USER1);
188 }
189 
190 
191 static int track[2];
192 
READ_HANDLER(gottlieb_track_0_r)193 READ_HANDLER( gottlieb_track_0_r )
194 {
195 	return input_port_2_r(offset) - track[0];
196 }
197 
READ_HANDLER(gottlieb_track_1_r)198 READ_HANDLER( gottlieb_track_1_r )
199 {
200 	return input_port_3_r(offset) - track[1];
201 }
202 
WRITE_HANDLER(gottlieb_track_reset_w)203 WRITE_HANDLER( gottlieb_track_reset_w )
204 {
205 	/* reset the trackball counters */
206 	track[0] = input_port_2_r(offset);
207 	track[1] = input_port_3_r(offset);
208 }
209 
210 static int joympx;
211 
READ_HANDLER(stooges_IN4_r)212 READ_HANDLER( stooges_IN4_r )
213 {
214 	int joy;
215 
216 	switch (joympx)
217 	{
218 		case 0:
219 		default:
220 			joy = ((readinputport(4) >> 0) & 0x0f);	/* joystick 1 */
221 			break;
222 		case 1:
223 			joy = ((readinputport(5) >> 0) & 0x0f);	/* joystick 2 */
224 			break;
225 		case 2:
226 			joy = ((readinputport(5) >> 4) & 0x0f);	/* joystick 3 */
227 			break;
228 	}
229 
230 	return joy | (readinputport(4) & 0xf0);
231 }
232 
WRITE_HANDLER(reactor_output_w)233 WRITE_HANDLER( reactor_output_w )
234 {
235 	set_led_status(0,data & 0x20);
236 	set_led_status(1,data & 0x40);
237 	set_led_status(2,data & 0x80);
238 	gottlieb_video_outputs_w(offset,data);
239 }
240 
WRITE_HANDLER(stooges_output_w)241 WRITE_HANDLER( stooges_output_w )
242 {
243 	joympx = (data >> 5) & 0x03;
244 	gottlieb_video_outputs_w(offset,data);
245 }
246 
247 
248 static int current_frame = 1;
249 static int laserdisc_playing;
250 static int lasermpx;
251 static int audioptr;
252 static int audioready=1;
253 static int skipfirstbyte;
254 static int discready;
255 static int lastcmd;
256 static int odd_field;
257 static int access_time;
258 
259 
260 /* The only sure thing I know about the Philips 24-bit frame number code is that the
261  * 4 most significant bits are 1's and these four 1's are used to detect a valid frame
262  * number when shifting bits from right to left...
263  * From the audio code it seems it's a simple BCD numbering...
264  * (what happens when four consecutive 1's are inside the number, eg 00078 ?)
265  * Only 19 bits are returned to the game machine, this gives a max frame number of 79999.
266  * The size of the audio buffer is 1024 bytes. When it is full, the "audio buffer ready"
267  * flag is raised, and the frame decoder tries again to synchronize with a 0x67 pattern
268  * Each 1024-byte buffer contains target data for 53 frames;
269  * target data for each frame is 19-bytes long including one byte of checksum
270  * and the frame number code of the first of these 53 frames is stored at the beginning
271  * This gives a total of 1+3+3+19*53=1014 bytes, the 10 last bytes are ignored
272  */
273 
READ_HANDLER(gottlieb_laserdisc_status_r)274 READ_HANDLER( gottlieb_laserdisc_status_r )
275 {
276 	int tmp;
277 	switch (offset)
278 	{
279 		case 0:
280 			tmp = current_frame % 100;
281 			logerror("LSB frame read: %d\n",tmp);
282 			return ((tmp / 10) << 4) | (tmp % 10);
283 			break;
284 		case 1:
285 			tmp = (current_frame / 100) % 100;
286 			logerror("MSB frame read: %d\n",tmp);
287 			return ((tmp / 10) << 4) | (tmp % 10);
288 			break;
289 		case 2:
290 			if (lasermpx == 1) {
291 				/* bits 0-2 frame number MSN */
292 				/* bit 3 audio buffer ready */
293 				/* bit 4 ready to send new laserdisc command? */
294 				/* bit 5 disc ready */
295 				/* bit 6 break in audio trasmission */
296 				/* bit 7 missing audio clock */
297 				return ((current_frame / 10000) & 0x7) | (audioready << 3) | 0x10 | (discready << 5);
298 			} else {	/* read audio buffer */
299 				if (skipfirstbyte) audioptr++;
300 				skipfirstbyte = 0;
301 				if (audiobuffer_region) {
302 					logerror("audio bufread: %02x\n",audiobuffer_region[audioptr]);
303 					return audiobuffer_region[audioptr++];
304 				} else {
305 					logerror("audiobuffer is null !!");
306 					return 0xFF; /* don't know what to do in this case ;-) */
307 				}
308 			}
309 			break;
310 	}
311 
312 	return 0;
313 }
314 
WRITE_HANDLER(gottlieb_laserdisc_mpx_w)315 WRITE_HANDLER( gottlieb_laserdisc_mpx_w )
316 {
317 	lasermpx = data & 1;
318 	if (lasermpx==0) skipfirstbyte=1;	/* first byte of the 1K buffer (0x67) is not returned... */
319 }
320 
WRITE_HANDLER(gottlieb_laserdisc_command_w)321 WRITE_HANDLER( gottlieb_laserdisc_command_w )
322 {
323 	static int loop;
324 	int cmd;
325 
326 	/* commands are written in three steps, the first two the command is */
327 	/* written (maybe one to load the latch, the other to start the send), */
328 	/* the third 0 (maybe to clear the latch) */
329 	if (data == 0) return;
330 	if (loop++ & 1) return;
331 
332 	if ((data & 0xe0) != 0x20)
333 	{
334 logerror("error: laserdisc command %02x\n",data);
335 		return;
336 	}
337 
338 	cmd =	((data & 0x10) >> 4) |
339 			((data & 0x08) >> 2) |
340 			((data & 0x04) >> 0) |
341 			((data & 0x02) << 2) |
342 			((data & 0x01) << 4);
343 
344 logerror("laserdisc command %02x -> %02x\n",data,cmd);
345 	if (lastcmd == 0x0b && (cmd & 0x10))	/* seek frame # */
346 	{
347 		current_frame = current_frame * 10 + (cmd & 0x0f);
348 		while (current_frame >= 100000)
349 			current_frame -= 100000;
350 		audioptr = -1;
351 	}
352 	else
353 	{
354 		if (cmd == 0x04)					/* step forward */
355 		{
356 			laserdisc_playing = 0;
357 			current_frame++;
358 		}
359 		if (cmd == 0x05) 					/* play */
360 		{
361 			laserdisc_playing = 1;
362 			discready = 1;
363 		}
364 		if (cmd == 0x0b)					/* seek frame */
365 		{
366 			laserdisc_playing = 0;
367 			discready = 0;
368 			access_time = 60;		/* 1s access time */
369 		}
370 		if (cmd == 0x0f)	 				/* stop */
371 		{
372 			laserdisc_playing = 0;
373 			discready = 0;
374 		}
375 		lastcmd = cmd;
376 	}
377 }
378 
INTERRUPT_GEN(gottlieb_interrupt)379 INTERRUPT_GEN( gottlieb_interrupt )
380 {
381 	if (access_time > 0) {
382 		access_time--;
383 		if (access_time == 0)
384 			discready = 1;
385 	} else if (laserdisc_playing) {
386 		odd_field ^= 1;
387 		if (odd_field)		/* the manual says the video frame number is only present in the odd field) */
388 		{
389 			current_frame++;
390 logerror("current frame : %d\n",current_frame);
391 
392 			if (current_frame%53==0)
393 			{
394 				int seq = current_frame / 53;
395 				if (seq >= 44) {	/* 44*53 frames without target data at the beginning of the disc */
396 					audioptr = (seq - 44)*1024;
397 					audioready = 1;
398 				}
399 			}
400 			else audioready = 0;
401 		}
402 	}
403 	cpu_set_irq_line(0, IRQ_LINE_NMI, PULSE_LINE);
404 }
405 
406 
MEMORY_READ_START(reactor_readmem)407 static MEMORY_READ_START( reactor_readmem )
408 	{ 0x00000, 0x01fff, MRA_RAM },
409 	{ 0x03000, 0x033ff, MRA_RAM },
410 	{ 0x04000, 0x04fff, MRA_RAM },
411 	{ 0x07000, 0x07000, input_port_0_r },	/* DSW */
412 	{ 0x07001, 0x07001, input_port_1_r },	/* buttons */
413 	{ 0x07002, 0x07002, gottlieb_track_0_r },	/* trackball H */
414 	{ 0x07003, 0x07003, gottlieb_track_1_r },	/* trackball V */
415 	{ 0x07004, 0x07004, input_port_4_r },	/* joystick */
416 	{ 0x08000, 0x0ffff, MRA_ROM },
417 	/* map the ROM into Fxxxx so we can boot */
418 	{ 0xf8000, 0xfffff, MRA_BANK1 },
419 MEMORY_END
420 
421 static MEMORY_WRITE_START( reactor_writemem )
422 	{ 0x00000, 0x01fff, MWA_RAM },
423 	{ 0x02000, 0x020ff, MWA_RAM, &spriteram, &spriteram_size },
424 	{ 0x03000, 0x033ff, gottlieb_videoram_w, &videoram },
425 	{ 0x03400, 0x037ff, gottlieb_videoram_w },	/* mirror address, some games write to it */
426 	{ 0x04000, 0x04fff, gottlieb_charram_w, &gottlieb_charram },
427 	{ 0x06000, 0x0601f, gottlieb_paletteram_w, &paletteram },
428 	{ 0x07000, 0x07000, watchdog_reset_w },
429 	{ 0x07001, 0x07001, gottlieb_track_reset_w },
430 	{ 0x07002, 0x07002, gottlieb_sh_w }, /* sound/speech command */
431 	{ 0x07003, 0x07003, reactor_output_w },       /* OUT1 */
432 	{ 0x08000, 0x0ffff, MWA_ROM },
433 MEMORY_END
434 
435 static MEMORY_READ_START( gottlieb_readmem )
436 	{ 0x00000, 0x00fff, MRA_RAM },
437 	{ 0x01000, 0x01fff, MRA_RAM },	/* or ROM */
438 	{ 0x02000, 0x02fff, MRA_RAM },	/* or ROM */
439 	{ 0x03800, 0x03bff, MRA_RAM },
440 	{ 0x04000, 0x04fff, MRA_RAM },
441 	{ 0x05800, 0x05800, input_port_0_r },	/* DSW */
442 	{ 0x05801, 0x05801, input_port_1_r },	/* buttons */
443 	{ 0x05802, 0x05802, gottlieb_track_0_r },	/* trackball H */
444 	{ 0x05803, 0x05803, gottlieb_track_1_r },	/* trackball V */
445 	{ 0x05804, 0x05804, input_port_4_r },	/* joystick */
446 	{ 0x05805, 0x05807, gottlieb_laserdisc_status_r },
447 	{ 0x06000, 0x0ffff, MRA_ROM },
448 	/* Us vs Them and Q*bert Qubes use the Exxxx address space */
449 	{ 0xe5800, 0xe5800, input_port_0_r },	/* DSW */
450 	{ 0xe5801, 0xe5801, input_port_1_r },	/* buttons */
451 	{ 0xe5802, 0xe5802, gottlieb_track_0_r },	/* trackball H */
452 	{ 0xe5803, 0xe5803, gottlieb_track_1_r },	/* trackball V */
453 	{ 0xe5804, 0xe5804, input_port_4_r },	/* joystick */
454 	{ 0xe5805, 0xe5807, gottlieb_laserdisc_status_r },
455 	{ 0xe0000, 0xeffff, MRA_BANK2 },
456 	/* map the ROM into Fxxxx so we can boot */
457 	{ 0xf8000, 0xfffff, MRA_BANK1 },
458 MEMORY_END
459 
460 static MEMORY_WRITE_START( gottlieb_writemem )
461 	{ 0x00000, 0x00fff, MWA_RAM, &generic_nvram, &generic_nvram_size },
462 	{ 0x01000, 0x01fff, MWA_RAM },	/* ROM in Krull */
463 	{ 0x02000, 0x02fff, MWA_RAM },	/* ROM in Krull and 3 Stooges */
464 	{ 0x03000, 0x030ff, MWA_RAM, &spriteram, &spriteram_size },
465 	{ 0x03800, 0x03bff, gottlieb_videoram_w, &videoram },
466 	{ 0x03c00, 0x03fff, gottlieb_videoram_w },	/* mirror address, some games write to it */
467 	{ 0x04000, 0x04fff, gottlieb_charram_w, &gottlieb_charram },
468 	{ 0x05000, 0x0501f, gottlieb_paletteram_w, &paletteram },
469 	{ 0x05800, 0x05800, watchdog_reset_w },
470 	{ 0x05801, 0x05801, gottlieb_track_reset_w },
471 	{ 0x05802, 0x05802, gottlieb_sh_w }, /* sound/speech command */
472 	{ 0x05803, 0x05803, gottlieb_video_outputs_w },       /* OUT1 */
473 	{ 0x06000, 0x0ffff, MWA_ROM },
474 	/* Q*bert Qubes uses the Exxxx address space */
475 	{ 0xe0000, 0xe37ff, MWA_BANK2 },
476 	{ 0xe3800, 0xe3bff, gottlieb_videoram_w },
477 	{ 0xe3c00, 0xe3fff, gottlieb_videoram_w },	/* mirror address, some games write to it */
478 	{ 0xe4000, 0xe4fff, gottlieb_charram_w },
479 	{ 0xe5000, 0xe501f, gottlieb_paletteram_w },
480 	{ 0xe5800, 0xe5800, watchdog_reset_w },
481 	{ 0xe5801, 0xe5801, gottlieb_track_reset_w },
482 	{ 0xe5802, 0xe5802, gottlieb_sh_w }, /* sound/speech command */
483 	{ 0xe5803, 0xe5803, gottlieb_video_outputs_w },       /* OUT1 */
484 MEMORY_END
485 
486 
487 /* same as above, different video_outputs plus laser disc control outputs */
488 static MEMORY_WRITE_START( usvsthem_writemem )
489 	{ 0x00000, 0x00fff, MWA_RAM, &generic_nvram, &generic_nvram_size },
490 	{ 0x01000, 0x01fff, MWA_RAM },	/* ROM in Krull */
491 	{ 0x02000, 0x02fff, MWA_RAM },	/* ROM in Krull and 3 Stooges */
492 	{ 0x03000, 0x030ff, MWA_RAM, &spriteram, &spriteram_size },
493 	{ 0x03800, 0x03bff, gottlieb_videoram_w, &videoram },
494 	{ 0x03c00, 0x03fff, gottlieb_videoram_w },	/* mirror address, some games write to it */
495 	{ 0x04000, 0x04fff, gottlieb_charram_w, &gottlieb_charram },
496 	{ 0x05000, 0x0501f, gottlieb_paletteram_w, &paletteram },
497 	{ 0x05800, 0x05800, watchdog_reset_w },
498 	{ 0x05801, 0x05801, gottlieb_track_reset_w },
499 	{ 0x05802, 0x05802, gottlieb_sh_w }, /* sound/speech command */
500 	{ 0x05803, 0x05803, usvsthem_video_outputs_w },       /* OUT1 */
501 	{ 0x05805, 0x05805, gottlieb_laserdisc_command_w },	/* command for the player */
502 	{ 0x05806, 0x05806, gottlieb_laserdisc_mpx_w },
503 	{ 0x06000, 0x0ffff, MWA_ROM },
504 	/* Us vs Them uses the Exxxx address space */
505 	{ 0xe0000, 0xe37ff, MWA_BANK2 },
506 	{ 0xe3800, 0xe3bff, gottlieb_videoram_w },
507 	{ 0xe3c00, 0xe3fff, gottlieb_videoram_w },	/* mirror address, some games write to it */
508 	{ 0xe4000, 0xe4fff, gottlieb_charram_w },
509 	{ 0xe5000, 0xe501f, gottlieb_paletteram_w },
510 	{ 0xe5800, 0xe5800, watchdog_reset_w },
511 	{ 0xe5801, 0xe5801, gottlieb_track_reset_w },
512 	{ 0xe5802, 0xe5802, gottlieb_sh_w }, /* sound/speech command */
513 	{ 0xe5803, 0xe5803, usvsthem_video_outputs_w },       /* OUT1 */
514 	{ 0xe5805, 0xe5805, gottlieb_laserdisc_command_w },	/* command for the player */
515 	{ 0xe5806, 0xe5806, gottlieb_laserdisc_mpx_w },
516 MEMORY_END
517 
518 /* same as above, different IN4 */
519 static MEMORY_READ_START( stooges_readmem )
520 	{ 0x00000, 0x00fff, MRA_RAM },
521 	{ 0x01000, 0x01fff, MRA_RAM },
522 	{ 0x02000, 0x02fff, MRA_ROM },
523 	{ 0x03800, 0x03bff, MRA_RAM },
524 	{ 0x04000, 0x04fff, MRA_RAM },
525 	{ 0x05800, 0x05800, input_port_0_r },	/* DSW */
526 	{ 0x05801, 0x05801, input_port_1_r },	/* buttons */
527 	{ 0x05802, 0x05802, gottlieb_track_0_r },	/* trackball H */
528 	{ 0x05803, 0x05803, gottlieb_track_1_r },	/* trackball V */
529 	{ 0x05804, 0x05804, stooges_IN4_r },	/* joystick */
530 	{ 0x06000, 0x0ffff, MRA_ROM },
531 	/* map the ROM into Fxxxx so we can boot */
532 	{ 0xf8000, 0xfffff, MRA_BANK1 },
533 MEMORY_END
534 
535 /* same as above, different video_outputs */
536 static MEMORY_WRITE_START( stooges_writemem )
537 	{ 0x00000, 0x00fff, MWA_RAM, &generic_nvram, &generic_nvram_size },
538 	{ 0x01000, 0x01fff, MWA_RAM },
539 	{ 0x02000, 0x02fff, MWA_ROM },
540 	{ 0x03000, 0x030ff, MWA_RAM, &spriteram, &spriteram_size },
541 	{ 0x03800, 0x03bff, gottlieb_videoram_w, &videoram },
542 	{ 0x03c00, 0x03fff, gottlieb_videoram_w },	/* mirror address, some games write to it */
543 	{ 0x04000, 0x04fff, gottlieb_charram_w, &gottlieb_charram },
544 	{ 0x05000, 0x0501f, gottlieb_paletteram_w, &paletteram },
545 	{ 0x05800, 0x05800, watchdog_reset_w },
546 	{ 0x05801, 0x05801, gottlieb_track_reset_w },
547 	{ 0x05802, 0x05802, gottlieb_sh_w }, /* sound/speech command */
548 	{ 0x05803, 0x05803, stooges_output_w },       /* OUT1 */
549 	{ 0x06000, 0x0ffff, MWA_ROM },
550 MEMORY_END
551 
552 
553 
554 MEMORY_READ_START( gottlieb_sound_readmem )
555 	{ 0x0000, 0x01ff, riot_ram_r },
556 	{ 0x0200, 0x03ff, gottlieb_riot_r },
557 	{ 0x6000, 0x7fff, MRA_ROM },
558 			 /* A15 not decoded except in expansion socket */
559 	{ 0x8000, 0x81ff, riot_ram_r },
560 	{ 0x8200, 0x83ff, gottlieb_riot_r },
561 	{ 0xe000, 0xffff, MRA_ROM },
562 MEMORY_END
563 
564 MEMORY_WRITE_START( gottlieb_sound_writemem )
565 	{ 0x0000, 0x01ff, riot_ram_w, &riot_ram },
566 	{ 0x0200, 0x03ff, gottlieb_riot_w },
567 	{ 0x1000, 0x1000, DAC_0_data_w },
568 	{ 0x2000, 0x2000, gottlieb_speech_w },
569 	{ 0x3000, 0x3000, gottlieb_speech_clock_DAC_w },
570 	{ 0x6000, 0x7fff, MWA_ROM },
571 			 /* A15 not decoded except in expansion socket */
572 	{ 0x8000, 0x81ff, riot_ram_w },
573 	{ 0x8200, 0x83ff, gottlieb_riot_w },
574 	{ 0x9000, 0x9000, DAC_0_data_w },
575 	{ 0xa000, 0xa000, gottlieb_speech_w },
576 	{ 0xb000, 0xb000, gottlieb_speech_clock_DAC_w },
577 	{ 0xe000, 0xffff, MWA_ROM },
578 MEMORY_END
579 
580 
581 static MEMORY_READ_START( stooges_sound_readmem )
582 	{ 0x0000, 0x03ff, MRA_RAM },
583 	{ 0x8000, 0x8000, soundlatch_r },
584 	{ 0xe000, 0xffff, MRA_ROM },
585 MEMORY_END
586 
587 MEMORY_WRITE_START( stooges_sound_writemem )
588 	{ 0x0000, 0x03ff, MWA_RAM },
589 	{ 0x4000, 0x4001, DAC_0_data_w },
590 	{ 0xe000, 0xffff, MWA_ROM },
591 MEMORY_END
592 
593 
594 static MEMORY_READ_START( stooges_sound2_readmem )
595 	{ 0x0000, 0x03ff, MRA_RAM },
596 	{ 0x6000, 0x6000, stooges_sound_input_r },	/* various signals */
597 	{ 0xa800, 0xa800, soundlatch_r },
598 	{ 0xc000, 0xffff, MRA_ROM },
599 MEMORY_END
600 
601 MEMORY_WRITE_START( stooges_sound2_writemem )
602 	{ 0x0000, 0x03ff, MWA_RAM },
603 	{ 0x2000, 0x2000, MWA_NOP },	/* speech chip. The game sends strings */
604 									/* of 15 bytes (clocked by 4000). The chip also */
605 									/* checks a DATA REQUEST bit in 6000. */
606 	{ 0x4000, 0x4000, stooges_sound_control_w },
607 	{ 0x8000, 0x8000, stooges_8910_latch_w },
608 	{ 0xa000, 0xa000, gottlieb_nmi_rate_w },	/* the timer generates NMIs */
609 	{ 0xb000, 0xb000, gottlieb_cause_dac_nmi_w },
610 	{ 0xc000, 0xffff, MWA_ROM },
611 MEMORY_END
612 
613 
614 
615 INPUT_PORTS_START( reactor )
616 	PORT_START	/* DSW */
617 	PORT_DIPNAME( 0x01, 0x01, "Sound with Logos" )
618 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
619 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
620 	PORT_DIPNAME( 0x02, 0x02, "Bounce Chambers Points" )
621 	PORT_DIPSETTING(    0x00, "10" )
622 	PORT_DIPSETTING(    0x02, "15" )
623 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) )
624 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
625 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
626 	PORT_DIPNAME( 0x08, 0x08, "Sound with Instructions" )
627 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
628 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
629 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Cabinet ) )
630 	PORT_DIPSETTING(    0x10, DEF_STR( Upright ) )
631 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
632 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Coinage ) )
633 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
634 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_1C ) )
635 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Bonus_Life ) )
636 	PORT_DIPSETTING(    0x00, "10000" )
637 	PORT_DIPSETTING(    0x40, "12000" )
638 	PORT_DIPSETTING(    0xc0, "15000" )
639 	PORT_DIPSETTING(    0x80, "20000" )
640 
641 	PORT_START	/* IN1 */
642 	PORT_BITX(0x01, IP_ACTIVE_HIGH, IPT_SERVICE, "Select in Service Mode", KEYCODE_F1, IP_JOY_NONE )
643 	PORT_SERVICE( 0x02, IP_ACTIVE_LOW )
644 	PORT_BIT ( 0xfc, IP_ACTIVE_HIGH, IPT_UNKNOWN )
645 
646 	PORT_START	/* trackball H */
647 	PORT_ANALOG( 0xff, 0, IPT_TRACKBALL_X, 15, 20, 0, 0 )
648 
649 	PORT_START	/* trackball V */
650 	PORT_ANALOG( 0xff, 0, IPT_TRACKBALL_Y, 15, 20, 0, 0 )
651 
652 	PORT_START	/* IN4 */
653 	PORT_BIT ( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
654 	PORT_BIT ( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
655 	PORT_BIT ( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 )
656 	PORT_BIT ( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
657 	PORT_BIT ( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
658 	PORT_BIT ( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
659 	PORT_BIT ( 0xc0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
660 INPUT_PORTS_END
661 
662 INPUT_PORTS_START( mplanets )
663 	PORT_START	/* DSW */
664 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
665 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
666 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
667 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Bonus_Life ) )
668 	PORT_DIPSETTING(    0x00, "10000" )
669 	PORT_DIPSETTING(    0x02, "12000" )
670 	PORT_DIPNAME( 0x08, 0x00, "Allow Round Select" )
671 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
672 	PORT_DIPSETTING(    0x08, DEF_STR( Yes ) )
673 	PORT_DIPNAME( 0x14, 0x00, DEF_STR( Coinage ) )
674 	PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
675 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
676 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
677 	PORT_DIPSETTING(    0x14, DEF_STR( Free_Play ) )
678 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Lives ) )
679 	PORT_DIPSETTING(    0x00, "3" )
680 	PORT_DIPSETTING(    0x20, "5" )
681 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Difficulty ) )
682 	PORT_DIPSETTING(    0x40, "Easy" )
683 	PORT_DIPSETTING(    0x00, "Medium" )
684 	PORT_DIPSETTING(    0x80, "Hard" )
685 	PORT_DIPSETTING(    0xc0, "Hardest" )
686 
687 	PORT_START	/* IN1 */
688 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
689 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
690 	PORT_BIT( 0x3c, IP_ACTIVE_HIGH, IPT_UNKNOWN )
691 	PORT_BITX(0x40, IP_ACTIVE_HIGH, IPT_SERVICE, "Select in Service Mode", KEYCODE_F1, IP_JOY_NONE )
692 	PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
693 
694 	PORT_START	/* trackball H not used */
695 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
696 
697 	PORT_START	/* trackball V (dial) */
698 	PORT_ANALOGX( 0xff, 0x00, IPT_DIAL, 5, 10, 0, 0, KEYCODE_Z, KEYCODE_X, IP_JOY_NONE, IP_JOY_NONE )
699 
700 	PORT_START	/* IN3 */
701 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
702 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
703 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
704 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
705 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
706 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
707 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
708 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 )
709 INPUT_PORTS_END
710 
711 INPUT_PORTS_START( qbert )
712 	PORT_START      /* DSW */
713 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
714 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
715 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
716 	PORT_DIPNAME( 0x02, 0x02, "Kicker" )
717 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
718 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
719 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) )
720 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
721 	PORT_DIPSETTING(    0x04, DEF_STR( Cocktail ) )
722 	PORT_BITX( 0x08, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Auto Round Advance", IP_KEY_NONE, IP_JOY_NONE )
723 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
724 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
725 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Free_Play ) )
726 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
727 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
728 	PORT_DIPNAME( 0x20, 0x00, "SW5" )
729 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
730 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
731 	PORT_DIPNAME( 0x40, 0x00, "SW7" )
732 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
733 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
734 	PORT_DIPNAME( 0x80, 0x00, "SW8" )
735 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
736 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
737 	PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED )
738 /* 0x40 must be connected to the IP16 line */
739 
740 	PORT_START      /* buttons */
741 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
742 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
743 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
744 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
745 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
746 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
747 	PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
748 	PORT_BITX(0x80, IP_ACTIVE_HIGH, IPT_SERVICE, "Select in Service Mode", KEYCODE_F1, IP_JOY_NONE )
749 
750 	PORT_START	/* trackball H not used */
751 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
752 
753 	PORT_START	/* trackball V not used */
754 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
755 
756 	PORT_START      /* joystick */
757 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY )
758 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY )
759 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY )
760 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY )
761 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_COCKTAIL )
762 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_COCKTAIL )
763 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_COCKTAIL )
764 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_COCKTAIL )
765 INPUT_PORTS_END
766 
767 INPUT_PORTS_START( qbertqub )
768 	PORT_START      /* DSW */
769 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
770 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
771 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
772 	PORT_DIPNAME( 0x35, 0x00, DEF_STR( Coinage ) )
773 	PORT_DIPSETTING(    0x24, "A 2/1 B 2/1" )
774 	PORT_DIPSETTING(    0x14, "A 1/1 B 4/1" )
775 	PORT_DIPSETTING(    0x30, "A 1/1 B 3/1" )
776 	PORT_DIPSETTING(    0x10, "A 1/1 B 2/1" )
777 	PORT_DIPSETTING(    0x00, "A 1/1 B 1/1" )
778 	PORT_DIPSETTING(    0x11, "A 2/3 B 2/1" )
779 	PORT_DIPSETTING(    0x15, "A 1/2 B 3/1" )
780 	PORT_DIPSETTING(    0x20, "A 1/2 B 2/1" )
781 	PORT_DIPSETTING(    0x21, "A 1/2 B 1/1" )
782 	PORT_DIPSETTING(    0x31, "A 1/2 B 1/5" )
783 	PORT_DIPSETTING(    0x04, "A 1/3 B 2/1" )
784 	PORT_DIPSETTING(    0x05, "A 1/3 B 1/1" )
785 	PORT_DIPSETTING(    0x35, DEF_STR( Free_Play ) )
786 /* 0x25 DEF_STR( 2C_1C )
787    0x01 DEF_STR( 1C_1C )
788    0x34 DEF_STR( Free_Play ) */
789 	PORT_DIPNAME( 0x02, 0x00, "1st Bonus Life" )
790 	PORT_DIPSETTING(    0x00, "10000" )
791 	PORT_DIPSETTING(    0x02, "15000" )
792 	PORT_DIPNAME( 0x40, 0x00, "Additional Bonus Life" )
793 	PORT_DIPSETTING(    0x00, "20000" )
794 	PORT_DIPSETTING(    0x40, "25000" )
795 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Difficulty ) )
796 	PORT_DIPSETTING(    0x00, "Normal" )
797 	PORT_DIPSETTING(    0x80, "Hard" )
798 
799 	PORT_START      /* buttons */
800 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
801 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
802 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 )
803 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
804 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
805 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
806 	PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
807 	PORT_BITX(0x80, IP_ACTIVE_HIGH, IPT_SERVICE, "Select in Service Mode", KEYCODE_F1, IP_JOY_NONE )
808 
809 	PORT_START	/* trackball H not used */
810 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
811 
812 	PORT_START	/* trackball V not used */
813 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
814 
815 	PORT_START      /* joystick */
816 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY )
817 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY )
818 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY )
819 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY )
820 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
821 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
822 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
823 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
824 INPUT_PORTS_END
825 
826 INPUT_PORTS_START( krull )
827 	PORT_START      /* DSW0 */
828 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
829 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
830 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
831 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Difficulty ) )
832 	PORT_DIPSETTING(    0x00, "Normal" )
833 	PORT_DIPSETTING(    0x02, "Hard" )
834 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) )
835 	PORT_DIPSETTING(    0x00, "3" )
836 	PORT_DIPSETTING(    0x08, "5" )
837 	PORT_DIPNAME( 0x14, 0x00, DEF_STR( Coinage ) )
838 	PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
839 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
840 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
841 	PORT_DIPSETTING(    0x14, DEF_STR( Free_Play ) )
842 	PORT_DIPNAME( 0x20, 0x00, "Hexagon" )
843 	PORT_DIPSETTING(    0x00, "Roving" )
844 	PORT_DIPSETTING(    0x20, "Stationary" )
845 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Bonus_Life ) )
846 	PORT_DIPSETTING(    0x40, "30000 30000" )
847 	PORT_DIPSETTING(    0x00, "30000 50000" )
848 	PORT_DIPSETTING(    0x80, "40000 50000" )
849 	PORT_DIPSETTING(    0xc0, "50000 75000" )
850 
851 	PORT_START      /* IN0 */
852 	PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
853 	PORT_BITX(0x02, IP_ACTIVE_HIGH, IPT_SERVICE, "Select in Service Mode", KEYCODE_F1, IP_JOY_NONE )
854 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
855 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
856 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
857 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
858 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
859 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
860 
861 	PORT_START	/* trackball H not used */
862 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
863 
864 	PORT_START	/* trackball V not used */
865 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
866 
867 	PORT_START      /* IN3 */
868 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP    | IPF_8WAY )
869 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_RIGHT | IPF_8WAY )
870 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN  | IPF_8WAY )
871 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_LEFT  | IPF_8WAY )
872 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP     | IPF_8WAY )
873 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_RIGHT  | IPF_8WAY )
874 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN   | IPF_8WAY )
875 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_LEFT   | IPF_8WAY )
876 INPUT_PORTS_END
877 
878 INPUT_PORTS_START( mach3 )
879 	PORT_START      /* DSW0 */
880 	/* TODO: values are different for 5 lives */
881 	PORT_DIPNAME( 0x09, 0x08, DEF_STR( Coinage ) )
882 	PORT_DIPSETTING(    0x09, DEF_STR( 4C_1C ) )
883 	PORT_DIPSETTING(    0x01, DEF_STR( 3C_1C ) )
884 	PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
885 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
886 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Difficulty ) )
887 	PORT_DIPSETTING(    0x00, "Normal" )
888 	PORT_DIPSETTING(    0x02, "Hard" )
889 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Lives ) )
890 	PORT_DIPSETTING(    0x00, "3" )
891 	PORT_DIPSETTING(    0x10, "5" )
892 	PORT_DIPNAME( 0x24, 0x00, DEF_STR( Bonus_Life ) )
893 	PORT_DIPSETTING(    0x00, "10000 10000" )
894 	PORT_DIPSETTING(    0x04, "10000 20000" )
895 	PORT_DIPSETTING(    0x20, "10000 40000" )
896 	PORT_DIPSETTING(    0x24, "20000 60000" )
897 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) )
898 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
899 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
900 	PORT_BITX(    0x80, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Infinite Lives", IP_KEY_NONE, IP_JOY_NONE )
901 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
902 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
903 
904 	PORT_START      /* IN0 */
905 	PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
906 	PORT_BITX(0x02, IP_ACTIVE_HIGH, IPT_SERVICE, "Select in Service Mode", KEYCODE_F1, IP_JOY_NONE )
907 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
908 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
909 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
910 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
911 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
912 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
913 
914 	PORT_START	/* trackball H not used */
915 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
916 
917 	PORT_START	/* trackball V not used */
918 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
919 
920 	PORT_START      /* IN3 */
921 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
922 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
923 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
924 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
925 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
926 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 )
927 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 )
928 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
929 INPUT_PORTS_END
930 
931 INPUT_PORTS_START( usvsthem )
932 	PORT_START      /* DSW0 */
933 	/* TODO: values are different for 5 lives */
934 	PORT_DIPNAME( 0x09, 0x00, DEF_STR( Coinage ) )
935 	PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
936 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
937 	PORT_DIPSETTING(    0x01, DEF_STR( Free_Play ) )
938 /*	PORT_DIPSETTING(    0x09, DEF_STR( Free_Play ) ) */
939 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
940 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
941 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
942 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Difficulty ) )
943 	PORT_DIPSETTING(    0x00, "Normal" )
944 	PORT_DIPSETTING(    0x04, "Hard" )
945 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
946 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
947 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
948 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
949 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
950 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
951 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
952 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
953 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
954 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
955 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
956 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
957 
958 	PORT_START      /* IN0 */
959 	PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
960 	PORT_BITX(0x02, IP_ACTIVE_HIGH, IPT_SERVICE, "Select in Service Mode", KEYCODE_F1, IP_JOY_NONE )
961 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
962 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
963 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
964 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
965 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
966 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
967 
968 	PORT_START	/* trackball H not used */
969 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
970 
971 	PORT_START	/* trackball V not used */
972 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
973 
974 	PORT_START      /* IN3 */
975 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
976 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
977 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
978 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
979 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
980 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 )
981 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 )
982 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
983 INPUT_PORTS_END
984 
985 INPUT_PORTS_START( 3stooges )
986 	PORT_START	/* DSW */
987 	PORT_DIPNAME (0x01, 0x00, DEF_STR( Demo_Sounds ) )
988 	PORT_DIPSETTING (   0x01, DEF_STR( Off ) )
989 	PORT_DIPSETTING (   0x00, DEF_STR( On ) )
990 	PORT_DIPNAME (0x02, 0x00, DEF_STR( Difficulty ) )
991 	PORT_DIPSETTING (   0x00, "Normal" )
992 	PORT_DIPSETTING (   0x02, "Hard" )
993 	PORT_DIPNAME (0x08, 0x00, DEF_STR( Lives ) )
994 	PORT_DIPSETTING (   0x00, "3" )
995 	PORT_DIPSETTING (   0x08, "5" )
996 	PORT_DIPNAME (0x14, 0x00, DEF_STR( Coinage ) )
997 	PORT_DIPSETTING (   0x04, DEF_STR( 2C_1C ) )
998 	PORT_DIPSETTING (   0x00, DEF_STR( 1C_1C ) )
999 	PORT_DIPSETTING (   0x10, DEF_STR( 1C_2C ) )
1000 	PORT_DIPSETTING (   0x14, DEF_STR( Free_Play ) )
1001 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unused ) )
1002 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1003 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1004 	PORT_DIPNAME (0x40, 0x00, "1st Bonus Life at" )
1005 	PORT_DIPSETTING (   0x40, "10000" )
1006 	PORT_DIPSETTING (   0x00, "20000" )
1007 	PORT_DIPNAME (0x80, 0x00, "And Bonus Life Every" )
1008 	PORT_DIPSETTING (   0x80, "10000" )
1009 	PORT_DIPSETTING (   0x00, "20000" )
1010 
1011 	PORT_START	/* IN1 */
1012 	PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
1013 	PORT_BITX(0x02, IP_ACTIVE_HIGH, IPT_SERVICE, "Select in Service Mode", KEYCODE_F1, IP_JOY_NONE )
1014 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 )
1015 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
1016 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_TILT )
1017 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1018 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1019 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1020 
1021 	PORT_START	/* trackball H not used */
1022 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1023 
1024 	PORT_START	/* trackball V not used */
1025 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1026 
1027 	PORT_START	/* joystick 2 (Moe) */
1028 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_PLAYER2 | IPF_8WAY )
1029 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 | IPF_8WAY )
1030 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_PLAYER2 | IPF_8WAY )
1031 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_PLAYER2 | IPF_8WAY )
1032 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
1033 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER1 )
1034 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER3 )
1035 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1036 
1037 	/* the bottom four bits of the previous port are multiplexed among */
1038 	/* three joysticks - the following port contains settings for the other two */
1039 	PORT_START
1040 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_PLAYER3 | IPF_8WAY )
1041 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_PLAYER3 | IPF_8WAY )
1042 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_PLAYER3 | IPF_8WAY )
1043 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_PLAYER3 | IPF_8WAY )
1044 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_PLAYER1 | IPF_8WAY )
1045 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 | IPF_8WAY )
1046 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_PLAYER1 | IPF_8WAY )
1047 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_PLAYER1 | IPF_8WAY )
1048 INPUT_PORTS_END
1049 
1050 INPUT_PORTS_START( curvebal )
1051 	PORT_START      /* DSW0 */
1052 	PORT_DIPNAME( 0x08, 0x00, "2 Players Game" )
1053 	PORT_DIPSETTING(    0x08, "1 Credit" )
1054 	PORT_DIPSETTING(    0x00, "2 Credits" )
1055 	PORT_DIPNAME( 0x11, 0x00, DEF_STR( Difficulty ) )
1056 	PORT_DIPSETTING(    0x00, "Easy" )
1057 	PORT_DIPSETTING(    0x10, "Medium" )
1058 	PORT_DIPSETTING(    0x01, "Hard" )
1059 	PORT_DIPSETTING(    0x11, "Hardest" )
1060 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) )
1061 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1062 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
1063 	PORT_DIPNAME( 0x20, 0x00, "Coins" )
1064 	PORT_DIPSETTING(    0x00, "Normal" )
1065 	PORT_DIPSETTING(    0x20, "French" )
1066 	/* TODO: coinage is different when French is selected */
1067 /* PORT_DIPNAME( 0xc2, 0x00, "French Coinage" )
1068 PORT_DIPSETTING(    0x42, "A 3/1 B 1/2" )
1069 PORT_DIPSETTING(    0x82, "A 1/5 B 1/2" )
1070 PORT_DIPSETTING(    0x02, "A 2/1 B 2/3" )
1071 PORT_DIPSETTING(    0xc0, "A 2/1 B 2/1" )
1072 PORT_DIPSETTING(    0x80, "A 1/1 B 1/2" )
1073 PORT_DIPSETTING(    0x40, "A 1/1 B 1/3" )
1074 PORT_DIPSETTING(    0x00, "A 1/1 B 1/1" )
1075 PORT_DIPSETTING(    0xc2, DEF_STR( Free_Play ) ) */
1076 	PORT_DIPNAME( 0xc2, 0x00, DEF_STR( Coinage ) )
1077 	PORT_DIPSETTING(    0x42, "A 4/1 B 1/1" )
1078 	PORT_DIPSETTING(    0x82, "A 3/1 B 1/1" )
1079 	PORT_DIPSETTING(    0x02, "A 2/1 B 1/1" )
1080 	PORT_DIPSETTING(    0xc0, "A 2/1 B 2/1" )
1081 	PORT_DIPSETTING(    0x80, "A 2/1 B 1/2" )
1082 	PORT_DIPSETTING(    0x40, "A 2/1 B 1/3" )
1083 	PORT_DIPSETTING(    0x00, "A 1/1 B 1/1" )
1084 	PORT_DIPSETTING(    0xc2, DEF_STR( Free_Play ) )
1085 
1086 	PORT_START      /* IN0 */
1087 	PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
1088 	PORT_BITX(0x02, IP_ACTIVE_HIGH, IPT_SERVICE, "Select in Service Mode", KEYCODE_F1, IP_JOY_NONE )
1089 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
1090 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
1091 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1092 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1093 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1094 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1095 
1096 	PORT_START	/* trackball H not used */
1097 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1098 
1099 	PORT_START	/* trackball V not used */
1100 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1101 
1102 	PORT_START      /* IN3 */
1103 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1104 	PORT_BITX(0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER1, "Swing", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
1105 	PORT_BITX(0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2, "Pitch Left", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
1106 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1107 	PORT_BITX(0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER2, "Pitch Right", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
1108 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1109 	PORT_BITX(0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER1, "Bunt", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
1110 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1111 INPUT_PORTS_END
1112 
1113 INPUT_PORTS_START( screwloo )
1114 	PORT_START      /* DSW0 */
1115 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
1116 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1117 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1118 	PORT_DIPNAME( 0x02, 0x00, "Demo mode" )
1119 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1120 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
1121 	PORT_DIPNAME( 0x04, 0x00, "1st Bonus Atom at" )
1122 	PORT_DIPSETTING(    0x00, "5000" )
1123 	PORT_DIPSETTING(    0x04, "20000" )
1124 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Free_Play ) )
1125 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1126 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
1127 	PORT_DIPNAME( 0x50, 0x40, DEF_STR( Coinage ) )
1128 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
1129 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_2C ) )
1130 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_1C ) )
1131 	PORT_DIPSETTING(    0x50, DEF_STR( 1C_2C ) )
1132 	PORT_DIPNAME( 0x20, 0x00, "1st Bonus Hand at" )
1133 	PORT_DIPSETTING(    0x00, "25000" )
1134 	PORT_DIPSETTING(    0x20, "50000" )
1135 	PORT_DIPNAME( 0x80, 0x00, "Hands" )
1136 	PORT_DIPSETTING(    0x00, "3" )
1137 	PORT_DIPSETTING(    0x80, "5" )
1138 
1139 	PORT_START      /* IN0 */
1140 	PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
1141 	PORT_BITX(0x02, IP_ACTIVE_HIGH, IPT_SERVICE, "Select in Service Mode", KEYCODE_F1, IP_JOY_NONE )
1142 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
1143 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
1144 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_RIGHT | IPF_8WAY )
1145 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_LEFT  | IPF_8WAY )
1146 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN  | IPF_8WAY )
1147 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP    | IPF_8WAY )
1148 
1149 	PORT_START	/* trackball H not used */
1150 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1151 
1152 	PORT_START	/* trackball V not used */
1153 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1154 
1155 	PORT_START      /* IN3 */
1156 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_RIGHT | IPF_8WAY )
1157 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_LEFT  | IPF_8WAY )
1158 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN  | IPF_8WAY )
1159 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP    | IPF_8WAY )
1160 	PORT_BITX(0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER1, "Start 2P", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
1161 	PORT_BITX(0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER1, "Start 1P", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
1162 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1163 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1164 INPUT_PORTS_END
1165 
1166 INPUT_PORTS_START( insector )
1167 	PORT_START      /* DSW0 */
1168 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Bonus_Life ) )
1169 	PORT_DIPSETTING(    0x00, "25000" )
1170 	PORT_DIPSETTING(    0x01, "30000" )
1171 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
1172 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1173 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1174 	PORT_DIPNAME( 0x04, 0x00, "Demo mode" )
1175 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1176 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
1177 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Lives ) )
1178 	PORT_DIPSETTING(    0x08, "3" )
1179 	PORT_DIPSETTING(    0x00, "5" )
1180 	PORT_DIPNAME( 0x50, 0x00, DEF_STR( Coinage ) )
1181 	PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
1182 	PORT_DIPSETTING(    0x50, DEF_STR( 2C_2C ) )
1183 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
1184 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
1185 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Free_Play ) )
1186 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1187 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1188 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
1189 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
1190 	PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
1191 
1192 	PORT_START      /* IN0 */
1193 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
1194 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 )
1195 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
1196 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
1197 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
1198 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_COCKTAIL )
1199 	PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
1200 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1201 
1202 	PORT_START	/* trackball H not used */
1203 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1204 
1205 	PORT_START	/* trackball V not used */
1206 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1207 
1208 	PORT_START      /* IN3 */
1209 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
1210 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
1211 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
1212 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
1213 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
1214 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
1215 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
1216 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
1217 INPUT_PORTS_END
1218 
1219 
1220 
1221 /* the games can store char gfx data in either a 4k RAM area (128 chars), or */
1222 /* a 8k ROM area (256 chars). */
1223 static struct GfxLayout charRAMlayout =
1224 {
1225 	8,8,    /* 8*8 characters */
1226 	128,    /* 128 characters */
1227 	4,      /* 4 bits per pixel */
1228 	{ 0, 1, 2, 3 },
1229 	{ 0, 4, 8, 12, 16, 20, 24, 28},
1230 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
1231 	32*8    /* every char takes 32 consecutive bytes */
1232 };
1233 
1234 static struct GfxLayout charROMlayout =
1235 {
1236 	8,8,    /* 8*8 characters */
1237 	256,    /* 256 characters */
1238 	4,      /* 4 bits per pixel */
1239 	{ 0, 1, 2, 3 },
1240 	{ 0, 4, 8, 12, 16, 20, 24, 28},
1241 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
1242 	32*8    /* every char takes 32 consecutive bytes */
1243 };
1244 
1245 static struct GfxLayout spritelayout =
1246 {
1247 	16,16,
1248 	RGN_FRAC(1,4),
1249 	4,      /* 4 bits per pixel */
1250 	{ RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) },
1251 	{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
1252 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
1253 			8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
1254 	32*8
1255 };
1256 
1257 static struct GfxDecodeInfo charRAM_gfxdecodeinfo[] =
1258 {
1259 	{ 0,           0x4000, &charRAMlayout, 0, 1 },	/* the game dynamically modifies this */
1260 	{ REGION_GFX2, 0x0000, &spritelayout,  0, 1 },
1261 	{ -1 } /* end of array */
1262 };
1263 
1264 static struct GfxDecodeInfo charROM_gfxdecodeinfo[] =
1265 {
1266 	{ REGION_GFX1, 0x0000, &charROMlayout, 0, 1 },
1267 	{ REGION_GFX2, 0x0000, &spritelayout,  0, 1 },
1268 	{ -1 } /* end of array */
1269 };
1270 
1271 
1272 
1273 static struct DACinterface dac1_interface =
1274 {
1275 	1,
1276 	{ 50 }
1277 };
1278 
1279 static struct DACinterface dac2_interface =
1280 {
1281 	2,
1282 	{ 25, 25 }
1283 };
1284 
1285 static const char *reactor_sample_names[] =
1286 {
1287 	"*reactor",
1288 	"fx_53.wav", /* "8 left" */
1289 	"fx_54.wav", /* "16 left" */
1290 	"fx_55.wav", /* "24 left" */
1291 	"fx_56.wav", /* "32 left" */
1292 	"fx_57.wav", /* "40 left" */
1293 	"fx_58.wav", /* "warning, core unstable" */
1294 	"fx_59.wav", /* "bonus" */
1295 	"fx_31.wav", /* "chamber activated" */
1296 	"fx_39a.wav", /* "2000" */
1297 	"fx_39b.wav", /* "5000" */
1298 	"fx_39c.wav", /* "10000" */
1299 	"fx_39d.wav", /* "15000" */
1300 	"fx_39e.wav", /* "20000" */
1301 	"fx_39f.wav", /* "25000" */
1302 	"fx_39g.wav", /* "30000" */
1303 	"fx_39h.wav", /* "35000" */
1304 	"fx_39i.wav", /* "40000" */
1305 	"fx_39j.wav", /* "45000" */
1306 	"fx_39k.wav", /* "50000" */
1307 	"fx_39l.wav", /* "55000" */
1308      0	/* end of array */
1309 };
1310 
1311 static const char *qbert_sample_names[] =
1312 {
1313 	"*qbert",
1314 	"fx_17a.wav", /* random speech, voice clock 255 */
1315 	"fx_17b.wav", /* random speech, voice clock 255 */
1316 	"fx_17c.wav", /* random speech, voice clock 255 */
1317 	"fx_17d.wav", /* random speech, voice clock 255 */
1318 	"fx_17e.wav", /* random speech, voice clock 255 */
1319 	"fx_17f.wav", /* random speech, voice clock 255 */
1320 	"fx_17g.wav", /* random speech, voice clock 255 */
1321 	"fx_17h.wav", /* random speech, voice clock 255 */
1322 	"fx_18a.wav", /* random speech, voice clock 176 */
1323 	"fx_18b.wav", /* random speech, voice clock 176 */
1324 	"fx_18c.wav", /* random speech, voice clock 176 */
1325 	"fx_18d.wav", /* random speech, voice clock 176 */
1326 	"fx_18e.wav", /* random speech, voice clock 176 */
1327 	"fx_18f.wav", /* random speech, voice clock 176 */
1328 	"fx_18g.wav", /* random speech, voice clock 176 */
1329 	"fx_18h.wav", /* random speech, voice clock 176 */
1330 	"fx_19a.wav", /* random speech, voice clock 128 */
1331 	"fx_19b.wav", /* random speech, voice clock 128 */
1332 	"fx_19c.wav", /* random speech, voice clock 128 */
1333 	"fx_19d.wav", /* random speech, voice clock 128 */
1334 	"fx_19e.wav", /* random speech, voice clock 128 */
1335 	"fx_19f.wav", /* random speech, voice clock 128 */
1336 	"fx_19g.wav", /* random speech, voice clock 128 */
1337 	"fx_19h.wav", /* random speech, voice clock 128 */
1338 	"fx_20a.wav", /* random speech, voice clock 96 */
1339 	"fx_20b.wav", /* random speech, voice clock 96 */
1340 	"fx_20c.wav", /* random speech, voice clock 96 */
1341 	"fx_20d.wav", /* random speech, voice clock 96 */
1342 	"fx_20e.wav", /* random speech, voice clock 96 */
1343 	"fx_20f.wav", /* random speech, voice clock 96 */
1344 	"fx_20g.wav", /* random speech, voice clock 96 */
1345 	"fx_20h.wav", /* random speech, voice clock 96 */
1346 	"fx_21a.wav", /* random speech, voice clock 62 */
1347 	"fx_21b.wav", /* random speech, voice clock 62 */
1348 	"fx_21c.wav", /* random speech, voice clock 62 */
1349 	"fx_21d.wav", /* random speech, voice clock 62 */
1350 	"fx_21e.wav", /* random speech, voice clock 62 */
1351 	"fx_21f.wav", /* random speech, voice clock 62 */
1352 	"fx_21g.wav", /* random speech, voice clock 62 */
1353 	"fx_21h.wav", /* random speech, voice clock 62 */
1354 	"fx_22.wav", /* EH2 with decreasing voice clock */
1355 	"fx_23.wav", /* O1 with varying voice clock */
1356 	"fx_28.wav", /* "hello, I'm ready" */
1357 	"fx_36.wav", /* "byebye" */
1358 	"knocker.wav",
1359 	0	/* end of array */
1360 };
1361 
1362 static struct Samplesinterface qbert_samples_interface =
1363 {
1364  	1,	/* one channel */
1365 	100,	/* volume */
1366 	qbert_sample_names
1367 };
1368 
1369 static struct Samplesinterface reactor_samples_interface =
1370 {
1371 	1,	/* one channel */
1372 	100,	/* volume */
1373 	reactor_sample_names
1374 };
1375 
1376 #define gottlieb_samples_interface qbert_samples_interface	/* not used */
1377 #define krull_samples_interface qbert_samples_interface		/* not used */
1378 
1379 
1380 static struct AY8910interface ay8910_interface =
1381 {
1382 	2,	/* 2 chips */
1383 	2000000,	/* 2 MHz */
1384 	{ 25, 25 },
1385 	{ 0 },
1386 	{ 0 },
1387 	{ 0 },
1388 	{ 0 }
1389 };
1390 
1391 
1392 
1393 /********************************************************************
1394 *
1395 *  Machine Driver macro
1396 *  ====================
1397 *
1398 *  There are two versions of the machine driver,
1399 *  one for revision 1 sound board (1x6502 + DAC + Votrax),
1400 *  one for revision 2 (2x6502 + DAC + GI SP-0250 speech chip + 2x8910).
1401 *  They are identical apart form the sound CPU subsections.
1402 *
1403 ********************************************************************/
1404 
1405 /* games using the revision 1 sound board */
1406 static MACHINE_DRIVER_START( gottlieb )
1407 
1408 	/* basic machine hardware */
1409 	MDRV_CPU_ADD_TAG("main", I86, 5000000)	/* 5 MHz */
MDRV_CPU_MEMORY(gottlieb_readmem,gottlieb_writemem)1410 	MDRV_CPU_MEMORY(gottlieb_readmem,gottlieb_writemem)
1411 	MDRV_CPU_VBLANK_INT(gottlieb_interrupt,1)
1412 
1413 	MDRV_CPU_ADD_TAG("sound", M6502, 3579545/4)	/* the board can be set to /2 as well */
1414 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
1415 	MDRV_CPU_MEMORY(gottlieb_sound_readmem,gottlieb_sound_writemem)
1416 								/* NMIs are triggered by the Votrax SC-01 */
1417 	MDRV_FRAMES_PER_SECOND(61)
1418 	MDRV_VBLANK_DURATION(1018)	/* frames per second, vblank duration */
1419 
1420 	MDRV_MACHINE_INIT(gottlieb)
1421 	MDRV_NVRAM_HANDLER(generic_1fill)
1422 
1423 	/* video hardware */
1424 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
1425 	MDRV_SCREEN_SIZE(32*8, 32*8)
1426 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
1427 	MDRV_GFXDECODE(charROM_gfxdecodeinfo)
1428 	MDRV_PALETTE_LENGTH(16)
1429 
1430 	MDRV_VIDEO_START(gottlieb)
1431 	MDRV_VIDEO_UPDATE(gottlieb)
1432 
1433 	/* sound hardware */
1434 	MDRV_SOUND_ADD(DAC, dac1_interface)
1435 MACHINE_DRIVER_END
1436 
1437 
1438 static MACHINE_DRIVER_START( reactor )
1439 
1440 	/* basic machine hardware */
1441 	MDRV_IMPORT_FROM(gottlieb)
1442 	MDRV_CPU_MODIFY("main")
1443 	MDRV_CPU_MEMORY(reactor_readmem, reactor_writemem)
1444 
1445 	MDRV_NVRAM_HANDLER(NULL)
1446 
1447 	/* video hardware */
1448 	MDRV_GFXDECODE(charRAM_gfxdecodeinfo)
1449 	MDRV_SOUND_ADD(SAMPLES, reactor_samples_interface)
1450 MACHINE_DRIVER_END
1451 
1452 
1453 static MACHINE_DRIVER_START( qbert )
1454 
1455 	/* basic machine hardware */
1456 	MDRV_IMPORT_FROM(gottlieb)
1457 
1458 	/* video hardware */
1459 	MDRV_SOUND_ADD(SAMPLES, qbert_samples_interface)
1460 MACHINE_DRIVER_END
1461 
1462 
1463 static MACHINE_DRIVER_START( krull )
1464 
1465 	/* basic machine hardware */
1466 	MDRV_IMPORT_FROM(gottlieb)
1467 
1468 	/* video hardware */
1469 	MDRV_GFXDECODE(charRAM_gfxdecodeinfo)
1470 MACHINE_DRIVER_END
1471 
1472 
1473 /* games using the revision 2 sound board */
1474 static MACHINE_DRIVER_START( gottlieb2 )
1475 
1476 	/* basic machine hardware */
1477 	MDRV_CPU_ADD_TAG("main", I86, 5000000)	/* 5 MHz */
1478 	MDRV_CPU_MEMORY(gottlieb_readmem,gottlieb_writemem)
1479 	MDRV_CPU_VBLANK_INT(gottlieb_interrupt,1)
1480 
1481 	MDRV_CPU_ADD_TAG("sound", M6502, 1000000)	/* 1 MHz */
1482 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
1483 	MDRV_CPU_MEMORY(stooges_sound_readmem,stooges_sound_writemem)
1484 
1485 	MDRV_CPU_ADD_TAG("sound2", M6502, 1000000)	/* 1 MHz */
1486 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
1487 	MDRV_CPU_MEMORY(stooges_sound2_readmem,stooges_sound2_writemem)
1488 								/* NMIs are triggered by the Votrax SC-01 */
1489 	MDRV_FRAMES_PER_SECOND(61)
1490 	MDRV_VBLANK_DURATION(1018)	/* frames per second, vblank duration */
1491 
1492 	MDRV_MACHINE_INIT(gottlieb)
1493 	MDRV_NVRAM_HANDLER(generic_1fill)
1494 
1495 	/* video hardware */
1496 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
1497 	MDRV_SCREEN_SIZE(32*8, 32*8)
1498 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
1499 	MDRV_GFXDECODE(charROM_gfxdecodeinfo)
1500 	MDRV_PALETTE_LENGTH(16)
1501 
1502 	MDRV_VIDEO_START(gottlieb)
1503 	MDRV_VIDEO_UPDATE(gottlieb)
1504 
1505 	/* sound hardware */
1506 	MDRV_SOUND_ADD(DAC, dac2_interface)
1507 	MDRV_SOUND_ADD(AY8910, ay8910_interface)
1508 MACHINE_DRIVER_END
1509 
1510 
1511 static MACHINE_DRIVER_START( mach3 )
1512 
1513 	/* basic machine hardware */
1514 	MDRV_IMPORT_FROM(gottlieb2)
1515 	MDRV_CPU_MODIFY("main")
1516 	MDRV_CPU_MEMORY(gottlieb_readmem,usvsthem_writemem)
1517 MACHINE_DRIVER_END
1518 
1519 
1520 static MACHINE_DRIVER_START( usvsthem )
1521 
1522 	/* basic machine hardware */
1523 	MDRV_IMPORT_FROM(mach3)
1524 MACHINE_DRIVER_END
1525 
1526 
1527 static MACHINE_DRIVER_START( stooges )
1528 
1529 	/* basic machine hardware */
1530 	MDRV_IMPORT_FROM(gottlieb2)
1531 	MDRV_CPU_MODIFY("main")
1532 	MDRV_CPU_MEMORY(stooges_readmem,stooges_writemem)
1533 
1534 	/* video hardware */
1535 	MDRV_GFXDECODE(charRAM_gfxdecodeinfo)
1536 MACHINE_DRIVER_END
1537 
1538 
1539 /***************************************************************************
1540 
1541   Game driver(s)
1542 
1543 ***************************************************************************/
1544 
1545 ROM_START( reactor )
1546 	ROM_REGION( 0x10000, REGION_CPU1, 0 )     /* 64k for code */
1547 	ROM_LOAD( "rom7",         0x8000, 0x1000, CRC(a62d86fd) SHA1(9ffce668c6f0155568ccb62a6f12a9513f3c513f) )
1548 	ROM_LOAD( "rom6",         0x9000, 0x1000, CRC(6ed841f3) SHA1(b94272457e6a2d0ec46b510d71d69b4ab92a44aa) )
1549 	ROM_LOAD( "rom5",         0xa000, 0x1000, CRC(d90576a3) SHA1(52af7164dc59b9f7d8a1b3ef9d4c1fc81496899f) )
1550 	ROM_LOAD( "rom4",         0xb000, 0x1000, CRC(0155daae) SHA1(3a94952c2830c7bea126cf39b84108936d96dc0e) )
1551 	ROM_LOAD( "rom3",         0xc000, 0x1000, CRC(f8881385) SHA1(baa7ef7309aab9b382442b25ede5d7ecd6e2c370) )
1552 	ROM_LOAD( "rom2",         0xd000, 0x1000, CRC(3caba35b) SHA1(4d3b894821a2cff0ef55cec2b1f62f2e33009b4d) )
1553 	ROM_LOAD( "rom1",         0xe000, 0x1000, CRC(944e1ddf) SHA1(6b487f1cb405e2ba9345190e8ab6022c790882c1) )
1554 	ROM_LOAD( "rom0",         0xf000, 0x1000, CRC(55930aed) SHA1(37ed60386935741e8cc0b8750bfcdf6f54c1bf9e) )
1555 
1556 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for sound cpu */
1557 	ROM_LOAD( "snd1",         0xf000, 0x800, CRC(d958a0fd) SHA1(3c383076c68a929f96d844e89b09f3075f331906) )
1558 	ROM_RELOAD(               0x7000, 0x800 ) /* A15 is not decoded */
1559 	ROM_LOAD( "snd2",         0xf800, 0x800, CRC(5dc86942) SHA1(a449fcfb25521a0e7523184518b5204dac56e5f8) )
1560 	ROM_RELOAD(               0x7800, 0x800 ) /* A15 is not decoded */
1561 
1562 	/* no gfx1 (RAM is used) */
1563 
1564 	ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE )
1565 	/* 0000-0fff empty */
1566 	ROM_LOAD( "fg3",          0x1000, 0x1000, CRC(8416ad53) SHA1(f868259b97675e58b6a7f1dc3c2a4ecf6aa0570e) )	/* sprites */
1567 	/* 2000-2fff empty */
1568 	ROM_LOAD( "fg2",          0x3000, 0x1000, CRC(5489605a) SHA1(f4bbaaa8cd881dc164b118d1e516edeeea54c1d8) )
1569 	/* 4000-4fff empty */
1570 	ROM_LOAD( "fg1",          0x5000, 0x1000, CRC(18396c57) SHA1(39d90a842a03091414ed58d4128b524ecc20c9f1) )
1571 	/* 6000-6fff empty */
1572 	ROM_LOAD( "fg0",          0x7000, 0x1000, CRC(d1f20e15) SHA1(dba9aa0fec8b720a33d78b3dd1d7f74040048f7e) )
1573 ROM_END
1574 
1575 ROM_START( mplanets )
1576 	ROM_REGION( 0x10000, REGION_CPU1, 0 )     /* 64k for code */
1577 	ROM_LOAD( "rom4",         0x6000, 0x2000, CRC(5402077f) SHA1(f4e8699ab3c6dfc0f86b6df86d2a5b35caf2ca73) )
1578 	ROM_LOAD( "rom3",         0x8000, 0x2000, CRC(5d18d740) SHA1(30307d98704c49dec5aecd0a1ec2f06f1869a5d2) )
1579 	ROM_LOAD( "rom2",         0xa000, 0x2000, CRC(960c3bb1) SHA1(305a7904fa8c0b9823ad186d1c5c7460c0900bad) )
1580 	ROM_LOAD( "rom1",         0xc000, 0x2000, CRC(eb515f10) SHA1(31c3519328eba7adc4a3b0adcc0384f606d81a57) )
1581 	ROM_LOAD( "rom0",         0xe000, 0x2000, CRC(74de78aa) SHA1(7ebd02e660c1413eff284a7ca77feeff41c1e2b7) )
1582 
1583 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for sound cpu */
1584 	ROM_LOAD( "snd1",         0xf000, 0x800, CRC(453193a1) SHA1(317ec81f71661eaa92624c0304a52b635dcd5613) )
1585 	ROM_RELOAD(               0x7000, 0x800 ) /* A15 is not decoded */
1586 	ROM_LOAD( "snd2",         0xf800, 0x800, CRC(f5ffc98f) SHA1(516e895df94942fc51f1b51eb9316d4296df82e7) )
1587 	ROM_RELOAD(               0x7800, 0x800 ) /* A15 is not decoded */
1588 
1589 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1590 	ROM_LOAD( "bg0",          0x0000, 0x1000, CRC(709aa24c) SHA1(95be072bf63320f4b44feaf88003ba011754e20f) )	/* chars */
1591 	ROM_LOAD( "bg1",          0x1000, 0x1000, CRC(4921e345) SHA1(7b6e03458222be501ed150ffbd489433027fc6cb) )
1592 
1593 	ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE )
1594 	ROM_LOAD( "fg3",          0x0000, 0x2000, CRC(c990b39f) SHA1(d1b6060744b78df430e914504b20e8693829bbd5) )	/* sprites */
1595 	ROM_LOAD( "fg2",          0x2000, 0x2000, CRC(735e2522) SHA1(9fac59e9b1d81695d3da32107d640726cf96e31a) )
1596 	ROM_LOAD( "fg1",          0x4000, 0x2000, CRC(6456cc1c) SHA1(12c20f0ce49a7d3579049e8ba95e542c4aaee241) )
1597 	ROM_LOAD( "fg0",          0x6000, 0x2000, CRC(a920e325) SHA1(60f15d5014a55d9c18b06c17c7587d45716619e4) )
1598 ROM_END
1599 
1600 ROM_START( mplanuk )
1601 	ROM_REGION( 0x10000, REGION_CPU1, 0 )     /* 64k for code */
1602 	ROM_LOAD( "mpt_rom4.bin", 0x6000, 0x2000, CRC(cd88e23c) SHA1(03222e2600f7fb1c6844340d4a56eedfcdeaa3c8) )
1603 	ROM_LOAD( "mpt_rom3.bin", 0x8000, 0x2000, CRC(dc355b2d) SHA1(ae3e376afc7a8cb049d0dd28bf3959cb76780999) )
1604 	ROM_LOAD( "mpt_rom2.bin", 0xa000, 0x2000, CRC(846ddc23) SHA1(eed771d14b195e09f3aac713d19b3919c6c90ed6) )
1605 	ROM_LOAD( "mpt_rom1.bin", 0xc000, 0x2000, CRC(94d67b87) SHA1(2cbf09f0ba3b6769de90d8f61913fec3010553e2) )
1606 	ROM_LOAD( "mpt_rom0.bin", 0xe000, 0x2000, CRC(a9e30ad2) SHA1(39d830dda92ab5a6dbb44943be92bca0464e64e0) )
1607 
1608 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for sound cpu */
1609 	ROM_LOAD( "mpt_snd1.bin", 0xf000, 0x800, CRC(453193a1) SHA1(317ec81f71661eaa92624c0304a52b635dcd5613) )
1610 	ROM_RELOAD(               0x7000, 0x800 ) /* A15 is not decoded */
1611 	ROM_LOAD( "mpt_snd2.bin", 0xf800, 0x800, CRC(f5ffc98f) SHA1(516e895df94942fc51f1b51eb9316d4296df82e7) )
1612 	ROM_RELOAD(               0x7800, 0x800 ) /* A15 is not decoded */
1613 
1614 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1615 	ROM_LOAD( "mpt_bg0.bin",  0x0000, 0x1000, CRC(709aa24c) SHA1(95be072bf63320f4b44feaf88003ba011754e20f) )	/* chars */
1616 	ROM_LOAD( "mpt_bg1.bin",  0x1000, 0x1000, CRC(4921e345) SHA1(7b6e03458222be501ed150ffbd489433027fc6cb) )
1617 
1618 	ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE )
1619 	ROM_LOAD( "mpt_fg3.bin",  0x0000, 0x2000, CRC(c990b39f) SHA1(d1b6060744b78df430e914504b20e8693829bbd5) )	/* sprites */
1620 	ROM_LOAD( "mpt_fg2.bin",  0x2000, 0x2000, CRC(735e2522) SHA1(9fac59e9b1d81695d3da32107d640726cf96e31a) )
1621 	ROM_LOAD( "mpt_fg1.bin",  0x4000, 0x2000, CRC(6456cc1c) SHA1(12c20f0ce49a7d3579049e8ba95e542c4aaee241) )
1622 	ROM_LOAD( "mpt_fg0.bin",  0x6000, 0x2000, CRC(a920e325) SHA1(60f15d5014a55d9c18b06c17c7587d45716619e4) )
1623 ROM_END
1624 
1625 ROM_START( qbert )
1626 	ROM_REGION( 0x10000, REGION_CPU1, 0 )     /* 64k for code */
1627 	ROM_LOAD( "qb-rom2.bin",  0xa000, 0x2000, CRC(fe434526) SHA1(4cfc5d52dd6c82163e035af82d6112c0c93a3797) )
1628 	ROM_LOAD( "qb-rom1.bin",  0xc000, 0x2000, CRC(55635447) SHA1(ca6acdef1c9e06b33efe1f0a2df2dfb03723cfbe) )
1629 	ROM_LOAD( "qb-rom0.bin",  0xe000, 0x2000, CRC(8e318641) SHA1(7f8f66d1e6a7905e93cce07fc92e8801370b7194) )
1630 
1631 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for sound cpu */
1632 	ROM_LOAD( "qb-snd1.bin",  0xf000, 0x800, CRC(15787c07) SHA1(8b7d03fbf2ebaa71b3a7e2f636a0d1bb9b796e43) )
1633 	ROM_RELOAD(               0x7000, 0x800 ) /* A15 is not decoded */
1634 	ROM_LOAD( "qb-snd2.bin",  0xf800, 0x800, CRC(58437508) SHA1(09d8053e7e99679b602dcda230d64db7fe6cb7f5) )
1635 	ROM_RELOAD(               0x7800, 0x800 ) /* A15 is not decoded */
1636 
1637 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1638 	ROM_LOAD( "qb-bg0.bin",   0x0000, 0x1000, CRC(7a9ba824) SHA1(12aa6df499eb6996ee35f56acac403ff6290f844) )	/* chars */
1639 	ROM_LOAD( "qb-bg1.bin",   0x1000, 0x1000, CRC(22e5b891) SHA1(5bb67e333255c0ea679ab4312256a8a71a950db8) )
1640 
1641 	ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE )
1642 	ROM_LOAD( "qb-fg3.bin",   0x0000, 0x2000, CRC(dd436d3a) SHA1(ae16087a6ceec84551b5d7aae4036e0ed432cbb7) )	/* sprites */
1643 	ROM_LOAD( "qb-fg2.bin",   0x2000, 0x2000, CRC(f69b9483) SHA1(06894a1474c79c1274efbd32d7371179e7e0a661) )
1644 	ROM_LOAD( "qb-fg1.bin",   0x4000, 0x2000, CRC(224e8356) SHA1(f7f26b879aa8b964ff6311136ed8157e44de736c) )
1645 	ROM_LOAD( "qb-fg0.bin",   0x6000, 0x2000, CRC(2f695b85) SHA1(807d16459838f129e10b913890bbc95065d5dd40) )
1646 ROM_END
1647 
1648 ROM_START( qbertjp )
1649 	ROM_REGION( 0x10000, REGION_CPU1, 0 )     /* 64k for code */
1650 	ROM_LOAD( "qbj-rom2.bin", 0xa000, 0x2000, CRC(67bb1cb2) SHA1(23a7f8c86d6db9220a98b3f630c5d000e80f2d53) )
1651 	ROM_LOAD( "qbj-rom1.bin", 0xc000, 0x2000, CRC(c61216e7) SHA1(e727b85dddc2963e33af6c02b675243f6fbe2710) )
1652 	ROM_LOAD( "qbj-rom0.bin", 0xe000, 0x2000, CRC(69679d5c) SHA1(996d45517d0c01a1952fead05dbe201dbb7dca35) )
1653 
1654 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for sound cpu */
1655 	ROM_LOAD( "qb-snd1.bin",  0xf000, 0x800, CRC(15787c07) SHA1(8b7d03fbf2ebaa71b3a7e2f636a0d1bb9b796e43) )
1656 	ROM_RELOAD(               0x7000, 0x800 ) /* A15 is not decoded */
1657 	ROM_LOAD( "qb-snd2.bin",  0xf800, 0x800, CRC(58437508) SHA1(09d8053e7e99679b602dcda230d64db7fe6cb7f5) )
1658 	ROM_RELOAD(               0x7800, 0x800 ) /* A15 is not decoded */
1659 
1660 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1661 	ROM_LOAD( "qb-bg0.bin",   0x0000, 0x1000, CRC(7a9ba824) SHA1(12aa6df499eb6996ee35f56acac403ff6290f844) )	/* chars */
1662 	ROM_LOAD( "qb-bg1.bin",   0x1000, 0x1000, CRC(22e5b891) SHA1(5bb67e333255c0ea679ab4312256a8a71a950db8) )
1663 
1664 	ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE )
1665 	ROM_LOAD( "qb-fg3.bin",   0x0000, 0x2000, CRC(dd436d3a) SHA1(ae16087a6ceec84551b5d7aae4036e0ed432cbb7) )	/* sprites */
1666 	ROM_LOAD( "qb-fg2.bin",   0x2000, 0x2000, CRC(f69b9483) SHA1(06894a1474c79c1274efbd32d7371179e7e0a661) )
1667 	ROM_LOAD( "qb-fg1.bin",   0x4000, 0x2000, CRC(224e8356) SHA1(f7f26b879aa8b964ff6311136ed8157e44de736c) )
1668 	ROM_LOAD( "qb-fg0.bin",   0x6000, 0x2000, CRC(2f695b85) SHA1(807d16459838f129e10b913890bbc95065d5dd40) )
1669 ROM_END
1670 
1671 ROM_START( myqbert )
1672  ROM_REGION( 0x10000, REGION_CPU1, 0 )     /* 64k for code */
1673  ROM_LOAD( "mqb-rom2.bin",  0xa000, 0x2000, CRC(6860f957) SHA1(ebd68aeb6d54868295bd20cf64ee0187a52df0e3) )
1674  ROM_LOAD( "mqb-rom1.bin",  0xc000, 0x2000, CRC(11f0a4e4) SHA1(a805e51c40042fae209ace277abd9b35a990905b) )
1675  ROM_LOAD( "mqb-rom0.bin",  0xe000, 0x2000, CRC(12a90cb2) SHA1(a33203aea79fe43d1233a16e3fdddaceac6e4a20) )
1676 
1677  ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for sound cpu */
1678  ROM_LOAD( "mqb-snd1.bin",  0xf000, 0x800, CRC(e704b450) SHA1(d509f54658e9f0264b9ab865a6f36e5423a28904) )
1679  ROM_RELOAD(               0x7000, 0x800 ) /* A15 is not decoded */
1680  ROM_LOAD( "mqb-snd2.bin",  0xf800, 0x800, CRC(c6a98bf8) SHA1(cc5b5bb5966f5d79226f1f665a3f9fc934f4ef7f) )
1681  ROM_RELOAD(               0x7800, 0x800 ) /* A15 is not decoded */
1682 
1683  ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1684  ROM_LOAD( "qb-bg0.bin",   0x0000, 0x1000, CRC(7a9ba824) SHA1(12aa6df499eb6996ee35f56acac403ff6290f844) ) /* chars */
1685  ROM_LOAD( "qb-bg1.bin",   0x1000, 0x1000, CRC(22e5b891) SHA1(5bb67e333255c0ea679ab4312256a8a71a950db8) )
1686 
1687  ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE )
1688  ROM_LOAD( "mqb-fg3.bin",   0x0000, 0x2000, CRC(8b5d0852) SHA1(e2cf1679a7ec9e88b254b0a8d690a74d88db0cdc) ) /* sprites */
1689  ROM_LOAD( "mqb-fg2.bin",   0x2000, 0x2000, CRC(823f1e57) SHA1(a7305815d71d6e3b1c92c387a675e969edc77b7d) )
1690  ROM_LOAD( "mqb-fg1.bin",   0x4000, 0x2000, CRC(05343ae6) SHA1(6ae3e6949c9eb0df85216575ffd21adc939df0a2) )
1691  ROM_LOAD( "mqb-fg0.bin",   0x6000, 0x2000, CRC(abc71bdd) SHA1(b72c6867d8e342a6794a4bbab991761c01cfae44) )
1692 ROM_END
1693 
1694 ROM_START( qberttst )
1695     ROM_REGION( 0x10000, REGION_CPU1, 0 )     /* 64k for code */
1696 	ROM_LOAD( "qbtst2.bin",   0xa000, 0x2000, CRC(55307b02) SHA1(8a41820211093779d9010b4c9e7d667ad3a31f23) )
1697 	ROM_LOAD( "qbtst1.bin",   0xc000, 0x2000, CRC(e97fdd78) SHA1(98dd07043a72273240c593650aa9947199347870) )
1698 	ROM_LOAD( "qbtst0.bin",   0xe000, 0x2000, CRC(94c9f588) SHA1(f586bcd8e6762614bed634a007508abea071754c) )
1699 
1700 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for sound cpu */
1701 	ROM_LOAD( "qb-snd1.bin",  0xf000, 0x800, CRC(15787c07) SHA1(8b7d03fbf2ebaa71b3a7e2f636a0d1bb9b796e43) )
1702 	ROM_RELOAD(               0x7000, 0x800 ) /* A15 is not decoded */
1703 	ROM_LOAD( "qb-snd2.bin",  0xf800, 0x800, CRC(58437508) SHA1(09d8053e7e99679b602dcda230d64db7fe6cb7f5) )
1704 	ROM_RELOAD(               0x7800, 0x800 ) /* A15 is not decoded */
1705 
1706 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1707 	ROM_LOAD( "qb-bg0.bin",   0x0000, 0x1000, CRC(7a9ba824) SHA1(12aa6df499eb6996ee35f56acac403ff6290f844) )	/* chars */
1708 	ROM_LOAD( "qb-bg1.bin",   0x1000, 0x1000, CRC(22e5b891) SHA1(5bb67e333255c0ea679ab4312256a8a71a950db8) )
1709 
1710 	ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE )
1711 	ROM_LOAD( "qb-fg3.bin",   0x0000, 0x2000, CRC(dd436d3a) SHA1(ae16087a6ceec84551b5d7aae4036e0ed432cbb7) )	/* sprites */
1712 	ROM_LOAD( "qb-fg2.bin",   0x2000, 0x2000, CRC(f69b9483) SHA1(06894a1474c79c1274efbd32d7371179e7e0a661) )
1713 	ROM_LOAD( "qb-fg1.bin",   0x4000, 0x2000, CRC(224e8356) SHA1(f7f26b879aa8b964ff6311136ed8157e44de736c) )
1714 	ROM_LOAD( "qb-fg0.bin",   0x6000, 0x2000, CRC(2f695b85) SHA1(807d16459838f129e10b913890bbc95065d5dd40) )
1715 ROM_END
1716 
1717 ROM_START( insector )
1718 	ROM_REGION( 0x10000, REGION_CPU1, 0 )     /* 64k for code */
1719 	ROM_LOAD( "rom3",         0x8000, 0x2000, CRC(640881fd) SHA1(2832183e41ae7e631b61e4845fa68ce1c49edf29) )
1720 	ROM_LOAD( "rom2",         0xa000, 0x2000, CRC(456bc3f4) SHA1(b61a56a65639f97399a8a3a4293ac2292edfd159) )
1721 	ROM_LOAD( "rom1",         0xc000, 0x2000, CRC(706962af) SHA1(e40b567fdf6a3f7c6485808b4db45cea322c7724) )
1722 	ROM_LOAD( "rom0",         0xe000, 0x2000, CRC(31cee24b) SHA1(3d21f5d530cc022f9633ad487e13a664848dd3e6) )
1723 
1724 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for sound cpu */
1725 	ROM_LOAD( "gv106s.bin",   0xf000, 0x1000, CRC(25bcc8bc) SHA1(adf401901f1479a5bffaed85135669b1133334b4) )
1726       ROM_RELOAD(                 0x7000, 0x1000 ) /* A15 is not decoded */
1727 
1728 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1729 	ROM_LOAD( "bg0",          0x0000, 0x1000, CRC(0dc2037e) SHA1(aa3fdec7884aad782e430182326f5b113f59bf00) )	/* chars */
1730 	ROM_LOAD( "bg1",          0x1000, 0x1000, CRC(3dd73b94) SHA1(98b6592a907d6cb6a692c576f757bb612f8d3b72) )
1731 
1732 	ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE )
1733 	ROM_LOAD( "fg3",          0x0000, 0x2000, CRC(9bbf5b6b) SHA1(3866d4f5231140e0b7ffe5daa4752d09d3bd7241) )	/* sprites */
1734 	ROM_LOAD( "fg2",          0x2000, 0x2000, CRC(5adf9986) SHA1(2ef0d002d7ab4c9199e40dfcb25747564ecc0495) )
1735 	ROM_LOAD( "fg1",          0x4000, 0x2000, CRC(4bb16111) SHA1(88ac8c957c6968d355c494bf95ccf8a99152e5e9) )
1736 	ROM_LOAD( "fg0",          0x6000, 0x2000, CRC(965f6b76) SHA1(faec9d43f39e730eefd08d4c3337ed4b230bf7e1) )
1737 ROM_END
1738 
1739 ROM_START( screwloo )
1740 	ROM_REGION( 0x10000, REGION_CPU1, 0 )     /* 64k for code */
1741 	ROM_LOAD( "rom4",         0x6000, 0x2000, CRC(744a2513) SHA1(d6e8e016d9af984fae9b6667bedeea069637bd3a) )
1742 	ROM_LOAD( "rom3",         0x8000, 0x2000, CRC(ffde5b5d) SHA1(50ac0e600935b8b1f8b68c40ad21a179b176e535) )
1743 	ROM_LOAD( "rom2",         0xa000, 0x2000, CRC(97932b05) SHA1(6807c6e08edeb93aa7b4969eb78de3cf88a00b72) )
1744 	ROM_LOAD( "rom1",         0xc000, 0x2000, CRC(571b65ca) SHA1(75077f4fab296b3802271fa77af588003570cde6) )
1745 	ROM_LOAD( "rom0",         0xe000, 0x2000, CRC(6447fe54) SHA1(6391c841cafd35dd315d9fac99ed5d8304018747) )
1746 
1747 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for sound cpu */
1748 	ROM_LOAD( "drom1",        0xe000, 0x2000, CRC(ae965ade) SHA1(84a690cba8990fe6406b7cfbd6ea643a48446567) )
1749 
1750 	ROM_REGION( 0x10000, REGION_CPU3, 0 )	/* 64k for second sound cpu */
1751 	ROM_LOAD( "yrom1",        0xe000, 0x2000, CRC(3719b0b5) SHA1(4f215ca2f15956374c4cd9484b6798f1c4d60fc7) )
1752 
1753 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1754 	ROM_LOAD( "bg0",          0x0000, 0x1000, CRC(1fd5b649) SHA1(4e2127a4458d54f094934c6f5f154a6db5d0c8b0) )	/* chars */
1755 	ROM_LOAD( "bg1",          0x1000, 0x1000, CRC(c8ddb8ba) SHA1(58137a5043157d08af4d628cf5384d7f530393f7) )
1756 
1757 	ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE )
1758 	ROM_LOAD( "fg3",          0x0000, 0x2000, CRC(97d4e63b) SHA1(e06ecb73148f16b33132767f8f0dffc37eeba5f1) )	/* sprites */
1759 	ROM_LOAD( "fg2",          0x2000, 0x2000, CRC(f76e56ca) SHA1(32252d424f31aa899d6c614f1d1006c2ef49df84) )
1760 	ROM_LOAD( "fg1",          0x4000, 0x2000, CRC(698c395f) SHA1(46c6700b2943c35c9ac45791652eafbb4a4e059a) )
1761 	ROM_LOAD( "fg0",          0x6000, 0x2000, CRC(f23269fb) SHA1(9a418a372da18cf33bcfba07202cf2ac7a1dcd1d) )
1762 ROM_END
1763 
1764 ROM_START( sqbert )
1765 	ROM_REGION( 0x10000, REGION_CPU1, 0 )     /* 64k for code */
1766 	ROM_LOAD( "qb-rom2.bin",  0xa000, 0x2000, CRC(1e3d4038) SHA1(d4402c5d16c0aa55efbceb83f0b30082b8434df7) )
1767 	ROM_LOAD( "qb-rom1.bin",  0xc000, 0x2000, CRC(eaf3076c) SHA1(749a87b3c40ba0a2ecd2ca962786e066daf63e30) )
1768 	ROM_LOAD( "qb-rom0.bin",  0xe000, 0x2000, CRC(61260a7e) SHA1(e2028a453aa34aaffa2c465f64a963504315df3c) )
1769 
1770 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for sound cpu */
1771 	ROM_LOAD( "qb-snd1.bin",  0xf000, 0x800, CRC(15787c07) SHA1(8b7d03fbf2ebaa71b3a7e2f636a0d1bb9b796e43) )
1772 	ROM_RELOAD(               0x7000, 0x800 ) /* A15 is not decoded */
1773 	ROM_LOAD( "qb-snd2.bin",  0xf800, 0x800, CRC(58437508) SHA1(09d8053e7e99679b602dcda230d64db7fe6cb7f5) )
1774 	ROM_RELOAD(               0x7800, 0x800 ) /* A15 is not decoded */
1775 
1776 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1777 	ROM_LOAD( "qb-bg0.bin",   0x0000, 0x1000, CRC(c3118eef) SHA1(2c320eb8aae8841046ac3fca3bdaeeba778360e4) )	/* chars */
1778 	ROM_LOAD( "qb-bg1.bin",   0x1000, 0x1000, CRC(4f6d8075) SHA1(dc1897f939c8d837627ff6e06609afe305566a3b) )
1779 
1780 	ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE )
1781 	ROM_LOAD( "qb-fg3.bin",   0x0000, 0x2000, CRC(ee595eda) SHA1(11777d95ba79bd0ec7b964b76c1dc129db857816) )	/* sprites */
1782 	ROM_LOAD( "qb-fg2.bin",   0x2000, 0x2000, CRC(59884c78) SHA1(5e77ef46ccd55f79a5fa90521baa7c22e3783fe5) )
1783 	ROM_LOAD( "qb-fg1.bin",   0x4000, 0x2000, CRC(2a60e3ad) SHA1(9ed83017f6c8e44337ad76c68b095f2c3300aadb) )
1784 	ROM_LOAD( "qb-fg0.bin",   0x6000, 0x2000, CRC(b11ad9d8) SHA1(5264598f33aa76455ae4107d0f265c2a372ed67a) )
1785 ROM_END
1786 
1787 ROM_START( qbertqub )
1788 	ROM_REGION( 0x10000, REGION_CPU1, 0 )     /* 64k for code */
1789 	ROM_LOAD( "qq-rom3.bin",  0x8000, 0x2000, CRC(c4dbdcd7) SHA1(34aaa4762073680e2b4d024ce7106315ffc6bcf3) )
1790 	ROM_LOAD( "qq-rom2.bin",  0xa000, 0x2000, CRC(21a6c6cc) SHA1(6d4d81d9ad85be3792584e39dbeaf0dfeeda1503) )
1791 	ROM_LOAD( "qq-rom1.bin",  0xc000, 0x2000, CRC(63e6c43d) SHA1(9435eb06dc069e5bf1c439f0c772fef3183745b0) )
1792 	ROM_LOAD( "qq-rom0.bin",  0xe000, 0x2000, CRC(8ddbe438) SHA1(31112d711af5d4039491e99a0be0c088b3272482) )
1793 
1794 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for sound cpu */
1795 	ROM_LOAD( "qb-snd1.bin",  0xf000, 0x800, CRC(15787c07) SHA1(8b7d03fbf2ebaa71b3a7e2f636a0d1bb9b796e43) )
1796 	ROM_RELOAD(               0x7000, 0x800 ) /* A15 is not decoded */
1797 	ROM_LOAD( "qb-snd2.bin",  0xf800, 0x800, CRC(58437508) SHA1(09d8053e7e99679b602dcda230d64db7fe6cb7f5) )
1798 	ROM_RELOAD(               0x7800, 0x800 ) /* A15 is not decoded */
1799 
1800 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1801 	ROM_LOAD( "qq-bg0.bin",   0x0000, 0x1000, CRC(050badde) SHA1(d049367e262cc6080e01d32227e86310166e00bb) )	/* chars */
1802 	ROM_LOAD( "qq-bg1.bin",   0x1000, 0x1000, CRC(8875902f) SHA1(715e05b555d52c0445c4bec7fb6d1c02053505e6) )
1803 
1804 	ROM_REGION( 0x10000, REGION_GFX2, ROMREGION_DISPOSE )
1805 	ROM_LOAD( "qq-fg3.bin",   0x0000, 0x4000, CRC(91a949cc) SHA1(bd27a6bb744f73cb918318f1bc3aa5bde39417c2) )	/* sprites */
1806 	ROM_LOAD( "qq-fg2.bin",   0x4000, 0x4000, CRC(782d9431) SHA1(04d46014e9a5b80b8215b5338fa9de27e530e4a9) )
1807 	ROM_LOAD( "qq-fg1.bin",   0x8000, 0x4000, CRC(71c3ac4c) SHA1(ed3444b3c8bd332b83f2700f1d6ea6bc9e185d8c) )
1808 	ROM_LOAD( "qq-fg0.bin",   0xc000, 0x4000, CRC(6192853f) SHA1(907e62a3835bacda4104dcc1d7e946e4e8e821ef) )
1809 ROM_END
1810 
1811 ROM_START( krull )
1812 	ROM_REGION( 0x10000, REGION_CPU1, 0 )     /* 64k for code */
1813 	ROM_LOAD( "ram2.bin",     0x1000, 0x1000, CRC(302feadf) SHA1(9d70de35e4f0490dc4e601070993ad146f250dea) )
1814 	ROM_LOAD( "ram4.bin",     0x2000, 0x1000, CRC(79355a60) SHA1(57ad5c904b9ac4bf7c7d828bf755bbcbba6a4fd7) )
1815 	ROM_LOAD( "rom4.bin",     0x6000, 0x2000, CRC(2b696394) SHA1(b18270f4ad97743f6ff8c4cbc93e523c77a8e794) )
1816 	ROM_LOAD( "rom3.bin",     0x8000, 0x2000, CRC(14b0ee42) SHA1(276c4008a013806b3989c529f41cbc358ec49fd6) )
1817 	ROM_LOAD( "rom2.bin",     0xa000, 0x2000, CRC(b5fad94a) SHA1(1bae895fbdd658cfb56c53cc2139282cc1e778de) )
1818 	ROM_LOAD( "rom1.bin",     0xc000, 0x2000, CRC(1ad956a3) SHA1(f5b74b196fe1bd9ab48336e0051cbf29c650cfc1) )
1819 	ROM_LOAD( "rom0.bin",     0xe000, 0x2000, CRC(a466afae) SHA1(d691cbb46e8c3b71f9b1688d7fcef36df82aa854) )
1820 
1821 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for sound cpu */
1822 	ROM_LOAD( "snd1.bin",     0xe000, 0x1000, CRC(dd2b30b4) SHA1(f01cb64932493bf69d4fc75a7fa809ff6f6e4263) )
1823 	ROM_RELOAD(               0x6000, 0x1000 ) /* A15 is not decoded */
1824 	ROM_LOAD( "snd2.bin",     0xf000, 0x1000, CRC(8cab901b) SHA1(b886532828efc8cf442e2ee4ebbfe37acd489f62) )
1825 	ROM_RELOAD(               0x7000, 0x1000 ) /* A15 is not decoded */
1826 
1827 	/* no gfx1 (RAM is used) */
1828 
1829 	ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE )
1830 	ROM_LOAD( "fg3.bin",      0x0000, 0x2000, CRC(82d77a45) SHA1(753476609c4bf4f0f0cd28d61fd8aef6967bda57) )	/* sprites */
1831 	ROM_LOAD( "fg2.bin",      0x2000, 0x2000, CRC(25a24317) SHA1(33d2c23a388b09c4a09b9893648c30fbd5482cc3) )
1832 	ROM_LOAD( "fg1.bin",      0x4000, 0x2000, CRC(7e3ad7b0) SHA1(0de86e632e5a9e6c1ec82550b15dc25a17ab7066) )
1833 	ROM_LOAD( "fg0.bin",      0x6000, 0x2000, CRC(7402dc19) SHA1(d6d1b8aca8e9ee3bdc57f4474d22b405963909ec) )
1834 ROM_END
1835 
1836 ROM_START( mach3 )
1837 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1838 	ROM_LOAD( "m3rom4.bin",   0x6000, 0x2000, CRC(8bfd5a44) SHA1(61f5c6c39047c1d0296e2cacce2be9525cb47176) )
1839 	ROM_LOAD( "m3rom3.bin",   0x8000, 0x2000, CRC(b1b045af) SHA1(4e71ca4661bf5daaf9e2ffbb930ac3b13e2e57bd) )
1840 	ROM_LOAD( "m3rom2.bin",   0xa000, 0x2000, CRC(fbdfb03d) SHA1(61d587558fc036fc3b55d3e36ebb6940e9eda258) )
1841 	ROM_LOAD( "m3rom1.bin",   0xc000, 0x2000, CRC(3b0ba80b) SHA1(bc7e961311b40f05f2998f10f0a68f2e515c8e66) )
1842 	ROM_LOAD( "m3rom0.bin",   0xe000, 0x2000, CRC(70c12bf4) SHA1(c26127b6e2a16791b3be8abac93be6af4f30fb3b) )
1843 
1844 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for sound cpu */
1845 	ROM_LOAD( "m3drom1.bin",  0xf000, 0x1000, CRC(a6e29212) SHA1(a73aafc2efa99e9ae0aecbb6075a10f7178ac938) )
1846 
1847 	ROM_REGION( 0x10000, REGION_CPU3, 0 )	/* 64k for second sound cpu */
1848 	ROM_LOAD( "m3yrom1.bin",  0xf000, 0x1000, CRC(eddf8872) SHA1(29ed0d1828639849bab826b3e2ab4eefac45fd85) )
1849 
1850 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1851 	ROM_LOAD( "mach3bg0.bin", 0x0000, 0x1000, CRC(ea2f5257) SHA1(664502dd2b7ee4ce96820da532615f3902b45557) )
1852 	ROM_LOAD( "mach3bg1.bin", 0x1000, 0x1000, CRC(f543e4ce) SHA1(2a1b7dbbcd9756f836ca2e42973043b98a303082) )
1853 
1854 	ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE )
1855 	ROM_LOAD( "mach3fg3.bin", 0x0000, 0x2000, CRC(472128b4) SHA1(8c6f36cab5ec8abb6db2e6d52530560664b950fe) )
1856 	ROM_LOAD( "mach3fg2.bin", 0x2000, 0x2000, CRC(2a59e99e) SHA1(5c1faa244fc0f53cc2a52c8d4d40fb178706c2ed) )
1857 	ROM_LOAD( "mach3fg1.bin", 0x4000, 0x2000, CRC(9b88767b) SHA1(8071e11906b3f0026f9a210cc5a236d95ca1f659) )
1858 	ROM_LOAD( "mach3fg0.bin", 0x6000, 0x2000, CRC(0bae12a5) SHA1(7bc0b82ccab0e4498a7a2a9dc85f03125f25826e) )
1859 
1860 	ROM_REGION( 1024*1024, REGION_USER1, 0)	/* about 30 min of target data from laserdisc */
1861 	ROM_LOAD( "m3target.bin", 0, 1024*1024, CRC(6e779a6f) SHA1(e556ad438e637a71f17ea04088de10b39b45f8df) )
1862 ROM_END
1863 
1864 ROM_START( usvsthem )
1865 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1866 	ROM_LOAD( "usvs.rm4",     0x6000, 0x2000, CRC(0d7a4072) SHA1(84a7eec31037243185ab40ab269be0f83946ebd5) )
1867 	ROM_LOAD( "usvs.rm3",     0x8000, 0x2000, CRC(6f32a671) SHA1(d54c1e09988f78ea706b4b0da675b27d9d407696) )
1868 	ROM_LOAD( "usvs.rm2",     0xa000, 0x2000, CRC(36770716) SHA1(797b48ef48f563ed21ea263297fe0ed61c69f41e) )
1869 	ROM_LOAD( "usvs.rm1",     0xc000, 0x2000, CRC(697bc989) SHA1(ebfc0868f949e5aba1efb8fbce06f795888d8e00) )
1870 	ROM_LOAD( "usvs.rm0",     0xe000, 0x2000, CRC(30cf6bd9) SHA1(527ad3b96ea4a77f6d6f8a89a9215da490292297) )
1871 
1872 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for sound cpu */
1873 	ROM_LOAD( "usvsdrom.1",   0xe000, 0x2000, CRC(c0b5cab0) SHA1(b18e8fd9837bb52d6b3d86f2b652f6573c7cd3b3) )
1874 
1875 	ROM_REGION( 0x10000, REGION_CPU3, 0 )	/* 64k for second sound cpu */
1876 	ROM_LOAD( "usvsyrom.1",   0xe000, 0x2000, CRC(c3d245ca) SHA1(d281b139ae6c58e855b2914a24ca4bc5f8800681) )
1877 
1878 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1879 	ROM_LOAD( "usvs.bg0",     0x0000, 0x1000, CRC(8a0de09f) SHA1(6b56ffbe8569625ff307510645683b4e3f04e753) )
1880 	ROM_LOAD( "usvs.bg1",     0x1000, 0x1000, CRC(6fb64d3c) SHA1(0cf0fd60995e56eddc56c7fac6280abe3b87dbc9) )
1881 
1882 	ROM_REGION( 0x10000, REGION_GFX2, ROMREGION_DISPOSE )
1883 	ROM_LOAD( "usvs.fg3",     0x0000, 0x4000, CRC(98703015) SHA1(120e87ef640db3f23c1d2c0abf4b6acff7714512) )
1884 	ROM_LOAD( "usvs.fg2",     0x4000, 0x4000, CRC(d3990707) SHA1(81d58f6bc6ec04b95036f81c4cd3516d0adf348e) )
1885 	ROM_LOAD( "usvs.fg1",     0x8000, 0x4000, CRC(a2057430) SHA1(e24aa35cb27fa41b75f5c01f4c083dc6eeb04c0d) )
1886 	ROM_LOAD( "usvs.fg0",     0xc000, 0x4000, CRC(7734e53f) SHA1(c1307596ba098c98e741f3c00686b514587e1d0a) )
1887 ROM_END
1888 
1889 ROM_START( 3stooges )
1890 	ROM_REGION( 0x10000, REGION_CPU1, 0 )     /* 64k for code */
1891 	ROM_LOAD( "gv113ram.4",   0x2000, 0x1000, CRC(533bff2a) SHA1(58d0be8add4b02dc3e27cf6b17a05baf4304f3ce) )
1892 	ROM_LOAD( "gv113rom.4",   0x6000, 0x2000, CRC(8b6e52b8) SHA1(6e17e11afce92a7fa1735a724f0c0faf9375ac89) )
1893 	ROM_LOAD( "gv113rom.3",   0x8000, 0x2000, CRC(b816d8c4) SHA1(86e16888492390034ac04e3f6a9f56422575c778) )
1894 	ROM_LOAD( "gv113rom.2",   0xa000, 0x2000, CRC(b45b2a79) SHA1(7d0b19bec462ab67f518361afdf4b6982829ed07) )
1895 	ROM_LOAD( "gv113rom.1",   0xc000, 0x2000, CRC(34ab051e) SHA1(df416aaf34d6bbbdd79ae633842355a292ed935d) )
1896 	ROM_LOAD( "gv113rom.0",   0xe000, 0x2000, CRC(ab124329) SHA1(de1bc721eea74426035eec10a389f77b435aa9b9) )
1897 
1898 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for sound cpu */
1899 	ROM_LOAD( "drom1",        0xe000, 0x2000, CRC(87a9fa10) SHA1(9c07837dce1384d6b51b716aa8ceeb5bc247a911) )
1900 
1901 	ROM_REGION( 0x10000, REGION_CPU3, 0 )	/* 64k for second sound cpu */
1902 	ROM_LOAD( "yrom2",        0xc000, 0x2000, CRC(90f9c940) SHA1(646dacc902cf235948ac9c064c92390e2764370b) )
1903 	ROM_LOAD( "yrom1",        0xe000, 0x2000, CRC(55f8ab30) SHA1(a6b6318f12fd4a1fab61b82cde33759da615d5b2) )
1904 
1905 	/* no gfx1 (RAM is used) */
1906 
1907 	ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE )
1908 	ROM_LOAD( "gv113fg3",     0x0000, 0x2000, CRC(28071212) SHA1(33ce5cfae3491658f8b4cb977dc2da0a75dffee4) )	/* sprites */
1909 	ROM_LOAD( "gv113fg2",     0x2000, 0x2000, CRC(9fa3dfde) SHA1(693327c60691748bf16e486b2962ebe019009a69) )
1910 	ROM_LOAD( "gv113fg1",     0x4000, 0x2000, CRC(fb223854) SHA1(b1eaad971edd2f3a2aed66c5f9d0f27d6ffd5466) )
1911 	ROM_LOAD( "gv113fg0",     0x6000, 0x2000, CRC(95762c53) SHA1(e486a232e6b62ab21b9c3be521606dea2a451889) )
1912 ROM_END
1913 
1914 ROM_START( curvebal )
1915 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1916 	ROM_LOAD( "cb-rom-3.chp", 0x8000, 0x2000, CRC(72ad4d45) SHA1(9537eb360ed1d33d399cc2d8761c36b7d25fdae0) )
1917 	ROM_LOAD( "cb-rom-2.chp", 0xa000, 0x2000, CRC(d46c3db5) SHA1(d4f464a6ebc090d100e890303557f0d05214033b) )
1918 	ROM_LOAD( "cb-rom-1.chp", 0xc000, 0x2000, CRC(eb1e08bd) SHA1(f558664df12e4e15ef2779a0bdf99538f8c43ca3) )
1919 	ROM_LOAD( "cb-rom-0.chp", 0xe000, 0x2000, CRC(401fc7e3) SHA1(86ca53cb6f1d88d5a95baa9524c6b42a1f7fc9c2) )
1920 
1921 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for sound cpu */
1922 	ROM_LOAD( "yrom.sbd",     0xe000, 0x1000, CRC(4c313d9b) SHA1(c61a8c827f4b199fdfb6ffc0bc6cca396c73625e) )
1923 	ROM_LOAD( "drom.sbd",     0xf000, 0x1000, CRC(cecece88) SHA1(4c6639f6f89f80b04b6ffbb5004ea2121e71f504) )
1924 
1925 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1926 	ROM_LOAD( "cb-bg-0.chp",  0x0000, 0x1000, CRC(d666a179) SHA1(3b9aca5272ae3f3d99ba55f5dc2db4eac82896bc) )
1927 	ROM_LOAD( "cb-bg-1.chp",  0x1000, 0x1000, CRC(5e34ff4e) SHA1(f88234c0f46533540815e05479938810ea4fb4f8) )
1928 
1929 	ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE )
1930 	ROM_LOAD( "cb-fg-3.chp",  0x0000, 0x2000, CRC(9c9452fe) SHA1(4cf5ee2efa5734849781aa57c2b92ed542d5cb4e) )
1931 	ROM_LOAD( "cb-fg-2.chp",  0x2000, 0x2000, CRC(065131af) SHA1(fe78ee907f1d0e9f6fc3c96e4fa4aff390115147) )
1932 	ROM_LOAD( "cb-fg-1.chp",  0x4000, 0x2000, CRC(1b7b7f94) SHA1(ffb0f163531c2f9d184d8733466d23ab9d48ea2e) )
1933 	ROM_LOAD( "cb-fg-0.chp",  0x6000, 0x2000, CRC(e3a8230e) SHA1(c256b5ca25dc15c11d574d0ad823b34093933802) )
1934 ROM_END
1935 
1936 
1937 static DRIVER_INIT( gottlieb )
1938 {
1939 	gottlieb_sound_init();
1940 }
1941 
1942 
1943 GAME( 1982, reactor,  0,     reactor,  reactor,  0,        ROT0,   "Gottlieb", "Reactor" )
1944 GAME( 1982, qbert,    0,     qbert,    qbert,    0,        ROT270, "Gottlieb", "Q*bert (US)" )
1945 GAME( 1982, qbertjp,  qbert, qbert,    qbert,    0,        ROT270, "Gottlieb (Konami license)", "Q*bert (Japan)" )
1946 GAME( 1982, myqbert,  qbert, qbert,    qbert,    0,        ROT270, "Gottlieb", "Mello Yello Q*bert" )
1947 GAME( 1982, qberttst, qbert, qbert,    qbert,    0,        ROT270, "Gottlieb", "Q*bert (early test version)" )
1948 GAME( 1982, insector, 0,     gottlieb, insector, 0,        ROT0,   "Gottlieb", "Insector (prototype)" )
1949 GAME( 1983, mplanets, 0,     gottlieb, mplanets, 0,        ROT270, "Gottlieb", "Mad Planets" )
1950 GAME( 1983, mplanuk,  mplanets, gottlieb, mplanets, 0,        ROT270, "Gottlieb (Taitel license)", "Mad Planets (UK)" )
1951 GAME( 1983, krull,    0,     krull,    krull,    0,        ROT270, "Gottlieb", "Krull" )
1952 GAME( 1983, sqbert,   0,     qbert,    qbert,    0,        ROT270, "Mylstar", "Faster, Harder, More Challenging Q*bert (prototype)" )
1953 GAMEX(1983, mach3,    0,     mach3,    mach3,    gottlieb, ROT0,   "Mylstar", "M.A.C.H. 3", GAME_IMPERFECT_GRAPHICS )
1954 GAME( 1983, qbertqub, 0,     qbert,    qbertqub, 0,        ROT270, "Mylstar", "Q*bert's Qubes" )
1955 GAME( 1983, screwloo, 0,     gottlieb2,screwloo, gottlieb, ROT0,   "Mylstar", "Screw Loose (prototype)" )
1956 GAME( 1984, curvebal, 0,     gottlieb, curvebal, 0,        ROT270, "Mylstar", "Curve Ball" )
1957 GAMEX(1984, usvsthem, 0,     usvsthem, usvsthem, gottlieb, ROT0,   "Mylstar", "Us vs. Them", GAME_IMPERFECT_GRAPHICS )
1958 GAMEX(1984, 3stooges, 0,     stooges,  3stooges, gottlieb, ROT0,   "Mylstar", "The Three Stooges In Brides Is Brides", GAME_IMPERFECT_SOUND )
1959