1 #include "../machine/williams.c"
2 #include "../vidhrdw/williams.c"
3 #include "../sndhrdw/williams.c"
4
5 /*
6
7 Ordering:
8
9 * Defender
10 * Defense Command
11 * Mayday Mai'dez
12 * Colony 7
13
14 * Stargate
15 * Robotron
16 * Joust
17 * Bubbles
18 * Splat
19 * Sinistar
20
21 * Blaster
22
23 * Mystic Marathon
24 * Turkey Shoot
25 * Inferno
26 * Joust 2
27
28 */
29
30
31 /***************************************************************************
32
33 Changes:
34 Mar 12 98 LBO
35 * Added Sinistar speech samples provided by Howie Cohen
36 * Fixed clipping circuit with help from Sean Riddle and Pat Lawrence
37
38 Mar 22 98 ASG
39 * Fixed Sinistar head drawing, did another major cleanup
40 * Rewrote the blitter routines
41 * Fixed interrupt timing finally!!!
42
43 Note: the visible area (according to the service mode) seems to be
44 { 6, 297-1, 7, 246-1 },
45 however I use
46 { 6, 298-1, 7, 247-1 },
47 because the DOS port doesn't support well screen widths which are not multiple of 4.
48
49 ------- Blaster Bubbles Joust Robotron Sinistar Splat Stargate -------------
50
51 0000-8FFF ROM (for Blaster, 0000-3FFF is a bank of 12 ROMs)
52 0000-97FF Video RAM Bank switched with ROM (96FF for Blaster)
53 9800-BFFF RAM
54 0xBB00 Blaster only, Color 0 for each line (256 entry)
55 0xBC00 Blaster only, Color 0 flags, latch color only if bit 0 = 1 (256 entry)
56 Do something else with the bit 1, I do not know what
57 C000-CFFF I/O
58 D000-FFFF ROM
59
60 c000-C00F color_registers (16 bytes of BBGGGRRR)
61
62 c804 widget_pia_dataa (widget = I/O board)
63 c805 widget_pia_ctrla
64 c806 widget_pia_datab
65 c807 widget_pia_ctrlb (CB2 select between player 1 and player 2
66 controls if Table or Joust)
67 bits 5-3 = 110 = player 2
68 bits 5-3 = 111 = player 1
69
70 c80c rom_pia_dataa
71 c80d rom_pia_ctrla
72 c80e rom_pia_datab
73 bit 0 \
74 bit 1 |
75 bit 2 |-6 bits to sound board
76 bit 3 |
77 bit 4 |
78 bit 5 /
79 bit 6 \
80 bit 7 /Plus CA2 and CB2 = 4 bits to drive the LED 7 segment
81 c80f rom_pia_ctrlb
82
83 C900 rom_enable_scr_ctrl Switch between video ram and rom at 0000-97FF
84
85 C940 Blaster only: Select bank in the color Prom for color remap
86 C980 Blaster only: Select which ROM is at 0000-3FFF
87 C9C0 Blaster only: bit 0 = enable the color 0 changing each lines
88 bit 1 = erase back each frame
89
90
91 ***** Blitter ****** (Stargate and Defender do not have blitter)
92 CA00 start_blitter Each bits has a function
93 1000 0000 Do not process half the byte 4-7
94 0100 0000 Do not process half the byte 0-3
95 0010 0000 Shift the shape one pixel right (to display a shape on an odd pixel)
96 0001 0000 Remap, if shape != 0 then pixel = mask
97 0000 1000 Source 1 = take source 0 = take Mask only
98 0000 0100 ?
99 0000 0010 Transparent
100 0000 0001
101 CA01 blitter_mask Not really a mask, more a remap color, see Blitter
102 CA02 blitter_source hi
103 CA03 blitter_source lo
104 CA04 blitter_dest hi
105 CA05 blitter_dest lo
106 CA06 blitter_w_h H Do a XOR with 4 to have the real value (Except Splat)
107 CA07 blitter_w_h W Do a XOR with 4 to have the real value (Except Splat)
108
109 CB00 6 bits of the video counters bits 2-7
110
111 CBFF watchdog
112
113 CC00-CFFF 1K X 4 CMOS ram battery backed up (8 bits on Sinistar)
114
115
116
117
118 ------------------ Robotron -------------------
119 c804 widget_pia_dataa (widget = I/O board)
120 bit 0 Move Up
121 bit 1 Move Down
122 bit 2 Move Left
123 bit 3 Move Right
124 bit 4 1 Player
125 bit 5 2 Players
126 bit 6 Fire Up
127 bit 7 Fire Down
128
129 c806 widget_pia_datab
130 bit 0 Fire Left
131 bit 1 Fire Right
132 bit 2
133 bit 3
134 bit 4
135 bit 5
136 bit 6
137 bit 7
138
139 c80c rom_pia_dataa
140 bit 0 Auto Up
141 bit 1 Advance
142 bit 2 Right Coin
143 bit 3 High Score Reset
144 bit 4 Left Coin
145 bit 5 Center Coin
146 bit 6 Slam Door Tilt
147 bit 7 Hand Shake from sound board
148
149
150 ------------------ Joust -------------------
151 c804 widget_pia_dataa (widget = I/O board)
152 bit 0 Move Left player 1/2
153 bit 1 Move Right player 1/2
154 bit 2 Flap player 1/2
155 bit 3
156 bit 4 2 Player
157 bit 5 1 Players
158 bit 6
159 bit 7
160
161 c806 widget_pia_datab
162 bit 0
163 bit 1
164 bit 2
165 bit 3
166 bit 4
167 bit 5
168 bit 6
169 bit 7
170
171 c80c rom_pia_dataa
172 bit 0 Auto Up
173 bit 1 Advance
174 bit 2 Right Coin
175 bit 3 High Score Reset
176 bit 4 Left Coin
177 bit 5 Center Coin
178 bit 6 Slam Door Tilt
179 bit 7 Hand Shake from sound board
180
181
182 ------------------ Stargate -------------------
183 c804 widget_pia_dataa (widget = I/O board)
184 bit 0 Fire
185 bit 1 Thrust
186 bit 2 Smart Bomb
187 bit 3 HyperSpace
188 bit 4 2 Players
189 bit 5 1 Player
190 bit 6 Reverse
191 bit 7 Down
192
193 c806 widget_pia_datab
194 bit 0 Up
195 bit 1 Inviso
196 bit 2
197 bit 3
198 bit 4
199 bit 5
200 bit 6
201 bit 7 0 = Upright 1 = Table
202
203 c80c rom_pia_dataa
204 bit 0 Auto Up
205 bit 1 Advance
206 bit 2 Right Coin (High Score Reset in schematics)
207 bit 3 High Score Reset (Left Coin in schematics)
208 bit 4 Left Coin (Center Coin in schematics)
209 bit 5 Center Coin (Right Coin in schematics)
210 bit 6 Slam Door Tilt
211 bit 7 Hand Shake from sound board
212
213
214 ------------------ Splat -------------------
215 c804 widget_pia_dataa (widget = I/O board)
216 bit 0 Walk Up
217 bit 1 Walk Down
218 bit 2 Walk Left
219 bit 3 Walk Right
220 bit 4 1 Player
221 bit 5 2 Players
222 bit 6 Throw Up
223 bit 7 Throw Down
224
225 c806 widget_pia_datab
226 bit 0 Throw Left
227 bit 1 Throw Right
228 bit 2
229 bit 3
230 bit 4
231 bit 5
232 bit 6
233 bit 7
234
235 c80c rom_pia_dataa
236 bit 0 Auto Up
237 bit 1 Advance
238 bit 2 Right Coin
239 bit 3 High Score Reset
240 bit 4 Left Coin
241 bit 5 Center Coin
242 bit 6 Slam Door Tilt
243 bit 7 Hand Shake from sound board
244
245
246 ------------------ Blaster -------------------
247 c804 widget_pia_dataa (widget = I/O board)
248 bit 0 up/down switch a
249 bit 1 up/down switch b
250 bit 2 up/down switch c
251 bit 3 up/down direction
252 bit 4 left/right switch a
253 bit 5 left/right switch b
254 bit 6 left/right switch c
255 bit 7 left/right direction
256
257 c806 widget_pia_datab
258 bit 0 Thrust (Panel)
259 bit 1 Blast
260 bit 2 Thrust (Joystick)
261 bit 3
262 bit 4 1 Player
263 bit 5 2 Player
264 bit 6
265 bit 7
266
267 c80c rom_pia_dataa
268 bit 0 Auto Up
269 bit 1 Advance
270 bit 2 Right Coin
271 bit 3 High Score Reset
272 bit 4 Left Coin
273 bit 5 Center Coin
274 bit 6 Slam Door Tilt
275 bit 7 Hand Shake from sound board
276
277 ------------------------- Sinistar -------------------------------------
278 c804 widget_pia_dataa (widget = I/O board)
279 bit 0 up/down switch a
280 bit 1 up/down switch b
281 bit 2 up/down switch c
282 bit 3 up/down direction
283 bit 4 left/right switch a
284 bit 5 left/right switch b
285 bit 6 left/right switch c
286 bit 7 left/right direction
287
288 c806 widget_pia_datab
289 bit 0 Fire
290 bit 1 Bomb
291 bit 2
292 bit 3
293 bit 4 1 Player
294 bit 5 2 Player
295 bit 6
296 bit 7
297
298 c80c rom_pia_dataa
299 bit 0 Auto Up
300 bit 1 Advance
301 bit 2 Right Coin
302 bit 3 High Score Reset
303 bit 4 Left Coin
304 bit 5 Center Coin
305 bit 6 Slam Door Tilt
306 bit 7 Hand Shake from sound board
307
308
309 ------------------ Bubbles -------------------
310 c804 widget_pia_dataa (widget = I/O board)
311 bit 0 Up
312 bit 1 Down
313 bit 2 Left
314 bit 3 Right
315 bit 4 2 Players
316 bit 5 1 Player
317 bit 6
318 bit 7
319
320 c806 widget_pia_datab
321 bit 0
322 bit 1
323 bit 2
324 bit 3
325 bit 4
326 bit 5
327 bit 6
328 bit 7
329
330 c80c rom_pia_dataa
331 bit 0 Auto Up
332 bit 1 Advance
333 bit 2 Right Coin (High Score Reset in schematics)
334 bit 3 High Score Reset (Left Coin in schematics)
335 bit 4 Left Coin (Center Coin in schematics)
336 bit 5 Center Coin (Right Coin in schematics)
337 bit 6 Slam Door Tilt
338 bit 7 Hand Shake from sound board
339
340 ------------------------- Defender -------------------------------------
341 0000-9800 Video RAM
342 C000-CFFF ROM (4 banks) + I/O
343 d000-ffff ROM
344
345 c000-c00f color_registers (16 bytes of BBGGGRRR)
346
347 C3FC WatchDog
348
349 C400-C4FF CMOS ram battery backed up
350
351 C800 6 bits of the video counters bits 2-7
352
353 cc00 pia1_dataa (widget = I/O board)
354 bit 0 Auto Up
355 bit 1 Advance
356 bit 2 Right Coin
357 bit 3 High Score Reset
358 bit 4 Left Coin
359 bit 5 Center Coin
360 bit 6
361 bit 7
362 cc01 pia1_ctrla
363
364 cc02 pia1_datab
365 bit 0 \
366 bit 1 |
367 bit 2 |-6 bits to sound board
368 bit 3 |
369 bit 4 |
370 bit 5 /
371 bit 6 \
372 bit 7 /Plus CA2 and CB2 = 4 bits to drive the LED 7 segment
373 cc03 pia1_ctrlb (CB2 select between player 1 and player 2 controls if Table)
374
375 cc04 pia2_dataa
376 bit 0 Fire
377 bit 1 Thrust
378 bit 2 Smart Bomb
379 bit 3 HyperSpace
380 bit 4 2 Players
381 bit 5 1 Player
382 bit 6 Reverse
383 bit 7 Down
384 cc05 pia2_ctrla
385
386 cc06 pia2_datab
387 bit 0 Up
388 bit 1
389 bit 2
390 bit 3
391 bit 4
392 bit 5
393 bit 6
394 bit 7
395 cc07 pia2_ctrlb
396 Control the IRQ
397
398 d000 Select bank (c000-cfff)
399 0 = I/O
400 1 = BANK 1
401 2 = BANK 2
402 3 = BANK 3
403 7 = BANK 4
404
405 ------------------------------------------------------------------------
406
407 Mystic Marathon (1983)
408 Turkey Shoot (1984)
409 Inferno (1984)
410 Joust2 Survival of the Fittest (1986)
411
412 All have two boards, a large board with lots of RAM and
413 three ROMs, and a smaller board with lots of ROMs,
414 the CPU, the 6821 PIAs, and the two "Special Chip 2"
415 custom BIT/BLT chips.
416 Joust 2 has an additional music/speech board that has a
417 68B09E CPU, 68B21 PIA, Harris 55564-5 CVSD, and a YM2151.
418
419 Contact Michael Soderstrom (ichael@geocities.com) if you
420 have any additional information or corrections.
421
422 Memory Map:
423
424 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
425 --------------------------------------------------
426 x x x x x x x x x x x x x x x x 0000-BFFF 48K DRAM
427
428 0 0 0 x x x x x x x x x x x x x 0000-1FFF 8K ROM
429 0 0 1 x x x x x x x x x x x x x 2000-3FFF 8K ROM
430 0 1 0 x x x x x x x x x x x x x 4000-5FFF 8K ROM
431 0 1 1 x x x x x x x x x x x x x 6000-7FFF 8K ROM
432
433 1 0 0 0 x x x x x x x x x x x x 8000-8FFF EN_COLOR* (PAGE3 only)
434
435 0 x x x x x x x x x x x x x x x 0000-7FFF OE_DRAM* (PAGE0 and read only) or:
436 1 0 x x x x x x x x x x x x x x 9000-BFFF OE_DRAM* (!EN COLOR and read only)
437
438 1 1 0 0 x x x x x x x x x x x x C000-CFFF I/O:
439 1 1 0 0 0 x x x x x x x x x x x C000-C7FF MAP_EN*
440 1 1 0 0 1 0 0 0 0 x x x x x x x C800-C87F CS_PAGE
441 1 1 0 0 1 0 0 0 1 x x x x x x x C880-C87F CS_INT* (blitter)
442 1 1 0 0 1 0 0 1 0 x x x x x x x C900-C97F CS_WDOG* (data = 0x14)
443 1 1 0 0 1 0 0 1 1 x x x x x x x C980-C9FF CS_PIA
444 1 1 0 0 1 0 0 1 1 x x x 0 0 x x C980-C983 PIA IC5
445 1 1 0 0 1 0 0 1 1 x x x 0 1 x x C984-C987 PIA IC6
446 1 1 0 0 1 0 0 1 1 x x x 1 1 x x C98C 7 segment LED
447
448 1 1 0 0 1 0 1 1 0 0 0 x x x x x CB00-CB1F CK_FG
449 1 1 0 0 1 0 1 1 0 0 1 x x x x x CB20-CB3F CK_BG
450 1 1 0 0 1 0 1 1 0 1 0 x x x x x CB40-CB5F CK_SCL
451 1 1 0 0 1 0 1 1 0 1 1 x x x x x CB60-CB7F CK_SCH
452 1 1 0 0 1 0 1 1 1 0 0 x x x x x CB80-CB9F FLIP clk
453 1 1 0 0 1 0 1 1 1 0 1 x x x x x CBA0-CBBF DMA_WRINH clk
454
455 1 1 0 0 1 0 1 1 1 1 1 0 x x x x CBE0-CBEF EN VPOS*
456
457 1 1 0 0 1 1 0 0 x x x x x x x x CC00-CCFF 1Kx4 CMOS RAM MEM_PROT protected
458 1 1 0 0 1 1 x x x x x x x x x x CD00-CFFF not MEM_PROT protected
459
460 Mystic Marathon/Inferno:
461 1 1 0 1 0 x x x x x x x x x x x D000-D7FF SRAM0*
462 1 1 0 1 1 x x x x x x x x x x x D800-DFFF SRAM1*
463 1 1 1 0 x x x x x x x x x x x x E000-EFFF EXXX* 4K ROM
464 1 1 1 1 x x x x x x x x x x x x F000-FFFF FXXX* 4K ROM
465
466 Turkey Shoot/Joust2:
467 1 1 0 1 x x x x x x x x x x x x D000-DFFF DXXX* 4K ROM
468 1 1 1 0 x x x x x x x x x x x x E000-EFFF EXXX* 4K ROM
469 1 1 1 1 x x x x x x x x x x x x F000-FFFF FXXX* 4K ROM
470
471 6802/6808 Sound
472
473 0 0 0 x x x x x 0 x x x x x x x 0000-007F 128 bytes RAM
474 0 0 1 x x x x x x x x x x x x x 2000-3FFF CS PIA IC4
475 1 1 1 x x x x x x x x x x x x x E000-FFFF 8K ROM
476
477 ***************************************************************************/
478
479 #include "driver.h"
480 #include "machine/6821pia.h"
481 #include "sndhrdw/williams.h"
482 #include "vidhrdw/generic.h"
483
484
485 /**** local stuff ****/
486
487 static UINT16 cmos_base;
488 static UINT16 cmos_length;
489
490
491
492 /**** from machine/williams.h ****/
493
494 /* Generic old-Williams PIA interfaces */
495 extern struct pia6821_interface williams_pia_0_intf;
496 extern struct pia6821_interface williams_muxed_pia_0_intf;
497 extern struct pia6821_interface williams_dual_muxed_pia_0_intf;
498 extern struct pia6821_interface williams_49way_pia_0_intf;
499 extern struct pia6821_interface williams_pia_1_intf;
500 extern struct pia6821_interface williams_snd_pia_intf;
501
502 /* Game-specific old-Williams PIA interfaces */
503 extern struct pia6821_interface defender_pia_0_intf;
504 extern struct pia6821_interface stargate_pia_0_intf;
505 extern struct pia6821_interface sinistar_snd_pia_intf;
506
507 /* Generic later-Williams PIA interfaces */
508 extern struct pia6821_interface williams2_muxed_pia_0_intf;
509 extern struct pia6821_interface williams2_pia_1_intf;
510 extern struct pia6821_interface williams2_snd_pia_intf;
511
512 /* Game-specific later-Williams PIA interfaces */
513 extern struct pia6821_interface mysticm_pia_0_intf;
514 extern struct pia6821_interface tshoot_pia_0_intf;
515 extern struct pia6821_interface tshoot_snd_pia_intf;
516 extern struct pia6821_interface joust2_pia_1_intf;
517
518 /* banking variables */
519 extern UINT8 *defender_bank_base;
520 extern const UINT32 *defender_bank_list;
521 extern UINT8 *williams_bank_base;
522
523 /* initialization */
524 void defender_init_machine(void);
525 void williams_init_machine(void);
526 void williams2_init_machine(void);
527 void joust2_init_machine(void);
528
529 /* banking */
530 WRITE_HANDLER( williams_vram_select_w );
531 WRITE_HANDLER( defender_bank_select_w );
532 WRITE_HANDLER( blaster_bank_select_w );
533 WRITE_HANDLER( blaster_vram_select_w );
534 WRITE_HANDLER( williams2_bank_select_w );
535
536 /* misc */
537 WRITE_HANDLER( williams2_7segment_w );
538
539 /* Mayday protection */
540 extern UINT8 *mayday_protection;
541 READ_HANDLER( mayday_protection_r );
542
543
544
545 /**** from vidhrdw/williams.h ****/
546
547 /* blitter variables */
548 extern UINT8 *williams_blitterram;
549 extern UINT8 williams_blitter_xor;
550 extern UINT8 williams_blitter_remap;
551 extern UINT8 williams_blitter_clip;
552
553 /* tilemap variables */
554 extern UINT8 williams2_tilemap_mask;
555 extern const UINT8 *williams2_row_to_palette;
556 extern UINT8 williams2_M7_flip;
557 extern INT8 williams2_videoshift;
558 extern UINT8 williams2_special_bg_color;
559
560 /* later-Williams video control variables */
561 extern UINT8 *williams2_blit_inhibit;
562 extern UINT8 *williams2_xscroll_low;
563 extern UINT8 *williams2_xscroll_high;
564
565 /* Blaster extra variables */
566 extern UINT8 *blaster_color_zero_table;
567 extern UINT8 *blaster_color_zero_flags;
568 extern UINT8 *blaster_video_bits;
569
570
571 WRITE_HANDLER( defender_videoram_w );
572 WRITE_HANDLER( williams_videoram_w );
573 WRITE_HANDLER( williams2_videoram_w );
574 WRITE_HANDLER( williams_blitter_w );
575 WRITE_HANDLER( blaster_remap_select_w );
576 WRITE_HANDLER( blaster_video_bits_w );
577 READ_HANDLER( williams_video_counter_r );
578
579
580 int williams_vh_start(void);
581 void williams_vh_stop(void);
582 void williams_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
583
584 int blaster_vh_start(void);
585 void blaster_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
586
587 int williams2_vh_start(void);
588 void williams2_vh_stop(void);
589
590 WRITE_HANDLER( williams2_fg_select_w );
591 WRITE_HANDLER( williams2_bg_select_w );
592
593
594
595 /**** configuration macros ****/
596
597 #define CONFIGURE_CMOS(a,l) \
598 cmos_base = a;\
599 cmos_length = l
600
601 #define CONFIGURE_BLITTER(x,r,c) \
602 williams_blitter_xor = x;\
603 williams_blitter_remap = r;\
604 williams_blitter_clip = c
605
606 #define CONFIGURE_TILEMAP(m,p,f,s,b) \
607 williams2_tilemap_mask = m;\
608 williams2_row_to_palette = p;\
609 williams2_M7_flip = (f) ? 0x80 : 0x00;\
610 williams2_videoshift = s;\
611 williams2_special_bg_color = b
612
613 #define CONFIGURE_PIAS(a,b,c) \
614 pia_unconfig();\
615 pia_config(0, PIA_STANDARD_ORDERING | PIA_8BIT, &a);\
616 pia_config(1, PIA_STANDARD_ORDERING | PIA_8BIT, &b);\
617 pia_config(2, PIA_STANDARD_ORDERING | PIA_8BIT, &c)
618
619
620
nvram_handler(void * file,int read_or_write)621 static void nvram_handler(void *file,int read_or_write)
622 {
623 UINT8 *ram = memory_region(REGION_CPU1);
624
625 if (read_or_write)
626 osd_fwrite(file,&ram[cmos_base],cmos_length);
627 else
628 {
629 if (file)
630 osd_fread(file,&ram[cmos_base],cmos_length);
631 else
632 memset(&ram[cmos_base],0,cmos_length);
633 }
634 }
635
636
637
638 /*************************************
639 *
640 * Defender memory handlers
641 *
642 *************************************/
643
644 static struct MemoryReadAddress defender_readmem[] =
645 {
646 { 0x0000, 0x97ff, MRA_BANK1 },
647 { 0x9800, 0xbfff, MRA_RAM },
648 { 0xc000, 0xcfff, MRA_BANK2 },
649 { 0xd000, 0xffff, MRA_ROM },
650 { -1 } /* end of table */
651 };
652
653
654 static struct MemoryWriteAddress defender_writemem[] =
655 {
656 { 0x0000, 0x97ff, williams_videoram_w, &videoram, &videoram_size },
657 { 0x9800, 0xbfff, MWA_RAM },
658 { 0xc000, 0xcfff, MWA_BANK2, &defender_bank_base },
659 { 0xc000, 0xc00f, MWA_RAM, &paletteram },
660 { 0xd000, 0xdfff, defender_bank_select_w },
661 { 0xe000, 0xffff, MWA_ROM },
662 { -1 } /* end of table */
663 };
664
665
666
667 /*************************************
668 *
669 * General Williams memory handlers
670 *
671 *************************************/
672
673 static struct MemoryReadAddress williams_readmem[] =
674 {
675 { 0x0000, 0x97ff, MRA_BANK1 },
676 { 0x9800, 0xbfff, MRA_RAM },
677 { 0xc804, 0xc807, pia_0_r },
678 { 0xc80c, 0xc80f, pia_1_r },
679 { 0xcb00, 0xcb00, williams_video_counter_r },
680 { 0xcc00, 0xcfff, MRA_RAM },
681 { 0xd000, 0xffff, MRA_ROM },
682 { -1 } /* end of table */
683 };
684
685
686 static struct MemoryWriteAddress williams_writemem[] =
687 {
688 { 0x0000, 0x97ff, williams_videoram_w, &williams_bank_base, &videoram_size },
689 { 0x9800, 0xbfff, MWA_RAM },
690 { 0xc000, 0xc00f, paletteram_BBGGGRRR_w, &paletteram },
691 { 0xc804, 0xc807, pia_0_w },
692 { 0xc80c, 0xc80f, pia_1_w },
693 { 0xc900, 0xc900, williams_vram_select_w },
694 { 0xca00, 0xca07, williams_blitter_w, &williams_blitterram },
695 { 0xcbff, 0xcbff, watchdog_reset_w },
696 { 0xcc00, 0xcfff, MWA_RAM },
697 { 0xd000, 0xffff, MWA_ROM },
698 { -1 } /* end of table */
699 };
700
701
702
703 /*************************************
704 *
705 * Blaster memory handlers
706 *
707 *************************************/
708
709 static struct MemoryReadAddress blaster_readmem[] =
710 {
711 { 0x0000, 0x3fff, MRA_BANK1 },
712 { 0x4000, 0x96ff, MRA_BANK2 },
713 { 0x9700, 0xbfff, MRA_RAM },
714 { 0xc804, 0xc807, pia_0_r },
715 { 0xc80c, 0xc80f, pia_1_r },
716 { 0xcb00, 0xcb00, williams_video_counter_r },
717 { 0xcc00, 0xcfff, MRA_RAM },
718 { 0xd000, 0xffff, MRA_ROM },
719 { -1 } /* end of table */
720 };
721
722
723 static struct MemoryWriteAddress blaster_writemem[] =
724 {
725 { 0x0000, 0x96ff, williams_videoram_w, &williams_bank_base, &videoram_size },
726 { 0x9700, 0xbaff, MWA_RAM },
727 { 0xbb00, 0xbbff, MWA_RAM, &blaster_color_zero_table },
728 { 0xbc00, 0xbcff, MWA_RAM, &blaster_color_zero_flags },
729 { 0xbd00, 0xbfff, MWA_RAM },
730 { 0xc000, 0xc00f, paletteram_BBGGGRRR_w, &paletteram },
731 { 0xc804, 0xc807, pia_0_w },
732 { 0xc80c, 0xc80f, pia_1_w },
733 { 0xc900, 0xc900, blaster_vram_select_w },
734 { 0xc940, 0xc940, blaster_remap_select_w },
735 { 0xc980, 0xc980, blaster_bank_select_w },
736 { 0xc9C0, 0xc9c0, blaster_video_bits_w, &blaster_video_bits },
737 { 0xca00, 0xca07, williams_blitter_w, &williams_blitterram },
738 { 0xcbff, 0xcbff, watchdog_reset_w },
739 { 0xcc00, 0xcfff, MWA_RAM },
740 { 0xd000, 0xffff, MWA_ROM },
741 { -1 } /* end of table */
742 };
743
744
745
746 /*************************************
747 *
748 * Later Williams memory handlers
749 *
750 *************************************/
751
752 static struct MemoryReadAddress williams2_readmem[] =
753 {
754 { 0x0000, 0x7fff, MRA_BANK1 },
755 { 0x8000, 0x87ff, MRA_BANK2 },
756 { 0x8800, 0x8fff, MRA_BANK3 },
757 { 0x9000, 0xbfff, MRA_RAM },
758 { 0xc000, 0xc7ff, MRA_RAM },
759 { 0xc980, 0xc983, pia_1_r },
760 { 0xc984, 0xc987, pia_0_r },
761 { 0xcbe0, 0xcbe0, williams_video_counter_r },
762 { 0xcc00, 0xcfff, MRA_RAM },
763 { 0xd000, 0xffff, MRA_ROM },
764 { -1 } /* end of table */
765 };
766
767
768 static struct MemoryWriteAddress williams2_writemem[] =
769 {
770 { 0x0000, 0x8fff, williams2_videoram_w, &videoram, &videoram_size },
771 { 0x9000, 0xbfff, MWA_RAM },
772 { 0xc000, 0xc7ff, MWA_RAM },
773 { 0xc800, 0xc800, williams2_bank_select_w },
774 { 0xc880, 0xc887, williams_blitter_w, &williams_blitterram },
775 { 0xc900, 0xc900, watchdog_reset_w },
776 { 0xc980, 0xc983, pia_1_w },
777 { 0xc984, 0xc987, pia_0_w },
778 { 0xc98c, 0xc98c, williams2_7segment_w },
779 { 0xcb00, 0xcb00, williams2_fg_select_w },
780 { 0xcb20, 0xcb20, williams2_bg_select_w },
781 { 0xcb40, 0xcb40, MWA_RAM, &williams2_xscroll_low },
782 { 0xcb60, 0xcb60, MWA_RAM, &williams2_xscroll_high },
783 { 0xcb80, 0xcb80, MWA_RAM },
784 { 0xcba0, 0xcba0, MWA_RAM, &williams2_blit_inhibit },
785 { 0xcc00, 0xcfff, MWA_RAM },
786 { 0xd000, 0xffff, MWA_ROM },
787 { -1 } /* end of table */
788 };
789
790
791
792 /*************************************
793 *
794 * Sound board memory handlers
795 *
796 *************************************/
797
798 static struct MemoryReadAddress sound_readmem[] =
799 {
800 { 0x0000, 0x007f, MRA_RAM },
801 { 0x0400, 0x0403, pia_2_r },
802 { 0x8400, 0x8403, pia_2_r }, /* used by Colony 7, perhaps others? */
803 { 0xb000, 0xffff, MRA_ROM }, /* most games start at $F000; Sinistar starts at $B000 */
804 { -1 } /* end of table */
805 };
806
807
808 static struct MemoryWriteAddress sound_writemem[] =
809 {
810 { 0x0000, 0x007f, MWA_RAM },
811 { 0x0400, 0x0403, pia_2_w },
812 { 0x8400, 0x8403, pia_2_w }, /* used by Colony 7, perhaps others? */
813 { 0xb000, 0xffff, MWA_ROM }, /* most games start at $F000; Sinistar starts at $B000 */
814 { -1 } /* end of table */
815 };
816
817
818
819 /*************************************
820 *
821 * Later sound board memory handlers
822 *
823 *************************************/
824
825 static struct MemoryReadAddress williams2_sound_readmem[] =
826 {
827 { 0x0000, 0x00ff, MRA_RAM },
828 { 0x2000, 0x2003, pia_2_r },
829 { 0xe000, 0xffff, MRA_ROM },
830 { -1 } /* end of table */
831 };
832
833
834 static struct MemoryWriteAddress williams2_sound_writemem[] =
835 {
836 { 0x0000, 0x00ff, MWA_RAM },
837 { 0x2000, 0x2003, pia_2_w },
838 { 0xe000, 0xffff, MWA_ROM },
839 { -1 } /* end of table */
840 };
841
842
843
844 /*************************************
845 *
846 * Port definitions
847 *
848 *************************************/
849
850 INPUT_PORTS_START( defender )
851 PORT_START /* IN0 */
852 PORT_BITX(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1, "Fire", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
853 PORT_BITX(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2, "Thrust", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
854 PORT_BITX(0x04, IP_ACTIVE_HIGH, IPT_BUTTON3, "Smart Bomb", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
855 PORT_BITX(0x08, IP_ACTIVE_HIGH, IPT_BUTTON4, "Hyperspace", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
856 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 )
857 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
858 PORT_BITX(0x40, IP_ACTIVE_HIGH, IPT_BUTTON6, "Reverse", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
859 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY )
860
861 PORT_START /* IN1 */
862 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY )
863 PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
864
865 PORT_START /* IN2 */
866 PORT_BITX(0x01, IP_ACTIVE_HIGH, 0, "Auto Up", KEYCODE_F1, IP_JOY_NONE )
867 PORT_BITX(0x02, IP_ACTIVE_HIGH, 0, "Advance", KEYCODE_F2, IP_JOY_NONE )
868 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 )
869 PORT_BITX(0x08, IP_ACTIVE_HIGH, 0, "High Score Reset", KEYCODE_7, IP_JOY_NONE )
870 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
871 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
872 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
873
874 PORT_START /* IN3 - fake port for better joystick control */
875 /* This fake port is handled via defender_input_port_1 */
876 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
877 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY )
878 INPUT_PORTS_END
879
880 INPUT_PORTS_START( colony7 )
881 PORT_START /* IN0 */
882 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
883 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
884 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
885 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
886 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 )
887 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
888 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1 )
889 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 )
890
891 PORT_START /* IN1 */
892 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 )
893 PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
894
895 PORT_START /* IN2 */
896 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
897 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
898 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
899 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
900 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
901 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
902 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
903 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
904 INPUT_PORTS_END
905
906
907 INPUT_PORTS_START( stargate )
908 PORT_START /* IN0 */
909 PORT_BITX(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1, "Fire", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
910 PORT_BITX(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2, "Thrust", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
911 PORT_BITX(0x04, IP_ACTIVE_HIGH, IPT_BUTTON3, "Smart Bomb", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
912 PORT_BITX(0x08, IP_ACTIVE_HIGH, IPT_BUTTON6, "Hyperspace", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
913 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 )
914 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
915 PORT_BITX(0x40, IP_ACTIVE_HIGH, IPT_BUTTON4, "Reverse", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
916 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY )
917
918 PORT_START /* IN1 */
919 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY )
920 PORT_BITX(0x02, IP_ACTIVE_HIGH, IPT_BUTTON5, "Inviso", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
921 PORT_BIT( 0xfc, IP_ACTIVE_HIGH, IPT_UNKNOWN )
922
923 PORT_START /* IN2 */
924 PORT_BITX(0x01, IP_ACTIVE_HIGH, 0, "Auto Up", KEYCODE_F1, IP_JOY_NONE )
925 PORT_BITX(0x02, IP_ACTIVE_HIGH, 0, "Advance", KEYCODE_F2, IP_JOY_NONE )
926 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 )
927 PORT_BITX(0x08, IP_ACTIVE_HIGH, 0, "High Score Reset", KEYCODE_7, IP_JOY_NONE )
928 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
929 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
930 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
931
932 PORT_START /* IN3 - fake port for better joystick control */
933 /* This fake port is handled via stargate_input_port_0 */
934 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
935 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY )
936 INPUT_PORTS_END
937
938
939 INPUT_PORTS_START( joust )
940 PORT_START /* IN0 */
941 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_PLAYER2 )
942 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
943 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
944 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
945 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 )
946 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
947 PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
948
949 PORT_START /* IN1 */
950 PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
951
952 PORT_START /* IN2 */
953 PORT_BITX(0x01, IP_ACTIVE_HIGH, 0, "Auto Up", KEYCODE_F1, IP_JOY_NONE )
954 PORT_BITX(0x02, IP_ACTIVE_HIGH, 0, "Advance", KEYCODE_F2, IP_JOY_NONE )
955 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 )
956 PORT_BITX(0x08, IP_ACTIVE_HIGH, 0, "High Score Reset", KEYCODE_7, IP_JOY_NONE )
957 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
958 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
959 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
960
961 PORT_START /* IN3 (muxed with IN0) */
962 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_PLAYER1 )
963 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER1 )
964 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER1 )
965 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
966 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 )
967 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
968 PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
969 INPUT_PORTS_END
970
971
972 INPUT_PORTS_START( robotron )
973 PORT_START /* IN0 */
974 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP )
975 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN )
976 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_LEFT )
977 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_RIGHT )
978 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 )
979 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 )
980 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP )
981 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN )
982
983 PORT_START /* IN1 */
984 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_LEFT )
985 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_RIGHT )
986 PORT_BIT( 0xfc, IP_ACTIVE_HIGH, IPT_UNKNOWN )
987
988 PORT_START /* IN2 */
989 PORT_BITX(0x01, IP_ACTIVE_HIGH, 0, "Auto Up", KEYCODE_F1, IP_JOY_NONE )
990 PORT_BITX(0x02, IP_ACTIVE_HIGH, 0, "Advance", KEYCODE_F2, IP_JOY_NONE )
991 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 )
992 PORT_BITX(0x08, IP_ACTIVE_HIGH, 0, "High Score Reset", KEYCODE_7, IP_JOY_NONE )
993 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
994 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
995 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
996 INPUT_PORTS_END
997
998
999 INPUT_PORTS_START( bubbles )
1000 PORT_START /* IN0 */
1001 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
1002 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
1003 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
1004 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
1005 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 )
1006 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
1007
1008 PORT_START /* IN1 */
1009 PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1010
1011 PORT_START /* IN2 */
1012 PORT_BITX(0x01, IP_ACTIVE_HIGH, 0, "Auto Up", KEYCODE_F1, IP_JOY_NONE )
1013 PORT_BITX(0x02, IP_ACTIVE_HIGH, 0, "Advance", KEYCODE_F2, IP_JOY_NONE )
1014 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 )
1015 PORT_BITX(0x08, IP_ACTIVE_HIGH, 0, "High Score Reset", KEYCODE_7, IP_JOY_NONE )
1016 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
1017 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
1018 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
1019 INPUT_PORTS_END
1020
1021
1022 INPUT_PORTS_START( splat )
1023 PORT_START /* IN0 */
1024 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP | IPF_8WAY | IPF_PLAYER2 )
1025 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN | IPF_8WAY | IPF_PLAYER2 )
1026 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_LEFT | IPF_8WAY | IPF_PLAYER2 )
1027 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_RIGHT | IPF_8WAY | IPF_PLAYER2 )
1028 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 )
1029 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 )
1030 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP | IPF_8WAY | IPF_PLAYER2 )
1031 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN | IPF_8WAY | IPF_PLAYER2 )
1032
1033 PORT_START /* IN2 */
1034 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_LEFT | IPF_8WAY | IPF_PLAYER2 )
1035 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_RIGHT | IPF_8WAY | IPF_PLAYER2 )
1036 PORT_BIT( 0xfc, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1037
1038 PORT_START /* IN4 */
1039 PORT_BITX(0x01, IP_ACTIVE_HIGH, 0, "Auto Up", KEYCODE_F1, IP_JOY_NONE )
1040 PORT_BITX(0x02, IP_ACTIVE_HIGH, 0, "Advance", KEYCODE_F2, IP_JOY_NONE )
1041 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 )
1042 PORT_BITX(0x08, IP_ACTIVE_HIGH, 0, "High Score Reset", KEYCODE_7, IP_JOY_NONE )
1043 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
1044 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
1045 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
1046
1047 PORT_START /* IN3 */
1048 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP | IPF_8WAY | IPF_PLAYER1 )
1049 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN | IPF_8WAY | IPF_PLAYER1 )
1050 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_LEFT | IPF_8WAY | IPF_PLAYER1 )
1051 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_RIGHT | IPF_8WAY | IPF_PLAYER1 )
1052 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 )
1053 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 )
1054 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP | IPF_8WAY | IPF_PLAYER1 )
1055 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN | IPF_8WAY | IPF_PLAYER1 )
1056
1057 PORT_START /* IN4 */
1058 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_LEFT | IPF_8WAY | IPF_PLAYER1 )
1059 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_RIGHT | IPF_8WAY | IPF_PLAYER1 )
1060 PORT_BIT( 0xfc, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1061 INPUT_PORTS_END
1062
1063
1064 INPUT_PORTS_START( sinistar )
1065 PORT_START /* IN0 */
1066 /* pseudo analog joystick, see below */
1067
1068 PORT_START /* IN1 */
1069 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
1070 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 )
1071 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 )
1072 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 )
1073
1074 PORT_START /* IN2 */
1075 PORT_BITX(0x01, IP_ACTIVE_HIGH, 0, "Auto Up", KEYCODE_F1, IP_JOY_NONE )
1076 PORT_BITX(0x02, IP_ACTIVE_HIGH, 0, "Advance", KEYCODE_F2, IP_JOY_NONE )
1077 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 )
1078 PORT_BITX(0x08, IP_ACTIVE_HIGH, 0, "High Score Reset", KEYCODE_7, IP_JOY_NONE )
1079 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
1080 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
1081 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
1082
1083 PORT_START /* fake, converted by sinistar_input_port_0() */
1084 PORT_ANALOG( 0xff, 0x38, IPT_AD_STICK_X, 100, 10, 0x00, 0x6f )
1085
1086 PORT_START /* fake, converted by sinistar_input_port_0() */
1087 PORT_ANALOG( 0xff, 0x38, IPT_AD_STICK_Y | IPF_REVERSE, 100, 10, 0x00, 0x6f )
1088 INPUT_PORTS_END
1089
1090
1091 INPUT_PORTS_START( blaster )
1092 PORT_START /* IN0 */
1093 /* pseudo analog joystick, see below */
1094
1095 PORT_START /* IN1 */
1096 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 )
1097 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 )
1098 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 )
1099 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1100 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 )
1101 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 )
1102 PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1103
1104 PORT_START /* IN2 */
1105 PORT_BITX(0x01, IP_ACTIVE_HIGH, 0, "Auto Up", KEYCODE_F1, IP_JOY_NONE )
1106 PORT_BITX(0x02, IP_ACTIVE_HIGH, 0, "Advance", KEYCODE_F2, IP_JOY_NONE )
1107 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 )
1108 PORT_BITX(0x08, IP_ACTIVE_HIGH, 0, "High Score Reset", KEYCODE_7, IP_JOY_NONE )
1109 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
1110 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
1111 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
1112
1113 PORT_START /* fake, converted by sinistar_input_port_0() */
1114 PORT_ANALOG( 0xff, 0x38, IPT_AD_STICK_X, 100, 10, 0x00, 0x6f )
1115
1116 PORT_START /* fake, converted by sinistar_input_port_0() */
1117 PORT_ANALOG( 0xff, 0x38, IPT_AD_STICK_Y | IPF_REVERSE, 100, 10, 0x00, 0x6f )
1118 INPUT_PORTS_END
1119
1120
1121 INPUT_PORTS_START( mysticm )
1122 PORT_START /* IN1 */
1123 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
1124 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
1125 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
1126 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
1127 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 )
1128 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 )
1129 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) /* Key */
1130 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 )
1131
1132 PORT_START
1133 PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
1134
1135 PORT_START /* IN0 */
1136 PORT_BITX(0x01, IP_ACTIVE_HIGH, 0, "Auto Up", KEYCODE_F1, IP_JOY_NONE )
1137 PORT_BITX(0x02, IP_ACTIVE_HIGH, 0, "Advance", KEYCODE_F2, IP_JOY_NONE )
1138 PORT_BITX(0x04, IP_ACTIVE_HIGH, 0, "High Score Reset", KEYCODE_7, IP_JOY_NONE )
1139 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
1140 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 )
1141 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN3 )
1142 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
1143 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
1144 INPUT_PORTS_END
1145
1146
1147 INPUT_PORTS_START( tshoot )
1148 PORT_START /* IN0 (muxed with IN3)*/
1149 PORT_ANALOG(0x3F, 0x20, IPT_AD_STICK_Y, 25, 10, 0, 0x3F)
1150 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1151 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
1152
1153 PORT_START /* IN1 */
1154 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 )
1155 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 )
1156 PORT_BIT( 0x3C, IP_ACTIVE_HIGH, IPT_UNUSED ) /* 0011-1100 output */
1157 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
1158 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
1159
1160 PORT_START /* IN2 */
1161 PORT_BITX(0x01, IP_ACTIVE_HIGH, 0, "Auto Up", KEYCODE_F1, IP_JOY_NONE )
1162 PORT_BITX(0x02, IP_ACTIVE_HIGH, 0, "Advance", KEYCODE_F2, IP_JOY_NONE )
1163 PORT_BITX(0x04, IP_ACTIVE_HIGH, 0, "High Score Reset", KEYCODE_7, IP_JOY_NONE )
1164 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
1165 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 )
1166 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN3 )
1167 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
1168 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
1169
1170 PORT_START /* IN3 (muxed with IN0) */
1171 PORT_ANALOG(0x3F, 0x20, IPT_AD_STICK_X, 25, 10, 0, 0x3F)
1172 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1173 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
1174 INPUT_PORTS_END
1175
1176
1177 INPUT_PORTS_START( inferno )
1178 PORT_START /* IN0 (muxed with IN3) */
1179 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPF_PLAYER1 | IPT_JOYSTICKLEFT_UP )
1180 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPF_PLAYER1 | IPT_JOYSTICKLEFT_LEFT )
1181 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPF_PLAYER1 | IPT_JOYSTICKLEFT_RIGHT )
1182 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPF_PLAYER1 | IPT_JOYSTICKLEFT_DOWN )
1183 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPF_PLAYER1 | IPT_JOYSTICKRIGHT_UP )
1184 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPF_PLAYER1 | IPT_JOYSTICKRIGHT_LEFT )
1185 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPF_PLAYER1 | IPT_JOYSTICKRIGHT_RIGHT )
1186 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPF_PLAYER1 | IPT_JOYSTICKRIGHT_DOWN )
1187
1188 PORT_START /* IN1 */
1189 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPF_PLAYER1 | IPT_BUTTON6 )
1190 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPF_PLAYER2 | IPT_BUTTON6 )
1191 PORT_BIT( 0x3C, IP_ACTIVE_HIGH, IPT_UNUSED )
1192 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
1193 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
1194
1195 PORT_START /* IN2 */
1196 PORT_BITX(0x01, IP_ACTIVE_HIGH, 0, "Auto Up", KEYCODE_F1, IP_JOY_NONE )
1197 PORT_BITX(0x02, IP_ACTIVE_HIGH, 0, "Advance", KEYCODE_F2, IP_JOY_NONE )
1198 PORT_BITX(0x04, IP_ACTIVE_HIGH, 0, "High Score Reset", KEYCODE_7, IP_JOY_NONE )
1199 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
1200 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 )
1201 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN3 )
1202 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
1203 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
1204
1205 PORT_START /* IN3 (muxed with IN0) */
1206 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPF_PLAYER2 | IPT_JOYSTICKLEFT_UP )
1207 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPF_PLAYER2 | IPT_JOYSTICKLEFT_LEFT )
1208 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPF_PLAYER2 | IPT_JOYSTICKLEFT_RIGHT )
1209 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPF_PLAYER2 | IPT_JOYSTICKLEFT_DOWN )
1210 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPF_PLAYER2 | IPT_JOYSTICKRIGHT_UP )
1211 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPF_PLAYER2 | IPT_JOYSTICKRIGHT_LEFT )
1212 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPF_PLAYER2 | IPT_JOYSTICKRIGHT_RIGHT )
1213 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPF_PLAYER2 | IPT_JOYSTICKRIGHT_DOWN )
1214 INPUT_PORTS_END
1215
1216
1217 INPUT_PORTS_START( joust2 )
1218 PORT_START /* IN0 */
1219 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_PLAYER1 )
1220 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER1 )
1221 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
1222 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
1223 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
1224 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
1225 PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
1226
1227 PORT_START /* IN1 */
1228 PORT_BIT( 0xFF, IP_ACTIVE_HIGH, IPT_UNUSED )
1229
1230 PORT_START /* IN2 */
1231 PORT_BITX(0x01, IP_ACTIVE_HIGH, 0, "Auto Up", KEYCODE_F1, IP_JOY_NONE )
1232 PORT_BITX(0x02, IP_ACTIVE_HIGH, 0, "Advance", KEYCODE_F2, IP_JOY_NONE )
1233 PORT_BITX(0x04, IP_ACTIVE_HIGH, 0, "High Score Reset", KEYCODE_7, IP_JOY_NONE )
1234 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
1235 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 )
1236 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN3 )
1237 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
1238 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
1239
1240 PORT_START /* IN3 (muxed with IN0) */
1241 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_PLAYER2 )
1242 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
1243 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
1244 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
1245 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
1246 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
1247 PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
1248 INPUT_PORTS_END
1249
1250
1251
1252 /*************************************
1253 *
1254 * Graphics definitions
1255 *
1256 *************************************/
1257
1258 static struct GfxLayout williams2_layout =
1259 {
1260 24, 16,
1261 256,
1262 4,
1263 { 0, 1, 2, 3 },
1264 { 0+0*8, 4+0*8, 0+0*8+0x4000*8, 4+0*8+0x4000*8, 0+0*8+0x8000*8, 4+0*8+0x8000*8,
1265 0+1*8, 4+1*8, 0+1*8+0x4000*8, 4+1*8+0x4000*8, 0+1*8+0x8000*8, 4+1*8+0x8000*8,
1266 0+2*8, 4+2*8, 0+2*8+0x4000*8, 4+2*8+0x4000*8, 0+2*8+0x8000*8, 4+2*8+0x8000*8,
1267 0+3*8, 4+3*8, 0+3*8+0x4000*8, 4+3*8+0x4000*8, 0+3*8+0x8000*8, 4+3*8+0x8000*8
1268 },
1269 { 0*8, 4*8, 8*8, 12*8, 16*8, 20*8, 24*8, 28*8, 32*8, 36*8, 40*8, 44*8, 48*8, 52*8, 56*8, 60*8 },
1270 4*16*8
1271 };
1272
1273
1274 static struct GfxDecodeInfo williams2_gfxdecodeinfo[] =
1275 {
1276 { REGION_GFX1, 0, &williams2_layout, 16, 8 },
1277 { -1 } /* end of array */
1278 };
1279
1280
1281
1282 /*************************************
1283 *
1284 * Sound definitions
1285 *
1286 *************************************/
1287
1288 static struct DACinterface dac_interface =
1289 {
1290 1,
1291 { 50 }
1292 };
1293
1294
1295 static struct hc55516_interface sinistar_cvsd_interface =
1296 {
1297 1, /* 1 chip */
1298 { 80 },
1299 };
1300
1301
1302
1303 /*************************************
1304 *
1305 * Machine driver
1306 *
1307 *************************************/
1308
1309 static struct MachineDriver machine_driver_defender =
1310 {
1311 /* basic machine hardware */
1312 {
1313 {
1314 CPU_M6809,
1315 1000000,
1316 defender_readmem,defender_writemem,0,0,
1317 ignore_interrupt,1
1318 },
1319 {
1320 CPU_M6808 | CPU_AUDIO_CPU,
1321 3579000/4,
1322 sound_readmem,sound_writemem,0,0,
1323 ignore_interrupt,1
1324 }
1325 },
1326 60, DEFAULT_60HZ_VBLANK_DURATION,
1327 1,
1328 defender_init_machine,
1329
1330 /* video hardware */
1331 304, 256,
1332 { 6, 298-1, 7, 247-1 },
1333 0,
1334 16,16,
1335 0,
1336
1337 VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_SUPPORTS_DIRTY,
1338 0,
1339 williams_vh_start,
1340 williams_vh_stop,
1341 williams_vh_screenrefresh,
1342
1343 /* sound hardware */
1344 0,0,0,0,
1345 {
1346 {
1347 SOUND_DAC,
1348 &dac_interface
1349 }
1350 },
1351
1352 nvram_handler
1353 };
1354
1355
1356 static struct MachineDriver machine_driver_williams =
1357 {
1358 /* basic machine hardware */
1359 {
1360 {
1361 CPU_M6809,
1362 1000000,
1363 williams_readmem,williams_writemem,0,0,
1364 ignore_interrupt,1
1365 },
1366 {
1367 CPU_M6808 | CPU_AUDIO_CPU,
1368 3579000/4,
1369 sound_readmem,sound_writemem,0,0,
1370 ignore_interrupt,1
1371 }
1372 },
1373 60, DEFAULT_60HZ_VBLANK_DURATION,
1374 1,
1375 williams_init_machine,
1376
1377 /* video hardware */
1378 304, 256,
1379 { 6, 298-1, 7, 247-1 },
1380 0,
1381 16,16,
1382 0,
1383
1384 VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_SUPPORTS_DIRTY,
1385 0,
1386 williams_vh_start,
1387 williams_vh_stop,
1388 williams_vh_screenrefresh,
1389
1390 /* sound hardware */
1391 0,0,0,0,
1392 {
1393 {
1394 SOUND_DAC,
1395 &dac_interface
1396 }
1397 },
1398
1399 nvram_handler
1400 };
1401
1402
1403 static struct MachineDriver machine_driver_sinistar =
1404 {
1405 /* basic machine hardware */
1406 {
1407 {
1408 CPU_M6809,
1409 1000000,
1410 williams_readmem,williams_writemem,0,0,
1411 ignore_interrupt,1
1412 },
1413 {
1414 CPU_M6808 | CPU_AUDIO_CPU,
1415 3579000/4,
1416 sound_readmem,sound_writemem,0,0,
1417 ignore_interrupt,1
1418 }
1419 },
1420 60, DEFAULT_60HZ_VBLANK_DURATION,
1421 1,
1422 williams_init_machine,
1423
1424 /* video hardware */
1425 304, 256,
1426 { 6, 298-1, 7, 247-1 },
1427 0,
1428 16,16,
1429 0,
1430
1431 VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_SUPPORTS_DIRTY,
1432 0,
1433 williams_vh_start,
1434 williams_vh_stop,
1435 williams_vh_screenrefresh,
1436
1437 /* sound hardware */
1438 0,0,0,0,
1439 {
1440 {
1441 SOUND_DAC,
1442 &dac_interface
1443 },
1444 {
1445 SOUND_HC55516,
1446 &sinistar_cvsd_interface
1447 }
1448 },
1449
1450 nvram_handler
1451 };
1452
1453
1454 static struct MachineDriver machine_driver_blaster =
1455 {
1456 /* basic machine hardware */
1457 {
1458 {
1459 CPU_M6809,
1460 1000000,
1461 blaster_readmem,blaster_writemem,0,0,
1462 ignore_interrupt,1
1463 },
1464 {
1465 CPU_M6808 | CPU_AUDIO_CPU,
1466 3579000/4,
1467 sound_readmem,sound_writemem,0,0,
1468 ignore_interrupt,1
1469 }
1470 },
1471 60, DEFAULT_60HZ_VBLANK_DURATION,
1472 1,
1473 williams_init_machine,
1474
1475 /* video hardware */
1476 304, 256,
1477 { 6, 298-1, 7, 247-1 },
1478 0,
1479 16+256,16+256,
1480 0,
1481
1482 VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
1483 0,
1484 blaster_vh_start,
1485 williams_vh_stop,
1486 blaster_vh_screenrefresh,
1487
1488 /* sound hardware */
1489 0,0,0,0,
1490 {
1491 {
1492 SOUND_DAC,
1493 &dac_interface
1494 }
1495 },
1496
1497 nvram_handler
1498 };
1499
1500
1501 static struct MachineDriver machine_driver_williams2 =
1502 {
1503 /* basic machine hardware */
1504 {
1505 {
1506 CPU_M6809,
1507 1000000,
1508 williams2_readmem,williams2_writemem,0,0,
1509 ignore_interrupt,1
1510 },
1511 {
1512 CPU_M6808 | CPU_AUDIO_CPU,
1513 3579000/4,
1514 williams2_sound_readmem,williams2_sound_writemem,0,0,
1515 ignore_interrupt,1
1516 }
1517 },
1518 60, DEFAULT_60HZ_VBLANK_DURATION,
1519 1,
1520 williams2_init_machine,
1521
1522 /* video hardware */
1523 288, 256,
1524 { 4, 288-1, 8, 248-1 },
1525 williams2_gfxdecodeinfo,
1526 16+8*16,16+8*16,
1527 0,
1528
1529 VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
1530 0,
1531 williams2_vh_start,
1532 williams2_vh_stop,
1533 williams_vh_screenrefresh,
1534
1535 /* sound hardware */
1536 0,0,0,0,
1537 {
1538 {
1539 SOUND_DAC,
1540 &dac_interface
1541 }
1542 },
1543
1544 nvram_handler
1545 };
1546
1547
1548 static struct MachineDriver machine_driver_joust2 =
1549 {
1550 /* basic machine hardware */
1551 {
1552 {
1553 CPU_M6809,
1554 1000000,
1555 williams2_readmem,williams2_writemem,0,0,
1556 ignore_interrupt,1
1557 },
1558 {
1559 CPU_M6808 | CPU_AUDIO_CPU,
1560 3579000/4,
1561 williams2_sound_readmem,williams2_sound_writemem,0,0,
1562 ignore_interrupt,1
1563 },
1564 SOUND_CPU_WILLIAMS_CVSD
1565 },
1566 60, DEFAULT_60HZ_VBLANK_DURATION,
1567 1,
1568 joust2_init_machine,
1569
1570 /* video hardware */
1571 288, 256,
1572 { 4, 288-1, 8, 248-1 },
1573 williams2_gfxdecodeinfo,
1574 16+8*16,16+8*16,
1575 0,
1576
1577 VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
1578 0,
1579 williams2_vh_start,
1580 williams2_vh_stop,
1581 williams_vh_screenrefresh,
1582
1583 /* sound hardware */
1584 0,0,0,0,
1585 {
1586 SOUND_WILLIAMS_CVSD
1587 },
1588
1589 nvram_handler
1590 };
1591
1592
1593
1594 /*************************************
1595 *
1596 * Driver initialization
1597 *
1598 *************************************/
1599
init_defender(void)1600 static void init_defender(void)
1601 {
1602 static const UINT32 bank[8] = { 0x0c000, 0x10000, 0x11000, 0x12000, 0x0c000, 0x0c000, 0x0c000, 0x13000 };
1603 defender_bank_list = bank;
1604
1605 /* CMOS configuration */
1606 CONFIGURE_CMOS(0xc400, 0x100);
1607
1608 /* PIA configuration */
1609 CONFIGURE_PIAS(defender_pia_0_intf, williams_pia_1_intf, williams_snd_pia_intf);
1610 }
1611
1612
init_defndjeu(void)1613 static void init_defndjeu(void)
1614 {
1615 /*
1616 Note: Please do not remove these comments in BETA versions. They are
1617 helpful to get the games working. When they will work, useless
1618 comments may be removed as desired.
1619
1620 The encryption in this game is one of the silliest I have ever seen.
1621 I just wondered if the ROMs were encrypted, and figured out how they
1622 were in just about 5 mins...
1623 Very simple: bits 0 and 7 are swapped in the ROMs (not sound).
1624
1625 Game does not work due to bad ROMs 16 and 20. However, the others are
1626 VERY similar (if not nearly SAME) to MAYDAY and DEFENSE ones (and NOT
1627 DEFENDER), although MAYDAY ROMs are more similar than DEFENSE ones...
1628 By putting MAYDAY ROMs and encrypting them, I got a first machine test
1629 and then, reboot... The test was the random graphic drawings, which
1630 were bad. Each time the full screen was drawn, the game rebooted.
1631 Unfortunately, I don't remember which roms I took to get that, and I
1632 could not get the same result anymore (I did not retry ALL the
1633 possibilities I did at 01:30am). :-(
1634
1635 ROM equivalences (not including the sound ROM):
1636
1637 MAYDAY MAYDAY (Alternate) DEFENSE JEUTEL's Defender
1638 -----------------------------------------------------------------
1639 ROMC.BIN IC03-3.BIN DFNDR-C.ROM 15
1640 ROMB.BIN IC02-2.BIN DFNDR-B.ROM 16
1641 ROMA.BIN IC01-1.BIN DFNDR-A.ROM 17
1642 ROMG.BIN IC07-7D.BIN DFNDR-G.ROM 18
1643 ROMF.BIN IC06-6.BIN DFNDR-F.ROM 19
1644 ROME.BIN IC05-5.BIN DFNDR-E.ROM 20
1645 ROMD.BIN IC04-4.BIN DFNDR-D.ROM 21
1646 */
1647
1648 UINT8 *rom = memory_region(REGION_CPU1);
1649 int x;
1650
1651 for (x = 0xd000; x < 0x15000; x++)
1652 {
1653 UINT8 src = rom[x];
1654 rom[x] = (src & 0x7e) | (src >> 7) | (src << 7);
1655 }
1656 }
1657
1658 #if 0
1659 static void init_defcmnd(void)
1660 {
1661 static const UINT32 bank[8] = { 0x0c000, 0x10000, 0x11000, 0x12000, 0x13000, 0x0c000, 0x0c000, 0x14000 };
1662 defender_bank_list = bank;
1663
1664 /* CMOS configuration */
1665 CONFIGURE_CMOS(0xc400, 0x100);
1666
1667 /* PIA configuration */
1668 CONFIGURE_PIAS(williams_pia_0_intf, williams_pia_1_intf, williams_snd_pia_intf);
1669 }
1670 #endif
1671
init_mayday(void)1672 static void init_mayday(void)
1673 {
1674 static const UINT32 bank[8] = { 0x0c000, 0x10000, 0x11000, 0x12000, 0x0c000, 0x0c000, 0x0c000, 0x13000 };
1675 defender_bank_list = bank;
1676
1677 /* CMOS configuration */
1678 CONFIGURE_CMOS(0xc400, 0x100);
1679
1680 /* PIA configuration */
1681 CONFIGURE_PIAS(williams_pia_0_intf, williams_pia_1_intf, williams_snd_pia_intf);
1682
1683 /* install a handler to catch protection checks */
1684 mayday_protection = (UINT8*)install_mem_read_handler(0, 0xa190, 0xa191, mayday_protection_r);
1685 }
1686
1687
init_colony7(void)1688 static void init_colony7(void)
1689 {
1690 static const UINT32 bank[8] = { 0x0c000, 0x10000, 0x11000, 0x12000, 0x0c000, 0x0c000, 0x0c000, 0x0c000 };
1691 defender_bank_list = bank;
1692
1693 /* CMOS configuration */
1694 CONFIGURE_CMOS(0xc400, 0x100);
1695
1696 /* PIA configuration */
1697 CONFIGURE_PIAS(williams_pia_0_intf, williams_pia_1_intf, williams_snd_pia_intf);
1698 }
1699
1700
init_stargate(void)1701 static void init_stargate(void)
1702 {
1703 /* CMOS configuration */
1704 CONFIGURE_CMOS(0xcc00, 0x400);
1705
1706 /* PIA configuration */
1707 CONFIGURE_PIAS(stargate_pia_0_intf, williams_pia_1_intf, williams_snd_pia_intf);
1708 }
1709
1710
init_joust(void)1711 static void init_joust(void)
1712 {
1713 /* CMOS configuration */
1714 CONFIGURE_CMOS(0xcc00, 0x400);
1715
1716 /* video configuration */
1717 CONFIGURE_BLITTER(4, 0, 0);
1718
1719 /* PIA configuration */
1720 CONFIGURE_PIAS(williams_muxed_pia_0_intf, williams_pia_1_intf, williams_snd_pia_intf);
1721 }
1722
1723
init_robotron(void)1724 static void init_robotron(void)
1725 {
1726 /* CMOS configuration */
1727 CONFIGURE_CMOS(0xcc00, 0x400);
1728
1729 /* video configuration */
1730 CONFIGURE_BLITTER(4, 0, 0);
1731
1732 /* PIA configuration */
1733 CONFIGURE_PIAS(williams_pia_0_intf, williams_pia_1_intf, williams_snd_pia_intf);
1734 }
1735
1736
init_bubbles(void)1737 static void init_bubbles(void)
1738 {
1739 /* CMOS configuration */
1740 CONFIGURE_CMOS(0xcc00, 0x400);
1741
1742 /* video configuration */
1743 CONFIGURE_BLITTER(4, 0, 0);
1744
1745 /* PIA configuration */
1746 CONFIGURE_PIAS(williams_pia_0_intf, williams_pia_1_intf, williams_snd_pia_intf);
1747 }
1748
1749
init_splat(void)1750 static void init_splat(void)
1751 {
1752 /* CMOS configuration */
1753 CONFIGURE_CMOS(0xcc00, 0x400);
1754
1755 /* video configuration */
1756 CONFIGURE_BLITTER(0, 0, 0);
1757
1758 /* PIA configuration */
1759 CONFIGURE_PIAS(williams_dual_muxed_pia_0_intf, williams_pia_1_intf, williams_snd_pia_intf);
1760 }
1761
1762
init_sinistar(void)1763 static void init_sinistar(void)
1764 {
1765 /* CMOS configuration */
1766 CONFIGURE_CMOS(0xcc00, 0x400);
1767
1768 /* video configuration */
1769 CONFIGURE_BLITTER(4, 0, 1);
1770
1771 /* PIA configuration */
1772 CONFIGURE_PIAS(williams_49way_pia_0_intf, williams_pia_1_intf, sinistar_snd_pia_intf);
1773
1774 /* install RAM instead of ROM in the Dxxx slot */
1775 install_mem_read_handler (0, 0xd000, 0xdfff, MRA_RAM);
1776 install_mem_write_handler(0, 0xd000, 0xdfff, MWA_RAM);
1777 }
1778
1779
init_blaster(void)1780 static void init_blaster(void)
1781 {
1782 /* CMOS configuration */
1783 CONFIGURE_CMOS(0xcc00, 0x400);
1784
1785 /* video configuration */
1786 CONFIGURE_BLITTER(0, 1, 0);
1787
1788 /* PIA configuration */
1789 CONFIGURE_PIAS(williams_49way_pia_0_intf, williams_pia_1_intf, williams_snd_pia_intf);
1790 }
1791
1792
init_tshoot(void)1793 static void init_tshoot(void)
1794 {
1795 static const UINT8 tilemap_colors[] = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };
1796
1797 /* CMOS configuration */
1798 CONFIGURE_CMOS(0xcc00, 0x400);
1799
1800 /* video configuration */
1801 CONFIGURE_BLITTER(0, 0, 0);
1802 CONFIGURE_TILEMAP(0x7f, tilemap_colors, 1, 0, 0);
1803
1804 /* PIA configuration */
1805 CONFIGURE_PIAS(tshoot_pia_0_intf, williams2_pia_1_intf, tshoot_snd_pia_intf);
1806 }
1807
1808
init_joust2(void)1809 static void init_joust2(void)
1810 {
1811 static const UINT8 tilemap_colors[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
1812
1813 /* CMOS configuration */
1814 CONFIGURE_CMOS(0xcc00, 0x400);
1815
1816 /* video configuration */
1817 CONFIGURE_BLITTER(0, 0, 0);
1818 CONFIGURE_TILEMAP(0xff, tilemap_colors, 0, -2, 0);
1819
1820 /* PIA configuration */
1821 CONFIGURE_PIAS(williams2_muxed_pia_0_intf, joust2_pia_1_intf, williams2_snd_pia_intf);
1822
1823 /* expand the sound ROMs */
1824 memcpy(&memory_region(REGION_CPU3)[0x18000], &memory_region(REGION_CPU3)[0x10000], 0x08000);
1825 memcpy(&memory_region(REGION_CPU3)[0x20000], &memory_region(REGION_CPU3)[0x10000], 0x10000);
1826 memcpy(&memory_region(REGION_CPU3)[0x38000], &memory_region(REGION_CPU3)[0x30000], 0x08000);
1827 memcpy(&memory_region(REGION_CPU3)[0x40000], &memory_region(REGION_CPU3)[0x30000], 0x10000);
1828 memcpy(&memory_region(REGION_CPU3)[0x58000], &memory_region(REGION_CPU3)[0x50000], 0x08000);
1829 memcpy(&memory_region(REGION_CPU3)[0x60000], &memory_region(REGION_CPU3)[0x50000], 0x10000);
1830 }
1831
1832
init_mysticm(void)1833 static void init_mysticm(void)
1834 {
1835 static const UINT8 tilemap_colors[] = { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
1836
1837 /* CMOS configuration */
1838 CONFIGURE_CMOS(0xcc00, 0x400);
1839
1840 /* video configuration */
1841 CONFIGURE_BLITTER(0, 0, 0);
1842 CONFIGURE_TILEMAP(0x7f, tilemap_colors, 1, 0, 1);
1843
1844 /* PIA configuration */
1845 CONFIGURE_PIAS(mysticm_pia_0_intf, williams2_pia_1_intf, williams2_snd_pia_intf);
1846
1847 /* install RAM instead of ROM in the Dxxx slot */
1848 install_mem_read_handler (0, 0xd000, 0xdfff, MRA_RAM);
1849 install_mem_write_handler(0, 0xd000, 0xdfff, MWA_RAM);
1850 }
1851
1852
init_inferno(void)1853 static void init_inferno(void)
1854 {
1855 static const UINT8 tilemap_colors[] = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };
1856
1857 /* CMOS configuration */
1858 CONFIGURE_CMOS(0xcc00, 0x400);
1859
1860 /* video configuration */
1861 CONFIGURE_BLITTER(0, 0, 0);
1862 CONFIGURE_TILEMAP(0x7f, tilemap_colors, 1, 0, 0);
1863
1864 /* PIA configuration */
1865 CONFIGURE_PIAS(williams2_muxed_pia_0_intf, williams2_pia_1_intf, williams2_snd_pia_intf);
1866
1867 /* install RAM instead of ROM in the Dxxx slot */
1868 install_mem_read_handler (0, 0xd000, 0xdfff, MRA_RAM);
1869 install_mem_write_handler(0, 0xd000, 0xdfff, MWA_RAM);
1870 }
1871
1872
1873
1874 /*************************************
1875 *
1876 * ROM definitions
1877 *
1878 *************************************/
1879
1880 ROM_START( defender )
1881 ROM_REGION( 0x14000, REGION_CPU1 )
1882 ROM_LOAD( "defend.1", 0x0d000, 0x0800, 0xc3e52d7e )
1883 ROM_LOAD( "defend.4", 0x0d800, 0x0800, 0x9a72348b )
1884 ROM_LOAD( "defend.2", 0x0e000, 0x1000, 0x89b75984 )
1885 ROM_LOAD( "defend.3", 0x0f000, 0x1000, 0x94f51e9b )
1886 /* bank 0 is the place for CMOS ram */
1887 ROM_LOAD( "defend.9", 0x10000, 0x0800, 0x6870e8a5 )
1888 ROM_LOAD( "defend.12", 0x10800, 0x0800, 0xf1f88938 )
1889 ROM_LOAD( "defend.8", 0x11000, 0x0800, 0xb649e306 )
1890 ROM_LOAD( "defend.11", 0x11800, 0x0800, 0x9deaf6d9 )
1891 ROM_LOAD( "defend.7", 0x12000, 0x0800, 0x339e092e )
1892 ROM_LOAD( "defend.10", 0x12800, 0x0800, 0xa543b167 )
1893 ROM_RELOAD( 0x13800, 0x0800 )
1894 ROM_LOAD( "defend.6", 0x13000, 0x0800, 0x65f4efd1 )
1895
1896 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
1897 ROM_LOAD( "defend.snd", 0xf800, 0x0800, 0xfefd5b48 )
1898 ROM_END
1899
1900
1901 ROM_START( defendg )
1902 ROM_REGION( 0x14000, REGION_CPU1 )
1903 ROM_LOAD( "defeng01.bin", 0x0d000, 0x0800, 0x6111d74d )
1904 ROM_LOAD( "defeng04.bin", 0x0d800, 0x0800, 0x3cfc04ce )
1905 ROM_LOAD( "defeng02.bin", 0x0e000, 0x1000, 0xd184ab6b )
1906 ROM_LOAD( "defeng03.bin", 0x0f000, 0x1000, 0x788b76d7 )
1907 /* bank 0 is the place for CMOS ram */
1908 ROM_LOAD( "defeng09.bin", 0x10000, 0x0800, 0xf57caa62 )
1909 ROM_LOAD( "defeng12.bin", 0x10800, 0x0800, 0x33db686f )
1910 ROM_LOAD( "defeng08.bin", 0x11000, 0x0800, 0x9a9eb3d2 )
1911 ROM_LOAD( "defeng11.bin", 0x11800, 0x0800, 0x5ca4e860 )
1912 ROM_LOAD( "defeng07.bin", 0x12000, 0x0800, 0x545c3326 )
1913 ROM_LOAD( "defeng10.bin", 0x12800, 0x0800, 0x941cf34e )
1914 ROM_RELOAD( 0x13800, 0x0800 )
1915 ROM_LOAD( "defeng06.bin", 0x13000, 0x0800, 0x3af34c05 )
1916
1917 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
1918 ROM_LOAD( "defend.snd", 0xf800, 0x0800, 0xfefd5b48 )
1919 ROM_END
1920
1921
1922 ROM_START( defendw )
1923 ROM_REGION( 0x14000, REGION_CPU1 )
1924 ROM_LOAD( "wb01.bin", 0x0d000, 0x1000, 0x0ee1019d )
1925 ROM_LOAD( "defeng02.bin", 0x0e000, 0x1000, 0xd184ab6b )
1926 ROM_LOAD( "wb03.bin", 0x0f000, 0x1000, 0xa732d649 )
1927 /* bank 0 is the place for CMOS ram */
1928 ROM_LOAD( "defeng09.bin", 0x10000, 0x0800, 0xf57caa62 )
1929 ROM_LOAD( "defeng12.bin", 0x10800, 0x0800, 0x33db686f )
1930 ROM_LOAD( "defeng08.bin", 0x11000, 0x0800, 0x9a9eb3d2 )
1931 ROM_LOAD( "defeng11.bin", 0x11800, 0x0800, 0x5ca4e860 )
1932 ROM_LOAD( "defeng07.bin", 0x12000, 0x0800, 0x545c3326 )
1933 ROM_LOAD( "defeng10.bin", 0x12800, 0x0800, 0x941cf34e )
1934 ROM_RELOAD( 0x13800, 0x0800 )
1935 ROM_LOAD( "defeng06.bin", 0x13000, 0x0800, 0x3af34c05 )
1936
1937 ROM_REGION( 0x10000, REGION_CPU2 )
1938 ROM_LOAD( "defend.snd", 0xf800, 0x0800, 0xfefd5b48 )
1939 ROM_END
1940
1941
1942 ROM_START( defndjeu )
1943 ROM_REGION( 0x15000, REGION_CPU1 )
1944 ROM_LOAD( "15", 0x0d000, 0x1000, 0x706a24bd )
1945 ROM_LOAD( "16", 0x0e000, 0x1000, 0x03201532 )
1946 ROM_LOAD( "17", 0x0f000, 0x1000, 0x25287eca )
1947 /* bank 0 is the place for CMOS ram */
1948 ROM_LOAD( "18", 0x10000, 0x1000, 0xe99d5679 )
1949 ROM_LOAD( "19", 0x11000, 0x1000, 0x769f5984 )
1950 ROM_LOAD( "20", 0x12000, 0x1000, 0x12fa0788 )
1951 ROM_LOAD( "21", 0x13000, 0x1000, 0xbddb71a3 )
1952 ROM_RELOAD( 0x14000, 0x1000 )
1953
1954 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
1955 ROM_LOAD( "s", 0xf800, 0x0800, 0xcb79ae42 )
1956 ROM_END
1957
1958
1959 ROM_START( defcmnd )
1960 ROM_REGION( 0x15000, REGION_CPU1 )
1961 ROM_LOAD( "defcmnda.1", 0x0d000, 0x1000, 0x68effc1d )
1962 ROM_LOAD( "defcmnda.2", 0x0e000, 0x1000, 0x1126adc9 )
1963 ROM_LOAD( "defcmnda.3", 0x0f000, 0x1000, 0x7340209d )
1964 /* bank 0 is the place for CMOS ram */
1965 ROM_LOAD( "defcmnda.10", 0x10000, 0x0800, 0x3dddae75 )
1966 ROM_LOAD( "defcmnda.7", 0x10800, 0x0800, 0x3f1e7cf8 )
1967 ROM_LOAD( "defcmnda.9", 0x11000, 0x0800, 0x8882e1ff )
1968 ROM_LOAD( "defcmnda.6", 0x11800, 0x0800, 0xd068f0c5 )
1969 ROM_LOAD( "defcmnda.8", 0x12000, 0x0800, 0xfef4cb77 )
1970 ROM_LOAD( "defcmnda.5", 0x12800, 0x0800, 0x49b50b40 )
1971 ROM_LOAD( "defcmnda.4", 0x13000, 0x0800, 0x43d42a1b )
1972
1973 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
1974 ROM_LOAD( "defcmnda.snd", 0xf800, 0x0800, 0xf122d9c9 )
1975 ROM_END
1976
1977
1978 ROM_START( defence )
1979 ROM_REGION( 0x15000, REGION_CPU1 )
1980 ROM_LOAD( "1", 0x0d000, 0x1000, 0xebc93622 )
1981 ROM_LOAD( "2", 0x0e000, 0x1000, 0x2a4f4f44 )
1982 ROM_LOAD( "3", 0x0f000, 0x1000, 0xa4112f91 )
1983 /* bank 0 is the place for CMOS ram */
1984 ROM_LOAD( "0", 0x10000, 0x0800, 0x7a1e5998 )
1985 ROM_LOAD( "7", 0x10800, 0x0800, 0x4c2616a3 )
1986 ROM_LOAD( "9", 0x11000, 0x0800, 0x7b146003 )
1987 ROM_LOAD( "6", 0x11800, 0x0800, 0x6d748030 )
1988 ROM_LOAD( "8", 0x12000, 0x0800, 0x52d5438b )
1989 ROM_LOAD( "5", 0x12800, 0x0800, 0x4a270340 )
1990 ROM_LOAD( "4", 0x13000, 0x0800, 0xe13f457c )
1991
1992 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
1993 ROM_LOAD( "defcmnda.snd", 0xf800, 0x0800, 0xf122d9c9 )
1994 ROM_END
1995
1996
1997 ROM_START( mayday )
1998 ROM_REGION( 0x15000, REGION_CPU1 )
1999 ROM_LOAD( "ic03-3.bin", 0x0d000, 0x1000, 0xa1ff6e62 )
2000 ROM_LOAD( "ic02-2.bin", 0x0e000, 0x1000, 0x62183aea )
2001 ROM_LOAD( "ic01-1.bin", 0x0f000, 0x1000, 0x5dcb113f )
2002 /* bank 0 is the place for CMOS ram */
2003 ROM_LOAD( "ic04-4.bin", 0x10000, 0x1000, 0xea6a4ec8 )
2004 ROM_LOAD( "ic05-5.bin", 0x11000, 0x1000, 0x0d797a3e )
2005 ROM_LOAD( "ic06-6.bin", 0x12000, 0x1000, 0xee8bfcd6 )
2006 ROM_LOAD( "ic07-7d.bin", 0x13000, 0x1000, 0xd9c065e7 )
2007 ROM_RELOAD( 0x14000, 0x1000 )
2008
2009 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
2010 ROM_LOAD( "ic28-8.bin", 0xf800, 0x0800, 0xfefd5b48 )
2011 /* Sound ROM is same in both versions. Can be merged !!! */
2012 ROM_END
2013
2014
2015 ROM_START( maydaya )
2016 ROM_REGION( 0x15000, REGION_CPU1 )
2017 ROM_LOAD( "mayday.c", 0x0d000, 0x1000, 0x872a2f2d )
2018 ROM_LOAD( "mayday.b", 0x0e000, 0x1000, 0xc4ab5e22 )
2019 ROM_LOAD( "mayday.a", 0x0f000, 0x1000, 0x329a1318 )
2020 /* bank 0 is the place for CMOS ram */
2021 ROM_LOAD( "mayday.d", 0x10000, 0x1000, 0xc2ae4716 )
2022 ROM_LOAD( "mayday.e", 0x11000, 0x1000, 0x41225666 )
2023 ROM_LOAD( "mayday.f", 0x12000, 0x1000, 0xc39be3c0 )
2024 ROM_LOAD( "mayday.g", 0x13000, 0x1000, 0x2bd0f106 )
2025 ROM_RELOAD( 0x14000, 0x1000 )
2026
2027 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
2028 ROM_LOAD( "ic28-8.bin", 0xf800, 0x0800, 0xfefd5b48 )
2029 ROM_END
2030
2031
2032 ROM_START( colony7 )
2033 ROM_REGION( 0x14000, REGION_CPU1 )
2034 ROM_LOAD( "cs03.bin", 0x0d000, 0x1000, 0x7ee75ae5 )
2035 ROM_LOAD( "cs02.bin", 0x0e000, 0x1000, 0xc60b08cb )
2036 ROM_LOAD( "cs01.bin", 0x0f000, 0x1000, 0x1bc97436 )
2037 /* bank 0 is the place for CMOS ram */
2038 ROM_LOAD( "cs06.bin", 0x10000, 0x0800, 0x318b95af )
2039 ROM_LOAD( "cs04.bin", 0x10800, 0x0800, 0xd740faee )
2040 ROM_LOAD( "cs07.bin", 0x11000, 0x0800, 0x0b23638b )
2041 ROM_LOAD( "cs05.bin", 0x11800, 0x0800, 0x59e406a8 )
2042 ROM_LOAD( "cs08.bin", 0x12000, 0x0800, 0x3bfde87a )
2043 ROM_RELOAD( 0x12800, 0x0800 )
2044
2045 ROM_REGION( 0x10000, REGION_CPU2 )
2046 ROM_LOAD( "cs11.bin", 0xf800, 0x0800, 0x6032293c ) /* Sound ROM */
2047 ROM_END
2048
2049
2050 ROM_START( colony7a )
2051 ROM_REGION( 0x14000, REGION_CPU1 )
2052 ROM_LOAD( "cs03a.bin", 0x0d000, 0x1000, 0xe0b0d23b )
2053 ROM_LOAD( "cs02a.bin", 0x0e000, 0x1000, 0x370c6f41 )
2054 ROM_LOAD( "cs01a.bin", 0x0f000, 0x1000, 0xba299946 )
2055 /* bank 0 is the place for CMOS ram */
2056 ROM_LOAD( "cs06.bin", 0x10000, 0x0800, 0x318b95af )
2057 ROM_LOAD( "cs04.bin", 0x10800, 0x0800, 0xd740faee )
2058 ROM_LOAD( "cs07.bin", 0x11000, 0x0800, 0x0b23638b )
2059 ROM_LOAD( "cs05.bin", 0x11800, 0x0800, 0x59e406a8 )
2060 ROM_LOAD( "cs08.bin", 0x12000, 0x0800, 0x3bfde87a )
2061 ROM_RELOAD( 0x12800, 0x0800 )
2062
2063 ROM_REGION( 0x10000, REGION_CPU2 )
2064 ROM_LOAD( "cs11.bin", 0xf800, 0x0800, 0x6032293c ) /* Sound ROM */
2065 ROM_END
2066
2067
2068 ROM_START( stargate )
2069 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
2070 ROM_LOAD( "01", 0x0000, 0x1000, 0x88824d18 )
2071 ROM_LOAD( "02", 0x1000, 0x1000, 0xafc614c5 )
2072 ROM_LOAD( "03", 0x2000, 0x1000, 0x15077a9d )
2073 ROM_LOAD( "04", 0x3000, 0x1000, 0xa8b4bf0f )
2074 ROM_LOAD( "05", 0x4000, 0x1000, 0x2d306074 )
2075 ROM_LOAD( "06", 0x5000, 0x1000, 0x53598dde )
2076 ROM_LOAD( "07", 0x6000, 0x1000, 0x23606060 )
2077 ROM_LOAD( "08", 0x7000, 0x1000, 0x4ec490c7 )
2078 ROM_LOAD( "09", 0x8000, 0x1000, 0x88187b64 )
2079 ROM_LOAD( "10", 0xd000, 0x1000, 0x60b07ff7 )
2080 ROM_LOAD( "11", 0xe000, 0x1000, 0x7d2c5daf )
2081 ROM_LOAD( "12", 0xf000, 0x1000, 0xa0396670 )
2082
2083 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
2084 ROM_LOAD( "sg.snd", 0xf800, 0x0800, 0x2fcf6c4d )
2085 ROM_END
2086
2087
2088 ROM_START( joust )
2089 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
2090 ROM_LOAD( "joust.wg1", 0x0000, 0x1000, 0xfe41b2af )
2091 ROM_LOAD( "joust.wg2", 0x1000, 0x1000, 0x501c143c )
2092 ROM_LOAD( "joust.wg3", 0x2000, 0x1000, 0x43f7161d )
2093 ROM_LOAD( "joust.wg4", 0x3000, 0x1000, 0xdb5571b6 )
2094 ROM_LOAD( "joust.wg5", 0x4000, 0x1000, 0xc686bb6b )
2095 ROM_LOAD( "joust.wg6", 0x5000, 0x1000, 0xfac5f2cf )
2096 ROM_LOAD( "joust.wg7", 0x6000, 0x1000, 0x81418240 )
2097 ROM_LOAD( "joust.wg8", 0x7000, 0x1000, 0xba5359ba )
2098 ROM_LOAD( "joust.wg9", 0x8000, 0x1000, 0x39643147 )
2099 ROM_LOAD( "joust.wga", 0xd000, 0x1000, 0x3f1c4f89 )
2100 ROM_LOAD( "joust.wgb", 0xe000, 0x1000, 0xea48b359 )
2101 ROM_LOAD( "joust.wgc", 0xf000, 0x1000, 0xc710717b )
2102
2103 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
2104 ROM_LOAD( "joust.snd", 0xf000, 0x1000, 0xf1835bdd )
2105 ROM_END
2106
2107
2108 ROM_START( joustwr )
2109 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
2110 ROM_LOAD( "joust.wg1", 0x0000, 0x1000, 0xfe41b2af )
2111 ROM_LOAD( "joust.wg2", 0x1000, 0x1000, 0x501c143c )
2112 ROM_LOAD( "joust.wg3", 0x2000, 0x1000, 0x43f7161d )
2113 ROM_LOAD( "joust.wg4", 0x3000, 0x1000, 0xdb5571b6 )
2114 ROM_LOAD( "joust.wg5", 0x4000, 0x1000, 0xc686bb6b )
2115 ROM_LOAD( "joust.wg6", 0x5000, 0x1000, 0xfac5f2cf )
2116 ROM_LOAD( "joust.wr7", 0x6000, 0x1000, 0xe6f439c4 )
2117 ROM_LOAD( "joust.wg8", 0x7000, 0x1000, 0xba5359ba )
2118 ROM_LOAD( "joust.wg9", 0x8000, 0x1000, 0x39643147 )
2119 ROM_LOAD( "joust.wra", 0xd000, 0x1000, 0x2039014a )
2120 ROM_LOAD( "joust.wgb", 0xe000, 0x1000, 0xea48b359 )
2121 ROM_LOAD( "joust.wgc", 0xf000, 0x1000, 0xc710717b )
2122
2123 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
2124 ROM_LOAD( "joust.snd", 0xf000, 0x1000, 0xf1835bdd )
2125 ROM_END
2126
2127
2128 ROM_START( joustr )
2129 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
2130 ROM_LOAD( "joust.wg1", 0x0000, 0x1000, 0xfe41b2af )
2131 ROM_LOAD( "joust.wg2", 0x1000, 0x1000, 0x501c143c )
2132 ROM_LOAD( "joust.wg3", 0x2000, 0x1000, 0x43f7161d )
2133 ROM_LOAD( "joust.sr4", 0x3000, 0x1000, 0xab347170 )
2134 ROM_LOAD( "joust.wg5", 0x4000, 0x1000, 0xc686bb6b )
2135 ROM_LOAD( "joust.sr6", 0x5000, 0x1000, 0x3d9a6fac )
2136 ROM_LOAD( "joust.sr7", 0x6000, 0x1000, 0x0a70b3d1 )
2137 ROM_LOAD( "joust.sr8", 0x7000, 0x1000, 0xa7f01504 )
2138 ROM_LOAD( "joust.sr9", 0x8000, 0x1000, 0x978687ad )
2139 ROM_LOAD( "joust.sra", 0xd000, 0x1000, 0xc0c6e52a )
2140 ROM_LOAD( "joust.srb", 0xe000, 0x1000, 0xab11bcf9 )
2141 ROM_LOAD( "joust.src", 0xf000, 0x1000, 0xea14574b )
2142
2143 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
2144 ROM_LOAD( "joust.snd", 0xf000, 0x1000, 0xf1835bdd )
2145 ROM_END
2146
2147
2148 ROM_START( robotron )
2149 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
2150 ROM_LOAD( "robotron.sb1", 0x0000, 0x1000, 0x66c7d3ef )
2151 ROM_LOAD( "robotron.sb2", 0x1000, 0x1000, 0x5bc6c614 )
2152 ROM_LOAD( "robotron.sb3", 0x2000, 0x1000, 0xe99a82be )
2153 ROM_LOAD( "robotron.sb4", 0x3000, 0x1000, 0xafb1c561 )
2154 ROM_LOAD( "robotron.sb5", 0x4000, 0x1000, 0x62691e77 )
2155 ROM_LOAD( "robotron.sb6", 0x5000, 0x1000, 0xbd2c853d )
2156 ROM_LOAD( "robotron.sb7", 0x6000, 0x1000, 0x49ac400c )
2157 ROM_LOAD( "robotron.sb8", 0x7000, 0x1000, 0x3a96e88c )
2158 ROM_LOAD( "robotron.sb9", 0x8000, 0x1000, 0xb124367b )
2159 ROM_LOAD( "robotron.sba", 0xd000, 0x1000, 0x13797024 )
2160 ROM_LOAD( "robotron.sbb", 0xe000, 0x1000, 0x7e3c1b87 )
2161 ROM_LOAD( "robotron.sbc", 0xf000, 0x1000, 0x645d543e )
2162
2163 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
2164 ROM_LOAD( "robotron.snd", 0xf000, 0x1000, 0xc56c1d28 )
2165 ROM_END
2166
2167
2168 ROM_START( robotryo )
2169 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
2170 ROM_LOAD( "robotron.sb1", 0x0000, 0x1000, 0x66c7d3ef )
2171 ROM_LOAD( "robotron.sb2", 0x1000, 0x1000, 0x5bc6c614 )
2172 ROM_LOAD( "robotron.yo3", 0x2000, 0x1000, 0x67a369bc )
2173 ROM_LOAD( "robotron.yo4", 0x3000, 0x1000, 0xb0de677a )
2174 ROM_LOAD( "robotron.yo5", 0x4000, 0x1000, 0x24726007 )
2175 ROM_LOAD( "robotron.yo6", 0x5000, 0x1000, 0x028181a6 )
2176 ROM_LOAD( "robotron.yo7", 0x6000, 0x1000, 0x4dfcceae )
2177 ROM_LOAD( "robotron.sb8", 0x7000, 0x1000, 0x3a96e88c )
2178 ROM_LOAD( "robotron.sb9", 0x8000, 0x1000, 0xb124367b )
2179 ROM_LOAD( "robotron.yoa", 0xd000, 0x1000, 0x4a9d5f52 )
2180 ROM_LOAD( "robotron.yob", 0xe000, 0x1000, 0x2afc5e7f )
2181 ROM_LOAD( "robotron.yoc", 0xf000, 0x1000, 0x45da9202 )
2182
2183 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
2184 ROM_LOAD( "robotron.snd", 0xf000, 0x1000, 0xc56c1d28 )
2185 ROM_END
2186
2187
2188 ROM_START( bubbles )
2189 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
2190 ROM_LOAD( "bubbles.1b", 0x0000, 0x1000, 0x8234f55c )
2191 ROM_LOAD( "bubbles.2b", 0x1000, 0x1000, 0x4a188d6a )
2192 ROM_LOAD( "bubbles.3b", 0x2000, 0x1000, 0x7728f07f )
2193 ROM_LOAD( "bubbles.4b", 0x3000, 0x1000, 0x040be7f9 )
2194 ROM_LOAD( "bubbles.5b", 0x4000, 0x1000, 0x0b5f29e0 )
2195 ROM_LOAD( "bubbles.6b", 0x5000, 0x1000, 0x4dd0450d )
2196 ROM_LOAD( "bubbles.7b", 0x6000, 0x1000, 0xe0a26ec0 )
2197 ROM_LOAD( "bubbles.8b", 0x7000, 0x1000, 0x4fd23d8d )
2198 ROM_LOAD( "bubbles.9b", 0x8000, 0x1000, 0xb48559fb )
2199 ROM_LOAD( "bubbles.10b", 0xd000, 0x1000, 0x26e7869b )
2200 ROM_LOAD( "bubbles.11b", 0xe000, 0x1000, 0x5a5b572f )
2201 ROM_LOAD( "bubbles.12b", 0xf000, 0x1000, 0xce22d2e2 )
2202
2203 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
2204 ROM_LOAD( "bubbles.snd", 0xf000, 0x1000, 0x689ce2aa )
2205 ROM_END
2206
2207
2208 ROM_START( bubblesr )
2209 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
2210 ROM_LOAD( "bubblesr.1b", 0x0000, 0x1000, 0xdda4e782 )
2211 ROM_LOAD( "bubblesr.2b", 0x1000, 0x1000, 0x3c8fa7f5 )
2212 ROM_LOAD( "bubblesr.3b", 0x2000, 0x1000, 0xf869bb9c )
2213 ROM_LOAD( "bubblesr.4b", 0x3000, 0x1000, 0x0c65eaab )
2214 ROM_LOAD( "bubblesr.5b", 0x4000, 0x1000, 0x7ece4e13 )
2215 ROM_LOAD( "bubbles.6b", 0x5000, 0x1000, 0x4dd0450d )
2216 ROM_LOAD( "bubbles.7b", 0x6000, 0x1000, 0xe0a26ec0 )
2217 ROM_LOAD( "bubblesr.8b", 0x7000, 0x1000, 0x598b9bd6 )
2218 ROM_LOAD( "bubbles.9b", 0x8000, 0x1000, 0xb48559fb )
2219 ROM_LOAD( "bubblesr.10b", 0xd000, 0x1000, 0x8b396db0 )
2220 ROM_LOAD( "bubblesr.11b", 0xe000, 0x1000, 0x096af43e )
2221 ROM_LOAD( "bubblesr.12b", 0xf000, 0x1000, 0x5c1244ef )
2222
2223 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
2224 ROM_LOAD( "bubbles.snd", 0xf000, 0x1000, 0x689ce2aa )
2225 ROM_END
2226
2227
2228 ROM_START( splat )
2229 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
2230 ROM_LOAD( "splat.01", 0x0000, 0x1000, 0x1cf26e48 )
2231 ROM_LOAD( "splat.02", 0x1000, 0x1000, 0xac0d4276 )
2232 ROM_LOAD( "splat.03", 0x2000, 0x1000, 0x74873e59 )
2233 ROM_LOAD( "splat.04", 0x3000, 0x1000, 0x70a7064e )
2234 ROM_LOAD( "splat.05", 0x4000, 0x1000, 0xc6895221 )
2235 ROM_LOAD( "splat.06", 0x5000, 0x1000, 0xea4ab7fd )
2236 ROM_LOAD( "splat.07", 0x6000, 0x1000, 0x82fd8713 )
2237 ROM_LOAD( "splat.08", 0x7000, 0x1000, 0x7dded1b4 )
2238 ROM_LOAD( "splat.09", 0x8000, 0x1000, 0x71cbfe5a )
2239 ROM_LOAD( "splat.10", 0xd000, 0x1000, 0xd1a1f632 )
2240 ROM_LOAD( "splat.11", 0xe000, 0x1000, 0xca8cde95 )
2241 ROM_LOAD( "splat.12", 0xf000, 0x1000, 0x5bee3e60 )
2242
2243 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
2244 ROM_LOAD( "splat.snd", 0xf000, 0x1000, 0xa878d5f3 )
2245 ROM_END
2246
2247
2248 ROM_START( sinistar )
2249 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
2250 ROM_LOAD( "sinistar.01", 0x0000, 0x1000, 0xf6f3a22c )
2251 ROM_LOAD( "sinistar.02", 0x1000, 0x1000, 0xcab3185c )
2252 ROM_LOAD( "sinistar.03", 0x2000, 0x1000, 0x1ce1b3cc )
2253 ROM_LOAD( "sinistar.04", 0x3000, 0x1000, 0x6da632ba )
2254 ROM_LOAD( "sinistar.05", 0x4000, 0x1000, 0xb662e8fc )
2255 ROM_LOAD( "sinistar.06", 0x5000, 0x1000, 0x2306183d )
2256 ROM_LOAD( "sinistar.07", 0x6000, 0x1000, 0xe5dd918e )
2257 ROM_LOAD( "sinistar.08", 0x7000, 0x1000, 0x4785a787 )
2258 ROM_LOAD( "sinistar.09", 0x8000, 0x1000, 0x50cb63ad )
2259 ROM_LOAD( "sinistar.10", 0xe000, 0x1000, 0x3d670417 )
2260 ROM_LOAD( "sinistar.11", 0xf000, 0x1000, 0x3162bc50 )
2261
2262 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
2263 ROM_LOAD( "speech.ic7", 0xb000, 0x1000, 0xe1019568 )
2264 ROM_LOAD( "speech.ic5", 0xc000, 0x1000, 0xcf3b5ffd )
2265 ROM_LOAD( "speech.ic6", 0xd000, 0x1000, 0xff8d2645 )
2266 ROM_LOAD( "speech.ic4", 0xe000, 0x1000, 0x4b56a626 )
2267 ROM_LOAD( "sinistar.snd", 0xf000, 0x1000, 0xb82f4ddb )
2268 ROM_END
2269
2270
2271 ROM_START( sinista1 )
2272 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
2273 ROM_LOAD( "sinrev1.01", 0x0000, 0x1000, 0x3810d7b8 )
2274 ROM_LOAD( "sinistar.02", 0x1000, 0x1000, 0xcab3185c )
2275 ROM_LOAD( "sinrev1.03", 0x2000, 0x1000, 0x7c984ca9 )
2276 ROM_LOAD( "sinrev1.04", 0x3000, 0x1000, 0xcc6c4f24 )
2277 ROM_LOAD( "sinrev1.05", 0x4000, 0x1000, 0x12285bfe )
2278 ROM_LOAD( "sinrev1.06", 0x5000, 0x1000, 0x7a675f35 )
2279 ROM_LOAD( "sinrev1.07", 0x6000, 0x1000, 0xb0463243 )
2280 ROM_LOAD( "sinrev1.08", 0x7000, 0x1000, 0x909040d4 )
2281 ROM_LOAD( "sinrev1.09", 0x8000, 0x1000, 0xcc949810 )
2282 ROM_LOAD( "sinrev1.10", 0xe000, 0x1000, 0xea87a53f )
2283 ROM_LOAD( "sinrev1.11", 0xf000, 0x1000, 0x88d36e80 )
2284
2285 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
2286 ROM_LOAD( "speech.ic7", 0xb000, 0x1000, 0xe1019568 )
2287 ROM_LOAD( "speech.ic5", 0xc000, 0x1000, 0xcf3b5ffd )
2288 ROM_LOAD( "speech.ic6", 0xd000, 0x1000, 0xff8d2645 )
2289 ROM_LOAD( "speech.ic4", 0xe000, 0x1000, 0x4b56a626 )
2290 ROM_LOAD( "sinistar.snd", 0xf000, 0x1000, 0xb82f4ddb )
2291 ROM_END
2292
2293
2294 ROM_START( sinista2 )
2295 ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
2296 ROM_LOAD( "sinistar.01", 0x0000, 0x1000, 0xf6f3a22c )
2297 ROM_LOAD( "sinistar.02", 0x1000, 0x1000, 0xcab3185c )
2298 ROM_LOAD( "sinistar.03", 0x2000, 0x1000, 0x1ce1b3cc )
2299 ROM_LOAD( "sinistar.04", 0x3000, 0x1000, 0x6da632ba )
2300 ROM_LOAD( "sinistar.05", 0x4000, 0x1000, 0xb662e8fc )
2301 ROM_LOAD( "sinistar.06", 0x5000, 0x1000, 0x2306183d )
2302 ROM_LOAD( "sinistar.07", 0x6000, 0x1000, 0xe5dd918e )
2303 ROM_LOAD( "sinrev2.08", 0x7000, 0x1000, 0xd7ecee45 )
2304 ROM_LOAD( "sinistar.09", 0x8000, 0x1000, 0x50cb63ad )
2305 ROM_LOAD( "sinistar.10", 0xe000, 0x1000, 0x3d670417 )
2306 ROM_LOAD( "sinrev2.11", 0xf000, 0x1000, 0x792c8b00 )
2307
2308 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
2309 ROM_LOAD( "speech.ic7", 0xb000, 0x1000, 0xe1019568 )
2310 ROM_LOAD( "speech.ic5", 0xc000, 0x1000, 0xcf3b5ffd )
2311 ROM_LOAD( "speech.ic6", 0xd000, 0x1000, 0xff8d2645 )
2312 ROM_LOAD( "speech.ic4", 0xe000, 0x1000, 0x4b56a626 )
2313 ROM_LOAD( "sinistar.snd", 0xf000, 0x1000, 0xb82f4ddb )
2314 ROM_END
2315
2316
2317 ROM_START( blaster )
2318 ROM_REGION( 0x3c000, REGION_CPU1 )
2319 ROM_LOAD( "blaster.11", 0x04000, 0x2000, 0x6371e62f )
2320 ROM_LOAD( "blaster.12", 0x06000, 0x2000, 0x9804faac )
2321 ROM_LOAD( "blaster.17", 0x08000, 0x1000, 0xbf96182f )
2322 ROM_LOAD( "blaster.16", 0x0d000, 0x1000, 0x54a40b21 )
2323 ROM_LOAD( "blaster.13", 0x0e000, 0x2000, 0xf4dae4c8 )
2324
2325 ROM_LOAD( "blaster.15", 0x00000, 0x4000, 0x1ad146a4 )
2326 ROM_LOAD( "blaster.8", 0x10000, 0x4000, 0xf110bbb0 )
2327 ROM_LOAD( "blaster.9", 0x14000, 0x4000, 0x5c5b0f8a )
2328 ROM_LOAD( "blaster.10", 0x18000, 0x4000, 0xd47eb67f )
2329 ROM_LOAD( "blaster.6", 0x1c000, 0x4000, 0x47fc007e )
2330 ROM_LOAD( "blaster.5", 0x20000, 0x4000, 0x15c1b94d )
2331 ROM_LOAD( "blaster.14", 0x24000, 0x4000, 0xaea6b846 )
2332 ROM_LOAD( "blaster.7", 0x28000, 0x4000, 0x7a101181 )
2333 ROM_LOAD( "blaster.1", 0x2c000, 0x4000, 0x8d0ea9e7 )
2334 ROM_LOAD( "blaster.2", 0x30000, 0x4000, 0x03c4012c )
2335 ROM_LOAD( "blaster.4", 0x34000, 0x4000, 0xfc9d39fb )
2336 ROM_LOAD( "blaster.3", 0x38000, 0x4000, 0x253690fb )
2337
2338 ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the sound CPU */
2339 ROM_LOAD( "blaster.18", 0xf000, 0x1000, 0xc33a3145 )
2340
2341 ROM_REGION( 0x0800, REGION_PROMS ) /* color PROM data */
2342 ROM_LOAD( "blaster.col", 0x0000, 0x0800, 0xbac50bc4 )
2343 ROM_END
2344
2345
2346 ROM_START( tshoot )
2347 ROM_REGION( 0x48000, REGION_CPU1 )
2348 ROM_LOAD( "rom18.cpu", 0x0D000, 0x1000, 0xeffc33f1 ) /* IC55 */
2349 ROM_LOAD( "rom2.cpu", 0x0E000, 0x1000, 0xfd982687 ) /* IC9 */
2350 ROM_LOAD( "rom3.cpu", 0x0F000, 0x1000, 0x9617054d ) /* IC10 */
2351
2352 ROM_LOAD( "rom11.cpu", 0x10000, 0x2000, 0x60d5fab8 ) /* IC18 */
2353 ROM_LOAD( "rom9.cpu", 0x12000, 0x2000, 0xa4dd4a0e ) /* IC16 */
2354 ROM_LOAD( "rom7.cpu", 0x14000, 0x2000, 0xf25505e6 ) /* IC14 */
2355 ROM_LOAD( "rom5.cpu", 0x16000, 0x2000, 0x94a7c0ed ) /* IC12 */
2356
2357 ROM_LOAD( "rom17.cpu", 0x20000, 0x2000, 0xb02d1ccd ) /* IC26 */
2358 ROM_LOAD( "rom15.cpu", 0x22000, 0x2000, 0x11709935 ) /* IC24 */
2359
2360 ROM_LOAD( "rom10.cpu", 0x30000, 0x2000, 0x0f32bad8 ) /* IC17 */
2361 ROM_LOAD( "rom8.cpu", 0x32000, 0x2000, 0xe9b6cbf7 ) /* IC15 */
2362 ROM_LOAD( "rom6.cpu", 0x34000, 0x2000, 0xa49f617f ) /* IC13 */
2363 ROM_LOAD( "rom4.cpu", 0x36000, 0x2000, 0xb026dc00 ) /* IC11 */
2364
2365 ROM_LOAD( "rom16.cpu", 0x40000, 0x2000, 0x69ce38f8 ) /* IC25 */
2366 ROM_LOAD( "rom14.cpu", 0x42000, 0x2000, 0x769a4ae5 ) /* IC23 */
2367 ROM_LOAD( "rom13.cpu", 0x44000, 0x2000, 0xec016c9b ) /* IC21 */
2368 ROM_LOAD( "rom12.cpu", 0x46000, 0x2000, 0x98ae7afa ) /* IC19 */
2369
2370 /* sound CPU */
2371 ROM_REGION( 0x10000, REGION_CPU2 )
2372 ROM_LOAD( "rom1.cpu", 0xE000, 0x2000, 0x011a94a7 ) /* IC8 */
2373
2374 ROM_REGION( 0xc000, REGION_GFX1 | REGIONFLAG_DISPOSE )
2375 ROM_LOAD( "rom20.cpu", 0x00000, 0x2000, 0xc6e1d253 ) /* IC57 */
2376 ROM_LOAD( "rom21.cpu", 0x04000, 0x2000, 0x9874e90f ) /* IC58 */
2377 ROM_LOAD( "rom19.cpu", 0x08000, 0x2000, 0xb9ce4d2a ) /* IC41 */
2378 ROM_END
2379
2380
2381 ROM_START( joust2 )
2382 ROM_REGION( 0x48000, REGION_CPU1 )
2383 ROM_LOAD( "ic55_r1.cpu", 0x0D000, 0x1000, 0x08b0d5bd ) /* IC55 ROM02 */
2384 ROM_LOAD( "ic09_r2.cpu", 0x0E000, 0x1000, 0x951175ce ) /* IC09 ROM03 */
2385 ROM_LOAD( "ic10_r2.cpu", 0x0F000, 0x1000, 0xba6e0f6c ) /* IC10 ROM04 */
2386
2387 ROM_LOAD( "ic18_r1.cpu", 0x10000, 0x2000, 0x9dc986f9 ) /* IC18 ROM11 */
2388 ROM_LOAD( "ic16_r2.cpu", 0x12000, 0x2000, 0x56e2b550 ) /* IC16 ROM09 */
2389 ROM_LOAD( "ic14_r2.cpu", 0x14000, 0x2000, 0xf3bce576 ) /* IC14 ROM07 */
2390 ROM_LOAD( "ic12_r2.cpu", 0x16000, 0x2000, 0x5f8b4919 ) /* IC12 ROM05 */
2391
2392 ROM_LOAD( "ic26_r1.cpu", 0x20000, 0x2000, 0x4ef5e805 ) /* IC26 ROM19 */
2393 ROM_LOAD( "ic24_r1.cpu", 0x22000, 0x2000, 0x4861f063 ) /* IC24 ROM17 */
2394 ROM_LOAD( "ic22_r1.cpu", 0x24000, 0x2000, 0x421aafa8 ) /* IC22 ROM15 */
2395 ROM_LOAD( "ic20_r1.cpu", 0x26000, 0x2000, 0x3432ff55 ) /* IC20 ROM13 */
2396
2397 ROM_LOAD( "ic17_r1.cpu", 0x30000, 0x2000, 0x3e01b597 ) /* IC17 ROM10 */
2398 ROM_LOAD( "ic15_r1.cpu", 0x32000, 0x2000, 0xff26fb29 ) /* IC15 ROM08 */
2399 ROM_LOAD( "ic13_r2.cpu", 0x34000, 0x2000, 0x5f107db5 ) /* IC13 ROM06 */
2400
2401 ROM_LOAD( "ic25_r1.cpu", 0x40000, 0x2000, 0x47580af5 ) /* IC25 ROM18 */
2402 ROM_LOAD( "ic23_r1.cpu", 0x42000, 0x2000, 0x869b5942 ) /* IC23 ROM16 */
2403 ROM_LOAD( "ic21_r1.cpu", 0x44000, 0x2000, 0x0bbd867c ) /* IC21 ROM14 */
2404 ROM_LOAD( "ic19_r1.cpu", 0x46000, 0x2000, 0xb9221ed1 ) /* IC19 ROM12 */
2405
2406 /* sound CPU */
2407 ROM_REGION( 0x10000, REGION_CPU2 )
2408 ROM_LOAD( "ic08_r1.cpu", 0x0E000, 0x2000, 0x84517c3c ) /* IC08 ROM08 */
2409
2410 /* sound board */
2411 ROM_REGION( 0x70000, REGION_CPU3 )
2412 ROM_LOAD( "u04_r1.snd", 0x10000, 0x8000, 0x3af6b47d ) /* IC04 ROM23 */
2413 ROM_LOAD( "u19_r1.snd", 0x30000, 0x8000, 0xe7f9ed2e ) /* IC19 ROM24 */
2414 ROM_LOAD( "u20_r1.snd", 0x50000, 0x8000, 0xc85b29f7 ) /* IC20 ROM25 */
2415
2416 ROM_REGION( 0xc000, REGION_GFX1 | REGIONFLAG_DISPOSE )
2417 ROM_LOAD( "ic57_r1.vid", 0x00000, 0x4000, 0x572c6b01 ) /* IC57 ROM20 */
2418 ROM_LOAD( "ic58_r1.vid", 0x04000, 0x4000, 0xaa94bf05 ) /* IC58 ROM21 */
2419 ROM_LOAD( "ic41_r1.vid", 0x08000, 0x4000, 0xc41e3daa ) /* IC41 ROM22 */
2420 ROM_END
2421
2422
2423 ROM_START( mysticm )
2424 ROM_REGION( 0x48000, REGION_CPU1 )
2425 ROM_LOAD( "mm02_2.a09", 0x0E000, 0x1000, 0x3a776ea8 ) /* IC9 */
2426 ROM_LOAD( "mm03_2.a10", 0x0F000, 0x1000, 0x6e247c75 ) /* IC10 */
2427
2428 ROM_LOAD( "mm11_1.a18", 0x10000, 0x2000, 0xf537968e ) /* IC18 */
2429 ROM_LOAD( "mm09_1.a16", 0x12000, 0x2000, 0x3bd12f6c ) /* IC16 */
2430 ROM_LOAD( "mm07_1.a14", 0x14000, 0x2000, 0xea2a2a68 ) /* IC14 */
2431 ROM_LOAD( "mm05_1.a12", 0x16000, 0x2000, 0xb514eef3 ) /* IC12 */
2432
2433 ROM_LOAD( "mm18_1.a26", 0x20000, 0x2000, 0x9b391a81 ) /* IC26 */
2434 ROM_LOAD( "mm16_1.a24", 0x22000, 0x2000, 0x399e175d ) /* IC24 */
2435 ROM_LOAD( "mm14_1.a22", 0x24000, 0x2000, 0x191153b1 ) /* IC22 */
2436
2437 ROM_LOAD( "mm10_1.a17", 0x30000, 0x2000, 0xd6a37509 ) /* IC17 */
2438 ROM_LOAD( "mm08_1.a15", 0x32000, 0x2000, 0x6f1a64f2 ) /* IC15 */
2439 ROM_LOAD( "mm06_1.a13", 0x34000, 0x2000, 0x2e6795d4 ) /* IC13 */
2440 ROM_LOAD( "mm04_1.a11", 0x36000, 0x2000, 0xc222fb64 ) /* IC11 */
2441
2442 ROM_LOAD( "mm17_1.a25", 0x40000, 0x2000, 0xd36f0a96 ) /* IC25 */
2443 ROM_LOAD( "mm15_1.a23", 0x42000, 0x2000, 0xcd5d99da ) /* IC23 */
2444 ROM_LOAD( "mm13_1.a21", 0x44000, 0x2000, 0xef4b79db ) /* IC21 */
2445 ROM_LOAD( "mm12_1.a19", 0x46000, 0x2000, 0xa1f04bf0 ) /* IC19 */
2446
2447 /* sound CPU */
2448 ROM_REGION( 0x10000, REGION_CPU2 )
2449 ROM_LOAD( "mm01_1.a08", 0x0E000, 0x2000, 0x65339512 ) /* IC8 */
2450
2451 ROM_REGION( 0xc000, REGION_GFX1 | REGIONFLAG_DISPOSE )
2452 ROM_LOAD( "mm20_1.b57", 0x00000, 0x2000, 0x5c0f4f46 ) /* IC57 */
2453 ROM_LOAD( "mm21_1.b58", 0x04000, 0x2000, 0xcb90b3c5 ) /* IC58 */
2454 ROM_LOAD( "mm19_1.b41", 0x08000, 0x2000, 0xe274df86 ) /* IC41 */
2455 ROM_END
2456
2457
2458 ROM_START( inferno )
2459 ROM_REGION( 0x48000, REGION_CPU1 )
2460 ROM_LOAD( "ic9.inf", 0x0E000, 0x1000, 0x1a013185 ) /* IC9 */
2461 ROM_LOAD( "ic10.inf", 0x0F000, 0x1000, 0xdbf64a36 ) /* IC10 */
2462
2463 ROM_LOAD( "ic18.inf", 0x10000, 0x2000, 0x95bcf7b1 ) /* IC18 */
2464 ROM_LOAD( "ic16.inf", 0x12000, 0x2000, 0x8bc4f935 ) /* IC16 */
2465 ROM_LOAD( "ic14.inf", 0x14000, 0x2000, 0xa70508a7 ) /* IC14 */
2466 ROM_LOAD( "ic12.inf", 0x16000, 0x2000, 0x7ffb87f9 ) /* IC12 */
2467
2468 ROM_LOAD( "ic17.inf", 0x30000, 0x2000, 0xb4684139 ) /* IC17 */
2469 ROM_LOAD( "ic15.inf", 0x32000, 0x2000, 0x128a6ad6 ) /* IC15 */
2470 ROM_LOAD( "ic13.inf", 0x34000, 0x2000, 0x83a9e4d6 ) /* IC13 */
2471 ROM_LOAD( "ic11.inf", 0x36000, 0x2000, 0xc2e9c909 ) /* IC11 */
2472
2473 ROM_LOAD( "ic25.inf", 0x40000, 0x2000, 0x103a5951 ) /* IC25 */
2474 ROM_LOAD( "ic23.inf", 0x42000, 0x2000, 0xc04749a0 ) /* IC23 */
2475 ROM_LOAD( "ic21.inf", 0x44000, 0x2000, 0xc405f853 ) /* IC21 */
2476 ROM_LOAD( "ic19.inf", 0x46000, 0x2000, 0xade7645a ) /* IC19 */
2477
2478 /* sound CPU */
2479 ROM_REGION( 0x10000, REGION_CPU2 )
2480 ROM_LOAD( "ic8.inf", 0x0E000, 0x2000, 0x4e3123b8 ) /* IC8 */
2481
2482 ROM_REGION( 0xc000, REGION_GFX1 | REGIONFLAG_DISPOSE )
2483 ROM_LOAD( "ic57.inf", 0x00000, 0x2000, 0x65a4ef79 ) /* IC57 */
2484 ROM_LOAD( "ic58.inf", 0x04000, 0x2000, 0x4bb1c2a0 ) /* IC58 */
2485 ROM_LOAD( "ic41.inf", 0x08000, 0x2000, 0xf3f7238f ) /* IC41 */
2486 ROM_END
2487
2488
2489
2490 /*************************************
2491 *
2492 * Game drivers
2493 *
2494 *************************************/
2495
2496 GAME( 1980, defender, 0, defender, defender, defender, ROT0, "Williams", "Defender (Red label)" )
2497 GAME( 1980, defendg, defender, defender, defender, defender, ROT0, "Williams", "Defender (Green label)" )
2498 GAME( 1980, defendw, defender, defender, defender, defender, ROT0, "Williams", "Defender (White label)" )
2499 GAMEX(1980, defndjeu, defender, defender, defender, defndjeu, ROT0, "Jeutel", "Defender ? (bootleg)", GAME_NOT_WORKING )
2500 GAME( 1980, defcmnd, defender, defender, defender, defender, ROT0, "bootleg", "Defense Command (set 1)" )
2501 GAME( 1981, defence, defender, defender, defender, defender, ROT0, "Outer Limits", "Defence Command" )
2502
2503 GAME( 1980, mayday, 0, defender, defender, mayday, ROT0, "<unknown>", "Mayday (set 1)" )
2504 GAME( 1980, maydaya, mayday, defender, defender, mayday, ROT0, "<unknown>", "Mayday (set 2)" )
2505
2506 GAME( 1981, colony7, 0, defender, colony7, colony7, ROT270, "Taito", "Colony 7 (set 1)" )
2507 GAME( 1981, colony7a, colony7, defender, colony7, colony7, ROT270, "Taito", "Colony 7 (set 2)" )
2508
2509 GAME( 1981, stargate, 0, williams, stargate, stargate, ROT0, "Williams", "Stargate" )
2510
2511 GAME( 1982, robotron, 0, williams, robotron, robotron, ROT0, "Williams", "Robotron (Solid Blue label)" )
2512 GAME( 1982, robotryo, robotron, williams, robotron, robotron, ROT0, "Williams", "Robotron (Yellow/Orange label)" )
2513
2514 GAME( 1982, joust, 0, williams, joust, joust, ROT0, "Williams", "Joust (White/Green label)" )
2515 GAME( 1982, joustr, joust, williams, joust, joust, ROT0, "Williams", "Joust (Solid Red label)" )
2516 GAME( 1982, joustwr, joust, williams, joust, joust, ROT0, "Williams", "Joust (White/Red label)" )
2517
2518 GAME( 1982, bubbles, 0, williams, bubbles, bubbles, ROT0, "Williams", "Bubbles" )
2519 GAME( 1982, bubblesr, bubbles, williams, bubbles, bubbles, ROT0, "Williams", "Bubbles (Solid Red label)" )
2520
2521 GAME( 1982, splat, 0, williams, splat, splat, ROT0, "Williams", "Splat!" )
2522
2523 GAME( 1982, sinistar, 0, sinistar, sinistar, sinistar, ROT270, "Williams", "Sinistar (revision 3)" )
2524 GAME( 1982, sinista1, sinistar, sinistar, sinistar, sinistar, ROT270, "Williams", "Sinistar (prototype version)" )
2525 GAME( 1982, sinista2, sinistar, sinistar, sinistar, sinistar, ROT270, "Williams", "Sinistar (revision 2)" )
2526
2527 GAME( 1983, blaster, 0, blaster, blaster, blaster, ROT0, "Williams", "Blaster" )
2528
2529 GAME( 1983, mysticm, 0, williams2,mysticm, mysticm, ROT0, "Williams", "Mystic Marathon" )
2530 GAME( 1984, tshoot, 0, williams2,tshoot, tshoot, ROT0, "Williams", "Turkey Shoot" )
2531 GAMEX(1984, inferno, 0, williams2,inferno, inferno, ROT0, "Williams", "Inferno", GAME_IMPERFECT_SOUND )
2532 GAME( 1986, joust2, 0, joust2, joust2, joust2, ROT270, "Williams", "Joust 2 - Survival of the Fittest (set 1)" )
2533