1 /***************************************************************************
2 
3 Taito Z System [twin 68K with optional Z80]
4 -------------------------------------------
5 
6 David Graves
7 
8 (this is based on the F2 driver by Bryan McPhail, Brad Oliver, Andrew Prime,
9 Nicola Salmoria. Thanks to Richard Bush and the Raine team, whose open
10 source was very helpful in many areas particularly the sprites.)
11 
12 - Changes Log -
13 
14 01-26-02 Added Enforce
15 10-17-01 TC0150ROD support improved (e.g. Aquajack)
16 09-01-01 Preliminary TC0150ROD support
17 08-28-01 Fixed uncentered steer inputs, Nightstr controls
18 05-27-01 Inputs through taitoic ioc routines, contcirc subwoofer filter
19 04-12-01 Centered steering AD inputs, added digital steer
20 02-18-01 Added Spacegun gunsights (Insideoutboy)
21 
22 
23 				*****
24 
25 The Taito Z system has a number of similarities with the Taito F2 system,
26 and uses some of the same custom Taito components.
27 
28 TaitoZ supports 5 separate layers of graphics - one 64x64 tiled scrolling
29 background plane of 8x8 tiles, a similar foreground plane, another optional
30 plane used for drawing a road (e.g. Chasehq), a sprite plane [with varying
31 properties], and a text plane with character definitions held in ram.
32 
33 (Double Axle has four rather than two background planes, and they contain
34 32x32 16x16 tiles. This is because it uses a TC0480SCP rather than the
35 older TC0100SCN tilemap generator used in previous Taito Z games. The
36 hardware for Taito's Super Chase was a further development of this, with a
37 68020 for main CPU and Ensoniq sound - standard features of Taito's F3
38 system. Taito's F3 system superceded both Taito B and F2 systems, but the
39 Taito Z system was enhanced with F3 features and continued in games like
40 Super Chase and Under Fire up to the mid 1990s.)
41 
42 Each Taito Z game used one of the following sprite systems - allowing the
43 use of big sprites with minimal CPU overhead [*]:
44 
45 (i)  16x8 tiles aggregated through a spritemap rom into 128x128 sprites
46 (ii) 16x16 tiles aggregated through a spritemap rom into three sprite sizes:
47       128 x 128
48        64 x 128
49        32 x 128
50 (iii) 16x8 tiles aggregated through a spritemap rom into 64x64 sprites
51 
52 [* in Taito B/F2/F3 the CPU has to keep track of all the 16x16 tiles within
53 a big sprite]
54 
55 The Z system has twin 68K CPUs which communicate via shared ram.
56 Typically they share $4000 bytes, but Spacegun / Dbleaxle share $10000.
57 
58 The first 68000 handles screen, palette and sprites, and sometimes other
59 jobs [e.g. inputs; in one game it also handles the road].
60 
61 The second 68000 may handle functions such as:
62 	(i)  inputs/dips, sound (through a YM2610) and/or
63 	(ii) the "road" that's in every TaitoZ game except Spacegun.
64 
65 Most Z system games have a Z80 as well, which takes over sound duties.
66 Commands are written to it by the one of the 68000s.
67 
68 The memory map for the Taito Z games is similar in outline but usually
69 shuffled around: some games have different i/o because of analogue
70 sticks, light guns, cockpit hardware etc.
71 
72 
73 Contcirc board (B.Troha)
74 --------------
75 
76 Taito Sound PCB J1100137A K1100314A:
77 
78   Zilog Z0840004PSC     XTAL OSC          Yamaha
79   Z80 CPU               16.000 MHz        YM2610
80 
81   TC0060DCA              B33-30
82   TC0060DCA
83                                             TC0140SYT
84 
85                                           B33-08
86                                           B33-09
87                                           B33-10
88 
89 Notes: B33-30 is a OKI M27512-15
90 
91 
92 Taito Video Baord PCB J1100139A K1100316A:
93 
94  B33-03     TC0050VDZ     TC0050VDZ                       TC0050VDZ
95  B33-04
96  B33-05
97  B33-06                      TC0020VAR
98 
99      B14-31
100 
101  B33-07
102 
103                       B14-30
104 
105 Notes: B14-31 is 27HC64 (Sharp LH5763J-70)
106        B14-30 is OKI M27512-15
107 DG:    TC0020VAR + 3xTC0050VDZ may be precursor to 370MSO/300FLA combo
108 
109 
110 Taito CPU Board J110138A K1100315A:
111 
112                                             XTAL OSC  XTAL OSC
113                                             24.000MHz 26.686MHz
114 
115                                                  B33-02
116 B33-01
117                   TC0150ROD                 TC0100SCN        NEC D43256C-10L
118                                                              NEC D43256C-10L
119 
120                                                       TC0110PCR
121 
122                                           TC0070RGB
123  MC6800P12 IC-25 MC68000P12 IC-35
124            IC-26            IC 36           TC0040IOC
125                                               DSWA  DSWB
126 
127 Notes: IC-41 Is 271001 Listed as JH1 (unsocketed / unused)
128        IC-42 Is 271001 Listed as JL1 (unsocketed / unused)
129 
130 
131 
132 Aquajack top board (Guru)
133 ------------------
134 
135 68000-12 x 2
136 OSC: 26.686, 24.000, 16.000
137 I dont see any recognisable sound chips, but I do see a YM3016F
138 
139 TCO110PCR
140 TCO220IOC
141 TCO100SCN
142 TCO140SYT
143 TCO3200BR
144 TCO150ROD
145 TCO020VAR
146 TCO050VDZ
147 TCO050VDZ
148 TCO050VDZ
149 
150 ChaseHQ (Guru)
151 -------
152 
153 Video board
154 -----------
155                  Pal  b52-28d  b52-28b
156                  Pal      17d      17b
157                  Pal      28c      28a
158                  Pal      77c      17a
159 
160 b52-30
161     34
162     31
163     35
164     32                     b52-27  pal20       TC020VAR  b52-03  b52-127
165     36                         51                        b52-126  b52-124 Pal
166                                50
167                                49                  Pal   b52-125
168     33   Pal  b52-19                                      Pal   b52-25
169     37    38                 b52-18b                      Pal   122
170          Pal      Pal        b52-18a                      Pal   123
171          b52-20   b52-21     b52-18
172 
173 
174 CPU board
175 ---------
176                                                     b52-119 Pal
177                                                     b52-118 Pal
178                                 68000-12
179                             b52-131    129
180 b52-113                     b52-130    136
181 b52-114
182 b52-115                 TC0140SYT
183 b52-116
184 
185              YM2610                          b52-29
186                                                       26.686MHz
187                                                       24 MHz
188            16MHz                             TC0100SCN
189 
190        Pal b52-121
191        Pal b52-120                      TC0170ABT   TC0110PCR    b52-01
192           68000-12
193                                         b52-06
194          TC0040IOC  b52-133 b52-132  TC0150ROD    b52-28
195 
196 
197 
198 ChaseHQ2(SCI) custom chips (Guru) (DG: same as Bshark except 0140SYT?)
199 --------------------------
200 
201 CPU PCB:
202 TC0170ABT
203 TC0150ROD
204 TC0140SYT
205 TC0220IOC
206 
207 c09-23.rom is a
208 PROM type AM27S21PC, location looks like this...
209 
210 -------------
211 |   68000   |
212 -------------
213 
214 c09-25    c09-26
215 c09-24
216 
217 |-------|
218 |       |
219 | ABT   |
220 |       |
221 |-------|
222 
223 c09-23     c09-07
224 
225 |-------|
226 |       |
227 | ROD   |
228 |       |
229 |-------|
230 
231 c09-32   c09-33
232 -------------
233 |   68000   |
234 -------------
235 
236 c09-21  c09-22
237 
238 Lower PCB:
239 TCO270MOD
240 TC0300FLA
241 TC0260DAR
242 TC0370MSO
243 TC0100SCN
244 TC0380BSH
245 
246 c09-16.rom is located next to
247 c09-05, which is located next to Taito TCO370MSO.
248 
249 SCI (Guru)
250 Taito, 1989
251 
252 Controls for this game are one wheel, one switch for shift lever (used for high gear)
253 and one switch each for accelerate, brake, gun and nitro.
254 
255 Note that the gear is low by default and is shifted to high gear by a lever which
256 holds the switch closed. The lever is not self-centering or spring-loaded to go back to
257 low. The lever must be physically shifted back to low when required.
258 
259 
260 PCB Layout
261 ----------
262 
263 CPU PCB  K1100490A  J1100209A
264 |----------------------------------------------------|
265 | 24MHz  C09-14.42  TCO140SYT   C09-22.3   C09-21.2  |
266 |        C09-13.43                    68000          |
267 |        C09-12.44              C09-33.6   C09-32.5  |
268 |        YM2610     C09-15.29   6264       6264      |
269 | YM3016 TL074 TL074  Z80                            |
270 |                   C09-34.31   6264       TCO150ROD |
271 |D             VOL    6264      6264                 |
272 |                                                    |
273 |        MB3735                 C09-07.15  C09-23.14 |
274 |          D633        16MHz                         |
275 |   62064             6264      6264       TCO170ABT |
276 |                    C09-28.37  6264                 |
277 |G  62003            C09-36.38           C09-24.22   |
278 |        TCO220IOC    6264     C09-26.26 C09-25.25   |
279 |                    C09-30.40        68000          |
280 |        DSWB DSWA   C09-31.41                       |
281 |----------------------------------------------------|
282 
283 Notes:
284       Clocks:
285              68000 : 16.000MHz (both)
286              Z80   : 4.000MHz
287              YM2610: 8.000MHz
288 
289       Vsync: 60Hz
290 
291       Misc parts:
292                  MB3735: 15w Power AMP with dual output (used for stereo sounds ; CH1/CH2)
293                  TL074 : JFET Lo Noise Quad OP Amp
294                  6264  : 8k x8 SRAM
295                TD62064 : NPN 50V 1.5A Quad Darlinton Switch (for driving coin meters)
296                TD62003 : PNP 50V 0.5A Quad Darlinton Switch (for driving coin meters)
297                   D633 : Si NPN POWER transistor used in 68k reset circuit (TIP122 compatible)
298       ROMs:
299             C09-12 thru C09-14 - MB834100
300             C09-07             - HN62404
301             C09-32 thru C09-33 - AM27C512
302             C09-30 thru C09-31 - TC571000
303             C09-38 and C09-36  - TC571000
304             C09-23             - AM27S21
305             C09-22 and C09-26  - MMI PAL16L8B
306             C09-21 and
307             C09-24 thru C09-25 - MMI PAL20L8B
308 
309 PINOUT CONNECTOR D (Note: All pinouts typed from an original Taito document)
310 ------------------
311 
312 1  +24V
313 2  +24V
314 3  GND
315 4  GND
316 5  D OUT
317 
318 Question: +24V and D OUT are for?
319 
320 
321 PINOUT CONNECTOR G (the meanings of some of these is a bit vague - PTL OUTx, DRV0, HANDLE CENTER SW etc)
322 
323          PARTS     |    SOLDER
324     ---------------|---------------
325              GND  1|A GND
326              GND  2|B GND
327              +5V  3|C +5V
328              +5V  4|D +5V
329              -5V  5|E -5V
330             +12V  6|F +12V
331              KEY  7|H KEY
332        COUNTER A  8|J COUNTER B
333      C LOCKOUT A  9|K C LOCKOUT B
334         SPK CH1+ 10|L SPK CH2+
335         SPK CH1- 11|M SPK CH2-
336          VOLUME2 12|N VOLUME1
337          VOLUME3 13|P MUTE
338              GND 14|R SERVICE SW
339              GND 15|S BRAKE SW0
340           COIN A 16|T COIN B
341        BRAKE SW1 17|U BRAKE SW2
342         NITRO SW 18|V TILT
343 HANDLE CENTER SW 19|W START SW
344         SHIFT SW 20|X ACCEL SW0
345        ACCEL SW1 21|Y ACCEL SW2
346         PTL OUT1 22|Z PTL OUT2
347             DRV0 23|a GUN SW
348          PADL X1 24|b PADL X2
349          PADL Y1 25|c PADL Y2
350        HANDLE Z1 26|d HANDLE Z2
351              GND 27|e GND
352              GND 28|f GND
353 
354 Question: What hardware is used for steering and where is it connected? It doesn't seem to use
355           a regular potentiometer for the steering??
356 
357 
358 PCB Layout
359 ----------
360 
361 VIDEO PCB  K1100491A  J1100210A
362 |-----------------------------------------------------|
363 |          TCO370MSO  C09-17.24  43256                |
364 |H                    C09-18.25  43256                |
365 |          C09-05.16                                  |
366 |          C09-16.17  26.686MHz  TCO100SCN  6264      |
367 |   C1815                                             |
368 |V  C1815                                   6264      |
369 |   C1815  TCO260DAR             C09-06.37            |
370 |6264                                                 |
371 |                                                     |
372 |                                TCO380BSH   C09-19.67|
373 |TCO270MOD TCO300FLA                                  |
374 |                                                     |
375 |43256    43256   43256   43256   C09-04.52  C09-20.71|
376 |43256    43256   43256   43256   C09-03.53           |
377 |43256    43256   43256   43256   C09-02.54           |
378 |43256    43256   43256   43256   C09-01.55           |
379 |-----------------------------------------------------|
380 
381 Notes:
382       ROMs:
383             C09-01 thru C09-05 - 234000
384             C09-06             - HN62404
385             C09-17 thru C09-18 - MMI 63S441
386             C09-19             - MMI PAL16L8B
387             C09-20             - AM27S21
388 
389       Misc parts:
390                 6264: 8k x8 SRAM
391                43256: 32k x8 SRAM
392                C1815: transistor used for driving RGB
393 
394 PINOUT CONNECTOR H
395 ------------------
396 
397 1  GND
398 2  GND
399 3  GND
400 4  GND
401 5  +5V
402 6  +5V
403 7  +5V
404 8  +5V
405 9  -5V
406 10 POST
407 11 +12V
408 12 NC
409 
410 
411 PINOUT CONNECTOR V
412 ------------------
413 
414 1  GND
415 2  RED
416 3  GREEN
417 4  BLUE
418 5  SYNC
419 6  NC
420 7  NC
421 
422 
423 
424 
425 
426 BShark custom chips
427 -------------------
428 
429 TC0220IOC (known io chip)
430 TC0260DAR (known palette chip)
431 TC0400YSC  substitute for TC0140SYT when 68K writes directly to YM2610 ??
432 TC0170ABT  = same in Dblaxle
433 TC0100SCN (known tilemap chip)
434 TC0370MSO  = same in Dblaxle, Motion Objects ?
435 TC0300FLA  = same in Dblaxle
436 TC0270MOD  ???
437 TC0380BSH  ???
438 TC0150ROD (known road generator chip)
439 
440 
441 DblAxle custom chip info
442 ------------------------
443 
444 TC0150ROD is next to road lines gfx chip [c78-09] but also
445 c78-15, an unused 256 byte rom. Perhaps this contains color
446 info for the road lines? Raine makes an artificial "pal map"
447 for the road, AFAICS.
448 
449 TC0170ABT is between 68000 CPUA and the TC0140SYT. Next to
450 that is the Z80A, the YM2610, and the three adpcm roms.
451 
452 On the graphics board we have the TC0480SCP next to its two
453 scr gfx roms: c78-10 & 11.
454 
455 The STY object mapping rom is next to c78-25, an unused
456 0x10000 byte rom which compresses by 98%. To right of this
457 are TC0370MSO (motion objects?), then TC0300FLA.
458 
459 Below c78-25 are two unused 1K roms: c84-10 and c84-11.
460 Below right is another unused 256 byte rom, c78-21.
461 (At the bottom are the 5 obj gfx roms.)
462 
463 K11000635A
464 ----------
465  43256   c78-11 SCN1 CHR
466  43256   c78-10 SCN0 CHR   TC0480SCP
467 
468  c78-04
469  STY ROM
470             c78-25   TC0370MSO   TC0300FLA
471             c84-10
472             c84-11                                      c78-21
473 
474                        43256 43256 43256 43256
475                  43256 43256 43256 43256 43256
476                  43256 43256 43256 43256 43256
477                                    43256 43256
478 
479                              c78-05L
480             c78-06 OBJ1
481                              c78-05H
482 
483             c78-08 OBJ3      c78-07 OBJ2
484 
485 Power Wheels
486 ------------
487 
488 Cpu PCB
489 
490 CPU:	68000-16 x2
491 Sound:	Z80-A
492 	YM2610
493 OSC:	32.000MHz
494 Chips:	TC0140SYT
495 	TC0150ROD
496 	TC0170ABT
497 	TC0310FAM
498 	TC0510NIO
499 
500 
501 Video PCB
502 
503 OSC:	26.686MHz
504 Chips:	TC0260DAR
505 	TC0270MOD
506 	TC0300FLA
507 	TC0370MSO
508 	TC0380BSH
509 	TC0480SCP
510 
511 
512 LAN interface board
513 
514 OSC:	40.000MHz
515 	16.000MHz
516 Chips:	uPD72105C
517 
518 
519 TODO Lists
520 ==========
521 
522 Add cpu idle time skip to improve speed.
523 
524 Is the no-Z80 sound handling correct: some voices in Bshark
525 aren't that clear.
526 
527 Make taitosnd cpu-independent so we can restore Z80 to CPU3.
528 
529 Cockpit hardware
530 
531 DIPs - e.g. coinage
532 
533 Sprite zooming - dimensions may be got from the unused 64K rom
534 on the video board (it's in the right place for it, both with
535 Contcirc video chips and the chips used on later boards). These
536 64K roms compare as follows - makes sense as these groups
537 comprise the three sprite layout types used in TaitoZ games:
538 
539    Contcirc / Enforce      =IDENTICAL
540    ChaseHQ / Nightstr      =IDENTICAL
541    Bshark / SCI / Dblaxle  =IDENTICAL
542 
543    Missing from Aquajack / Spacegun dumps (I would bet they are
544    the same as Bshark). Can anyone dump these two along with any
545    proms on the video board?
546 
547 
548 Continental Circus
549 ------------------
550 
551 Road priority incompletely understood - e.g. start barrier should
552 be darkening LH edge of road as well as RH edge.
553 
554 The 8 level accel / brake should be possible to control with
555 analogue pedal. Don't think mame can do this.
556 
557 Junk (?) stuff often written in high byte of sound word.
558 
559 Speculative YM2610 a/b/c channel filtering as these may be
560 outputs to subwoofer (vibration). They sound better, anyway.
561 
562 
563 Chasehq
564 -------
565 
566 Motor CPU: appears to be identical to one in Topspeed.
567 
568 [Used to have junk sprites when you reach criminal car (the 'criminals
569 here' sprite): two bits above tile number are used. Are these
570 meaningless, or is some effect missing?]
571 
572 
573 Enforce
574 -------
575 
576 Test mode - SHIFT: LO/HI is not understood (appears to depend on Demo
577 Sound DSW)
578 
579 Landscape in the background can be made to scroll rapidly with DSW.
580 True to original?
581 
582 Some layer offsets are out a little.
583 
584 
585 Battle Shark
586 ------------
587 
588 Is road on the road stages correct? Hard to tell.
589 
590 Does the original have the "seeking" crosshair effect, making it a
591 challenge to control?
592 
593 
594 SCI
595 ---
596 
597 Road seems ok, but are the green bushes in round 1 a little too far
598 to the edge of the interroad verge?
599 
600 Sprite frames were plotted in opposite order so flickered. Reversing
601 this has lost us alternate frames: probably need to buffer sprite
602 ram by one frame to solve this?
603 
604 
605 Night Striker
606 -------------
607 
608 Road A/B priority problems will manifest in the choice tunnels with,
609 one or the other having higher priority in top and bottom halves. Can
610 someone provide a sequence of screenshots showing exactly what happens
611 at the road split point.
612 
613 Strange page in test mode which lets you alter all sorts of settings,
614 may relate to sit-in cockpit version. Can't find a dip that disables
615 this.
616 
617 Does a variety of writes to TC0220IOC offset 3... significant?
618 
619 
620 Aqua Jack
621 ---------
622 
623 Sprites left on screen under hiscore table. Deliberate? Or is there
624 a sprite disable bit somewhere.
625 
626 Should road body be largely transparent as I've implemented it?
627 
628 Sprite/sprite priorities often look bad. Sprites go to max size for
629 a frame before they explode - surely a bug.
630 
631 Hangs briefly fairly often without massive cpu interleaving (500).
632 Keys aren't very responsive in test mode.
633 
634 The problem code is this:
635 
636 CPUA
637 $1fe02 hangs waiting for ($6002,A5) in shared ram to be zero.
638 
639 CPUB
640 $1056 calls $11ea routine which starts by setting ($6002,A5) non-
641 zero. At end (after $1218 waiting for a bit from sound comm port)
642 it alters ($6002,A5) to zero (but this value lasts briefly!).
643 
644 Unless context rapidly switches back to cpua this change is missed
645 because $11ea gets called again *very* rapidly at times when sounds
646 are being written [that's when the problem manifested].
647 
648 $108a-c2 reads 0x20 bytes from unmapped area, not sure
649 what it's doing. Perhaps this machine had some optional
650 exotic input device...
651 
652 
653 Spacegun
654 --------
655 
656 Problem with the zoomed sprites not matching up very well
657 when forming the background. They jerk a bit relative to
658 each other... probably a cpu sync thing, perhaps also some
659 fine-tuning required on the zoomed sprite dimension calcs.
660 
661 Light gun interrupt timing arbitrary.
662 
663 
664 Double Axle
665 -----------
666 
667 Road occasionally has incorrectly unclipped line appearing at top
668 (ice stage). Also road 'ghost' often remains on screen - also an
669 interrupt issue I presume.
670 
671 Double Axle has poor sound: one ADPCM rom should be twice as long?
672 [In log we saw stuff like this, suggesting extra ADPCM rom needed:
673 YM2610: ADPCM-A end out of range: $001157ff
674 YM2610: ADPCM-A start out of range: $00111f00]
675 
676 Various sprites go missing e.g. mountains half way through cross
677 country course. Fall off the ledge and crash and you will see
678 the explosion sprites make other mountain sprites vanish, as
679 though their entries in spriteram are being overwritten. (Perhaps
680 an int6 timing/number issue: sprites seem to be ChaseHQ2ish with
681 a spriteframe toggle - currently this never changes which may be
682 wrong.)
683 
684 ***************************************************************************/
685 
686 #include "driver.h"
687 #include "state.h"
688 #include "cpu/m68000/m68000.h"
689 #include "machine/eeprom.h"
690 #include "vidhrdw/generic.h"
691 #include "vidhrdw/taitoic.h"
692 #include "sndhrdw/taitosnd.h"
693 
694 VIDEO_START( taitoz );
695 VIDEO_START( spacegun );
696 
697 VIDEO_UPDATE( contcirc );
698 VIDEO_UPDATE( chasehq );
699 VIDEO_UPDATE( bshark );
700 VIDEO_UPDATE( sci );
701 VIDEO_UPDATE( aquajack );
702 VIDEO_UPDATE( spacegun );
703 VIDEO_UPDATE( dblaxle );
704 
705 READ16_HANDLER ( sci_spriteframe_r );
706 WRITE16_HANDLER( sci_spriteframe_w );
707 
708 //  These TC0150ROD prototypes will go in taitoic.h  //
709 READ16_HANDLER ( TC0150ROD_word_r );	/* Road generator */
710 WRITE16_HANDLER( TC0150ROD_word_w );
711 
712 static UINT16 cpua_ctrl = 0xff;
713 static int sci_int6 = 0;
714 static int dblaxle_int6 = 0;
715 static int ioc220_port = 0;
716 static data16_t eep_latch = 0;
717 
718 //static data16_t *taitoz_ram;
719 //static data16_t *motor_ram;
720 
721 static size_t taitoz_sharedram_size;
722 data16_t *taitoz_sharedram;	/* read externally to draw Spacegun crosshair */
723 
READ16_HANDLER(sharedram_r)724 static READ16_HANDLER( sharedram_r )
725 {
726 	return taitoz_sharedram[offset];
727 }
728 
WRITE16_HANDLER(sharedram_w)729 static WRITE16_HANDLER( sharedram_w )
730 {
731 	COMBINE_DATA(&taitoz_sharedram[offset]);
732 }
733 
parse_control(void)734 static void parse_control(void)
735 {
736 	/* bit 0 enables cpu B */
737 	/* however this fails when recovering from a save state
738 	   if cpu B is disabled !! */
739 	cpu_set_reset_line(2,(cpua_ctrl &0x1) ? CLEAR_LINE : ASSERT_LINE);
740 
741 }
742 
parse_control_noz80(void)743 static void parse_control_noz80(void)
744 {
745 	/* bit 0 enables cpu B */
746 	/* however this fails when recovering from a save state
747 	   if cpu B is disabled !! */
748 	cpu_set_reset_line(1,(cpua_ctrl &0x1) ? CLEAR_LINE : ASSERT_LINE);
749 
750 }
751 
WRITE16_HANDLER(cpua_ctrl_w)752 static WRITE16_HANDLER( cpua_ctrl_w )	/* assumes Z80 sandwiched between 68Ks */
753 {
754 	if ((data &0xff00) && ((data &0xff) == 0))
755 		data = data >> 8;	/* for Wgp */
756 	cpua_ctrl = data;
757 
758 	parse_control();
759 
760 	logerror("CPU #0 PC %06x: write %04x to cpu control\n",activecpu_get_pc(),data);
761 }
762 
WRITE16_HANDLER(cpua_noz80_ctrl_w)763 static WRITE16_HANDLER( cpua_noz80_ctrl_w )	/* assumes no Z80 */
764 {
765 	if ((data &0xff00) && ((data &0xff) == 0))
766 		data = data >> 8;	/* for Wgp */
767 	cpua_ctrl = data;
768 
769 	parse_control_noz80();
770 
771 	logerror("CPU #0 PC %06x: write %04x to cpu control\n",activecpu_get_pc(),data);
772 }
773 
774 
775 /***********************************************************
776                         INTERRUPTS
777 ***********************************************************/
778 
779 /* 68000 A */
780 
taitoz_interrupt6(int x)781 static void taitoz_interrupt6(int x)
782 {
783 	cpu_set_irq_line(0,6,HOLD_LINE);
784 }
785 
786 /* 68000 B */
787 
788 #if 0
789 static void taitoz_cpub_interrupt5(int x)
790 {
791 	cpu_set_irq_line(2,5,HOLD_LINE);	/* assumes Z80 sandwiched between the 68Ks */
792 }
793 #endif
794 
taitoz_sg_cpub_interrupt5(int x)795 static void taitoz_sg_cpub_interrupt5(int x)
796 {
797 	cpu_set_irq_line(1,5,HOLD_LINE);	/* assumes no Z80 */
798 }
799 
800 #if 0
801 static void taitoz_cpub_interrupt6(int x)
802 {
803 	cpu_set_irq_line(2,6,HOLD_LINE);	/* assumes Z80 sandwiched between the 68Ks */
804 }
805 #endif
806 
807 
808 /***** Routines for particular games *****/
809 
INTERRUPT_GEN(sci_interrupt)810 static INTERRUPT_GEN( sci_interrupt )
811 {
812 	/* Need 2 int4's per int6 else (-$6b63,A5) never set to 1 which
813 	   causes all sprites to vanish! Spriteram has areas for 2 frames
814 	   so in theory only needs updating every other frame. */
815 
816 	sci_int6 = !sci_int6;
817 
818 	if (sci_int6)
819 		timer_set(TIME_IN_CYCLES(200000-500,0),0, taitoz_interrupt6);
820 	cpu_set_irq_line(0, 4, HOLD_LINE);
821 }
822 
823 /* Double Axle seems to keep only 1 sprite frame in sprite ram,
824    which is probably wrong. Game seems to work with no int 6's
825    at all. Cpu control byte has 0,4,8,c poked into 2nd nibble
826    and it seems possible this should be causing int6's ? */
827 
INTERRUPT_GEN(dblaxle_interrupt)828 static INTERRUPT_GEN( dblaxle_interrupt )
829 {
830 	// Unsure how many int6's per frame, copy SCI for now
831 	dblaxle_int6 = !dblaxle_int6;
832 
833 	if (dblaxle_int6)
834 		timer_set(TIME_IN_CYCLES(200000-500,0),0, taitoz_interrupt6);
835 
836 	cpu_set_irq_line(0, 4, HOLD_LINE);
837 }
838 
INTERRUPT_GEN(dblaxle_cpub_interrupt)839 static INTERRUPT_GEN( dblaxle_cpub_interrupt )
840 {
841 	// Unsure how many int6's per frame
842 	timer_set(TIME_IN_CYCLES(200000-500,0),0, taitoz_interrupt6);
843 	cpu_set_irq_line(2, 4, HOLD_LINE);
844 }
845 
846 
847 /******************************************************************
848                               EEPROM
849 ******************************************************************/
850 
851 static data8_t default_eeprom[128]=
852 {
853 	0x00,0x00,0x00,0xff,0x00,0x01,0x41,0x41,0x00,0x00,0x00,0xff,0x00,0x00,0xf0,0xf0,
854 	0x00,0x00,0x00,0xff,0x00,0x01,0x41,0x41,0x00,0x00,0x00,0xff,0x00,0x00,0xf0,0xf0,
855 	0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x01,0x40,0x00,0x00,0x00,0xf0,0x00,
856 	0x00,0x01,0x42,0x85,0x00,0x00,0xf1,0xe3,0x00,0x01,0x40,0x00,0x00,0x00,0xf0,0x00,
857 	0x00,0x01,0x42,0x85,0x00,0x00,0xf1,0xe3,0xcc,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,
858 	0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
859 	0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
860 	0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
861 };
862 
863 static struct EEPROM_interface eeprom_interface =
864 {
865 	6,				/* address bits */
866 	16,				/* data bits */
867 	"0110",			/* read command */
868 	"0101",			/* write command */
869 	"0111",			/* erase command */
870 	"0100000000",	/* lock command */
871 	"0100111111" 	/* unlock command */
872 };
873 
NVRAM_HANDLER(spacegun)874 static NVRAM_HANDLER( spacegun )
875 {
876 	if (read_or_write)
877 		EEPROM_save(file);
878 	else
879 	{
880 		EEPROM_init(&eeprom_interface);
881 
882 		if (file)
883 			EEPROM_load(file);
884 		else
885 			EEPROM_set_data(default_eeprom,128);  /* Default the gun setup values */
886 	}
887 }
888 
eeprom_r(void)889 static int eeprom_r(void)
890 {
891 	return (EEPROM_read_bit() & 0x01)<<7;
892 }
893 
894 #if 0
895 static READ16_HANDLER( eep_latch_r )
896 {
897 	return eep_latch;
898 }
899 #endif
900 
WRITE16_HANDLER(spacegun_output_bypass_w)901 static WRITE16_HANDLER( spacegun_output_bypass_w )
902 {
903 	switch (offset)
904 	{
905 		case 0x03:
906 
907 /*			0000xxxx	(unused)
908 			000x0000	eeprom reset (active low)
909 			00x00000	eeprom clock
910 			0x000000	eeprom data
911 			x0000000	(unused)                  */
912 
913 			COMBINE_DATA(&eep_latch);
914 			EEPROM_write_bit(data & 0x40);
915 			EEPROM_set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
916 			EEPROM_set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
917 			break;
918 
919 		default:
920 			TC0220IOC_w( offset,data );	/* might be a 510NIO ! */
921 	}
922 }
923 
924 
925 /**********************************************************
926                        GAME INPUTS
927 **********************************************************/
928 
READ16_HANDLER(contcirc_input_bypass_r)929 static READ16_HANDLER( contcirc_input_bypass_r )
930 {
931 	/* Bypass TC0220IOC controller for analog input */
932 
933 	data8_t port = TC0220IOC_port_r(0);	/* read port number */
934 	int steer = 0;
935 	int fake = input_port_6_word_r(0,0);
936 
937 	if (!(fake &0x10))	/* Analogue steer (the real control method) */
938 	{
939 		/* center around zero and reduce span to 0xc0 */
940 		steer = ((input_port_5_word_r(0,0) - 0x80) * 0xc0) / 0x100;
941 
942 	}
943 	else	/* Digital steer */
944 	{
945 		if (fake &0x4)
946 		{
947 			steer = 0x60;
948 		}
949 		else if (fake &0x8)
950 		{
951 			steer = 0xff9f;
952 		}
953 	}
954 
955 	switch (port)
956 	{
957 		case 0x08:
958 			return steer &0xff;
959 
960 		case 0x09:
961 			return steer >> 8;
962 
963 		default:
964 			return TC0220IOC_portreg_r( offset );
965 	}
966 }
967 
968 
READ16_HANDLER(chasehq_input_bypass_r)969 static READ16_HANDLER( chasehq_input_bypass_r )
970 {
971 	/* Bypass TC0220IOC controller for extra inputs */
972 
973 	data8_t port = TC0220IOC_port_r(0);	/* read port number */
974 	int steer = 0;
975 	int fake = input_port_10_word_r(0,0);
976 
977 	if (!(fake &0x10))	/* Analogue steer (the real control method) */
978 	{
979 		/* center around zero */
980 		steer = input_port_9_word_r(0,0) - 0x80;
981 	}
982 	else	/* Digital steer */
983 	{
984 		if (fake &0x4)
985 		{
986 			steer = 0xff80;
987 		}
988 		else if (fake &0x8)
989 		{
990 			steer = 0x7f;
991 		}
992 	}
993 
994 	switch (port)
995 	{
996 		case 0x08:
997 			return input_port_5_word_r(0,mem_mask);
998 
999 		case 0x09:
1000 			return input_port_6_word_r(0,mem_mask);
1001 
1002 		case 0x0a:
1003 			return input_port_7_word_r(0,mem_mask);
1004 
1005 		case 0x0b:
1006 			return input_port_8_word_r(0,mem_mask);
1007 
1008 		case 0x0c:
1009 			return steer &0xff;
1010 
1011 		case 0x0d:
1012 			return steer >> 8;
1013 
1014 		default:
1015 			return TC0220IOC_portreg_r( offset );
1016 	}
1017 }
1018 
1019 
READ16_HANDLER(bshark_stick_r)1020 static READ16_HANDLER( bshark_stick_r )
1021 {
1022 	switch (offset)
1023 	{
1024 		case 0x00:
1025 			return input_port_5_word_r(0,mem_mask);
1026 
1027 		case 0x01:
1028 			return input_port_6_word_r(0,mem_mask);
1029 
1030 		case 0x02:
1031 			return input_port_7_word_r(0,mem_mask);
1032 
1033 		case 0x03:
1034 			return input_port_8_word_r(0,mem_mask);
1035 	}
1036 
1037 logerror("CPU #0 PC %06x: warning - read unmapped stick offset %06x\n",activecpu_get_pc(),offset);
1038 
1039 	return 0xff;
1040 }
1041 
1042 static data8_t nightstr_stick[128]=
1043 {
1044 	0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,
1045 	0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,
1046 	0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
1047 	0xe8,0x00,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,
1048 	0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,
1049 	0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x44,0x45,
1050 	0x46,0x47,0x48,0x49,0xb8
1051 };
1052 
READ16_HANDLER(nightstr_stick_r)1053 static READ16_HANDLER( nightstr_stick_r )
1054 {
1055 	switch (offset)
1056 	{
1057 		case 0x00:
1058 			return nightstr_stick[(input_port_5_word_r(0,mem_mask) * 0x64) / 0x100];
1059 
1060 		case 0x01:
1061 			return nightstr_stick[(input_port_6_word_r(0,mem_mask) * 0x64) / 0x100];
1062 
1063 		case 0x02:
1064 			return input_port_7_word_r(0,mem_mask);
1065 
1066 		case 0x03:
1067 			return input_port_8_word_r(0,mem_mask);
1068 	}
1069 
1070 logerror("CPU #0 PC %06x: warning - read unmapped stick offset %06x\n",activecpu_get_pc(),offset);
1071 
1072 	return 0xff;
1073 }
1074 
WRITE16_HANDLER(bshark_stick_w)1075 static WRITE16_HANDLER( bshark_stick_w )
1076 {
1077 	/* Each write invites a new interrupt as soon as the
1078 	   hardware has got the next a/d conversion ready. We set a token
1079 	   delay of 10000 cycles; our "coords" are always ready
1080 	   but we don't want CPUA to have an int6 before int4 is over (?)
1081 	*/
1082 
1083 	timer_set(TIME_IN_CYCLES(10000,0),0, taitoz_interrupt6);
1084 }
1085 
1086 
READ16_HANDLER(sci_steer_input_r)1087 static READ16_HANDLER( sci_steer_input_r )
1088 {
1089 	int steer = 0;
1090 	int fake = input_port_6_word_r(0,0);
1091 
1092 	if (!(fake &0x10))	/* Analogue steer (the real control method) */
1093 	{
1094 		/* center around zero and reduce span to 0xc0 */
1095 		steer = ((input_port_5_word_r(0,0) - 0x80) * 0xc0) / 0x100;
1096 	}
1097 	else	/* Digital steer */
1098 	{
1099 		if (fake &0x4)
1100 		{
1101 			steer = 0xffa0;
1102 		}
1103 		else if (fake &0x8)
1104 		{
1105 			steer = 0x5f;
1106 		}
1107 	}
1108 
1109 	switch (offset)
1110 	{
1111 		case 0x04:
1112 			return (steer & 0xff);
1113 
1114  		case 0x05:
1115 			return (steer & 0xff00) >> 8;
1116 	}
1117 
1118 logerror("CPU #0 PC %06x: warning - read unmapped steer input offset %06x\n",activecpu_get_pc(),offset);
1119 
1120 	return 0xff;
1121 }
1122 
1123 
READ16_HANDLER(spacegun_input_bypass_r)1124 static READ16_HANDLER( spacegun_input_bypass_r )
1125 {
1126 	switch (offset)
1127 	{
1128 		case 0x03:
1129 			return eeprom_r();
1130 
1131 		default:
1132 			return TC0220IOC_r( offset );	/* might be a 510NIO ! */
1133 	}
1134 }
1135 
READ16_HANDLER(spacegun_lightgun_r)1136 static READ16_HANDLER( spacegun_lightgun_r )
1137 {
1138 	switch (offset)
1139 	{
1140 		case 0x00:
1141 			return input_port_5_word_r(0,mem_mask);	/* P1X */
1142 
1143 		case 0x01:
1144 			return input_port_6_word_r(0,mem_mask);	/* P1Y */
1145 
1146 		case 0x02:
1147 			return input_port_7_word_r(0,mem_mask);	/* P2X */
1148 
1149 		case 0x03:
1150 			return input_port_8_word_r(0,mem_mask);	/* P2Y */
1151 	}
1152 
1153 	return 0x0;
1154 }
1155 
WRITE16_HANDLER(spacegun_lightgun_w)1156 static WRITE16_HANDLER( spacegun_lightgun_w )
1157 {
1158 	/* Each write invites a new lightgun interrupt as soon as the
1159 	   hardware has got the next coordinate ready. We set a token
1160 	   delay of 10000 cycles; our "lightgun" coords are always ready
1161 	   but we don't want CPUB to have an int5 before int4 is over (?).
1162 
1163 	   Four lightgun interrupts happen before the collected coords
1164 	   are moved to shared ram where CPUA can use them. */
1165 
1166 	timer_set(TIME_IN_CYCLES(10000,0),0, taitoz_sg_cpub_interrupt5);
1167 }
1168 
1169 
READ16_HANDLER(dblaxle_steer_input_r)1170 static READ16_HANDLER( dblaxle_steer_input_r )
1171 {
1172 	int steer = 0;
1173 	int fake = input_port_6_word_r(0,0);
1174 
1175 	if (!(fake &0x10))	/* Analogue steer (the real control method) */
1176 	{
1177 		/* center around zero and reduce span to 0x80 */
1178 		steer = ((input_port_5_word_r(0,0) - 0x80) * 0x80) / 0x100;
1179 	}
1180 	else	/* Digital steer */
1181 	{
1182 		if (fake &0x4)
1183 		{
1184 			steer = 0xffc0;
1185 		}
1186 		else if (fake &0x8)
1187 		{
1188 			steer = 0x3f;
1189 		}
1190 	}
1191 
1192 	switch (offset)
1193 	{
1194 		case 0x04:
1195 			return steer >> 8;
1196 
1197 		case 0x05:
1198 			return steer &0xff;
1199 	}
1200 
1201 logerror("CPU #0 PC %06x: warning - read unmapped steer input offset %02x\n",activecpu_get_pc(),offset);
1202 	return 0x00;
1203 }
1204 
1205 
READ16_HANDLER(chasehq_motor_r)1206 static READ16_HANDLER( chasehq_motor_r )
1207 {
1208 	switch (offset)
1209 	{
1210 		case 0x0:
1211 			return (rand() &0xff);	/* motor status ?? */
1212 
1213 		case 0x101:
1214 			return 0x55;	/* motor cpu status ? */
1215 
1216 		default:
1217 logerror("CPU #0 PC %06x: warning - read motor cpu %03x\n",activecpu_get_pc(),offset);
1218 			return 0;
1219 	}
1220 }
1221 
WRITE16_HANDLER(chasehq_motor_w)1222 static WRITE16_HANDLER( chasehq_motor_w )
1223 {
1224 	/* Writes $e00000-25 and $e00200-219 */
1225 
1226 logerror("CPU #0 PC %06x: warning - write %04x to motor cpu %03x\n",activecpu_get_pc(),data,offset);
1227 
1228 }
1229 
READ16_HANDLER(aquajack_unknown_r)1230 static READ16_HANDLER( aquajack_unknown_r )
1231 {
1232 	return 0xff;
1233 }
1234 
1235 
1236 /*****************************************************
1237                         SOUND
1238 *****************************************************/
1239 
1240 static int banknum = -1;
1241 
reset_sound_region(void)1242 static void reset_sound_region(void)	/* assumes Z80 sandwiched between 68Ks */
1243 {
1244 	cpu_setbank( 10, memory_region(REGION_CPU2) + (banknum * 0x4000) + 0x10000 );
1245 }
1246 
WRITE_HANDLER(sound_bankswitch_w)1247 static WRITE_HANDLER( sound_bankswitch_w )
1248 {
1249 	banknum = (data - 1) & 7;
1250 	reset_sound_region();
1251 }
1252 
WRITE16_HANDLER(taitoz_sound_w)1253 static WRITE16_HANDLER( taitoz_sound_w )
1254 {
1255 	if (offset == 0)
1256 		taitosound_port_w (0, data & 0xff);
1257 	else if (offset == 1)
1258 		taitosound_comm_w (0, data & 0xff);
1259 
1260 #ifdef MAME_DEBUG
1261 //	if (data & 0xff00)
1262 //	{
1263 //		char buf[80];
1264 //
1265 //		sprintf(buf,"taitoz_sound_w to high byte: %04x",data);
1266 //		usrintf_showmessage(buf);
1267 //	}
1268 #endif
1269 }
1270 
READ16_HANDLER(taitoz_sound_r)1271 static READ16_HANDLER( taitoz_sound_r )
1272 {
1273 	if (offset == 1)
1274 		return ((taitosound_comm_r (0) & 0xff));
1275 	else return 0;
1276 }
1277 
1278 #if 0
1279 static WRITE16_HANDLER( taitoz_msb_sound_w )
1280 {
1281 	if (offset == 0)
1282 		taitosound_port_w (0,(data >> 8) & 0xff);
1283 	else if (offset == 1)
1284 		taitosound_comm_w (0,(data >> 8) & 0xff);
1285 
1286 #ifdef MAME_DEBUG
1287 	if (data & 0xff)
1288 	{
1289 		char buf[80];
1290 
1291 		sprintf(buf,"taitoz_msb_sound_w to low byte: %04x",data);
1292 		usrintf_showmessage(buf);
1293 	}
1294 #endif
1295 }
1296 
1297 static READ16_HANDLER( taitoz_msb_sound_r )
1298 {
1299 	if (offset == 1)
1300 		return ((taitosound_comm_r (0) & 0xff) << 8);
1301 	else return 0;
1302 }
1303 #endif
1304 
1305 /***********************************************************
1306                    MEMORY STRUCTURES
1307 ***********************************************************/
1308 
1309 
MEMORY_READ16_START(contcirc_readmem)1310 static MEMORY_READ16_START( contcirc_readmem )
1311 	{ 0x000000, 0x03ffff, MRA16_ROM },
1312 	{ 0x080000, 0x083fff, MRA16_RAM },	/* main CPUA ram */
1313 	{ 0x084000, 0x087fff, sharedram_r },
1314 	{ 0x100000, 0x100007, TC0110PCR_word_r },	/* palette */
1315 	{ 0x200000, 0x20ffff, TC0100SCN_word_0_r },	/* tilemaps */
1316 	{ 0x220000, 0x22000f, TC0100SCN_ctrl_word_0_r },
1317 	{ 0x300000, 0x301fff, TC0150ROD_word_r },	/* "root ram" */
1318 	{ 0x400000, 0x4006ff, MRA16_RAM },	/* spriteram */
1319 MEMORY_END
1320 
1321 static MEMORY_WRITE16_START( contcirc_writemem )
1322 	{ 0x000000, 0x03ffff, MWA16_ROM },
1323 	{ 0x080000, 0x083fff, MWA16_RAM },
1324 	{ 0x084000, 0x087fff, sharedram_w, &taitoz_sharedram, &taitoz_sharedram_size },
1325 //	{ 0x090000, 0x090001, MWA16_NOP },	/* ??? */
1326 	{ 0x100000, 0x100007, TC0110PCR_step1_rbswap_word_w },	/* palette */
1327 	{ 0x200000, 0x20ffff, TC0100SCN_word_0_w },	/* tilemaps */
1328 	{ 0x220000, 0x22000f, TC0100SCN_ctrl_word_0_w },
1329 	{ 0x300000, 0x301fff, TC0150ROD_word_w },	/* "root ram" */
1330 	{ 0x400000, 0x4006ff, MWA16_RAM, &spriteram16, &spriteram_size },
1331 MEMORY_END
1332 
1333 static MEMORY_READ16_START( contcirc_cpub_readmem )
1334 	{ 0x000000, 0x03ffff, MRA16_ROM },
1335 	{ 0x080000, 0x083fff, MRA16_RAM },
1336 	{ 0x084000, 0x087fff, sharedram_r },
1337 	{ 0x100000, 0x100001, contcirc_input_bypass_r },
1338 	{ 0x100002, 0x100003, TC0220IOC_halfword_port_r },	/* (actually game uses TC040IOC) */
1339 	{ 0x200000, 0x200003, taitoz_sound_r },
1340 MEMORY_END
1341 
1342 static MEMORY_WRITE16_START( contcirc_cpub_writemem )
1343 	{ 0x000000, 0x03ffff, MWA16_ROM },
1344 	{ 0x080000, 0x083fff, MWA16_RAM },
1345 	{ 0x084000, 0x087fff, sharedram_w, &taitoz_sharedram },
1346 	{ 0x100000, 0x100001, TC0220IOC_halfword_portreg_w },
1347 	{ 0x100002, 0x100003, TC0220IOC_halfword_port_w },
1348 	{ 0x200000, 0x200003, taitoz_sound_w },
1349 MEMORY_END
1350 
1351 
1352 static MEMORY_READ16_START( chasehq_readmem )
1353 	{ 0x000000, 0x07ffff, MRA16_ROM },
1354 	{ 0x100000, 0x107fff, MRA16_RAM },	/* main CPUA ram */
1355 	{ 0x108000, 0x10bfff, sharedram_r },
1356 	{ 0x10c000, 0x10ffff, MRA16_RAM },	/* extra CPUA ram */
1357 	{ 0x400000, 0x400001, chasehq_input_bypass_r },
1358 	{ 0x400002, 0x400003, TC0220IOC_halfword_port_r },
1359 	{ 0x820000, 0x820003, taitoz_sound_r },
1360 	{ 0xa00000, 0xa00007, TC0110PCR_word_r },	/* palette */
1361 	{ 0xc00000, 0xc0ffff, TC0100SCN_word_0_r },	/* tilemaps */
1362 	{ 0xc20000, 0xc2000f, TC0100SCN_ctrl_word_0_r },
1363 	{ 0xd00000, 0xd007ff, MRA16_RAM },	/* spriteram */
1364 	{ 0xe00000, 0xe003ff, chasehq_motor_r },	/* motor cpu */
1365 MEMORY_END
1366 
1367 static MEMORY_WRITE16_START( chasehq_writemem )
1368 	{ 0x000000, 0x07ffff, MWA16_ROM },
1369 	{ 0x100000, 0x107fff, MWA16_RAM },
1370 	{ 0x108000, 0x10bfff, sharedram_w, &taitoz_sharedram, &taitoz_sharedram_size },
1371 	{ 0x10c000, 0x10ffff, MWA16_RAM },
1372 	{ 0x400000, 0x400001, TC0220IOC_halfword_portreg_w },
1373 	{ 0x400002, 0x400003, TC0220IOC_halfword_port_w },
1374 	{ 0x800000, 0x800001, cpua_ctrl_w },
1375 	{ 0x820000, 0x820003, taitoz_sound_w },
1376 	{ 0xa00000, 0xa00007, TC0110PCR_step1_word_w },	/* palette */
1377 	{ 0xc00000, 0xc0ffff, TC0100SCN_word_0_w },	/* tilemaps */
1378 	{ 0xc20000, 0xc2000f, TC0100SCN_ctrl_word_0_w },
1379 	{ 0xd00000, 0xd007ff, MWA16_RAM, &spriteram16, &spriteram_size },
1380 	{ 0xe00000, 0xe003ff, chasehq_motor_w },	/* motor cpu */
1381 MEMORY_END
1382 
1383 static MEMORY_READ16_START( chq_cpub_readmem )
1384 	{ 0x000000, 0x01ffff, MRA16_ROM },
1385 	{ 0x100000, 0x103fff, MRA16_RAM },
1386 	{ 0x108000, 0x10bfff, sharedram_r },
1387 	{ 0x800000, 0x801fff, TC0150ROD_word_r },
1388 MEMORY_END
1389 
1390 static MEMORY_WRITE16_START( chq_cpub_writemem )
1391 	{ 0x000000, 0x01ffff, MWA16_ROM },
1392 	{ 0x100000, 0x103fff, MWA16_RAM },
1393 	{ 0x108000, 0x10bfff, sharedram_w, &taitoz_sharedram },
1394 	{ 0x800000, 0x801fff, TC0150ROD_word_w },
1395 MEMORY_END
1396 
1397 
1398 static MEMORY_READ16_START( enforce_readmem )
1399 	{ 0x000000, 0x03ffff, MRA16_ROM },
1400 	{ 0x100000, 0x103fff, MRA16_RAM },	/* main CPUA ram */
1401 	{ 0x104000, 0x107fff, sharedram_r },
1402 	{ 0x300000, 0x3006ff, MRA16_RAM },	/* spriteram */
1403 	{ 0x400000, 0x401fff, TC0150ROD_word_r },	/* "root ram" ??? */
1404 	{ 0x500000, 0x500007, TC0110PCR_word_r },	/* palette */
1405 	{ 0x600000, 0x60ffff, TC0100SCN_word_0_r },	/* tilemaps */
1406 	{ 0x620000, 0x62000f, TC0100SCN_ctrl_word_0_r },
1407 MEMORY_END
1408 
1409 static MEMORY_WRITE16_START( enforce_writemem )
1410 	{ 0x000000, 0x03ffff, MWA16_ROM },
1411 	{ 0x100000, 0x103fff, MWA16_RAM },
1412 	{ 0x104000, 0x107fff, sharedram_w, &taitoz_sharedram, &taitoz_sharedram_size },
1413 	{ 0x200000, 0x200001, cpua_ctrl_w },	// works without?
1414 	{ 0x300000, 0x3006ff, MWA16_RAM, &spriteram16, &spriteram_size },
1415 	{ 0x400000, 0x401fff, TC0150ROD_word_w },	/* "root ram" ??? */
1416 	{ 0x500000, 0x500007, TC0110PCR_step1_rbswap_word_w },	/* palette */
1417 	{ 0x600000, 0x60ffff, TC0100SCN_word_0_w },	/* tilemaps */
1418 	{ 0x620000, 0x62000f, TC0100SCN_ctrl_word_0_w },
1419 MEMORY_END
1420 
1421 static MEMORY_READ16_START( enforce_cpub_readmem )
1422 	{ 0x000000, 0x03ffff, MRA16_ROM },
1423 	{ 0x100000, 0x103fff, MRA16_RAM },
1424 	{ 0x104000, 0x107fff, sharedram_r },
1425 	{ 0x200000, 0x200003, taitoz_sound_r },
1426 	{ 0x300000, 0x300001, TC0220IOC_halfword_portreg_r },
1427 	{ 0x300002, 0x300003, TC0220IOC_halfword_port_r },	/* (actually game uses TC040IOC ?) */
1428 MEMORY_END
1429 
1430 static MEMORY_WRITE16_START( enforce_cpub_writemem )
1431 	{ 0x000000, 0x03ffff, MWA16_ROM },
1432 	{ 0x100000, 0x103fff, MWA16_RAM },
1433 	{ 0x104000, 0x107fff, sharedram_w, &taitoz_sharedram },
1434 	{ 0x200000, 0x200003, taitoz_sound_w },
1435 	{ 0x300000, 0x300001, TC0220IOC_halfword_portreg_w },
1436 	{ 0x300002, 0x300003, TC0220IOC_halfword_port_w },
1437 MEMORY_END
1438 
1439 
1440 static MEMORY_READ16_START( bshark_readmem )
1441 	{ 0x000000, 0x07ffff, MRA16_ROM },
1442 	{ 0x100000, 0x10ffff, MRA16_RAM },	/* main CPUA ram */
1443 	{ 0x110000, 0x113fff, sharedram_r },
1444 	{ 0x400000, 0x40000f, TC0220IOC_halfword_r },
1445 	{ 0x800000, 0x800007, bshark_stick_r },
1446 	{ 0xa00000, 0xa01fff, paletteram16_word_r },	/* palette */
1447 	{ 0xc00000, 0xc00fff, MRA16_RAM },	/* spriteram */
1448 	{ 0xd00000, 0xd0ffff, TC0100SCN_word_0_r },	/* tilemaps */
1449 	{ 0xd20000, 0xd2000f, TC0100SCN_ctrl_word_0_r },
1450 MEMORY_END
1451 
1452 static MEMORY_WRITE16_START( bshark_writemem )
1453 	{ 0x000000, 0x07ffff, MWA16_ROM },
1454 	{ 0x100000, 0x10ffff, MWA16_RAM },
1455 	{ 0x110000, 0x113fff, sharedram_w, &taitoz_sharedram, &taitoz_sharedram_size },
1456 	{ 0x400000, 0x40000f, TC0220IOC_halfword_w },
1457 	{ 0x600000, 0x600001, cpua_noz80_ctrl_w },
1458 	{ 0x800000, 0x800007, bshark_stick_w },
1459 	{ 0xa00000, 0xa01fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1460 	{ 0xc00000, 0xc00fff, MWA16_RAM, &spriteram16, &spriteram_size },
1461 	{ 0xd00000, 0xd0ffff, TC0100SCN_word_0_w },	/* tilemaps */
1462 	{ 0xd20000, 0xd2000f, TC0100SCN_ctrl_word_0_w },
1463 MEMORY_END
1464 
1465 static MEMORY_READ16_START( bshark_cpub_readmem )
1466 	{ 0x000000, 0x07ffff, MRA16_ROM },
1467 	{ 0x108000, 0x10bfff, MRA16_RAM },
1468 	{ 0x110000, 0x113fff, sharedram_r },
1469 //	{ 0x40000a, 0x40000b, taitoz_unknown_r },	// ???
1470 	{ 0x600000, 0x600001, YM2610_status_port_0_A_lsb_r },
1471 	{ 0x600002, 0x600003, YM2610_read_port_0_lsb_r },
1472 	{ 0x600004, 0x600005, YM2610_status_port_0_B_lsb_r },
1473 	{ 0x60000c, 0x60000d, MRA16_NOP },
1474 	{ 0x60000e, 0x60000f, MRA16_NOP },
1475 	{ 0x800000, 0x801fff, TC0150ROD_word_r },	/* "root ram" */
1476 MEMORY_END
1477 
1478 static MEMORY_WRITE16_START( bshark_cpub_writemem )
1479 	{ 0x000000, 0x07ffff, MWA16_ROM },
1480 	{ 0x108000, 0x10bfff, MWA16_RAM },
1481 	{ 0x110000, 0x113fff, sharedram_w },
1482 //	{ 0x400000, 0x400007, MWA16_NOP },   // pan ???
1483 	{ 0x600000, 0x600001, YM2610_control_port_0_A_lsb_w },
1484 	{ 0x600002, 0x600003, YM2610_data_port_0_A_lsb_w },
1485 	{ 0x600004, 0x600005, YM2610_control_port_0_B_lsb_w },
1486 	{ 0x600006, 0x600007, YM2610_data_port_0_B_lsb_w },
1487 	{ 0x60000c, 0x60000d, MWA16_NOP },	// interrupt controller?
1488 	{ 0x60000e, 0x60000f, MWA16_NOP },
1489 	{ 0x800000, 0x801fff, TC0150ROD_word_w },	/* "root ram" */
1490 MEMORY_END
1491 
1492 
1493 static MEMORY_READ16_START( sci_readmem )
1494 	{ 0x000000, 0x07ffff, MRA16_ROM },
1495 	{ 0x100000, 0x107fff, MRA16_RAM },	/* main CPUA ram */
1496 	{ 0x108000, 0x10bfff, sharedram_r },	/* extent ?? */
1497 	{ 0x10c000, 0x10ffff, MRA16_RAM },	/* extra CPUA ram */
1498 	{ 0x200000, 0x20000f, TC0220IOC_halfword_r },
1499 	{ 0x200010, 0x20001f, sci_steer_input_r },
1500 	{ 0x420000, 0x420003, taitoz_sound_r },
1501 	{ 0x800000, 0x801fff, paletteram16_word_r },
1502 	{ 0xa00000, 0xa0ffff, TC0100SCN_word_0_r },	/* tilemaps */
1503 	{ 0xa20000, 0xa2000f, TC0100SCN_ctrl_word_0_r },
1504 	{ 0xc00000, 0xc03fff, MRA16_RAM },	/* spriteram */	// Raine draws only 0x1000
1505 	{ 0xc08000, 0xc08001, sci_spriteframe_r },	// debugging
1506 MEMORY_END
1507 
1508 static MEMORY_WRITE16_START( sci_writemem )
1509 	{ 0x000000, 0x07ffff, MWA16_ROM },
1510 	{ 0x100000, 0x107fff, MWA16_RAM },
1511 	{ 0x108000, 0x10bfff, sharedram_w, &taitoz_sharedram, &taitoz_sharedram_size },
1512 	{ 0x10c000, 0x10ffff, MWA16_RAM },
1513 	{ 0x200000, 0x20000f, TC0220IOC_halfword_w },
1514 //	{ 0x400000, 0x400001, cpua_ctrl_w },	// ?? doesn't seem to fit what's written
1515 	{ 0x420000, 0x420003, taitoz_sound_w },
1516 	{ 0x800000, 0x801fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1517 	{ 0xa00000, 0xa0ffff, TC0100SCN_word_0_w },	/* tilemaps */
1518 	{ 0xa20000, 0xa2000f, TC0100SCN_ctrl_word_0_w },
1519 	{ 0xc00000, 0xc03fff, MWA16_RAM, &spriteram16, &spriteram_size },
1520 	{ 0xc08000, 0xc08001, sci_spriteframe_w },
1521 MEMORY_END
1522 
1523 static MEMORY_READ16_START( sci_cpub_readmem )
1524 	{ 0x000000, 0x01ffff, MRA16_ROM },
1525 	{ 0x200000, 0x203fff, MRA16_RAM },
1526 	{ 0x208000, 0x20bfff, sharedram_r },
1527 	{ 0xa00000, 0xa01fff, TC0150ROD_word_r },
1528 MEMORY_END
1529 
1530 static MEMORY_WRITE16_START( sci_cpub_writemem )
1531 	{ 0x000000, 0x01ffff, MWA16_ROM },
1532 	{ 0x200000, 0x203fff, MWA16_RAM },
1533 	{ 0x208000, 0x20bfff, sharedram_w, &taitoz_sharedram },
1534 	{ 0xa00000, 0xa01fff, TC0150ROD_word_w },
1535 MEMORY_END
1536 
1537 
1538 static MEMORY_READ16_START( nightstr_readmem )
1539 	{ 0x000000, 0x07ffff, MRA16_ROM },
1540 	{ 0x100000, 0x10ffff, MRA16_RAM },	/* main CPUA ram */
1541 	{ 0x110000, 0x113fff, sharedram_r },
1542 	{ 0x400000, 0x40000f, TC0220IOC_halfword_r },
1543 	{ 0x820000, 0x820003, taitoz_sound_r },
1544 	{ 0xa00000, 0xa00007, TC0110PCR_word_r },	/* palette */
1545 	{ 0xc00000, 0xc0ffff, TC0100SCN_word_0_r },	/* tilemaps */
1546 	{ 0xc20000, 0xc2000f, TC0100SCN_ctrl_word_0_r },
1547 	{ 0xd00000, 0xd007ff, MRA16_RAM },	/* spriteram */
1548 	{ 0xe40000, 0xe40007, nightstr_stick_r },
1549 MEMORY_END
1550 
1551 static MEMORY_WRITE16_START( nightstr_writemem )
1552 	{ 0x000000, 0x07ffff, MWA16_ROM },
1553 	{ 0x100000, 0x10ffff, MWA16_RAM },
1554 	{ 0x110000, 0x113fff, sharedram_w, &taitoz_sharedram, &taitoz_sharedram_size },
1555 	{ 0x400000, 0x40000f, TC0220IOC_halfword_w },
1556 	{ 0x800000, 0x800001, cpua_ctrl_w },
1557 	{ 0x820000, 0x820003, taitoz_sound_w },
1558 	{ 0xa00000, 0xa00007, TC0110PCR_step1_word_w },	/* palette */
1559 	{ 0xc00000, 0xc0ffff, TC0100SCN_word_0_w },	/* tilemaps */
1560 	{ 0xc20000, 0xc2000f, TC0100SCN_ctrl_word_0_w },
1561 	{ 0xd00000, 0xd007ff, MWA16_RAM, &spriteram16, &spriteram_size },
1562 //	{ 0xe00000, 0xe00001, MWA16_NOP },	/* ??? */
1563 //	{ 0xe00008, 0xe00009, MWA16_NOP },	/* ??? */
1564 //	{ 0xe00010, 0xe00011, MWA16_NOP },	/* ??? */
1565 	{ 0xe40000, 0xe40007, bshark_stick_w },
1566 MEMORY_END
1567 
1568 static MEMORY_READ16_START( nightstr_cpub_readmem )
1569 	{ 0x000000, 0x03ffff, MRA16_ROM },
1570 	{ 0x100000, 0x103fff, MRA16_RAM },
1571 	{ 0x104000, 0x107fff, sharedram_r },
1572 	{ 0x800000, 0x801fff, TC0150ROD_word_r },	/* "root ram" */
1573 MEMORY_END
1574 
1575 static MEMORY_WRITE16_START( nightstr_cpub_writemem )
1576 	{ 0x000000, 0x03ffff, MWA16_ROM },
1577 	{ 0x100000, 0x103fff, MWA16_RAM },
1578 	{ 0x104000, 0x107fff, sharedram_w, &taitoz_sharedram },
1579 	{ 0x800000, 0x801fff, TC0150ROD_word_w },	/* "root ram" */
1580 MEMORY_END
1581 
1582 
1583 static MEMORY_READ16_START( aquajack_readmem )
1584 	{ 0x000000, 0x03ffff, MRA16_ROM },
1585 	{ 0x100000, 0x103fff, MRA16_RAM },	/* main CPUA ram */
1586 	{ 0x104000, 0x107fff, sharedram_r },
1587 	{ 0x300000, 0x300007, TC0110PCR_word_r },	/* palette */
1588 	{ 0x800000, 0x801fff, TC0150ROD_word_r },	/* (like Contcirc, uses CPUA for road) */
1589 	{ 0xa00000, 0xa0ffff, TC0100SCN_word_0_r },	/* tilemaps */
1590 	{ 0xa20000, 0xa2000f, TC0100SCN_ctrl_word_0_r },
1591 	{ 0xc40000, 0xc403ff, MRA16_RAM },	/* spriteram */
1592 MEMORY_END
1593 
1594 static MEMORY_WRITE16_START( aquajack_writemem )
1595 	{ 0x000000, 0x03ffff, MWA16_ROM },
1596 	{ 0x100000, 0x103fff, MWA16_RAM },
1597 	{ 0x104000, 0x107fff, sharedram_w, &taitoz_sharedram, &taitoz_sharedram_size },
1598 	{ 0x200000, 0x200001, cpua_ctrl_w },	// not needed, but it's probably like the others
1599 	{ 0x300000, 0x300007, TC0110PCR_step1_word_w },	/* palette */
1600 	{ 0x800000, 0x801fff, TC0150ROD_word_w },
1601 	{ 0xa00000, 0xa0ffff, TC0100SCN_word_0_w },	/* tilemaps */
1602 	{ 0xa20000, 0xa2000f, TC0100SCN_ctrl_word_0_w },
1603 	{ 0xc40000, 0xc403ff, MWA16_RAM, &spriteram16, &spriteram_size },
1604 MEMORY_END
1605 
1606 static MEMORY_READ16_START( aquajack_cpub_readmem )
1607 	{ 0x000000, 0x03ffff, MRA16_ROM },
1608 	{ 0x100000, 0x103fff, MRA16_RAM },
1609 	{ 0x104000, 0x107fff, sharedram_r },
1610 	{ 0x200000, 0x20000f, TC0220IOC_halfword_r },
1611 	{ 0x300000, 0x300003, taitoz_sound_r },
1612 	{ 0x800800, 0x80083f, aquajack_unknown_r }, // Read regularly after write to 800800...
1613 //	{ 0x900000, 0x900007, taitoz_unknown_r },
1614 MEMORY_END
1615 
1616 static MEMORY_WRITE16_START( aquajack_cpub_writemem )
1617 	{ 0x000000, 0x03ffff, MWA16_ROM },
1618 	{ 0x100000, 0x103fff, MWA16_RAM },
1619 	{ 0x104000, 0x107fff, sharedram_w, &taitoz_sharedram },
1620 	{ 0x200000, 0x20000f, TC0220IOC_halfword_w },
1621 	{ 0x300000, 0x300003, taitoz_sound_w },
1622 //	{ 0x800800, 0x800801, taitoz_unknown_w },
1623 //	{ 0x900000, 0x900007, taitoz_unknown_w },
1624 MEMORY_END
1625 
1626 
1627 static MEMORY_READ16_START( spacegun_readmem )
1628 	{ 0x000000, 0x07ffff, MRA16_ROM },
1629 	{ 0x30c000, 0x30ffff, MRA16_RAM },	/* local CPUA ram */
1630 	{ 0x310000, 0x31ffff, sharedram_r },	/* extent correct acc. to CPUB inits */
1631 	{ 0x500000, 0x5005ff, MRA16_RAM },	/* spriteram */
1632 	{ 0x900000, 0x90ffff, TC0100SCN_word_0_r },	/* tilemaps */
1633 	{ 0x920000, 0x92000f, TC0100SCN_ctrl_word_0_r },
1634 	{ 0xb00000, 0xb00007, TC0110PCR_word_r },	/* palette */
1635 MEMORY_END
1636 
1637 static MEMORY_WRITE16_START( spacegun_writemem )
1638 	{ 0x000000, 0x07ffff, MWA16_ROM },
1639 	{ 0x30c000, 0x30ffff, MWA16_RAM },
1640 	{ 0x310000, 0x31ffff, sharedram_w, &taitoz_sharedram, &taitoz_sharedram_size  },
1641 	{ 0x500000, 0x5005ff, MWA16_RAM, &spriteram16, &spriteram_size },
1642 	{ 0x900000, 0x90ffff, TC0100SCN_word_0_w },	/* tilemaps */
1643 	{ 0x920000, 0x92000f, TC0100SCN_ctrl_word_0_w },
1644 	{ 0xb00000, 0xb00007, TC0110PCR_step1_rbswap_word_w },	/* palette */
1645 MEMORY_END
1646 
1647 static MEMORY_READ16_START( spacegun_cpub_readmem )
1648 	{ 0x000000, 0x03ffff, MRA16_ROM },
1649 	{ 0x20c000, 0x20ffff, MRA16_RAM },	/* local CPUB ram */
1650 	{ 0x210000, 0x21ffff, sharedram_r },
1651 	{ 0x800000, 0x80000f, spacegun_input_bypass_r },
1652 	{ 0xc00000, 0xc00001, YM2610_status_port_0_A_lsb_r },
1653 	{ 0xc00002, 0xc00003, YM2610_read_port_0_lsb_r },
1654 	{ 0xc00004, 0xc00005, YM2610_status_port_0_B_lsb_r },
1655 	{ 0xc0000c, 0xc0000d, MRA16_NOP },
1656 	{ 0xc0000e, 0xc0000f, MRA16_NOP },
1657 	{ 0xf00000, 0xf00007, spacegun_lightgun_r },
1658 MEMORY_END
1659 
1660 static MEMORY_WRITE16_START( spacegun_cpub_writemem )
1661 	{ 0x000000, 0x03ffff, MWA16_ROM },
1662 	{ 0x20c000, 0x20ffff, MWA16_RAM },
1663 	{ 0x210000, 0x21ffff, sharedram_w },
1664 	{ 0x800000, 0x80000f, spacegun_output_bypass_w },
1665 	{ 0xc00000, 0xc00001, YM2610_control_port_0_A_lsb_w },
1666 	{ 0xc00002, 0xc00003, YM2610_data_port_0_A_lsb_w },
1667 	{ 0xc00004, 0xc00005, YM2610_control_port_0_B_lsb_w },
1668 	{ 0xc00006, 0xc00007, YM2610_data_port_0_B_lsb_w },
1669 	{ 0xc0000c, 0xc0000d, MWA16_NOP },	// interrupt controller?
1670 	{ 0xc0000e, 0xc0000f, MWA16_NOP },
1671 //	{ 0xc20000, 0xc20003, YM2610_???? },	/* Pan (acc. to Raine) */
1672 //	{ 0xe00000, 0xe00001, MWA16_NOP },	/* ??? */
1673 	{ 0xf00000, 0xf00007, spacegun_lightgun_w },
1674 MEMORY_END
1675 
1676 
1677 static MEMORY_READ16_START( dblaxle_readmem )
1678 	{ 0x000000, 0x07ffff, MRA16_ROM },
1679 	{ 0x200000, 0x203fff, MRA16_RAM },	/* main CPUA ram */
1680 	{ 0x210000, 0x21ffff, sharedram_r },
1681 	{ 0x400000, 0x40000f, TC0510NIO_halfword_wordswap_r },
1682 	{ 0x400010, 0x40001f, dblaxle_steer_input_r },
1683 	{ 0x620000, 0x620003, taitoz_sound_r },
1684 	{ 0x800000, 0x801fff, paletteram16_word_r },	/* palette */
1685 	{ 0xa00000, 0xa0ffff, TC0480SCP_word_r },	  /* tilemaps */
1686 	{ 0xa30000, 0xa3002f, TC0480SCP_ctrl_word_r },
1687 	{ 0xc00000, 0xc03fff, MRA16_RAM },	/* spriteram */
1688 	{ 0xc08000, 0xc08001, sci_spriteframe_r },	// debugging
1689 MEMORY_END
1690 
1691 static MEMORY_WRITE16_START( dblaxle_writemem )
1692 	{ 0x000000, 0x07ffff, MWA16_ROM },
1693 	{ 0x200000, 0x203fff, MWA16_RAM },
1694 	{ 0x210000, 0x21ffff, sharedram_w, &taitoz_sharedram, &taitoz_sharedram_size },
1695 	{ 0x400000, 0x40000f, TC0510NIO_halfword_wordswap_w },
1696 	{ 0x600000, 0x600001, cpua_ctrl_w },	/* could this be causing int6 ? */
1697 	{ 0x620000, 0x620003, taitoz_sound_w },
1698 	{ 0x800000, 0x801fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1699 	{ 0x900000, 0x90ffff, TC0480SCP_word_w },	  /* tilemap mirror */
1700 	{ 0xa00000, 0xa0ffff, TC0480SCP_word_w },	  /* tilemaps */
1701 	{ 0xa30000, 0xa3002f, TC0480SCP_ctrl_word_w },
1702 	{ 0xc00000, 0xc03fff, MWA16_RAM, &spriteram16, &spriteram_size }, /* mostly unused ? */
1703 	{ 0xc08000, 0xc08001, sci_spriteframe_w },	/* set in int6, seems to stay zero */
1704 MEMORY_END
1705 
1706 static MEMORY_READ16_START( dblaxle_cpub_readmem )
1707 	{ 0x000000, 0x03ffff, MRA16_ROM },
1708 	{ 0x100000, 0x103fff, MRA16_RAM },
1709 	{ 0x110000, 0x11ffff, sharedram_r },
1710 	{ 0x300000, 0x301fff, TC0150ROD_word_r },
1711 	{ 0x500000, 0x503fff, MRA16_RAM },	/* network ram ? (see Gunbustr) */
1712 MEMORY_END
1713 
1714 static MEMORY_WRITE16_START( dblaxle_cpub_writemem )
1715 	{ 0x000000, 0x03ffff, MWA16_ROM },
1716 	{ 0x100000, 0x103fff, MWA16_RAM },
1717 	{ 0x110000, 0x11ffff, sharedram_w, &taitoz_sharedram },
1718 	{ 0x300000, 0x301fff, TC0150ROD_word_w },
1719 	{ 0x500000, 0x503fff, MWA16_RAM },	/* network ram ? (see Gunbustr) */
1720 MEMORY_END
1721 
1722 
1723 /***************************************************************************/
1724 
1725 static MEMORY_READ_START( z80_sound_readmem )
1726 	{ 0x0000, 0x3fff, MRA_ROM },
1727 	{ 0x4000, 0x7fff, MRA_BANK10 },
1728 	{ 0xc000, 0xdfff, MRA_RAM },
1729 	{ 0xe000, 0xe000, YM2610_status_port_0_A_r },
1730 	{ 0xe001, 0xe001, YM2610_read_port_0_r },
1731 	{ 0xe002, 0xe002, YM2610_status_port_0_B_r },
1732 	{ 0xe200, 0xe200, MRA_NOP },
1733 	{ 0xe201, 0xe201, taitosound_slave_comm_r },
1734 	{ 0xea00, 0xea00, MRA_NOP },
1735 MEMORY_END
1736 
1737 static MEMORY_WRITE_START( z80_sound_writemem )
1738 	{ 0x0000, 0x7fff, MWA_ROM },
1739 	{ 0xc000, 0xdfff, MWA_RAM },
1740 	{ 0xe000, 0xe000, YM2610_control_port_0_A_w },
1741 	{ 0xe001, 0xe001, YM2610_data_port_0_A_w },
1742 	{ 0xe002, 0xe002, YM2610_control_port_0_B_w },
1743 	{ 0xe003, 0xe003, YM2610_data_port_0_B_w },
1744 	{ 0xe200, 0xe200, taitosound_slave_port_w },
1745 	{ 0xe201, 0xe201, taitosound_slave_comm_w },
1746 	{ 0xe400, 0xe403, MWA_NOP }, /* pan */
1747 	{ 0xee00, 0xee00, MWA_NOP }, /* ? */
1748 	{ 0xf000, 0xf000, MWA_NOP }, /* ? */
1749 	{ 0xf200, 0xf200, sound_bankswitch_w },
1750 MEMORY_END
1751 
1752 
1753 /***********************************************************
1754                    INPUT PORTS, DIPs
1755 ***********************************************************/
1756 
1757 #define TAITO_Z_COINAGE_JAPAN_8 \
1758 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) \
1759 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) ) \
1760 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) ) \
1761 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) ) \
1762 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) ) \
1763 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) \
1764 	PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) ) \
1765 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) ) \
1766 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) ) \
1767 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
1768 
1769 #define TAITO_Z_COINAGE_WORLD_8 \
1770 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) \
1771 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) ) \
1772 	PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) ) \
1773 	PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) ) \
1774 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) ) \
1775 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) \
1776 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_2C ) ) \
1777 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) ) \
1778 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_4C ) ) \
1779 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
1780 
1781 #define TAITO_Z_COINAGE_US_8 \
1782 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coinage ) ) \
1783 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) ) \
1784 	PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) ) \
1785 	PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) ) \
1786 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) ) \
1787 	PORT_DIPNAME( 0xc0, 0xc0, "Price to Continue" ) \
1788 	PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) ) \
1789 	PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) ) \
1790 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_1C ) ) \
1791 	PORT_DIPSETTING(    0xc0, "Same as Start" )
1792 
1793 #define TAITO_Z_DIFFICULTY_8 \
1794 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) \
1795 	PORT_DIPSETTING(    0x02, "Easy" ) \
1796 	PORT_DIPSETTING(    0x03, "Normal" ) \
1797 	PORT_DIPSETTING(    0x01, "Hard" ) \
1798 	PORT_DIPSETTING(    0x00, "Hardest" )
1799 
1800 
1801 INPUT_PORTS_START( contcirc )
1802 	PORT_START /* DSW A */
1803 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
1804 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
1805 	PORT_DIPSETTING(    0x00, "Cockpit" )	// analogue accelerator pedal
1806 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
1807 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1808 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1809 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
1810 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
1811 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1812 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
1813 	TAITO_Z_COINAGE_WORLD_8
1814 
1815 	PORT_START /* DSW B */
1816 	PORT_DIPNAME( 0x03, 0x03, "Difficulty 1 (time/speed)" )
1817 	PORT_DIPSETTING(    0x02, "Easy" )
1818 	PORT_DIPSETTING(    0x03, "Normal" )
1819 	PORT_DIPSETTING(    0x01, "Hard" )
1820 	PORT_DIPSETTING(    0x00, "Hardest" )
1821 	PORT_DIPNAME( 0x0c, 0x0c, "Difficulty 2 (other cars)" )
1822 	PORT_DIPSETTING(    0x08, "Easy" )
1823 	PORT_DIPSETTING(    0x0c, "Normal" )
1824 	PORT_DIPSETTING(    0x04, "Hard" )
1825 	PORT_DIPSETTING(    0x00, "Hardest" )
1826 	PORT_DIPNAME( 0x10, 0x10, "Steering wheel" )	//not sure what effect this has
1827 	PORT_DIPSETTING(    0x10, "Free" )
1828 	PORT_DIPSETTING(    0x00, "Locked" )
1829 	PORT_DIPNAME( 0x20, 0x00, "Enable 3d alternate frames" )
1830 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1831 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1832 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1833 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1834 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1835 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1836 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1837 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1838 
1839 	PORT_START      /* IN0 */
1840 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1841 	PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1842 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 )
1843 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
1844 	PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_SERVICE1 )
1845 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON6 | IPF_PLAYER1 )	/* 3 for accel [7 levels] */
1846 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON5 | IPF_PLAYER1 )
1847 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER1 )	/* main accel key */
1848 
1849 	PORT_START      /* IN1: b3 not mapped: standardized on holding b4=lo gear */
1850 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1851 	PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1852 	PORT_BIT( 0x04, IP_ACTIVE_LOW,  IPT_TILT )
1853 	PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_START1 )
1854 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON4 | IPF_PLAYER1 )	/* gear shift lo/hi */
1855 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON8 | IPF_PLAYER1 )	/* 3 for brake [7 levels] */
1856 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON7 | IPF_PLAYER1 )
1857 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER1 )	/* main brake key */
1858 
1859 	PORT_START      /* IN2, unused */
1860 
1861 	PORT_START      /* IN3, "handle" i.e. steering */
1862 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X | IPF_REVERSE | IPF_PLAYER1, 50, 15, 0x00, 0xff)
1863 
1864 	PORT_START      /* IN4, fake allowing digital steer */
1865 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER1 )
1866 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER1 )
1867 	PORT_DIPNAME( 0x10, 0x00, "Steering type" )
1868 	PORT_DIPSETTING(    0x10, "Digital" )
1869 	PORT_DIPSETTING(    0x00, "Analogue" )
1870 INPUT_PORTS_END
1871 
1872 INPUT_PORTS_START( contcrcu )
1873 	PORT_START /* DSW A */
1874 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
1875 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
1876 	PORT_DIPSETTING(    0x00, "Cockpit" )	// analogue accelerator pedal
1877 	PORT_DIPNAME( 0x02, 0x02, "Discounted continues" )
1878 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1879 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
1880 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
1881 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
1882 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1883 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
1884 	TAITO_Z_COINAGE_JAPAN_8		// confirmed
1885 
1886 	PORT_START /* DSW B */
1887 	PORT_DIPNAME( 0x03, 0x03, "Difficulty 1 (time/speed)" )
1888 	PORT_DIPSETTING(    0x02, "Easy" )
1889 	PORT_DIPSETTING(    0x03, "Normal" )
1890 	PORT_DIPSETTING(    0x01, "Hard" )
1891 	PORT_DIPSETTING(    0x00, "Hardest" )
1892 	PORT_DIPNAME( 0x0c, 0x0c, "Difficulty 2 (other cars)" )
1893 	PORT_DIPSETTING(    0x08, "Easy" )
1894 	PORT_DIPSETTING(    0x0c, "Normal" )
1895 	PORT_DIPSETTING(    0x04, "Hard" )
1896 	PORT_DIPSETTING(    0x00, "Hardest" )
1897 	PORT_DIPNAME( 0x10, 0x10, "Steering wheel" )	//not sure what effect this has
1898 	PORT_DIPSETTING(    0x10, "Free" )
1899 	PORT_DIPSETTING(    0x00, "Locked" )
1900 	PORT_DIPNAME( 0x20, 0x00, "Enable 3d alternate frames" )
1901 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1902 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1903 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )	//acc. to manual
1904 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1905 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1906 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )	//acc. to manual
1907 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1908 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1909 
1910 	PORT_START      /* IN0 */
1911 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1912 	PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1913 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 )
1914 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
1915 	PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_SERVICE1 )
1916 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON6 | IPF_PLAYER1 )	/* 3 for accel [7 levels] */
1917 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON5 | IPF_PLAYER1 )
1918 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER1 )	/* main accel key */
1919 
1920 	PORT_START      /* IN1: b3 not mapped: standardized on holding b4=lo gear */
1921 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1922 	PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1923 	PORT_BIT( 0x04, IP_ACTIVE_LOW,  IPT_TILT )
1924 	PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_START1 )
1925 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON4 | IPF_PLAYER1 )	/* gear shift lo/hi */
1926 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON8 | IPF_PLAYER1 )	/* 3 for brake [7 levels] */
1927 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON7 | IPF_PLAYER1 )
1928 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER1 )	/* main brake key */
1929 
1930 	PORT_START      /* IN2, unused */
1931 
1932 	PORT_START      /* IN3, "handle" i.e. steering */
1933 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X | IPF_REVERSE | IPF_PLAYER1, 50, 15, 0x00, 0xff)
1934 
1935 	PORT_START      /* IN4, fake allowing digital steer */
1936 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER1 )
1937 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER1 )
1938 	PORT_DIPNAME( 0x10, 0x00, "Steering type" )
1939 	PORT_DIPSETTING(    0x10, "Digital" )
1940 	PORT_DIPSETTING(    0x00, "Analogue" )
1941 INPUT_PORTS_END
1942 
1943 INPUT_PORTS_START( chasehq )	// IN3-6 perhaps used with cockpit setup? //
1944 	PORT_START /* DSW A */
1945 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Cabinet ) )
1946 	PORT_DIPSETTING(    0x03, "Upright / Steering Lock" )
1947 	PORT_DIPSETTING(    0x02, "Upright / No Steering Lock" )
1948 	PORT_DIPSETTING(    0x01, "Full Throttle Convert, Cockpit" )
1949 	PORT_DIPSETTING(    0x00, "Full Throttle Convert, Deluxe" )
1950 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
1951 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
1952 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1953 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
1954 	TAITO_Z_COINAGE_WORLD_8
1955 
1956 	PORT_START /* DSW B */
1957 	TAITO_Z_DIFFICULTY_8
1958 	PORT_DIPNAME( 0x0c, 0x0c, "Timer Setting" )
1959 	PORT_DIPSETTING(    0x08, "70 Seconds" )
1960 	PORT_DIPSETTING(    0x04, "65 Seconds" )
1961 	PORT_DIPSETTING(    0x0c, "60 Seconds" )
1962 	PORT_DIPSETTING(    0x00, "55 Seconds" )
1963 	PORT_DIPNAME( 0x10, 0x10, "Turbos Stocked" )
1964 	PORT_DIPSETTING(    0x10, "3" )
1965 	PORT_DIPSETTING(    0x00, "5" )
1966 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
1967 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1968 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1969 	PORT_DIPNAME( 0x40, 0x40, "Damage Cleared at Continue" )
1970 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1971 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
1972 	PORT_DIPNAME( 0x80, 0x80, "Allow Continue" )
1973 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1974 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
1975 
1976 	PORT_START      /* IN0 */
1977 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1978 	PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1979 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
1980 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
1981 	PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_SERVICE1 )
1982 	PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_BUTTON2 | IPF_PLAYER1 )	/* brake */
1983 	PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1984 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1985 
1986 	PORT_START      /* IN1 */
1987 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_BUTTON3 | IPF_PLAYER1 )	/* turbo */
1988 	PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_TILT )
1989 	PORT_BIT( 0x04, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1990 	PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_START1 )
1991 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON4 | IPF_PLAYER1 )	/* gear */
1992 	PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_BUTTON1 | IPF_PLAYER1 )	/* accel */
1993 	PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1994 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1995 
1996 	PORT_START      /* IN2, unused */
1997 
1998 	PORT_START      /* IN3, ??? */
1999 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2000 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2001 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2002 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2003 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2004 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2005 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2006 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2007 
2008 	PORT_START      /* IN4, ??? */
2009 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2010 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2011 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2012 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2013 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2014 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2015 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2016 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2017 
2018 	PORT_START      /* IN5, ??? */
2019 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2020 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2021 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2022 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2023 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2024 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2025 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2026 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2027 
2028 	PORT_START      /* IN6, ??? */
2029 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2030 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2031 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2032 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2033 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2034 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2035 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2036 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2037 
2038 	PORT_START      /* IN7, steering */
2039 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X | IPF_PLAYER1, 50, 15, 0x00, 0xff )
2040 
2041 	PORT_START      /* IN8, fake allowing digital steer */
2042 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER1 )
2043 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER1 )
2044 	PORT_DIPNAME( 0x10, 0x00, "Steering type" )
2045 	PORT_DIPSETTING(    0x10, "Digital" )
2046 	PORT_DIPSETTING(    0x00, "Analogue" )
2047 INPUT_PORTS_END
2048 
2049 INPUT_PORTS_START( chasehqj )	// IN3-6 perhaps used with cockpit setup? //
2050 	PORT_START /* DSW A */
2051 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Cabinet ) )
2052 	PORT_DIPSETTING(    0x03, "Upright / Steering Lock" )
2053 	PORT_DIPSETTING(    0x02, "Upright / No Steering Lock" )
2054 	PORT_DIPSETTING(    0x01, "Full Throttle Convert, Cockpit" )
2055 	PORT_DIPSETTING(    0x00, "Full Throttle Convert, Deluxe" )
2056 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
2057 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
2058 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2059 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
2060 	TAITO_Z_COINAGE_JAPAN_8
2061 
2062 	PORT_START /* DSW B */
2063 	TAITO_Z_DIFFICULTY_8
2064 	PORT_DIPNAME( 0x0c, 0x0c, "Timer Setting" )
2065 	PORT_DIPSETTING(    0x08, "70 Seconds" )
2066 	PORT_DIPSETTING(    0x04, "65 Seconds" )
2067 	PORT_DIPSETTING(    0x0c, "60 Seconds" )
2068 	PORT_DIPSETTING(    0x00, "55 Seconds" )
2069 	PORT_DIPNAME( 0x10, 0x10, "Turbos Stocked" )
2070 	PORT_DIPSETTING(    0x10, "3" )
2071 	PORT_DIPSETTING(    0x00, "5" )
2072 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
2073 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
2074 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2075 	PORT_DIPNAME( 0x40, 0x40, "Damage Cleared at Continue" )
2076 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2077 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
2078 	PORT_DIPNAME( 0x80, 0x80, "Allow Continue" )
2079 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2080 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
2081 
2082 	PORT_START      /* IN0 */
2083 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2084 	PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2085 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
2086 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
2087 	PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_SERVICE1 )
2088 	PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_BUTTON2 | IPF_PLAYER1 )	/* brake */
2089 	PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2090 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2091 
2092 	PORT_START      /* IN1 */
2093 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_BUTTON3 | IPF_PLAYER1 )	/* turbo */
2094 	PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_TILT )
2095 	PORT_BIT( 0x04, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2096 	PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_START1 )
2097 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON4 | IPF_PLAYER1 )	/* gear */
2098 	PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_BUTTON1 | IPF_PLAYER1 )	/* accel */
2099 	PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2100 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2101 
2102 	PORT_START      /* IN2, unused */
2103 
2104 	PORT_START      /* IN3, ??? */
2105 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2106 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2107 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2108 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2109 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2110 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2111 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2112 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2113 
2114 	PORT_START      /* IN4, ??? */
2115 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2116 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2117 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2118 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2119 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2120 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2121 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2122 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2123 
2124 	PORT_START      /* IN5, ??? */
2125 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2126 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2127 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2128 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2129 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2130 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2131 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2132 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2133 
2134 	PORT_START      /* IN6, ??? */
2135 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2136 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2137 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2138 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2139 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2140 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2141 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2142 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2143 
2144 	PORT_START      /* IN7, steering */
2145 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X | IPF_PLAYER1, 50, 15, 0x00, 0xff )
2146 
2147 	PORT_START      /* IN8, fake allowing digital steer */
2148 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER1 )
2149 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER1 )
2150 	PORT_DIPNAME( 0x10, 0x00, "Steering type" )
2151 	PORT_DIPSETTING(    0x10, "Digital" )
2152 	PORT_DIPSETTING(    0x00, "Analogue" )
2153 INPUT_PORTS_END
2154 
2155 INPUT_PORTS_START( enforce )
2156 	PORT_START /* DSW A */
2157 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
2158 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2159 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
2160 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
2161 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2162 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2163 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
2164 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
2165 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )	// Says SHIFT HI in test mode !?
2166 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )		// Says SHIFT LO in test mode !?
2167 	TAITO_Z_COINAGE_JAPAN_8
2168 
2169 	PORT_START /* DSW B */
2170 	TAITO_Z_DIFFICULTY_8
2171 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
2172 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
2173 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2174 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
2175 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
2176 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2177 	PORT_DIPNAME( 0x10, 0x00, "Background scenery" )
2178 	PORT_DIPSETTING(    0x10, "Crazy scrolling" )
2179 	PORT_DIPSETTING(    0x00, "Normal" )
2180 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
2181 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
2182 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2183 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
2184 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2185 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2186 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
2187 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
2188 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2189 
2190 	PORT_START      /* IN0 */
2191 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2192 	PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2193 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 )
2194 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
2195 	PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_SERVICE1 )
2196 	PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
2197 	PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
2198 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
2199 
2200 	PORT_START      /* IN1 */
2201 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_BUTTON2 | IPF_PLAYER1 )	/* Bomb */
2202 	PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_BUTTON1 | IPF_PLAYER1 )	/* Laser */
2203 	PORT_BIT( 0x04, IP_ACTIVE_LOW,  IPT_TILT )
2204 	PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_START1 )
2205 	PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2206 	PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2207 	PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2208 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
2209 INPUT_PORTS_END
2210 
2211 INPUT_PORTS_START( bshark )
2212 	PORT_START /* DSW A */
2213 	PORT_DIPNAME( 0x01, 0x01, "Mirror screen" )	// manual says first two must be off
2214 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
2215 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2216 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
2217 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2218 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2219 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
2220 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
2221 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2222 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
2223 	TAITO_Z_COINAGE_US_8
2224 
2225 	PORT_START /* DSW B */
2226 	TAITO_Z_DIFFICULTY_8
2227 	PORT_DIPNAME( 0x0c, 0x04, "Speed of Sight" )
2228 	PORT_DIPSETTING(    0x0c, "Slow" )
2229 	PORT_DIPSETTING(    0x08, "Medium" )
2230 	PORT_DIPSETTING(    0x04, "Fast" )
2231 	PORT_DIPSETTING(    0x00, "Fastest" )
2232 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )	// manual says all these must be off
2233 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
2234 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2235 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
2236 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
2237 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2238 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
2239 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2240 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2241 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
2242 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
2243 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2244 
2245 	PORT_START      /* IN0 */
2246 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 )
2247 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 )
2248 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
2249 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT )
2250 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2251 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2252 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2253 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2254 
2255 	PORT_START      /* IN1, unused */
2256 
2257 	PORT_START      /* IN2, b2-5 affect sound num in service mode but otherwise useless (?) */
2258 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
2259 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
2260 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
2261 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
2262 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )
2263 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER1 )
2264 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )	/* "Fire" */
2265 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 | IPF_PLAYER1 )	/* same as "Fire" */
2266 
2267 	PORT_START	/* values chosen to match allowed crosshair area */
2268 	PORT_ANALOG( 0xff, 0x00, IPT_AD_STICK_X | IPF_REVERSE | IPF_PLAYER1, 20, 4, 0xcc, 0x35)
2269 
2270 	PORT_START	/* "X adjust" */
2271 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
2272 
2273 	PORT_START	/* values chosen to match allowed crosshair area */
2274 	PORT_ANALOG( 0xff, 0x00, IPT_AD_STICK_Y | IPF_PLAYER1, 20, 4, 0xd5, 0x32)
2275 
2276 	PORT_START	/* "Y adjust" */
2277 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
2278 INPUT_PORTS_END
2279 
2280 INPUT_PORTS_START( bsharkj )
2281 	PORT_START /* DSW A */
2282 	PORT_DIPNAME( 0x01, 0x01, "Mirror screen" )
2283 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
2284 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2285 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
2286 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2287 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2288 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
2289 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
2290 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2291 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
2292 	TAITO_Z_COINAGE_JAPAN_8
2293 
2294 	PORT_START /* DSW B */
2295 	TAITO_Z_DIFFICULTY_8
2296 	PORT_DIPNAME( 0x0c, 0x04, "Speed of Sight" )
2297 	PORT_DIPSETTING(    0x0c, "Slow" )
2298 	PORT_DIPSETTING(    0x08, "Medium" )
2299 	PORT_DIPSETTING(    0x04, "Fast" )
2300 	PORT_DIPSETTING(    0x00, "Fastest" )
2301 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
2302 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
2303 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2304 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
2305 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
2306 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2307 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
2308 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2309 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2310 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
2311 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
2312 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2313 
2314 	PORT_START      /* IN0 */
2315 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 )
2316 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 )
2317 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
2318 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT )
2319 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2320 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2321 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2322 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2323 
2324 	PORT_START      /* IN1, unused */
2325 
2326 	PORT_START      /* IN2, b2-5 affect sound num in service mode but otherwise useless (?) */
2327 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
2328 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
2329 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
2330 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
2331 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )
2332 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER1 )
2333 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )	/* "Fire" */
2334 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 | IPF_PLAYER1 )	/* same as "Fire" */
2335 
2336 	PORT_START	/* values chosen to match allowed crosshair area */
2337 	PORT_ANALOG( 0xff, 0x00, IPT_AD_STICK_X | IPF_REVERSE | IPF_PLAYER1, 20, 4, 0xcc, 0x35)
2338 
2339 	PORT_START	/* "X adjust" */
2340 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
2341 
2342 	PORT_START	/* values chosen to match allowed crosshair area */
2343 	PORT_ANALOG( 0xff, 0x00, IPT_AD_STICK_Y | IPF_PLAYER1, 20, 4, 0xd5, 0x32)
2344 
2345 	PORT_START	/* "Y adjust" */
2346 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
2347 INPUT_PORTS_END
2348 
2349 INPUT_PORTS_START( sci )	// dsws may be slightly wrong
2350 	PORT_START /* DSW A */
2351 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
2352 	PORT_DIPSETTING(    0x01, "Cockpit" )
2353 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
2354 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) )
2355 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2356 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2357 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
2358 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
2359 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2360 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
2361 	TAITO_Z_COINAGE_WORLD_8
2362 
2363 	PORT_START /* DSW B */
2364 	TAITO_Z_DIFFICULTY_8
2365 	PORT_DIPNAME( 0x0c, 0x0c, "Timer Setting" )
2366 	PORT_DIPSETTING(    0x08, "70 Seconds" )
2367 	PORT_DIPSETTING(    0x04, "65 Seconds" )
2368 	PORT_DIPSETTING(    0x0c, "60 Seconds" )
2369 	PORT_DIPSETTING(    0x00, "55 Seconds" )
2370 	PORT_DIPNAME( 0x10, 0x10, "Turbos Stocked" )
2371 	PORT_DIPSETTING(    0x10, "3" )
2372 	PORT_DIPSETTING(    0x00, "5" )
2373 	PORT_DIPNAME( 0x20, 0x20, "Respond to Controls" )
2374 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2375 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
2376 	PORT_DIPNAME( 0x40, 0x40, "Damage Cleared at Continue" )
2377 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2378 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
2379 	PORT_DIPNAME( 0x80, 0x80, "Siren Volume" )
2380 	PORT_DIPSETTING(    0x80, "Normal" )
2381 	PORT_DIPSETTING(    0x00, "Low" )
2382 
2383 	PORT_START      /* IN0 */
2384 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2385 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )	/* fire */
2386 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
2387 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
2388 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
2389 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )	/* brake */
2390 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2391 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2392 
2393 	PORT_START      /* IN1 */
2394 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_BUTTON5 | IPF_PLAYER1 )	/* turbo */
2395 	PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_TILT )
2396 	PORT_BIT( 0x04, IP_ACTIVE_LOW,  IPT_BUTTON6 | IPF_PLAYER1 )	/* "center" */
2397 	PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_START1 )
2398 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON4 | IPF_PLAYER1 )	/* gear */
2399 	PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_BUTTON1 | IPF_PLAYER1 )	/* accel */
2400 	PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2401 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2402 
2403 	PORT_START      /* IN2, unused */
2404 
2405 	PORT_START      /* IN3, steering */
2406 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X | IPF_PLAYER1, 50, 15, 0x00, 0xff )
2407 
2408 	PORT_START      /* IN4, fake allowing digital steer */
2409 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER1 )
2410 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER1 )
2411 	PORT_DIPNAME( 0x10, 0x00, "Steering type" )
2412 	PORT_DIPSETTING(    0x10, "Digital" )
2413 	PORT_DIPSETTING(    0x00, "Analogue" )
2414 INPUT_PORTS_END
2415 
2416 INPUT_PORTS_START( sciu )	// dsws may be slightly wrong
2417 	PORT_START /* DSW A */
2418 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
2419 	PORT_DIPSETTING(    0x01, "Cockpit" )
2420 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
2421 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) )
2422 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2423 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2424 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
2425 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
2426 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2427 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
2428 	TAITO_Z_COINAGE_US_8
2429 
2430 	PORT_START /* DSW B */
2431 	TAITO_Z_DIFFICULTY_8
2432 	PORT_DIPNAME( 0x0c, 0x0c, "Timer Setting" )
2433 	PORT_DIPSETTING(    0x08, "70 Seconds" )
2434 	PORT_DIPSETTING(    0x04, "65 Seconds" )
2435 	PORT_DIPSETTING(    0x0c, "60 Seconds" )
2436 	PORT_DIPSETTING(    0x00, "55 Seconds" )
2437 	PORT_DIPNAME( 0x10, 0x10, "Turbos Stocked" )
2438 	PORT_DIPSETTING(    0x10, "3" )
2439 	PORT_DIPSETTING(    0x00, "5" )
2440 	PORT_DIPNAME( 0x20, 0x20, "Respond to Controls" )
2441 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2442 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
2443 	PORT_DIPNAME( 0x40, 0x40, "Damage Cleared at Continue" )
2444 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2445 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
2446 	PORT_DIPNAME( 0x80, 0x80, "Siren Volume" )
2447 	PORT_DIPSETTING(    0x80, "Normal" )
2448 	PORT_DIPSETTING(    0x00, "Low" )
2449 
2450 	PORT_START      /* IN0 */
2451 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2452 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )	/* fire */
2453 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
2454 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
2455 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
2456 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )	/* brake */
2457 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2458 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2459 
2460 	PORT_START      /* IN1 */
2461 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_BUTTON5 | IPF_PLAYER1 )	/* turbo */
2462 	PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_TILT )
2463 	PORT_BIT( 0x04, IP_ACTIVE_LOW,  IPT_BUTTON6 | IPF_PLAYER1 )	/* "center" */
2464 	PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_START1 )
2465 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON4 | IPF_PLAYER1 )	/* gear */
2466 	PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_BUTTON1 | IPF_PLAYER1 )	/* accel */
2467 	PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2468 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2469 
2470 	PORT_START      /* IN2, unused */
2471 
2472 	PORT_START      /* IN3, steering */
2473 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X | IPF_PLAYER1, 50, 15, 0x00, 0xff )
2474 
2475 	PORT_START      /* IN4, fake allowing digital steer */
2476 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER1 )
2477 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER1 )
2478 	PORT_DIPNAME( 0x10, 0x00, "Steering type" )
2479 	PORT_DIPSETTING(    0x10, "Digital" )
2480 	PORT_DIPSETTING(    0x00, "Analogue" )
2481 INPUT_PORTS_END
2482 
2483 INPUT_PORTS_START( nightstr )
2484 	PORT_START /* DSW A */
2485 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
2486 	PORT_DIPSETTING(    0x01, "Cockpit" )
2487 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
2488 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) ) /* Shown only as "OFF" in the manual */
2489 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2490 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2491 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
2492 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
2493 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2494 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
2495 	TAITO_Z_COINAGE_US_8
2496 
2497 	PORT_START /* DSW B */
2498 	TAITO_Z_DIFFICULTY_8
2499 	PORT_DIPNAME( 0x0c, 0x0c, "Bonus Shields" )
2500 	PORT_DIPSETTING(    0x08, "3" )
2501 	PORT_DIPSETTING(    0x04, "2" )
2502 	PORT_DIPSETTING(    0x0c, "1" )
2503 	PORT_DIPSETTING(    0x00, "None" )
2504 	PORT_DIPNAME( 0x30, 0x30, "Shields" )
2505 	PORT_DIPSETTING(    0x00, "3" )
2506 	PORT_DIPSETTING(    0x10, "4" )
2507 	PORT_DIPSETTING(    0x30, "5" )
2508 	PORT_DIPSETTING(    0x20, "6" )
2509 	PORT_DIPNAME( 0x40, 0x40, "Allow Continue" )
2510 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2511 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
2512 	PORT_DIPNAME( 0x80, 0x80, "Trigger Turbo" )
2513 	PORT_DIPSETTING(    0x80, "7 Shots / Second" )
2514 	PORT_DIPSETTING(    0x00, "10 Shots / Second" )
2515 
2516 	PORT_START      /* IN0 */
2517 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2518 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2519 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2520 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2521 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
2522 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
2523 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 )
2524 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_TILT )
2525 
2526 	PORT_START      /* IN1, unused */
2527 
2528 	PORT_START      /* IN2 */
2529 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
2530 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
2531 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
2532 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
2533 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
2534 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
2535 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
2536 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
2537 
2538 	PORT_START
2539 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X | IPF_PLAYER1, 60, 15, 0x00, 0xff)
2540 
2541 	PORT_START
2542 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_Y | IPF_REVERSE | IPF_PLAYER1, 60, 15, 0x00, 0xff)
2543 
2544 	PORT_START	/* X offset */
2545 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
2546 
2547 	PORT_START	/* Y offset */
2548 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
2549 INPUT_PORTS_END
2550 
2551 INPUT_PORTS_START( aquajack )
2552 	PORT_START /* DSW A */
2553 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
2554 	PORT_DIPSETTING(    0x80, "Cockpit" )
2555 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
2556 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
2557 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2558 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2559 	PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
2560 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )
2561 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2562 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
2563 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_A ) )
2564 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
2565 	PORT_DIPSETTING(    0x08, DEF_STR( 3C_1C ) )
2566 	PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
2567 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
2568 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_B ) )
2569 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_2C ) )
2570 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_3C ) )
2571 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_4C ) )
2572 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
2573 
2574 	PORT_START /* DSW B */
2575 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
2576 	PORT_DIPSETTING(    0x40, "Easy" )
2577 	PORT_DIPSETTING(    0xc0, "Normal" )
2578 	PORT_DIPSETTING(    0x80, "Hard" )
2579 	PORT_DIPSETTING(    0x00, "Hardest" )
2580 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) )
2581 	PORT_DIPSETTING(    0x00, "30k" )
2582 	PORT_DIPSETTING(    0x30, "50k" )
2583 	PORT_DIPSETTING(    0x10, "80k" )
2584 	PORT_DIPSETTING(    0x20, "100k" )
2585 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
2586 	PORT_DIPSETTING(    0x08, "1" )
2587 	PORT_DIPSETTING(    0x04, "2" )
2588 	PORT_DIPSETTING(    0x0c, "3" )
2589 	PORT_DIPSETTING(    0x00, "5" )
2590 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) ) /* Dips 7 & 8 shown as "Do Not Touch" in manual */
2591 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2592 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2593 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) )
2594 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
2595 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2596 
2597 	PORT_START      /* IN0 */
2598 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2599 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )
2600 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
2601 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
2602 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
2603 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
2604 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2605 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2606 
2607 	PORT_START      /* IN1 */
2608 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
2609 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
2610 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
2611 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
2612 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
2613 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
2614 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
2615 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2616 
2617 	PORT_START      /* IN2, what is it ??? */
2618 	PORT_ANALOG( 0xff, 0x80, IPT_DIAL | IPF_PLAYER1, 50, 10, 0, 0 )
2619 INPUT_PORTS_END
2620 
2621 INPUT_PORTS_START( aquajckj )
2622 	PORT_START /* DSW A */
2623 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
2624 	PORT_DIPSETTING(    0x80, "Cockpit" )
2625 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
2626 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
2627 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2628 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2629 	PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
2630 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )
2631 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2632 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
2633 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_A ) )
2634 	PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
2635 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
2636 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
2637 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
2638 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_B ) )
2639 	PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
2640 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
2641 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
2642 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
2643 
2644 	PORT_START /* DSW B */
2645 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
2646 	PORT_DIPSETTING(    0x40, "Easy" )
2647 	PORT_DIPSETTING(    0xc0, "Normal" )
2648 	PORT_DIPSETTING(    0x80, "Hard" )
2649 	PORT_DIPSETTING(    0x00, "Hardest" )
2650 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) )
2651 	PORT_DIPSETTING(    0x00, "30k" )
2652 	PORT_DIPSETTING(    0x30, "50k" )
2653 	PORT_DIPSETTING(    0x10, "80k" )
2654 	PORT_DIPSETTING(    0x20, "100k" )
2655 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
2656 	PORT_DIPSETTING(    0x08, "1" )
2657 	PORT_DIPSETTING(    0x04, "2" )
2658 	PORT_DIPSETTING(    0x0c, "3" )
2659 	PORT_DIPSETTING(    0x00, "5" )
2660 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) ) /* Dips 7 & 8 shown as "Do Not Touch" in manual */
2661 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2662 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2663 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) )
2664 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
2665 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2666 
2667 	PORT_START      /* IN0 */
2668 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2669 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )
2670 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
2671 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
2672 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
2673 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
2674 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2675 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2676 
2677 	PORT_START      /* IN1 */
2678 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
2679 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
2680 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
2681 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
2682 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
2683 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
2684 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
2685 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2686 
2687 	PORT_START      /* IN2, what is it ??? */
2688 	PORT_ANALOG( 0xff, 0x80, IPT_DIAL | IPF_PLAYER1, 50, 10, 0, 0 )
2689 INPUT_PORTS_END
2690 
2691 INPUT_PORTS_START( spacegun )
2692 	PORT_START /* DSW A */
2693 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) )	// Manual says Always Off
2694 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
2695 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2696 	PORT_DIPNAME( 0x02, 0x02, "Always have gunsight power up" )
2697 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2698 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2699 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
2700 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
2701 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2702 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
2703 	TAITO_Z_COINAGE_WORLD_8
2704 
2705 	PORT_START /* DSW B */
2706 	TAITO_Z_DIFFICULTY_8
2707 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) )	// Manual lists dips 3 through 6 and 8 as Always off
2708 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
2709 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2710 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
2711 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
2712 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2713 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
2714 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
2715 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2716 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
2717 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
2718 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2719 	PORT_DIPNAME( 0x40, 0x40, "Allow Continue" )
2720 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2721 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
2722 	PORT_DIPNAME( 0x80, 0x80, "Disable Pedal (?)" )
2723 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
2724 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2725 
2726 	PORT_START      /* IN0 */
2727 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
2728 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
2729 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
2730 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
2731 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
2732 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2733 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1)
2734 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2)
2735 
2736 	PORT_START      /* IN1, unused */
2737 
2738 	PORT_START      /* IN2 */
2739 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
2740 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
2741 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
2742 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
2743 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2744 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2745 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2746 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2747 
2748 	PORT_START
2749 	PORT_ANALOG( 0xff, 0x80, IPT_LIGHTGUN_X | IPF_REVERSE | IPF_PLAYER1, 20, 22, 0, 0xff)
2750 
2751 	PORT_START
2752 	PORT_ANALOG( 0xff, 0x80, IPT_LIGHTGUN_Y | IPF_PLAYER1, 20, 22, 0, 0xff)
2753 
2754 	PORT_START
2755 	PORT_ANALOG( 0xff, 0x80, IPT_LIGHTGUN_X | IPF_REVERSE | IPF_PLAYER2, 20, 22, 0, 0xff)
2756 
2757 	PORT_START
2758 	PORT_ANALOG( 0xff, 0x80, IPT_LIGHTGUN_Y | IPF_PLAYER2, 20, 22, 0, 0xff)
2759 INPUT_PORTS_END
2760 
2761 INPUT_PORTS_START( dblaxle )
2762 	PORT_START /* DSW A */
2763 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
2764 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
2765 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2766 	PORT_DIPNAME( 0x02, 0x02, "Gear shift" )
2767 	PORT_DIPSETTING(    0x02, "Normal" )
2768 	PORT_DIPSETTING(    0x00, "Inverted" )
2769 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
2770 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
2771 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2772 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
2773 	TAITO_Z_COINAGE_US_8
2774 
2775 	PORT_START /* DSW B */
2776 	TAITO_Z_DIFFICULTY_8
2777 	PORT_DIPNAME( 0x04, 0x00, "Multi-machine hookup ?" )	// doesn't boot if on
2778 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2779 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
2780 	PORT_DIPNAME( 0x08, 0x08, "Player Truck" )
2781 	PORT_DIPSETTING(    0x08, "Red" )
2782 	PORT_DIPSETTING(    0x00, "Blue" )
2783 	PORT_DIPNAME( 0x10, 0x10, "Back button" )
2784 	PORT_DIPSETTING(    0x10, "Normal" )
2785 	PORT_DIPSETTING(    0x00, "Inverted" )
2786 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )	// causes "Root CPU Error" on "Icy Road" (Tourniquet)
2787 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
2788 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2789 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
2790 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2791 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2792 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
2793 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
2794 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2795 
2796 	PORT_START      /* IN0 */
2797 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2798 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )	/* shift */
2799 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
2800 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
2801 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
2802 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )	/* brake */
2803 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2804 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER1 )	/* "back" */
2805 
2806 	PORT_START      /* IN1 */
2807 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )	/* nitro */
2808 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT )
2809 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 | IPF_PLAYER1 )	/* "center" */
2810 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
2811 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2812 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )	/* accel */
2813 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2814 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2815 
2816 	PORT_START      /* IN2, unused */
2817 
2818 	PORT_START      /* IN3, steering */
2819 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X | IPF_PLAYER1, 40, 10, 0x00, 0xff )
2820 
2821 	PORT_START      /* IN4, fake allowing digital steer */
2822 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER1 )
2823 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER1 )
2824 	PORT_DIPNAME( 0x10, 0x00, "Steering type" )
2825 	PORT_DIPSETTING(    0x10, "Digital" )
2826 	PORT_DIPSETTING(    0x00, "Analogue" )
2827 INPUT_PORTS_END
2828 
2829 INPUT_PORTS_START( pwheelsj )
2830 	PORT_START /* DSW A */
2831 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
2832 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
2833 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2834 	PORT_DIPNAME( 0x02, 0x02, "Gear shift" )
2835 	PORT_DIPSETTING(    0x02, "Normal" )
2836 	PORT_DIPSETTING(    0x00, "Inverted" )
2837 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
2838 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
2839 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2840 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
2841 	TAITO_Z_COINAGE_JAPAN_8
2842 
2843 	PORT_START /* DSW B */
2844 	TAITO_Z_DIFFICULTY_8
2845 	PORT_DIPNAME( 0x04, 0x00, "Multi-machine hookup ?" )	// doesn't boot if on
2846 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2847 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
2848 	PORT_DIPNAME( 0x08, 0x08, "Player Truck" )
2849 	PORT_DIPSETTING(    0x08, "Red" )
2850 	PORT_DIPSETTING(    0x00, "Blue" )
2851 	PORT_DIPNAME( 0x10, 0x10, "Back button" )
2852 	PORT_DIPSETTING(    0x10, "Normal" )
2853 	PORT_DIPSETTING(    0x00, "Inverted" )
2854 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )	// causes "Root CPU Error" on "Icy Road" (Tourniquet)
2855 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
2856 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2857 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
2858 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2859 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2860 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
2861 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
2862 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2863 
2864 	PORT_START      /* IN0 */
2865 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2866 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )	/* shift */
2867 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
2868 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
2869 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
2870 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )	/* brake */
2871 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2872 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER1 )	/* "back" */
2873 
2874 	PORT_START      /* IN1 */
2875 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )	/* nitro */
2876 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT )
2877 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 | IPF_PLAYER1 )	/* "center" */
2878 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
2879 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2880 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )	/* accel */
2881 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2882 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2883 
2884 	PORT_START      /* IN2, unused */
2885 
2886 	PORT_START      /* IN3, steering */
2887 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X | IPF_PLAYER1, 40, 10, 0x00, 0xff )
2888 
2889 	PORT_START      /* IN4, fake allowing digital steer */
2890 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER1 )
2891 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER1 )
2892 	PORT_DIPNAME( 0x10, 0x00, "Steering type" )
2893 	PORT_DIPSETTING(    0x10, "Digital" )
2894 	PORT_DIPSETTING(    0x00, "Analogue" )
2895 INPUT_PORTS_END
2896 
2897 
2898 /***********************************************************
2899                        GFX DECODING
2900 ***********************************************************/
2901 
2902 static struct GfxLayout tile16x8_layout =
2903 {
2904 	16,8,	/* 16*8 sprites */
2905 	RGN_FRAC(1,1),
2906 	4,	/* 4 bits per pixel */
2907 	{ 0, 8, 16, 24 },
2908 	{ 32, 33, 34, 35, 36, 37, 38, 39, 0, 1, 2, 3, 4, 5, 6, 7 },
2909 	{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 },
2910 	64*8	/* every sprite takes 64 consecutive bytes */
2911 };
2912 
2913 static struct GfxLayout tile16x16_layout =
2914 {
2915 	16,16,	/* 16*16 sprites */
2916 	RGN_FRAC(1,1),
2917 	4,	/* 4 bits per pixel */
2918 	{ 0, 8, 16, 24 },
2919 	{ 32, 33, 34, 35, 36, 37, 38, 39, 0, 1, 2, 3, 4, 5, 6, 7 },
2920 	{ 0*64, 1*64,  2*64,  3*64,  4*64,  5*64,  6*64,  7*64,
2921 	  8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
2922 	64*16	/* every sprite takes 128 consecutive bytes */
2923 };
2924 
2925 static struct GfxLayout charlayout =
2926 {
2927 	8,8,	/* 8*8 characters */
2928 	RGN_FRAC(1,1),
2929 	4,	/* 4 bits per pixel */
2930 	{ 0, 1, 2, 3 },
2931 	{ 2*4, 3*4, 0*4, 1*4, 6*4, 7*4, 4*4, 5*4 },
2932 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
2933 	32*8	/* every sprite takes 32 consecutive bytes */
2934 };
2935 
2936 static struct GfxLayout dblaxle_charlayout =
2937 {
2938 	16,16,    /* 16*16 characters */
2939 	RGN_FRAC(1,1),
2940 	4,        /* 4 bits per pixel */
2941 	{ 0, 1, 2, 3 },
2942 	{ 1*4, 0*4, 5*4, 4*4, 3*4, 2*4, 7*4, 6*4, 9*4, 8*4, 13*4, 12*4, 11*4, 10*4, 15*4, 14*4 },
2943 	{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
2944 	128*8     /* every sprite takes 128 consecutive bytes */
2945 };
2946 
2947 static struct GfxDecodeInfo taitoz_gfxdecodeinfo[] =
2948 {
2949 	{ REGION_GFX2, 0x0, &tile16x8_layout,  0, 256 },	/* sprite parts */
2950 	{ REGION_GFX1, 0x0, &charlayout,  0, 256 },		/* sprites & playfield */
2951 	{ -1 } /* end of array */
2952 };
2953 
2954 /* taitoic.c TC0100SCN routines expect scr stuff to be in second gfx
2955    slot, so 2nd batch of obj must be placed third */
2956 
2957 static struct GfxDecodeInfo chasehq_gfxdecodeinfo[] =
2958 {
2959 	{ REGION_GFX2, 0x0, &tile16x16_layout,  0, 256 },	/* sprite parts */
2960 	{ REGION_GFX1, 0x0, &charlayout,  0, 256 },		/* sprites & playfield */
2961 	{ REGION_GFX4, 0x0, &tile16x16_layout,  0, 256 },	/* sprite parts */
2962 	{ -1 } /* end of array */
2963 };
2964 
2965 static struct GfxDecodeInfo dblaxle_gfxdecodeinfo[] =
2966 {
2967 	{ REGION_GFX2, 0x0, &tile16x8_layout,  0, 256 },	/* sprite parts */
2968 	{ REGION_GFX1, 0x0, &dblaxle_charlayout,  0, 256 },	/* sprites & playfield */
2969 	{ -1 } /* end of array */
2970 };
2971 
2972 
2973 
2974 /**************************************************************
2975                          YM2610 (SOUND)
2976 
2977 The first interface is for game boards with twin 68000 and Z80.
2978 Interface B is for games which lack a Z80 (Spacegun, Bshark).
2979 **************************************************************/
2980 
2981 /* handler called by the YM2610 emulator when the internal timers cause an IRQ */
irqhandler(int irq)2982 static void irqhandler(int irq)	// assumes Z80 sandwiched between 68Ks
2983 {
2984 	cpu_set_irq_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE);
2985 }
2986 
2987 /* handler called by the YM2610 emulator when the internal timers cause an IRQ */
irqhandlerb(int irq)2988 static void irqhandlerb(int irq)
2989 {
2990 	// DG: this is probably specific to Z80 and wrong?
2991 //	cpu_set_irq_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE);
2992 }
2993 
2994 static struct YM2610interface ym2610_interface =
2995 {
2996 	1,	/* 1 chip */
2997 	16000000/2,	/* 8 MHz ?? */
2998 	{ 25 },
2999 	{ 0 },
3000 	{ 0 },
3001 	{ 0 },
3002 	{ 0 },
3003 	{ irqhandler },
3004 	{ REGION_SOUND2 },	/* Delta-T */
3005 	{ REGION_SOUND1 },	/* ADPCM */
3006 	{ YM3012_VOL(100,MIXER_PAN_LEFT,100,MIXER_PAN_RIGHT) }
3007 };
3008 
3009 static struct YM2610interface ym2610_interfaceb =
3010 {
3011 	1,	/* 1 chip */
3012 	16000000/2,	/* 8 MHz ?? */
3013 	{ 25 },
3014 	{ 0 },
3015 	{ 0 },
3016 	{ 0 },
3017 	{ 0 },
3018 	{ irqhandlerb },
3019 	{ REGION_SOUND2 },	/* Delta-T */
3020 	{ REGION_SOUND1 },	/* ADPCM */
3021 	{ YM3012_VOL(100,MIXER_PAN_LEFT,100,MIXER_PAN_RIGHT) }
3022 };
3023 
3024 
3025 /**************************************************************
3026                          SUBWOOFER (SOUND)
3027 **************************************************************/
3028 
subwoofer_sh_start(const struct MachineSound * msound)3029 static int subwoofer_sh_start(const struct MachineSound *msound)
3030 {
3031 	/* Adjust the lowpass filter of the first three YM2610 channels */
3032 
3033 	/* 150 Hz is a common top frequency played by a generic */
3034 	/* subwoofer, the real Arcade Machine may differs */
3035 
3036 	mixer_set_lowpass_frequency(0,20);
3037 	mixer_set_lowpass_frequency(1,20);
3038 	mixer_set_lowpass_frequency(2,20);
3039 
3040 	return 0;
3041 }
3042 
3043 static struct CustomSound_interface subwoofer_interface =
3044 {
3045 	subwoofer_sh_start,
3046 	0, /* none */
3047 	0 /* none */
3048 };
3049 
3050 
3051 /***********************************************************
3052                       MACHINE DRIVERS
3053 
3054 CPU Interleaving
3055 ----------------
3056 
3057 Chasehq2 needs high interleaving to have sound (not checked
3058 since May 2001 - may have changed).
3059 
3060 Enforce with interleave of 1 sometimes lets you take over from
3061 the demo game when you coin up! Set to 10 seems to cure this.
3062 
3063 Bshark needs the high cpu interleaving to run test mode.
3064 
3065 Nightstr needs the high cpu interleaving to get through init.
3066 
3067 Aquajack has it VERY high to cure frequent sound-related
3068 hangs.
3069 
3070 Dblaxle has 10 to boot up reliably but very occasionally gets
3071 a "root cpu error" still.
3072 
3073 Mostly it's the 2nd 68K which writes to road chip, so syncing
3074 between it and the master 68K may be important. Contcirc
3075 and ChaseHQ have interleave of only 1 - possible cause of
3076 Contcirc road glitchiness in attract?
3077 
3078 ***********************************************************/
3079 
3080 /* Contcirc vis area seems narrower than the other games... */
3081 
3082 static MACHINE_DRIVER_START( contcirc )
3083 
3084 	/* basic machine hardware */
3085 	MDRV_CPU_ADD(M68000, 12000000)	/* 12 MHz ??? */
MDRV_CPU_MEMORY(contcirc_readmem,contcirc_writemem)3086 	MDRV_CPU_MEMORY(contcirc_readmem,contcirc_writemem)
3087 	MDRV_CPU_VBLANK_INT(irq6_line_hold,1)
3088 
3089 	MDRV_CPU_ADD(Z80,16000000/4)
3090 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 4 MHz ??? */
3091 	MDRV_CPU_MEMORY(z80_sound_readmem,z80_sound_writemem)
3092 
3093 	MDRV_CPU_ADD(M68000, 12000000)	/* 12 MHz ??? */
3094 	MDRV_CPU_MEMORY(contcirc_cpub_readmem,contcirc_cpub_writemem)
3095 	MDRV_CPU_VBLANK_INT(irq6_line_hold,1)
3096 
3097 	MDRV_FRAMES_PER_SECOND(60)
3098 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
3099 
3100 	/* video hardware */
3101 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
3102 	MDRV_SCREEN_SIZE(40*8, 32*8)
3103 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 3*8, 31*8-1)
3104 	MDRV_GFXDECODE(taitoz_gfxdecodeinfo)
3105 	MDRV_PALETTE_LENGTH(4096)
3106 
3107 	MDRV_VIDEO_START(taitoz)
3108 	MDRV_VIDEO_UPDATE(contcirc)
3109 
3110 	/* sound hardware */
3111 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
3112 	MDRV_SOUND_ADD(YM2610, ym2610_interface)
3113 	MDRV_SOUND_ADD(CUSTOM, subwoofer_interface)
3114 MACHINE_DRIVER_END
3115 
3116 
3117 static MACHINE_DRIVER_START( chasehq )
3118 
3119 	/* basic machine hardware */
3120 	MDRV_CPU_ADD(M68000, 12000000)	/* 12 MHz ??? */
3121 	MDRV_CPU_MEMORY(chasehq_readmem,chasehq_writemem)
3122 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
3123 
3124 	MDRV_CPU_ADD(Z80,16000000/4)
3125 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 4 MHz ??? */
3126 	MDRV_CPU_MEMORY(z80_sound_readmem,z80_sound_writemem)
3127 
3128 	MDRV_CPU_ADD(M68000, 12000000)	/* 12 MHz ??? */
3129 	MDRV_CPU_MEMORY(chq_cpub_readmem,chq_cpub_writemem)
3130 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
3131 
3132 	MDRV_FRAMES_PER_SECOND(60)
3133 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
3134 
3135 	/* video hardware */
3136 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
3137 	MDRV_SCREEN_SIZE(40*8, 32*8)
3138 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
3139 	MDRV_GFXDECODE(chasehq_gfxdecodeinfo)
3140 	MDRV_PALETTE_LENGTH(4096)
3141 
3142 	MDRV_VIDEO_START(taitoz)
3143 	MDRV_VIDEO_UPDATE(chasehq)
3144 
3145 	/* sound hardware */
3146 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
3147 	MDRV_SOUND_ADD(YM2610, ym2610_interface)
3148 MACHINE_DRIVER_END
3149 
3150 
3151 static MACHINE_DRIVER_START( enforce )
3152 
3153 	/* basic machine hardware */
3154 	MDRV_CPU_ADD(M68000, 12000000)	/* 12 MHz ??? */
3155 	MDRV_CPU_MEMORY(enforce_readmem,enforce_writemem)
3156 	MDRV_CPU_VBLANK_INT(irq6_line_hold,1)
3157 
3158 	MDRV_CPU_ADD(Z80,16000000/4)
3159 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 4 MHz ??? */
3160 	MDRV_CPU_MEMORY(z80_sound_readmem,z80_sound_writemem)
3161 
3162 	MDRV_CPU_ADD(M68000, 12000000)	/* 12 MHz ??? */
3163 	MDRV_CPU_MEMORY(enforce_cpub_readmem,enforce_cpub_writemem)
3164 	MDRV_CPU_VBLANK_INT(irq6_line_hold,1)
3165 
3166 	MDRV_FRAMES_PER_SECOND(60)
3167 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
3168 	MDRV_INTERLEAVE(10)
3169 
3170 	/* video hardware */
3171 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
3172 	MDRV_SCREEN_SIZE(40*8, 32*8)
3173 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 2*8, 31*8-1)
3174 	MDRV_GFXDECODE(taitoz_gfxdecodeinfo)
3175 	MDRV_PALETTE_LENGTH(4096)
3176 
3177 	MDRV_VIDEO_START(taitoz)
3178 	MDRV_VIDEO_UPDATE(contcirc)
3179 
3180 	/* sound hardware */
3181 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
3182 	MDRV_SOUND_ADD(YM2610, ym2610_interface)
3183 	MDRV_SOUND_ADD(CUSTOM, subwoofer_interface)
3184 MACHINE_DRIVER_END
3185 
3186 
3187 static MACHINE_DRIVER_START( bshark )
3188 
3189 	/* basic machine hardware */
3190 	MDRV_CPU_ADD(M68000, 12000000)	/* 12 MHz ??? */
3191 	MDRV_CPU_MEMORY(bshark_readmem,bshark_writemem)
3192 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
3193 
3194 	MDRV_CPU_ADD(M68000, 12000000)	/* 12 MHz ??? */
3195 	MDRV_CPU_MEMORY(bshark_cpub_readmem,bshark_cpub_writemem)
3196 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
3197 
3198 	MDRV_FRAMES_PER_SECOND(60)
3199 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
3200 	MDRV_INTERLEAVE(100)
3201 
3202 	/* video hardware */
3203 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
3204 	MDRV_SCREEN_SIZE(40*8, 32*8)
3205 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
3206 	MDRV_GFXDECODE(taitoz_gfxdecodeinfo)
3207 	MDRV_PALETTE_LENGTH(4096)
3208 
3209 	MDRV_VIDEO_START(taitoz)
3210 	MDRV_VIDEO_UPDATE(bshark)
3211 
3212 	/* sound hardware */
3213 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
3214 	MDRV_SOUND_ADD(YM2610, ym2610_interfaceb)
3215 MACHINE_DRIVER_END
3216 
3217 
3218 static MACHINE_DRIVER_START( sci )
3219 
3220 	/* basic machine hardware */
3221 	MDRV_CPU_ADD(M68000, 12000000)	/* 12 MHz ??? */
3222 	MDRV_CPU_MEMORY(sci_readmem,sci_writemem)
3223 	MDRV_CPU_VBLANK_INT(sci_interrupt,1)
3224 
3225 	MDRV_CPU_ADD(Z80,16000000/4)
3226 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 4 MHz ??? */
3227 	MDRV_CPU_MEMORY(z80_sound_readmem,z80_sound_writemem)
3228 
3229 	MDRV_CPU_ADD(M68000, 12000000)	/* 12 MHz ??? */
3230 	MDRV_CPU_MEMORY(sci_cpub_readmem,sci_cpub_writemem)
3231 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
3232 
3233 	MDRV_FRAMES_PER_SECOND(60)
3234 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
3235 	MDRV_INTERLEAVE(50)
3236 
3237 	/* video hardware */
3238 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
3239 	MDRV_SCREEN_SIZE(40*8, 32*8)
3240 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
3241 	MDRV_GFXDECODE(taitoz_gfxdecodeinfo)
3242 	MDRV_PALETTE_LENGTH(4096)
3243 
3244 	MDRV_VIDEO_START(taitoz)
3245 	MDRV_VIDEO_UPDATE(sci)
3246 
3247 	/* sound hardware */
3248 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
3249 	MDRV_SOUND_ADD(YM2610, ym2610_interface)
3250 MACHINE_DRIVER_END
3251 
3252 
3253 static MACHINE_DRIVER_START( nightstr )
3254 
3255 	/* basic machine hardware */
3256 	MDRV_CPU_ADD(M68000, 12000000)	/* 12 MHz ??? */
3257 	MDRV_CPU_MEMORY(nightstr_readmem,nightstr_writemem)
3258 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
3259 
3260 	MDRV_CPU_ADD(Z80,16000000/4)
3261 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 4 MHz ??? */
3262 	MDRV_CPU_MEMORY(z80_sound_readmem,z80_sound_writemem)
3263 
3264 	MDRV_CPU_ADD(M68000, 12000000)	/* 12 MHz ??? */
3265 	MDRV_CPU_MEMORY(nightstr_cpub_readmem,nightstr_cpub_writemem)
3266 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
3267 
3268 	MDRV_FRAMES_PER_SECOND(60)
3269 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
3270 	MDRV_INTERLEAVE(100)
3271 
3272 	/* video hardware */
3273 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
3274 	MDRV_SCREEN_SIZE(40*8, 32*8)
3275 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
3276 	MDRV_GFXDECODE(chasehq_gfxdecodeinfo)
3277 	MDRV_PALETTE_LENGTH(4096)
3278 
3279 	MDRV_VIDEO_START(taitoz)
3280 	MDRV_VIDEO_UPDATE(chasehq)
3281 
3282 	/* sound hardware */
3283 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
3284 	MDRV_SOUND_ADD(YM2610, ym2610_interface)
3285 MACHINE_DRIVER_END
3286 
3287 
3288 static MACHINE_DRIVER_START( aquajack )
3289 
3290 	/* basic machine hardware */
3291 	MDRV_CPU_ADD(M68000, 12000000)	/* 12 MHz ??? */
3292 	MDRV_CPU_MEMORY(aquajack_readmem,aquajack_writemem)
3293 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
3294 
3295 	MDRV_CPU_ADD(Z80,16000000/4)
3296 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 4 MHz ??? */
3297 	MDRV_CPU_MEMORY(z80_sound_readmem,z80_sound_writemem)
3298 
3299 	MDRV_CPU_ADD(M68000, 12000000)	/* 12 MHz ??? */
3300 	MDRV_CPU_MEMORY(aquajack_cpub_readmem,aquajack_cpub_writemem)
3301 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
3302 
3303 	MDRV_FRAMES_PER_SECOND(60)
3304 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
3305 	MDRV_INTERLEAVE(500)
3306 
3307 	/* video hardware */
3308 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
3309 	MDRV_SCREEN_SIZE(40*8, 32*8)
3310 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
3311 	MDRV_GFXDECODE(taitoz_gfxdecodeinfo)
3312 	MDRV_PALETTE_LENGTH(4096)
3313 
3314 	MDRV_VIDEO_START(taitoz)
3315 	MDRV_VIDEO_UPDATE(aquajack)
3316 
3317 	/* sound hardware */
3318 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
3319 	MDRV_SOUND_ADD(YM2610, ym2610_interface)
3320 MACHINE_DRIVER_END
3321 
3322 
3323 static MACHINE_DRIVER_START( spacegun )
3324 
3325 	/* basic machine hardware */
3326 	MDRV_CPU_ADD(M68000, 16000000)	/* 16 MHz ??? */
3327 	MDRV_CPU_MEMORY(spacegun_readmem,spacegun_writemem)
3328 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
3329 
3330 	MDRV_CPU_ADD(M68000, 16000000)	/* 16 MHz ??? */
3331 	MDRV_CPU_MEMORY(spacegun_cpub_readmem,spacegun_cpub_writemem)
3332 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
3333 
3334 	MDRV_FRAMES_PER_SECOND(60)
3335 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
3336 
3337 	MDRV_NVRAM_HANDLER(spacegun)
3338 
3339 	/* video hardware */
3340 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
3341 	MDRV_SCREEN_SIZE(40*8, 32*8)
3342 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
3343 	MDRV_GFXDECODE(taitoz_gfxdecodeinfo)
3344 	MDRV_PALETTE_LENGTH(4096)
3345 
3346 	MDRV_VIDEO_START(spacegun)
3347 	MDRV_VIDEO_UPDATE(spacegun)
3348 
3349 	/* sound hardware */
3350 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
3351 	MDRV_SOUND_ADD(YM2610, ym2610_interfaceb)
3352 MACHINE_DRIVER_END
3353 
3354 
3355 static MACHINE_DRIVER_START( dblaxle )
3356 
3357 	/* basic machine hardware */
3358 	MDRV_CPU_ADD(M68000, 16000000)	/* 16 MHz ??? */
3359 	MDRV_CPU_MEMORY(dblaxle_readmem,dblaxle_writemem)
3360 	MDRV_CPU_VBLANK_INT(dblaxle_interrupt,1)
3361 
3362 	MDRV_CPU_ADD(Z80,16000000/4)
3363 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 4 MHz ??? */
3364 	MDRV_CPU_MEMORY(z80_sound_readmem,z80_sound_writemem)
3365 
3366 	MDRV_CPU_ADD(M68000, 16000000)	/* 16 MHz ??? */
3367 	MDRV_CPU_MEMORY(dblaxle_cpub_readmem,dblaxle_cpub_writemem)
3368 	MDRV_CPU_VBLANK_INT(dblaxle_cpub_interrupt,1)
3369 
3370 	MDRV_FRAMES_PER_SECOND(60)
3371 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
3372 	MDRV_INTERLEAVE(10)
3373 
3374 	/* video hardware */
3375 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
3376 	MDRV_SCREEN_SIZE(40*8, 32*8)
3377 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
3378 	MDRV_GFXDECODE(dblaxle_gfxdecodeinfo)
3379 	MDRV_PALETTE_LENGTH(4096)
3380 
3381 	MDRV_VIDEO_START(taitoz)
3382 	MDRV_VIDEO_UPDATE(dblaxle)
3383 
3384 	/* sound hardware */
3385 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
3386 	MDRV_SOUND_ADD(YM2610, ym2610_interface)
3387 MACHINE_DRIVER_END
3388 
3389 
3390 /***************************************************************************
3391                                  DRIVERS
3392 
3393 Contcirc, Dblaxle sound sample rom order is uncertain as sound imperfect
3394 ***************************************************************************/
3395 
3396 ROM_START( contcirc )
3397 	ROM_REGION( 0x40000, REGION_CPU1, 0 )	/* 256K for 68000 code (CPU A) */
3398 	ROM_LOAD16_BYTE( "ic25",      0x00000, 0x20000, CRC(f5c92e42) SHA1(42dfa1895e601df76d7022b83f05c4e5c843fd12) )
3399 	ROM_LOAD16_BYTE( "cc_26.bin", 0x00001, 0x20000, CRC(1345ebe6) SHA1(88b9cc8ba2f7061beb8f6b763583cd45b03bcea1) )
3400 
3401 	ROM_REGION( 0x40000, REGION_CPU3, 0 )	/* 256K for 68000 code (CPU B) */
3402 	ROM_LOAD16_BYTE( "ic35",      0x00000, 0x20000, CRC(16522f2d) SHA1(1d2823d61518936d342df3ed712da5bdfdf6e55a) )
3403 	ROM_LOAD16_BYTE( "cc_36.bin", 0x00001, 0x20000, CRC(a1732ea5) SHA1(b773add433c20633e7acbc99d5cfeb7ccde83371) )
3404 
3405 	ROM_REGION( 0x1c000, REGION_CPU2, 0 )	/* Z80 sound cpu */
3406 	ROM_LOAD( "b33-30",   0x00000, 0x04000, CRC(d8746234) SHA1(39132eedfe2ff4e3133f8020304da0d04dd757db) )
3407 	ROM_CONTINUE(         0x10000, 0x0c000 )	/* banked stuff */
3408 
3409 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
3410 	ROM_LOAD( "b33-02", 0x00000, 0x80000, CRC(f6fb3ba2) SHA1(19b7c4cf33c4737405ebe53e7342578454e6ef95) )	/* SCR 8x8 */
3411 
3412 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
3413 	ROM_LOAD32_BYTE( "b33-06", 0x000000, 0x080000, CRC(2cb40599) SHA1(48b269610f80a42608f563742e5266dcf11638d1) )	/* OBJ 16x8 */
3414 	ROM_LOAD32_BYTE( "b33-05", 0x000001, 0x080000, CRC(bddf9eea) SHA1(284f4ba3dc107b4e26424963d8206c5ec4882983) )
3415 	ROM_LOAD32_BYTE( "b33-04", 0x000002, 0x080000, CRC(8df866a2) SHA1(6b87d8e683fe7d31070b16620ebfee4edf7711b8) )
3416 	ROM_LOAD32_BYTE( "b33-03", 0x000003, 0x080000, CRC(4f6c36d9) SHA1(18b15a991c3daf22b7f3f144edf3bd2abb3917eb) )
3417 
3418 	ROM_REGION( 0x80000, REGION_GFX3, 0 )	/* don't dispose */
3419 	ROM_LOAD( "b33-01", 0x00000, 0x80000, CRC(f11f2be8) SHA1(72ae08dc5bf5f6901fbb52d3b1dabcba90929b38) )	/* ROD, road lines */
3420 
3421 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
3422 	ROM_LOAD16_WORD( "b33-07", 0x00000, 0x80000, CRC(151e1f52) SHA1(118c673d74f27c4e76b321cc0e84f166d9f0d412) )	/* STY spritemap */
3423 
3424 	ROM_REGION( 0x100000, REGION_SOUND1, 0 )	/* ADPCM samples */
3425 	ROM_LOAD( "b33-09", 0x00000, 0x80000, CRC(1e6724b5) SHA1(48bb96b648605a9ceb88ff3b175a87226583c3d6) )
3426 	ROM_LOAD( "b33-10", 0x80000, 0x80000, CRC(e9ce03ab) SHA1(17324e8f0422118bc0912eba5750d80469f40b78) )
3427 
3428 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
3429 	ROM_LOAD( "b33-08", 0x00000, 0x80000, CRC(caa1c4c8) SHA1(15ef4f36e56fab793d2249252c456677ca6a85c9) )
3430 
3431 	ROM_REGION( 0x10000, REGION_USER2, 0 )
3432 	ROM_LOAD( "b14-30", 0x00000, 0x10000, CRC(dccb0c7f) SHA1(42f0af72f559133b74912a4478e1323062be4b77) )	/* unused roms */
3433 	ROM_LOAD( "b14-31", 0x00000, 0x02000, CRC(5c6b013d) SHA1(6d02d4560076213b6fb6fe856143bb533090603e) )
3434 ROM_END
3435 
3436 ROM_START( contcrcu )
3437 	ROM_REGION( 0x40000, REGION_CPU1, 0 )	/* 256K for 68000 code (CPU A) */
3438 	ROM_LOAD16_BYTE( "ic25", 0x00000, 0x20000, CRC(f5c92e42) SHA1(42dfa1895e601df76d7022b83f05c4e5c843fd12) )
3439 	ROM_LOAD16_BYTE( "ic26", 0x00001, 0x20000, CRC(e7c1d1fa) SHA1(75e851629a54facb8804ee8a953ab3265633bbf4) )
3440 
3441 	ROM_REGION( 0x40000, REGION_CPU3, 0 )	/* 256K for 68000 code (CPU B) */
3442 	ROM_LOAD16_BYTE( "ic35", 0x00000, 0x20000, CRC(16522f2d) SHA1(1d2823d61518936d342df3ed712da5bdfdf6e55a) )
3443 	ROM_LOAD16_BYTE( "ic36", 0x00001, 0x20000, CRC(d6741e33) SHA1(8e86789e1664a34ceed85434fd3186f2571f0c4a) )
3444 
3445 	ROM_REGION( 0x1c000, REGION_CPU2, 0 )	/* Z80 sound cpu */
3446 	ROM_LOAD( "b33-30",   0x00000, 0x04000, CRC(d8746234) SHA1(39132eedfe2ff4e3133f8020304da0d04dd757db) )
3447 	ROM_CONTINUE(         0x10000, 0x0c000 )	/* banked stuff */
3448 
3449 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
3450 	ROM_LOAD( "b33-02", 0x00000, 0x80000, CRC(f6fb3ba2) SHA1(19b7c4cf33c4737405ebe53e7342578454e6ef95) )	/* SCR 8x8 */
3451 
3452 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
3453 	ROM_LOAD32_BYTE( "b33-06", 0x000000, 0x080000, CRC(2cb40599) SHA1(48b269610f80a42608f563742e5266dcf11638d1) )	/* OBJ 16x8 */
3454 	ROM_LOAD32_BYTE( "b33-05", 0x000001, 0x080000, CRC(bddf9eea) SHA1(284f4ba3dc107b4e26424963d8206c5ec4882983) )
3455 	ROM_LOAD32_BYTE( "b33-04", 0x000002, 0x080000, CRC(8df866a2) SHA1(6b87d8e683fe7d31070b16620ebfee4edf7711b8) )
3456 	ROM_LOAD32_BYTE( "b33-03", 0x000003, 0x080000, CRC(4f6c36d9) SHA1(18b15a991c3daf22b7f3f144edf3bd2abb3917eb) )
3457 
3458 	ROM_REGION( 0x80000, REGION_GFX3, 0 )	/* don't dispose */
3459 	ROM_LOAD( "b33-01", 0x00000, 0x80000, CRC(f11f2be8) SHA1(72ae08dc5bf5f6901fbb52d3b1dabcba90929b38) )	/* ROD, road lines */
3460 
3461 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
3462 	ROM_LOAD16_WORD( "b33-07", 0x00000, 0x80000, CRC(151e1f52) SHA1(118c673d74f27c4e76b321cc0e84f166d9f0d412) )	/* STY spritemap */
3463 
3464 	ROM_REGION( 0x100000, REGION_SOUND1, 0 )	/* ADPCM samples */
3465 	ROM_LOAD( "b33-09", 0x00000, 0x80000, CRC(1e6724b5) SHA1(48bb96b648605a9ceb88ff3b175a87226583c3d6) )
3466 	ROM_LOAD( "b33-10", 0x80000, 0x80000, CRC(e9ce03ab) SHA1(17324e8f0422118bc0912eba5750d80469f40b78) )
3467 
3468 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
3469 	ROM_LOAD( "b33-08", 0x00000, 0x80000, CRC(caa1c4c8) SHA1(15ef4f36e56fab793d2249252c456677ca6a85c9) )
3470 
3471 	ROM_REGION( 0x10000, REGION_USER2, 0 )
3472 	ROM_LOAD( "b14-30", 0x00000, 0x10000, CRC(dccb0c7f) SHA1(42f0af72f559133b74912a4478e1323062be4b77) )	/* unused roms */
3473 	ROM_LOAD( "b14-31", 0x00000, 0x02000, CRC(5c6b013d) SHA1(6d02d4560076213b6fb6fe856143bb533090603e) )
3474 ROM_END
3475 
3476 ROM_START( chasehq )
3477 	ROM_REGION( 0x80000, REGION_CPU1, 0 )	/* 512K for 68000 code (CPU A) */
3478 	ROM_LOAD16_BYTE( "b52-130.36", 0x00000, 0x20000, CRC(4e7beb46) SHA1(b8890c4a2121aa93cfc3a41ddbb3b840d0804cfa) )
3479 	ROM_LOAD16_BYTE( "b52-136.29", 0x00001, 0x20000, CRC(2f414df0) SHA1(0daad8b1f7512a5af0722983751841b5b18064ac) )
3480 	ROM_LOAD16_BYTE( "b52-131.37", 0x40000, 0x20000, CRC(aa945d83) SHA1(9d8a8186a199cacc0e24cf1ee75d81ab8b056406) )
3481 	ROM_LOAD16_BYTE( "b52-129.30", 0x40001, 0x20000, CRC(0eaebc08) SHA1(1dde3304b251ddeb52f1378ef3845269c3667169) )
3482 
3483 	ROM_REGION( 0x20000, REGION_CPU3, 0 )	/* 128K for 68000 code (CPU B) */
3484 	ROM_LOAD16_BYTE( "b52-132.39", 0x00000, 0x10000, CRC(a2f54789) SHA1(941a6470e3a5ae35d079657260a8d7d6a9fca122) )
3485 	ROM_LOAD16_BYTE( "b52-133.55", 0x00001, 0x10000, CRC(12232f95) SHA1(2894b95fc1d0a6e5b323bf3e7f1968f02b30a845) )
3486 
3487 	ROM_REGION( 0x1c000, REGION_CPU2, 0 )	/* Z80 sound cpu */
3488 	ROM_LOAD( "b52-137.51",   0x00000, 0x04000, CRC(37abb74a) SHA1(1feb1e49102c13a90e02c150472545cd9f6334da) )
3489 	ROM_CONTINUE(             0x10000, 0x0c000 )	/* banked stuff */
3490 
3491 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
3492 	ROM_LOAD( "b52-29.27", 0x00000, 0x80000, CRC(8366d27c) SHA1(d7c5f588b39742927228ce73e5d69bda1e903df6) )	/* SCR 8x8 */
3493 
3494 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
3495 	ROM_LOAD32_BYTE( "b52-34.5",  0x000000, 0x080000, CRC(7d8dce36) SHA1(ca082e647d10378144c05a70a8e4fe352d95eeaf) )
3496 	ROM_LOAD32_BYTE( "b52-35.7",  0x000001, 0x080000, CRC(78eeec0d) SHA1(2e82186ca17c579816865ef21c52aef9e133fbf5) )	/* OBJ A 16x16 */
3497 	ROM_LOAD32_BYTE( "b52-36.9",  0x000002, 0x080000, CRC(61e89e91) SHA1(f655b3caa37a8835c2eb11f4d72e985636ac5379) )
3498 	ROM_LOAD32_BYTE( "b52-37.11", 0x000003, 0x080000, CRC(f02e47b9) SHA1(093864bd18bd58dafa57990e999f394ca3124452) )
3499 
3500 	ROM_REGION( 0x80000, REGION_GFX3, 0 )	/* don't dispose */
3501 	ROM_LOAD( "b52-28.4", 0x00000, 0x80000, CRC(963bc82b) SHA1(e3558aecd1b82ddbf10ab2b71843a3664705f1f1) )	/* ROD, road lines */
3502 
3503 	ROM_REGION( 0x200000, REGION_GFX4, ROMREGION_DISPOSE )
3504 	ROM_LOAD32_BYTE( "b52-30.4",  0x000000, 0x080000, CRC(1b8cc647) SHA1(8807fe01b6804507564fc179adf995bf86521fda) )
3505 	ROM_LOAD32_BYTE( "b52-31.6",  0x000001, 0x080000, CRC(f1998e20) SHA1(b03d4e373e88933391f3533b885817edfca4cfdf) )	/* OBJ B 16x16 */
3506 	ROM_LOAD32_BYTE( "b52-32.8",  0x000002, 0x080000, CRC(8620780c) SHA1(2545fd8fb03dcddc3da86d5ea06a6dc915acd1a1) )
3507 	ROM_LOAD32_BYTE( "b52-33.10", 0x000003, 0x080000, CRC(e6f4b8c4) SHA1(8d15c75a16953aa56fb3dc6fd3b691e227bef622) )
3508 
3509 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
3510 	ROM_LOAD16_WORD( "b52-38.34", 0x00000, 0x80000, CRC(5b5bf7f6) SHA1(71dd5b40b83870d351c9ecaccc4fb98c3a6740ae) )	/* STY spritemap */
3511 
3512 	ROM_REGION( 0x180000, REGION_SOUND1, 0 )	/* ADPCM samples */
3513 	ROM_LOAD( "b52-115.71", 0x000000, 0x080000, CRC(4e117e93) SHA1(51d893fa21793335878c76f6d5987d99da60be04) )
3514 	ROM_LOAD( "b52-114.72", 0x080000, 0x080000, CRC(3a73d6b1) SHA1(419f02a875b30913331db207e344d0eaa275297e) )
3515 	ROM_LOAD( "b52-113.73", 0x100000, 0x080000, CRC(2c6a3a05) SHA1(f2f0dfbbbb6930bf53025064ebae9c07a95c6deb) )
3516 
3517 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
3518 	ROM_LOAD( "b52-116.70", 0x00000, 0x80000, CRC(ad46983c) SHA1(6fcad67456fbd8c967cd4786815f70b57a24a969) )
3519 
3520 	ROM_REGION( 0x10000, REGION_USER2, 0 )
3521 	ROM_LOAD( "b52-01.7",    0x00000, 0x00100, CRC(89719d17) SHA1(50181b8172b0fc08b149db18caf10659be9c517f) )	/* unused roms */
3522 	ROM_LOAD( "b52-03.135",  0x00000, 0x00400, CRC(a3f8490d) SHA1(349b8c9ba914603f72f800a3fc8e8277d756deb1) )
3523 	ROM_LOAD( "b52-06.24",   0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) )
3524 	ROM_LOAD( "b52-18.93",   0x00000, 0x00100, CRC(60bdaf1a) SHA1(0cb9c6b821de9ccc1f38336608dd7ead46cb8d24) )	// identical to b52-18b
3525 	ROM_LOAD( "b52-18a",     0x00000, 0x00100, CRC(6271be0d) SHA1(84282af98fc0de10e88282f7187cd865133ed6ce) )
3526 	ROM_LOAD( "b52-49.68",   0x00000, 0x02000, CRC(60dd2ed1) SHA1(8673b6b3355975fb91cd1491e0ac7c0f590e3824) )
3527 	ROM_LOAD( "b52-50.66",   0x00000, 0x10000, CRC(c189781c) SHA1(af3904ce51f715970965d110313491dbacf188b8) )
3528 	ROM_LOAD( "b52-51.65",   0x00000, 0x10000, CRC(30cc1f79) SHA1(3b0e3e6e8bce7a7d04a5b0103e2ce4e18e52a68e) )
3529 	ROM_LOAD( "b52-126.136", 0x00000, 0x00400, CRC(fa2f840e) SHA1(dd61ee6833bd43bbf619d36ec46f2bfa00880f40) )
3530 	ROM_LOAD( "b52-127.156", 0x00000, 0x00400, CRC(77682a4f) SHA1(da2b3143f1c8688a22d8ec47bbb73b2f2e578480) )
3531 
3532 	// Various pals are listed in Malcor's notes: b52-118 thru 125,
3533 	// b52-16 thru 21, b52-25 thru 27
3534 ROM_END
3535 
3536 ROM_START( chasehqj )
3537 	ROM_REGION( 0x80000, REGION_CPU1, 0 )	/* 512K for 68000 code (CPU A) */
3538 	ROM_LOAD16_BYTE( "b52-140.36", 0x00000, 0x20000, CRC(c1298a4b) SHA1(41981b72c9ebbea8f8a4aa32e74b9ed46dd71e32) )
3539 	ROM_LOAD16_BYTE( "b52-139.29", 0x00001, 0x20000, CRC(997f732e) SHA1(0f7bd4b3c53e1f14830b3c288f2175e7c125c2cc) )
3540 	ROM_LOAD16_BYTE( "b52-131.37", 0x40000, 0x20000, CRC(aa945d83) SHA1(9d8a8186a199cacc0e24cf1ee75d81ab8b056406) )
3541 	ROM_LOAD16_BYTE( "b52-129.30", 0x40001, 0x20000, CRC(0eaebc08) SHA1(1dde3304b251ddeb52f1378ef3845269c3667169) )
3542 
3543 	ROM_REGION( 0x20000, REGION_CPU3, 0 )	/* 128K for 68000 code (CPU B) */
3544 	ROM_LOAD16_BYTE( "b52-132.39", 0x00000, 0x10000, CRC(a2f54789) SHA1(941a6470e3a5ae35d079657260a8d7d6a9fca122) )
3545 	ROM_LOAD16_BYTE( "b52-133.55", 0x00001, 0x10000, CRC(12232f95) SHA1(2894b95fc1d0a6e5b323bf3e7f1968f02b30a845) )
3546 
3547 	ROM_REGION( 0x1c000, REGION_CPU2, 0 )	/* Z80 sound cpu */
3548 	ROM_LOAD( "b52-134.51",    0x00000, 0x04000, CRC(91faac7f) SHA1(05f00e0909444566877d0ef678bae49f107e1628) )
3549 	ROM_CONTINUE(           0x10000, 0x0c000 )	/* banked stuff */
3550 
3551 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
3552 	ROM_LOAD( "b52-29.27", 0x00000, 0x80000, CRC(8366d27c) SHA1(d7c5f588b39742927228ce73e5d69bda1e903df6) )	/* SCR 8x8*/
3553 
3554 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
3555 	ROM_LOAD32_BYTE( "b52-34.5",  0x000000, 0x080000, CRC(7d8dce36) SHA1(ca082e647d10378144c05a70a8e4fe352d95eeaf) )
3556 	ROM_LOAD32_BYTE( "b52-35.7",  0x000001, 0x080000, CRC(78eeec0d) SHA1(2e82186ca17c579816865ef21c52aef9e133fbf5) )	/* OBJ A 16x16 */
3557 	ROM_LOAD32_BYTE( "b52-36.9",  0x000002, 0x080000, CRC(61e89e91) SHA1(f655b3caa37a8835c2eb11f4d72e985636ac5379) )
3558 	ROM_LOAD32_BYTE( "b52-37.11", 0x000003, 0x080000, CRC(f02e47b9) SHA1(093864bd18bd58dafa57990e999f394ca3124452) )
3559 
3560 	ROM_REGION( 0x80000, REGION_GFX3, 0 )	/* don't dispose */
3561 	ROM_LOAD( "b52-28.4", 0x00000, 0x80000, CRC(963bc82b) SHA1(e3558aecd1b82ddbf10ab2b71843a3664705f1f1) )	/* ROD, road lines */
3562 
3563 	ROM_REGION( 0x200000, REGION_GFX4, ROMREGION_DISPOSE )
3564 	ROM_LOAD32_BYTE( "b52-30.4",  0x000000, 0x080000, CRC(1b8cc647) SHA1(8807fe01b6804507564fc179adf995bf86521fda) )
3565 	ROM_LOAD32_BYTE( "b52-31.6",  0x000001, 0x080000, CRC(f1998e20) SHA1(b03d4e373e88933391f3533b885817edfca4cfdf) )	/* OBJ B 16x16 */
3566 	ROM_LOAD32_BYTE( "b52-32.8",  0x000002, 0x080000, CRC(8620780c) SHA1(2545fd8fb03dcddc3da86d5ea06a6dc915acd1a1) )
3567 	ROM_LOAD32_BYTE( "b52-33.10", 0x000003, 0x080000, CRC(e6f4b8c4) SHA1(8d15c75a16953aa56fb3dc6fd3b691e227bef622) )
3568 
3569 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
3570 	ROM_LOAD16_WORD( "b52-38.34", 0x00000, 0x80000, CRC(5b5bf7f6) SHA1(71dd5b40b83870d351c9ecaccc4fb98c3a6740ae) )	/* STY spritemap */
3571 
3572 	ROM_REGION( 0x180000, REGION_SOUND1, 0 )	/* ADPCM samples */
3573 	ROM_LOAD( "b52-41.71", 0x000000, 0x80000, CRC(8204880c) SHA1(4dfd6454b4a4c04db3593e98648afbfe8d1f59ed) )
3574 	ROM_LOAD( "b52-40.72", 0x080000, 0x80000, CRC(f0551055) SHA1(4498cd058a52d5e87c6d502e844908a5df3abf2a) )
3575 	ROM_LOAD( "b52-39.73", 0x100000, 0x80000, CRC(ac9cbbd3) SHA1(792f41fef37ff35067fd0173d944f90279176649) )
3576 
3577 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
3578 	ROM_LOAD( "b52-42.70", 0x00000, 0x80000, CRC(6e617df1) SHA1(e3d1678132130c66506f2e1419db2f6b5b062f74) )
3579 
3580 	ROM_REGION( 0x10000, REGION_USER2, 0 )
3581 	ROM_LOAD( "b52-01.7",    0x00000, 0x00100, CRC(89719d17) SHA1(50181b8172b0fc08b149db18caf10659be9c517f) )	/* unused roms */
3582 	ROM_LOAD( "b52-03.135",  0x00000, 0x00400, CRC(a3f8490d) SHA1(349b8c9ba914603f72f800a3fc8e8277d756deb1) )
3583 	ROM_LOAD( "b52-06.24",   0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) )
3584 	ROM_LOAD( "b52-18.93",   0x00000, 0x00100, CRC(60bdaf1a) SHA1(0cb9c6b821de9ccc1f38336608dd7ead46cb8d24) )	// identical to b52-18b
3585 	ROM_LOAD( "b52-18a",     0x00000, 0x00100, CRC(6271be0d) SHA1(84282af98fc0de10e88282f7187cd865133ed6ce) )
3586 	ROM_LOAD( "b52-49.68",   0x00000, 0x02000, CRC(60dd2ed1) SHA1(8673b6b3355975fb91cd1491e0ac7c0f590e3824) )
3587 	ROM_LOAD( "b52-50.66",   0x00000, 0x10000, CRC(c189781c) SHA1(af3904ce51f715970965d110313491dbacf188b8) )
3588 	ROM_LOAD( "b52-51.65",   0x00000, 0x10000, CRC(30cc1f79) SHA1(3b0e3e6e8bce7a7d04a5b0103e2ce4e18e52a68e) )
3589 	ROM_LOAD( "b52-126.136", 0x00000, 0x00400, CRC(fa2f840e) SHA1(dd61ee6833bd43bbf619d36ec46f2bfa00880f40) )
3590 	ROM_LOAD( "b52-127.156", 0x00000, 0x00400, CRC(77682a4f) SHA1(da2b3143f1c8688a22d8ec47bbb73b2f2e578480) )
3591 ROM_END
3592 
3593 ROM_START( enforce )
3594 	ROM_REGION( 0x40000, REGION_CPU1, 0 )	/* 256K for 68000 code (CPU A) */
3595 	ROM_LOAD16_BYTE( "b58-27.27", 0x00000, 0x20000, CRC(a1aa0191) SHA1(193d936e1bfe0da4ac984aba65d3e4e6c93a4c11) )
3596 	ROM_LOAD16_BYTE( "b58-19.19", 0x00001, 0x20000, CRC(40f43da3) SHA1(bb3d6c6db8df77674bb76c16992d05c297d97c9f) )
3597 
3598 	ROM_REGION( 0x40000, REGION_CPU3, 0 )	/* 256K for 68000 code (CPU B) */
3599 	ROM_LOAD16_BYTE( "b58-26.26", 0x00000, 0x20000, CRC(e823c85c) SHA1(199b19e81c76eb936f4cf31957ae08bed1395bda) )
3600 	ROM_LOAD16_BYTE( "b58-18.18", 0x00001, 0x20000, CRC(65328a3e) SHA1(f51ca107910629e030678e183cc8fd06d2569098) )
3601 
3602 	ROM_REGION( 0x1c000, REGION_CPU2, 0 )	/* Z80 sound cpu */
3603 	ROM_LOAD( "b58-32.41",   0x00000, 0x04000, CRC(f3fd8eca) SHA1(3b1ab64984ea43805b6494f8add26210ed1175c5) )
3604 	ROM_CONTINUE(            0x10000, 0x0c000 )	/* banked stuff */
3605 
3606 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
3607 	ROM_LOAD( "b58-09.13", 0x00000, 0x80000, CRC(9ffd5b31) SHA1(0214fb32012a48560ca9c6ed5ee969d3c41cf95c) )	/* SCR 8x8 */
3608 
3609 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
3610 	ROM_LOAD32_BYTE( "b58-04.7",  0x000000, 0x080000, CRC(9482f08d) SHA1(3fc74b9bebca1d82b300ba72c7297c3bcd69cfa9) )
3611 	ROM_LOAD32_BYTE( "b58-03.6",  0x000001, 0x080000, CRC(158bc440) SHA1(ceab296146363a2e9a48f62118fba6123b4b5a1b) )	/* OBJ 16x8 */
3612 	ROM_LOAD32_BYTE( "b58-02.2",  0x000002, 0x080000, CRC(6a6e307c) SHA1(fc4a68220e0dd0e64d75ba7c7af0c1ac97dc7fd9) )
3613 	ROM_LOAD32_BYTE( "b58-01.1",  0x000003, 0x080000, CRC(01e9f0a8) SHA1(0d3a4dc81702e3c57c790eb8a45caca36cb47d4c) )
3614 
3615 	ROM_REGION( 0x80000, REGION_GFX3, 0 )	/* don't dispose */
3616 	ROM_LOAD( "b58-06.116", 0x00000, 0x80000, CRC(b3495d70) SHA1(ead4c2fd20b8f103a849201c7344cded013eb8bb) )	/* ROD, road lines */
3617 
3618 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
3619 	ROM_LOAD16_WORD( "b58-05.71", 0x00000, 0x80000, CRC(d1f4991b) SHA1(f1c5a9b8dce994d013290e98fda7bedf73e95900) )	/* STY spritemap */
3620 
3621 	ROM_REGION( 0x100000, REGION_SOUND1, 0 )	/* ADPCM samples */
3622 	ROM_LOAD( "b58-07.11", 0x000000, 0x080000, CRC(eeb5ba08) SHA1(fe40333e09339c76e503ce87b42a89b48d487016) )
3623 	ROM_LOAD( "b58-08.12", 0x080000, 0x080000, CRC(049243cf) SHA1(1f3099b6d764114dc4161ed308369d0f3148dc4e) )
3624 
3625 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples ??? */
3626 	ROM_LOAD( "b58-10.14", 0x00000, 0x80000, CRC(edce0cc1) SHA1(1f6cbc60502b8b12b349e48446ce3a4a1f76bccd) )	/* ??? */
3627 
3628 	ROM_REGION( 0x10000, REGION_USER2, 0 )
3629 	ROM_LOAD( "b58-26a.104", 0x00000, 0x10000, CRC(dccb0c7f) SHA1(42f0af72f559133b74912a4478e1323062be4b77) )	/* unused roms */
3630 	ROM_LOAD( "b58-27.56",   0x00000, 0x02000, CRC(5c6b013d) SHA1(6d02d4560076213b6fb6fe856143bb533090603e) )
3631 	ROM_LOAD( "b58-23.52",   0x00000, 0x00100, CRC(7b7d8ff4) SHA1(18842ed8160739cd2e2ccc2db605153dbed6cc0a) )
3632 	ROM_LOAD( "b58-24.51",   0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) )
3633 	ROM_LOAD( "b58-25.75",   0x00000, 0x00100, CRC(de547342) SHA1(3b2b116d4016ddbf46c41c625c7fcfd76129baa7) )
3634 // Add pals...
3635 ROM_END
3636 
3637 ROM_START( bshark )
3638 	ROM_REGION( 0x80000, REGION_CPU1, 0 )	/* 512K for 68000 code (CPU A) */
3639 	ROM_LOAD16_BYTE( "c34_71.98",    0x00000, 0x20000, CRC(df1fa629) SHA1(6cb207e577fac85da654f3dc56e2f9f25c38a76d) )
3640 	ROM_LOAD16_BYTE( "c34_69.75",    0x00001, 0x20000, CRC(a54c137a) SHA1(632bf2d65f54035de2ecb87648dafa877c45e428) )
3641 	ROM_LOAD16_BYTE( "c34_70.97",    0x40000, 0x20000, CRC(d77d81e2) SHA1(d60e586cefd9001e87cae583ca25bf5a8a461d8d) )
3642 	ROM_LOAD16_BYTE( "bshark67.bin", 0x40001, 0x20000, CRC(39307c74) SHA1(65d1cb6b0baee29c1439180b8b4c6907e20b2921) )
3643 
3644 	ROM_REGION( 0x80000, REGION_CPU2, 0 )	/* 512K for 68000 code (CPU B) */
3645 	ROM_LOAD16_BYTE( "c34_74.128", 0x00000, 0x20000, CRC(6869fa99) SHA1(16221f25c865a81ca4f6a987b6de02a3ccf3208c) )
3646 	ROM_LOAD16_BYTE( "c34_72.112", 0x00001, 0x20000, CRC(c09c0f91) SHA1(32c78924617328abb11c094f89a90a92e72ed5e6) )
3647 	ROM_LOAD16_BYTE( "c34_75.129", 0x40000, 0x20000, CRC(6ba65542) SHA1(9ba5af9dd240a198dfa760ca14b0f0c84eb307c9) )
3648 	ROM_LOAD16_BYTE( "c34_73.113", 0x40001, 0x20000, CRC(f2fe62b5) SHA1(e31b5989b747de451ee6c2a5e15ec75235d84e0d) )
3649 
3650 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
3651 	ROM_LOAD( "c34_05.3", 0x00000, 0x80000, CRC(596b83da) SHA1(826cf1e48a017a0cbfcc4a4f507dfb285594178b) )	/* SCR 8x8 */
3652 
3653 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
3654 	ROM_LOAD32_BYTE( "c34_04.17", 0x000000, 0x080000, CRC(2446b0da) SHA1(bce5c73533e2bb7dfa7f18fad510f818cf1a542a) )	/* OBJ 16x8 */
3655 	ROM_LOAD32_BYTE( "c34_03.16", 0x000001, 0x080000, CRC(a18eab78) SHA1(155f0efbfe73e18355804477d4b8954bb47bf1ef) )
3656 	ROM_LOAD32_BYTE( "c34_02.15", 0x000002, 0x080000, CRC(8488ba10) SHA1(60f8f0dc9d4bc6bc452527250221c9915e9dfe6e) )
3657 	ROM_LOAD32_BYTE( "c34_01.14", 0x000003, 0x080000, CRC(3ebe8c63) SHA1(fa7403bf895c041cb64234209c944683ae372e57) )
3658 
3659 	ROM_REGION( 0x80000, REGION_GFX3, 0 )	/* don't dispose */
3660 	ROM_LOAD( "c34_07.42", 0x00000, 0x80000, CRC(edb07808) SHA1(f32b4b93e9125536376d96fbca76c2b2f5f78656) )	/* ROD, road lines */
3661 
3662 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
3663 	ROM_LOAD16_WORD( "c34_06.12", 0x00000, 0x80000, CRC(d200b6eb) SHA1(6bfe3a7dde8d4e983521877d2bb176f5d126b763) )	/* STY spritemap */
3664 
3665 	ROM_REGION( 0x80000, REGION_SOUND1, 0 )	/* ADPCM samples */
3666 	ROM_LOAD( "c34_08.127", 0x00000, 0x80000, CRC(89a30450) SHA1(96b96ca5a3e20cdceb9ac5ddf377fb21a9a529fb) )
3667 
3668 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
3669 	ROM_LOAD( "c34_09.126", 0x00000, 0x80000, CRC(39d12b50) SHA1(5c5d1369597604376943e4825f6c09cc28d66047) )
3670 
3671 	ROM_REGION( 0x10000, REGION_USER2, 0 )
3672 	ROM_LOAD( "c34_18.22", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) )	/* unused roms */
3673 	ROM_LOAD( "c34_19.72", 0x00000, 0x00100, CRC(2ee9c404) SHA1(3a2ddaaaf7abe9f47f7e062b002fd3a61c80f60b) )
3674 	ROM_LOAD( "c34_20.89", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) )
3675 	ROM_LOAD( "c34_21.7",  0x00000, 0x00400, CRC(10728853) SHA1(45d7cc8e06fbe01295cc2194bca9586f0ef8b12b) )
3676 	ROM_LOAD( "c34_22.8",  0x00000, 0x00400, CRC(643e8bfc) SHA1(a6e6086fb8fbd102e01ec72fe60a4232f5909565) )
3677 ROM_END
3678 
3679 ROM_START( bsharkj )
3680 	ROM_REGION( 0x80000, REGION_CPU1, 0 )	/* 512K for 68000 code (CPU A) */
3681 	ROM_LOAD16_BYTE( "c34_71.98", 0x00000, 0x20000, CRC(df1fa629) SHA1(6cb207e577fac85da654f3dc56e2f9f25c38a76d) )
3682 	ROM_LOAD16_BYTE( "c34_69.75", 0x00001, 0x20000, CRC(a54c137a) SHA1(632bf2d65f54035de2ecb87648dafa877c45e428) )
3683 	ROM_LOAD16_BYTE( "c34_70.97", 0x40000, 0x20000, CRC(d77d81e2) SHA1(d60e586cefd9001e87cae583ca25bf5a8a461d8d) )
3684 	ROM_LOAD16_BYTE( "c34_66.74", 0x40001, 0x20000, CRC(a0392dce) SHA1(5d20f39b75e921fda82c33990463cec73879d113) )
3685 
3686 	ROM_REGION( 0x80000, REGION_CPU2, 0 )	/* 512K for 68000 code (CPU B) */
3687 	ROM_LOAD16_BYTE( "c34_74.128", 0x00000, 0x20000, CRC(6869fa99) SHA1(16221f25c865a81ca4f6a987b6de02a3ccf3208c) )
3688 	ROM_LOAD16_BYTE( "c34_72.112", 0x00001, 0x20000, CRC(c09c0f91) SHA1(32c78924617328abb11c094f89a90a92e72ed5e6) )
3689 	ROM_LOAD16_BYTE( "c34_75.129", 0x40000, 0x20000, CRC(6ba65542) SHA1(9ba5af9dd240a198dfa760ca14b0f0c84eb307c9) )
3690 	ROM_LOAD16_BYTE( "c34_73.113", 0x40001, 0x20000, CRC(f2fe62b5) SHA1(e31b5989b747de451ee6c2a5e15ec75235d84e0d) )
3691 
3692 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
3693 	ROM_LOAD( "c34_05.3", 0x00000, 0x80000, CRC(596b83da) SHA1(826cf1e48a017a0cbfcc4a4f507dfb285594178b) )	/* SCR 8x8 */
3694 
3695 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
3696 	ROM_LOAD32_BYTE( "c34_04.17", 0x000000, 0x080000, CRC(2446b0da) SHA1(bce5c73533e2bb7dfa7f18fad510f818cf1a542a) )	/* OBJ 16x8 */
3697 	ROM_LOAD32_BYTE( "c34_03.16", 0x000001, 0x080000, CRC(a18eab78) SHA1(155f0efbfe73e18355804477d4b8954bb47bf1ef) )
3698 	ROM_LOAD32_BYTE( "c34_02.15", 0x000002, 0x080000, CRC(8488ba10) SHA1(60f8f0dc9d4bc6bc452527250221c9915e9dfe6e) )
3699 	ROM_LOAD32_BYTE( "c34_01.14", 0x000003, 0x080000, CRC(3ebe8c63) SHA1(fa7403bf895c041cb64234209c944683ae372e57) )
3700 
3701 	ROM_REGION( 0x80000, REGION_GFX3, 0 )	/* don't dispose */
3702 	ROM_LOAD( "c34_07.42", 0x00000, 0x80000, CRC(edb07808) SHA1(f32b4b93e9125536376d96fbca76c2b2f5f78656) )	/* ROD, road lines */
3703 
3704 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
3705 	ROM_LOAD16_WORD( "c34_06.12", 0x00000, 0x80000, CRC(d200b6eb) SHA1(6bfe3a7dde8d4e983521877d2bb176f5d126b763) )	/* STY spritemap */
3706 
3707 	ROM_REGION( 0x80000, REGION_SOUND1, 0 )	/* ADPCM samples */
3708 	ROM_LOAD( "c34_08.127", 0x00000, 0x80000, CRC(89a30450) SHA1(96b96ca5a3e20cdceb9ac5ddf377fb21a9a529fb) )
3709 
3710 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
3711 	ROM_LOAD( "c34_09.126", 0x00000, 0x80000, CRC(39d12b50) SHA1(5c5d1369597604376943e4825f6c09cc28d66047) )
3712 
3713 	ROM_REGION( 0x10000, REGION_USER2, 0 )
3714 	ROM_LOAD( "c34_18.22", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) )	/* unused roms */
3715 	ROM_LOAD( "c34_19.72", 0x00000, 0x00100, CRC(2ee9c404) SHA1(3a2ddaaaf7abe9f47f7e062b002fd3a61c80f60b) )
3716 	ROM_LOAD( "c34_20.89", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) )
3717 	ROM_LOAD( "c34_21.7",  0x00000, 0x00400, CRC(10728853) SHA1(45d7cc8e06fbe01295cc2194bca9586f0ef8b12b) )
3718 	ROM_LOAD( "c34_22.8",  0x00000, 0x00400, CRC(643e8bfc) SHA1(a6e6086fb8fbd102e01ec72fe60a4232f5909565) )
3719 ROM_END
3720 
3721 ROM_START( sci )
3722 	ROM_REGION( 0x80000, REGION_CPU1, 0 )	/* 512K for 68000 code (CPU A) */
3723 	ROM_LOAD16_BYTE( "c09-37.rom", 0x00000, 0x20000, CRC(0fecea17) SHA1(0ad4454eee6646b0f978b1ba83206d64c1f6d081) )
3724 	ROM_LOAD16_BYTE( "c09-40.rom", 0x00001, 0x20000, CRC(e46ebd9b) SHA1(52b0c1f95e8a664076d8fbc0f6204ca55893e281) )
3725 	ROM_LOAD16_BYTE( "c09-38.rom", 0x40000, 0x20000, CRC(f4404f87) SHA1(8f051f1ffbf323cb3d613bc22afa53676590f29c) )
3726 	ROM_LOAD16_BYTE( "c09-41.rom", 0x40001, 0x20000, CRC(de87bcb9) SHA1(b5537a25871ea90294f3b6f0b6386a883cfdf991) )
3727 
3728 	ROM_REGION( 0x20000, REGION_CPU3, 0 )	/* 128K for 68000 code (CPU B) */
3729 	ROM_LOAD16_BYTE( "c09-33.rom", 0x00000, 0x10000, CRC(cf4e6c5b) SHA1(8d6720b605b8e0c7f0473ba452c79bf5efc2615d) )
3730 	ROM_LOAD16_BYTE( "c09-32.rom", 0x00001, 0x10000, CRC(a4713719) SHA1(b1110e397d3407ec63975cdd92a23cbb16348200) )
3731 
3732 	ROM_REGION( 0x2c000, REGION_CPU2, 0 )	/* Z80 sound cpu */
3733 	ROM_LOAD( "c09-34.rom",   0x00000, 0x04000, CRC(a21b3151) SHA1(f59c7b1ba5edf97d72670ee194ce9fdc5c5b9a58) )
3734 	ROM_CONTINUE(             0x10000, 0x1c000 )	/* banked stuff */
3735 
3736 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
3737 	ROM_LOAD( "c09-05.rom", 0x00000, 0x80000, CRC(890b38f0) SHA1(b478c96214ce027926346a4653250c8ee8a98bdc) )	/* SCR 8x8 */
3738 
3739 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
3740 	ROM_LOAD32_BYTE( "c09-04.rom", 0x000000, 0x080000, CRC(2cbb3c9b) SHA1(9e3d95f76f5f5d385b6a9516af781aefef1eb0ca) )	/* OBJ 16x8 */
3741 	ROM_LOAD32_BYTE( "c09-02.rom", 0x000001, 0x080000, CRC(a83a0389) SHA1(932788b5b5f01326d0fbb2b9fdb94a8c7c004db3) )
3742 	ROM_LOAD32_BYTE( "c09-03.rom", 0x000002, 0x080000, CRC(a31d0e80) SHA1(dfeff1b89dd7b3f19b26e77f2d66f6448cb00553) )
3743 	ROM_LOAD32_BYTE( "c09-01.rom", 0x000003, 0x080000, CRC(64bfea10) SHA1(15ea43092027b1717d0f24fbe6ac2cdf11a7ddc6) )
3744 
3745 	ROM_REGION( 0x80000, REGION_GFX3, 0 )	/* don't dispose */
3746 	ROM_LOAD( "c09-07.rom", 0x00000, 0x80000, CRC(963bc82b) SHA1(e3558aecd1b82ddbf10ab2b71843a3664705f1f1) )	/* ROD, road lines */
3747 
3748 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
3749 	ROM_LOAD16_WORD( "c09-06.rom", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) )	/* STY spritemap */
3750 
3751 	ROM_REGION( 0x180000, REGION_SOUND1, 0 )	/* ADPCM samples */
3752 	ROM_LOAD( "c09-14.rom", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) )
3753 	ROM_LOAD( "c09-13.rom", 0x080000, 0x080000, CRC(d57c41d3) SHA1(3375a1fc6389840544b9fdb96b2fafbc8e3276e2) )
3754 	ROM_LOAD( "c09-12.rom", 0x100000, 0x080000, CRC(56c99fa5) SHA1(3f9a6bc89d847cc4c99d35f98157ea3f187c0f98) )
3755 
3756 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
3757 	ROM_LOAD( "c09-15.rom", 0x00000, 0x80000, CRC(e63b9095) SHA1(c6ea670b5a90ab39429259ec1fefb2bde5d0213f) )
3758 
3759 	ROM_REGION( 0x10000, REGION_USER2, 0 )
3760 	ROM_LOAD( "c09-16.rom", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) )	/* unused roms */
3761 	ROM_LOAD( "c09-23.rom", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) )
3762 //	ROM_LOAD( "c09-21.rom", 0x00000, 0x00???, NO_DUMP )	/* pals (Guru dump) */
3763 //	ROM_LOAD( "c09-22.rom", 0x00000, 0x00???, NO_DUMP )
3764 //	ROM_LOAD( "c09-24.rom", 0x00000, 0x00???, NO_DUMP )
3765 //	ROM_LOAD( "c09-25.rom", 0x00000, 0x00???, NO_DUMP )
3766 //	ROM_LOAD( "c09-26.rom", 0x00000, 0x00???, NO_DUMP )
3767 ROM_END
3768 
3769 ROM_START( scia )
3770 	ROM_REGION( 0x80000, REGION_CPU1, 0 )	/* 512K for 68000 code (CPU A) */
3771 	ROM_LOAD16_BYTE( "c09-28.bin",  0x00000, 0x20000, CRC(630dbaad) SHA1(090f6a97007ac04f64d92ae5823b7254152144af) )
3772 	ROM_LOAD16_BYTE( "c09-30.bin",  0x00001, 0x20000, CRC(68b1a97d) SHA1(c377f7880154b38fe25dc0ec420ca0cd7228fbad) )
3773 	ROM_LOAD16_BYTE( "c09-36.bin",  0x40000, 0x20000, CRC(59e47cba) SHA1(313302bc62ff02b437b1091d394d2010ce66c7e7) )
3774 	ROM_LOAD16_BYTE( "c09-31.bin",  0x40001, 0x20000, CRC(962b1fbf) SHA1(62181a289dfc6d1da674ba4bcbefeb16a67a55e3) )
3775 
3776 	ROM_REGION( 0x20000, REGION_CPU3, 0 )	/* 128K for 68000 code (CPU B) */
3777 	ROM_LOAD16_BYTE( "c09-33.rom", 0x00000, 0x10000, CRC(cf4e6c5b) SHA1(8d6720b605b8e0c7f0473ba452c79bf5efc2615d) )
3778 	ROM_LOAD16_BYTE( "c09-32.rom", 0x00001, 0x10000, CRC(a4713719) SHA1(b1110e397d3407ec63975cdd92a23cbb16348200) )
3779 
3780 	ROM_REGION( 0x2c000, REGION_CPU2, 0 )	/* Z80 sound cpu */
3781 	ROM_LOAD( "c09-34.rom",   0x00000, 0x04000, CRC(a21b3151) SHA1(f59c7b1ba5edf97d72670ee194ce9fdc5c5b9a58) )
3782 	ROM_CONTINUE(             0x10000, 0x1c000 )	/* banked stuff */
3783 
3784 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
3785 	ROM_LOAD( "c09-05.rom", 0x00000, 0x80000, CRC(890b38f0) SHA1(b478c96214ce027926346a4653250c8ee8a98bdc) )	/* SCR 8x8 */
3786 
3787 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
3788 	ROM_LOAD32_BYTE( "c09-04.rom", 0x000000, 0x080000, CRC(2cbb3c9b) SHA1(9e3d95f76f5f5d385b6a9516af781aefef1eb0ca) )	/* OBJ 16x8 */
3789 	ROM_LOAD32_BYTE( "c09-02.rom", 0x000001, 0x080000, CRC(a83a0389) SHA1(932788b5b5f01326d0fbb2b9fdb94a8c7c004db3) )
3790 	ROM_LOAD32_BYTE( "c09-03.rom", 0x000002, 0x080000, CRC(a31d0e80) SHA1(dfeff1b89dd7b3f19b26e77f2d66f6448cb00553) )
3791 	ROM_LOAD32_BYTE( "c09-01.rom", 0x000003, 0x080000, CRC(64bfea10) SHA1(15ea43092027b1717d0f24fbe6ac2cdf11a7ddc6) )
3792 
3793 	ROM_REGION( 0x80000, REGION_GFX3, 0 )	/* don't dispose */
3794 	ROM_LOAD( "c09-07.rom", 0x00000, 0x80000, CRC(963bc82b) SHA1(e3558aecd1b82ddbf10ab2b71843a3664705f1f1) )	/* ROD, road lines */
3795 
3796 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
3797 	ROM_LOAD16_WORD( "c09-06.rom", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) )	/* STY spritemap */
3798 
3799 	ROM_REGION( 0x180000, REGION_SOUND1, 0 )	/* ADPCM samples */
3800 	ROM_LOAD( "c09-14.rom", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) )
3801 	ROM_LOAD( "c09-13.rom", 0x080000, 0x080000, CRC(d57c41d3) SHA1(3375a1fc6389840544b9fdb96b2fafbc8e3276e2) )
3802 	ROM_LOAD( "c09-12.rom", 0x100000, 0x080000, CRC(56c99fa5) SHA1(3f9a6bc89d847cc4c99d35f98157ea3f187c0f98) )
3803 
3804 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
3805 	ROM_LOAD( "c09-15.rom", 0x00000, 0x80000, CRC(e63b9095) SHA1(c6ea670b5a90ab39429259ec1fefb2bde5d0213f) )
3806 
3807 	ROM_REGION( 0x10000, REGION_USER2, 0 )
3808 	ROM_LOAD( "c09-16.rom", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) )	/* unused roms */
3809 	ROM_LOAD( "c09-23.rom", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) )
3810 ROM_END
3811 
3812 ROM_START( sciu )
3813 	ROM_REGION( 0x80000, REGION_CPU1, 0 )	/* 512K for 68000 code (CPU A) */
3814 	ROM_LOAD16_BYTE( "c09-43.37",  0x00000, 0x20000, CRC(20a9343e) SHA1(b0185ddbda827236b7b41687f18c92e10c2dbd3a) )
3815 	ROM_LOAD16_BYTE( "c09-44.40",  0x00001, 0x20000, CRC(7524338a) SHA1(f4e68a4d09f843f4697b4b4a4e94b5759a14fd01) )
3816 	ROM_LOAD16_BYTE( "c09-41.38",  0x40000, 0x20000, CRC(83477f11) SHA1(f6dba2137a182dae215cf212bf85f4528e3d006d) )
3817 	ROM_LOAD16_BYTE( "c09-41.rom", 0x40001, 0x20000, CRC(de87bcb9) SHA1(b5537a25871ea90294f3b6f0b6386a883cfdf991) )
3818 
3819 	ROM_REGION( 0x20000, REGION_CPU3, 0 )	/* 128K for 68000 code (CPU B) */
3820 	ROM_LOAD16_BYTE( "c09-33.rom", 0x00000, 0x10000, CRC(cf4e6c5b) SHA1(8d6720b605b8e0c7f0473ba452c79bf5efc2615d) )
3821 	ROM_LOAD16_BYTE( "c09-32.rom", 0x00001, 0x10000, CRC(a4713719) SHA1(b1110e397d3407ec63975cdd92a23cbb16348200) )
3822 
3823 	ROM_REGION( 0x2c000, REGION_CPU2, 0 )	/* Z80 sound cpu */
3824 	ROM_LOAD( "c09-34.rom",   0x00000, 0x04000, CRC(a21b3151) SHA1(f59c7b1ba5edf97d72670ee194ce9fdc5c5b9a58) )
3825 	ROM_CONTINUE(             0x10000, 0x1c000 )	/* banked stuff */
3826 
3827 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
3828 	ROM_LOAD( "c09-05.rom", 0x00000, 0x80000, CRC(890b38f0) SHA1(b478c96214ce027926346a4653250c8ee8a98bdc) )	/* SCR 8x8 */
3829 
3830 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
3831 	ROM_LOAD32_BYTE( "c09-04.rom", 0x000000, 0x080000, CRC(2cbb3c9b) SHA1(9e3d95f76f5f5d385b6a9516af781aefef1eb0ca) )	/* OBJ 16x8 */
3832 	ROM_LOAD32_BYTE( "c09-02.rom", 0x000001, 0x080000, CRC(a83a0389) SHA1(932788b5b5f01326d0fbb2b9fdb94a8c7c004db3) )
3833 	ROM_LOAD32_BYTE( "c09-03.rom", 0x000002, 0x080000, CRC(a31d0e80) SHA1(dfeff1b89dd7b3f19b26e77f2d66f6448cb00553) )
3834 	ROM_LOAD32_BYTE( "c09-01.rom", 0x000003, 0x080000, CRC(64bfea10) SHA1(15ea43092027b1717d0f24fbe6ac2cdf11a7ddc6) )
3835 
3836 	ROM_REGION( 0x80000, REGION_GFX3, 0 )	/* don't dispose */
3837 	ROM_LOAD( "c09-07.rom", 0x00000, 0x80000, CRC(963bc82b) SHA1(e3558aecd1b82ddbf10ab2b71843a3664705f1f1) )	/* ROD, road lines */
3838 
3839 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
3840 	ROM_LOAD16_WORD( "c09-06.rom", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) )	/* STY spritemap */
3841 
3842 	ROM_REGION( 0x180000, REGION_SOUND1, 0 )	/* ADPCM samples */
3843 	ROM_LOAD( "c09-14.rom", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) )
3844 	ROM_LOAD( "c09-13.rom", 0x080000, 0x080000, CRC(d57c41d3) SHA1(3375a1fc6389840544b9fdb96b2fafbc8e3276e2) )
3845 	ROM_LOAD( "c09-12.rom", 0x100000, 0x080000, CRC(56c99fa5) SHA1(3f9a6bc89d847cc4c99d35f98157ea3f187c0f98) )
3846 
3847 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
3848 	ROM_LOAD( "c09-15.rom", 0x00000, 0x80000, CRC(e63b9095) SHA1(c6ea670b5a90ab39429259ec1fefb2bde5d0213f) )
3849 
3850 	ROM_REGION( 0x10000, REGION_USER2, 0 )
3851 	ROM_LOAD( "c09-16.rom", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) )	/* unused roms */
3852 	ROM_LOAD( "c09-23.rom", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) )
3853 ROM_END
3854 
3855 ROM_START( nightstr )
3856 	ROM_REGION( 0x80000, REGION_CPU1, 0 )	/* 512K for 68000 code (CPU A) */
3857 	ROM_LOAD16_BYTE( "b91-45.bin", 0x00000, 0x20000, CRC(7ad63421) SHA1(4ecfc3c8cd691d878e5d9212ccff0d225bb06bd9) )
3858 	ROM_LOAD16_BYTE( "b91-44.bin", 0x00001, 0x20000, CRC(4bc30adf) SHA1(531d6ee9c8ff0d4ed07c15465ec7cb78cf976115) )
3859 	ROM_LOAD16_BYTE( "b91-43.bin", 0x40000, 0x20000, CRC(3e6f727a) SHA1(ae837131a4c0c9bc5deba155c2a5b7ae72f1d070) )
3860 	ROM_LOAD16_BYTE( "b91-46.bin", 0x40001, 0x20000, CRC(e870be95) SHA1(9a83df2c88a029bc40f5ce074143778ea555a2ba) )
3861 
3862 	ROM_REGION( 0x40000, REGION_CPU3, 0 )	/* 256K for 68000 code (CPU B) */
3863 	ROM_LOAD16_BYTE( "b91-39.bin", 0x00000, 0x20000, CRC(725b23ae) SHA1(d4b4335863d32b9a81f7461240e960bf345c9835) )
3864 	ROM_LOAD16_BYTE( "b91-40.bin", 0x00001, 0x20000, CRC(81fb364d) SHA1(f02733509039cde2c1de616e0a7969e31de1007a) )
3865 
3866 	ROM_REGION( 0x2c000, REGION_CPU2, 0 )	/* Z80 sound cpu */
3867 	ROM_LOAD( "b91-41.bin",   0x00000, 0x04000, CRC(2694bb42) SHA1(ee770472655ac0ef55eeff04037457dbf6744e4f) )
3868 	ROM_CONTINUE(             0x10000, 0x1c000 )	/* banked stuff */
3869 
3870 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
3871 	ROM_LOAD( "b91-11.bin", 0x00000, 0x80000, CRC(fff8ce31) SHA1(fc729de92937a805d79379228d7a30041594c0df) )	/* SCR 8x8 */
3872 
3873 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
3874 	ROM_LOAD32_BYTE( "b91-04.bin", 0x000000, 0x080000, CRC(8ca1970d) SHA1(d8504298a38a95f1d8f3a2fba479ec75fe4d5de7) )	/* OBJ A 16x16 */
3875 	ROM_LOAD32_BYTE( "b91-03.bin", 0x000001, 0x080000, CRC(cd5fed39) SHA1(c16c67cc998889288e6e96535fd8e61afc93bc78) )
3876 	ROM_LOAD32_BYTE( "b91-02.bin", 0x000002, 0x080000, CRC(457c64b8) SHA1(443f13d56d53ca6a7750ec974da675bad3f34a38) )
3877 	ROM_LOAD32_BYTE( "b91-01.bin", 0x000003, 0x080000, CRC(3731d94f) SHA1(2978d3eb1f44595681e84f3aa8dc03d34a191455) )
3878 
3879 	ROM_REGION( 0x80000, REGION_GFX3, 0 )	/* don't dispose */
3880 	ROM_LOAD( "b91-10.bin", 0x00000, 0x80000, CRC(1d8f05b4) SHA1(04caa6a0887b90860c426a973dc3c3270e996818) )	/* ROD, road lines */
3881 
3882 	ROM_REGION( 0x200000, REGION_GFX4, ROMREGION_DISPOSE )
3883 	ROM_LOAD32_BYTE( "b91-08.bin", 0x000000, 0x080000, CRC(66f35c34) SHA1(9040390fa9c626a54076a9461e0e198f059e2cb1) )	/* OBJ B 16x16 */
3884 	ROM_LOAD32_BYTE( "b91-07.bin", 0x000001, 0x080000, CRC(4d8ec6cf) SHA1(2b7c10b459dc45313c4c90899a73c42c55b6c5c9) )
3885 	ROM_LOAD32_BYTE( "b91-06.bin", 0x000002, 0x080000, CRC(a34dc839) SHA1(e1fcb763dbc562a62e862297458bde66d691606c) )
3886 	ROM_LOAD32_BYTE( "b91-05.bin", 0x000003, 0x080000, CRC(5e72ac90) SHA1(c28c2718e873be5a254992ef8db256a394ca03ff) )
3887 
3888 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
3889 	ROM_LOAD16_WORD( "b91-09.bin", 0x00000, 0x80000, CRC(5f247ca2) SHA1(3b89e5d035f27f62a14c5c7a976c804f9bb5c04d) )	/* STY spritemap */
3890 
3891 	ROM_REGION( 0x100000, REGION_SOUND1, 0 )	/* ADPCM samples */
3892 	ROM_LOAD( "b91-13.bin", 0x00000, 0x80000, CRC(8c7bf0f5) SHA1(6e18531991225c24a9722c9fbe1af6ae6e9b866b) )
3893 	ROM_LOAD( "b91-12.bin", 0x80000, 0x80000, CRC(da77c7af) SHA1(49662a69b83739e2e0209cabff83995a951383f4) )
3894 
3895 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
3896 	ROM_LOAD( "b91-14.bin", 0x00000, 0x80000, CRC(6bc314d3) SHA1(ae3e9c6b853bab4ec81a6bd951b39a4bc883f456) )
3897 
3898 	ROM_REGION( 0x10000, REGION_USER2, 0 )
3899 	ROM_LOAD( "b91-26.bin", 0x00000, 0x400,   CRC(77682a4f) SHA1(da2b3143f1c8688a22d8ec47bbb73b2f2e578480) )	/* unused roms */
3900 	ROM_LOAD( "b91-27.bin", 0x00000, 0x400,   CRC(a3f8490d) SHA1(349b8c9ba914603f72f800a3fc8e8277d756deb1) )
3901 	ROM_LOAD( "b91-28.bin", 0x00000, 0x400,   CRC(fa2f840e) SHA1(dd61ee6833bd43bbf619d36ec46f2bfa00880f40) )
3902 	ROM_LOAD( "b91-29.bin", 0x00000, 0x2000,  CRC(ad685be8) SHA1(e7681d76fa216c124c54544393c4f6a08fd7d74d) )
3903 	ROM_LOAD( "b91-30.bin", 0x00000, 0x10000, CRC(30cc1f79) SHA1(3b0e3e6e8bce7a7d04a5b0103e2ce4e18e52a68e) )
3904 	ROM_LOAD( "b91-31.bin", 0x00000, 0x10000, CRC(c189781c) SHA1(af3904ce51f715970965d110313491dbacf188b8) )
3905 	ROM_LOAD( "b91-32.bin", 0x00000, 0x100,   CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) )
3906 	ROM_LOAD( "b91-33.bin", 0x00000, 0x100,   CRC(89719d17) SHA1(50181b8172b0fc08b149db18caf10659be9c517f) )
3907 ROM_END
3908 
3909 ROM_START( aquajack )
3910 	ROM_REGION( 0x40000, REGION_CPU1, 0 )	/* 256K for 68000 code (CPU A) */
3911 	ROM_LOAD16_BYTE( "b77-22.rom", 0x00000, 0x20000, CRC(67400dde) SHA1(1e47c4fbd4449f2d973ac962ad58f22502d59198) )
3912 	ROM_LOAD16_BYTE( "34.17",      0x00001, 0x20000, CRC(cd4d0969) SHA1(d610e7847a09f1ca892007440fa1b431bb0c41d2) )
3913 
3914 	ROM_REGION( 0x40000, REGION_CPU3, 0 )	/* 256K for 68000 code (CPU B) */
3915 	ROM_LOAD16_BYTE( "b77-24.rom", 0x00000, 0x20000, CRC(95e643ed) SHA1(d47ddd50c744f33b3cbd5ef90880ca577977f5ca) )
3916 	ROM_LOAD16_BYTE( "b77-23.rom", 0x00001, 0x20000, CRC(395a7d1c) SHA1(22cbbabb07f43e72a6139b6b9d68d6c1146d727f) )
3917 
3918 	ROM_REGION( 0x1c000, REGION_CPU2, 0 )	/* sound cpu */
3919 	ROM_LOAD( "b77-20.rom",   0x00000, 0x04000, CRC(84ba54b7) SHA1(84e51c1a6a5b4eb2a65f4a6d9d54037323348f50) )
3920 	ROM_CONTINUE(             0x10000, 0x0c000 )	/* banked stuff */
3921 
3922 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
3923 	ROM_LOAD( "b77-05.rom", 0x00000, 0x80000, CRC(7238f0ff) SHA1(95e2d6815e99392358bbeabf1afbf237673f2e24) )	/* SCR 8x8 */
3924 
3925 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
3926 	ROM_LOAD32_BYTE( "b77-04.rom", 0x000000, 0x80000, CRC(bed0be6c) SHA1(2b11824f741b7f6755bd78f594af19b63a29092f) )	/* OBJ 16x8 */
3927 	ROM_LOAD32_BYTE( "b77-03.rom", 0x000001, 0x80000, CRC(9a3030a7) SHA1(7b60fd066eccd04d9fcc131d9d06f151334ccab2) )
3928 	ROM_LOAD32_BYTE( "b77-02.rom", 0x000002, 0x80000, CRC(daea0d2e) SHA1(10640651824234a589838e8f017964b79de79cb4) )
3929 	ROM_LOAD32_BYTE( "b77-01.rom", 0x000003, 0x80000, CRC(cdab000d) SHA1(d83ee7f1dc17ab113bac38d0d062bb1519ff69f7) )
3930 
3931 	ROM_REGION( 0x80000, REGION_GFX3, 0 )	/* don't dispose */
3932 	ROM_LOAD( "b77-07.rom", 0x000000, 0x80000, CRC(7db1fc5e) SHA1(fbc88c2179b881d34d3a33d0a901d8da3445f9a8) )	/* ROD, road lines */
3933 
3934 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
3935 	ROM_LOAD16_WORD( "b77-06.rom", 0x00000, 0x80000, CRC(ce2aed00) SHA1(9c992717914b13eb271122ecf7cca3634b013e56) )	/* STY spritemap */
3936 
3937 	ROM_REGION( 0x80000, REGION_SOUND1, 0 )	/* ADPCM samples */
3938 	ROM_LOAD( "b77-09.rom", 0x00000, 0x80000, CRC(948e5ad9) SHA1(35cd6706470f01b5a244817d10fc65c075ff29b1) )
3939 
3940 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
3941 	ROM_LOAD( "b77-08.rom", 0x00000, 0x80000, CRC(119b9485) SHA1(2c9cd90be20df769e09016abccf59c8f119da286) )
3942 
3943 /*	(no unused roms in my set, there should be an 0x10000 one like the rest) */
3944 ROM_END
3945 
3946 ROM_START( aquajckj )
3947 	ROM_REGION( 0x40000, REGION_CPU1, 0 )	/* 256K for 68000 code (CPU A) */
3948 	ROM_LOAD16_BYTE( "b77-22.rom", 0x00000, 0x20000, CRC(67400dde) SHA1(1e47c4fbd4449f2d973ac962ad58f22502d59198) )
3949 	ROM_LOAD16_BYTE( "b77-21.rom", 0x00001, 0x20000, CRC(23436845) SHA1(e62111c902453e1b655c7f25bcea938a6f13aed2) )
3950 
3951 	ROM_REGION( 0x40000, REGION_CPU3, 0 )	/* 256K for 68000 code (CPU B) */
3952 	ROM_LOAD16_BYTE( "b77-24.rom", 0x00000, 0x20000, CRC(95e643ed) SHA1(d47ddd50c744f33b3cbd5ef90880ca577977f5ca) )
3953 	ROM_LOAD16_BYTE( "b77-23.rom", 0x00001, 0x20000, CRC(395a7d1c) SHA1(22cbbabb07f43e72a6139b6b9d68d6c1146d727f) )
3954 
3955 	ROM_REGION( 0x1c000, REGION_CPU2, 0 )	/* sound cpu */
3956 	ROM_LOAD( "b77-20.rom",   0x00000, 0x04000, CRC(84ba54b7) SHA1(84e51c1a6a5b4eb2a65f4a6d9d54037323348f50) )
3957 	ROM_CONTINUE(             0x10000, 0x0c000 )	/* banked stuff */
3958 
3959 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
3960 	ROM_LOAD( "b77-05.rom", 0x00000, 0x80000, CRC(7238f0ff) SHA1(95e2d6815e99392358bbeabf1afbf237673f2e24) )	/* SCR 8x8 */
3961 
3962 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
3963 	ROM_LOAD32_BYTE( "b77-04.rom", 0x000000, 0x80000, CRC(bed0be6c) SHA1(2b11824f741b7f6755bd78f594af19b63a29092f) )	/* OBJ 16x8 */
3964 	ROM_LOAD32_BYTE( "b77-03.rom", 0x000001, 0x80000, CRC(9a3030a7) SHA1(7b60fd066eccd04d9fcc131d9d06f151334ccab2) )
3965 	ROM_LOAD32_BYTE( "b77-02.rom", 0x000002, 0x80000, CRC(daea0d2e) SHA1(10640651824234a589838e8f017964b79de79cb4) )
3966 	ROM_LOAD32_BYTE( "b77-01.rom", 0x000003, 0x80000, CRC(cdab000d) SHA1(d83ee7f1dc17ab113bac38d0d062bb1519ff69f7) )
3967 
3968 	ROM_REGION( 0x80000, REGION_GFX3, 0 )	/* don't dispose */
3969 	ROM_LOAD( "b77-07.rom", 0x000000, 0x80000, CRC(7db1fc5e) SHA1(fbc88c2179b881d34d3a33d0a901d8da3445f9a8) )	/* ROD, road lines */
3970 
3971 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
3972 	ROM_LOAD16_WORD( "b77-06.rom", 0x00000, 0x80000, CRC(ce2aed00) SHA1(9c992717914b13eb271122ecf7cca3634b013e56) )	/* STY spritemap */
3973 
3974 	ROM_REGION( 0x80000, REGION_SOUND1, 0 )	/* ADPCM samples */
3975 	ROM_LOAD( "b77-09.rom", 0x00000, 0x80000, CRC(948e5ad9) SHA1(35cd6706470f01b5a244817d10fc65c075ff29b1) )
3976 
3977 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
3978 	ROM_LOAD( "b77-08.rom", 0x00000, 0x80000, CRC(119b9485) SHA1(2c9cd90be20df769e09016abccf59c8f119da286) )
3979 
3980 /*	(no unused roms in my set, there should be an 0x10000 one like the rest) */
3981 ROM_END
3982 
3983 ROM_START( spacegun )
3984 	ROM_REGION( 0x80000, REGION_CPU1, 0 )	/* 512K for 68000 code (CPU A) */
3985 	ROM_LOAD16_BYTE( "c57-18.62", 0x00000, 0x20000, CRC(19d7d52e) SHA1(4361929a43f911864ece4dcd06995ea6b6156c59) )
3986 	ROM_LOAD16_BYTE( "c57-20.74", 0x00001, 0x20000, CRC(2e58253f) SHA1(36fb52ce1c6cf9f537cf500ba330b167871969b9) )
3987 	ROM_LOAD16_BYTE( "c57-17.59", 0x40000, 0x20000, CRC(e197edb8) SHA1(2ffd000aac1825ecd564c273f0cc055710ba4050) )
3988 	ROM_LOAD16_BYTE( "c57-22.73", 0x40001, 0x20000, CRC(5855fde3) SHA1(fcd6d7ed16b61b9023596f0efb7f6971060a2e0b) )
3989 
3990 	ROM_REGION( 0x40000, REGION_CPU2, 0 )	/* 256K for 68000 code (CPU B) */
3991 	ROM_LOAD16_BYTE( "c57-15.27", 0x00000, 0x20000, CRC(b36eb8f1) SHA1(e6e9fb844fd9acc6ee8a515a964d5df8de088a8c) )
3992 	ROM_LOAD16_BYTE( "c57-16.29", 0x00001, 0x20000, CRC(bfb5d1e7) SHA1(cbf22e9043aac54e08c5da74d973da27844170ef) )
3993 
3994 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
3995 	ROM_LOAD( "c57-06.52", 0x00000, 0x80000, CRC(4ebadd5b) SHA1(d32a52b4d7dd19b0fa2551f93ce3d5cbcf2bc158) )		/* SCR 8x8 */
3996 
3997 	ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE )
3998 	ROM_LOAD32_BYTE( "c57-01.25", 0x000000, 0x100000, CRC(f901b04e) SHA1(24bac1c3a0c585966a7cbeeebd9b2dd3acf45a67) )	/* OBJ 16x8 */
3999 	ROM_LOAD32_BYTE( "c57-02.24", 0x000001, 0x100000, CRC(21ee4633) SHA1(ddb948b165127c8fb1a988b5a0f17f92117f1b66) )
4000 	ROM_LOAD32_BYTE( "c57-03.12", 0x000002, 0x100000, CRC(fafca86f) SHA1(dc6ea78f0deafef632d8bd3677ec74e797dc69a2) )
4001 	ROM_LOAD32_BYTE( "c57-04.11", 0x000003, 0x100000, CRC(a9787090) SHA1(8c05c4c0d14a9f60defb37225da37aadf946c563) )
4002 
4003 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
4004 	ROM_LOAD16_WORD( "c57-05.36", 0x00000, 0x80000, CRC(6a70eb2e) SHA1(307dd876af65204e86e094b4015ffb4a655824f8) )	/* STY spritemap */
4005 
4006 	ROM_REGION( 0x80000, REGION_SOUND1, 0 )	/* ADPCM samples */
4007 	ROM_LOAD( "c57-07.76", 0x00000, 0x80000, CRC(ad653dc1) SHA1(2ec440f793b0a686233fbe61c9462f8365c42b65) )
4008 
4009 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
4010 	ROM_LOAD( "c57-08.75", 0x00000, 0x80000, CRC(22593550) SHA1(e802e947e6947d146e1b57dbff7ac021e19e7b2b) )
4011 
4012 /*	(no unused 0x10000 rom like the rest?) */
4013 	ROM_REGION( 0x10000, REGION_USER2, 0 )
4014 //	ROM_LOAD( "c57-09.9",  0x00000, 0xada, CRC(306f130b) )	/* pals */
4015 //	ROM_LOAD( "c57-10.47", 0x00000, 0xcd5, CRC(f11474bd) )
4016 //	ROM_LOAD( "c57-11.48", 0x00000, 0xada, CRC(b33be19f) )
4017 //	ROM_LOAD( "c57-12.61", 0x00000, 0xcd5, CRC(f1847096) )
4018 //	ROM_LOAD( "c57-13.72", 0x00000, 0xada, CRC(795f0a85) )
4019 //	ROM_LOAD( "c57-14.96", 0x00000, 0xada, CRC(5b3c40b7) )
4020 ROM_END
4021 
4022 ROM_START( dblaxle )
4023 	ROM_REGION( 0x80000, REGION_CPU1, 0 )	/* 512K for 68000 code (CPU A) */
4024 	ROM_LOAD16_BYTE( "c78-41.3",  0x00000, 0x20000, CRC(cf297fe4) SHA1(4875de63e8336062c27d83b55938bcb3d08a24a3) )
4025 	ROM_LOAD16_BYTE( "c78-43.5",  0x00001, 0x20000, CRC(38a8bad6) SHA1(50977a6a364893549d2f7899bbc4e0c67086697e) )
4026 	ROM_LOAD16_BYTE( "c78-42.4",  0x40000, 0x20000, CRC(4124ab2b) SHA1(96c3b6e01a1823259b3d7ca43e0a8631bfe33d0e) )
4027 	ROM_LOAD16_BYTE( "c78-44.6",  0x40001, 0x20000, CRC(50a55b6e) SHA1(62a72d33030d50c157a5cf05f6bdc1b02c9b9ff1) )
4028 
4029 	ROM_REGION( 0x40000, REGION_CPU3, 0 )	/* 256K for 68000 code (CPU B) */
4030 	ROM_LOAD16_BYTE( "c78-30-1.35", 0x00000, 0x20000, CRC(026aac18) SHA1(f50873982b4dc0fc822060f4c20c635efdd75d7e) )
4031 	ROM_LOAD16_BYTE( "c78-31-1.36", 0x00001, 0x20000, CRC(67ce23e8) SHA1(983e998a79e3d4376b005c92ded050be236d37cc) )
4032 
4033 	ROM_REGION( 0x2c000, REGION_CPU2, 0 )	/* sound cpu */
4034 	ROM_LOAD    ( "ic42", 0x00000, 0x04000, CRC(f2186943) SHA1(2e9aed39fddf3aa1db7e20f8a709b6b82cc3e7df) )
4035 	ROM_CONTINUE(         0x10000, 0x1c000 )	/* banked stuff */
4036 
4037 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )
4038 	ROM_LOAD16_BYTE( "c78-10.12", 0x00000, 0x80000, CRC(44b1897c) SHA1(7ad179db6d7dfeb139ea13cb4a231f99d177f2b1) )	/* SCR 8x8 */
4039 	ROM_LOAD16_BYTE( "c78-11.11", 0x00001, 0x80000, CRC(7db3d4a3) SHA1(fc3c44ed36b212688a5bd8dc61321a994578258e) )
4040 
4041 	ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE )
4042 	ROM_LOAD32_BYTE( "c78-08.25", 0x000000, 0x100000, CRC(6c725211) SHA1(3c1765f44fe57b496d305e994516674f71bd4c3c) )	/* OBJ 16x8 */
4043 	ROM_LOAD32_BYTE( "c78-07.33", 0x000001, 0x100000, CRC(9da00d5b) SHA1(f6b664c7495b936ce1b99852da45ec92cb37062a) )
4044 	ROM_LOAD32_BYTE( "c78-06.23", 0x000002, 0x100000, CRC(8309e91b) SHA1(3f27557bc82bf42cc77e3c7e363b51a0b119144d) )
4045 	ROM_LOAD32_BYTE( "c78-05.31", 0x000003, 0x100000, CRC(90001f68) SHA1(5c08dfe6a2e12e6ca84035815563f38fc2c2c029) )
4046 //	ROMX_LOAD      ( "c78-05l.1", 0x000003, 0x080000, CRC(f24bf972) , ROM_SKIP(7) )
4047 //	ROMX_LOAD      ( "c78-05h.2", 0x000007, 0x080000, CRC(c01039b5) , ROM_SKIP(7) )
4048 
4049 	ROM_REGION( 0x80000, REGION_GFX3, 0 )	/* don't dispose */
4050 	ROM_LOAD( "c78-09.12", 0x000000, 0x80000, CRC(0dbde6f5) SHA1(4049271e3738b54e0c56d191889b1aea5664d49f) )	/* ROD, road lines */
4051 
4052 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
4053 	ROM_LOAD16_WORD( "c78-04.3", 0x00000, 0x80000, CRC(cc1aa37c) SHA1(cfa2eb338dc81c98c637c2f0b14d2baea8b115f5) )	/* STY spritemap */
4054 
4055 	ROM_REGION( 0x180000, REGION_SOUND1, 0 )	/* ADPCM samples */
4056 	ROM_LOAD( "c78-12.33", 0x000000, 0x80000, CRC(fbb39585) SHA1(4b7cdf9a3fba71155871b3e52d2301e50bf817ca) )	// Half size ??
4057 	// ??? gap 0x80000-fffff //
4058 	ROM_LOAD( "c78-13.46", 0x100000, 0x80000, CRC(1b363aa2) SHA1(0aae3988024654e98cc0c784307b1c329c8f0783) )
4059 
4060 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
4061 	ROM_LOAD( "c78-14.31",  0x00000, 0x80000, CRC(9cad4dfb) SHA1(9187ef827a3f1bc9233d0e45e72c72c0956c5912) )
4062 
4063 	ROM_REGION( 0x10000, REGION_USER2, 0 )	/* unused roms */
4064 	ROM_LOAD( "c78-25.15",  0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) )	// 98% compression
4065 	ROM_LOAD( "c78-15.22",  0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) )
4066 	ROM_LOAD( "c78-21.74",  0x00000, 0x00100, CRC(2926bf27) SHA1(bfbbe6c71bb29a05959f3de0d940816139f9ebfe) )
4067 	ROM_LOAD( "c84-10.16",  0x00000, 0x00400, CRC(643e8bfc) SHA1(a6e6086fb8fbd102e01ec72fe60a4232f5909565) )
4068 	ROM_LOAD( "c84-11.17",  0x00000, 0x00400, CRC(10728853) SHA1(45d7cc8e06fbe01295cc2194bca9586f0ef8b12b) )
4069 ROM_END
4070 
4071 ROM_START( pwheelsj )
4072 	ROM_REGION( 0x80000, REGION_CPU1, 0 )	/* 512K for 68000 code (CPU A) */
4073 	ROM_LOAD16_BYTE( "c78-26-2.2",  0x00000, 0x20000, CRC(25c8eb2e) SHA1(a526b886c76a19c9ce1abc25cf433574564605a3) )
4074 	ROM_LOAD16_BYTE( "c78-28-2.4",  0x00001, 0x20000, CRC(a9500eb1) SHA1(ad300add3439515512003703df46e2f9317f2ee8) )
4075 	ROM_LOAD16_BYTE( "c78-27-2.3",  0x40000, 0x20000, CRC(08d2cffb) SHA1(a4f117a15499c0df85bf8036f00871caa6723082) )
4076 	ROM_LOAD16_BYTE( "c78-29-2.5",  0x40001, 0x20000, CRC(e1608004) SHA1(c4863264074de09ab38e7b73214f4271728e30aa) )
4077 
4078 	ROM_REGION( 0x40000, REGION_CPU3, 0 )	/* 256K for 68000 code (CPU B) */
4079 	ROM_LOAD16_BYTE( "c78-30-1.35", 0x00000, 0x20000, CRC(026aac18) SHA1(f50873982b4dc0fc822060f4c20c635efdd75d7e) )
4080 	ROM_LOAD16_BYTE( "c78-31-1.36", 0x00001, 0x20000, CRC(67ce23e8) SHA1(983e998a79e3d4376b005c92ded050be236d37cc) )
4081 
4082 	ROM_REGION( 0x2c000, REGION_CPU2, 0 )	/* sound cpu */
4083 	ROM_LOAD    ( "c78-32.42",    0x00000, 0x04000, CRC(1494199c) SHA1(f6b6ccaadbc5440f9342750a79ebc00c019ef355) )
4084 	ROM_CONTINUE(                 0x10000, 0x1c000 )	/* banked stuff */
4085 
4086 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )
4087 	ROM_LOAD16_BYTE( "c78-10.12", 0x00000, 0x80000, CRC(44b1897c) SHA1(7ad179db6d7dfeb139ea13cb4a231f99d177f2b1) )	/* SCR 8x8 */
4088 	ROM_LOAD16_BYTE( "c78-11.11", 0x00001, 0x80000, CRC(7db3d4a3) SHA1(fc3c44ed36b212688a5bd8dc61321a994578258e) )
4089 
4090 	ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE )
4091 	ROM_LOAD32_BYTE( "c78-08.25", 0x000000, 0x100000, CRC(6c725211) SHA1(3c1765f44fe57b496d305e994516674f71bd4c3c) )	/* OBJ 16x8 */
4092 	ROM_LOAD32_BYTE( "c78-07.33", 0x000001, 0x100000, CRC(9da00d5b) SHA1(f6b664c7495b936ce1b99852da45ec92cb37062a) )
4093 	ROM_LOAD32_BYTE( "c78-06.23", 0x000002, 0x100000, CRC(8309e91b) SHA1(3f27557bc82bf42cc77e3c7e363b51a0b119144d) )
4094 	ROM_LOAD32_BYTE( "c78-05.31", 0x000003, 0x100000, CRC(90001f68) SHA1(5c08dfe6a2e12e6ca84035815563f38fc2c2c029) )
4095 
4096 	ROM_REGION( 0x80000, REGION_GFX3, 0 )	/* don't dispose */
4097 	ROM_LOAD( "c78-09.12", 0x000000, 0x80000, CRC(0dbde6f5) SHA1(4049271e3738b54e0c56d191889b1aea5664d49f) )	/* ROD, road lines */
4098 
4099 	ROM_REGION16_LE( 0x80000, REGION_USER1, 0 )
4100 	ROM_LOAD16_WORD( "c78-04.3", 0x00000, 0x80000, CRC(cc1aa37c) SHA1(cfa2eb338dc81c98c637c2f0b14d2baea8b115f5) )	/* STY spritemap */
4101 
4102 	ROM_REGION( 0x180000, REGION_SOUND1, 0 )	/* ADPCM samples */
4103 	ROM_LOAD( "c78-01.33", 0x000000, 0x100000, CRC(90ff1e72) SHA1(6115e3683bc701922953b644427d1ddb471bf037) )
4104 	ROM_LOAD( "c78-02.46", 0x100000, 0x080000, CRC(8882d2b7) SHA1(4d3abac1e50cd5ae79a562f430563032a11e8390) )
4105 
4106 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
4107 	ROM_LOAD( "c78-03.31",  0x00000, 0x80000, CRC(9b926a2f) SHA1(cc2d612441a5cc587e097bb8380b56753b9a4f7c) )
4108 
4109 	ROM_REGION( 0x10000, REGION_USER2, 0 )	/* unused roms */
4110 	ROM_LOAD( "c78-25.15",  0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) )	// 98% compression
4111 	ROM_LOAD( "c78-15.22",  0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) )
4112 	ROM_LOAD( "c78-21.74",  0x00000, 0x00100, CRC(2926bf27) SHA1(bfbbe6c71bb29a05959f3de0d940816139f9ebfe) )
4113 	ROM_LOAD( "c84-10.16",  0x00000, 0x00400, CRC(643e8bfc) SHA1(a6e6086fb8fbd102e01ec72fe60a4232f5909565) )
4114 	ROM_LOAD( "c84-11.17",  0x00000, 0x00400, CRC(10728853) SHA1(45d7cc8e06fbe01295cc2194bca9586f0ef8b12b) )
4115 ROM_END
4116 
4117 
4118 static DRIVER_INIT( taitoz )
4119 {
4120 //	taitosnd_setz80_soundcpu( 2 );
4121 
4122 	cpua_ctrl = 0xff;
4123 	state_save_register_UINT16("main1", 0, "control", &cpua_ctrl, 1);
4124 	state_save_register_func_postload(parse_control);
4125 
4126 	/* these are specific to various games: we ought to split the inits */
4127 	state_save_register_int   ("main2", 0, "control", &sci_int6);
4128 	state_save_register_int   ("main3", 0, "control", &dblaxle_int6);
4129 	state_save_register_int   ("main4", 0, "register", &ioc220_port);
4130 
4131 	state_save_register_int   ("sound1", 0, "sound region", &banknum);
4132 	state_save_register_func_postload(reset_sound_region);
4133 }
4134 
DRIVER_INIT(bshark)4135 static DRIVER_INIT( bshark )
4136 {
4137 	cpua_ctrl = 0xff;
4138 	state_save_register_UINT16("main1", 0, "control", &cpua_ctrl, 1);
4139 	state_save_register_func_postload(parse_control_noz80);
4140 
4141 	state_save_register_UINT16("main2", 0, "control", &eep_latch, 1);
4142 }
4143 
4144 
4145 
4146 /* Release date order: contcirc 1989 (c) date is bogus */
4147 
4148 GAMEX( 1989, contcirc, 0,        contcirc, contcirc, taitoz,   ROT0,               "Taito Corporation Japan", "Continental Circus (World)", GAME_IMPERFECT_GRAPHICS )
4149 GAMEX( 1987, contcrcu, contcirc, contcirc, contcrcu, taitoz,   ROT0,               "Taito America Corporation", "Continental Circus (US)", GAME_IMPERFECT_GRAPHICS )
4150 GAMEX( 1988, chasehq,  0,        chasehq,  chasehq,  taitoz,   ROT0,               "Taito Corporation Japan", "Chase H.Q. (World)", GAME_IMPERFECT_GRAPHICS )
4151 GAMEX( 1988, chasehqj, chasehq,  chasehq,  chasehqj, taitoz,   ROT0,               "Taito Corporation", "Chase H.Q. (Japan)", GAME_IMPERFECT_GRAPHICS )
4152 GAMEX( 1988, enforce,  0,        enforce,  enforce,  taitoz,   ROT0,               "Taito Corporation", "Enforce (Japan)", GAME_IMPERFECT_GRAPHICS )
4153 GAMEX( 1989, bshark,   0,        bshark,   bshark,   bshark,   ORIENTATION_FLIP_X, "Taito America Corporation", "Battle Shark (US)", GAME_IMPERFECT_GRAPHICS )
4154 GAMEX( 1989, bsharkj,  bshark,   bshark,   bsharkj,  bshark,   ORIENTATION_FLIP_X, "Taito Corporation", "Battle Shark (Japan)", GAME_IMPERFECT_GRAPHICS )
4155 GAMEX( 1989, sci,      0,        sci,      sci,      taitoz,   ROT0,               "Taito Corporation Japan", "Special Criminal Investigation (World set 1)", GAME_IMPERFECT_GRAPHICS )
4156 GAMEX( 1989, scia,     sci,      sci,      sci,      taitoz,   ROT0,               "Taito Corporation Japan", "Special Criminal Investigation (World set 2)", GAME_IMPERFECT_GRAPHICS )
4157 GAMEX( 1989, sciu,     sci,      sci,      sciu,     taitoz,   ROT0,               "Taito America Corporation", "Special Criminal Investigation (US)", GAME_IMPERFECT_GRAPHICS )
4158 GAMEX( 1989, nightstr, 0,        nightstr, nightstr, taitoz,   ROT0,               "Taito America Corporation", "Night Striker (US)", GAME_IMPERFECT_GRAPHICS )
4159 GAMEX( 1990, aquajack, 0,        aquajack, aquajack, taitoz,   ROT0,               "Taito Corporation Japan", "Aqua Jack (World)", GAME_IMPERFECT_GRAPHICS )
4160 GAMEX( 1990, aquajckj, aquajack, aquajack, aquajckj, taitoz,   ROT0,               "Taito Corporation", "Aqua Jack (Japan)", GAME_IMPERFECT_GRAPHICS )
4161 GAME ( 1990, spacegun, 0,        spacegun, spacegun, bshark,   ORIENTATION_FLIP_X, "Taito Corporation Japan", "Space Gun (World)" )
4162 GAMEX( 1991, dblaxle,  0,        dblaxle,  dblaxle,  taitoz,   ROT0,               "Taito America Corporation", "Double Axle (US)", GAME_IMPERFECT_GRAPHICS )
4163 GAMEX( 1991, pwheelsj, dblaxle,  dblaxle,  pwheelsj, taitoz,   ROT0,               "Taito Corporation", "Power Wheels (Japan)", GAME_IMPERFECT_GRAPHICS )
4164