1 /***************************************************************************
2 
3 Universal board numbers (found on the schematics)
4 
5 Cosmic Guerilla - 7907A
6 Cosmic Alien    - 7910
7 Magical Spot	- 8013
8 Magical Spot II - 8013
9 Devil Zone      - 8022
10 
11 ***************************************************************************/
12 
13 
14 #include "driver.h"
15 #include "vidhrdw/generic.h"
16 #include "cpu/z80/z80.h"
17 
18 
19 PALETTE_INIT( panic );
20 PALETTE_INIT( cosmica );
21 PALETTE_INIT( cosmicg );
22 PALETTE_INIT( magspot2 );
23 PALETTE_INIT( nomnlnd );
24 VIDEO_UPDATE( panic );
25 VIDEO_UPDATE( magspot2 );
26 VIDEO_UPDATE( devzone );
27 VIDEO_UPDATE( cosmica );
28 VIDEO_UPDATE( cosmicg );
29 VIDEO_UPDATE( nomnlnd );
30 WRITE_HANDLER( cosmic_color_register_w );
31 WRITE_HANDLER( cosmic_background_enable_w );
32 
33 
34 static unsigned int pixel_clock = 0;
35 
36 
37 
38 /* Schematics show 12 triggers for discrete sound circuits */
39 
WRITE_HANDLER(panic_sound_output_w)40 static WRITE_HANDLER( panic_sound_output_w )
41 {
42     static int sound_enabled=1;
43 
44     /* Sound Enable / Disable */
45 
46     if (offset == 11)
47     {
48     	int count;
49     	if (data == 0)
50         	for(count=0; count<9; count++) sample_stop(count);
51 
52     	sound_enabled = data;
53     }
54 
55     if (sound_enabled)
56     {
57         switch (offset)
58         {
59 		case 0:  if (data) sample_start(0, 0, 0); break;  	/* Walk */
60         case 1:  if (data) sample_start(0, 5, 0); break;  	/* Enemy Die 1 */
61         case 2:  if (data)								  	/* Drop 1 */
62 				 {
63 					 if (!sample_playing(1))
64 					 {
65 						 sample_stop(2);
66 						 sample_start(1, 3, 0);
67 					 }
68 				 }
69 				 else
70 				 	sample_stop(1);
71 				 	break;
72 
73 		case 3:	 if (data && !sample_playing(6))			/* Oxygen */
74 					sample_start(6, 9, 1);
75                  break;
76 
77         case 4:  break;										/* Drop 2 */
78         case 5:  if (data) sample_start(0, 5, 0); break;	/* Enemy Die 2 (use same sample as 1) */
79         case 6:  if (data && !sample_playing(1) && !sample_playing(3))   /* Hang */
80                  	sample_start(2, 2, 0);
81                     break;
82 
83 		case 7:  if (data) 									/* Escape */
84 				 {
85 					 sample_stop(2);
86 					 sample_start(3, 4, 0);
87 				 }
88 				 else
89 				 	 sample_stop(3);
90                      break;
91 
92     	case 8:  if (data) sample_start(0, 1, 0); break;	/* Stairs */
93     	case 9:  if (data)									/* Extend */
94 				 	sample_start(4, 8, 0);
95 				 else
96 					sample_stop(4);
97 	  			 break;
98 
99         case 10: DAC_data_w(0, data); break;				/* Bonus */
100 		case 15: if (data) sample_start(0, 6, 0); break;	/* Player Die */
101 		case 16: if (data) sample_start(5, 7, 0); break;	/* Enemy Laugh */
102         case 17: if (data) sample_start(0, 10, 0); break;	/* Coin - Not triggered by software */
103         }
104     }
105 
106     #ifdef MAME_DEBUG
107  	log_cb(RETRO_LOG_DEBUG, LOGPRE "Sound output %x=%x\n",offset,data);
108 	#endif
109 }
110 
WRITE_HANDLER(panic_sound_output2_w)111 WRITE_HANDLER( panic_sound_output2_w )
112 {
113 	panic_sound_output_w(offset+15, data);
114 }
115 
WRITE_HANDLER(cosmicg_output_w)116 WRITE_HANDLER( cosmicg_output_w )
117 {
118 	static int march_select;
119     static int gun_die_select;
120     static int sound_enabled;
121 
122     /* Sound Enable / Disable */
123 
124     if (offset == 12)
125     {
126 	    int count;
127 
128     	sound_enabled = data;
129     	if (data == 0)
130         	for(count=0;count<9;count++) sample_stop(count);
131     }
132 
133     if (sound_enabled)
134     {
135         switch (offset)
136         {
137 		/* The schematics show a direct link to the sound amp  */
138 		/* as other cosmic series games, but it never seems to */
139 		/* be used for anything. It is implemented for sake of */
140 		/* completness. Maybe it plays a tune if you win ?     */
141 		case 1:  DAC_data_w(0, -data); break;
142 		case 2:  if (data) sample_start (0, march_select, 0); break;	/* March Sound */
143 		case 3:  march_select = (march_select & 0xfe) | data; break;
144         case 4:  march_select = (march_select & 0xfd) | (data << 1); break;
145         case 5:  march_select = (march_select & 0xfb) | (data << 2); break;
146 
147         case 6:  if (data)  							/* Killer Attack (crawly thing at bottom of screen) */
148 					sample_start(1, 8, 1);
149 				 else
150 					sample_stop(1);
151 				 break;
152 
153 		case 7:  if (data)								/* Bonus Chance & Got Bonus */
154 				 {
155 					 sample_stop(4);
156 					 sample_start(4, 10, 0);
157 				 }
158 				 break;
159 
160 		case 8:  if (data)
161 				 {
162 					 if (!sample_playing(4)) sample_start(4, 9, 1);
163 				 }
164 				 else
165 				 	sample_stop(4);
166 				 break;
167 
168 		case 9:  if (data) sample_start(3, 11, 0); break;	/* Got Ship */
169 /*		case 11: watchdog_reset_w(0, 0); break;				 // Watchdog /*/
170 		case 13: if (data) sample_start(8, 13-gun_die_select, 0); break;  /* Got Monster / Gunshot */
171 		case 14: gun_die_select = data; break;
172 		case 15: if (data) sample_start(5, 14, 0); break;	/* Coin Extend (extra base) */
173         }
174     }
175 
176 	#ifdef MAME_DEBUG
177  	if (offset != 11) log_cb(RETRO_LOG_DEBUG, LOGPRE "Output %x=%x\n",offset,data);
178     #endif
179 }
180 
181 
WRITE_HANDLER(cosmica_sound_output_w)182 static WRITE_HANDLER( cosmica_sound_output_w )
183 {
184     static int  sound_enabled=1;
185     static int dive_bomb_b_select=0;
186 
187     /* Sound Enable / Disable */
188     if (offset == 11)
189     {
190     	int count;
191     	if (data == 0)
192         	for(count=0; count<13; count++) sample_stop(count);
193 	else
194 	{
195 	  sample_start(0, 0, 1); /*Background Noise*/
196 	}
197 
198     	sound_enabled = data;
199     }
200 
201     if (sound_enabled)
202     {
203         switch (offset)
204         {
205 		case 0: if (data) sample_start(1, 2, 0); break; /*Dive Bombing Type A*/
206 
207 		case 2:	/*Dive Bombing Type B (Main Control)*/
208 
209 
210 			if (data)
211 			{
212 
213 			  switch(dive_bomb_b_select)
214 			  {
215 
216 			    case 2:
217 
218 					if (sample_playing(2))
219 					{
220 					  sample_stop(2);
221 	   				  sample_start(2, 3, 0); break;
222 					}
223 					else
224  		    			 sample_start(2, 3, 0); break;
225 
226 
227 			    case 3:
228 
229 					if (sample_playing(3))
230 					{
231 					  sample_stop(3);
232 	   				  sample_start(3, 4, 0); break;
233 					}
234 					else
235  		    			 sample_start(3, 4, 0); break;
236 
237 
238 			    case 4:
239 					if (sample_playing(4))
240 					{
241 					  sample_stop(4);
242 	   				  sample_start(4, 5, 0); break;
243 					}
244 					else
245 	 	    			 sample_start(4, 5, 0); break;
246 
247 
248 			    case 5:
249 					if (sample_playing(5))
250 					{
251 					  sample_stop(5);
252 	   				  sample_start(5, 6, 0); break;
253 					}
254 					else
255  		    			 sample_start(5, 6, 0); break;
256 
257 
258 			    case 6:
259 					if (sample_playing(6))
260 					{
261 					  sample_stop(6);
262 	   				  sample_start(6, 7, 0); break;
263 					}
264 					else
265  		    			 sample_start(6, 7, 0); break;
266 
267 			    case 7:
268 
269 					if (sample_playing(7))
270 					{
271 					  sample_stop(7);
272 	   				  sample_start(7, 8, 0); break;
273 					}
274 					else
275  		    			 sample_start(7, 8, 0); break;
276 			  }
277 			}
278 
279 		case 3: /*Dive Bombing Type B (G.S.B)*/
280 
281 			if (data)
282 			  dive_bomb_b_select |= 0x04;
283 			else
284 			  dive_bomb_b_select &= 0xFB;
285 			break;
286 
287 
288 		case 4: /*Dive Bombing Type B (M.S.B)*/
289 			if (data)
290 			  dive_bomb_b_select |= 0x02;
291 			else
292 			  dive_bomb_b_select &= 0xFD;
293 
294 			break;
295 
296 		case 5: /*Dive Bombing Type B (L.S.B)*/
297 
298 
299 			if (data)
300 			  dive_bomb_b_select |= 0x01;
301 			else
302 			  dive_bomb_b_select &= 0xFE;
303 			break;
304 
305 
306 		case 6: if (data) sample_start(8, 9, 0); break; /*Fire Control*/
307 
308 		case 7: if (data) sample_start(9, 10, 0); break; /*Small Explosion*/
309 
310 		case 8: if (data) sample_start(10, 11, 0); break; /*Loud Explosion*/
311 
312 		case 9:
313 		 if (data)
314 		  sample_start(11, 1, 1);
315 		else
316 		 sample_stop(11);
317 
318 		break; /*Extend Sound control*/
319 
320 		case 12:
321 		 if (data) sample_start(11,12, 0); break; /*Insert Coin*/
322         }
323     }
324 
325     #ifdef MAME_DEBUG
326  	log_cb(RETRO_LOG_DEBUG, LOGPRE "Sound output %x=%x\n",offset,data);
327 	#endif
328 }
329 
330 
331 
332 
INTERRUPT_GEN(panic_interrupt)333 static INTERRUPT_GEN( panic_interrupt )
334 {
335 	if (cpu_getiloops() != 0)
336 	{
337     	/* Coin insert - Trigger Sample */
338 
339         /* mostly not noticed since sound is */
340 		/* only enabled if game in progress! */
341 
342     	if ((input_port_3_r(0) & 0xc0) != 0xc0)
343         	panic_sound_output_w(17,1);
344 
345 		cpu_set_irq_line_and_vector(0, 0, HOLD_LINE, 0xcf);	/* RST 08h */
346     }
347     else
348     {
349         cpu_set_irq_line_and_vector(0, 0, HOLD_LINE, 0xd7);	/* RST 10h */
350     }
351 }
352 
INTERRUPT_GEN(cosmica_interrupt)353 static INTERRUPT_GEN( cosmica_interrupt )
354 {
355     pixel_clock = (pixel_clock + 2) & 0x3f;
356 
357     if (pixel_clock == 0)
358     {
359 		if (readinputport(3) & 1)	/* Left Coin */
360 			cpu_set_irq_line(0, IRQ_LINE_NMI, PULSE_LINE);
361     }
362 }
363 
INTERRUPT_GEN(cosmicg_interrupt)364 static INTERRUPT_GEN( cosmicg_interrupt )
365 {
366     /* Insert Coin */
367 
368 	/* R Nabet : fixed to make this piece of code sensible.
369 	I assumed that the interrupt request lasted for as long as the coin was "sensed".
370 	It makes sense and works fine, but I cannot be 100% sure this is correct,
371 	as I have no Cosmic Guerilla console :-) . */
372 
373 	if ((readinputport(2) & 1)) /* Coin */
374 	{
375 		/* on tms9980, a 6 on the interrupt bus means level 4 interrupt */
376 		cpu_set_irq_line_and_vector(0, 0, ASSERT_LINE, 6);
377 	}
378 	else
379 	{
380 		cpu_set_irq_line(0, 0, CLEAR_LINE);
381 	}
382 }
383 
INTERRUPT_GEN(magspot2_interrupt)384 static INTERRUPT_GEN( magspot2_interrupt )
385 {
386 	/* Coin 1 causes an IRQ, Coin 2 an NMI */
387 	if (input_port_4_r(0) & 0x01)
388 	{
389   		cpu_set_irq_line(0, 0, HOLD_LINE);
390 	}
391 	else if (input_port_4_r(0) & 0x02)
392 	{
393 		cpu_set_irq_line(0, IRQ_LINE_NMI, PULSE_LINE);
394 	}
395 }
396 
INTERRUPT_GEN(nomnlnd_interrupt)397 static INTERRUPT_GEN( nomnlnd_interrupt )
398 {
399 	/* Coin causes an NMI */
400 	if (input_port_4_r(0) & 0x01)
401 	{
402 		cpu_set_irq_line(0, IRQ_LINE_NMI, PULSE_LINE);
403 	}
404 }
405 
406 
407 
READ_HANDLER(cosmica_pixel_clock_r)408 static READ_HANDLER( cosmica_pixel_clock_r )
409 {
410 	return pixel_clock;
411 }
412 
READ_HANDLER(cosmicg_port_0_r)413 static READ_HANDLER( cosmicg_port_0_r )
414 {
415 	/* The top four address lines from the CRTC are bits 0-3 */
416 
417 	return (input_port_0_r(0) & 0xf0) | ((cpu_getscanline() & 0xf0) >> 4);
418 }
419 
READ_HANDLER(magspot2_coinage_dip_r)420 static READ_HANDLER( magspot2_coinage_dip_r )
421 {
422 	return (input_port_5_r(0) & (1 << (7 - offset))) ? 0 : 1;
423 }
424 
425 
426 /* Has 8 way joystick, remap combinations to missing directions */
427 
READ_HANDLER(nomnlnd_port_0_1_r)428 static READ_HANDLER( nomnlnd_port_0_1_r )
429 {
430 	int control;
431     int fire = input_port_3_r(0);
432 
433 	if (offset)
434 		control = input_port_1_r(0);
435     else
436 		control = input_port_0_r(0);
437 
438     /* If firing - stop tank */
439 
440     if ((fire & 0xc0) == 0) return 0xff;
441 
442     /* set bit according to 8 way direction */
443 
444     if ((control & 0x82) == 0 ) return 0xfe;    /* Up & Left */
445     if ((control & 0x0a) == 0 ) return 0xfb;    /* Down & Left */
446     if ((control & 0x28) == 0 ) return 0xef;    /* Down & Right */
447     if ((control & 0xa0) == 0 ) return 0xbf;    /* Up & Right */
448 
449     return control;
450 }
451 
452 
453 
WRITE_HANDLER(flip_screen_w)454 static WRITE_HANDLER( flip_screen_w )
455 {
456 	flip_screen_set(data&0x80);
457 }
458 
459 
MEMORY_READ_START(panic_readmem)460 static MEMORY_READ_START( panic_readmem )
461 	{ 0x0000, 0x3fff, MRA_ROM },
462 	{ 0x4000, 0x5fff, MRA_RAM },
463 	{ 0x6800, 0x6800, input_port_0_r }, /* IN1 */
464 	{ 0x6801, 0x6801, input_port_1_r }, /* IN2 */
465 	{ 0x6802, 0x6802, input_port_2_r }, /* DSW */
466 	{ 0x6803, 0x6803, input_port_3_r }, /* IN0 */
467 MEMORY_END
468 
469 static MEMORY_WRITE_START( panic_writemem )
470 	{ 0x0000, 0x3fff, MWA_ROM },
471 	{ 0x4000, 0x5fff, MWA_RAM, &videoram, &videoram_size },
472 	{ 0x6000, 0x601f, MWA_RAM, &spriteram, &spriteram_size },
473 	{ 0x7000, 0x700b, panic_sound_output_w },
474 	{ 0x700c, 0x700e, cosmic_color_register_w },
475 	{ 0x700f, 0x700f, flip_screen_w },
476 	{ 0x7800, 0x7801, panic_sound_output2_w },
477 MEMORY_END
478 
479 
480 static MEMORY_READ_START( cosmica_readmem )
481 	{ 0x0000, 0x3fff, MRA_ROM },
482 	{ 0x4000, 0x5fff, MRA_RAM },
483 	{ 0x6800, 0x6800, input_port_0_r }, /* IN1 */
484 	{ 0x6801, 0x6801, input_port_1_r }, /* IN2 */
485 	{ 0x6802, 0x6802, input_port_2_r }, /* DSW */
486 	{ 0x6803, 0x6803, cosmica_pixel_clock_r },
487 MEMORY_END
488 
489 static MEMORY_WRITE_START( cosmica_writemem )
490 	{ 0x0000, 0x3fff, MWA_ROM },
491 	{ 0x4000, 0x5fff, MWA_RAM, &videoram, &videoram_size },
492 	{ 0x6000, 0x601f, MWA_RAM ,&spriteram, &spriteram_size },
493     { 0x7000, 0x700b, cosmica_sound_output_w  },
494 	{ 0x700c, 0x700d, cosmic_color_register_w },
495 	{ 0x700f, 0x700f, flip_screen_w },
496 MEMORY_END
497 
498 
499 static MEMORY_READ_START( cosmicg_readmem )
500 	{ 0x0000, 0x1fff, MRA_ROM },
501 	{ 0x2000, 0x3fff, MRA_RAM },
502 MEMORY_END
503 
504 static MEMORY_WRITE_START( cosmicg_writemem )
505 	{ 0x0000, 0x1fff, MWA_ROM },
506 	{ 0x2000, 0x3fff, MWA_RAM, &videoram, &videoram_size },
507 MEMORY_END
508 
509 static PORT_READ_START( cosmicg_readport )
510 	{ 0x00, 0x00, cosmicg_port_0_r },
511 	{ 0x01, 0x01, input_port_1_r },
512 PORT_END
513 
514 static PORT_WRITE_START( cosmicg_writeport )
515 	{ 0x00, 0x15, cosmicg_output_w },
516 	{ 0x16, 0x17, cosmic_color_register_w },
517 PORT_END
518 
519 
520 static MEMORY_READ_START( magspot2_readmem )
521 	{ 0x0000, 0x2fff, MRA_ROM },
522 	{ 0x3800, 0x3807, magspot2_coinage_dip_r },
523 	{ 0x5000, 0x5000, input_port_0_r },
524 	{ 0x5001, 0x5001, input_port_1_r },
525 	{ 0x5002, 0x5002, input_port_2_r },
526 	{ 0x5003, 0x5003, input_port_3_r },
527 	{ 0x6000, 0x7fff, MRA_RAM },
528 MEMORY_END
529 
530 static MEMORY_WRITE_START( magspot2_writemem )
531 	{ 0x0000, 0x2fff, MWA_ROM },
532 	{ 0x4000, 0x401f, MWA_RAM, &spriteram, &spriteram_size},
533 	{ 0x4800, 0x4800, DAC_0_data_w },
534 	{ 0x480c, 0x480d, cosmic_color_register_w },
535 	{ 0x480f, 0x480f, flip_screen_w },
536 	{ 0x6000, 0x7fff, MWA_RAM, &videoram, &videoram_size},
537 MEMORY_END
538 
539 
540 INPUT_PORTS_START( panic )
541 	PORT_START      /* IN1 */
542 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
543 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
544 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY )
545 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY )
546 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY )
547 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
548 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
549 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 )
550 
551 	PORT_START      /* IN2 */
552 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
553 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_COCKTAIL )
554 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_COCKTAIL )
555 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_COCKTAIL )
556 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_COCKTAIL )
557 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
558 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
559 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
560 
561 	PORT_START      /* DSW */
562 	PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coin_A ) )
563 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
564 	PORT_DIPSETTING(    0x05, DEF_STR( 2C_3C ) )
565 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
566 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
567 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_4C ) )
568 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
569 /* 0x06 and 0x07 disabled */
570 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
571 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
572 	PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
573 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Bonus_Life ) )
574 	PORT_DIPSETTING(    0x00, "3000" )
575 	PORT_DIPSETTING(    0x10, "5000" )
576 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Lives ) )
577 	PORT_DIPSETTING(    0x00, "3" )
578 	PORT_DIPSETTING(    0x20, "4" )
579 	PORT_DIPNAME( 0xc0, 0x40, DEF_STR( Coin_B ) )
580 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
581 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_1C ) )
582 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
583 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_3C ) )
584 
585 	PORT_START      /* IN0 */
586 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
587 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
588 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
589 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
590 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
591 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
592 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
593 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
594 
595 INPUT_PORTS_END
596 
597 INPUT_PORTS_START( cosmica )
598 	PORT_START      /* IN0 */
599 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
600 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
601 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY )
602 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
603 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
604 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
605 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
606 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
607 
608 	PORT_START      /* IN1 */
609 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
610 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL )
611 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_COCKTAIL )
612 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
613 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
614 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
615 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
616 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
617 
618 	PORT_START      /* IN2 */
619 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
620 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
621 	PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
622 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Lives ) )
623 	PORT_DIPSETTING(    0x02, "3" )
624 	PORT_DIPSETTING(    0x00, "5" )
625 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coinage ) )
626 	PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
627 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
628 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
629   /*PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )*/
630 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) )
631 	PORT_DIPSETTING(    0x30, "5000" )
632 	PORT_DIPSETTING(    0x20, "10000" )
633 	PORT_DIPSETTING(    0x10, "15000" )
634 	PORT_DIPSETTING(    0x00, "None" )
635 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
636 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
637 
638 	/* The coin slots are not memory mapped.  Coin causes a NMI, */
639 	/* This fake input port is used by the interrupt */
640 	/* handler to be notified of coin insertions. We use IMPULSE to */
641 	/* trigger exactly one interrupt, without having to check when the */
642 	/* user releases the key. */
643 
644 	PORT_START	/* FAKE */
645 	PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
646 
647 INPUT_PORTS_END
648 
649 /* These are used for the CR handling - This can be used to */
650 /* from 1 to 16 bits from any bit offset between 0 and 4096 */
651 
652 /* Offsets are in BYTES, so bits 0-7 are at offset 0 etc.   */
653 
654 INPUT_PORTS_START( cosmicg )
655 	PORT_START /* 4-7 */
656 	PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_SPECIAL )	/* pixel clock */
657 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
658 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
659 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 )
660 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
661 
662 	PORT_START /* 8-15 */
663 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY )
664 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
665 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL)
666 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_COCKTAIL)
667 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) )
668 	PORT_DIPSETTING(    0x10, "1000" )
669 	PORT_DIPSETTING(    0x20, "1500" )
670 	PORT_DIPSETTING(    0x30, "2000" )
671 	PORT_DIPSETTING(    0x00, "None" )
672 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Coinage ) )
673 	PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
674 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
675 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Lives ) )
676 	PORT_DIPSETTING(    0x00, "3" )
677 	PORT_DIPSETTING(    0x80, "5" )
678 
679 	PORT_START      /* Hard wired settings */
680 
681 	/* The coin slots are not memory mapped. Coin causes INT 4  */
682 	/* This fake input port is used by the interrupt handler 	*/
683 	/* to be notified of coin insertions. */
684 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
685 
686 	/* This dip switch is not read by the program at any time   */
687 	/* but is wired to enable or disable the flip screen output */
688 
689 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) )
690 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
691 	PORT_DIPSETTING(    0x02, DEF_STR( Cocktail ) )
692 
693 	/* This odd setting is marked as shown on the schematic,    */
694 	/* and again, is not read by the program, but wired into    */
695 	/* the watchdog circuit. The book says to leave it off      */
696 
697 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unused ) )
698 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
699 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
700 
701 INPUT_PORTS_END
702 
703 
704 INPUT_PORTS_START( magspot2 )
705 	PORT_START	/* IN0 */
706 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
707 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY )
708 	PORT_BIT( 0x1c, IP_ACTIVE_LOW, IPT_UNUSED )
709 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
710 	PORT_DIPNAME( 0xc0, 0x40, "Bonus Game" )
711 	PORT_DIPSETTING(    0x40, "5000" )
712 	PORT_DIPSETTING(    0x80, "10000" )
713 	PORT_DIPSETTING(    0xc0, "15000" )
714 	PORT_DIPSETTING(    0x00, "None" )
715 
716 	PORT_START	/* IN1 */
717 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
718 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_COCKTAIL )
719 	PORT_BIT( 0x1c, IP_ACTIVE_LOW, IPT_UNUSED )
720 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL )
721 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
722 
723 	PORT_START	/* IN2 */
724 	PORT_DIPNAME( 0x03, 0x01, DEF_STR( Bonus_Life ) )
725 	PORT_DIPSETTING(    0x01, "2000" )
726 	PORT_DIPSETTING(    0x02, "3000" )
727 	PORT_DIPSETTING(    0x03, "5000" )
728 	PORT_DIPSETTING(    0x00, "None" )
729 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
730 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
731 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
732 	PORT_DIPNAME( 0x18, 0x08, DEF_STR( Lives ) )
733 	PORT_DIPSETTING(    0x00, "2" )
734 	PORT_DIPSETTING(    0x08, "3" )
735 	PORT_DIPSETTING(    0x10, "4" )
736 	PORT_DIPSETTING(    0x18, "5" )
737 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
738 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
739 	PORT_DIPSETTING(    0x20, DEF_STR( Cocktail ) )
740 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
741 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
742 
743 	PORT_START	/* IN3 */
744 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_VBLANK )
745 	PORT_BIT( 0x1e, IP_ACTIVE_LOW, IPT_UNUSED )		/* always HI */
746 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL )	/* reads what was written to 4808.  Probably not used?? */
747 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
748 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
749 
750 	/* Fake port to handle coins */
751 	PORT_START	/* IN4 */
752 	PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
753 	PORT_BIT_IMPULSE( 0x02, IP_ACTIVE_HIGH, IPT_COIN2, 1 )
754 
755 	/* Fake port to handle coinage dip switches. Each bit goes to 3800-3807 */
756 	PORT_START	/* IN5 */
757 	PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_A ) )
758 	PORT_DIPSETTING(    0x0c, DEF_STR( 4C_1C ) )
759 	PORT_DIPSETTING(    0x08, DEF_STR( 3C_1C ) )
760 	PORT_DIPSETTING(    0x0d, DEF_STR( 4C_2C ) )
761 	PORT_DIPSETTING(    0x05, DEF_STR( 2C_1C ) )
762 	PORT_DIPSETTING(    0x09, DEF_STR( 3C_2C ) )
763 	PORT_DIPSETTING(    0x0e, DEF_STR( 4C_3C ) )
764 	PORT_DIPSETTING(    0x0f, DEF_STR( 4C_4C ) )
765 	PORT_DIPSETTING(    0x0a, DEF_STR( 3C_3C ) )
766 	PORT_DIPSETTING(    0x06, DEF_STR( 2C_2C ) )
767 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
768 	PORT_DIPSETTING(    0x0b, DEF_STR( 3C_4C ) )
769 	PORT_DIPSETTING(    0x07, DEF_STR( 2C_3C ) )
770 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
771 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
772 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_4C ) )
773 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
774 	PORT_DIPNAME( 0xf0, 0x00, DEF_STR( Coin_B ) )
775 	PORT_DIPSETTING(    0xc0, DEF_STR( 4C_1C ) )
776 	PORT_DIPSETTING(    0x80, DEF_STR( 3C_1C ) )
777 	PORT_DIPSETTING(    0xd0, DEF_STR( 4C_2C ) )
778 	PORT_DIPSETTING(    0x50, DEF_STR( 2C_1C ) )
779 	PORT_DIPSETTING(    0x90, DEF_STR( 3C_2C ) )
780 	PORT_DIPSETTING(    0xe0, DEF_STR( 4C_3C ) )
781 	PORT_DIPSETTING(    0xf0, DEF_STR( 4C_4C ) )
782 	PORT_DIPSETTING(    0xa0, DEF_STR( 3C_3C ) )
783 	PORT_DIPSETTING(    0x60, DEF_STR( 2C_2C ) )
784 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
785 	PORT_DIPSETTING(    0xb0, DEF_STR( 3C_4C ) )
786 	PORT_DIPSETTING(    0x70, DEF_STR( 2C_3C ) )
787 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
788 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_3C ) )
789 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_4C ) )
790 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_5C ) )
791 INPUT_PORTS_END
792 
793 INPUT_PORTS_START( devzone )
794 	PORT_START	/* IN0 */
795 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
796 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY )
797 	PORT_BIT( 0x1c, IP_ACTIVE_LOW, IPT_UNUSED )
798 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
799 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
800 
801 	PORT_START	/* IN1 */
802 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
803 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_COCKTAIL )
804 	PORT_BIT( 0x1c, IP_ACTIVE_LOW, IPT_UNUSED )
805 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL )
806 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
807 
808 	PORT_START	/* IN2 */
809 	PORT_DIPNAME( 0x03, 0x01, DEF_STR( Bonus_Life ) )
810 	PORT_DIPSETTING(    0x01, "4000" )
811 	PORT_DIPSETTING(    0x02, "6000" )
812 	PORT_DIPSETTING(    0x03, "8000" )
813 	PORT_DIPSETTING(    0x00, "None" )
814 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coinage ) )
815 	PORT_DIPSETTING(    0x0c, "Use Coin A & B" )
816 	PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
817 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
818 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
819 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Lives ) )
820 	PORT_DIPSETTING(    0x00, "2" )
821 	PORT_DIPSETTING(    0x10, "3" )
822 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
823 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
824 	PORT_DIPSETTING(    0x20, DEF_STR( Cocktail ) )
825 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
826 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
827 
828 	PORT_START	/* IN3 */
829 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_VBLANK )
830 	PORT_BIT( 0x3e, IP_ACTIVE_LOW, IPT_UNUSED )
831 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
832 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
833 
834 	/* Fake port to handle coins */
835 	PORT_START	/* IN4 */
836 	PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
837 	PORT_BIT_IMPULSE( 0x02, IP_ACTIVE_HIGH, IPT_COIN2, 1 )
838 
839 	PORT_START	/* IN5 */
840 	PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_A ) )
841 	PORT_DIPSETTING(    0x0c, DEF_STR( 4C_1C ) )
842 	PORT_DIPSETTING(    0x08, DEF_STR( 3C_1C ) )
843 	PORT_DIPSETTING(    0x0d, DEF_STR( 4C_2C ) )
844 	PORT_DIPSETTING(    0x05, DEF_STR( 2C_1C ) )
845 	PORT_DIPSETTING(    0x09, DEF_STR( 3C_2C ) )
846 	PORT_DIPSETTING(    0x0e, DEF_STR( 4C_3C ) )
847 	PORT_DIPSETTING(    0x0f, DEF_STR( 4C_4C ) )
848 	PORT_DIPSETTING(    0x0a, DEF_STR( 3C_3C ) )
849 	PORT_DIPSETTING(    0x06, DEF_STR( 2C_2C ) )
850 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
851 	PORT_DIPSETTING(    0x0b, DEF_STR( 3C_4C ) )
852 	PORT_DIPSETTING(    0x07, DEF_STR( 2C_3C ) )
853 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
854 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
855 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_4C ) )
856 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
857 	PORT_DIPNAME( 0xf0, 0x00, DEF_STR( Coin_B ) )
858 	PORT_DIPSETTING(    0xc0, DEF_STR( 4C_1C ) )
859 	PORT_DIPSETTING(    0x80, DEF_STR( 3C_1C ) )
860 	PORT_DIPSETTING(    0xd0, DEF_STR( 4C_2C ) )
861 	PORT_DIPSETTING(    0x50, DEF_STR( 2C_1C ) )
862 	PORT_DIPSETTING(    0x90, DEF_STR( 3C_2C ) )
863 	PORT_DIPSETTING(    0xe0, DEF_STR( 4C_3C ) )
864 	PORT_DIPSETTING(    0xf0, DEF_STR( 4C_4C ) )
865 	PORT_DIPSETTING(    0xa0, DEF_STR( 3C_3C ) )
866 	PORT_DIPSETTING(    0x60, DEF_STR( 2C_2C ) )
867 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
868 	PORT_DIPSETTING(    0xb0, DEF_STR( 3C_4C ) )
869 	PORT_DIPSETTING(    0x70, DEF_STR( 2C_3C ) )
870 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
871 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_3C ) )
872 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_4C ) )
873 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_5C ) )
874 INPUT_PORTS_END
875 
876 
877 INPUT_PORTS_START( devzone2 )
878 	PORT_START	/* IN0 */
879 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
880 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY )
881 	PORT_BIT( 0x1c, IP_ACTIVE_LOW, IPT_UNUSED )
882 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
883 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
884 
885 	PORT_START	/* IN1 */
886 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
887 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_COCKTAIL )
888 	PORT_BIT( 0x1c, IP_ACTIVE_LOW, IPT_UNUSED )
889 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL )
890 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
891 
892 	PORT_START	/* IN2 */
893 	PORT_DIPNAME( 0x03, 0x01, DEF_STR( Bonus_Life ) )
894 	PORT_DIPSETTING(    0x01, "2000" )
895 	PORT_DIPSETTING(    0x02, "3000" )
896 	PORT_DIPSETTING(    0x03, "5000" )
897 	PORT_DIPSETTING(    0x00, "None" )
898 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coinage ) )
899 	PORT_DIPSETTING(    0x0c, "Use Coin A & B" )
900 	PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
901 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
902 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
903 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Lives ) )
904 	PORT_DIPSETTING(    0x00, "2" )
905 	PORT_DIPSETTING(    0x10, "3" )
906 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
907 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
908 	PORT_DIPSETTING(    0x20, DEF_STR( Cocktail ) )
909 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
910 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
911 
912 	PORT_START	/* IN3 */
913 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_VBLANK )
914 	PORT_BIT( 0x3e, IP_ACTIVE_LOW, IPT_UNUSED )
915 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
916 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
917 
918 	/* Fake port to handle coins */
919 	PORT_START	/* IN4 */
920 	PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
921 	PORT_BIT_IMPULSE( 0x02, IP_ACTIVE_HIGH, IPT_COIN2, 1 )
922 
923 	PORT_START	/* IN5 */
924 	PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_A ) )
925 	PORT_DIPSETTING(    0x0c, DEF_STR( 4C_1C ) )
926 	PORT_DIPSETTING(    0x08, DEF_STR( 3C_1C ) )
927 	PORT_DIPSETTING(    0x0d, DEF_STR( 4C_2C ) )
928 	PORT_DIPSETTING(    0x05, DEF_STR( 2C_1C ) )
929 	PORT_DIPSETTING(    0x09, DEF_STR( 3C_2C ) )
930 	PORT_DIPSETTING(    0x0e, DEF_STR( 4C_3C ) )
931 	PORT_DIPSETTING(    0x0f, DEF_STR( 4C_4C ) )
932 	PORT_DIPSETTING(    0x0a, DEF_STR( 3C_3C ) )
933 	PORT_DIPSETTING(    0x06, DEF_STR( 2C_2C ) )
934 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
935 	PORT_DIPSETTING(    0x0b, DEF_STR( 3C_4C ) )
936 	PORT_DIPSETTING(    0x07, DEF_STR( 2C_3C ) )
937 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
938 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
939 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_4C ) )
940 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
941 	PORT_DIPNAME( 0xf0, 0x00, DEF_STR( Coin_B ) )
942 	PORT_DIPSETTING(    0xc0, DEF_STR( 4C_1C ) )
943 	PORT_DIPSETTING(    0x80, DEF_STR( 3C_1C ) )
944 	PORT_DIPSETTING(    0xd0, DEF_STR( 4C_2C ) )
945 	PORT_DIPSETTING(    0x50, DEF_STR( 2C_1C ) )
946 	PORT_DIPSETTING(    0x90, DEF_STR( 3C_2C ) )
947 	PORT_DIPSETTING(    0xe0, DEF_STR( 4C_3C ) )
948 	PORT_DIPSETTING(    0xf0, DEF_STR( 4C_4C ) )
949 	PORT_DIPSETTING(    0xa0, DEF_STR( 3C_3C ) )
950 	PORT_DIPSETTING(    0x60, DEF_STR( 2C_2C ) )
951 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
952 	PORT_DIPSETTING(    0xb0, DEF_STR( 3C_4C ) )
953 	PORT_DIPSETTING(    0x70, DEF_STR( 2C_3C ) )
954 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
955 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_3C ) )
956 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_4C ) )
957 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_5C ) )
958 INPUT_PORTS_END
959 
960 
961 INPUT_PORTS_START( nomnlnd )
962 	PORT_START	/* Controls - Remapped for game */
963 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
964 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
965 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
966 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
967 	PORT_BIT( 0x55, IP_ACTIVE_LOW, IPT_SPECIAL )	/* diagonals */
968 
969 	PORT_START	/* IN1 */
970 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
971 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
972 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
973 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
974 	PORT_BIT( 0x55, IP_ACTIVE_LOW, IPT_SPECIAL )	/* diagonals */
975 
976 	PORT_START	/* IN2 */
977 	PORT_DIPNAME( 0x03, 0x02, DEF_STR( Bonus_Life ) )
978 	PORT_DIPSETTING(    0x01, "2000" )
979 	PORT_DIPSETTING(    0x02, "3000" )
980 	PORT_DIPSETTING(    0x03, "5000" )
981 	PORT_DIPSETTING(    0x00, "None" )
982 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coinage ) )
983 	PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
984 /*	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )*/
985 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
986 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
987 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Lives ) )
988 	PORT_DIPSETTING(    0x00, "3" )
989 	PORT_DIPSETTING(    0x10, "5" )
990 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
991 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
992 	PORT_DIPSETTING(    0x20, DEF_STR( Cocktail ) )
993 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
994 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
995 
996 	PORT_START	/* IN3 */
997 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_VBLANK )
998 	PORT_BIT( 0x1e, IP_ACTIVE_LOW, IPT_UNUSED )		/* always HI */
999 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL )	/* reads what was written to 4808.  Probably not used?? */
1000 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
1001 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
1002 
1003 	/* Fake port to handle coin */
1004 	PORT_START	/* IN4 */
1005 	PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
1006 INPUT_PORTS_END
1007 
1008 
1009 INPUT_PORTS_START( nomnlndg )
1010 	PORT_START	/* Controls - Remapped for game */
1011 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
1012 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
1013 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
1014 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
1015 	PORT_BIT( 0x55, IP_ACTIVE_LOW, IPT_UNUSED )
1016 
1017 	PORT_START	/* IN1 */
1018 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
1019 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
1020 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
1021 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
1022 	PORT_BIT( 0x55, IP_ACTIVE_LOW, IPT_UNUSED )
1023 
1024 	PORT_START	/* IN2 */
1025 	PORT_DIPNAME( 0x03, 0x02, DEF_STR( Bonus_Life ) )
1026 	PORT_DIPSETTING(    0x01, "3000" )
1027 	PORT_DIPSETTING(    0x02, "5000" )
1028 	PORT_DIPSETTING(    0x03, "8000" )
1029 	PORT_DIPSETTING(    0x00, "None" )
1030 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coinage ) )
1031 	PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
1032 /*	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )*/
1033 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
1034 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
1035 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Lives ) )
1036 	PORT_DIPSETTING(    0x00, "2" )
1037 	PORT_DIPSETTING(    0x10, "3" )
1038 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
1039 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
1040 	PORT_DIPSETTING(    0x20, DEF_STR( Cocktail ) )
1041 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
1042 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
1043 
1044 	PORT_START	/* IN3 */
1045 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_VBLANK )
1046 	PORT_BIT( 0x1e, IP_ACTIVE_LOW, IPT_UNUSED )		/* always HI */
1047 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL )	/* reads what was written to 4808.  Probably not used?? */
1048 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
1049 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
1050 
1051 	/* Fake port to handle coin */
1052 	PORT_START	/* IN4 */
1053 	PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
1054 INPUT_PORTS_END
1055 
1056 
1057 static struct GfxLayout cosmic_spritelayout16 =
1058 {
1059 	16,16,
1060 	RGN_FRAC(1,2),
1061 	2,
1062 	{ RGN_FRAC(0,2), RGN_FRAC(1,2) },
1063 	{  0*8+0,  0*8+1,  0*8+2,  0*8+3,  0*8+4,  0*8+5,  0*8+6,  0*8+7,
1064 	  16*8+0, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+7},
1065 	{ 0*8, 1*8,  2*8,  3*8,  4*8,  5*8,  6*8,  7*8,
1066 	  8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
1067 	32*8
1068 };
1069 
1070 static struct GfxLayout cosmic_spritelayout32 =
1071 {
1072 	32,32,
1073 	RGN_FRAC(1,2),
1074 	2,
1075 	{ RGN_FRAC(0,2), RGN_FRAC(1,2) },
1076 	{ 0*32*8+0, 0*32*8+1, 0*32*8+2, 0*32*8+3, 0*32*8+4, 0*32*8+5, 0*32*8+6, 0*32*8+7,
1077 	  1*32*8+0, 1*32*8+1, 1*32*8+2, 1*32*8+3, 1*32*8+4, 1*32*8+5, 1*32*8+6, 1*32*8+7,
1078 	  2*32*8+0, 2*32*8+1, 2*32*8+2, 2*32*8+3, 2*32*8+4, 2*32*8+5, 2*32*8+6, 2*32*8+7,
1079   	  3*32*8+0, 3*32*8+1, 3*32*8+2, 3*32*8+3, 3*32*8+4, 3*32*8+5, 3*32*8+6, 3*32*8+7 },
1080 	{  0*8,  1*8,  2*8,  3*8,  4*8,  5*8,  6*8,  7*8,
1081 	   8*8,  9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8,
1082 	  16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8,
1083 	  24*8, 25*8, 26*8, 27*8, 28*8, 29*8, 30*8, 31*8 },
1084 	128*8
1085 };
1086 
1087 
1088 static struct GfxDecodeInfo panic_gfxdecodeinfo[] =
1089 {
1090 	{ REGION_GFX1, 0, &cosmic_spritelayout16,  0, 8 },
1091 	{ REGION_GFX1, 0, &cosmic_spritelayout32,  0, 8 },
1092 	{ -1 } /* end of array */
1093 };
1094 
1095 static struct GfxDecodeInfo cosmica_gfxdecodeinfo[] =
1096 {
1097 	{ REGION_GFX1, 0, &cosmic_spritelayout16,  0, 16 },
1098 	{ REGION_GFX1, 0, &cosmic_spritelayout32,  0, 16 },
1099 	{ -1 } /* end of array */
1100 };
1101 
1102 
1103 static struct DACinterface dac_interface =
1104 {
1105 	1,
1106 	{ 100 }
1107 };
1108 
1109 static const char *panic_sample_names[] =
1110 {
1111 	"*panic",
1112 	"walk.wav",
1113     "upordown.wav",
1114     "trapped.wav",
1115     "falling.wav",
1116     "escaping.wav",
1117 	"ekilled.wav",
1118     "death.wav",
1119     "elaugh.wav",
1120     "extral.wav",
1121     "oxygen.wav",
1122     "coin.wav",
1123 	0       /* end of array */
1124 };
1125 
1126 static struct Samplesinterface panic_samples_interface =
1127 {
1128 	9,	/* 9 channels */
1129 	25,	/* volume */
1130 	panic_sample_names
1131 };
1132 
1133 static const char *cosmicg_sample_names[] =
1134 {
1135 	"*cosmicg",
1136 	"cg_m0.wav",	/* 8 Different pitches of March Sound */
1137 	"cg_m1.wav",
1138 	"cg_m2.wav",
1139 	"cg_m3.wav",
1140 	"cg_m4.wav",
1141 	"cg_m5.wav",
1142 	"cg_m6.wav",
1143 	"cg_m7.wav",
1144 	"cg_att.wav",	/* Killer Attack */
1145 	"cg_chnc.wav",	/* Bonus Chance  */
1146 	"cg_gotb.wav",	/* Got Bonus - have not got correct sound for */
1147 	"cg_dest.wav",	/* Gun Destroy */
1148 	"cg_gun.wav",	/* Gun Shot */
1149 	"cg_gotm.wav",	/* Got Monster */
1150 	"cg_ext.wav",	/* Coin Extend */
1151 	0       /* end of array */
1152 };
1153 
1154 static struct Samplesinterface cosmicg_samples_interface =
1155 {
1156 	9,	/* 9 channels */
1157 	25,	/* volume */
1158 	cosmicg_sample_names
1159 };
1160 
1161 static const char *cosmica_sample_names[] =
1162 {
1163 	"*cosmica",
1164 	"backgr.wav",
1165 	"extend.wav",
1166 	"divea.wav",
1167 	"diveb1.wav",
1168 	"diveb2.wav",
1169 	"diveb3.wav",
1170 	"diveb4.wav",
1171 	"diveb5.wav",
1172 	"diveb6.wav",
1173 	"fire.wav",
1174 	"loudexp.wav",
1175 	"smallexp.wav",
1176 	"coin.wav",
1177 	0       /* end of array */
1178 };
1179 
1180 static struct Samplesinterface cosmica_samples_interface =
1181 {
1182 	13,	/* 9 channels */
1183 	25,	/* volume */
1184 	cosmica_sample_names
1185 };
1186 
1187 
1188 static MACHINE_DRIVER_START( cosmic )
1189 
1190 	/* basic machine hardware */
1191 	MDRV_CPU_ADD_TAG("main", Z80,10816000/6)	/* 1.802 MHz*/
1192 
1193 	MDRV_FRAMES_PER_SECOND(60)
MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)1194 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
1195 
1196 	/* video hardware */
1197 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
1198 	MDRV_SCREEN_SIZE(32*8, 32*8)
1199 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
1200 MACHINE_DRIVER_END
1201 
1202 
1203 static MACHINE_DRIVER_START( panic )
1204 
1205 	/* basic machine hardware */
1206 	MDRV_IMPORT_FROM(cosmic)
1207 	MDRV_CPU_MODIFY("main")
1208 
1209 	MDRV_CPU_MEMORY(panic_readmem,panic_writemem)
1210 	MDRV_CPU_VBLANK_INT(panic_interrupt,2)
1211 
1212 	/* video hardware */
1213 	MDRV_GFXDECODE(panic_gfxdecodeinfo)
1214 	MDRV_PALETTE_LENGTH(16)
1215 	MDRV_COLORTABLE_LENGTH(8*4)
1216 
1217 	MDRV_PALETTE_INIT(panic)
1218 	MDRV_VIDEO_UPDATE(panic)
1219 
1220 	/* sound hardware */
1221 	MDRV_SOUND_ADD(SAMPLES, panic_samples_interface)
1222 	MDRV_SOUND_ADD(DAC, dac_interface)
1223 MACHINE_DRIVER_END
1224 
1225 
1226 static MACHINE_DRIVER_START( cosmica )
1227 
1228 	/* basic machine hardware */
1229 	MDRV_IMPORT_FROM(cosmic)
1230 	MDRV_CPU_MODIFY("main")
1231 
1232 	MDRV_CPU_MEMORY(cosmica_readmem,cosmica_writemem)
1233 	MDRV_CPU_VBLANK_INT(cosmica_interrupt,32)
1234 
1235 	/* video hardware */
1236 	MDRV_GFXDECODE(cosmica_gfxdecodeinfo)
1237 	MDRV_PALETTE_LENGTH(8)
1238 	MDRV_COLORTABLE_LENGTH(16*4)
1239 
1240 	MDRV_PALETTE_INIT(cosmica)
1241 	MDRV_VIDEO_UPDATE(cosmica)
1242 
1243 	MDRV_SOUND_ADD(SAMPLES, cosmica_samples_interface)
1244 	MDRV_SOUND_ADD(DAC, dac_interface)
1245 MACHINE_DRIVER_END
1246 
1247 
1248 static MACHINE_DRIVER_START( cosmicg )
1249 
1250 	/* basic machine hardware */
1251 	MDRV_CPU_ADD(TMS9980, 1228500)
1252 			/* 9.828 MHz Crystal */
1253 			/* R Nabet : huh ? This would imply the crystal frequency is somehow divided by 2 before being
1254 			fed to the tms9904 or tms9980.  Also, I have never heard of a tms9900/9980 operating under
1255 			1.5MHz.  So, if someone can check this... */
1256 	MDRV_CPU_MEMORY(cosmicg_readmem,cosmicg_writemem)
1257 	MDRV_CPU_PORTS(cosmicg_readport,cosmicg_writeport)
1258 	MDRV_CPU_VBLANK_INT(cosmicg_interrupt,1)
1259 
1260 	MDRV_FRAMES_PER_SECOND(60)
1261 	MDRV_VBLANK_DURATION(0)
1262 
1263 	/* video hardware */
1264 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
1265 	MDRV_SCREEN_SIZE(32*8, 32*8)
1266 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
1267     MDRV_PALETTE_LENGTH(16)
1268 
1269 	MDRV_PALETTE_INIT(cosmicg)
1270 	MDRV_VIDEO_UPDATE(cosmicg)
1271 
1272 	/* sound hardware */
1273 	MDRV_SOUND_ADD(SAMPLES, cosmicg_samples_interface)
1274 	MDRV_SOUND_ADD(DAC, dac_interface)
1275 MACHINE_DRIVER_END
1276 
1277 
1278 static MACHINE_DRIVER_START( magspot2 )
1279 
1280 	/* basic machine hardware */
1281 	MDRV_IMPORT_FROM(cosmic)
1282 	MDRV_CPU_MODIFY("main")
1283 
1284 	MDRV_CPU_MEMORY(magspot2_readmem,magspot2_writemem)
1285 	MDRV_CPU_VBLANK_INT(magspot2_interrupt,1)
1286 
1287 	/* video hardware */
1288 	MDRV_GFXDECODE(panic_gfxdecodeinfo)
1289 	MDRV_PALETTE_LENGTH(16)
1290 	MDRV_COLORTABLE_LENGTH(8*4)
1291 
1292 	MDRV_PALETTE_INIT(magspot2)
1293 	MDRV_VIDEO_UPDATE(magspot2)
1294 
1295 	/* sound hardware */
1296 	MDRV_SOUND_ADD(DAC, dac_interface)
1297 MACHINE_DRIVER_END
1298 
1299 
1300 static MACHINE_DRIVER_START( devzone )
1301 
1302 	/* basic machine hardware */
1303 	MDRV_IMPORT_FROM(magspot2)
1304 
1305 	/* video hardware */
1306 	MDRV_VIDEO_UPDATE(devzone)
1307 MACHINE_DRIVER_END
1308 
1309 
1310 static MACHINE_DRIVER_START( nomnlnd )
1311 
1312 	/* basic machine hardware */
1313 	MDRV_IMPORT_FROM(cosmic)
1314 	MDRV_CPU_MODIFY("main")
1315 
1316 	MDRV_CPU_MEMORY(magspot2_readmem,magspot2_writemem)
1317 	MDRV_CPU_VBLANK_INT(nomnlnd_interrupt,1)
1318 
1319 	/* video hardware */
1320 	MDRV_GFXDECODE(panic_gfxdecodeinfo)
1321 	MDRV_PALETTE_LENGTH(8)
1322 	MDRV_COLORTABLE_LENGTH(8*4)
1323 
1324 	MDRV_PALETTE_INIT(nomnlnd)
1325 	MDRV_VIDEO_UPDATE(nomnlnd)
1326 
1327 	/* sound hardware */
1328 	MDRV_SOUND_ADD(DAC, dac_interface)
1329 MACHINE_DRIVER_END
1330 
1331 
1332 ROM_START( panic )
1333 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1334 	ROM_LOAD( "spe1",         0x0000, 0x0800, CRC(70ac0888) SHA1(bdc6dfb74b4643df36cae60923f9759751340c86) )
1335 	ROM_LOAD( "spe2",         0x0800, 0x0800, CRC(2b910c48) SHA1(9ebb15694e068a4d8769ec5d312af1148818d472) )
1336 	ROM_LOAD( "spe3",         0x1000, 0x0800, CRC(03810148) SHA1(768418bc0a3a5bc9f7ec07b8edd4099da69efac6) )
1337 	ROM_LOAD( "spe4",         0x1800, 0x0800, CRC(119bbbfd) SHA1(2b3722300b1eebe1bffa4a4e39fceb45aefde24f) )
1338 	ROM_LOAD( "spcpanic.5",   0x2000, 0x0800, CRC(5b80f277) SHA1(b060e57c88679f547153aed041a5554dc26a83aa) )
1339 	ROM_LOAD( "spcpanic.6",   0x2800, 0x0800, CRC(b73babf0) SHA1(229944a6b3653601bc20afea5a9aec787fd95ce0) )
1340 	ROM_LOAD( "spe7",         0x3000, 0x0800, CRC(2894106e) SHA1(625896225b0ec03ac12f3e8b97e801cb743f37e7) )
1341 
1342 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1343 	ROM_LOAD( "spcpanic.11",  0x0000, 0x0800, CRC(acea9df4) SHA1(7de2a82da8160ad1a01c32a516d10c19dc306051) )
1344 	ROM_LOAD( "spcpanic.12",  0x0800, 0x0800, CRC(e83423d0) SHA1(eba1129537869f1ecb5afeeae19db19b134865f6) )
1345 	ROM_LOAD( "spcpanic.10",  0x1000, 0x0800, CRC(c9631c2d) SHA1(e5ab95e19c1b22a798a70a1a6599bc1f5e853c60) )
1346 	ROM_LOAD( "spcpanic.9",   0x1800, 0x0800, CRC(eec78b4c) SHA1(efd21d0a26b988a490c45315a7a121607f74d147) )
1347 
1348 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1349 	ROM_LOAD( "82s123.sp",    0x0000, 0x0020, CRC(35d43d2f) SHA1(2ce164c92ed7ba3ee26a907f0c5969ec3decca01) )
1350 
1351 	ROM_REGION( 0x0800, REGION_USER1, 0 ) /* color map */
1352 	ROM_LOAD( "spcpanic.8",   0x0000, 0x0800, CRC(7da0b321) SHA1(b450cc02de9cc27e3f336c626221c90c6961b51e) )
1353 ROM_END
1354 
1355 ROM_START( panic2 )
1356 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1357 	ROM_LOAD( "spcpanic.1",   0x0000, 0x0800, CRC(405ae6f9) SHA1(92000f5f9bc1384ebae36dd30e715764747504d8) )
1358 	ROM_LOAD( "spcpanic.2",   0x0800, 0x0800, CRC(b6a286c5) SHA1(b33beb1fbe622e9c90888d25d018fd5bef6cb65b) )
1359 	ROM_LOAD( "spcpanic.3",   0x1000, 0x0800, CRC(85ae8b2e) SHA1(a5676d38e3c0ea0aeedc29bea0c04086e51da67f) )
1360 	ROM_LOAD( "spcpanic.4",   0x1800, 0x0800, CRC(b6d4f52f) SHA1(431e5ef00768a633d17449a888ac9ce46975272d) )
1361 	ROM_LOAD( "spcpanic.5",   0x2000, 0x0800, CRC(5b80f277) SHA1(b060e57c88679f547153aed041a5554dc26a83aa) )
1362 	ROM_LOAD( "spcpanic.6",   0x2800, 0x0800, CRC(b73babf0) SHA1(229944a6b3653601bc20afea5a9aec787fd95ce0) )
1363 	ROM_LOAD( "spcpanic.7",   0x3000, 0x0800, CRC(fc27f4e5) SHA1(80064ccfb810d11f6d7d79bfd991adb2eb2f1c16) )
1364 
1365 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1366 	ROM_LOAD( "spcpanic.11",  0x0000, 0x0800, CRC(acea9df4) SHA1(7de2a82da8160ad1a01c32a516d10c19dc306051) )
1367 	ROM_LOAD( "spcpanic.12",  0x0800, 0x0800, CRC(e83423d0) SHA1(eba1129537869f1ecb5afeeae19db19b134865f6) )
1368 	ROM_LOAD( "spcpanic.10",  0x1000, 0x0800, CRC(c9631c2d) SHA1(e5ab95e19c1b22a798a70a1a6599bc1f5e853c60) )
1369 	ROM_LOAD( "spcpanic.9",   0x1800, 0x0800, CRC(eec78b4c) SHA1(efd21d0a26b988a490c45315a7a121607f74d147) )
1370 
1371 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1372 	ROM_LOAD( "82s123.sp",    0x0000, 0x0020, CRC(35d43d2f) SHA1(2ce164c92ed7ba3ee26a907f0c5969ec3decca01) )
1373 
1374 	ROM_REGION( 0x0800, REGION_USER1, 0 ) /* color map */
1375 	ROM_LOAD( "spcpanic.8",   0x0000, 0x0800, CRC(7da0b321) SHA1(b450cc02de9cc27e3f336c626221c90c6961b51e) )
1376 ROM_END
1377 
1378 ROM_START( panic3 )
1379 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1380 	ROM_LOAD( "panica.1",     0x0000, 0x0800, CRC(289720ce) SHA1(8601bda95ac32a55f17fe9c723796bfe8b2b2fa7) )
1381 	ROM_LOAD( "spcpanic.2",   0x0800, 0x0800, CRC(b6a286c5) SHA1(b33beb1fbe622e9c90888d25d018fd5bef6cb65b) )
1382 	ROM_LOAD( "spcpanic.3",   0x1000, 0x0800, CRC(85ae8b2e) SHA1(a5676d38e3c0ea0aeedc29bea0c04086e51da67f) )
1383 	ROM_LOAD( "spcpanic.4",   0x1800, 0x0800, CRC(b6d4f52f) SHA1(431e5ef00768a633d17449a888ac9ce46975272d) )
1384 	ROM_LOAD( "spcpanic.5",   0x2000, 0x0800, CRC(5b80f277) SHA1(b060e57c88679f547153aed041a5554dc26a83aa) )
1385 	ROM_LOAD( "spcpanic.6",   0x2800, 0x0800, CRC(b73babf0) SHA1(229944a6b3653601bc20afea5a9aec787fd95ce0) )
1386 	ROM_LOAD( "panica.7",     0x3000, 0x0800, CRC(3641cb7f) SHA1(94a5108233cf9517f782759bb396e4eab58b8551) )
1387 
1388 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1389 	ROM_LOAD( "spcpanic.11",  0x0000, 0x0800, CRC(acea9df4) SHA1(7de2a82da8160ad1a01c32a516d10c19dc306051) )
1390 	ROM_LOAD( "spcpanic.12",  0x0800, 0x0800, CRC(e83423d0) SHA1(eba1129537869f1ecb5afeeae19db19b134865f6) )
1391 	ROM_LOAD( "spcpanic.10",  0x1000, 0x0800, CRC(c9631c2d) SHA1(e5ab95e19c1b22a798a70a1a6599bc1f5e853c60) )
1392 	ROM_LOAD( "spcpanic.9",   0x1800, 0x0800, CRC(eec78b4c) SHA1(efd21d0a26b988a490c45315a7a121607f74d147) )
1393 
1394 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1395 	ROM_LOAD( "82s123.sp",    0x0000, 0x0020, CRC(35d43d2f) SHA1(2ce164c92ed7ba3ee26a907f0c5969ec3decca01) )
1396 
1397 	ROM_REGION( 0x0800, REGION_USER1, 0 ) /* color map */
1398 	ROM_LOAD( "spcpanic.8",   0x0000, 0x0800, CRC(7da0b321) SHA1(b450cc02de9cc27e3f336c626221c90c6961b51e) )
1399 ROM_END
1400 
1401 ROM_START( panich )
1402 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1403 	ROM_LOAD( "sph1",         0x0000, 0x0800, CRC(f6e9c6ef) SHA1(90b5bba0fd726e4c6618793467eba8c18c63fd43) )
1404 	ROM_LOAD( "sph2",         0x0800, 0x0800, CRC(58dbc49b) SHA1(f716e8cdbb7eb456bd7f2996241b5ebd03086de3) )
1405 	ROM_LOAD( "sph3",         0x1000, 0x0800, CRC(c4f275ad) SHA1(446be24dc99e46f3c69cf2cfb657958053857b7d) )
1406 	ROM_LOAD( "sph4",         0x1800, 0x0800, CRC(6e7785de) SHA1(d12326791cbcae37980e240e2bfc20d7618f3ef5) )
1407 	ROM_LOAD( "sph5",         0x2000, 0x0800, CRC(1916c9b8) SHA1(ab4a353340f152d6ba181555ee211afeb7877509) )
1408 	ROM_LOAD( "sph6",         0x2800, 0x0800, CRC(54b92314) SHA1(970ebae831ea0a1958b8d711ebc5956ef4f932fe) )
1409 	ROM_LOAD( "sph7",         0x3000, 0x0800, CRC(8600b881) SHA1(2eed176de531f44d10b7755141621050d72ad7ac) )
1410 
1411 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1412 	ROM_LOAD( "spcpanic.11",  0x0000, 0x0800, CRC(acea9df4) SHA1(7de2a82da8160ad1a01c32a516d10c19dc306051) )
1413 	ROM_LOAD( "spcpanic.12",  0x0800, 0x0800, CRC(e83423d0) SHA1(eba1129537869f1ecb5afeeae19db19b134865f6) )
1414 	ROM_LOAD( "spcpanic.10",  0x1000, 0x0800, CRC(c9631c2d) SHA1(e5ab95e19c1b22a798a70a1a6599bc1f5e853c60) )
1415 	ROM_LOAD( "spcpanic.9",   0x1800, 0x0800, CRC(eec78b4c) SHA1(efd21d0a26b988a490c45315a7a121607f74d147) )
1416 
1417 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1418 	ROM_LOAD( "82s123.sp",    0x0000, 0x0020, CRC(35d43d2f) SHA1(2ce164c92ed7ba3ee26a907f0c5969ec3decca01) )
1419 
1420 	ROM_REGION( 0x0800, REGION_USER1, 0 ) /* color map */
1421 	ROM_LOAD( "spcpanic.8",   0x0000, 0x0800, CRC(7da0b321) SHA1(b450cc02de9cc27e3f336c626221c90c6961b51e) )
1422 ROM_END
1423 
1424 ROM_START( panicger )
1425 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1426 	ROM_LOAD( "spacepan.001", 0x0000, 0x0800, CRC(a6d9515a) SHA1(20fe6fa4cb10e83f97b77e19d9d4f883aba73d1a) )
1427 	ROM_LOAD( "spacepan.002", 0x0800, 0x0800, CRC(cfc22663) SHA1(44036a69ca3463759c56637c3435a3305b102879) )
1428 	ROM_LOAD( "spacepan.003", 0x1000, 0x0800, CRC(e1f36893) SHA1(689b77b4df15dc980d35cf245aca1affe46d6b21) )
1429 	ROM_LOAD( "spacepan.004", 0x1800, 0x0800, CRC(01be297c) SHA1(d22856ef192d8239a3520f16bbe5a6f7f4c3adc8) )
1430 	ROM_LOAD( "spacepan.005", 0x2000, 0x0800, CRC(e0d54805) SHA1(5852f69cee9a8f9984b175268bcfafe4f3f124ba) )
1431 	ROM_LOAD( "spacepan.006", 0x2800, 0x0800, CRC(aae1458e) SHA1(79dd5992b81f316cf86efdb2809b7002e824e0e7) )
1432 	ROM_LOAD( "spacepan.007", 0x3000, 0x0800, CRC(14e46e70) SHA1(f49f09a12b796f7a7713d872ecd12e246c56c261) )
1433 
1434 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1435 	ROM_LOAD( "spcpanic.11",  0x0000, 0x0800, CRC(acea9df4) SHA1(7de2a82da8160ad1a01c32a516d10c19dc306051) )
1436 	ROM_LOAD( "spcpanic.12",  0x0800, 0x0800, CRC(e83423d0) SHA1(eba1129537869f1ecb5afeeae19db19b134865f6) )
1437 	ROM_LOAD( "spcpanic.10",  0x1000, 0x0800, CRC(c9631c2d) SHA1(e5ab95e19c1b22a798a70a1a6599bc1f5e853c60) )
1438 	ROM_LOAD( "spcpanic.9",   0x1800, 0x0800, CRC(eec78b4c) SHA1(efd21d0a26b988a490c45315a7a121607f74d147) )
1439 
1440 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1441 	ROM_LOAD( "82s123.sp",    0x0000, 0x0020, CRC(35d43d2f) SHA1(2ce164c92ed7ba3ee26a907f0c5969ec3decca01) )
1442 
1443 	ROM_REGION( 0x0800, REGION_USER1, 0 ) /* color map */
1444 	ROM_LOAD( "spcpanic.8",   0x0000, 0x0800, CRC(7da0b321) SHA1(b450cc02de9cc27e3f336c626221c90c6961b51e) )
1445 ROM_END
1446 
1447 ROM_START( cosmica )
1448 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1449 	ROM_LOAD( "ca.e3",        0x0000, 0x0800, CRC(535ee0c5) SHA1(3ec3056b7fabe07ef49a9179114aa74be44a943e) )
1450 	ROM_LOAD( "ca.e4",        0x0800, 0x0800, CRC(ed3cf8f7) SHA1(6ba1d98d82400519e844b950cb2fb1274c06d89a) )
1451 	ROM_LOAD( "ca.e5",        0x1000, 0x0800, CRC(6a111e5e) SHA1(593be409bc969cece2ff88623e53c166b4dc43cd) )
1452 	ROM_LOAD( "ca.e6",        0x1800, 0x0800, CRC(c9b5ca2a) SHA1(3384b98954b6bc9a64e753b95757f61ce1d3c52e) )
1453 	ROM_LOAD( "ca.e7",        0x2000, 0x0800, CRC(43666d68) SHA1(e44492360a77d93aeaaaa0f38f4ac19732998559) )
1454 
1455 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites */
1456 	ROM_LOAD( "ca.n2",        0x0000, 0x0800, CRC(aa6c6079) SHA1(af4ab73e9e1c189290b26bf42adb511d5a347df9) )
1457 	ROM_LOAD( "ca.n1",        0x0800, 0x0800, CRC(431e866c) SHA1(b007cd3cc856360a0247bd78bb49d173f5cef321) )
1458 
1459 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1460 	ROM_LOAD( "ca.d9",        0x0000, 0x0020, CRC(dfb60f19) SHA1(d510327ff3492f098659c551f7245835f61a2959) )
1461 
1462 	ROM_REGION( 0x0400, REGION_USER1, 0 ) /* color map */
1463 	ROM_LOAD( "ca.e2",        0x0000, 0x0400, CRC(ea4ee931) SHA1(d0a4afda4b493efb40286c2d67bf56a2a8b8da9d) )
1464 
1465 	ROM_REGION( 0x0400, REGION_USER2, 0 ) /* starfield generator */
1466 	ROM_LOAD( "ca.sub",       0x0000, 0x0400, CRC(acbd4e98) SHA1(d33fe8bdc77bb18a3ffb369ea692210d1b890771) )
1467 ROM_END
1468 
1469 ROM_START( cosmica2 )
1470 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1471 	ROM_LOAD( "ca.e3",        0x0000, 0x0800, CRC(535ee0c5) SHA1(3ec3056b7fabe07ef49a9179114aa74be44a943e) )
1472 	ROM_LOAD( "c3.bin",       0x0800, 0x0400, CRC(699c849e) SHA1(90a58ab8ede9c31eec3df1f8f251b59858f85eb6) )
1473 	ROM_LOAD( "d4.bin",       0x0c00, 0x0400, CRC(168e38da) SHA1(63c5f8346861aa7c70ad58a05977c7af413cbfaf) )
1474 	ROM_LOAD( "ca.e5",        0x1000, 0x0800, CRC(6a111e5e) SHA1(593be409bc969cece2ff88623e53c166b4dc43cd) )
1475 	ROM_LOAD( "ca.e6",        0x1800, 0x0800, CRC(c9b5ca2a) SHA1(3384b98954b6bc9a64e753b95757f61ce1d3c52e) )
1476 	ROM_LOAD( "i9.bin",       0x2000, 0x0400, CRC(3bb57720) SHA1(2d1edcad57767a4fa2c7713726ed0cb1203f6fbc) )
1477 	ROM_LOAD( "j0.bin",       0x2400, 0x0400, CRC(4ff70f45) SHA1(791499be62a7b91bde75e7a7ab6c546f5fb63027) )
1478 
1479 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites */
1480 	ROM_LOAD( "ca.n2",        0x0000, 0x0800, CRC(aa6c6079) SHA1(af4ab73e9e1c189290b26bf42adb511d5a347df9) )
1481 	ROM_LOAD( "ca.n1",        0x0800, 0x0800, CRC(431e866c) SHA1(b007cd3cc856360a0247bd78bb49d173f5cef321) )
1482 
1483 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1484 	ROM_LOAD( "ca.d9",        0x0000, 0x0020, CRC(dfb60f19) SHA1(d510327ff3492f098659c551f7245835f61a2959) )
1485 
1486 	ROM_REGION( 0x0400, REGION_USER1, 0 ) /* color map */
1487 	ROM_LOAD( "ca.e2",        0x0000, 0x0400, CRC(ea4ee931) SHA1(d0a4afda4b493efb40286c2d67bf56a2a8b8da9d) )
1488 
1489 	ROM_REGION( 0x0400, REGION_USER2, 0 ) /* starfield generator */
1490 	ROM_LOAD( "ca.sub",       0x0000, 0x0400, CRC(acbd4e98) SHA1(d33fe8bdc77bb18a3ffb369ea692210d1b890771) )
1491 ROM_END
1492 
1493 ROM_START( cosmicg )
1494 	ROM_REGION( 0x10000, REGION_CPU1, 0 )  /* 8k for code */
1495 	ROM_LOAD( "cosmicg1.bin", 0x0000, 0x0400, CRC(e1b9f894) SHA1(bab7fd9b3db145a889542653191905b6efc5ce75) )
1496 	ROM_LOAD( "cosmicg2.bin", 0x0400, 0x0400, CRC(35c75346) SHA1(4e50eaa0b50ab04802dc63992ad2600c227301ad) )
1497 	ROM_LOAD( "cosmicg3.bin", 0x0800, 0x0400, CRC(82a49b48) SHA1(4cf9f684f3eb18b99a88ca879bb7083b1334f0cc) )
1498 	ROM_LOAD( "cosmicg4.bin", 0x0c00, 0x0400, CRC(1c1c934c) SHA1(011b2b3ec4d31869fda13a3654c7bc51f3ce4dc2) )
1499 	ROM_LOAD( "cosmicg5.bin", 0x1000, 0x0400, CRC(b1c00fbf) SHA1(136267f75e2d5b445695cabef4538f986e6f1b10) )
1500 	ROM_LOAD( "cosmicg6.bin", 0x1400, 0x0400, CRC(f03454ce) SHA1(32c87f369475c7154fe3243d2c7be4a25444e530) )
1501 	ROM_LOAD( "cosmicg7.bin", 0x1800, 0x0400, CRC(f33ebae7) SHA1(915bca53d5356e12c94ec765103ceced7306d1dd) )
1502 	ROM_LOAD( "cosmicg8.bin", 0x1c00, 0x0400, CRC(472e4990) SHA1(d5797b9d89446aa6533f7515e6a5fc8368d82f91) )
1503 
1504 	ROM_REGION( 0x0400, REGION_USER1, 0 ) /* color map */
1505 	ROM_LOAD( "cosmicg9.bin", 0x0000, 0x0400, CRC(689c2c96) SHA1(ddfdc3fd29c56fdebd3b1c3443a7c39f567d5355) )
1506 ROM_END
1507 
1508 /* rom 9 not dumped according to readme? */
1509 ROM_START( magspot )
1510 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1511 	ROM_LOAD( "ms1.bin",	  0x0000, 0x0800, CRC(59e9019d) SHA1(3c64ae956ec4eed988018b89c986ad8f6f065fe0) )
1512 	ROM_LOAD( "ms2.bin",	  0x0800, 0x0800, CRC(98b913b1) SHA1(2ce86f5069e2664e2ea44bda567ca26432fd59f7) )
1513 	ROM_LOAD( "ms3.bin",	  0x1000, 0x0800, CRC(ea58c124) SHA1(7551c14ed9563e3aed7220cc03f7bca4029b3a4e) )
1514 	ROM_LOAD( "ms5.bin",	  0x1800, 0x0800, CRC(4302a658) SHA1(9590be8db27b7122c87cfb27f8e09c2ecbf6fbd0) )
1515 	ROM_LOAD( "ms4.bin",	  0x2000, 0x0800, CRC(088582ab) SHA1(ad2d86184b4a6ee74464d1df40f4e841434c46c8) )
1516 	ROM_LOAD( "ms6.bin",	  0x2800, 0x0800, CRC(e6bf492c) SHA1(ada3a33c54b6c02f3fb9590181fceefafdc429bc) )
1517 
1518 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites */
1519 	ROM_LOAD( "ms8.bin",	  0x0000, 0x0800, CRC(9e1d63a2) SHA1(d8642e515871da44880e105e6891c4b25222744f) )
1520 	ROM_LOAD( "ms7.bin",	  0x0800, 0x0800, CRC(1ab338d3) SHA1(4e3bf93f94119fd10c40953245cec735db8417fb) )
1521 
1522 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1523 	ROM_LOAD( "ms.d9",        0x0000, 0x0020, CRC(36e2aa2a) SHA1(4813b013cb8260157858e3adc7323efc6654e170) )
1524 
1525 	ROM_REGION( 0x0400, REGION_USER1, 0 ) /* color map */
1526 	ROM_LOAD( "ms.e2",        0x0000, 0x0400, CRC(89f23ebd) SHA1(a56bda82f8be8e541a50d2a411ada89a6d9c0373) )
1527 ROM_END
1528 
1529 ROM_START( magspot2 )
1530 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1531 	ROM_LOAD( "ms.e3",        0x0000, 0x0800, CRC(c0085ade) SHA1(ab60ba7c0e45ea2576d935135e930e2fdf165867) )
1532 	ROM_LOAD( "ms.e4",        0x0800, 0x0800, CRC(d534a68b) SHA1(fd3b5e619b22a8c53e3c6f5f5351068a3f26eb61) )
1533 	ROM_LOAD( "ms.e5",        0x1000, 0x0800, CRC(25513b2a) SHA1(c7f3d9a53cb7e7cf523ff710c333dbc744088e31) )
1534 	ROM_LOAD( "ms.e7",        0x1800, 0x0800, CRC(8836bbc4) SHA1(9da6c1b4e9a446108bc324e7fc280bfaeaf50504) )
1535 	ROM_LOAD( "ms.e6",        0x2000, 0x0800, CRC(6a08ab94) SHA1(5d9272a5304546cef6668c975e815f6750bcfa15) )
1536 	ROM_LOAD( "ms.e8",        0x2800, 0x0800, CRC(77c6d109) SHA1(bb265bd56d4d597d2ef75d169d5d30db1499e3be) )
1537 
1538 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites */
1539 	ROM_LOAD( "ms.n2",        0x0000, 0x0800, CRC(9e1d63a2) SHA1(d8642e515871da44880e105e6891c4b25222744f) )
1540 	ROM_LOAD( "ms.n1",        0x0800, 0x0800, CRC(1ab338d3) SHA1(4e3bf93f94119fd10c40953245cec735db8417fb) )
1541 
1542 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1543 	ROM_LOAD( "ms.d9",        0x0000, 0x0020, CRC(36e2aa2a) SHA1(4813b013cb8260157858e3adc7323efc6654e170) )
1544 
1545 	ROM_REGION( 0x0400, REGION_USER1, 0 ) /* color map */
1546 	ROM_LOAD( "ms.e2",        0x0000, 0x0400, CRC(89f23ebd) SHA1(a56bda82f8be8e541a50d2a411ada89a6d9c0373) )
1547 ROM_END
1548 
1549 ROM_START( devzone )
1550 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1551 	ROM_LOAD( "dv1.e3",       0x0000, 0x0800, CRC(c70faf00) SHA1(d3f0f071e6c7552724eba64a7182637dae4438c7) )
1552 	ROM_LOAD( "dv2.e4",       0x0800, 0x0800, CRC(eacfed61) SHA1(493c0d21fd1574b12978dd1f52e8735df6c1732c) )
1553 	ROM_LOAD( "dv3.e5",       0x1000, 0x0800, CRC(7973317e) SHA1(d236e3dad8c991c32a2550e561518b522a4580bc) )
1554 	ROM_LOAD( "dv5.e7",       0x1800, 0x0800, CRC(b71a3989) SHA1(aad14021ee569e221ea632416d6a006e60dd94e5) )
1555 	ROM_LOAD( "dv4.e6",       0x2000, 0x0800, CRC(a58c5b8c) SHA1(7ff08007aedd2ff1d7ef64263da92a5b77ae2dc4) )
1556 	ROM_LOAD( "dv6.e8",       0x2800, 0x0800, CRC(3930fb67) SHA1(919883e833d6caa8fe7c3ceaa184575a3b4932b6) )
1557 
1558 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites */
1559 	ROM_LOAD( "dv8.n2",       0x0000, 0x0800, CRC(da1cbec1) SHA1(08a668f19c68335f4fc9f98cd53b44047dd8aad9) )
1560 	ROM_LOAD( "dv7.n1",       0x0800, 0x0800, CRC(e7562fcf) SHA1(0a0833dbb8d4be69fbf8897aa3e045a87ae42024) )
1561 
1562 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1563 	ROM_LOAD( "ms.d9",        0x0000, 0x0020, CRC(36e2aa2a) SHA1(4813b013cb8260157858e3adc7323efc6654e170) )
1564 
1565 	ROM_REGION( 0x0400, REGION_USER1, 0 ) /* color map */
1566 	ROM_LOAD( "dz9.e2",       0x0000, 0x0400, CRC(693855b6) SHA1(1c29d72be511c1d38b30b9534d647d0813b2ef57) )
1567 
1568 	ROM_REGION( 0x0800, REGION_USER2, 0 ) /* grid horizontal line positions */
1569 	ROM_LOAD( "ic12.sub",     0x0000, 0x0800, CRC(f61c1c45) SHA1(9016710409ae2bccfc60f8e3d1131c125333c034) )
1570 
1571 	ROM_REGION( 0x0020, REGION_USER3, 0 ) /* grid vertical line positions */
1572 	ROM_LOAD( "ic1.sub",      0x0000, 0x0020, CRC(df974878) SHA1(2ef2e1b771923f9a0bfe1841444de61200298605) )
1573 ROM_END
1574 
1575 ROM_START( devzone2 )
1576 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1577 	ROM_LOAD( "p10_1.e3",     0x0000, 0x0800, BAD_DUMP CRC(38bd45a4) SHA1(192eee64ff53c20fb5b369703b52a5bb3976ba1d)  )
1578 	ROM_LOAD( "my4_2.e4",     0x0800, 0x0800, BAD_DUMP CRC(e1637800) SHA1(3705ce1f02f3fefec0285f5db6a7606e6cec1bac)  )
1579 	ROM_LOAD( "ms6_3.e5",     0x1000, 0x0800, BAD_DUMP CRC(c1952e2f) SHA1(d42f0f547e989a71254957e5e634ac359e72bb14)  )
1580 	ROM_LOAD( "mx6_5.e7",     0x1800, 0x0800, BAD_DUMP CRC(c5394215) SHA1(8c970f6a8d34963bc4848f2bef90cee850c9c28d)  )
1581 	ROM_LOAD( "my1_4.e6",     0x2000, 0x0800, BAD_DUMP CRC(5d965d93) SHA1(49fe79e4b5cec1c7aa2f8e1eb750b39bb7dda16c)  )
1582 	ROM_LOAD( "mz7_6.e8",     0x2800, 0x0800, BAD_DUMP CRC(8504e8c9) SHA1(40e08ff38673544c734a9fc19b38edaa8cc74f23)  )
1583 
1584 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites */
1585 	ROM_LOAD( "my8_8.n2",     0x0000, 0x0800, CRC(18abce02) SHA1(5cac11f4e6f1a4801bd02007399a906cdff66b85) )
1586 	ROM_LOAD( "mx3_7.n1",     0x0800, 0x0800, CRC(c089c9e3) SHA1(2fb725338a19d5d4f9e445e7d46d105b8db9733c) )
1587 
1588 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1589 	ROM_LOAD( "ms.d9",        0x0000, 0x0020, CRC(36e2aa2a) SHA1(4813b013cb8260157858e3adc7323efc6654e170) )
1590 
1591 	ROM_REGION( 0x0400, REGION_USER1, 0 ) /* color map */
1592 	ROM_LOAD( "dz9.e2",       0x0000, 0x0400, CRC(693855b6) SHA1(1c29d72be511c1d38b30b9534d647d0813b2ef57) )
1593 
1594 	ROM_REGION( 0x0800, REGION_USER2, 0 ) /* grid horizontal line positions */
1595 	ROM_LOAD( "ic12.sub",     0x0000, 0x0800, CRC(f61c1c45) SHA1(9016710409ae2bccfc60f8e3d1131c125333c034) )
1596 
1597 	ROM_REGION( 0x0020, REGION_USER3, 0 ) /* grid vertical line positions */
1598 	ROM_LOAD( "ic1.sub",      0x0000, 0x0020, CRC(df974878) SHA1(2ef2e1b771923f9a0bfe1841444de61200298605) )
1599 ROM_END
1600 
1601 ROM_START( nomnlnd )
1602 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1603 	ROM_LOAD( "1.bin",        0x0000, 0x0800, CRC(ba117ba6) SHA1(7399e7ac8a585ed6502ea0d740850b1ed2dc5bcd) )
1604 	ROM_LOAD( "2.bin",        0x0800, 0x0800, CRC(e5ed654f) SHA1(c26dc12ade6dc63392945ec0caca229d936f7f89) )
1605 	ROM_LOAD( "3.bin",        0x1000, 0x0800, CRC(7fc42724) SHA1(0f8fdfad0a2557b9dd99ae3890c37bbc5c59bc89) )
1606 	ROM_LOAD( "5.bin",        0x1800, 0x0800, CRC(9cc2f1d9) SHA1(453c67b613550c84364f445705019188bb580d64) )
1607 	ROM_LOAD( "4.bin",        0x2000, 0x0800, CRC(0e8cd46a) SHA1(14cf9017e408b862a4ed63bb8acd37064b3919a8) )
1608 	ROM_LOAD( "6.bin",        0x2800, 0x0800, CRC(ba472ba5) SHA1(49be1500b3805a19c7210e53ad5c2c4a5876bf4e) )
1609 
1610 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites */
1611 	ROM_LOAD( "nml8.n2",      0x0000, 0x0800, CRC(739009b4) SHA1(bbabd6ce7b1ded025f20120adaebdb97fb755ef0) )
1612 	ROM_LOAD( "nml7.n1",      0x0800, 0x0800, CRC(d08ed22f) SHA1(33f450b6f63110bf804105280dc679f1591422f6) )
1613 
1614 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1615 	ROM_LOAD( "nml.d9",       0x0000, 0x0020, CRC(65e911f9) SHA1(6420a03195f63edeed17cc3a235e46e3f88d2037) )
1616 
1617 	ROM_REGION( 0x0400, REGION_USER1, 0 ) /* color map */
1618 	ROM_LOAD( "nl9.e2",       0x0000, 0x0400, CRC(9e05f14e) SHA1(76fc0b2b12cc9a0a64b539d2e75edefdb4a2ae61) )
1619 
1620 	ROM_REGION( 0x0800, REGION_USER2, 0 ) /* tree + river */
1621 	ROM_LOAD( "nl10.ic4",     0x0000, 0x0400, CRC(5b13f64e) SHA1(b04d2423fb443d46fff69c031b0312d956a5b789) )
1622 	ROM_LOAD( "nl11.ic7",     0x0400, 0x0400, CRC(e717b241) SHA1(6d234a75514e22d484dc027db5bb85cf8b58f4f2) )
1623 ROM_END
1624 
1625 ROM_START( nomnlndg )
1626 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1627 	ROM_LOAD( "nml1.e3",      0x0000, 0x0800, CRC(e212ed91) SHA1(135c20fc97790769d5e1619d7ac844a1d3f6aace) )
1628 	ROM_LOAD( "nml2.e4",      0x0800, 0x0800, CRC(f66ef3d8) SHA1(c42a325dd952cda074ef2857e7fa5154f0b7c7ce) )
1629 	ROM_LOAD( "nml3.e5",      0x1000, 0x0800, CRC(d422fc8a) SHA1(18cafc462ce0800fea2af277439827dc1f4fc91b) )
1630 	ROM_LOAD( "nml5.e7",      0x1800, 0x0800, CRC(d58952ac) SHA1(1c82a49cc1f0203e6436c5292ebd6e9004bd6a84) )
1631 	ROM_LOAD( "nml4.e6",      0x2000, 0x0800, CRC(994c9afb) SHA1(c8e6af30d9b2cb5ca52fa325c6ac9a41413d067c) )
1632 	ROM_LOAD( "nml6.e8",      0x2800, 0x0800, CRC(01ed2d8c) SHA1(bfa31e9100a1f9276c521ed8699e1cb0d067e0fa) )
1633 
1634 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites */
1635 	ROM_LOAD( "nml8.n2",      0x0000, 0x0800, CRC(739009b4) SHA1(bbabd6ce7b1ded025f20120adaebdb97fb755ef0) )
1636 	ROM_LOAD( "nml7.n1",      0x0800, 0x0800, CRC(d08ed22f) SHA1(33f450b6f63110bf804105280dc679f1591422f6) )
1637 
1638 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1639 	ROM_LOAD( "nml.d9",       0x0000, 0x0020, CRC(65e911f9) SHA1(6420a03195f63edeed17cc3a235e46e3f88d2037) )
1640 
1641 	ROM_REGION( 0x0400, REGION_USER1, 0 ) /* color map */
1642 	ROM_LOAD( "nl9.e2",       0x0000, 0x0400, CRC(9e05f14e) SHA1(76fc0b2b12cc9a0a64b539d2e75edefdb4a2ae61) )
1643 
1644 	ROM_REGION( 0x0800, REGION_USER2, 0 ) /* tree + river */
1645 	ROM_LOAD( "nl10.ic4",     0x0000, 0x0400, CRC(5b13f64e) SHA1(b04d2423fb443d46fff69c031b0312d956a5b789) )
1646 	ROM_LOAD( "nl11.ic7",     0x0400, 0x0400, CRC(e717b241) SHA1(6d234a75514e22d484dc027db5bb85cf8b58f4f2) )
1647 ROM_END
1648 
1649 
1650 static DRIVER_INIT( cosmicg )
1651 {
1652 	/* Program ROMs have data pins connected different from normal */
1653 
1654 	offs_t offs;
1655 
1656     for (offs =0; offs < memory_region_length(REGION_CPU1); offs++)
1657 	{
1658         data8_t scrambled = memory_region(REGION_CPU1)[offs];
1659 
1660         data8_t normal = (scrambled >> 3 & 0x11)
1661                        | (scrambled >> 1 & 0x22)
1662                        | (scrambled << 1 & 0x44)
1663                        | (scrambled << 3 & 0x88);
1664 
1665         memory_region(REGION_CPU1)[offs] = normal;
1666     }
1667 
1668 
1669     /* Patch to avoid crash - Seems like duff romcheck routine */
1670     /* I would expect it to be bitrot, but have two romsets    */
1671     /* from different sources with the same problem!           */
1672     memory_region(REGION_CPU1)[0x1e9e] = 0x04;
1673     memory_region(REGION_CPU1)[0x1e9f] = 0xc0;
1674 }
1675 
1676 
DRIVER_INIT(devzone)1677 static DRIVER_INIT( devzone )
1678 {
1679 	install_mem_write_handler(0, 0x4807, 0x4807, cosmic_background_enable_w);
1680 }
1681 
1682 
DRIVER_INIT(nomnlnd)1683 static DRIVER_INIT( nomnlnd )
1684 {
1685 	install_mem_read_handler(0, 0x5000, 0x5001, nomnlnd_port_0_1_r);
1686 
1687 	install_mem_write_handler(0, 0x4807, 0x4807, cosmic_background_enable_w);
1688 }
1689 
1690 
1691 GAMEX(1979, cosmicg,  0,       cosmicg,  cosmicg,  cosmicg, ROT270, "Universal", "Cosmic Guerilla", GAME_NO_COCKTAIL )
1692 GAME( 1979, cosmica,  0,       cosmica,  cosmica,  0,       ROT270, "Universal", "Cosmic Alien" )
1693 GAME( 1979, cosmica2, cosmica, cosmica,  cosmica,  0,       ROT270, "Universal", "Cosmic Alien (older)" )
1694 GAME( 1980, panic,    0,       panic,    panic,    0,       ROT270, "Universal", "Space Panic (version E)" )
1695 GAME( 1980, panic2,   panic,   panic,    panic,    0,       ROT270, "Universal", "Space Panic (set 2)" )
1696 GAME( 1980, panic3,   panic,   panic,    panic,    0,       ROT270, "Universal", "Space Panic (set 3)" )
1697 GAME( 1980, panich,   panic,   panic,    panic,    0,       ROT270, "Universal", "Space Panic (harder)" )
1698 GAME( 1980, panicger, panic,   panic,    panic,    0,       ROT270, "Universal (ADP Automaten license)", "Space Panic (German)" )
1699 GAMEX(1980, magspot,  0,	   magspot2, magspot2, 0,       ROT270, "Universal", "Magical Spot", GAME_IMPERFECT_SOUND )
1700 GAMEX(1980, magspot2, 0,       magspot2, magspot2, 0,       ROT270, "Universal", "Magical Spot II", GAME_IMPERFECT_SOUND )
1701 GAMEX(1980, devzone,  0,       devzone,  devzone,  devzone, ROT270, "Universal", "Devil Zone", GAME_IMPERFECT_SOUND )
1702 GAMEX(1980, devzone2, devzone, devzone,  devzone2, devzone, ROT270, "Universal", "Devil Zone (easier)", GAME_IMPERFECT_SOUND )
1703 GAMEX(1980, nomnlnd,  0,       nomnlnd,  nomnlnd,  nomnlnd, ROT270, "Universal", "No Man's Land", GAME_IMPERFECT_SOUND )
1704 GAMEX(1980, nomnlndg, nomnlnd, nomnlnd,  nomnlndg, nomnlnd, ROT270, "Universal (Gottlieb license)", "No Man's Land (Gottlieb)", GAME_IMPERFECT_SOUND )
1705