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