1 // license:BSD-3-Clause
2 // copyright-holders:Luca Elia
3 /***************************************************************************
4 
5                             -= Seta Hardware =-
6 
7                     driver by   Luca Elia (l.elia@tin.it)
8 
9 
10 CPU    :    68000 + [65C02] (only in the earlier games)
11 Custom :    X1-001A, X1-002A (SDIP64)   Sprites
12             X1-001
13             X1-002
14             X1-003 or X1-007 (SDIP42)   Video blanking (feeds RGB DACs)
15             X1-004           (SDIP52)   Inputs
16             X1-005
17             X1-006           (SDIP64)   Palette
18             X1-010           (QFP80)    Sound: 16 Bit PCM
19             X1-011           (QFP80)    Graphics mixing
20             X1-012           (QFP100)   Tilemaps
21             X1-014                      Sprites?
22 
23 -------------------------------------------------------------------------------
24 Ordered by Board        Year + Game                             Licensed To
25 -------------------------------------------------------------------------------
26 P0-029-A (M6100287A)    88 Thundercade / Twin Formation (1)     Taito
27 P0-034A  (M6100326A)    88 Twin Eagle                           Taito
28 P0-044B                 88 Caliber 50                           Taito / RomStar
29 P0-045A  (M6100429A)    89 DownTown                             Taito / RomStar
30 P0-045A                 89 Arbalester                           Taito / RomStar
31 P0-046A  (M6100430A)    89 U.S. Classic(2)                      Taito / RomStar
32 P0-047A                 89 The Roulette                         Visco
33 P1-036-A + P0-045-A +
34 P1-049A                 89 Meta Fox                             Taito / RomStar
35 P0-053-1                89 Castle of Dragon/Dragon Unit         Taito / RomStar / Athena
36 P0-053A                 91 Strike Gunner S.T.G                  Athena / Tecmo
37 P0-053A                 92 Quiz Kokology                        Tecmo
38 P0-055B                 89 Wit's                                Athena
39 P0-055D                 90 Thunder & Lightning                  Romstar / Visco
40 Promat PCB              94 Wiggie Waggie(5)                     --
41 Promat PCB              94 Super Bar(5)                         --
42 P0-058A                 90 Jockey Club                          Visco
43 P0-058C                 98 International Toote (6)              Coinmaster (bootleg)
44 P0-063A                 91 Rezon                                Allumer
45 P0-068B  (M6100723A)    92 Block Carnival                       Visco
46 P0-072-2 (prototype)    92 Blandia (prototype)                  Allumer
47 P0-077A  (BP922)        92 Ultraman Club                        Banpresto
48 P0-078A                 92 Blandia (7)                          Allumer
49 P0-079A                 92 Zing Zing Zip                        Allumer / Tecmo
50 P0-079A                 94 Eight Forces                         Tecmo
51 P0-080A  (BP923)        92 SD Gundam Neo Battling (3)           Banpresto
52 ?                       93 Athena no Hatena?                    Athena
53 ?        (93111A)       93 J.J.Squawkers                        Athena / Able
54 ?        (93111A)       93 War Of Aero                          Yang Cheng
55 P0-081A  (BP933KA)      93 Mobile Suit Gundam                   Banpresto
56 P0-083A  (BP931)        93 Ultra Toukon Densetsu                Banpresto / Tsuburaya Prod.
57 P0-092A                 93 Daioh                                Athena
58 P0-072-2 (prototype)    93 Daioh(prototype)                     Athena
59 ?        (93111A)       93 Daioh(conversion)                    Athena
60 P0-096A  (BP934KA)      93 Kamen Rider                          Banpresto
61 P0-097A                 93 Oishii Puzzle ..                     Sunsoft + Atlus
62 bootleg                 9? Triple Fun (4)                       bootleg (Comad?)
63 P0-100A                 93 Quiz Kokology 2                      Tecmo
64 P0-101-1                94 Pro Mahjong Kiwame                   Athena
65 P0-102A                 93 Mad Shark                            Allumer
66 P0-107A  (prototype?)   94 Orbs (prototype?)                    American Sammy
67 P0-107A                 93 Kero Kero Keroppi no Issyoni Asobou  Sammy Industries  [added Chack'n, Hau]
68 P0-111A                 94 Magical Speed                        Allumer
69 P0-114A  (SKB-001)      94 Krazy Bowl                           American Sammy
70 P0-117A  (DH-01)        95 Extreme Downhill                     Sammy Japan
71 P0-117A?                95 Sokonuke Taisen Game                 Sammy Industries
72 P0-120A  (BP954KA)      95 Gundhara                             Banpresto
73 P0-122A  (SZR-001)      95 Zombie Raid                          American Sammy
74 ?                       96 Crazy Fight                          Subsino
75 -------------------------------------------------------------------------------
76 (1) YM2203 + YM3812 instead of X1-010
77 (2) wrong colors
78 (3) Same board as "Ultraman Club" despite the different PCB number
79 (4) this is a bootleg of Oishii Puzzle, in english, is there an official
80     version?  the sound system has been replaced with an OKI M6295
81     hardware is definitely bootleg. standard simple layout board with no
82     custom chips and no manufacturer on the pcb.
83 (5) The game code is based on Thunder and Lightning but the PCB is custom
84     there are a few gfx emulation bugs (flipping of some border tiles and
85     sprites not leaving the screen correctly) its possible the custom hw
86     doesn't behave *exactly* the same as the original seta hw
87 (6) To enter test mode press O (open door), then F2 (turn function key), then E (bet 3-4).
88 (7) Bad tilemaps colors in demo mode are real game bug. Fade-in and fade-out "bad" colors are also right.
89     Bad sprites priorities are real game bugs. The bad-looking colors in Jurane stage are right.
90 
91 Notes:
92 - The NEC D4701 used by Caliber 50 is a mouse interface IC (uPD4701c).
93   Of course it's used to control the spinners. U.S. Classic also uses one to control both trackballs.
94 - DownTown receives the joystick rotation counts through a pair of JST13 connectors (CN1, CN2).
95   On Meta Fox, these connectors are present but unused; they are not populated on Arbalester.
96 - jjsquawk is modified from jjsquawko so nuts don't fall from the trees shaken by white animal.
97 
98 DIP Locations verified from manuals for:
99 - Zing Zing Zip
100 - Extreme Downhill
101 - Kero Kero Keroppi's Let's Play Together
102 
103 TODO:
104 - I think the best way to correctly align tilemaps and sprites and account for
105   both flipping and different visible areas is to have a table with per game
106   vertical and horizontal offsets for sprites, tilemaps and possibly the "floating
107   tilemaps" (made of sprites) for both the flipped and normal screen cases.
108   Current issues: metafox test grid not aligned when screen flipped, madshark & utoukond
109   ("floating tilemaps" sprites when flipped)
110   krzybowl not aligned vertically when screen flipped
111   zombraid not aligned when flipped vertically or horizontally
112 
113 - bad sound in sokonuke?
114 - in msgundam1, colors for the score display screw up after the second animation
115   in attract mode. The end of the animation also has garbled sprites.
116   Note that the animation is not present in msgundam.
117 - Some games: battery backed portion of RAM (e.g. downtown, kiwame, zombraid)
118 - the zombraid crosshair hack can go if the nvram regions are figured out.
119 - Some games: programmable timer that generates IRQ. See e.g. gundhara:
120   lev 4 is triggered by writes at d00000-6 and drives the sound.
121   See also msgundam.
122 
123 - tndrcade: lots of flickering sprites
124 - drgnunit sprite/bg unaligned when screen flipped (check I/O test in service mode)
125 - extdwnhl has some wrong colored tiles in one of the attract mode images and in
126   later tracks.
127 - oisipuzl doesn't support screen flip? tilemap flipping is also kludged in the video driver.
128 - eightfrc has alignment problems both flipped and not
129 - flip screen and mirror support not working correctly in zombraid
130 - gundhara visible area might be smaller (zombraid uses the same MachineDriver, and
131   the current area is right for it)
132 - crazyfgt: emulate protection & tickets, fix graphics glitches, find correct clocks,
133   level 2 interrupt should probably be triggered by the 3812 but sound tends to die that way.
134 - jjsquawk: Player's shot sound is missing (not requested to X1-010?).
135   Many sounds are wrong since MAME 0.62.
136   i.e.
137   all scene: when you beat enemies or yellow walking eggs
138   stage 1: weasels throw eggs, white animals (shaking trees) are damaged, rabbit jump
139   stage 2: when BOX-MEN gets angry
140 - games using 6bpp gfx switch tilemaps color mode. Only blandia uses both, while the other ones use only mode 1, thus mode 0 is untested for them
141 
142 
143 ***************************************************************************/
144 
145 /***************************************************************************
146 
147 Thundercade / Twin Formation
148 Taito America Corp./Romstar USA/Seta, 1987
149 
150 PCB Layout
151 ---------
152 M6100287A
153 P0-029-A
154 |------------------------------------------------------------------|
155 |M    L    K     J     H     G     F     E     D     C     B     A1|
156 |A UA0-4  UA0-3  4364  UA0-2  UA0-1  4364           16MHz          |
157 |                                         X1-001           X1-002 2|
158 |  68000                                                           |
159 |                                                                  |
160 |                                                                 3|
161 |                                                                  |
162 |                                                                  |
163 |                       4364 4364   UA0-9  UA0-8  UA0-7  UA0-6    4|
164 |                                                                  |
165 |                                                                  |
166 |                                                                 5|
167 |                            4584                                  |
168 |                                                                  |
169 |                        RESET_SW   UA0-13 UA0-12 UA0-11 UA0-10   6|
170 |                        4050  TL7705                              |
171 |                                                                  |
172 |                                                                 7|
173 |      X0-006                                                      |
174 |                                                                  |
175 |                            SW1                                  8|
176 | UA10-5 2016 YM3812 YM2203                                        |
177 |            YM3014          SW2                   X1-006         9|
178 |VOL   4558  YM3014 M54528            X1-004                       |
179 |                                                                10|
180 |                         X2-003 X2-003 X2-003     X1-003          |
181 |                                                                11|
182 |            |--|              JAMMA               |--|            |
183 |------------|  |----------------------------------|  |------------|
184 Notes:
185       68000  - clock 8.000MHz [16/2]
186       YM3812 - clock 4.000MHz [16/4]
187       YM2203 - clock 4.000MHz [16/4]
188       4364   - 8kx8 SRAM
189       2016   - 2kx8 SRAM
190       VSync  - 59.1845Hz
191       HSync  - 15.21kHz
192 
193       Custom Chips -
194                     X1-001 (SDIP64)
195                     X1-002 (SDIP64)
196                     X1-006 (SDIP64)
197                     X0-006 (SDIP64), also marked 'RP5A10-0001'. This is a 65C02 in disguise,
198                                      possibly with additional ROM or logic acting as a protection chip.
199                                      clocks - pin1 16MHz, pin2 2MHz, pin3 59.1845Hz [VSYNC),
200                                      pin63 2MHz, pin62 2MHz
201                     X1-003 (SDIP42)
202                     X1-004 (SDIP52)
203                     X2-003 (DIP16) - Resistor network IC for inputs
204 
205       ROMs -
206              UA0-6 to AU0-13 DIP42 maskROM, read as MX27C2100 (2 Meg)
207              UA0-2 DIP32 27C1000 EPROM
208              All other ROMs DIP32 read as 27C1000
209              All ROMs have IC locations, but the PCB also has IC locations so components
210              can be referenced with IC# or location. See above diagram for info.
211 
212 ***************************************************************************/
213 
214 /***************************************************************************
215 
216                                 Twin Eagle
217 
218 M6100326A   Taito (Seta)
219 
220 ua2-4              68000
221 ua2-3
222 ua2-6
223 ua2-5
224 ua2-8
225 ua2-10
226 ua2-7               ua2-1
227 ua2-9
228 ua2-12
229 ua2-11              ua2-2
230 
231 ***************************************************************************/
232 
233 /***************************************************************************
234 
235                                 U.S. Classic
236 
237 M6100430A (Taito 1989)
238 
239        u7 119  u6 118   u5 117   u4 116
240                                          68000-8
241 u13  120                                 000
242 u19  121                                 001
243 u21  122                                 002
244 u29  123                                 003
245 u33  124
246 u40  125
247 u44  126
248 u51  127
249 u58  128
250 u60  129                                 65c02
251 u68  130
252 u75  131                                 u61 004
253 
254                                          u83 132
255 
256 ***************************************************************************/
257 /***************************************************************************
258 
259                                 Caliber 50
260 
261 CPU:   TMP 68000N-8, 65C02
262 Other: NEC D4701
263 
264 UH-001-006        SW2  SW1
265 UH-001-007
266 UH-001-008                    8464         68000-8
267 UH-001-009  X1-002A X1-001A   8464         Uh-002-001=T01
268 UH-001-010                    8464            51832
269 UH-001-011                    8464            51832
270                                            UH-001-002
271 UH-001-012            X1-012               UH-001-003
272 UH-001-013                               UH-002-004-T02
273                       X1-011               5116-10
274                                            BAT
275                          16MHz
276              X1-010   65C02      X1-006
277                       UH-001-005 X1-007
278                       4701       X1-004
279 
280 ***************************************************************************/
281 /***************************************************************************
282 
283                                     Meta Fox
284 
285 (Seta 1990)
286 
287 P0-045A
288 
289 P1-006-163                    8464   68000-8
290 P1-007-164    X1-002A X1-001A 8464
291 P1-008-165                    8464
292 P1-009-166                    8464     256K-12
293                                        256K-12
294 
295                  X1-012
296                  X1-011
297 
298 
299    2063    X1-010     X1-006     X0-006
300                       X1-007
301                       X1-004     X1-004
302 
303 ----------------------
304 P1-036-A
305 
306 UP-001-010
307 UP-001-011
308 UP-001-012
309 UP-001-013
310 
311 
312 UP-001-014
313 UP-001-015
314 
315 -----------------------
316 P1-049-A
317 
318               UP-001-001
319               UP-001-002
320               P1-003-161
321               P1-004-162
322 
323 
324               UP-001-005
325               x
326 
327 ***************************************************************************/
328 
329 
330 /***************************************************************************
331 
332                                 Dragon Unit
333                      [Prototype of "Castle Of Dragon"]
334 
335 PCB:    P0-053-1
336 CPU:    68000-8
337 Sound:  X1-010
338 OSC:    16.0000MHz
339 
340 Chips:  X1-001A, X1-002A, X1-004, X1-006, X1-007, X1-010, X1-011, X1-012
341 
342 ***************************************************************************/
343 /***************************************************************************
344 
345                                     Wit's
346 
347 (c)1989 Athena (distributed by Visco)
348 P0-055B (board is made by Seta)
349 
350 CPU  : TMP68000N-8
351 Sound: X1-010
352 OSC  : 16.000MHz
353 
354 ROMs:
355 UN001001.U1 - Main program (27256)
356 UN001002.U4 - Main program (27256)
357 
358 UN001003.10A - Samples (28pin mask)
359 UN001004.12A /
360 
361 UN001005.2L - Graphics (28pin mask)
362 UN001006.4L |
363 UN001007.5L |
364 UN001008.7L /
365 
366 Custom chips:   X1-001A     X1-002A
367                 X1-004 (x2)
368                 X1-006
369                 X1-007
370                 X1-010
371 
372 ***************************************************************************/
373 /***************************************************************************
374 
375                             Thunder & Lightning
376 
377 Location      Device      File ID      Checksum
378 -----------------------------------------------
379 U1  1A        27C256        M4           C18C   [ MAIN PROG ] [ EVEN ]
380 U4  3A        27C256        M5           12E1   [ MAIN PROG ] [ ODD  ]
381 U29 10A      23C4001        R27          37F2   [   HIGH    ]
382 U39 12A      23C4001        R28          0070   [   LOW     ]
383 U6  2K       23C1000        T14          1F7D   [   C40     ]
384 U9  4K       23C1000        T15          7A15   [   C30     ]
385 U14 5K       23C1000        T16          BFFD   [   C20     ]
386 U20 7K       23C1000        T17          7AE7   [   C10     ]
387 
388 PCB: PO055D
389 
390 CPU: 68000 8MHz
391 
392 Custom: X1-001A     X1-002A
393         X1-004
394         X1-006
395         X1-007
396         X1-010
397 
398 ***************************************************************************/
399 
400 
401 
402 /***************************************************************************
403 
404                                 Athena no Hatena?
405 
406 CPU  : 68000-16
407 Sound: X1-010
408 OSC  : 16.0000MHz
409 
410 ROMs:
411 fs001001.evn - Main programs (27c4001)
412 fs001002.odd /
413 
414 fs001004.pcm - Samples (8M mask - read as 27c800)
415 fs001003.gfx - Graphics (16M mask - read as 27c160)
416 
417 Chips:  X1-001A X1-002A
418         X1-004
419         X1-006
420         X1-007
421         X1-010
422 
423 ***************************************************************************/
424 
425 /***************************************************************************
426 
427                                 Blandia
428 
429 Blandia by Allumer
430 
431 This set is coming from an original Blandia PCB ref : P0-078A
432 
433 As usually, it use a lot of customs allumer chips !
434 
435 ***************************************************************************/
436 /***************************************************************************
437 
438                                 Blandia (prototype)
439 
440 PCB:    P0-072-2
441 CPU:    68000-16
442 Sound:  X1-010
443 OSC:    16.0000MHz
444 
445 Chips:  X1-001A     X1-002A
446         X1-004
447         X1-007
448         X1-010
449         X1-011 x2   X1-012 x2
450 
451 ***************************************************************************/
452 
453 /***************************************************************************
454 
455                     Block Carnival / Thunder & Lightning 2
456 
457 P0-068B, M6100723A
458 
459 CPU  : MC68000B8
460 Sound: X1-010
461 OSC  : 16.000MHz
462 
463 ROMs:
464 u1.a1 - Main programs (27c010)
465 u4.a3 /
466 
467 bl-chr-0.j3 - Graphics (4M mask)
468 bl-chr-1.l3 /
469 
470 bl-snd-0.a13 - Sound (4M mask)
471 
472 Custom chips:   X1-001A X1-002A
473                 X1-004
474                 X1-006
475                 X1-007
476                 X1-009
477                 X1-010
478 
479 Other:
480 Lithium battery x1
481 
482 ***************************************************************************/
483 
484 
485 
486 
487 /***************************************************************************
488 
489                             Daioh
490 
491 DAIOH
492 Allumer 1993, Sammy license
493 P0-092A
494 
495 
496 FG-001-003
497 FG-001-004  X1-002A X1-001A             FG-001-001
498                                         FG-001-002
499 FG-001-005   X1-11 X1-12
500 FG-001-006   X1-11 X1-12
501                                        68000-16
502 FG-001-007
503 
504    X1-10                           16MHz
505 
506                             X1-007  X1-004
507 
508 ***************************************************************************/
509 
510 
511 /***************************************************************************
512 
513                                 Eight Forces
514 
515 P0-079A (Same board as ZingZingZip)
516 
517 CPU  : MC68000B16
518 Sound: X1-010
519 OSC  : 16.000MHz
520 
521 ROMs:
522 uy2-u4.u3 - Main program (even)(27c2001)
523 uy2-u3.u4 - Main program (odd) (27c2001)
524 
525 u63.bin - Sprites (HN62434, read as 27c4200)
526 u64.bin /
527 
528 u69.bin - Samples (HN62318, read as 27c8001)
529 u70.bin /
530 
531 u66.bin - Layer 1 (HN62418, read as 27c800)
532 u68.bin - Layer 2 (HN62418, read as 27c800)
533 
534 PALs (not dumped):
535 uy-012.206 (PAL16L8A)
536 uy-013.14  (PAL16L8A)
537 uy-014.35  (PAL16L8A)
538 uy-015.36  (PALCE16V8)
539 uy-016.76  (PAL16L8A)
540 uy-017.116 (PAL16L8A)
541 
542 Custom:     X1-001A X1-002A
543             X1-004
544             X1-007
545             X1-010
546             X1-011 (x2)     X1-012 (x2)
547 
548 ***************************************************************************/
549 
550 /***************************************************************************
551 
552                                 Extreme Downhill
553 
554 (c)1995 Sammy
555 DH-01
556 P0-117A (board is made by Seta/Allumer)
557 
558 CPU  : MC68HC000B16
559 Sound: X1-010
560 OSC: 16.0000MHz (X1), 14.3180MHz (X2)
561 
562 ROMs:
563 fw001002.201 - Main program (even) (Macronics 27c4000)
564 fw001001.200 - Main program (odd)  (Macronics 27c4000)
565 
566 fw001005.205 - (32pin mask, read as 27c8001)
567 fw001007.026 /
568 
569 fw001003.202 - (42pin mask, read as 27c160)
570 fw001004.206 |
571 fw001006.152 /
572 
573 PALs (16L8ACN, not dumped):
574 FW-001
575 FW-002
576 FW-003
577 FW-005
578 
579 Custom chips:   X1-001A     X1-002A
580                 X1-004
581                 X1-007
582                 X1-010
583                 X1-011 (x2) X1-012 (x2)
584 
585 ***************************************************************************/
586 
587 
588 /***************************************************************************
589 
590                                     GundHara
591 
592 (C) 1995 Banpresto
593 Seta/Allumer Hardware
594 
595 PCB: BP954KA
596 PCB: P0-120A
597 CPU: TMP68HC000N16 (68000, 64 pin DIP)
598 SND: ?
599 OSC: 16.000MHz
600 RAM: 6264 x 8, 62256 x 4
601 DIPS: 2 x 8 position
602 Other Chips:    PALs x 6 (not dumped)
603                 NEC 71054C
604                 X1-004
605                 X1-007
606                 X1-010
607                 X1-011 x2   X1-012 x2
608                 X1-001A     X1-002A
609 
610 On PCB near JAMMA connector is a small push button to reset the PCB.
611 
612 ROMS:
613 BPGH-001.102    27C040
614 BPGH-002.103    27C4000
615 BPGH-003.U3     27C4000
616 BPGH-004.U4     23C4000
617 BPGH-005.200    23C16000
618 BPGH-006.201    23C16000
619 BPGH-007.U63    23C16000
620 BPGH-008.U64    23C16000
621 BPGH-009.U65    27C4000
622 BPGH-010.U66    TC538200
623 BPGH-011.U67    TC538000
624 BPGH-012.U68    TC5316200
625 BPGH-013.U70    TC538000
626 
627 ***************************************************************************/
628 
629 /***************************************************************************
630 
631 Zombie Raid
632 Sammy, 1996
633 
634 This is a gun shooting game using Seta/Allumer hardware.
635 
636 PCB Layout
637 ----------
638 
639 SZR-001
640 P0-122A
641 ------------------------------------------------------------------
642         FY001012.12L*       FY001009.U67      FY001007.U65
643    FY001011.13L*    FY001010.U68     FY001008.U66    FY001006.U200
644    X1-010    6264
645 
646     CONN1          X1-011(x2)     X1-002A
647        ADC0834     X1-012(x2)     X1-001A
648 
649                                             3V_BATT
650                                                     4464
651 
652 X1-007   6264(x2)   6264(x2)    6264(x2)    6264(x2)
653 
654        16.000MHz                                 HM9253101(x2)
655 
656 X1-004 DSW2        D71054C
657        DSW1    TMP68HC000N-16  FY001004.U4     FY001001.U102
658                                       FY001003.U3    FY001002.U103
659 ------------------------------------------------------------------
660 
661 Notes:
662 *     = These ROMs located on a small daughterboard. Main PCB locations used as filename extension.
663 CONN1 = 8 pin header for gun connection
664 
665 ***************************************************************************/
666 
667 
668 /***************************************************************************
669 
670                                 J.J. Squawkers
671 
672 68HC000N -16N
673 
674 2)   Allumer  X1-012
675 2)   Allumer  X1-011
676 2)   Allumer  X1-014
677 
678 X1-010
679 X1-007
680 X1-004
681 16.000MHz
682 
683 NEC 71054C  ----???
684 
685 ***************************************************************************/
686 
687 /***************************************************************************
688 
689                                 Kamen Rider
690 Kamen Riderclub Battleracer
691 Banpresto, 1993
692 
693 Runs on Seta/Allumer hardware
694 
695 PCB No: BP934KA   P0-096A
696 CPU   : MC68HC000B16
697 OSC   : 16.000MHz
698 RAM   : LH5160D-10L (x9), CXK58257AP-10L (x2)
699 DIPSW : 8 position (x2)
700 CUSTOM: X1-010
701         X1-007
702         X1-004
703         X1-011 (x2)
704         X1-012 (x2)
705         X1-002A
706         X1-001A
707 OTHER : NEC71054C, some PALs
708 
709 ROMs  :
710         FJ001007.152    27c4096     near X1-011 & X1-010 (sound program?)
711         FJ001008.26     8M Mask     connected to X1-010, near FJ001007
712         FJ001003.25     27c4096     main program for 68k
713         FJ001006.22     16M Mask    gfx
714         FJ001005.21     16M Mask    gfx
715 
716 ***************************************************************************/
717 
718 /***************************************************************************
719 
720                                 Krazy Bowl
721 
722 PCB:    SKB-001
723         P0-114A
724 
725 FV   FV                           2465
726 001  001                          2465           X1-005
727 004  003      X1-002A  X1-001A
728                                        58257     FV
729                                                  001
730                                                  002 (even)
731                                        58257
732                   14.318MHz                      FV
733                                                  001
734 FV 001 005                                       001 (odd)
735 FV 001 006
736   2465                                      68HC000B16
737                  NEC4701  NEC4701
738 
739 X1-010           X1-006
740                  X1-007      X1-004
741 
742 ***************************************************************************/
743 
744 /***************************************************************************
745 
746 
747                                     Mad Shark
748 
749 Allumer, 1993
750 This game is a vertical shoot'em-up and runs on fairly standard Allumer hardware.
751 
752 PCB Layout
753 ----------
754 
755 P0-102A
756 ----------------------------------------------------
757 |     X1-010   FQ001007 FQ001006 FQ001005 FQ001004 |
758 |           LH5160                                 |
759 |                    X1-011  X1-011       X1-002A  |
760 |                                                  |
761 |J                   X1-012  X1-012       X1-001A  |
762 |A X1-007                                          |
763 |M   LH5160           LH5160 LH5160 LH5160         |
764 |M                                                 |
765 |A   LH5160           LH5160 LH5160 LH5160         |
766 |                                         FQ001002 |
767 |*           MC68HC000B16                          |
768 |  X1-004                                          |
769 |                                         FQ001001 |
770 |                        LH52250                   |
771 | DSW2(8) DSW1(8) 16MHz  LH52250    D71054         |
772 ----------------------------------------------------
773 
774 Notes:
775       *: 4 jumper pads for region selection (hardwired)
776 
777 ***************************************************************************/
778 
779 /***************************************************************************
780                                Magical Speed
781 
782 (c)1994 Allumer
783 
784 PCB P0-111A:
785 +--------------------------------------------------+
786 | VR1 X1-010   FU001007 FU001006 FU001005 FU001004 |
787 |           W2465K                                 |
788 |  CN3               X1-011  X1-011       X1-002A  |
789 |  CN1                                             |
790 |J CN2               X1-012  X1-012       X1-001A  |
791 |A X1-007                                          |
792 |M   W2465K U54 U50   W2465K W2465K W2465K U53     |
793 |M                                                 |
794 |A   W2465K     U51   W2465K W2465K W2465K         |
795 |                                         FU001002 |
796 |*           MC68HC000B16                          |
797 |  X1-004                                          |
798 |                                         FU001001 |
799 |                          CXK58257                |
800 | SW1 RST1 DSW2 DSW1 16MHz CXK58257 D71054 U52     |
801 +--------------------------------------------------+
802 
803 CPU   : MC68HC000B16
804 OSC   : 16.000MHz
805 RAM   : WinBond W2465K-70LL (x9), SONY CXK58257AP-10L (x2)
806 DIPSW : 8 position (x2)
807 CUSTOM: X1-010       Sound
808         X1-004       Input
809         X1-007       Video DAC
810         X1-011 (x2)  Tilemap
811         X1-012 (x2)  Tilemap
812         X1-002A      Sprites
813         X1-001A      Sprites
814 
815 OTHER : NEC71054C
816 
817 VR1   : Sound adjust pot
818 SW1   : Service switch
819 RST1  : Reset
820 
821 CN1   : 7-Pin header to drive lights underneath buttons to show what cards are available to play
822 CN2   : 8-Pin header to drive lights underneath buttons to show what cards are available to play
823 CN3   : 5-Pin header connected to auxiliary PCB to drive lights about the cabinet
824 
825 PAL   :FU-011 @ U50
826        FU-012 @ U51
827        FU-013 @ U52
828        FU-014 @ u53
829        FU-015 @ U54
830 
831 ***************************************************************************/
832 
833 /***************************************************************************
834 
835                             Mobile Suit Gundam
836 
837 Banpresto 1993
838 P0-081A
839                                SW2  SW1
840 
841 FA-001-008                          FA-001-001
842 FA-001-007    X1-002A X1-001A       FA-002-002
843                               5160
844                               5160
845                                         71054
846 FA-001-006                    5160     62256
847 FA-001-005    X1-011  X1-012  5160     62256
848 
849 FA-001-004    X1-011  X1-012  5160
850 5160                          5160
851 
852                                 68000-16
853 
854                                          16MHz
855   X1-010
856                     X1-007   X1-004     X1-005
857 
858 ***************************************************************************/
859 
860 /***************************************************************************
861 
862                             Oishii Puzzle Ha Irimasenka
863 
864 PCB  : P0-097A
865 CPU  : 68000
866 Sound: X1-010
867 OSC  : 14.31818MHz
868 
869 All ROMs are 23c4000
870 
871 Custom chips:   X1-001A X1-002A
872                 X1-004
873                 X1-007
874                 X1-010
875                 X1-011 (x2) X1-012 (x2)
876 
877 ***************************************************************************/
878 
879 /***************************************************************************
880 
881                             Triple Fun
882 
883 Triple Fun
884 ??, 19??
885 
886 
887 CPU   : TMP68HC000P-16 (68000)
888 SOUND : OKI M6295
889 DIPSW : 8 position (x2)
890 XTAL  : 16.000 MHz (8MHz written on PCB, located near OKI chip)
891         14.31818MHz (near 68000)
892 RAM   : 62256 (x2), 6264 (x8), 2018 (x14)
893 PROMs : None
894 PALs  : PALCE16V8H (x13)
895 OTHER : TPC1020AFN-084C (84 pin PLCC)
896 
897 ROMs  :
898 
899 04.bin + 05.bin    Main Program
900 01.bin             Sound Program
901 02.bin + 03.bin    OKI Samples
902 06.bin to 11.bin   GFX
903 
904 
905 
906 ***************************************************************************/
907 
908 /***************************************************************************
909 
910                             Pro Mahjong Kiwame
911 
912 PCB  : P0-101-1 (the board is made by Allumer/Seta)
913 CPU  : TMP68301AF-16 (68000 core)
914 Sound: X1-010
915 OSC  : 20.0000MHz
916 
917 ROMs:
918 fp001001.bin - Main program (27c2001, even)
919 fp001002.bin - Main program (27c2001, odd)
920 fp001003.bin - Graphics (23c4000)
921 fp001005.bin - Samples (27c4000, high)
922 fp001006.bin - Samples (27c4000, low)
923 
924 Chips:  X1-001A
925         X1-002A
926         X1-004
927         X1-006
928         X1-007
929         X1-010
930 
931 - To initialize high scores, power-on holding start button in service mode
932 
933 ***************************************************************************/
934 
935 
936 /***************************************************************************
937 
938                                 Quiz Kokology
939 
940 (c)1992 Tecmo
941 
942 P0-053A
943 
944 CPU  : MC68000B8
945 Sound: X1-010
946 OSC  : 16.000MHz
947 
948 Custom chips:   X1-001A X1-002A
949                 X1-004
950                 X1-006  X1-007
951                 X1-010
952                 X1-011  X1-012
953 
954 ***************************************************************************/
955 
956 
957 /***************************************************************************
958 
959                                 Quiz Koko-logy 2
960 
961 (c)1992 Tecmo
962 
963 P0-100A
964 
965 CPU  : MC68HC000B16
966 Sound: X1-010
967 OSC  : 16.000MHz
968 
969 FN001001.106 - Main program (27C4096)
970 FN001003.107 / (40pin 2M mask)
971 
972 FN001004.100 - OBJ chr. (42pin mask)
973 FN001005.104 - BG chr. (42pin mask)
974 FN001006.105 - Samples (32pin mask)
975 
976 Custom chips:   X1-001A     X1-002A
977                 X1-004
978                 X1-006
979                 X1-007
980                 X1-010
981                 X1-011      X1-012
982 
983 ***************************************************************************/
984 
985 
986 /***************************************************************************
987 
988                                 Rezon (Japan)
989 
990 PCB     : P0-063A
991 CPU     : TOSHIBA TMP68HC000N-16
992 Sound   : X1-010
993 OSC     : 16.000MHz
994 Other   : Allumer
995             X1-001A         X1-002A
996             X1-004
997             X1-007
998             X1-011 x 2      X1-012 x 2
999 
1000 ***************************************************************************/
1001 
1002 
1003 /***************************************************************************
1004 
1005                             SD Gundam Neo Battling
1006 
1007 Banpresto, 1992
1008 This game runs on Seta/Allumer hardware
1009 
1010 PCB Layout
1011 ----------
1012 
1013 P0-080A
1014 BP923
1015 |----------------------------------------------
1016 |DSW1  DSW2                   LH5168  62256   |
1017 |                             LH5168  62256   |
1018 |LH5168                                       |
1019 |                                             |
1020 |         BP923004                   BP923001 |
1021 |BP923005 BP923003 X1-002A X1-001A   BP923002 |
1022 |                                  16MHz      |
1023 |                              TMP68HC000N-16 |
1024 |X1-010                           PAL         |
1025 |                                 PAL  X1-006 |
1026 |                                             |
1027 |                                             |
1028 |                              X1-004  X1-007 |
1029 |                                             |
1030 |                                             |
1031 |                                             |
1032 |                                             |
1033 |                 J A M M A                   |
1034 -----------------------------------------------
1035 
1036 Notes:
1037       68k clock: 16.000MHz
1038       VSync: 58Hz
1039       HSync: 15.22kHz
1040 
1041 
1042 ***************************************************************************/
1043 
1044 
1045 /***************************************************************************
1046 
1047                             Sokonuke Taisen Game (Japan)
1048 
1049 (c)1995 Sammy
1050 
1051 CPU:    68HC000
1052 Sound:  All PCM ?
1053 OSC:    16MHz
1054 
1055 ***************************************************************************/
1056 
1057 
1058 /***************************************************************************
1059 
1060                                 Strike Gunner
1061 
1062 (c)1991 Athena (distributed by Tecmo)
1063 
1064 P0-053A
1065 
1066 CPU  : TMP68000N-8
1067 Sound: X1-010
1068 OSC  : 16.000MHz
1069 
1070 Custom chips:   X1-001A X1-002A
1071                 X1-004
1072                 X1-006  X1-007
1073                 X1-010
1074                 X1-011  X1-012
1075 
1076 ***************************************************************************/
1077 
1078 /***************************************************************************
1079 
1080                                 Ultraman Club
1081 
1082 Banpresto, 1992
1083 Board looks similar to Castle of Dragon PCB.
1084 
1085 PCB No: P0-077A (Seta Number)
1086         BP922   (Banpresto Number)
1087 
1088 CPU: MC68HC000B16
1089 OSC: 16.000MHz
1090 DIP SW x 2 (8 position)
1091 
1092 RAM: Sharp LH5160D-10L x 3, Hitachi S256KLP-12 x 2
1093 PALs (2 x PAL16L8, not dumped)
1094 SETA Chips: X1-010
1095             X1-004
1096             X1-007
1097             X1-006
1098             X1-002A
1099             X1-001A
1100 
1101 Controls are 8 way Joystick and 2 buttons.
1102 
1103 ROMs:
1104 
1105 UW001006.U48      27C010                                               \  Main Program
1106 UW001007.U49      27C010                                               /
1107 
1108 BP-U-001.U1       4M mask (40 pin, 512k x 8), read as MX27C4100        \  GFX
1109 BP-U-002.U2       4M mask (40 pin, 512k x 8), read as MX27C4100        /
1110 
1111 BP-U-003.U13      8M mask (32 pin, 1M x 8),   read as MX27C8000           Sound
1112 
1113 
1114 ***************************************************************************/
1115 
1116 /***************************************************************************
1117 Ultra Toukon Densetsu
1118 Banpresto, 1993
1119 
1120 This game runs on fairly standard Allumer hardware.
1121 
1122 PCB Layout
1123 ----------
1124 
1125 P0-083A
1126 BP931
1127 ----------------------------------------------------
1128 |     X1-010  93UTA08  93UTA06 93UTA04  93UTA02    |
1129 |                93UTA07 93UTA05  93UTA03  93UTA01 |
1130 |  YM3438   LH5116                                 |
1131 |  LH5116            X1-011  X1-011       X1-002A  |
1132 |  Z80 93UTA009                                    |
1133 |J                   X1-012  X1-012       X1-001A  |
1134 |A X1-007                                          |
1135 |M   LH5116           LH5160 LH5160 LH5160         |
1136 |M                                                 |
1137 |A   LH5116           LH5160 LH5160 LH5160         |
1138 |                                                  |
1139 |*      16MHz                                      |
1140 |  X1-004                                   62256  |
1141 |                                           62256  |
1142 | DSW1(8)               93UTA011  93UTA010         |
1143 | DSW2(8)   68HC000N-16                            |
1144 ----------------------------------------------------
1145 
1146 Notes:
1147       *: 4 jumper pads for region selection (hardwired)
1148       Z80 clock = 4.000MHz
1149       VSync: 60Hz
1150       HSync: 15.21kHz
1151 
1152 
1153 1.048.576 93uta03.63
1154 1.048.576 93uta04.64
1155 1.048.576 93uta05.66
1156 1.048.576 93uta06.67
1157 1.048.576 93uta07.68
1158 1.048.576 93uta08.69
1159 
1160 ***************************************************************************/
1161 
1162 /***************************************************************************
1163 
1164                                War of Aero
1165                             Project M E I O U
1166 
1167 93111A  YANG CHENG
1168 
1169 CPU   : TOSHIBA TMP68HC000N-16
1170 Sound : Allumer X1-010
1171 OSC   : 16.000000MHz
1172 Other : Allumer
1173             X1-001A  X1-002A
1174             X1-004
1175             X1-007
1176             X1-011 x 2
1177             X1-012 x 2
1178         NEC
1179             C324C
1180             D71054C
1181 
1182 ***************************************************************************/
1183 
1184 
1185 
1186 /***************************************************************************
1187 
1188                                 Zing Zing Zip
1189 
1190 P0-079A
1191 
1192 UY-001-005   X1-002A   X1-001A   5168-10      256k-12
1193 UY-001-006                       5168-10      UY-001-001
1194 UY-001-007                                    UY-001-002
1195 UY-001-008   X1-011 X1-012                    58257-12
1196                                  5168-10
1197 UY-001-010   X1-011 X1-012       5168-10
1198 UY-001-017
1199 UY-001-018
1200                                  5168-10
1201 X1-010                           5168-10       68000-16
1202 
1203 
1204                            8464-80
1205                            8464-80       16MHz
1206 
1207 
1208                              X1-007    X1-004
1209 
1210 ***************************************************************************
1211 
1212 
1213 Pairs Love
1214 Allumer, 199x
1215 
1216 PCB Layout
1217 ----------
1218 
1219 P0-068B
1220 |-----------------------------------------|
1221 |             X1-007  X1-006   UT2-001-005|
1222 |                                         |
1223 |     4050                     UT2-001-004|
1224 |                                         |
1225 |                                         |
1226 |                             X1-002A     |
1227 |                                         |
1228 |J                                        |
1229 |A   X1-004                               |
1230 |M                            X1-001A     |
1231 |M           DSW1                         |
1232 |A                                        |
1233 |            DSW2                  6264   |
1234 |                                  6264   |
1235 |    X1-009                               |
1236 |                      62256              |
1237 |                                         |
1238 |                    68000                |
1239 |    UT2-001-003       62256  UT2-001-002 |
1240 |                   6264                  |
1241 |    X1-010  16MHz            UT2-001-001 |
1242 |-----------------------------------------|
1243 Notes:
1244       68000 clock: 8.000MHz
1245       VSync: 60Hz
1246 
1247 
1248 ***************************************************************************
1249 
1250 Rezon (Taito License)
1251 Allumer / Taito, 1992
1252 
1253 This game runs on fairly standard Allumer hardware.
1254 
1255 PCB Layout
1256 ----------
1257 
1258 P0-063A (Allumer code printed on the PCB)
1259 M6100627A REZON (Taito sticker)
1260 |-----------------------------------------------------------|
1261 |  VOL   3404   6264 US001009     US001007      US001005    |
1262 | MB3730                    US001008      US001006          |
1263 |                                                           |
1264 |                                                           |
1265 |                                                           |
1266 |  PAL4           X1-010       X1-011       X1-011          |
1267 |                                                           |
1268 |                                                           |
1269 |J                                                          |
1270 |A                             X1-012       X1-012          |
1271 |M                                                          |
1272 |M  X1-007                                                  |
1273 |A                                                          |
1274 |        6116  6116                           PAL2   PAL3   |
1275 |                                                           |
1276 |                         62256       62256                 |
1277 |  16MHZ                  62256       62256     6264  6264  |
1278 |         DSW2(8)                                           |
1279 |  X1-004                 PAL1                              |
1280 |         DSW1(8)  |------------|US001004      REZON_1_P    |
1281 |                  |   68000    |   US001003      REZON_0_P |
1282 |  RESET_SW        |------------|       62256          62256|
1283 |-----------------------------------------------------------|
1284 Notes:
1285       68000 clock  - 16.000MHz
1286       X1-010 clocks - pin1 16.000MHz, pin2 8.000MHz, pin79 4.000MHz, pin80 2.000MHz
1287       VSync - 57.5Hz
1288       PAL1  - PAL16L8 labelled 'US-010'
1289       PAL2  - PAL16L8 labelled 'US-011'
1290       PAL3  - PAL16L8 labelled 'US-012'
1291       PAL4  - PAL16L8 labelled 'US-013'
1292       62256 - 32K x8 SRAM
1293       6264  - 8K x8 SRAM
1294       6116  - 2K x8 SRAM
1295 
1296       Custom IC's -
1297                     X1-001A (SDIP64)    \ Sprite Generators
1298                     X1-002A (SDIP64)    /
1299                     X1-004  (SDIP52)      Input Related Functions (connected to joystick/input controls)
1300                     X1-007  (SDIP42)      Video DAC? (connected to RGB output)
1301                     X1-010  (QFP80)       Sound Chip, 16Bit PCM
1302                     X1-011  (x2, QFP100)\ Tilemap Generators
1303                     X1-012  (x2, QFP100)/
1304 
1305       ROMs -
1306             Filename         Type               Use
1307             ---------------------------------------------------
1308             REZON_0_P.U3     27C1000 (DIP32)    \
1309             REZON_1_P.U4     27C1000 (DIP32)    | 68000 Program
1310             US001003.U102    27C1000 (DIP32)    |
1311             US001004.U103    27C1000 (DIP32)    /
1312 
1313             US001005.U63     4M MaskROM (DIP42) \ Sprites
1314             US001006.U64     4M MaskROM (DIP42) /
1315 
1316             US001007.U66     4M MaskROM (DIP42) \ Tiles
1317             US001008.U68     4M MaskROM (DIP42) /
1318 
1319             US001009.U70     4M MaskROM (DIP32)   PCM Samples
1320 
1321 ***************************************************************************/
1322 
1323 /***************************************************************************
1324 
1325 Crazy Fight
1326 Subsino 1996
1327 Readme by Guru
1328 This game runs on Allumer-based hardware.
1329 It is a whack-a-mole type game using 6 buttons.
1330 
1331 PCB Layout
1332 ----------
1333 
1334 186P010
1335 |--------------------------------------------------------------------|
1336 |    VOLUME               68000              ROM_U68                 |
1337 |TDA1519  LM358 LM324                                                |
1338 |              YM3014     ROM_U3             ROM_U67                 |
1339 |           YM3812                                                   |
1340 |4.43361875MHz            62256             X1-011  X1-012           |
1341 |                                 PLSI1032                           |
1342 |        M6295            ROM_U4                                     |
1343 |                                            ROM_U66                 |
1344 |                         62256                                      |
1345 |   ROM_U85                                  ROM_U65                 |
1346 |J                                16MHz                              |
1347 |A                                          X1-011  X1-012           |
1348 |M                                                                   |
1349 |M  X1-007        PAL                                                |
1350 |A                                           6164       X1-001A      |
1351 |    6164                                                            |
1352 |                                                                    |
1353 |    6164                                    6164       X1-002A      |
1354 |                DSW2(8)  DSW1(8)                                    |
1355 | TD62003                            PAL   ROM_U228     ROM_U226     |
1356 |    J2    DIP42                     PAL         ROM_U227    ROM_U225|
1357 |--------------------------------------------------------------------|
1358 Notes:
1359       68000 clock  - 16.00MHz (DIP64)
1360       YM3812 clock - 4.000MHz [16/4] (DIP24)
1361       M6295 clock  - 1.108404688 [4.43361875/4]. Pin 7 HIGH (QFP44)
1362       PLSI1032     - Lattice pLSI1032-80LJ Programmable Logic Device (PLCC84)
1363       6164         - 8kx8 SRAM (SDIP28)
1364       62256        - 32kx8 SRAM (SDIP28)
1365       TD62003      - Toshiba TD62003 7-Channel Darlington Sink Driver (DIP16)
1366       DIP42        - Unknown DIP42 IC. Note several pins have no connection.
1367                      Pins 6-26 tied to inputs on JAMMA connector.
1368                      Some other pins tied to logic.
1369                      No pins have a clock so this chip is not a MCU.
1370       J2           - 4 pin connector. Pin 2 tied to DIP42 IC pin 27
1371                      and pin 3 tied to TD62003 pin 16
1372       Custom Chips - X1-007
1373                      X1-001A
1374                      X1-002A
1375                      X1-011 (2)
1376                      X1-012 (2)
1377       HSync        - 15.1433kHz
1378       VSync        - 59.1851Hz
1379 
1380 ***************************************************************************/
1381 
1382 /***************************************************************************
1383                                International Toote
1384 
1385 Main PCB (P0-058C):
1386 
1387     TOSHIBA TMP68HC000N-16
1388     X1-010
1389     X1-001A
1390     X1-002A
1391     X1-004        (x2)
1392     X1-007
1393     X1-011
1394     X1-012
1395     HD63B50P      (ACIA)
1396 
1397 Horse Race I/O Expansion (PCB-HRE-000):
1398 
1399     MAX238CNG     (RS-232)
1400     DIP24         (glue on markings?)
1401     MC68B50CP     (x2, ACIA)
1402     EF68B21P      (x2, PIA)
1403     ULN2803A      (x2, Darlington Transistor Array)
1404     4116R-001-151 (x2, Resistor Network)
1405     2.45760 MHz Osc.
1406 
1407 Note: on screen copyright is (c)1998 Coinmaster.
1408       The I/O board has      (c)1993 Coinmaster.
1409 
1410 ***************************************************************************/
1411 
1412 #include "emu.h"
1413 #include "includes/seta.h"
1414 
1415 #include "cpu/m6502/m65c02.h"
1416 #include "cpu/m68000/m68000.h"
1417 #include "cpu/z80/z80.h"
1418 #include "machine/6821pia.h"
1419 #include "machine/6850acia.h"
1420 #include "machine/msm6242.h"
1421 #include "machine/nvram.h"
1422 #include "machine/pit8253.h"
1423 #include "machine/watchdog.h"
1424 #include "sound/2203intf.h"
1425 #include "sound/2612intf.h"
1426 #include "sound/3812intf.h"
1427 #include "sound/okim6295.h"
1428 #include "sound/ym2151.h"
1429 
1430 #include "diserial.h"
1431 #include "screen.h"
1432 #include "speaker.h"
1433 
1434 #include "inttoote.lh"
1435 #include "jockeyc.lh"
1436 #include "setaroul.lh"
1437 
1438 #include <algorithm>
1439 
1440 #define USE_uPD71054_TIMER 1
1441 
1442 #if USE_uPD71054_TIMER
1443 // this mess should be replaced with pit8254, see madshark
1444 
1445 #define USED_TIMER_NUM  1
1446 /*------------------------------
1447     timer(uPD71054) struct
1448 ------------------------------*/
1449 /*------------------------------
1450     update timer
1451 ------------------------------*/
uPD71054_update_timer(device_t * cpu,int no)1452 void seta_state::uPD71054_update_timer(device_t *cpu, int no)
1453 {
1454 	uPD71054_state *uPD71054 = &m_uPD71054;
1455 	u16 max = uPD71054->max[no] & 0xffff;
1456 
1457 	if (max != 0)
1458 	{
1459 		attotime period = attotime::from_hz(m_maincpu->unscaled_clock()) * (16 * max);
1460 		uPD71054->timer[no]->adjust( period, no );
1461 	}
1462 	else
1463 	{
1464 		uPD71054->timer[no]->adjust( attotime::never, no);
1465 		logerror( "%s: uPD71054 error, timer %d duration is 0\n",
1466 				machine().describe_context(), no );
1467 	}
1468 }
1469 
1470 
1471 /*------------------------------
1472     callback
1473 ------------------------------*/
TIMER_CALLBACK_MEMBER(seta_state::uPD71054_timer_callback)1474 TIMER_CALLBACK_MEMBER(seta_state::uPD71054_timer_callback)
1475 {
1476 	m_maincpu->set_input_line(4, HOLD_LINE );
1477 	uPD71054_update_timer( nullptr, param );
1478 }
1479 
1480 
1481 /*------------------------------
1482     initialize
1483 ------------------------------*/
uPD71054_timer_init()1484 void seta_state::uPD71054_timer_init()
1485 {
1486 	uPD71054_state *uPD71054 = &m_uPD71054;
1487 
1488 	uPD71054->write_select = 0;
1489 
1490 	for (int no = 0; no < USED_TIMER_NUM; no++)
1491 		uPD71054->max[no] = 0xffff;
1492 
1493 	for (int no = 0; no < USED_TIMER_NUM; no++)
1494 		uPD71054->timer[no] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(seta_state::uPD71054_timer_callback),this));
1495 }
1496 
1497 
1498 /*------------------------------
1499     timer write handler
1500 ------------------------------*/
timer_regs_w(offs_t offset,u16 data)1501 void seta_state::timer_regs_w(offs_t offset, u16 data)
1502 {
1503 	uPD71054_state *uPD71054 = &m_uPD71054;
1504 
1505 	data &= 0xff;
1506 
1507 	uPD71054->reg[offset] = data;
1508 
1509 	switch (offset)
1510 	{
1511 	case 0x0000:
1512 	case 0x0001:
1513 	case 0x0002:
1514 		if (uPD71054->write_select == 0)
1515 		{
1516 			uPD71054->max[offset] = (uPD71054->max[offset] & 0xff00) + data;
1517 			if (((uPD71054->reg[3] >> 4) & 3) == 3)
1518 			{
1519 				uPD71054->write_select = 1;
1520 			}
1521 		}
1522 		else
1523 		{
1524 			uPD71054->max[offset] = (uPD71054->max[offset] & 0x00ff) + (data << 8);
1525 		}
1526 		if (uPD71054->max[offset] != 0)
1527 		{
1528 			uPD71054_update_timer(m_maincpu.target(), offset);
1529 		}
1530 		break;
1531 	case 0x0003:
1532 		switch ((data >> 4) & 3)
1533 		{
1534 		case 2: uPD71054->write_select = 1; break;
1535 		case 1:
1536 		case 3: uPD71054->write_select = 0; break;
1537 		}
1538 		break;
1539 	}
1540 }
1541 #endif  // USE_uPD71054_TIMER
1542 
1543 
1544 /***************************************************************************
1545 
1546 
1547                                     Sound
1548 
1549 
1550 ***************************************************************************/
1551 
WRITE_LINE_MEMBER(seta_state::utoukond_ym3438_interrupt)1552 WRITE_LINE_MEMBER(seta_state::utoukond_ym3438_interrupt)
1553 {
1554 	m_audiocpu->set_input_line(INPUT_LINE_NMI, state);
1555 }
1556 
1557 /***************************************************************************
1558 
1559 
1560                                 Common Routines
1561 
1562 
1563 ***************************************************************************/
1564 
1565 /*
1566 
1567  uPD71054C Timer
1568 
1569 */
1570 
WRITE_LINE_MEMBER(seta_state::pit_out0)1571 WRITE_LINE_MEMBER(seta_state::pit_out0)
1572 {
1573 	if (state)
1574 		m_maincpu->set_input_line(4, ASSERT_LINE);
1575 }
1576 
1577 
1578 /*
1579 
1580  Shared RAM:
1581 
1582  The 65c02 sees a linear array of bytes that is mapped, for the 68000,
1583  to a linear array of words whose low order bytes hold the data
1584 
1585 */
1586 
sharedram_68000_r(offs_t offset)1587 u8 seta_state::sharedram_68000_r(offs_t offset)
1588 {
1589 	return m_sharedram[offset];
1590 }
1591 
sharedram_68000_w(offs_t offset,u8 data)1592 void seta_state::sharedram_68000_w(offs_t offset, u8 data)
1593 {
1594 	m_sharedram[offset] = data & 0xff;
1595 }
1596 
1597 
1598 /*
1599 
1600  Sub CPU Control
1601 
1602 */
1603 
sub_ctrl_w(offs_t offset,u8 data)1604 void seta_state::sub_ctrl_w(offs_t offset, u8 data)
1605 {
1606 	switch (offset)
1607 	{
1608 		case 0/2:   // bit 0: reset sub cpu?
1609 			if (!(m_sub_ctrl_data & 1) && (data & 1))
1610 				m_subcpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
1611 			m_sub_ctrl_data = data;
1612 			break;
1613 
1614 		case 2/2:   // ?
1615 			break;
1616 
1617 		case 4/2:   // not sure
1618 			if (m_soundlatch[0] != nullptr) m_soundlatch[0]->write(data);
1619 			break;
1620 
1621 		case 6/2:   // not sure
1622 			if (m_soundlatch[1] != nullptr) m_soundlatch[1]->write(data);
1623 			break;
1624 	}
1625 
1626 }
1627 
1628 
1629 /* DSW reading for 16 bit CPUs */
seta_dsw_r(offs_t offset)1630 u16 seta_state::seta_dsw_r(offs_t offset)
1631 {
1632 	const u16 dsw = m_dsw->read();
1633 	if (offset == 0)    return (dsw >> 8) & 0xff;
1634 	else                return (dsw >> 0) & 0xff;
1635 }
1636 
1637 
1638 /* DSW reading for 8 bit CPUs */
1639 
dsw1_r()1640 u8 seta_state::dsw1_r()
1641 {
1642 	return (m_dsw->read() >> 8) & 0xff;
1643 }
1644 
dsw2_r()1645 u8 seta_state::dsw2_r()
1646 {
1647 	return (m_dsw->read() >> 0) & 0xff;
1648 }
1649 
1650 
1651 /*
1652 
1653  Sprites Buffering
1654 
1655 */
WRITE_LINE_MEMBER(seta_state::screen_vblank_seta_buffer_sprites)1656 WRITE_LINE_MEMBER(seta_state::screen_vblank_seta_buffer_sprites)
1657 {
1658 	// rising edge
1659 	if (state)
1660 	{
1661 		m_seta001->setac_eof();
1662 	}
1663 }
1664 
1665 
1666 /*
1667 
1668  VRAM Handler
1669 
1670 */
1671 template<int Layer>
vram_w(offs_t offset,u16 data,u16 mem_mask)1672 void seta_state::vram_w(offs_t offset, u16 data, u16 mem_mask)
1673 {
1674 	COMBINE_DATA(&m_vram[Layer][offset]);
1675 	if (m_rambank[Layer] == ((offset >> 12) & 1))
1676 		m_tilemap[Layer]->mark_tile_dirty(offset & 0x7ff);
1677 }
1678 
1679 
1680 /***************************************************************************
1681 
1682 
1683                                     Main CPU
1684 
1685 (for debugging it is useful to be able to peek at some memory regions that
1686  the game writes to but never reads from. I marked this regions with an empty
1687  comment to distinguish them, since there's always the possibility that some
1688  games actually read from this kind of regions, expecting some hardware
1689  register's value there, instead of the data they wrote)
1690 
1691 ***************************************************************************/
1692 
1693 
ipl0_ack_r()1694 u16 seta_state::ipl0_ack_r()
1695 {
1696 	if (!machine().side_effects_disabled())
1697 		m_maincpu->set_input_line(1, CLEAR_LINE);
1698 	return 0;
1699 }
1700 
ipl0_ack_w(u16 data)1701 void seta_state::ipl0_ack_w(u16 data)
1702 {
1703 	m_maincpu->set_input_line(1, CLEAR_LINE);
1704 }
1705 
ipl1_ack_r()1706 u16 seta_state::ipl1_ack_r()
1707 {
1708 	if (!machine().side_effects_disabled())
1709 		m_maincpu->set_input_line(2, CLEAR_LINE);
1710 	return 0;
1711 }
1712 
ipl1_ack_w(u16 data)1713 void seta_state::ipl1_ack_w(u16 data)
1714 {
1715 	m_maincpu->set_input_line(2, CLEAR_LINE);
1716 }
1717 
ipl2_ack_r()1718 u16 seta_state::ipl2_ack_r()
1719 {
1720 	if (!machine().side_effects_disabled())
1721 		m_maincpu->set_input_line(4, CLEAR_LINE);
1722 	return 0;
1723 }
1724 
ipl2_ack_w(u16 data)1725 void seta_state::ipl2_ack_w(u16 data)
1726 {
1727 	m_maincpu->set_input_line(4, CLEAR_LINE);
1728 }
1729 
1730 
1731 /***************************************************************************
1732                                 Thundercade
1733 ***************************************************************************/
1734 
1735 /* Mirror RAM seems necessary since the e00000-e03fff area is not cleared
1736    on startup. Level 2 int uses $e0000a as a counter that controls when
1737    to write a value to the sub cpu, and when to read the result back.
1738    If the check fails "error x0-006" is displayed. Hence if the counter
1739    is not cleared at startup the game could check for the result before
1740    writing to sharedram! */
1741 
1742 
tndrcade_map(address_map & map)1743 void seta_state::tndrcade_map(address_map &map)
1744 {
1745 	map(0x000000, 0x07ffff).rom();                             // ROM
1746 	map(0x200000, 0x200001).w(FUNC(seta_state::ipl1_ack_w));
1747 	map(0x280000, 0x280001).nopw();                        // ? 0 / 1 (sub cpu related?)
1748 	map(0x300000, 0x300001).nopw();                        // ? 0 / 1
1749 	map(0x380000, 0x3803ff).ram().share("paletteram1"); // Palette
1750 	map(0x400000, 0x400001).nopw();                        // ? $4000
1751 	map(0x600000, 0x6005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
1752 	map(0x600600, 0x600607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
1753 
1754 	map(0x800000, 0x800007).w(FUNC(seta_state::sub_ctrl_w)).umask16(0x00ff);               // Sub CPU Control?
1755 	map(0xa00000, 0xa00fff).rw(FUNC(seta_state::sharedram_68000_r), FUNC(seta_state::sharedram_68000_w)).umask16(0x00ff);  // Shared RAM
1756 	map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
1757 	map(0xe00000, 0xe03fff).ram().share("share1");                  // RAM (Mirrored?)
1758 	map(0xffc000, 0xffffff).ram().share("share1");                  // RAM (Mirrored?)
1759 }
1760 
1761 
1762 /***************************************************************************
1763                 Twin Eagle, DownTown, Arbalester, Meta Fox
1764         (with slight variations, and Meta Fox protection hooked in)
1765 ***************************************************************************/
1766 
twineagl_ctrl_w(u8 data)1767 void seta_state::twineagl_ctrl_w(u8 data)
1768 {
1769 	if ((data & 0x30) == 0)
1770 	{
1771 		m_maincpu->set_input_line(1, CLEAR_LINE);
1772 		m_maincpu->set_input_line(3, CLEAR_LINE);
1773 	}
1774 }
1775 
downtown_map(address_map & map)1776 void seta_state::downtown_map(address_map &map)
1777 {
1778 	map(0x000000, 0x09ffff).rom();                             // ROM
1779 	map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
1780 	map(0x200000, 0x200001).noprw();                             // watchdog? (twineagl)
1781 	map(0x300000, 0x300001).w(FUNC(seta_state::ipl1_ack_w));
1782 	map(0x400000, 0x400007).w(FUNC(seta_state::twineagl_tilebank_w)).umask16(0x00ff);      // special tile banking to animate water in twineagl
1783 	map(0x500001, 0x500001).w(FUNC(seta_state::twineagl_ctrl_w));
1784 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));                // DSW
1785 	map(0x700000, 0x7003ff).ram().share("paletteram1");  // Palette
1786 	map(0x800000, 0x800005).writeonly().share("vctrl_0");// VRAM Ctrl
1787 	map(0x900000, 0x903fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM
1788 	map(0xa00000, 0xa00007).w(FUNC(seta_state::sub_ctrl_w)).umask16(0x00ff);               // Sub CPU Control?
1789 	map(0xb00000, 0xb00fff).rw(FUNC(seta_state::sharedram_68000_r), FUNC(seta_state::sharedram_68000_w)).umask16(0x00ff);  // Shared RAM
1790 	map(0xc00000, 0xc00001).nopw();                        // ? $4000
1791 	map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
1792 	map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
1793 	map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
1794 	map(0xf00000, 0xffffff).ram();                             // RAM
1795 }
1796 
1797 
1798 /***************************************************************************
1799                                 Caliber 50
1800 ***************************************************************************/
1801 
calibr50_map(address_map & map)1802 void seta_state::calibr50_map(address_map &map)
1803 {
1804 	map(0x000000, 0x09ffff).rom();                             // ROM
1805 	map(0x100000, 0x100001).r(FUNC(seta_state::ipl2_ack_r));
1806 	map(0x200000, 0x200fff).ram().share("nvram");              // NVRAM (battery backed)
1807 	map(0x300000, 0x300001).rw(FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w));
1808 	map(0x400000, 0x400001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
1809 	map(0x500000, 0x500001).nopw();                        // ?
1810 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));                // DSW
1811 	map(0x700000, 0x7003ff).ram().share("paletteram1");  // Palette
1812 	map(0x800000, 0x800005).writeonly().share("vctrl_0");// VRAM Ctrl
1813 	map(0x900000, 0x903fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM
1814 
1815 	map(0x904000, 0x904fff).ram();                             //
1816 	map(0xa00000, 0xa00001).portr("P1");                 // X1-004
1817 	map(0xa00002, 0xa00003).portr("P2");                 // X1-004
1818 	map(0xa00008, 0xa00009).portr("COINS");              // X1-004
1819 	map(0xa00010, 0xa00017).r("upd4701", FUNC(upd4701_device::read_xy)).umask16(0x00ff);
1820 	map(0xa00019, 0xa00019).r("upd4701", FUNC(upd4701_device::reset_xy_r));
1821 
1822 	map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
1823 	map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
1824 	map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
1825 	map(0xb00001, 0xb00001).r(m_soundlatch[1], FUNC(generic_latch_8_device::read)); // From Sub CPU
1826 	map(0xb00001, 0xb00001).w(m_soundlatch[0], FUNC(generic_latch_8_device::write)); // To Sub CPU
1827 	map(0xc00000, 0xc00001).ram();                             // ? $4000
1828 
1829 	map(0xff0000, 0xffffff).ram();                             // RAM
1830 }
1831 
1832 
1833 /***************************************************************************
1834                                 U.S. Classic
1835 ***************************************************************************/
1836 
dsw_r(offs_t offset)1837 u16 usclssic_state::dsw_r(offs_t offset)
1838 {
1839 	switch (offset)
1840 	{
1841 		case 0/2:   return (m_dsw->read() >>  8) & 0xf;
1842 		case 2/2:   return (m_dsw->read() >> 12) & 0xf;
1843 		case 4/2:   return (m_dsw->read() >>  0) & 0xf;
1844 		case 6/2:   return (m_dsw->read() >>  4) & 0xf;
1845 	}
1846 	return 0;
1847 }
1848 
CUSTOM_INPUT_MEMBER(usclssic_state::trackball_x_r)1849 CUSTOM_INPUT_MEMBER(usclssic_state::trackball_x_r)
1850 {
1851 	return m_track_x[m_port_select ? 1 : 0]->read();
1852 }
1853 
CUSTOM_INPUT_MEMBER(usclssic_state::trackball_y_r)1854 CUSTOM_INPUT_MEMBER(usclssic_state::trackball_y_r)
1855 {
1856 	return m_track_y[m_port_select ? 1 : 0]->read();
1857 }
1858 
1859 
lockout_w(u8 data)1860 void usclssic_state::lockout_w(u8 data)
1861 {
1862 	int tiles_offset = BIT(data, 4) ? 0x4000: 0;
1863 
1864 	m_port_select = BIT(data, 6);
1865 	m_buttonmux->select_w(m_port_select);
1866 
1867 	m_upd4701->resetx_w(BIT(data, 7));
1868 	m_upd4701->resety_w(BIT(data, 7));
1869 
1870 	if (tiles_offset != m_tiles_offset)
1871 		machine().tilemap().mark_all_dirty();
1872 	m_tiles_offset = tiles_offset;
1873 
1874 	seta_coin_lockout_w(data);
1875 }
1876 
1877 
usclssic_map(address_map & map)1878 void usclssic_state::usclssic_map(address_map &map)
1879 {
1880 	map(0x000000, 0x07ffff).rom();                                 // ROM
1881 	map(0xff0000, 0xffffff).ram();                                 // RAM
1882 	map(0x800000, 0x8005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
1883 	map(0x800600, 0x800607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
1884 	map(0x900000, 0x900001).ram();                                 // ? $4000
1885 	map(0xa00000, 0xa00005).ram().share("vctrl_0");         // VRAM Ctrl
1886 	map(0xb00000, 0xb003ff).ram().share("paletteram1");  // Palette
1887 	map(0xb40000, 0xb40007).r(m_upd4701, FUNC(upd4701_device::read_xy)).umask16(0x00ff);
1888 	map(0xb40001, 0xb40001).w(FUNC(usclssic_state::lockout_w));  // Coin Lockout + Tiles Banking
1889 	map(0xb4000a, 0xb4000b).w(FUNC(usclssic_state::ipl1_ack_w));
1890 	map(0xb40010, 0xb40011).portr("COINS");                  // Coins
1891 	map(0xb40011, 0xb40011).w(m_soundlatch[0], FUNC(generic_latch_8_device::write)); // To Sub CPU
1892 	map(0xb40018, 0xb4001f).r(FUNC(usclssic_state::dsw_r));                // 2 DSWs
1893 	map(0xb40018, 0xb40019).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
1894 	map(0xb80000, 0xb80001).r(FUNC(usclssic_state::ipl2_ack_r));
1895 	map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));         // Sprites Code + X + Attr
1896 	map(0xd00000, 0xd03fff).ram().w(FUNC(usclssic_state::vram_w<0>)).share("vram_0"); // VRAM
1897 	map(0xd04000, 0xd04fff).ram();                                 //
1898 	map(0xe00000, 0xe00fff).ram();                                 // NVRAM? (odd bytes)
1899 }
1900 
1901 
1902 /***************************************************************************
1903                                 Athena no Hatena?
1904 ***************************************************************************/
1905 
atehate_map(address_map & map)1906 void seta_state::atehate_map(address_map &map)
1907 {
1908 	map(0x000000, 0x0fffff).rom();                             // ROM
1909 	map(0x900000, 0x9fffff).ram();                             // RAM
1910 	map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
1911 	map(0x200000, 0x200001).nopw();                        // ? watchdog ?
1912 	map(0x300000, 0x300001).nopw();                        // ? 0 (irq ack lev 2?)
1913 	map(0x500000, 0x500001).nopw();                        // ? (end of lev 1: bit 4 goes 1,0,1)
1914 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));                // DSW
1915 	map(0x700000, 0x7003ff).ram().share("paletteram1");  // Palette
1916 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
1917 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
1918 	map(0xb00000, 0xb00001).portr("P1");                 // P1
1919 	map(0xb00002, 0xb00003).portr("P2");                 // P2
1920 	map(0xb00004, 0xb00005).portr("COINS");              // Coins
1921 	map(0xc00000, 0xc00001).ram();                             // ? 0x4000
1922 	map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
1923 }
1924 
1925 
1926 /***************************************************************************
1927                         Blandia
1928 ***************************************************************************/
1929 
blandia_map(address_map & map)1930 void seta_state::blandia_map(address_map &map)
1931 {
1932 	map(0x000000, 0x1fffff).rom();                             // ROM (up to 2MB)
1933 	map(0x200000, 0x20ffff).ram();                             // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff)
1934 	map(0x210000, 0x21ffff).ram();                             // RAM (gundhara)
1935 	map(0x300000, 0x30ffff).ram();                             // RAM (wrofaero and blandia only?)
1936 	map(0x400000, 0x400001).portr("P1");                 // P1
1937 	map(0x400002, 0x400003).portr("P2");                 // P2
1938 	map(0x400004, 0x400005).portr("COINS");              // Coins
1939 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_counter_w));       // Coin Counter (no lockout)
1940 	map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
1941 	map(0x500004, 0x500005).nopw();
1942 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));                // DSW
1943 	map(0x700000, 0x7003ff).ram();                             // (rezon,jjsquawk)
1944 	map(0x700400, 0x700fff).ram().share("paletteram1");  // Palette
1945 	map(0x703c00, 0x7047ff).ram().share("paletteram2"); // 2nd Palette for the paletteoffseteffect
1946 	map(0x800000, 0x8005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
1947 	map(0x800600, 0x800607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
1948 	map(0x880000, 0x880001).ram();                             // ? 0xc000
1949 	map(0x900000, 0x903fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
1950 	map(0xa00000, 0xa00005).ram().share("vctrl_0");     // VRAM 0&1 Ctrl
1951 	map(0xa80000, 0xa80005).ram().share("vctrl_1");     // VRAM 2&3 Ctrl
1952 	map(0xb00000, 0xb03fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
1953 	map(0xb04000, 0xb0ffff).ram();                             // (jjsquawk)
1954 	map(0xb80000, 0xb83fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
1955 	map(0xb84000, 0xb8ffff).ram();                             // (jjsquawk)
1956 	map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
1957 	map(0xd00000, 0xd00007).nopw();                        // ?
1958 	map(0xe00000, 0xe00001).nopw();                        // ? VBlank IRQ Ack
1959 	map(0xf00000, 0xf00001).nopw();                        // ? Sound  IRQ Ack
1960 }
1961 
blandia_x1_map(address_map & map)1962 void seta_state::blandia_x1_map(address_map &map)
1963 {
1964 	map(0x00000, 0xbffff).rom();
1965 	map(0xc0000, 0xfffff).bankr("x1_bank");
1966 }
1967 
1968 
1969 /***************************************************************************
1970     Blandia (proto), Gundhara, J.J.Squawkers, Rezon, War of Aero, Zing Zing Zip
1971                         (with slight variations)
1972 ***************************************************************************/
1973 
blandiap_map(address_map & map)1974 void seta_state::blandiap_map(address_map &map)
1975 {
1976 	map(0x000000, 0x1fffff).rom();                             // ROM (up to 2MB)
1977 	map(0x200000, 0x20ffff).ram();                             // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff)
1978 	map(0x210000, 0x21ffff).ram();                             // RAM (gundhara)
1979 	map(0x300000, 0x30ffff).ram();                             // RAM (wrofaero only?)
1980 	map(0x400000, 0x400001).portr("P1");                 // P1
1981 	map(0x400002, 0x400003).portr("P2");                 // P2
1982 	map(0x400004, 0x400005).portr("COINS");              // Coins
1983 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_counter_w));       // Coin Counter (no lockout)
1984 	map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
1985 	map(0x500004, 0x500005).nopw();
1986 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));                // DSW
1987 	map(0x700000, 0x7003ff).ram();                             // (rezon,jjsquawk)
1988 	map(0x700400, 0x700fff).ram().share("paletteram1");  // Palette
1989 	map(0x703c00, 0x7047ff).ram().share("paletteram2"); // 2nd Palette for the paletteoffseteffect
1990 	map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
1991 	map(0x804000, 0x80ffff).ram();                             // (jjsquawk)
1992 	map(0x880000, 0x883fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
1993 	map(0x884000, 0x88ffff).ram();                             // (jjsquawk)
1994 	map(0x900000, 0x900005).ram().share("vctrl_0");     // VRAM 0&1 Ctrl
1995 	map(0x980000, 0x980005).ram().share("vctrl_1");     // VRAM 2&3 Ctrl
1996 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
1997 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
1998 	map(0xa80000, 0xa80001).ram();                             // ? 0x4000
1999 	map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2000 	map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2001 	map(0xd00000, 0xd00007).nopw();                        // ?
2002 	map(0xe00000, 0xe00001).nopw();                        // ? VBlank IRQ Ack
2003 	map(0xf00000, 0xf00001).nopw();                        // ? Sound  IRQ Ack
2004 }
2005 
2006 
2007 /***************************************************************************
2008     Blandia, Gundhara, J.J.Squawkers, Rezon, War of Aero, Zing Zing Zip
2009                     and Zombie Raid (with slight variations)
2010 ***************************************************************************/
2011 
adc_cb(u8 input)2012 double zombraid_state::adc_cb(u8 input)
2013 {
2014 	if (input == ADC083X_AGND)
2015 		return 0.0;
2016 	else if (input == ADC083X_VREF)
2017 		return 1.0;
2018 	else
2019 		return m_gun_inputs[input - ADC083X_CH0]->read() / 255.0;
2020 }
2021 
gun_r()2022 u16 zombraid_state::gun_r()// Serial interface
2023 {
2024 	return m_adc->do_read();
2025 }
2026 
2027 // Bit 0 is clock, 1 is data, 2 is reset
gun_w(u16 data)2028 void zombraid_state::gun_w(u16 data)
2029 {
2030 	m_adc->cs_write(BIT(data, 2));
2031 	m_adc->di_write(BIT(data, 1));
2032 	m_adc->clk_write(BIT(data, 0));
2033 
2034 	/* Gun Recoils */
2035 	/* Note:  In debug menu recoil solenoids strobe when held down.  Is this correct?? */
2036 	m_gun_recoil[0] = BIT(data, 4);
2037 	m_gun_recoil[1] = BIT(data, 3);
2038 }
2039 
extra_r()2040 u16 seta_state::extra_r()
2041 {
2042 	return m_extra_port.read_safe(0xff);
2043 }
2044 
wrofaero_map(address_map & map)2045 void seta_state::wrofaero_map(address_map &map)
2046 {
2047 	map(0x000000, 0x1fffff).rom();                             // ROM (up to 2MB)
2048 	map(0x200000, 0x20ffff).ram();                             // RAM
2049 	map(0x210000, 0x21ffff).ram();                             // RAM (gundhara)
2050 	map(0x300000, 0x30ffff).ram().share("nvram");              // actually 8K x8 SRAM in zombraid
2051 	map(0x400000, 0x400001).portr("P1");                 // P1
2052 	map(0x400002, 0x400003).portr("P2");                 // P2
2053 	map(0x400004, 0x400005).portr("COINS");              // Coins
2054 
2055 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_counter_w));       // Coin Counter (no lockout)
2056 	map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
2057 	map(0x500004, 0x500005).nopw();
2058 	map(0x500006, 0x500007).r(FUNC(seta_state::extra_r));                   // Buttons 4,5,6 (Daioh only)
2059 
2060 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));                // DSW
2061 	map(0x700000, 0x7003ff).ram();                             // (rezon,jjsquawk)
2062 	map(0x700400, 0x700fff).ram().share("paletteram1");  // Palette
2063 	map(0x701000, 0x70ffff).ram();                             //
2064 	map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
2065 	map(0x804000, 0x80ffff).ram();                             // (jjsquawk)
2066 	map(0x880000, 0x883fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
2067 	map(0x884000, 0x88ffff).ram();                             // (jjsquawk)
2068 	map(0x900000, 0x900005).ram().share("vctrl_0");     // VRAM 0&1 Ctrl
2069 	map(0x980000, 0x980005).ram().share("vctrl_1");     // VRAM 2&3 Ctrl
2070 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
2071 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2072 	map(0xa80000, 0xa80001).ram();                             // ? 0x4000
2073 	map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2074 	map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2075 #if USE_uPD71054_TIMER
2076 	map(0xd00000, 0xd00007).w(FUNC(seta_state::timer_regs_w));             // ?
2077 #else
2078 	map(0xd00000, 0xd00007).nopw();                        // ?
2079 #endif
2080 	map(0xe00000, 0xe00001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
2081 	map(0xf00000, 0xf00001).nopw();                        // ? Sound  IRQ Ack
2082 }
2083 
zombraid_map(address_map & map)2084 void zombraid_state::zombraid_map(address_map &map)
2085 {
2086 	wrofaero_map(map);
2087 	map(0xf00000, 0xf00001).w(FUNC(zombraid_state::gun_w));
2088 	map(0xf00002, 0xf00003).r(FUNC(zombraid_state::gun_r));
2089 }
2090 
zombraid_x1_map(address_map & map)2091 void zombraid_state::zombraid_x1_map(address_map &map)
2092 {
2093 	map(0x00000, 0x7ffff).rom();
2094 	map(0x80000, 0xfffff).bankr("x1_bank");
2095 }
2096 
zingzipbl_unknown_r()2097 u16 seta_state::zingzipbl_unknown_r()
2098 {
2099 	return 0x0000;
2100 }
2101 
zingzipbl_map(address_map & map)2102 void seta_state::zingzipbl_map(address_map &map)
2103 {
2104 	map(0x000000, 0x07ffff).rom();                             // ROM (up to 2MB)
2105 	map(0x200000, 0x20ffff).ram().share("workram");       // RAM (pointer for zombraid crosshair hack)
2106 //  map(0x400000, 0x400001).port_r("P1");                 // P1
2107 //  map(0x400002, 0x400003).port_r("P2");                 // P2
2108 	map(0x400002, 0x400003).r(FUNC(seta_state::zingzipbl_unknown_r));       // P2
2109 //  map(0x400004, 0x400005).port_r("COINS");              // Coins
2110 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout
2111 	map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
2112 	map(0x500004, 0x500005).nopw();
2113 	//map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));              // DSW
2114 	map(0x700400, 0x700fff).ram().share("paletteram1");  // Palette
2115 	map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
2116 	map(0x880000, 0x883fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
2117 	map(0x900000, 0x900005).ram().share("vctrl_0");     // VRAM 0&1 Ctrl
2118 
2119 	//map(0x902006, 0x902007).w // writes 0 here on start up
2120 	map(0x902010, 0x902013).r(FUNC(seta_state::zingzipbl_unknown_r));
2121 
2122 	map(0x980000, 0x980005).ram().share("vctrl_1");     // VRAM 2&3 Ctrl
2123 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
2124 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2125 	map(0xa00608, 0xa00fff).ram(); // zeroed on start up
2126 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2127 	map(0xa80000, 0xa80001).ram();                             // ? 0x4000
2128 	map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2129 	map(0xc00000, 0xc000ff).ram(); // zeroed on startup
2130 #if USE_uPD71054_TIMER
2131 	map(0xd00000, 0xd00007).w(FUNC(seta_state::timer_regs_w));             // ?
2132 #else
2133 	map(0xd00000, 0xd00007).nopw();                        // ?
2134 #endif
2135 	map(0xe00000, 0xe00001).nopw();                        // ? VBlank IRQ Ack
2136 	map(0xf00000, 0xf00001).nopw();                        // ? Sound  IRQ Ack
2137 }
2138 
jjsquawb_map(address_map & map)2139 void seta_state::jjsquawb_map(address_map &map)
2140 {
2141 	map(0x000000, 0x1fffff).rom();                             // ROM (up to 2MB)
2142 	map(0x200000, 0x20ffff).ram().share("workram");     // RAM (pointer for zombraid crosshair hack)
2143 	map(0x210000, 0x21ffff).ram();                             // RAM (gundhara)
2144 	map(0x300000, 0x30ffff).ram();                             // RAM (wrofaero only?)
2145 	map(0x400000, 0x400001).portr("P1");                 // P1
2146 	map(0x400002, 0x400003).portr("P2");                 // P2
2147 	map(0x400004, 0x400005).portr("COINS");              // Coins
2148 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout
2149 	map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
2150 	map(0x500004, 0x500005).nopw();
2151 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));                // DSW
2152 	map(0x700000, 0x70b3ff).ram();                             // RZ: (rezon,jjsquawk)
2153 	map(0x70b400, 0x70bfff).ram().share("paletteram1");  // Palette
2154 	map(0x70c000, 0x70ffff).ram();                             //
2155 	map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0
2156 	map(0x804000, 0x807fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2
2157 	map(0x884000, 0x88ffff).ram();                             // (jjsquawk)
2158 	map(0x908000, 0x908005).ram().share("vctrl_0");     // VRAM 0&1 Ctrl
2159 	map(0x909000, 0x909005).ram().share("vctrl_1");     // VRAM 2&3 Ctrl
2160 	map(0xa0a000, 0xa0a5ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // RZ: Sprites Y
2161 	map(0xa0a600, 0xa0a607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2162 //  map(0xa80000, 0xa80001).ram()                              // ? 0x4000
2163 	map(0xb0c000, 0xb0ffff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // RZ: Sprites Code + X + Attr
2164 	map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2165 #if USE_uPD71054_TIMER
2166 	map(0xd00000, 0xd00007).w(FUNC(seta_state::timer_regs_w));             // ?
2167 #else
2168 	map(0xd00000, 0xd00007).nopw();                        // ?
2169 #endif
2170 	map(0xe00000, 0xe00001).nopw();                        // ? VBlank IRQ Ack
2171 	map(0xf00000, 0xf00001).nopw();                        // ? Sound  IRQ Ack
2172 }
2173 
2174 /***************************************************************************
2175         Orbs
2176 ***************************************************************************/
2177 
orbs_map(address_map & map)2178 void seta_state::orbs_map(address_map &map)
2179 {
2180 	map(0x000000, 0x07ffff).rom();                             // ROM
2181 	map(0xf00000, 0xf0ffff).ram();                             // RAM
2182 	map(0x100000, 0x100001).nopr();                         // ?
2183 	map(0x200000, 0x200001).nopr();                         // ?
2184 	map(0x300000, 0x300003).r(FUNC(seta_state::seta_dsw_r));                // DSW
2185 	map(0x400000, 0x400001).nopw();                        // ?
2186 	map(0x500000, 0x500001).portr("P1");                 // P1
2187 	map(0x500002, 0x500003).portr("P2");                 // P2
2188 	map(0x500004, 0x500005).portr("COINS");              // Coins
2189 	//map(0x600000, 0x60000f).r(FUNC(seta_state::krzybowl_input_r);   // P1
2190 	map(0x8000f0, 0x8000f1).ram();                             // NVRAM
2191 	map(0x800100, 0x8001ff).ram();                             // NVRAM
2192 	map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2193 	map(0xb00000, 0xb003ff).ram().share("paletteram1");  // Palette
2194 	map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2195 	map(0xd00000, 0xd00001).ram();                             // ? 0x4000
2196 	map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
2197 	map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2198 }
2199 
2200 /***************************************************************************
2201                   Kero Kero Keroppi no Issyoni Asobou
2202 ***************************************************************************/
2203 
2204 static const u16 keroppi_protection_word[] = {
2205 	0x0000,
2206 	0x0000, 0x0000, 0x0000,
2207 	0x2000, 0x2000, 0x2000,
2208 	0x2000, 0x2000, 0x2000,
2209 	0x0400, 0x0400, 0x0400,
2210 	0x0000, 0x0000, 0x0000
2211 };
2212 
2213 
keroppi_protection_r()2214 u16 seta_state::keroppi_protection_r()
2215 {
2216 	const u16 result = keroppi_protection_word[m_keroppi_protection_count];
2217 
2218 	if (!machine().side_effects_disabled())
2219 	{
2220 		m_keroppi_protection_count++;
2221 		if (m_keroppi_protection_count > 15)
2222 			m_keroppi_protection_count = 15;
2223 	}
2224 	return result;
2225 }
2226 
keroppi_protection_init_r()2227 u16 seta_state::keroppi_protection_init_r()
2228 {
2229 	if (!machine().side_effects_disabled())
2230 		m_keroppi_protection_count = 0;
2231 
2232 	return 0x00;
2233 }
2234 
keroppi_coin_r()2235 u16 seta_state::keroppi_coin_r()
2236 {
2237 	u16 result = m_coins->read();
2238 
2239 	if (m_keroppi_prize_hop == 2)
2240 	{
2241 		result &= ~0x0002;      /* prize hopper */
2242 		if (!machine().side_effects_disabled())
2243 			m_keroppi_prize_hop = 0;
2244 	}
2245 
2246 	return result;
2247 }
2248 
TIMER_CALLBACK_MEMBER(seta_state::keroppi_prize_hop_callback)2249 TIMER_CALLBACK_MEMBER(seta_state::keroppi_prize_hop_callback)
2250 {
2251 	m_keroppi_prize_hop = 2;
2252 }
2253 
keroppi_prize_w(u16 data)2254 void seta_state::keroppi_prize_w(u16 data)
2255 {
2256 	if ((data & 0x0010) && !m_keroppi_prize_hop)
2257 	{
2258 		m_keroppi_prize_hop = 1;
2259 		m_keroppi_prize_hop_timer->adjust(attotime::from_seconds(3), 0x20);        /* 3 seconds */
2260 	}
2261 }
2262 
keroppi_map(address_map & map)2263 void seta_state::keroppi_map(address_map &map)
2264 {
2265 	map(0x000000, 0x07ffff).rom();                             // ROM
2266 	map(0xf00000, 0xf0ffff).ram();                             // RAM
2267 	map(0x100000, 0x100001).r(FUNC(seta_state::keroppi_protection_r));      //
2268 	map(0x200000, 0x200001).r(FUNC(seta_state::keroppi_protection_init_r)); //
2269 	map(0x300000, 0x300003).r(FUNC(seta_state::seta_dsw_r));                // DSW
2270 	map(0x400000, 0x400001).nopw();                        // ?
2271 	map(0x500000, 0x500001).portr("P1");                 // P1
2272 	map(0x500002, 0x500003).portr("P2");                 // P2
2273 	map(0x500004, 0x500005).r(FUNC(seta_state::keroppi_coin_r));            // Coins
2274 	map(0x8000f0, 0x8000f1).ram();                             // NVRAM
2275 	map(0x800100, 0x8001ff).ram();                             // NVRAM
2276 	map(0x900000, 0x900001).nopw();                        // ?
2277 	map(0x900002, 0x900003).w(FUNC(seta_state::keroppi_prize_w));          //
2278 	map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2279 	map(0xb00000, 0xb003ff).ram().share("paletteram1");  // Palette
2280 	map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2281 	map(0xd00000, 0xd00001).ram();                             // ? 0x4000
2282 	map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
2283 	map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2284 }
2285 
MACHINE_START_MEMBER(seta_state,keroppi)2286 MACHINE_START_MEMBER(seta_state,keroppi)
2287 {
2288 	m_keroppi_prize_hop_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(seta_state::keroppi_prize_hop_callback), this));
2289 
2290 	m_keroppi_prize_hop = 0;
2291 	m_keroppi_protection_count = 0;
2292 }
2293 
2294 /***************************************************************************
2295                                 Block Carnival
2296 ***************************************************************************/
2297 
2298 /* similar to krzybowl */
blockcar_map(address_map & map)2299 void seta_state::blockcar_map(address_map &map)
2300 {
2301 	map(0x000000, 0x03ffff).rom();                             // ROM
2302 	map(0xf00000, 0xf03fff).ram();                             // RAM
2303 	map(0xf04000, 0xf041ff).ram();                             // Backup RAM?
2304 	map(0xf05000, 0xf050ff).ram();                             // Backup RAM?
2305 	map(0x100000, 0x100001).nopw();                        // ? 1 (start of interrupts, main loop: watchdog?)
2306 	map(0x200000, 0x200001).nopw();                        // ? 0/1 (IRQ acknowledge?)
2307 	map(0x300000, 0x300003).r(FUNC(seta_state::seta_dsw_r));                // DSW
2308 	map(0x400001, 0x400001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout + Sound Enable (bit 4?)
2309 	map(0x500000, 0x500001).portr("P1");                 // P1
2310 	map(0x500002, 0x500003).portr("P2");                 // P2
2311 	map(0x500004, 0x500005).portr("COINS");              // Coins
2312 	map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2313 	map(0xb00000, 0xb003ff).ram().share("paletteram1");  // Palette
2314 	map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
2315 	map(0xd00000, 0xd00001).ram(); // ? 0x4000
2316 	map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
2317 	map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2318 }
2319 
blockcarb_map(address_map & map)2320 void seta_state::blockcarb_map(address_map &map)
2321 {
2322 	map(0x000000, 0x03ffff).rom();                             // ROM
2323 	map(0xf00000, 0xf03fff).ram();                             // RAM
2324 	map(0xf04000, 0xf041ff).ram();                             // Backup RAM?
2325 	map(0xf05000, 0xf050ff).ram();                             // Backup RAM?
2326 	map(0x100000, 0x100001).nopw();                        // ? 1 (start of interrupts, main loop: watchdog?)
2327 	map(0x200000, 0x200001).nopw();                        // ? 0/1 (IRQ acknowledge?)
2328 	map(0x300000, 0x300003).r(FUNC(seta_state::seta_dsw_r));                // DSW
2329 	map(0x400001, 0x400001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout + Sound Enable (bit 4?)
2330 	map(0x500000, 0x500001).portr("P1");                 // P1
2331 	map(0x500002, 0x500003).portr("P2");                 // P2
2332 	map(0x500004, 0x500005).portr("COINS");              // Coins
2333 	map(0x500009, 0x500009).w("oki", FUNC(okim6295_device::write));
2334 	//map(0x50000c, 0x50000d); // ??
2335 	map(0xa00000, 0xa03fff).noprw();   // Sound - not on this bootleg
2336 	map(0xb00000, 0xb003ff).ram().share("paletteram1");  // Palette
2337 	map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
2338 	map(0xd00000, 0xd00001).ram(); // ? 0x4000
2339 	map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
2340 	map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2341 }
2342 
2343 /***************************************************************************
2344                                 Daioh
2345 ***************************************************************************/
2346 
daioh_map(address_map & map)2347 void seta_state::daioh_map(address_map &map)
2348 {
2349 	map(0x000000, 0x0fffff).rom();                             // ROM
2350 	map(0x100000, 0x10ffff).ram();                             // RAM
2351 	map(0x400000, 0x400001).portr("P1");                 // P1
2352 	map(0x400002, 0x400003).portr("P2");                 // P2
2353 	map(0x400004, 0x400005).portr("COINS");              // Coins
2354 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout
2355 	map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
2356 	map(0x500004, 0x500005).nopw();
2357 	map(0x500006, 0x500007).portr("EXTRA");              // Buttons 4,5,6
2358 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));   // DSW
2359 	map(0x700000, 0x7003ff).ram();
2360 	map(0x700400, 0x700fff).ram().share("paletteram1");  // Palette
2361 	map(0x701000, 0x70ffff).ram();                             //
2362 	map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
2363 	map(0x804000, 0x80ffff).ram();                             //
2364 	map(0x880000, 0x883fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
2365 	map(0x884000, 0x88ffff).ram();                             //
2366 	map(0x900000, 0x900005).ram().share("vctrl_0");     // VRAM 0&1 Ctrl
2367 	map(0x980000, 0x980005).ram().share("vctrl_1");     // VRAM 2&3 Ctrl
2368 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
2369 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2370 
2371 	map(0xa80000, 0xa80001).ram(); // ? 0x4000
2372 	map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
2373 	map(0xb04000, 0xb13fff).ram();
2374 	map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2375 	map(0xe00000, 0xe00001).nopw();    //
2376 }
2377 
2378 
2379 /***************************************************************************
2380                        Daioh (location test version)
2381 ***************************************************************************/
2382 
daiohp_map(address_map & map)2383 void seta_state::daiohp_map(address_map &map)
2384 {
2385 	map(0x000000, 0x07ffff).rom().mirror(0x080000);         // ROM
2386 	map(0x100000, 0x17ffff).rom().mirror(0x080000);         // ROM
2387 	map(0x200000, 0x20ffff).ram();                             // RAM
2388 	map(0x400000, 0x400001).portr("P1");                 // P1
2389 	map(0x400002, 0x400003).portr("P2");                 // P2
2390 	map(0x400004, 0x400005).portr("COINS");              // Coins
2391 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout
2392 	map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
2393 	map(0x500004, 0x500005).nopw();
2394 	map(0x500006, 0x500007).portr("EXTRA");              // Buttons 4,5,6
2395 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));   // DSW
2396 	map(0x700000, 0x7003ff).ram();
2397 	map(0x700400, 0x700fff).ram().share("paletteram1");  // Palette
2398 	map(0x701000, 0x70ffff).ram();                             //
2399 	map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
2400 	map(0x804000, 0x80ffff).ram();                             //
2401 	map(0x880000, 0x883fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
2402 	map(0x884000, 0x88ffff).ram();                             //
2403 	map(0x900000, 0x900005).ram().share("vctrl_0");     // VRAM 0&1 Ctrl
2404 	map(0x980000, 0x980005).ram().share("vctrl_1");     // VRAM 2&3 Ctrl
2405 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
2406 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2407 
2408 	map(0xa80000, 0xa80001).ram(); // ? 0x4000
2409 	map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
2410 	map(0xb04000, 0xb13fff).ram();
2411 	map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2412 	map(0xd00000, 0xd00007).nopw();                        // ?
2413 	map(0xe00000, 0xe00001).nopw();                        // ? VBlank IRQ Ack
2414 	map(0xf00000, 0xf00001).nopw();                        // ? Sound  IRQ Ack
2415 }
2416 
2417 
2418 /***************************************************************************
2419         Dragon Unit, Quiz Kokology, Quiz Kokology 2, Strike Gunner
2420 ***************************************************************************/
2421 
drgnunit_map(address_map & map)2422 void seta_state::drgnunit_map(address_map &map)
2423 {
2424 	map(0x000000, 0x0bffff).rom();                             // ROM
2425 	map(0xf00000, 0xf0ffff).ram();                             // RAM (qzkklogy)
2426 	map(0xffc000, 0xffffff).ram();                             // RAM (drgnunit,stg)
2427 	map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2428 	map(0x200000, 0x200001).nopw();                        // Watchdog
2429 	map(0x300000, 0x300001).nopw();                        // ? IRQ Ack
2430 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout
2431 	map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
2432 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));                // DSW
2433 	map(0x700000, 0x7003ff).ram().share("paletteram1");  // Palette
2434 	map(0x800000, 0x800005).ram().share("vctrl_0");     // VRAM Ctrl
2435 	map(0x900000, 0x903fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM
2436 	map(0x904000, 0x90ffff).nopw();                        // unused (qzkklogy)
2437 	map(0xb00000, 0xb00001).portr("P1");                 // P1
2438 	map(0xb00002, 0xb00003).portr("P2");                 // P2
2439 	map(0xb00004, 0xb00005).portr("COINS");              // Coins
2440 	map(0xb00006, 0xb00007).nopr();                         // unused (qzkklogy)
2441 	map(0xc00000, 0xc00001).ram();                             // ? $4000
2442 	map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
2443 	map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2444 	map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2445 }
2446 
2447 /***************************************************************************
2448                                 The Roulette
2449 ***************************************************************************/
2450 
MACHINE_START_MEMBER(setaroul_state,setaroul)2451 MACHINE_START_MEMBER(setaroul_state, setaroul)
2452 {
2453 	m_leds.resolve();
2454 }
2455 
2456 // Coin drop
MACHINE_RESET_MEMBER(setaroul_state,setaroul)2457 MACHINE_RESET_MEMBER(setaroul_state, setaroul)
2458 {
2459 	m_coin_start_cycles = 0;
2460 }
2461 
INPUT_CHANGED_MEMBER(setaroul_state::coin_drop_start)2462 INPUT_CHANGED_MEMBER( setaroul_state::coin_drop_start )
2463 {
2464 	if (newval && !m_coin_start_cycles)
2465 		m_coin_start_cycles = m_maincpu->total_cycles();
2466 }
2467 
CUSTOM_INPUT_MEMBER(setaroul_state::coin_sensors_r)2468 CUSTOM_INPUT_MEMBER( setaroul_state::coin_sensors_r )
2469 {
2470 	u8 data = 0x03;
2471 
2472 	// simulates the passage of coins through multiple sensors
2473 	if (m_coin_start_cycles)
2474 	{
2475 		attotime diff = m_maincpu->cycles_to_attotime(m_maincpu->total_cycles() - m_coin_start_cycles);
2476 
2477 		if (diff <= attotime::from_msec(16*10))
2478 			data &= ~0x02;
2479 
2480 		if (diff > attotime::from_msec(16*5) && diff < attotime::from_msec(16*15))
2481 			data &= ~0x01;
2482 
2483 		if (diff > attotime::from_msec(16*15))
2484 			m_coin_start_cycles = 0;
2485 	}
2486 
2487 	return data;
2488 }
2489 
2490 // the spritey low bits are mapped to 1 in every 4 bytes here as if it were a 32-bit bus..which is weird
2491 // other ram is similar..
2492 
spritecode_w(offs_t offset,u16 data)2493 void setaroul_state::spritecode_w(offs_t offset, u16 data)
2494 {
2495 	if ((offset & 1) == 1) m_seta001->spritecodelow_w8(offset >> 1, (data & 0xff00) >> 8);
2496 	if ((offset & 1) == 0) m_seta001->spritecodehigh_w8(offset >> 1, (data & 0xff00) >> 8);
2497 }
2498 
spritecode_r(offs_t offset)2499 u16 setaroul_state::spritecode_r(offs_t offset)
2500 {
2501 	u16 ret;
2502 	if ((offset & 1) == 1)
2503 		ret = m_seta001->spritecodelow_r8(offset >> 1);
2504 	else
2505 		ret = m_seta001->spritecodehigh_r8(offset >> 1);
2506 	return ret << 8;
2507 }
2508 
spriteylow_w(offs_t offset,u16 data)2509 void setaroul_state::spriteylow_w(offs_t offset, u16 data)
2510 {
2511 	if ((offset & 1) == 0) m_seta001->spriteylow_w8(offset >> 1, (data & 0xff00) >> 8);
2512 }
2513 
spritectrl_w(offs_t offset,u16 data)2514 void setaroul_state::spritectrl_w(offs_t offset, u16 data)
2515 {
2516 	if ((offset & 1) == 0) m_seta001->spritectrl_w8(offset >> 1, (data & 0xff00) >> 8);
2517 }
2518 
2519 // RTC (To do: write a D4911C device)
rtc_r(offs_t offset)2520 u16 setaroul_state::rtc_r(offs_t offset)
2521 {
2522 	if (offset >= 7)
2523 		++offset;
2524 	if (offset / 2 >= 7)
2525 		return 0;
2526 	return (m_rtc->read(offset / 2) >> ((offset & 1) * 4)) & 0xf;
2527 }
2528 
rtc_w(u16 data)2529 void setaroul_state::rtc_w(u16 data)
2530 {
2531 }
2532 
2533 // Inputs
inputs_r()2534 u16 setaroul_state::inputs_r()
2535 {
2536 	if (m_mux < 0x1a)
2537 		return m_bet[m_mux]->read();
2538 	return 0xff;
2539 }
mux_w(u16 data)2540 void setaroul_state::mux_w(u16 data)
2541 {
2542 	m_mux = data;
2543 }
2544 
2545 // Outputs
show_outputs()2546 void setaroul_state::show_outputs()
2547 {
2548 #ifdef MAME_DEBUG
2549 	popmessage("Pay: %02X Led: %02X", m_pay, m_led);
2550 #endif
2551 }
2552 
pay_w(u8 data)2553 void setaroul_state::pay_w(u8 data)
2554 {
2555 	m_pay = data;
2556 
2557 	machine().bookkeeping().coin_counter_w(6,   data  & 0x01);  // coin in         (meter 6 in input test, touch '7')
2558 	machine().bookkeeping().coin_counter_w(5,   data  & 0x02);  // coupon in       (meter 5 in input test, touch '6')
2559 	machine().bookkeeping().coin_counter_w(4,   data  & 0x04);  // coin drop       (meter 4 in input test, touch '5')
2560 	machine().bookkeeping().coin_counter_w(3,   data  & 0x08);  // unused?         (meter 3 in input test, touch '4')
2561 	machine().bookkeeping().coin_counter_w(2,   data  & 0x10);  // medal out       (meter 2 in input test, touch '3')
2562 	machine().bookkeeping().coin_counter_w(1,   data  & 0x20);  // note in         (meter 1 in input test, touch '2')
2563 	//                                          data  & 0x40    // hopper lock-out (lock.o  in input test, touch '8')
2564 	//                                          data  & 0x80    // hopper motor    (hop.h   in input test, touch '0')
2565 	m_hopper->motor_w((!(data & 0x40) && (data & 0x80)) ? 1 : 0);
2566 
2567 	show_outputs();
2568 }
2569 
led_w(u8 data)2570 void setaroul_state::led_w(u8 data)
2571 {
2572 	m_led = data;
2573 
2574 	m_leds[0] = BIT(data, 0);  // pay out        (hop.c in input test, touch '1')
2575 	m_leds[1] = BIT(data, 1);  // call attendant (cal.o in input test, touch '9')
2576 	//
2577 	//                          data  & 0x10    // hopper divider (divider in input test, touch '10')
2578 	//                          data  & 0x80    // video enable?
2579 
2580 	show_outputs();
2581 }
2582 
setaroul_map(address_map & map)2583 void setaroul_state::setaroul_map(address_map &map)
2584 {
2585 	map(0x000000, 0x01ffff).rom();
2586 
2587 	map(0x800000, 0x800003).noprw(); // RS232C Auto Time Set: r/w
2588 
2589 	map(0xc00000, 0xc03fff).ram().share("nvram");
2590 
2591 	map(0xc40000, 0xc40001).noprw(); // lev. 2/5 irq ack
2592 	map(0xc80000, 0xc80001).noprw(); // lev. 4   irq ack
2593 
2594 	map(0xcc0000, 0xcc001f).rw(FUNC(setaroul_state::rtc_r), FUNC(setaroul_state::rtc_w));
2595 
2596 	map(0xd00000, 0xd00001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
2597 
2598 	map(0xd40000, 0xd40001).portr("DSW1-A");
2599 	map(0xd40001, 0xd40001).w(FUNC(setaroul_state::pay_w));
2600 	map(0xd40002, 0xd40003).portr("DSW1-B");
2601 
2602 	map(0xd40004, 0xd40005).portr("DSW2-A");
2603 	map(0xd40006, 0xd40007).portr("DSW2-B");
2604 
2605 	map(0xd40008, 0xd40009).portr("COIN");
2606 	map(0xd40009, 0xd40009).w(FUNC(setaroul_state::led_w));
2607 	map(0xd4000a, 0xd4000b).portr("DOOR");
2608 
2609 	map(0xd40010, 0xd40011).rw(FUNC(setaroul_state::inputs_r), FUNC(setaroul_state::mux_w));
2610 
2611 	map(0xd40018, 0xd40019).portr("DSW3");
2612 
2613 	map(0xdc0000, 0xdc3fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2614 
2615 	map(0xe00000, 0xe03fff).ram().w(FUNC(setaroul_state::vram_w<0>)).share("vram_0");
2616 	map(0xe40000, 0xe40005).ram().share("vctrl_0");     // VRAM Ctrl
2617 	map(0xf00000, 0xf03fff).rw(FUNC(setaroul_state::spritecode_r), FUNC(setaroul_state::spritecode_w));
2618 	map(0xf40000, 0xf40bff).w(FUNC(setaroul_state::spriteylow_w));
2619 	map(0xf40c00, 0xf40c11).w(FUNC(setaroul_state::spritectrl_w));
2620 
2621 //  map(0xf80000, 0xf80001).w(FUNC(setaroul_state::xxx)); // $40 at boot
2622 }
2623 
2624 /***************************************************************************
2625                         Extreme Downhill / Sokonuke
2626 ***************************************************************************/
2627 
extdwnhl_map(address_map & map)2628 void seta_state::extdwnhl_map(address_map &map)
2629 {
2630 	map.unmap_value_high();
2631 	map(0x000000, 0x0fffff).rom();                             // ROM
2632 	map(0x200000, 0x20ffff).ram();                             // RAM
2633 	map(0x210000, 0x21ffff).ram();                             // RAM
2634 	map(0x220000, 0x23ffff).ram();                             // RAM (sokonuke)
2635 	map(0x400000, 0x400001).portr("P1");                 // P1
2636 	map(0x400002, 0x400003).portr("P2");                 // P2
2637 	map(0x400004, 0x400005).portr("COINS");              // Coins
2638 	map(0x400008, 0x40000b).r(FUNC(seta_state::seta_dsw_r));                // DSW
2639 	map(0x40000c, 0x40000d).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));    // Watchdog (extdwnhl (R) & sokonuke (W) MUST RETURN $FFFF)
2640 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_counter_w));       // Coin Counter (no lockout)
2641 	map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
2642 	map(0x500004, 0x500007).noprw();                             // IRQ Ack  (extdwnhl (R) & sokonuke (W))
2643 	map(0x600400, 0x600fff).ram().share("paletteram1");  // Palette
2644 	map(0x601000, 0x610bff).ram();                             //
2645 	map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
2646 	map(0x804000, 0x80ffff).ram();                             //
2647 	map(0x880000, 0x883fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
2648 	map(0x884000, 0x88ffff).ram();                             //
2649 	map(0x900000, 0x900005).ram().share("vctrl_0");     // VRAM 0&1 Ctrl
2650 	map(0x980000, 0x980005).ram().share("vctrl_1");     // VRAM 2&3 Ctrl
2651 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
2652 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2653 	map(0xa80000, 0xa80001).ram();                             // ? 0x4000
2654 	map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2655 	map(0xb04000, 0xb13fff).ram();                             //
2656 	map(0xe00000, 0xe03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2657 }
2658 
2659 
2660 /***************************************************************************
2661         (Kamen) Masked Riders Club Battle Race / Mad Shark
2662 ***************************************************************************/
2663 
kamenrid_map(address_map & map)2664 void seta_state::kamenrid_map(address_map &map)
2665 {
2666 	map(0x000000, 0x07ffff).rom();                             // ROM
2667 	map(0x200000, 0x20ffff).ram();                             // RAM
2668 	map(0x500000, 0x500001).portr("P1");                 // P1
2669 	map(0x500002, 0x500003).portr("P2");                 // P2
2670 	map(0x500004, 0x500007).r(FUNC(seta_state::seta_dsw_r));                // DSW
2671 	map(0x500008, 0x500009).portr("COINS");              // Coins
2672 	map(0x50000c, 0x50000d).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));    // xx Watchdog? (sokonuke)
2673 	map(0x600001, 0x600001).w(FUNC(seta_state::seta_coin_counter_w));       // Coin Counter (no lockout)
2674 	map(0x600003, 0x600003).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
2675 	map(0x600004, 0x600005).w(FUNC(seta_state::ipl1_ack_w));
2676 	map(0x600006, 0x600007).w(FUNC(seta_state::ipl2_ack_w));
2677 	map(0x700000, 0x7003ff).ram();                             // Palette RAM (tested)
2678 	map(0x700400, 0x700fff).ram().share("paletteram1");  // Palette
2679 	map(0x701000, 0x703fff).ram();                             // Palette
2680 	map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
2681 	map(0x804000, 0x807fff).ram(); // tested
2682 	map(0x880000, 0x883fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
2683 	map(0x884000, 0x887fff).ram(); // tested
2684 	map(0x900000, 0x900005).ram().share("vctrl_0");     // VRAM 0&1 Ctrl
2685 	map(0x980000, 0x980005).ram().share("vctrl_1");     // VRAM 2&3 Ctrl
2686 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
2687 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2688 	map(0xa80000, 0xa80001).ram();                             // ? $4000
2689 	map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2690 	map(0xb04000, 0xb07fff).ram();                             // tested
2691 	map(0xc00000, 0xc00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff);
2692 	map(0xd00000, 0xd03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2693 }
2694 
2695 /* almost identical to kamenrid */
madshark_map(address_map & map)2696 void seta_state::madshark_map(address_map &map)
2697 {
2698 	map(0x000000, 0x0fffff).rom();                             // ROM
2699 	map(0x200000, 0x20ffff).ram();                             // RAM
2700 	map(0x500000, 0x500001).portr("P1");                 // P1
2701 	map(0x500002, 0x500003).portr("P2");                 // P2
2702 	map(0x500004, 0x500005).portr("COINS");              // Coins
2703 	map(0x500008, 0x50000b).r(FUNC(seta_state::seta_dsw_r));                // DSW
2704 	map(0x50000c, 0x50000d).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
2705 	map(0x600001, 0x600001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout
2706 	map(0x600003, 0x600003).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
2707 	map(0x600004, 0x600005).w(FUNC(seta_state::ipl1_ack_w));
2708 	map(0x600006, 0x600007).w(FUNC(seta_state::ipl2_ack_w));
2709 	map(0x700400, 0x700fff).ram().share("paletteram1");  // Palette
2710 	map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
2711 	map(0x880000, 0x883fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
2712 	map(0x900000, 0x900005).ram().share("vctrl_0");     // VRAM 0&1 Ctrl
2713 	map(0x980000, 0x980005).ram().share("vctrl_1");     // VRAM 2&3 Ctrl
2714 
2715 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
2716 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2717 	map(0xa80000, 0xa80001).ram();                             // ? $4000
2718 	map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2719 	map(0xc00000, 0xc00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff);
2720 	map(0xd00000, 0xd03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2721 }
2722 
2723 
magspeed_lights_w(offs_t offset,u16 data,u16 mem_mask)2724 void seta_state::magspeed_lights_w(offs_t offset, u16 data, u16 mem_mask)
2725 {
2726 	COMBINE_DATA(&m_magspeed_lights[offset]);
2727 
2728 	for (int i = 0; i < 16; i++)
2729 		m_leds[offset * 16 + i] = BIT(m_magspeed_lights[offset], i);
2730 
2731 //  popmessage("%04X %04X %04X", m_magspeed_lights[0], m_magspeed_lights[1], m_magspeed_lights[2]);
2732 }
2733 
2734 /* almost identical to kamenrid */
magspeed_map(address_map & map)2735 void seta_state::magspeed_map(address_map &map)
2736 {
2737 	map(0x000000, 0x07ffff).rom();                             // ROM
2738 	map(0x1f8000, 0x1f8fff).noprw();                           // NVRAM?
2739 	map(0x200000, 0x20ffff).ram();                             // RAM
2740 	map(0x500000, 0x500001).portr("P1");                 // P1
2741 	map(0x500002, 0x500003).portr("P2");                 // P2
2742 	map(0x500004, 0x500005).portr("COINS");              // Coins
2743 	map(0x500008, 0x50000b).r(FUNC(seta_state::seta_dsw_r));                // DSW
2744 	map(0x50000c, 0x50000d).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
2745 	map(0x500011, 0x500011).w(FUNC(seta_state::seta_coin_counter_w));       // Coin Counter (no lockout)
2746 	map(0x500015, 0x500015).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
2747 	map(0x500018, 0x500019).w(FUNC(seta_state::ipl1_ack_w));               // lev 2 irq ack?
2748 	map(0x50001c, 0x50001d).w(FUNC(seta_state::ipl2_ack_w));               // lev 4 irq ack?
2749 	map(0x600000, 0x600005).w(FUNC(seta_state::magspeed_lights_w));        // Lights
2750 	map(0x600006, 0x600007).nopw();                        // ?
2751 	map(0x700000, 0x7003ff).ram();                             // Palette RAM (tested)
2752 	map(0x700400, 0x700fff).ram().share("paletteram1");      // Palette
2753 	map(0x701000, 0x703fff).ram();                             // Palette RAM (tested)
2754 	map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
2755 	map(0x804000, 0x807fff).ram();                             // tested
2756 	map(0x880000, 0x883fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
2757 	map(0x884000, 0x887fff).ram();                             // tested
2758 	map(0x900000, 0x900005).ram().share("vctrl_0");         // VRAM 0&1 Ctrl
2759 	map(0x980000, 0x980005).ram().share("vctrl_1");         // VRAM 2&3 Ctrl
2760 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
2761 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2762 	map(0xa80000, 0xa80001).ram();                             // ? $4000
2763 	map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2764 	map(0xb04000, 0xb07fff).ram();                             // tested
2765 	map(0xc00000, 0xc00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff);
2766 	map(0xd00000, 0xd03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2767 }
2768 
2769 
2770 /***************************************************************************
2771                                 Krazy Bowl
2772 ***************************************************************************/
2773 
krzybowl_map(address_map & map)2774 void seta_state::krzybowl_map(address_map &map)
2775 {
2776 	map(0x000000, 0x07ffff).rom();                             // ROM
2777 	map(0xf00000, 0xf0ffff).ram();                             // RAM
2778 	map(0x100000, 0x100001).nopr();                         // ?
2779 	map(0x200000, 0x200001).nopr();                         // ?
2780 	map(0x300000, 0x300003).r(FUNC(seta_state::seta_dsw_r));                // DSW
2781 	map(0x400000, 0x400001).nopw();                        // ?
2782 	map(0x500000, 0x500001).portr("P1");                 // P1
2783 	map(0x500002, 0x500003).portr("P2");                 // P2
2784 	map(0x500004, 0x500005).portr("COINS");              // Coins
2785 	map(0x600000, 0x600007).r("upd1", FUNC(upd4701_device::read_xy)).umask16(0x00ff); // P1 trackball
2786 	map(0x600008, 0x60000f).r("upd2", FUNC(upd4701_device::read_xy)).umask16(0x00ff); // P2 trackball
2787 	map(0x8000f0, 0x8000f1).ram();                             // NVRAM
2788 	map(0x800100, 0x8001ff).ram();                             // NVRAM
2789 	map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2790 	map(0xb00000, 0xb003ff).ram().share("paletteram1");  // Palette
2791 	map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2792 	map(0xd00000, 0xd00001).ram();                             // ? 0x4000
2793 	map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
2794 	map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2795 }
2796 
2797 
2798 /***************************************************************************
2799                             Mobile Suit Gundam
2800 ***************************************************************************/
2801 
2802 /* Mirror RAM is necessary or startup, to clear Work RAM after the test */
2803 
msgundam_map(address_map & map)2804 void seta_state::msgundam_map(address_map &map)
2805 {
2806 	map(0x000000, 0x07ffff).rom();                             // ROM
2807 	map(0x100000, 0x1fffff).rom();                             // ROM
2808 	map(0x200000, 0x20ffff).ram().mirror(0x70000);          // RAM
2809 	map(0x400000, 0x400001).portr("P1");                 // P1
2810 	map(0x400002, 0x400003).portr("P2");                 // P2
2811 	map(0x400004, 0x400005).portr("COINS");              // Coins
2812 	map(0x400000, 0x400001).w(FUNC(seta_state::ipl1_ack_w));               // Lev 2 IRQ Ack
2813 	map(0x400004, 0x400005).w(FUNC(seta_state::ipl2_ack_w));               // Lev 4 IRQ Ack
2814 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout
2815 	map(0x500002, 0x500003).nopw();                                               // ?
2816 	map(0x500005, 0x500005).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
2817 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));                // DSW
2818 	map(0x700400, 0x700fff).ram().share("paletteram1");  // Palette
2819 	map(0x800000, 0x8005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
2820 	map(0x800600, 0x800607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2821 	map(0x880000, 0x880001).ram();                             // ? 0x4000
2822 	map(0x900000, 0x903fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2823 	map(0xa00000, 0xa03fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
2824 	map(0xa80000, 0xa83fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
2825 	map(0xb00000, 0xb00005).ram().share("vctrl_0");     // VRAM 0&1 Ctrl
2826 	map(0xb80000, 0xb80005).ram().share("vctrl_1");     // VRAM 2&3 Ctrl
2827 	map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2828 	map(0xd00000, 0xd00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff);
2829 }
2830 
msgundamb_map(address_map & map)2831 void seta_state::msgundamb_map(address_map &map)
2832 {
2833 	map(0x000000, 0x07ffff).rom();                             // ROM
2834 	map(0x100000, 0x1fffff).rom();                             // ROM
2835 	map(0x200000, 0x20ffff).ram();          // RAM
2836 	map(0x400000, 0x400001).portr("P1");                 // P1
2837 	map(0x400002, 0x400003).portr("P2");                 // P2
2838 	map(0x400004, 0x400005).portr("COINS");              // Coins
2839 	map(0x400000, 0x400001).w(FUNC(seta_state::ipl1_ack_w));               // Lev 2 IRQ Ack
2840 	map(0x400004, 0x400005).w(FUNC(seta_state::ipl2_ack_w));               // Lev 4 IRQ Ack
2841 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_counter_w));
2842 	map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
2843 	map(0x500004, 0x500005).nopw();
2844 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));                // DSW
2845 	map(0x700400, 0x700fff).ram().share("paletteram1");  // Palette
2846 	map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
2847 	map(0x880000, 0x883fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
2848 	map(0x900000, 0x900005).ram().share("vctrl_0");     // VRAM 0&1 Ctrl
2849 	map(0x980000, 0x980005).ram().share("vctrl_1");     // VRAM 2&3 Ctrl
2850 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
2851 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2852 	map(0xa80000, 0xa80001).ram();                             // ? 0x4000
2853 	map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2854 	map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2855 	map(0xd00000, 0xd00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff);
2856 }
2857 
2858 /***************************************************************************
2859                                 Oishii Puzzle
2860 ***************************************************************************/
2861 
2862 /* similar to wrofaero */
oisipuzl_map(address_map & map)2863 void seta_state::oisipuzl_map(address_map &map)
2864 {
2865 	map(0x000000, 0x07ffff).rom();                             // ROM
2866 	map(0x100000, 0x17ffff).rom();                             // ROM
2867 	map(0x200000, 0x20ffff).ram();                             // RAM
2868 	map(0x300000, 0x300003).r(FUNC(seta_state::seta_dsw_r));                // DSW
2869 	map(0x400000, 0x400001).portr("P1");                 // P1
2870 	map(0x400002, 0x400003).portr("P2");                 // P2
2871 	map(0x400004, 0x400005).portr("COINS");              // Coins
2872 	map(0x400000, 0x400001).nopw();                        // ? IRQ Ack
2873 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout
2874 	map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
2875 	map(0x500004, 0x500005).nopw();                        // ? IRQ Ack
2876 	map(0x700000, 0x703fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2877 	map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
2878 	map(0x880000, 0x883fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
2879 	map(0x900000, 0x900005).ram().share("vctrl_0");     // VRAM 0&1 Ctrl
2880 	map(0x980000, 0x980005).ram().share("vctrl_1");     // VRAM 2&3 Ctrl
2881 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
2882 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2883 	map(0xa80000, 0xa80001).ram();                             // ? 0x4000
2884 	map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2885 	map(0xc00400, 0xc00fff).ram().share("paletteram1");  // Palette
2886 }
2887 
2888 
2889 /***************************************************************************
2890                                 Triple Fun
2891 ***************************************************************************/
2892 
2893 /* Same as oisipuzl but with the sound system replaced */
2894 
triplfun_map(address_map & map)2895 void seta_state::triplfun_map(address_map &map)
2896 {
2897 	map(0x000000, 0x07ffff).rom();                             // ROM
2898 	map(0x100000, 0x17ffff).rom();                             // ROM
2899 	map(0x200000, 0x20ffff).ram();                             // RAM
2900 	map(0x300000, 0x300003).r(FUNC(seta_state::seta_dsw_r));                // DSW
2901 	map(0x400000, 0x400001).portr("P1");                 // P1
2902 	map(0x400002, 0x400003).portr("P2");                 // P2
2903 	map(0x400004, 0x400005).portr("COINS");              // Coins
2904 	map(0x400000, 0x400001).nopw();                        // ? IRQ Ack
2905 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout
2906 	map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
2907 	map(0x500004, 0x500005).nopw();                        // ? IRQ Ack
2908 	map(0x500007, 0x500007).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // tfun sound
2909 	map(0x700000, 0x703fff).noprw();
2910 	map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
2911 	map(0x880000, 0x883fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
2912 	map(0x900000, 0x900005).ram().share("vctrl_0");     // VRAM 0&1 Ctrl
2913 	map(0x980000, 0x980005).ram().share("vctrl_1");     // VRAM 2&3 Ctrl
2914 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
2915 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2916 	map(0xa80000, 0xa80001).ram();                             // ? 0x4000
2917 	map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2918 	map(0xc00400, 0xc00fff).ram().share("paletteram1");  // Palette
2919 }
2920 
2921 
2922 /***************************************************************************
2923                             Pro Mahjong Kiwame
2924 ***************************************************************************/
2925 
row_select_w(u16 data)2926 void kiwame_state::row_select_w(u16 data)
2927 {
2928 	m_kiwame_row_select = data & 0x001f;
2929 }
2930 
input_r(offs_t offset)2931 u16 kiwame_state::input_r(offs_t offset)
2932 {
2933 	const int row_select = m_kiwame_row_select;
2934 	int i;
2935 
2936 	for (i = 0; i < 5; i++)
2937 		if (row_select & (1<<i))    break;
2938 
2939 	switch (offset)
2940 	{
2941 		case 0x00/2:    return m_key[i]->read();
2942 		case 0x02/2:    return m_key[i + 5]->read();
2943 		case 0x04/2:    return m_coins->read();
2944 //      case 0x06/2:
2945 		case 0x08/2:    return 0xffff;
2946 
2947 		default:
2948 			logerror("PC %06X - Read input %02X !\n", m_maincpu->pc(), offset * 2);
2949 			return 0x0000;
2950 	}
2951 }
2952 
kiwame_map(address_map & map)2953 void kiwame_state::kiwame_map(address_map &map)
2954 {
2955 	map(0x000000, 0x07ffff).rom();                             // ROM
2956 	map(0x200000, 0x20ffff).ram().share("nvram");                            // RAM
2957 	map(0x800000, 0x803fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
2958 	map(0x900000, 0x900001).ram();                             // ? 0x4000
2959 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
2960 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
2961 	map(0xb00000, 0xb003ff).ram().share("paletteram1");  // Palette
2962 	map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2963 	map(0xd00000, 0xd00009).r(FUNC(kiwame_state::input_r));                 // mahjong panel
2964 	map(0xe00000, 0xe00003).r(FUNC(kiwame_state::seta_dsw_r));              // DSW
2965 }
2966 
2967 
2968 /***************************************************************************
2969                         Thunder & Lightning / Wit's
2970 ***************************************************************************/
2971 
thunderl_protection_r()2972 u16 seta_state::thunderl_protection_r()
2973 {
2974 //  logerror("PC %06X - Protection Read\n", m_maincpu->pc());
2975 	return 0x00dd;
2976 }
thunderl_protection_w(u16 data)2977 void seta_state::thunderl_protection_w(u16 data)
2978 {
2979 //  logerror("PC %06X - Protection Written: %04X <- %04X\n", m_maincpu->pc(), offset * 2, data);
2980 }
2981 
2982 /* Similar to downtown etc. */
2983 
thunderl_map(address_map & map)2984 void seta_state::thunderl_map(address_map &map)
2985 {
2986 	map(0x000000, 0x00ffff).rom();                             // ROM
2987 	map(0xffc000, 0xffffff).ram();                             // RAM
2988 	map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
2989 	map(0x200000, 0x200001).rw(FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w));
2990 	map(0x300000, 0x300001).nopw();                        // ?
2991 	map(0x400000, 0x40ffff).w(FUNC(seta_state::thunderl_protection_w));    // Protection (not in wits)
2992 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout
2993 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));                // DSW
2994 	map(0x700000, 0x7003ff).ram().share("paletteram1");  // Palette
2995 	map(0xb00000, 0xb00001).portr("P1");                 // P1
2996 	map(0xb00002, 0xb00003).portr("P2");                 // P2
2997 	map(0xb00004, 0xb00005).portr("COINS");              // Coins
2998 	map(0xb0000c, 0xb0000d).r(FUNC(seta_state::thunderl_protection_r));   // Protection (not in wits)
2999 	map(0xb00008, 0xb00009).portr("P3");                 // P3 (wits)
3000 	map(0xb0000a, 0xb0000b).portr("P4");                 // P4 (wits)
3001 	map(0xc00000, 0xc00001).ram();                             // ? 0x4000
3002 	map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
3003 	map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
3004 	map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
3005 	map(0xe04000, 0xe07fff).ram();                             // (wits)
3006 }
3007 
3008 
thunderlbl_map(address_map & map)3009 void seta_state::thunderlbl_map(address_map &map)
3010 {
3011 	map(0x000000, 0x00ffff).rom();                             // ROM
3012 	map(0xffc000, 0xffffff).ram();                             // RAM
3013 //  map(0x100000, 0x103fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));  // Sound
3014 	map(0x200000, 0x200001).rw(FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w));
3015 	map(0x300000, 0x300001).nopw();                        // ?
3016 //  map(0x400000, 0x40ffff).w(FUNC(seta_state::thunderl_protection_w));    // Protection (not in wits)
3017 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout
3018 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));                // DSW
3019 	map(0x700000, 0x7003ff).ram().share("paletteram1");  // Palette
3020 	map(0xb00000, 0xb00001).portr("P1");                 // P1
3021 	map(0xb00002, 0xb00003).portr("P2");                 // P2
3022 	map(0xb00004, 0xb00005).portr("COINS");              // Coins
3023 	map(0xb0000c, 0xb0000d).w(m_seta001, FUNC(seta001_device::spritectrl_w8)).umask16(0xff00); // the bootleg is modified to write the first byte of spritectrl here, rather than the usual address
3024 	map(0xb00008, 0xb00009).portr("P3"); // P3 (wits)
3025 	map(0xb00008, 0xb00008).w(m_soundlatch[0], FUNC(generic_latch_8_device::write));
3026 	map(0xb0000a, 0xb0000b).portr("P4");                 // P4 (wits)
3027 	map(0xc00000, 0xc00001).ram();                             // ? 0x4000
3028 	map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
3029 	map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
3030 	map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
3031 	map(0xe04000, 0xe07fff).ram();                             // (wits)
3032 }
3033 
3034 /***************************************************************************
3035                     Wiggie Waggie
3036 ***************************************************************************/
3037 
wiggie_map(address_map & map)3038 void seta_state::wiggie_map(address_map &map)
3039 {
3040 	map(0x000000, 0x01ffff).rom();                             // ROM
3041 	map(0xffc000, 0xffffff).ram();                             // RAM
3042 	map(0x100000, 0x103fff).noprw();                             // X1_010 is not used
3043 	map(0x200000, 0x200001).rw(FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w));
3044 	map(0x300000, 0x300001).nopw();                        // ?
3045 	map(0x400000, 0x40ffff).w(FUNC(seta_state::thunderl_protection_w));    // Protection (not in wits)
3046 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout
3047 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));                // DSW
3048 	map(0x700000, 0x7003ff).ram().share("paletteram1");  // Palette
3049 	map(0xb00000, 0xb00001).portr("P1");                 // P1
3050 	map(0xb00002, 0xb00003).portr("P2");                 // P2
3051 	map(0xb00004, 0xb00005).portr("COINS");              // Coins
3052 	map(0xb0000c, 0xb0000d).r(FUNC(seta_state::thunderl_protection_r));     // Protection (not in wits)
3053 	map(0xb00008, 0xb00009).portr("P3");                 // P3 (wits)
3054 	map(0xb00008, 0xb00008).w(m_soundlatch[0], FUNC(generic_latch_8_device::write));
3055 	map(0xb0000a, 0xb0000b).portr("P4");                 // P4 (wits)
3056 	map(0xc00000, 0xc00001).ram();                             // ? 0x4000
3057 	map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
3058 	map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
3059 	map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
3060 	map(0xe04000, 0xe07fff).ram(); // (wits)
3061 }
3062 
wiggie_sound_map(address_map & map)3063 void seta_state::wiggie_sound_map(address_map &map)
3064 {
3065 	map(0x0000, 0x7fff).rom();
3066 	map(0x8000, 0x87ff).ram();
3067 	map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
3068 	map(0xa000, 0xa000).r(m_soundlatch[0], FUNC(generic_latch_8_device::read));
3069 }
3070 
3071 
3072 /***************************************************************************
3073                     Ultraman Club / SD Gundam Neo Battling
3074 ***************************************************************************/
3075 
umanclub_map(address_map & map)3076 void seta_state::umanclub_map(address_map &map)
3077 {
3078 	map(0x000000, 0x03ffff).rom();                             // ROM
3079 	map(0x200000, 0x20ffff).ram();                             // RAM
3080 	map(0x300000, 0x3003ff).ram().share("paletteram1");  // Palette
3081 	map(0x300400, 0x300fff).ram();                             //
3082 	map(0x400000, 0x400001).portr("P1");                 // P1
3083 	map(0x400002, 0x400003).portr("P2");                 // P2
3084 	map(0x400004, 0x400005).portr("COINS");              // Coins
3085 	map(0x400000, 0x400001).nopw();                        // ? (end of lev 2)
3086 	map(0x400004, 0x400005).nopw();                        // ? (end of lev 2)
3087 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout
3088 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));                // DSW
3089 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
3090 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
3091 	map(0xa80000, 0xa80001).ram();                             // ? 0x4000
3092 	map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
3093 	map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
3094 }
3095 
3096 
3097 /***************************************************************************
3098                             Ultra Toukond Densetsu
3099 ***************************************************************************/
3100 
utoukond_map(address_map & map)3101 void seta_state::utoukond_map(address_map &map)
3102 {
3103 	map(0x000000, 0x0fffff).rom();                             // ROM
3104 	map(0x200000, 0x20ffff).ram();                             // RAM
3105 	map(0x400000, 0x400001).portr("P1");                 // P1
3106 	map(0x400002, 0x400003).portr("P2");                 // P2
3107 	map(0x400004, 0x400005).portr("COINS");              // Coins
3108 	map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout
3109 	map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w));              // Video Registers
3110 	map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r));                // DSW
3111 	map(0x700400, 0x700fff).ram().share("paletteram1");  // Palette
3112 	map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
3113 	map(0x880000, 0x883fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
3114 	map(0x900000, 0x900005).writeonly().share("vctrl_0");// VRAM 0&1 Ctrl
3115 	map(0x980000, 0x980005).writeonly().share("vctrl_1");// VRAM 2&3 Ctrl
3116 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
3117 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
3118 	map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
3119 	map(0xc00001, 0xc00001).w(m_soundlatch[0], FUNC(generic_latch_8_device::write));
3120 	map(0xe00000, 0xe00001).nopw();                        // ? ack
3121 }
3122 
3123 /***************************************************************************
3124                                 Pairs Love
3125 ***************************************************************************/
3126 
pairlove_prot_r(offs_t offset)3127 u16 seta_state::pairlove_prot_r(offs_t offset)
3128 {
3129 	const u16 retdata = m_pairslove_protram[offset];
3130 	//osd_printf_debug("pairs love protection? read %06x %04x %04x\n",m_maincpu->pc(), offset,retdata);
3131 	if (!machine().side_effects_disabled())
3132 		m_pairslove_protram[offset] = m_pairslove_protram_old[offset];
3133 	return retdata;
3134 }
3135 
pairlove_prot_w(offs_t offset,u16 data)3136 void seta_state::pairlove_prot_w(offs_t offset, u16 data)
3137 {
3138 	//osd_printf_debug("pairs love protection? write %06x %04x %04x\n",m_maincpu->pc(), offset,data);
3139 	m_pairslove_protram_old[offset] = m_pairslove_protram[offset];
3140 	m_pairslove_protram[offset] = data;
3141 }
3142 
pairlove_map(address_map & map)3143 void seta_state::pairlove_map(address_map &map)
3144 {
3145 	map(0x000000, 0x03ffff).rom();                             // ROM
3146 	map(0x100000, 0x100001).nopw();                        // ? 1 (start of interrupts, main loop: watchdog?)
3147 	map(0x200000, 0x200001).nopw();                        // ? 0/1 (IRQ acknowledge?)
3148 	map(0x300000, 0x300003).r(FUNC(seta_state::seta_dsw_r));                // DSW
3149 	map(0x400001, 0x400001).w(FUNC(seta_state::seta_coin_lockout_w));       // Coin Lockout + Sound Enable (bit 4?)
3150 	map(0x500000, 0x500001).portr("P1");                 // P1
3151 	map(0x500002, 0x500003).portr("P2");                 // P2
3152 	map(0x500004, 0x500005).portr("COINS");              // Coins
3153 	map(0x900000, 0x9001ff).rw(FUNC(seta_state::pairlove_prot_r), FUNC(seta_state::pairlove_prot_w));
3154 	map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
3155 	map(0xb00000, 0xb00fff).ram().share("paletteram1");  // Palette
3156 	map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16));     // Sprites Code + X + Attr
3157 	map(0xd00000, 0xd00001).ram();                             // ? 0x4000
3158 	map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16));     // Sprites Y
3159 	map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
3160 	map(0xf00000, 0xf0ffff).ram();                             // RAM
3161 }
3162 
3163 
3164 /***************************************************************************
3165                             Crazy Fight
3166 ***************************************************************************/
3167 
crazyfgt_map(address_map & map)3168 void seta_state::crazyfgt_map(address_map &map)
3169 {
3170 	map(0x000000, 0x07ffff).rom();
3171 	map(0x400000, 0x40ffff).ram();
3172 	map(0x610000, 0x610001).portr("COINS");
3173 	map(0x610002, 0x610003).portr("UNK");
3174 	map(0x610004, 0x610005).portr("INPUT");
3175 	map(0x610006, 0x610007).nopw();
3176 	map(0x620000, 0x620003).nopw();    // protection
3177 	map(0x630000, 0x630003).r(FUNC(seta_state::seta_dsw_r));
3178 	map(0x640400, 0x640fff).writeonly().share("paletteram1");    // Palette
3179 	map(0x650000, 0x650003).w("ymsnd", FUNC(ym3812_device::write)).umask16(0x00ff);
3180 	map(0x658001, 0x658001).w("oki", FUNC(okim6295_device::write));
3181 	map(0x670000, 0x670001).nopr();     // watchdog?
3182 	map(0x800000, 0x803fff).w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2
3183 	map(0x880000, 0x883fff).w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0
3184 	map(0x900000, 0x900005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl
3185 	map(0x980000, 0x980005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl
3186 	map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
3187 	map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
3188 	map(0xa80000, 0xa80001).nopw();    // ? 0x4000
3189 	map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
3190 }
3191 
3192 
3193 /***************************************************************************
3194                                  Jockey Club
3195 ***************************************************************************/
3196 
3197 // RTC (To do: write a D4911C device)
rtc_r(offs_t offset)3198 u16 jockeyc_state::rtc_r(offs_t offset)
3199 {
3200 	if (offset >= 7)
3201 		++offset;
3202 	if (offset / 2 >= 7)
3203 		return 0;
3204 	return (m_rtc->read(offset / 2) >> ((offset & 1) * 4)) & 0xf;
3205 }
3206 
rtc_w(u16 data)3207 void jockeyc_state::rtc_w(u16 data)
3208 {
3209 }
3210 
3211 // Outputs
show_outputs()3212 void jockeyc_state::show_outputs()
3213 {
3214 #ifdef MAME_DEBUG
3215 	popmessage("Mux: %04X Out: %04X", m_mux & (~0xf8), m_out);
3216 #endif
3217 }
3218 
mux_r()3219 u16 jockeyc_state::mux_r()
3220 {
3221 	switch (m_mux & 0xf8)
3222 	{
3223 		case 0x08:  return (m_key2[0]->read() << 8) | m_key1[0]->read();
3224 		case 0x10:  return (m_key2[1]->read() << 8) | m_key1[1]->read();
3225 		case 0x20:  return (m_key2[2]->read() << 8) | m_key1[2]->read();
3226 		case 0x40:  return (m_key2[3]->read() << 8) | m_key1[3]->read();
3227 		case 0x80:  return (m_key2[4]->read() << 8) | m_key1[4]->read();
3228 	}
3229 	logerror("%06X: unknown key read, mux = %04x\n", m_maincpu->pc(), m_mux);
3230 	return 0xffff;
3231 }
3232 
jockeyc_mux_w(offs_t offset,u16 data,u16 mem_mask)3233 void jockeyc_state::jockeyc_mux_w(offs_t offset, u16 data, u16 mem_mask)
3234 {
3235 	COMBINE_DATA(&m_mux);
3236 
3237 	// 0x8000 lamp 5  (p1 cancel)
3238 	// 0x4000 lamp 4  (p2 payout)
3239 	// 0x2000 lamp 3  (p1 payout)
3240 	// 0x1000 lamp 2
3241 	// 0x0800 lamp 1
3242 	// 0x0400 p2 divider
3243 	// 0x0200 hopper 1 motor
3244 	// 0x0100 hopper 2 motor / switch hopper output to p2 (single hopper mode)
3245 	// 0x00f8 key mux
3246 	// 0x0004 p1 divider
3247 	// 0x0002 hopper 2 motor / switch hopper output to p1 (single hopper mode)
3248 	// 0x0001 hopper 1 motor
3249 
3250 	m_out_cancel[0] = BIT(data, 15);
3251 	m_out_payout[1] = BIT(data, 14);
3252 	m_out_payout[0] = BIT(data, 13);
3253 
3254 	update_hoppers();
3255 	show_outputs();
3256 }
3257 
jockeyc_out_w(offs_t offset,u16 data,u16 mem_mask)3258 void jockeyc_state::jockeyc_out_w(offs_t offset, u16 data, u16 mem_mask)
3259 {
3260 	COMBINE_DATA(&m_out);
3261 
3262 	// 0x8000 lamp 8  (p2 start)
3263 	// 0x4000 lamp 7  (p1 start)
3264 	// 0x2000 meter 6 (coin 2/4)
3265 	// 0x1000 meter 5 (p1 hopper coin out)
3266 	// 0x0800 meter 4
3267 	// 0x0400 meter 3
3268 	// 0x0200 meter 2 (coin 1/3)
3269 	// 0x0100 meter 1
3270 	// 0x0080 ? always set, save for "backup memory is wrong" screen and ram test
3271 	// 0x0040
3272 	// 0x0020 lamp 6  (p2 cancel)
3273 	// 0x0010 call attendant
3274 	// 0x0008 p2 hopper lockout
3275 	// 0x0004 p1 hopper lockout
3276 	// 0x0002
3277 	// 0x0001
3278 
3279 	m_out_start[1] = BIT(data, 15);
3280 	m_out_start[0] = BIT(data, 14);
3281 	m_out_cancel[1] = BIT(data, 5);
3282 
3283 	machine().bookkeeping().coin_counter_w(6, data  & 0x2000); // coin 2/4
3284 	machine().bookkeeping().coin_counter_w(5, data  & 0x1000); // p1 hopper coin out
3285 	machine().bookkeeping().coin_counter_w(2, data  & 0x0200); // coin 1/3
3286 
3287 	update_hoppers();
3288 	show_outputs();
3289 }
3290 
update_hoppers()3291 void jockeyc_state::update_hoppers()
3292 {
3293 	if (!m_cabinet)
3294 		return;
3295 
3296 	if (m_cabinet->read() & 1)
3297 	{
3298 		// double hoppers
3299 		m_hopper1->motor_w((m_mux & 0x0201) && !(m_out & 0x0004));
3300 		m_hopper2->motor_w((m_mux & 0x0102) && !(m_out & 0x0008));
3301 	}
3302 	else
3303 	{
3304 		// single hopper (jockeyc: in test mode, use key 5/6 to select pay1/pay2)
3305 		m_hopper1->motor_w((m_mux & 0x0201) && (!(m_out & 0x0004) || !(m_out & 0x0008)));
3306 	}
3307 }
3308 
dsw_r(offs_t offset)3309 u16 jockeyc_state::dsw_r(offs_t offset)
3310 {
3311 	const int shift = offset * 4;
3312 	return  ((((m_dsw1->read()   >> shift)     & 0xf)) << 0) |
3313 			((((m_dsw2_3->read() >> shift)     & 0xf)) << 4) |
3314 			((((m_dsw2_3->read() >> (shift+8)) & 0xf)) << 8) ;
3315 }
3316 
comm_r()3317 u16 jockeyc_state::comm_r()
3318 {
3319 	return 0xffff;//machine().rand();
3320 }
3321 
3322 /*
3323   There is a hidden editor activated by writing 7 in $ffd268.b (i.e. the main loop routine).
3324   This would be triggered at AA58 when pressing "Special Test". But the latter routine is not called in the released code.
3325   The editor is comprised of 7 screens operated with a trackball and two buttons.
3326 
3327   Another note... on Christmas day the attract loop includes a "Merry Xmas" screen ($ffd268.b = 3)
3328 */
3329 #define JOCKEYC_HIDDEN_EDITOR 0
3330 
trackball_r(offs_t offset)3331 u16 jockeyc_state::trackball_r(offs_t offset)
3332 {
3333 	switch (offset)
3334 	{
3335 		case 0/2:   return (m_p1x->read() >> 0) & 0xff;
3336 		case 2/2:   return (m_p1x->read() >> 8) & 0xff;
3337 		case 4/2:   return (m_p1y->read() >> 0) & 0xff;
3338 		case 6/2:   return (m_p1y->read() >> 8) & 0xff;
3339 	}
3340 	return 0;
3341 }
3342 
jockeyc_map(address_map & map)3343 void jockeyc_state::jockeyc_map(address_map &map)
3344 {
3345 	map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB)
3346 
3347 	map(0x200000, 0x200001).rw(FUNC(jockeyc_state::mux_r), FUNC(jockeyc_state::jockeyc_mux_w));
3348 	map(0x200002, 0x200003).portr("COIN");
3349 	map(0x200010, 0x200011).portr("SERVICE").w(FUNC(jockeyc_state::jockeyc_out_w));
3350 
3351 	map(0x300000, 0x300001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
3352 	map(0x300002, 0x300003).noprw(); // clr.l $300000 (watchdog)
3353 
3354 	map(0x300010, 0x300011).nopw();    // lev1 ack
3355 	map(0x300020, 0x300021).nopw();    // lev2 ack
3356 	map(0x300040, 0x300041).nopw();    // lev4 ack
3357 	map(0x300060, 0x300061).nopw();    // lev6 ack
3358 
3359 #if JOCKEYC_HIDDEN_EDITOR
3360 	map(0x400000, 0x400007).r(FUNC(jockeyc_state::trackball_r));
3361 #endif
3362 
3363 	map(0x500000, 0x500003).r(FUNC(jockeyc_state::dsw_r)); // DSW x 3
3364 	map(0x600000, 0x600001).r(FUNC(jockeyc_state::comm_r)); // comm data
3365 	map(0x600002, 0x600003).r(FUNC(jockeyc_state::comm_r)); // comm status (bits 0,4,5,6)
3366 
3367 	map(0x800000, 0x80001f).rw(FUNC(jockeyc_state::rtc_r), FUNC(jockeyc_state::rtc_w));
3368 
3369 	map(0x900000, 0x903fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));  // Sound
3370 
3371 	map(0xa00000, 0xa00005).writeonly().share("vctrl_0");   // VRAM 0&1 Ctrl
3372 	map(0xb00000, 0xb03fff).ram().w(FUNC(jockeyc_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
3373 	map(0xb04000, 0xb0ffff).nopw(); // likely left-over
3374 
3375 	map(0xc00000, 0xc00001).ram();     // ? 0x4000
3376 
3377 	map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
3378 	map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
3379 
3380 	map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
3381 
3382 	map(0xffc000, 0xffffff).ram().share("nvram"); // RAM (battery backed)
3383 }
3384 
3385 
3386 /***************************************************************************
3387                              International Toote
3388 ***************************************************************************/
3389 
3390 // Same as Jockey Club but with additional protection
3391 
inttoote_mux_w(offs_t offset,u16 data,u16 mem_mask)3392 void jockeyc_state::inttoote_mux_w(offs_t offset, u16 data, u16 mem_mask)
3393 {
3394 	COMBINE_DATA(&m_mux);
3395 
3396 	// 0x8000 lamp?
3397 	// 0x1000 lamp (help button)
3398 	// 0x0800 lamp (start button)
3399 
3400 	m_out_help = BIT(data, 12);
3401 	m_out_itstart = BIT(data, 11);
3402 
3403 	update_hoppers();
3404 	show_outputs();
3405 }
3406 
inttoote_out_w(offs_t offset,u16 data,u16 mem_mask)3407 void jockeyc_state::inttoote_out_w(offs_t offset, u16 data, u16 mem_mask)
3408 {
3409 	COMBINE_DATA(&m_out);
3410 
3411 	// 0x2000 meter (key in)
3412 	// 0x1000 meter (coin out)
3413 	// 0x0800 meter (coin in)
3414 	// 0x0100 meter (key out)
3415 	// 0x0080 ? set when there are credits
3416 
3417 	machine().bookkeeping().coin_counter_w(0, data  & 0x2000); // key in
3418 	machine().bookkeeping().coin_counter_w(1, data  & 0x1000); // coin out
3419 	machine().bookkeeping().coin_counter_w(2, data  & 0x0800); // coin in
3420 	machine().bookkeeping().coin_counter_w(3, data  & 0x0100); // key out
3421 
3422 	update_hoppers();
3423 	show_outputs();
3424 }
3425 
inttoote_700000_r(offs_t offset)3426 u16 jockeyc_state::inttoote_700000_r(offs_t offset)
3427 {
3428 	return m_inttoote_700000[offset] & 0x3f;
3429 }
3430 
inttoote_map(address_map & map)3431 void jockeyc_state::inttoote_map(address_map &map)
3432 {
3433 	map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB)
3434 
3435 	map(0x200000, 0x200001).rw(FUNC(jockeyc_state::mux_r), FUNC(jockeyc_state::inttoote_mux_w));
3436 	map(0x200002, 0x200003).portr("COIN");
3437 	map(0x200010, 0x200011).portr("SERVICE").w(FUNC(jockeyc_state::inttoote_out_w));
3438 
3439 	map(0x300000, 0x300001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
3440 
3441 	map(0x300010, 0x300011).nopw();    // lev1 ack
3442 	map(0x300020, 0x300021).nopw();    // lev2 ack
3443 	map(0x300040, 0x300041).nopw();    // lev4 ack
3444 	map(0x300060, 0x300061).nopw();    // lev6 ack
3445 
3446 	map(0x500000, 0x500003).r(FUNC(jockeyc_state::dsw_r)); // DSW x 3
3447 
3448 	map(0x700000, 0x700101).ram().r(FUNC(jockeyc_state::inttoote_700000_r)).share("inttoote_700000");
3449 
3450 	map(0x800000, 0x80001f).rw(FUNC(jockeyc_state::rtc_r), FUNC(jockeyc_state::rtc_w));
3451 
3452 	map(0x900000, 0x903fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
3453 
3454 	map(0xa00000, 0xa00005).writeonly().share("vctrl_0");   // VRAM 0&1 Ctrl
3455 	map(0xb00000, 0xb03fff).ram().w(FUNC(jockeyc_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
3456 
3457 	map(0xc00000, 0xc00001).ram();     // ? 0x4000
3458 
3459 	map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
3460 	map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
3461 
3462 	map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
3463 
3464 	map(0xffc000, 0xffffff).ram().share("nvram"); // RAM (battery backed)
3465 }
3466 
3467 
3468 /***************************************************************************
3469 
3470 
3471                                 Sub / Sound CPU
3472 
3473 
3474 ***************************************************************************/
3475 
sub_bankswitch_w(u8 data)3476 void seta_state::sub_bankswitch_w(u8 data)
3477 {
3478 	m_subbank->set_entry(data >> 4);
3479 }
3480 
sub_bankswitch_lockout_w(u8 data)3481 void seta_state::sub_bankswitch_lockout_w(u8 data)
3482 {
3483 	sub_bankswitch_w(data);
3484 	seta_coin_lockout_w(data);
3485 }
3486 
3487 
3488 /***************************************************************************
3489                                 Thundercade
3490 ***************************************************************************/
3491 
ff_r()3492 u8 seta_state::ff_r(){return 0xff;}
3493 
tndrcade_sub_map(address_map & map)3494 void seta_state::tndrcade_sub_map(address_map &map)
3495 {
3496 	map(0x0000, 0x01ff).ram();                             // RAM
3497 	map(0x0800, 0x0800).r(FUNC(seta_state::ff_r));                      // ? (bits 0/1/2/3: 1 -> do test 0-ff/100-1e0/5001-57ff/banked rom)
3498 	//map(0x0800, 0x0800).r(m_soundlatch[0], FUNC(generic_latch_8_device::read));             //
3499 	//map(0x0801, 0x0801).r(m_soundlatch[1], FUNC(generic_latch_8_device::read));            //
3500 	map(0x1000, 0x1000).portr("P1");                 // P1
3501 	map(0x1000, 0x1000).w(FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout
3502 	map(0x1001, 0x1001).portr("P2");                 // P2
3503 	map(0x1002, 0x1002).portr("COINS");              // Coins
3504 	map(0x2000, 0x2001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
3505 	map(0x3000, 0x3001).w("ym2", FUNC(ym3812_device::write));
3506 	map(0x5000, 0x57ff).ram().share("sharedram");       // Shared RAM
3507 	map(0x6000, 0x7fff).rom();                             // ROM
3508 	map(0x8000, 0xbfff).bankr("subbank");                        // Banked ROM
3509 	map(0xc000, 0xffff).rom();                             // ROM
3510 }
3511 
3512 
3513 /***************************************************************************
3514                                 Twin Eagle
3515 ***************************************************************************/
3516 
twineagl_sub_map(address_map & map)3517 void seta_state::twineagl_sub_map(address_map &map)
3518 {
3519 	map(0x0000, 0x01ff).ram();                         // RAM
3520 	map(0x0800, 0x0800).r(m_soundlatch[0], FUNC(generic_latch_8_device::read));         //
3521 	map(0x0801, 0x0801).r(m_soundlatch[1], FUNC(generic_latch_8_device::read));            //
3522 	map(0x1000, 0x1000).portr("P1");             // P1
3523 	map(0x1000, 0x1000).w(FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout
3524 	map(0x1001, 0x1001).portr("P2");             // P2
3525 	map(0x1002, 0x1002).portr("COINS");          // Coins
3526 	map(0x5000, 0x57ff).ram().share("sharedram");       // Shared RAM
3527 	map(0x7000, 0x7fff).rom();                         // ROM
3528 	map(0x8000, 0xbfff).bankr("subbank");                    // Banked ROM
3529 	map(0xc000, 0xffff).rom();                         // ROM
3530 }
3531 
3532 
3533 /***************************************************************************
3534                                 DownTown
3535 ***************************************************************************/
3536 
downtown_ip_r(offs_t offset)3537 u8 seta_state::downtown_ip_r(offs_t offset)
3538 {
3539 	int dir1 = m_rot[0]->read();  // analog port
3540 	int dir2 = m_rot[1]->read();  // analog port
3541 
3542 	dir1 = (~ (0x800 >> dir1)) & 0xfff;
3543 	dir2 = (~ (0x800 >> dir2)) & 0xfff;
3544 
3545 	switch (offset)
3546 	{
3547 		case 0: return (m_coins->read() & 0xf0) + (dir1 >> 8);  // upper 4 bits of p1 rotation + coins
3548 		case 1: return (dir1 & 0xff);                   // lower 8 bits of p1 rotation
3549 		case 2: return m_p1->read();    // p1
3550 		case 3: return 0xff;                            // ?
3551 		case 4: return (dir2 >> 8);                     // upper 4 bits of p2 rotation + ?
3552 		case 5: return (dir2 & 0xff);                   // lower 8 bits of p2 rotation
3553 		case 6: return m_p2->read();    // p2
3554 		case 7: return 0xff;                            // ?
3555 	}
3556 
3557 	return 0;
3558 }
3559 
downtown_sub_map(address_map & map)3560 void seta_state::downtown_sub_map(address_map &map)
3561 {
3562 	map(0x0000, 0x01ff).ram();                         // RAM
3563 	map(0x0800, 0x0800).r(m_soundlatch[0], FUNC(generic_latch_8_device::read));         //
3564 	map(0x0801, 0x0801).r(m_soundlatch[1], FUNC(generic_latch_8_device::read));            //
3565 	map(0x1000, 0x1007).r(FUNC(seta_state::downtown_ip_r));         // Input Ports
3566 	map(0x1000, 0x1000).w(FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout
3567 	map(0x5000, 0x57ff).ram().share("sharedram");       // Shared RAM
3568 	map(0x7000, 0x7fff).rom();                         // ROM
3569 	map(0x8000, 0xbfff).bankr("subbank");                    // Banked ROM
3570 	map(0xc000, 0xffff).rom();                         // ROM
3571 }
3572 
3573 
3574 /***************************************************************************
3575                         Caliber 50 / U.S. Classic
3576 ***************************************************************************/
3577 
MACHINE_RESET_MEMBER(seta_state,calibr50)3578 MACHINE_RESET_MEMBER(seta_state,calibr50)
3579 {
3580 	calibr50_sub_bankswitch_w(0);
3581 }
3582 
calibr50_sub_bankswitch_w(u8 data)3583 void seta_state::calibr50_sub_bankswitch_w(u8 data)
3584 {
3585 	// Bits 7-4: BK3-BK0
3586 	sub_bankswitch_w(data);
3587 
3588 	// Bit 3: NMICLR
3589 	if (!BIT(data, 3))
3590 		m_soundlatch[0]->acknowledge_w();
3591 
3592 	// Bit 2: IRQCLR
3593 	if (!BIT(data, 2))
3594 		m_subcpu->set_input_line(0, CLEAR_LINE);
3595 
3596 	// Bit 1: PCMMUTE
3597 	m_x1->set_output_gain(ALL_OUTPUTS, BIT(data, 0) ? 0.0f : 1.0f);
3598 }
3599 
calibr50_soundlatch2_w(u8 data)3600 void seta_state::calibr50_soundlatch2_w(u8 data)
3601 {
3602 	m_soundlatch[1]->write(data);
3603 	m_subcpu->spin_until_time(attotime::from_usec(50));  // Allow the other cpu to reply
3604 }
3605 
calibr50_sub_map(address_map & map)3606 void seta_state::calibr50_sub_map(address_map &map)
3607 {
3608 	map(0x0000, 0x1fff).lrw8(
3609 								 NAME([this](offs_t offset) { return m_x1->read(offset ^ 0x1000); }),
3610 								 NAME([this](offs_t offset, u8 data) { m_x1->write(offset ^ 0x1000, data); })); // Sound
3611 	map(0x4000, 0x4000).r(m_soundlatch[0], FUNC(generic_latch_8_device::read));             // From Main CPU
3612 	map(0x4000, 0x4000).w(FUNC(seta_state::calibr50_sub_bankswitch_w));        // Bankswitching
3613 	map(0x8000, 0xbfff).bankr("subbank");                        // Banked ROM
3614 	map(0xc000, 0xffff).rom();                             // ROM
3615 	map(0xc000, 0xc000).w(FUNC(seta_state::calibr50_soundlatch2_w));   // To Main CPU
3616 }
3617 
3618 
3619 /***************************************************************************
3620                                 Meta Fox
3621 ***************************************************************************/
3622 
metafox_sub_map(address_map & map)3623 void seta_state::metafox_sub_map(address_map &map)
3624 {
3625 	map(0x0000, 0x01ff).ram();                         // RAM
3626 	map(0x0800, 0x0800).r(m_soundlatch[0], FUNC(generic_latch_8_device::read));         //
3627 	map(0x0801, 0x0801).r(m_soundlatch[1], FUNC(generic_latch_8_device::read));            //
3628 	map(0x1000, 0x1000).portr("COINS");          // Coins
3629 	map(0x1000, 0x1000).w(FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout
3630 	map(0x1002, 0x1002).portr("P1");             // P1
3631 	//map(0x1004, 0x1004).nopr();                // ?
3632 	map(0x1006, 0x1006).portr("P2");             // P2
3633 	map(0x5000, 0x57ff).ram().share("sharedram");       // Shared RAM
3634 	map(0x7000, 0x7fff).rom();                         // ROM
3635 	map(0x8000, 0xbfff).bankr("subbank");                    // Banked ROM
3636 	map(0xc000, 0xffff).rom();                         // ROM
3637 }
3638 
3639 
3640 /***************************************************************************
3641                             Ultra Toukon Densetsu
3642 ***************************************************************************/
3643 
utoukond_sound_control_w(u8 data)3644 void seta_state::utoukond_sound_control_w(u8 data)
3645 {
3646 	if (!BIT(data, 6))
3647 		m_soundlatch[0]->acknowledge_w();
3648 
3649 	// other bits used for banking? (low nibble seems to always be 2)
3650 }
3651 
utoukond_sound_map(address_map & map)3652 void seta_state::utoukond_sound_map(address_map &map)
3653 {
3654 	map(0x0000, 0xdfff).rom();
3655 	map(0xe000, 0xefff).ram();
3656 	map(0xf000, 0xffff).rw(m_x1, FUNC(x1_010_device::read), FUNC(x1_010_device::write));
3657 }
3658 
utoukond_sound_io_map(address_map & map)3659 void seta_state::utoukond_sound_io_map(address_map &map)
3660 {
3661 	map.global_mask(0xff);
3662 	map(0x00, 0x03).rw("ymsnd", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
3663 	map(0x80, 0x80).w(FUNC(seta_state::utoukond_sound_control_w));
3664 	map(0xc0, 0xc0).r(m_soundlatch[0], FUNC(generic_latch_8_device::read));
3665 }
3666 
3667 
3668 /***************************************************************************
3669 
3670 
3671                                 Input Ports
3672 
3673 
3674 ***************************************************************************/
3675 
3676 #define JOY_TYPE1_1BUTTON(_n_) \
3677 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  ) PORT_PLAYER(_n_) \
3678 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(_n_) \
3679 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    ) PORT_PLAYER(_n_) \
3680 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  ) PORT_PLAYER(_n_) \
3681 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1        ) PORT_PLAYER(_n_) \
3682 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN                        ) \
3683 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN                        ) \
3684 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START##_n_                 )
3685 
3686 #define JOY_TYPE1_2BUTTONS(_n_) \
3687 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  ) PORT_PLAYER(_n_) \
3688 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(_n_) \
3689 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    ) PORT_PLAYER(_n_) \
3690 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  ) PORT_PLAYER(_n_) \
3691 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1        ) PORT_PLAYER(_n_) \
3692 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2        ) PORT_PLAYER(_n_) \
3693 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN                        ) \
3694 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START##_n_                 )
3695 
3696 #define JOY_TYPE1_3BUTTONS(_n_) \
3697 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  ) PORT_PLAYER(_n_) \
3698 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(_n_) \
3699 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    ) PORT_PLAYER(_n_) \
3700 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  ) PORT_PLAYER(_n_) \
3701 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1        ) PORT_PLAYER(_n_) \
3702 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2        ) PORT_PLAYER(_n_) \
3703 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3        ) PORT_PLAYER(_n_) \
3704 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START##_n_                 )
3705 
3706 
3707 #define JOY_TYPE2_1BUTTON(_n_) \
3708 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    ) PORT_PLAYER(_n_) \
3709 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  ) PORT_PLAYER(_n_) \
3710 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  ) PORT_PLAYER(_n_) \
3711 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(_n_) \
3712 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1        ) PORT_PLAYER(_n_) \
3713 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN                        ) \
3714 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN                        ) \
3715 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START##_n_                 )
3716 
3717 #define JOY_TYPE2_2BUTTONS(_n_) \
3718 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    ) PORT_PLAYER(_n_) \
3719 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  ) PORT_PLAYER(_n_) \
3720 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  ) PORT_PLAYER(_n_) \
3721 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(_n_) \
3722 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1        ) PORT_PLAYER(_n_) \
3723 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2        ) PORT_PLAYER(_n_) \
3724 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN                        ) \
3725 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START##_n_                 )
3726 
3727 #define JOY_TYPE2_3BUTTONS(_n_) \
3728 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    ) PORT_PLAYER(_n_) \
3729 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  ) PORT_PLAYER(_n_) \
3730 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  ) PORT_PLAYER(_n_) \
3731 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(_n_) \
3732 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1        ) PORT_PLAYER(_n_) \
3733 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2        ) PORT_PLAYER(_n_) \
3734 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3        ) PORT_PLAYER(_n_) \
3735 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START##_n_                 )
3736 
3737 
3738 #define JOY_ROTATION(_n_, _left_, _right_ ) \
3739 	PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_PLAYER(_n_) PORT_SENSITIVITY(15) PORT_KEYDELTA(15) PORT_CODE_DEC(KEYCODE_##_left_) PORT_CODE_INC(KEYCODE_##_right_)
3740 
3741 
3742 
3743 /***************************************************************************
3744                                 Arbalester
3745 ***************************************************************************/
3746 
3747 static INPUT_PORTS_START( arbalest )
3748 	PORT_START("P1")    // Player 1
3749 	JOY_TYPE2_2BUTTONS(1)
3750 
3751 	PORT_START("P2")    // Player 2
3752 	JOY_TYPE2_2BUTTONS(2)
3753 
3754 	PORT_START("COINS") // Coins
3755 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN  )
3756 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN  )
3757 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN  )
3758 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN  )
3759 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_TILT     )
3760 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SERVICE1 )
3761 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
3762 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
3763 
3764 	PORT_START("DSW")   // 2 DSWs - $600001 & 3.b
3765 	PORT_DIPNAME( 0x0001, 0x0001, "Licensed To" )       PORT_DIPLOCATION("SW1:1") /* Manual states "Don't Touch" */
3766 	PORT_DIPSETTING(      0x0000, "Taito" )             PORT_CONDITION("DSW",0x4000,NOTEQUALS,0x4000)
3767 	PORT_DIPSETTING(      0x0001, "Jordan" )            PORT_CONDITION("DSW",0x4000,NOTEQUALS,0x4000)
3768 	PORT_DIPSETTING(      0x0000, "Taito" )             PORT_CONDITION("DSW",0x4000,EQUALS,0x4000)
3769 	PORT_DIPSETTING(      0x0001, "Romstar" )           PORT_CONDITION("DSW",0x4000,EQUALS,0x4000) /* Manual shows DSW1-1=Off & DSW2-7=Off */
3770 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) )  PORT_DIPLOCATION("SW1:2")
3771 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
3772 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
3773 	PORT_SERVICE_DIPLOC(  0x0004, IP_ACTIVE_LOW, "SW1:3" )
3774 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) )  PORT_DIPLOCATION("SW1:4") /* Manual states "Don't Touch" */
3775 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
3776 	PORT_DIPSETTING(      0x0008, DEF_STR( On ) )
3777 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) )   PORT_DIPLOCATION("SW1:5,6")
3778 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
3779 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
3780 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
3781 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_2C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
3782 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
3783 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
3784 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
3785 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
3786 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) )   PORT_DIPLOCATION("SW1:7,8")
3787 	PORT_DIPSETTING(      0x0040, DEF_STR( 2C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
3788 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
3789 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
3790 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_2C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
3791 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_2C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
3792 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_3C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
3793 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_4C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
3794 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
3795 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW2:1,2")
3796 	PORT_DIPSETTING(      0x0300, DEF_STR( Easy ) )
3797 	PORT_DIPSETTING(      0x0200, DEF_STR( Hard ) )
3798 	PORT_DIPSETTING(      0x0100, DEF_STR( Harder ) )
3799 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
3800 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:3,4")
3801 	PORT_DIPSETTING(      0x0c00, "Never" )
3802 	PORT_DIPSETTING(      0x0800, "300k Only" )
3803 	PORT_DIPSETTING(      0x0400, "600k Only" )
3804 	PORT_DIPSETTING(      0x0000, "300k & 600k" )
3805 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Lives ) )    PORT_DIPLOCATION("SW2:5,6")
3806 	PORT_DIPSETTING(      0x1000, "1" )
3807 	PORT_DIPSETTING(      0x0000, "2" )
3808 	PORT_DIPSETTING(      0x3000, "3" )
3809 	PORT_DIPSETTING(      0x2000, "5" )
3810 	PORT_DIPNAME( 0x4000, 0x4000, "Licensor Option" )   PORT_DIPLOCATION("SW2:7") /* Manual states "Don't Touch" */
3811 	PORT_DIPSETTING(      0x4000, "Option 1" )
3812 	PORT_DIPSETTING(      0x0000, "Option 2" )
3813 	PORT_DIPNAME( 0x8000, 0x8000, "Coinage Type" )      PORT_DIPLOCATION("SW2:8") /* Manual states "Don't Touch" */
3814 	PORT_DIPSETTING(      0x8000, "Coin Mode 1" )
3815 	PORT_DIPSETTING(      0x0000, "Coin Mode 2" )
3816 INPUT_PORTS_END
3817 
3818 
3819 /***************************************************************************
3820                                 Athena no Hatena?
3821 ***************************************************************************/
3822 /*
3823         Athena no Hatena is a quiz game that uses only four buttons for inputs.
3824         However, the hidden "Test Program" menu makes use of the standard
3825         stick/3-button input layout. With the default input mapping, the menus
3826         are unusable as the three SHOT buttons are unmapped. So we have two
3827         input configurations to allow the debug menu to be usable.
3828 
3829         More information about the Test Program menu:
3830         http://sudden-desu.net/entry/athena-no-hatena-debug-menu-and-functions
3831 */
3832 
3833 static INPUT_PORTS_START( atehate )
3834 	PORT_START("INPUT_TYPE")
3835 	PORT_CONFNAME(0x01,0x00,"Input Type")
3836 	PORT_CONFSETTING(0x00, "Default Control Panel")
3837 	PORT_CONFSETTING(0x01, "Joystick/3 Button Control Panel (for Debug)")
3838 
3839 	PORT_START("P1")    // Player 1
3840 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  ) PORT_PLAYER(1) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x01)
3841 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x01)
3842 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    ) PORT_PLAYER(1) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x01)
3843 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  ) PORT_PLAYER(1) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x01)
3844 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1        ) PORT_PLAYER(1) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x01)
3845 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2        ) PORT_PLAYER(1) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x01)
3846 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3        ) PORT_PLAYER(1) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x01)
3847 
3848 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x00)
3849 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x00)
3850 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x00)
3851 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x00)
3852 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )                PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x00)
3853 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )                PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x00)
3854 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )                PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x00)
3855 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1  )
3856 
3857 	PORT_START("P2")    // Player 2
3858 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  ) PORT_PLAYER(2) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x01)
3859 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x01)
3860 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    ) PORT_PLAYER(2) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x01)
3861 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  ) PORT_PLAYER(2) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x01)
3862 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1        ) PORT_PLAYER(2) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x01)
3863 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2        ) PORT_PLAYER(2) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x01)
3864 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3        ) PORT_PLAYER(2) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x01)
3865 
3866 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x00)
3867 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x00)
3868 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x00)
3869 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x00)
3870 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )                PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x00)
3871 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )                PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x00)
3872 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )                PORT_CONDITION("INPUT_TYPE", 0x01, EQUALS, 0x00)
3873 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2  )
3874 
3875 	PORT_START("COINS") // Coins
3876 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
3877 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
3878 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_IMPULSE(5)
3879 	PORT_BIT( 0x0008, IP_ACTIVE_LOW,  IPT_UNKNOWN )
3880 	PORT_BIT( 0x0010, IP_ACTIVE_LOW,  IPT_UNKNOWN ) // 4 Bits Called "Cut DSW"
3881 	PORT_BIT( 0x0020, IP_ACTIVE_LOW,  IPT_UNKNOWN )
3882 	PORT_BIT( 0x0040, IP_ACTIVE_LOW,  IPT_UNKNOWN )
3883 	PORT_BIT( 0x0080, IP_ACTIVE_LOW,  IPT_UNKNOWN )
3884 
3885 	PORT_START("DSW")   // 2 DSWs - $e00001 & 3.b
3886 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3")
3887 	PORT_DIPSETTING(      0x0001, DEF_STR( 4C_1C ) )
3888 	PORT_DIPSETTING(      0x0002, DEF_STR( 3C_1C ) )
3889 	PORT_DIPSETTING(      0x0004, DEF_STR( 2C_1C ) )
3890 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
3891 	PORT_DIPSETTING(      0x0003, DEF_STR( 2C_3C ) )
3892 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
3893 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
3894 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
3895 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:4,5,6")
3896 	PORT_DIPSETTING(      0x0008, DEF_STR( 4C_1C ) )
3897 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_1C ) )
3898 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )
3899 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
3900 	PORT_DIPSETTING(      0x0018, DEF_STR( 2C_3C ) )
3901 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
3902 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
3903 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
3904 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:7")
3905 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
3906 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
3907 	PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "SW2:8" ) /* Listed as "Unused" */
3908 
3909 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
3910 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
3911 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
3912 	PORT_SERVICE_DIPLOC(  0x0200, IP_ACTIVE_LOW, "SW1:2" )
3913 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
3914 	PORT_DIPSETTING(      0x0800, DEF_STR( Easy )    )
3915 	PORT_DIPSETTING(      0x0c00, DEF_STR( Normal )  )
3916 	PORT_DIPSETTING(      0x0400, DEF_STR( Hard )    )
3917 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
3918 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:5,6")
3919 	PORT_DIPSETTING(      0x0000, "2" )
3920 	PORT_DIPSETTING(      0x3000, "3" )
3921 	PORT_DIPSETTING(      0x1000, "4" )
3922 	PORT_DIPSETTING(      0x2000, "5" )
3923 	PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:7,8")
3924 	PORT_DIPSETTING(      0xc000, DEF_STR( None ) )
3925 	PORT_DIPSETTING(      0x0000, "20K Only" )
3926 	PORT_DIPSETTING(      0x8000, "20K, Every 30K" )
3927 	PORT_DIPSETTING(      0x4000, "30K, Every 40K" )
3928 INPUT_PORTS_END
3929 
3930 
3931 /***************************************************************************
3932                                 Blandia
3933 ***************************************************************************/
3934 
3935 static INPUT_PORTS_START( blandia )
3936 	PORT_START("P1")    //Player 1 - $400000.w
3937 	JOY_TYPE1_3BUTTONS(1)
3938 
3939 	PORT_START("P2")    //Player 2 - $400002.w
3940 	JOY_TYPE1_3BUTTONS(2)
3941 
3942 	PORT_START("COINS") //Coins - $400004.w
3943 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
3944 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
3945 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
3946 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT     )
3947 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN  )
3948 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN  )
3949 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN  )
3950 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN  )
3951 
3952 	PORT_START("DSW")   //2 DSWs - $600001 & 3.b
3953 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:1")
3954 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
3955 	PORT_DIPSETTING(      0x0001, DEF_STR( On ) )
3956 	PORT_DIPNAME( 0x0002, 0x0002, "Coinage Type" ) PORT_DIPLOCATION("SW2:2")
3957 	PORT_DIPSETTING(      0x0002, "Coin Mode 1" )
3958 	PORT_DIPSETTING(      0x0000, "Coin Mode 2" )
3959 	PORT_DIPNAME( 0x001c, 0x001c, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:3,4,5")
3960 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_1C ) )
3961 	PORT_DIPSETTING(      0x000c, DEF_STR( 2C_1C ) )
3962 	PORT_DIPSETTING(      0x001c, DEF_STR( 1C_1C ) )
3963 	PORT_DIPSETTING(      0x0004, DEF_STR( 2C_3C ) )
3964 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_2C ) )
3965 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_5C ) )
3966 	PORT_DIPSETTING(      0x0014, DEF_STR( 1C_3C ) )
3967 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
3968 	PORT_DIPNAME( 0x00e0, 0x00e0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:6,7,8")
3969 	PORT_DIPSETTING(      0x0080, DEF_STR( 5C_1C ) )        PORT_CONDITION("DSW",0x0002,EQUALS,0x0002)
3970 	PORT_DIPSETTING(      0x0040, DEF_STR( 4C_1C ) )        PORT_CONDITION("DSW",0x0002,EQUALS,0x0002)
3971 	PORT_DIPSETTING(      0x0020, DEF_STR( 3C_1C ) )        PORT_CONDITION("DSW",0x0002,EQUALS,0x0002)
3972 	PORT_DIPSETTING(      0x0060, DEF_STR( 2C_1C ) )        PORT_CONDITION("DSW",0x0002,EQUALS,0x0002)
3973 	PORT_DIPSETTING(      0x00e0, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW",0x0002,EQUALS,0x0002)
3974 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_2C ) )        PORT_CONDITION("DSW",0x0002,EQUALS,0x0002)
3975 	PORT_DIPSETTING(      0x00a0, DEF_STR( 1C_3C ) )        PORT_CONDITION("DSW",0x0002,EQUALS,0x0002)
3976 	PORT_DIPSETTING(      0x00e0, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW",0x0002,NOTEQUALS,0x0002)
3977 	PORT_DIPSETTING(      0x0060, DEF_STR( 2C_4C ) )        PORT_CONDITION("DSW",0x0002,NOTEQUALS,0x0002)
3978 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_2C ) )        PORT_CONDITION("DSW",0x0002,NOTEQUALS,0x0002)
3979 	PORT_DIPSETTING(      0x0080, "3 Coins/7 Credits" )     PORT_CONDITION("DSW",0x0002,NOTEQUALS,0x0002) /* Manuals states "2 Coin 7 Credit" */
3980 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_5C ) )        PORT_CONDITION("DSW",0x0002,NOTEQUALS,0x0002)
3981 	PORT_DIPSETTING(      0x0040, DEF_STR( 2C_6C ) )        PORT_CONDITION("DSW",0x0002,NOTEQUALS,0x0002)
3982 	PORT_DIPSETTING(      0x00a0, DEF_STR( 1C_3C ) )        PORT_CONDITION("DSW",0x0002,NOTEQUALS,0x0002)
3983 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
3984 
3985 
3986 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
3987 	PORT_DIPSETTING(      0x0200, "1, 1 Round" ) // Test mode shows 1 in both blandia and blandiap
3988 	PORT_DIPSETTING(      0x0300, "1, 2 Rounds" ) // Test mode shows 0 in blandia, 2 in blandiap (neither match actual behaviour)
3989 	PORT_DIPSETTING(      0x0100, "2" ) // Test mode shows 2 in blandia, 3 in blandiap (blandiap test mode is wrong)
3990 	PORT_DIPSETTING(      0x0000, "3" ) // Test mode shows 3 in blandia, 4 in blandiap (blandiap test mode is wrong)
3991 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
3992 	PORT_DIPSETTING(      0x0800, DEF_STR( Easy )    )
3993 	PORT_DIPSETTING(      0x0c00, DEF_STR( Normal )  )
3994 	PORT_DIPSETTING(      0x0400, DEF_STR( Hard )    )
3995 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
3996 	PORT_DIPNAME( 0x1000, 0x1000, "2 Player Game" ) PORT_DIPLOCATION("SW1:5")
3997 	PORT_DIPSETTING(      0x1000, "2 Credits" )
3998 	PORT_DIPSETTING(      0x0000, "1 Credit"  )
3999 	PORT_DIPNAME( 0x2000, 0x2000, "Continue" ) PORT_DIPLOCATION("SW1:6")
4000 	PORT_DIPSETTING(      0x2000, "1 Credit" )
4001 	PORT_DIPSETTING(      0x0000, "1 Coin"   )
4002 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:7")
4003 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
4004 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4005 	PORT_SERVICE_DIPLOC(  0x8000, IP_ACTIVE_LOW, "SW1:8" )
4006 INPUT_PORTS_END
4007 
4008 
4009 
4010 /***************************************************************************
4011                                 Block Carnival
4012 ***************************************************************************/
4013 
4014 static INPUT_PORTS_START( blockcar )
4015 	PORT_START("P1")    //Player 1 - $500001.b
4016 	JOY_TYPE1_2BUTTONS(1)   // button2 = speed up
4017 
4018 	PORT_START("P2")    //Player 2 - $500003.b
4019 	JOY_TYPE1_2BUTTONS(2)
4020 
4021 	PORT_START("COINS") //Coins + DSW - $500005.b
4022 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
4023 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
4024 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
4025 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT     )
4026 	PORT_DIPNAME( 0x0010, 0x0000, "Title" )     /* This is a jumper pad */
4027 	PORT_DIPSETTING(      0x0010, "Thunder & Lightning 2" )
4028 	PORT_DIPSETTING(      0x0000, "Block Carnival" )
4029 
4030 	PORT_START("DSW")   //2 DSWs - $300003 & 1.b
4031 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
4032 	PORT_DIPSETTING(      0x0002, DEF_STR( Easy )    )
4033 	PORT_DIPSETTING(      0x0003, DEF_STR( Normal )  )
4034 	PORT_DIPSETTING(      0x0001, DEF_STR( Hard )    )
4035 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
4036 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:3,4")
4037 	PORT_DIPSETTING(      0x000c, "20K, Every 50K" )
4038 	PORT_DIPSETTING(      0x0004, "20K, Every 70K" )
4039 	PORT_DIPSETTING(      0x0008, "30K, Every 60K" )
4040 	PORT_DIPSETTING(      0x0000, "30K, Every 90K" )
4041 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:5,6")
4042 	PORT_DIPSETTING(      0x0000, "1" )
4043 	PORT_DIPSETTING(      0x0030, "2" )
4044 	PORT_DIPSETTING(      0x0020, "3" )
4045 	PORT_DIPSETTING(      0x0010, "4" )
4046 	PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW2:7" ) /* Listed as "Unused" */
4047 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW2:8") /* Listed as "Unused" */
4048 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
4049 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4050 
4051 	PORT_DIPUNUSED_DIPLOC( 0x0100, 0x0100, "SW1:1" ) /* Listed as "Unused" */
4052 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:2")
4053 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
4054 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4055 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:3")
4056 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
4057 	PORT_DIPSETTING(      0x0400, DEF_STR( On ) )
4058 	PORT_DIPNAME( 0x0800, 0x0800, "Unknown 1-3" ) PORT_DIPLOCATION("SW1:4") // service mode, according to a file in the archive
4059 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
4060 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4061 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:5,6")
4062 	PORT_DIPSETTING(      0x1000, DEF_STR( 2C_1C ) )
4063 	PORT_DIPSETTING(      0x3000, DEF_STR( 1C_1C ) )
4064 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )
4065 	PORT_DIPSETTING(      0x2000, DEF_STR( 1C_2C ) )
4066 	PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:7,8")
4067 	PORT_DIPSETTING(      0x4000, DEF_STR( 2C_1C ) )
4068 	PORT_DIPSETTING(      0xc000, DEF_STR( 1C_1C ) )
4069 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )
4070 	PORT_DIPSETTING(      0x8000, DEF_STR( 1C_2C ) )
4071 INPUT_PORTS_END
4072 
4073 
4074 
4075 /***************************************************************************
4076                                 Caliber 50
4077 ***************************************************************************/
4078 
4079 static INPUT_PORTS_START( calibr50 )
4080 	PORT_START("P1")    //Player 1
4081 	JOY_TYPE2_2BUTTONS(1)
4082 
4083 	PORT_START("P2")    //Player 2
4084 	JOY_TYPE2_2BUTTONS(2)
4085 
4086 	PORT_START("COINS") //Coins
4087 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN  )
4088 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN  )
4089 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN  )
4090 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN  )
4091 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_TILT     )
4092 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SERVICE1 )
4093 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
4094 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
4095 
4096 	PORT_START("DSW")   //2 DSWs - $600001 & 3.b
4097 	PORT_DIPNAME( 0x0001, 0x0001, "Copyright / License" )       PORT_DIPLOCATION("SW1:1") /* Romstar's Manual states "Don't Touch" */
4098 	PORT_DIPSETTING(      0x0000, "Seta (Japan only)" )     PORT_CONDITION("DSW",0x4000,NOTEQUALS,0x4000)
4099 	PORT_DIPSETTING(      0x0001, "Seta USA / Romstar" )        PORT_CONDITION("DSW",0x4000,NOTEQUALS,0x4000)
4100 	PORT_DIPSETTING(      0x0000, "Seta / Taito" )          PORT_CONDITION("DSW",0x4000,EQUALS,0x4000)
4101 	PORT_DIPSETTING(      0x0001, "Seta USA / Taito America" )  PORT_CONDITION("DSW",0x4000,EQUALS,0x4000) /* Romstar's Manual shows DSW1-1=Off & DSW2-7=Off */
4102 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) )  PORT_DIPLOCATION("SW1:2")
4103 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
4104 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4105 	PORT_SERVICE_DIPLOC(  0x0004, IP_ACTIVE_LOW, "SW1:3" )
4106 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) )  PORT_DIPLOCATION("SW1:4")
4107 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
4108 	PORT_DIPSETTING(      0x0008, DEF_STR( On ) )
4109 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) )   PORT_DIPLOCATION("SW1:5,6")
4110 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4111 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4112 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4113 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_2C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4114 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4115 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4116 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4117 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4118 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) )   PORT_DIPLOCATION("SW1:7,8")
4119 	PORT_DIPSETTING(      0x0040, DEF_STR( 2C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4120 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4121 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4122 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_2C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4123 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_2C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4124 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_3C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4125 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_4C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4126 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4127 	PORT_DIPNAME( 0x0300, 0x0100, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW2:1,2")
4128 	PORT_DIPSETTING(      0x0300, DEF_STR( Easiest ) )
4129 	PORT_DIPSETTING(      0x0200, DEF_STR( Easy ) )
4130 	PORT_DIPSETTING(      0x0100, DEF_STR( Normal ) )
4131 	PORT_DIPSETTING(      0x0000, DEF_STR( Hard ) )
4132 	PORT_DIPNAME( 0x0400, 0x0400, "Score Digits" )      PORT_DIPLOCATION("SW2:3")
4133 	PORT_DIPSETTING(      0x0400, "7" )
4134 	PORT_DIPSETTING(      0x0000, "3" )
4135 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Lives ) )    PORT_DIPLOCATION("SW2:4")
4136 	PORT_DIPSETTING(      0x0800, "3" )
4137 	PORT_DIPSETTING(      0x0000, "4" )
4138 	PORT_DIPNAME( 0x1000, 0x1000, "Display Score" )     PORT_DIPLOCATION("SW2:5")
4139 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
4140 	PORT_DIPSETTING(      0x1000, DEF_STR( On ) )
4141 	PORT_DIPNAME( 0x2000, 0x2000, "Erase Backup Ram" )  PORT_DIPLOCATION("SW2:6")
4142 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
4143 	PORT_DIPSETTING(      0x2000, DEF_STR( On ) )
4144 	PORT_DIPNAME( 0x4000, 0x4000, "Licensor Option" )   PORT_DIPLOCATION("SW2:7") /* Romstar's Manual states "Don't Touch" */
4145 	PORT_DIPSETTING(      0x4000, "Option 1" )
4146 	PORT_DIPSETTING(      0x0000, "Option 2" )
4147 	PORT_DIPNAME( 0x8000, 0x8000, "Coinage Type" )      PORT_DIPLOCATION("SW2:8") /* Romstar's Manual states "Don't Touch" */
4148 	PORT_DIPSETTING(      0x8000, "Coin Mode 1" )
4149 	PORT_DIPSETTING(      0x0000, "Coin Mode 2" )
4150 
4151 	PORT_START("ROT1")  // Rotation Player 1
4152 	PORT_BIT( 0xfff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(15) PORT_KEYDELTA(15) PORT_RESET PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X)
4153 
4154 	PORT_START("ROT2")  // Rotation Player 2
4155 	PORT_BIT( 0xfff, 0x00, IPT_DIAL ) PORT_PLAYER(2) PORT_SENSITIVITY(15) PORT_KEYDELTA(15) PORT_RESET PORT_CODE_DEC(KEYCODE_N) PORT_CODE_INC(KEYCODE_M)
4156 INPUT_PORTS_END
4157 
4158 /***************************************************************************
4159                                 Daioh
4160 ***************************************************************************/
4161 
4162 static INPUT_PORTS_START( daioh )
4163 	PORT_START("P1")
4164 	JOY_TYPE1_3BUTTONS(1)
4165 
4166 	PORT_START("P2")
4167 	JOY_TYPE1_3BUTTONS(2)
4168 
4169 	PORT_START("COINS")
4170 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
4171 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
4172 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
4173 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
4174 	/* These are NOT Dip Switches but jumpers */
4175 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unused ) )   // JP9
4176 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
4177 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4178 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unused ) )   // JP8
4179 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
4180 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4181 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unused ) )   // JP7
4182 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
4183 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4184 	PORT_DIPNAME( 0x0080, 0x0080, "Country" )           // JP6
4185 	PORT_DIPSETTING(      0x0080, "USA (6 buttons)" )
4186 	PORT_DIPSETTING(      0x0000, "Japan (2 buttons)" )
4187 
4188 	PORT_START("DSW")
4189 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3")
4190 	PORT_DIPSETTING(      0x0001, DEF_STR( 4C_1C ) )
4191 	PORT_DIPSETTING(      0x0002, DEF_STR( 3C_1C ) )
4192 	PORT_DIPSETTING(      0x0004, DEF_STR( 2C_1C ) )
4193 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
4194 	PORT_DIPSETTING(      0x0003, DEF_STR( 2C_3C ) )
4195 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
4196 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
4197 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
4198 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:4,5,6")
4199 	PORT_DIPSETTING(      0x0008, DEF_STR( 4C_1C ) )
4200 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_1C ) )
4201 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )
4202 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
4203 	PORT_DIPSETTING(      0x0018, DEF_STR( 2C_3C ) )
4204 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
4205 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
4206 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
4207 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:7")
4208 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
4209 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
4210 	PORT_DIPNAME( 0x0080, 0x0000, "Auto Shot" ) PORT_DIPLOCATION("SW2:8")
4211 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
4212 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4213 
4214 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
4215 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
4216 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4217 	PORT_SERVICE_DIPLOC(  0x0200, IP_ACTIVE_LOW, "SW1:2" )
4218 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
4219 	PORT_DIPSETTING(      0x0800, DEF_STR( Easy ) )
4220 	PORT_DIPSETTING(      0x0c00, DEF_STR( Normal ) )
4221 	PORT_DIPSETTING(      0x0400, DEF_STR( Hard ) )
4222 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
4223 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:5,6")
4224 	PORT_DIPSETTING(      0x0000, "1" )
4225 	PORT_DIPSETTING(      0x1000, "2" )
4226 	PORT_DIPSETTING(      0x3000, "3" )
4227 	PORT_DIPSETTING(      0x2000, "5" )
4228 	PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:7,8")
4229 	PORT_DIPSETTING(      0x8000, "300k and every 800k" )
4230 	PORT_DIPSETTING(      0xc000, "500k and every 1000k" )
4231 	PORT_DIPSETTING(      0x4000, "800k and 2000k only" )
4232 	PORT_DIPSETTING(      0x0000, "1000k Only" )
4233 
4234 	PORT_START("EXTRA")
4235 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
4236 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1)
4237 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1)
4238 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
4239 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2)
4240 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2)
4241 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
4242 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
4243 INPUT_PORTS_END
4244 
4245 /***************************************************************************
4246                        Daioh (prototype)
4247 ***************************************************************************/
4248 
4249 static INPUT_PORTS_START( daiohp )
4250 	PORT_START("P1")
4251 	JOY_TYPE1_3BUTTONS(1)
4252 
4253 	PORT_START("P2")
4254 	JOY_TYPE1_3BUTTONS(2)
4255 
4256 	PORT_START("DSW")
4257 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3")
4258 	PORT_DIPSETTING(      0x0001, DEF_STR( 4C_1C ) )
4259 	PORT_DIPSETTING(      0x0002, DEF_STR( 3C_1C ) )
4260 	PORT_DIPSETTING(      0x0004, DEF_STR( 2C_1C ) )
4261 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
4262 	PORT_DIPSETTING(      0x0003, DEF_STR( 2C_3C ) )
4263 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
4264 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
4265 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
4266 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:4,5,6")
4267 	PORT_DIPSETTING(      0x0008, DEF_STR( 4C_1C ) )
4268 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_1C ) )
4269 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )
4270 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
4271 	PORT_DIPSETTING(      0x0018, DEF_STR( 2C_3C ) )
4272 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
4273 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
4274 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
4275 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:7")
4276 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
4277 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
4278 	PORT_DIPNAME( 0x0080, 0x0000, "Auto Shot" ) PORT_DIPLOCATION("SW2:8")
4279 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
4280 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4281 
4282 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
4283 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
4284 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4285 	PORT_SERVICE_DIPLOC(  0x0200, IP_ACTIVE_LOW, "SW1:2" )
4286 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
4287 	PORT_DIPSETTING(      0x0800, DEF_STR( Easy ) )
4288 	PORT_DIPSETTING(      0x0c00, DEF_STR( Normal ) )
4289 	PORT_DIPSETTING(      0x0400, DEF_STR( Hard ) )
4290 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
4291 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:5,6")
4292 	PORT_DIPSETTING(      0x0000, "1" )
4293 	PORT_DIPSETTING(      0x1000, "2" )
4294 	PORT_DIPSETTING(      0x3000, "3" )
4295 	PORT_DIPSETTING(      0x2000, "5" )
4296 	PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:7,8")
4297 	PORT_DIPSETTING(      0x8000, "100k and every 600k" )
4298 	PORT_DIPSETTING(      0xc000, "200k and every 800k" )
4299 	PORT_DIPSETTING(      0x4000, "300k and 1000k only" )
4300 	PORT_DIPSETTING(      0x0000, "500k Only" )
4301 
4302 	PORT_START("COINS")
4303 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
4304 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
4305 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
4306 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
4307 
4308 	PORT_DIPNAME( 0x00F0, 0x0000, "Country" ) PORT_DIPLOCATION("SW3:1,2,3,4")
4309 	PORT_DIPSETTING(      0x0080, "USA (6 buttons)" ) // any setting other than 0 is USA
4310 	PORT_DIPSETTING(      0x0000, "Japan (2 buttons)" )
4311 
4312 	PORT_START("EXTRA")
4313 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
4314 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1)
4315 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1)
4316 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
4317 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2)
4318 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2)
4319 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
4320 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
4321 INPUT_PORTS_END
4322 
4323 
4324 /***************************************************************************
4325                                 Dragon Unit
4326 ***************************************************************************/
4327 
4328 static INPUT_PORTS_START( drgnunit )
4329 	PORT_START("P1")    //Player 1
4330 	JOY_TYPE1_3BUTTONS(1)
4331 
4332 	PORT_START("P2")    //Player 2
4333 	JOY_TYPE1_3BUTTONS(2)
4334 
4335 	PORT_START("COINS") //Coins
4336 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
4337 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
4338 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
4339 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT     )
4340 	PORT_DIPNAME( 0x0010, 0x0010, "Coinage Type" )
4341 	PORT_DIPSETTING(      0x0010, "Coin Mode 1" )
4342 	PORT_DIPSETTING(      0x0000, "Coin Mode 2" )
4343 	PORT_DIPNAME( 0x0020, 0x0020, "Title" )
4344 	PORT_DIPSETTING(      0x0020, "Dragon Unit" )
4345 	PORT_DIPSETTING(      0x0000, "Castle of Dragon" )
4346 	PORT_DIPNAME( 0x00c0, 0x00c0, "(C) / License" )
4347 	PORT_DIPSETTING(      0x00c0, "Athena (Japan)" )
4348 	PORT_DIPSETTING(      0x0080, "Athena / Taito (Japan)" )
4349 	PORT_DIPSETTING(      0x0040, "Seta USA / Taito America" )
4350 	PORT_DIPSETTING(      0x0000, "Seta USA / Romstar" )
4351 
4352 	PORT_START("DSW")   //2 DSWs - $600001 & 3.b
4353 	PORT_DIPNAME( 0x0003, 0x0002, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:1,2")
4354 	PORT_DIPSETTING(      0x0003, DEF_STR( Easy ) )
4355 	PORT_DIPSETTING(      0x0002, DEF_STR( Normal ) )
4356 	PORT_DIPSETTING(      0x0001, DEF_STR( Hard ) )
4357 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
4358 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:3,4")
4359 	PORT_DIPSETTING(      0x0008, "150K, Every 300K" )
4360 	PORT_DIPSETTING(      0x000c, "200K, Every 400K" )
4361 	PORT_DIPSETTING(      0x0004, "300K, Every 500K" )
4362 	PORT_DIPSETTING(      0x0000, "400K Only" )
4363 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:5,6")
4364 	PORT_DIPSETTING(      0x0000, "1" )
4365 	PORT_DIPSETTING(      0x0010, "2" )
4366 	PORT_DIPSETTING(      0x0030, "3" )
4367 	PORT_DIPSETTING(      0x0020, "5" )
4368 	PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW1:7" )    /* Labeled "Don't Touch" in manual */
4369 	PORT_DIPNAME( 0x0080, 0x0080, "Unknown 1-8*" ) PORT_DIPLOCATION("SW1:8")    /* Labeled "Don't Touch" in manual (seems to be used though) */
4370 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
4371 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4372 
4373 	PORT_DIPUNUSED_DIPLOC( 0x0100, 0x0100, "SW2:1" )    /* Labeled "Don't Touch" in manual */
4374 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:2")
4375 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
4376 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4377 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:3")
4378 	PORT_DIPSETTING(      0x0400, "1 of 4 Scenes" )
4379 	PORT_DIPSETTING(      0x0000, "1 of 8 Scenes" )
4380 	PORT_SERVICE_DIPLOC(  0x0800, IP_ACTIVE_LOW, "SW2:4" )
4381 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Coin_A ) )       PORT_DIPLOCATION("SW2:5,6")
4382 	PORT_DIPSETTING(      0x1000, DEF_STR( 2C_1C ) )            PORT_CONDITION("COINS",0x0010,EQUALS,0x0010)
4383 	PORT_DIPSETTING(      0x3000, DEF_STR( 1C_1C ) )            PORT_CONDITION("COINS",0x0010,EQUALS,0x0010)
4384 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )            PORT_CONDITION("COINS",0x0010,EQUALS,0x0010)
4385 	PORT_DIPSETTING(      0x2000, DEF_STR( 1C_2C ) )            PORT_CONDITION("COINS",0x0010,EQUALS,0x0010)
4386 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )            PORT_CONDITION("COINS",0x0010,NOTEQUALS,0x0010)
4387 	PORT_DIPSETTING(      0x1000, DEF_STR( 3C_1C ) )            PORT_CONDITION("COINS",0x0010,NOTEQUALS,0x0010)
4388 	PORT_DIPSETTING(      0x2000, DEF_STR( 2C_1C ) )            PORT_CONDITION("COINS",0x0010,NOTEQUALS,0x0010)
4389 	PORT_DIPSETTING(      0x3000, DEF_STR( 1C_1C ) )            PORT_CONDITION("COINS",0x0010,NOTEQUALS,0x0010)
4390 	PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Coin_B ) )       PORT_DIPLOCATION("SW2:7,8")
4391 	PORT_DIPSETTING(      0x4000, DEF_STR( 2C_1C ) )            PORT_CONDITION("COINS",0x0010,EQUALS,0x0010)
4392 	PORT_DIPSETTING(      0xc000, DEF_STR( 1C_1C ) )            PORT_CONDITION("COINS",0x0010,EQUALS,0x0010)
4393 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )            PORT_CONDITION("COINS",0x0010,EQUALS,0x0010)
4394 	PORT_DIPSETTING(      0x8000, DEF_STR( 1C_2C ) )            PORT_CONDITION("COINS",0x0010,EQUALS,0x0010)
4395 	PORT_DIPSETTING(      0xc000, DEF_STR( 1C_2C ) )            PORT_CONDITION("COINS",0x0010,NOTEQUALS,0x0010)
4396 	PORT_DIPSETTING(      0x8000, DEF_STR( 1C_3C ) )            PORT_CONDITION("COINS",0x0010,NOTEQUALS,0x0010)
4397 	PORT_DIPSETTING(      0x4000, DEF_STR( 1C_4C ) )            PORT_CONDITION("COINS",0x0010,NOTEQUALS,0x0010)
4398 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )            PORT_CONDITION("COINS",0x0010,NOTEQUALS,0x0010)
4399 
4400 INPUT_PORTS_END
4401 
4402 
4403 /***************************************************************************
4404                                 The Roulette
4405 ***************************************************************************/
4406 
4407 static INPUT_PORTS_START( setaroul )
4408 	PORT_START("DSW1-A") // d40001.b
4409 	PORT_DIPNAME( 0x01, 0x01, "Accept Coins" )          PORT_DIPLOCATION("SW1:8")
4410 	PORT_DIPSETTING(    0x01, DEF_STR( Yes ) )
4411 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
4412 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )  PORT_DIPLOCATION("SW1:4")
4413 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
4414 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4415 	PORT_DIPNAME( 0x04, 0x00, "Accept Note/Coupon" )    PORT_DIPLOCATION("SW1:6")
4416 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
4417 	PORT_DIPSETTING(    0x04, DEF_STR( No ) )
4418 	PORT_DIPNAME( 0x08, 0x00, "Menu 3:Log 4:RS232" )    PORT_DIPLOCATION("SW1:5") // enable menus 3 & 4 in stats screen
4419 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
4420 	PORT_DIPSETTING(    0x08, DEF_STR( No ) )
4421 
4422 	PORT_START("DSW1-B") // d40003.b
4423 	PORT_DIPNAME( 0x01, 0x00, "Play Jingle?" )          PORT_DIPLOCATION("SW1:7")
4424 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
4425 	PORT_DIPSETTING(    0x01, DEF_STR( No ) )
4426 	PORT_DIPNAME( 0x02, 0x02, "Use Hopper" )            PORT_DIPLOCATION("SW1:3") // needed for payout
4427 	PORT_DIPSETTING(    0x02, DEF_STR( Yes ) )
4428 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
4429 	PORT_DIPNAME( 0x04, 0x04, "SW1:2?" )                PORT_DIPLOCATION("SW1:2") // unused? not shown in input test
4430 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
4431 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4432 	PORT_DIPNAME( 0x08, 0x08, "SW1:1?" )                PORT_DIPLOCATION("SW1:1") // unused? not shown in input test
4433 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
4434 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4435 
4436 	PORT_START("DSW2-A") // d40005.b
4437 	PORT_DIPNAME( 0x01, 0x00, "Check Door 1?" )         PORT_DIPLOCATION("SW2:8")
4438 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
4439 	PORT_DIPSETTING(    0x01, DEF_STR( No ) )
4440 	PORT_DIPNAME( 0x02, 0x00, "Check Door 2?" )         PORT_DIPLOCATION("SW2:7")
4441 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
4442 	PORT_DIPSETTING(    0x02, DEF_STR( No ) )
4443 	PORT_DIPNAME( 0x04, 0x00, "Check Door 3?" )         PORT_DIPLOCATION("SW2:6")
4444 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
4445 	PORT_DIPSETTING(    0x04, DEF_STR( No ) )
4446 	PORT_DIPNAME( 0x08, 0x08, "SW2:2" )                 PORT_DIPLOCATION("SW2:2")
4447 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
4448 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4449 
4450 	PORT_START("DSW2-B") // d40007.b
4451 	PORT_DIPNAME( 0x01, 0x01, "SW2:4" )                 PORT_DIPLOCATION("SW2:4")
4452 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
4453 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4454 	PORT_DIPNAME( 0x02, 0x00, "Menu 5:RS323? 6:Sound 7:Gfx 8:Clock" ) PORT_DIPLOCATION("SW2:3") // enable 4 *hidden* menus and debug key
4455 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
4456 	PORT_DIPSETTING(    0x02, DEF_STR( No ) )
4457 	PORT_DIPNAME( 0x04, 0x04, "SW2:5" )                 PORT_DIPLOCATION("SW2:5")
4458 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
4459 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4460 	PORT_SERVICE( 0x08, 0x08 )                          PORT_DIPLOCATION("SW2:1") // service mode
4461 
4462 	PORT_START("COIN") // d40009.b
4463 	PORT_BIT( 0x01, IP_ACTIVE_HIGH,IPT_CUSTOM  ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // medal (causes hopper over run / empty if the dsw is on)
4464 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Reset")         // rst     (button SW5? Press twice quickly to enter the keyboard test)
4465 	PORT_DIPNAME( 0x04, 0x04, "Credit Meter" )    PORT_DIPLOCATION("SW6:1")  // crt.mtr (switch SW6? Shows stats screen. With added menus, if their dsw is on)
4466 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
4467 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4468 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Attendant Pay") // att.pay (clears error)
4469 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3    ) PORT_NAME("Note")          // note    (same as 100 coins)
4470 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2    ) PORT_NAME("Coupon")        // cupon   (same as  10 coins)
4471 	PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(setaroul_state, coin_sensors_r)
4472 
4473 	PORT_START("COIN1") // start the coin drop sequence (see coin_sensors_r)
4474 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, setaroul_state, coin_drop_start, 0)
4475 
4476 	PORT_START("DOOR") // d4000b.b
4477 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
4478 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
4479 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("Drop") // drop    ("coin drop jam or time out" error when stuck low)
4480 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER   )                   // hop.ovf (hopper overflow, ignored?)
4481 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("Door 1") PORT_CODE(KEYCODE_OPENBRACE)
4482 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("Door 2") PORT_CODE(KEYCODE_CLOSEBRACE)
4483 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("Door 3") PORT_CODE(KEYCODE_QUOTE)
4484 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_TILT    )
4485 
4486 #define PORT_BET(_TAG) \
4487 	PORT_START(_TAG) \
4488 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(_TAG " Row 0") \
4489 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(_TAG " Row 1") \
4490 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(_TAG " Row 2") \
4491 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(_TAG " Row 3") \
4492 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(_TAG " Row 4") \
4493 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(_TAG " Row 5") \
4494 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(_TAG " Row 6") \
4495 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(_TAG " Row 7")
4496 
4497 	// d40011.b (26 columns, 1 bit per row)
4498 	PORT_BET("BET.00")
4499 	PORT_BET("BET.01")
4500 	PORT_BET("BET.02")
4501 	PORT_BET("BET.03")
4502 	PORT_BET("BET.04")
4503 	PORT_BET("BET.05")
4504 	PORT_BET("BET.06")
4505 	PORT_BET("BET.07")
4506 	PORT_BET("BET.08")
4507 	PORT_BET("BET.09")
4508 	PORT_BET("BET.0A")
4509 	PORT_BET("BET.0B")
4510 	PORT_BET("BET.0C")
4511 	PORT_BET("BET.0D")
4512 	PORT_BET("BET.0E")
4513 	PORT_BET("BET.0F")
4514 	PORT_BET("BET.10")
4515 	PORT_BET("BET.11")
4516 	PORT_BET("BET.12")
4517 	PORT_BET("BET.13")
4518 	PORT_BET("BET.14")
4519 	PORT_BET("BET.15")
4520 	PORT_BET("BET.16")
4521 	PORT_BET("BET.17")
4522 	PORT_BET("BET.18")
4523 	PORT_BET("BET.19")
4524 
4525 	PORT_START("DSW3") // d40019.b
4526 	PORT_DIPNAME( 0x03, 0x03, "Payout %" )             PORT_DIPLOCATION("SW3:7,8")
4527 	PORT_DIPSETTING(    0x00, "65"   )
4528 	PORT_DIPSETTING(    0x01, "75"   )
4529 	PORT_DIPSETTING(    0x02, "85"   )
4530 	PORT_DIPSETTING(    0x03, "97.3" )
4531 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coinage ) )     PORT_DIPLOCATION("SW3:5,6")
4532 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
4533 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
4534 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
4535 	PORT_DIPSETTING(    0x00, "1 Coin/10 Credits" )
4536 	PORT_DIPNAME( 0x10, 0x10, "Menu 1:Time 2:Payout" ) PORT_DIPLOCATION("SW3:4") // dsw3 4 (enable menus 1 & 2 in stats screen)
4537 	PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
4538 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
4539 	PORT_DIPNAME( 0x20, 0x20, "Payout Key" )           PORT_DIPLOCATION("SW3:3")
4540 	PORT_DIPSETTING(    0x20, DEF_STR( Yes ) )
4541 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
4542 	PORT_DIPNAME( 0x40, 0x40, "Hopper Divider" )       PORT_DIPLOCATION("SW3:2")
4543 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
4544 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4545 	PORT_DIPNAME( 0x80, 0x00, "Hopper Sensor" )        PORT_DIPLOCATION("SW3:1")
4546 	PORT_DIPSETTING(    0x80, "Active Low (Error)"  ) // "Hopper Over Run" error
4547 	PORT_DIPSETTING(    0x00, "Active High" )
4548 INPUT_PORTS_END
4549 
4550 /***************************************************************************
4551                                 DownTown
4552 ***************************************************************************/
4553 
4554 static INPUT_PORTS_START( downtown )
4555 	PORT_START("P1")    //Player 1
4556 	JOY_TYPE2_2BUTTONS(1)
4557 
4558 	PORT_START("P2")    //Player 2
4559 	JOY_TYPE2_2BUTTONS(2)
4560 
4561 	PORT_START("COINS") //Coins
4562 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
4563 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
4564 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
4565 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
4566 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_TILT )
4567 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SERVICE1 )
4568 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
4569 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
4570 
4571 	PORT_START("DSW")   //2 DSWs - $600001 & 3.b
4572 	PORT_DIPNAME( 0x0001, 0x0000, "Sales" ) PORT_DIPLOCATION("SW1:1")       /* Manual for USA version says "Always Off" */
4573 	PORT_DIPSETTING(      0x0001, "Japan Only" )
4574 	PORT_DIPSETTING(      0x0000, DEF_STR( World ) )
4575 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:2")
4576 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
4577 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4578 	PORT_SERVICE_DIPLOC(  0x0004, IP_ACTIVE_LOW, "SW1:3" )
4579 	PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:4")
4580 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
4581 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4582 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:5,6")
4583 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )    PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4584 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )    PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4585 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )    PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4586 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_2C ) )    PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4587 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )    PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4588 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_1C ) )    PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4589 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )    PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4590 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )    PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4591 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:7,8")
4592 	PORT_DIPSETTING(      0x0040, DEF_STR( 2C_1C ) )    PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4593 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )    PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4594 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )    PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4595 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_2C ) )    PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
4596 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_2C ) )    PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4597 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_3C ) )    PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4598 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_4C ) )    PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4599 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )    PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
4600 	PORT_DIPNAME( 0x0300, 0x0100, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
4601 	PORT_DIPSETTING(      0x0200, DEF_STR( Easy ) )
4602 	PORT_DIPSETTING(      0x0300, DEF_STR( Normal ) )
4603 	PORT_DIPSETTING(      0x0100, DEF_STR( Hard ) )
4604 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
4605 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:3,4")
4606 	PORT_DIPSETTING(      0x0c00, "Never" )
4607 	PORT_DIPSETTING(      0x0800, "50K Only" )
4608 	PORT_DIPSETTING(      0x0400, "100K Only" )
4609 	PORT_DIPSETTING(      0x0000, "50K, Every 150K" )
4610 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:5,6")
4611 	PORT_DIPSETTING(      0x1000, "2" )
4612 	PORT_DIPSETTING(      0x3000, "3" )
4613 	PORT_DIPSETTING(      0x0000, "4" )
4614 	PORT_DIPSETTING(      0x2000, "5" )
4615 	PORT_DIPNAME( 0x4000, 0x0000, "World License" ) PORT_DIPLOCATION("SW2:7") /* Manual for USA version says "Unused" */
4616 	PORT_DIPSETTING(      0x4000, "Romstar" )
4617 	PORT_DIPSETTING(      0x0000, "Taito" )
4618 	PORT_DIPNAME( 0x8000, 0x8000, "Coinage Type" ) PORT_DIPLOCATION("SW2:8") /* Manual for USA version says "Unused" */
4619 	PORT_DIPSETTING(      0x8000, "1" )
4620 	PORT_DIPSETTING(      0x0000, "2" )
4621 
4622 	PORT_START("ROT1")  //Rotation Player 1
4623 	PORT_BIT( 0xff, 0x00, IPT_POSITIONAL ) PORT_POSITIONS(12) PORT_WRAPS PORT_SENSITIVITY(15) PORT_KEYDELTA(1) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X) PORT_FULL_TURN_COUNT(12)
4624 
4625 	PORT_START("ROT2")  //Rotation Player 2
4626 	PORT_BIT( 0xff, 0x00, IPT_POSITIONAL ) PORT_POSITIONS(12) PORT_WRAPS PORT_SENSITIVITY(15) PORT_KEYDELTA(1) PORT_CODE_DEC(KEYCODE_N) PORT_CODE_INC(KEYCODE_M) PORT_PLAYER(2) PORT_FULL_TURN_COUNT(12)
4627 INPUT_PORTS_END
4628 
4629 
4630 
4631 /***************************************************************************
4632                                 Eight Force
4633 ***************************************************************************/
4634 
4635 static INPUT_PORTS_START( eightfrc )
4636 	PORT_START("P1")    //Player 1
4637 	JOY_TYPE1_2BUTTONS(1)
4638 
4639 	PORT_START("P2")    //Player 2
4640 	JOY_TYPE1_2BUTTONS(2)
4641 
4642 	PORT_START("COINS") //Coins
4643 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
4644 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
4645 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
4646 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT )
4647 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
4648 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
4649 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
4650 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
4651 
4652 	PORT_START("DSW")   //2 DSWs - $600001 & 3.b
4653 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3")
4654 	PORT_DIPSETTING(      0x0004, DEF_STR( 4C_1C ) )
4655 	PORT_DIPSETTING(      0x0005, DEF_STR( 3C_1C ) )
4656 	PORT_DIPSETTING(      0x0006, DEF_STR( 2C_1C ) )
4657 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
4658 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_2C ) )
4659 	PORT_DIPSETTING(      0x0002, DEF_STR( 1C_3C ) )
4660 	PORT_DIPSETTING(      0x0001, DEF_STR( 1C_4C ) )
4661 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
4662 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:4,5,6")
4663 	PORT_DIPSETTING(      0x0020, DEF_STR( 4C_1C ) )
4664 	PORT_DIPSETTING(      0x0028, DEF_STR( 3C_1C ) )
4665 	PORT_DIPSETTING(      0x0030, DEF_STR( 2C_1C ) )
4666 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
4667 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_2C ) )
4668 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_3C ) )
4669 	PORT_DIPSETTING(      0x0008, DEF_STR( 1C_4C ) )
4670 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
4671 	PORT_DIPNAME( 0x0040, 0x0040, "Shared Credits" ) PORT_DIPLOCATION("SW2:7")
4672 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
4673 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
4674 	PORT_DIPNAME( 0x0080, 0x0080, "Credits To Start" ) PORT_DIPLOCATION("SW2:8")
4675 	PORT_DIPSETTING(      0x0080, "1" )
4676 	PORT_DIPSETTING(      0x0000, "2" )
4677 
4678 	PORT_SERVICE_DIPLOC(  0x0100, IP_ACTIVE_LOW, "SW1:1" )
4679 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:2")
4680 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
4681 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4682 	PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:3")
4683 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
4684 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4685 	PORT_DIPNAME( 0x1800, 0x1800, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:4,5")
4686 	PORT_DIPSETTING(      0x1000, DEF_STR( Easy ) )
4687 	PORT_DIPSETTING(      0x1800, DEF_STR( Normal ) )
4688 	PORT_DIPSETTING(      0x0800, DEF_STR( Hard ) )
4689 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
4690 	PORT_DIPNAME( 0x6000, 0x6000, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:6,7")
4691 	PORT_DIPSETTING(      0x4000, "2" )
4692 	PORT_DIPSETTING(      0x6000, "3" )
4693 	PORT_DIPSETTING(      0x2000, "4" )
4694 	PORT_DIPSETTING(      0x0000, "5" )
4695 	PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Language ) ) PORT_DIPLOCATION("SW1:8")
4696 	PORT_DIPSETTING(      0x0000, DEF_STR( English ) )
4697 	PORT_DIPSETTING(      0x8000, DEF_STR( Japanese ) )
4698 INPUT_PORTS_END
4699 
4700 
4701 
4702 /***************************************************************************
4703                                 Extreme Downhill
4704 ***************************************************************************/
4705 
4706 static INPUT_PORTS_START( extdwnhl )
4707 	PORT_START("P1") //Player 1
4708 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1)
4709 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1)
4710 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
4711 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
4712 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
4713 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
4714 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
4715 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
4716 
4717 	PORT_START("P2") //Player 2
4718 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
4719 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
4720 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
4721 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
4722 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
4723 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
4724 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
4725 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2  )
4726 
4727 	PORT_START("COINS") //Coins
4728 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
4729 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
4730 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
4731 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE )  // "test"
4732 	/* These are NOT Dip Switches but jumpers */
4733 	PORT_DIPNAME( 0x0030, 0x0030, "Country" )
4734 	PORT_DIPSETTING(      0x0030, DEF_STR( World ) )
4735 //  PORT_DIPSETTING(      0x0020, DEF_STR( World ) )    // duplicated settings
4736 	PORT_DIPSETTING(      0x0010, DEF_STR( USA ) )
4737 	PORT_DIPSETTING(      0x0000, DEF_STR( Japan ) )
4738 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unused ) )
4739 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
4740 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4741 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unused ) )
4742 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
4743 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4744 
4745 	PORT_START("DSW") //2 DSWs - $400009 & b.b
4746 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
4747 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
4748 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4749 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
4750 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
4751 	PORT_DIPSETTING(      0x0002, DEF_STR( On ) )
4752 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:3,4")
4753 	PORT_DIPSETTING(      0x0008, DEF_STR( Easy ) )
4754 	PORT_DIPSETTING(      0x000c, DEF_STR( Normal ) )
4755 	PORT_DIPSETTING(      0x0004, DEF_STR( Hard ) )
4756 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
4757 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW2:5")
4758 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
4759 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4760 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:6")
4761 	PORT_DIPSETTING(      0x0020, DEF_STR( Upright ) )
4762 	PORT_DIPSETTING(      0x0000, DEF_STR( Cocktail ) )
4763 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Controls ) ) PORT_DIPLOCATION("SW2:7")
4764 	PORT_DIPSETTING(      0x0040, "2" )
4765 	PORT_DIPSETTING(      0x0000, "1" )
4766 	PORT_SERVICE_DIPLOC(  0x0080, IP_ACTIVE_LOW, "SW2:8" )
4767 
4768 	PORT_DIPNAME( 0x0700, 0x0700, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3")
4769 	PORT_DIPSETTING(      0x0500, DEF_STR( 3C_1C ) )
4770 	PORT_DIPSETTING(      0x0600, DEF_STR( 2C_1C ) )
4771 	PORT_DIPSETTING(      0x0700, DEF_STR( 1C_1C ) )
4772 	PORT_DIPSETTING(      0x0400, DEF_STR( 1C_2C ) )
4773 	PORT_DIPSETTING(      0x0300, DEF_STR( 1C_3C ) )
4774 	PORT_DIPSETTING(      0x0200, DEF_STR( 1C_4C ) )
4775 	PORT_DIPSETTING(      0x0100, DEF_STR( 1C_5C ) )
4776 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
4777 	PORT_DIPNAME( 0x3800, 0x3800, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:4,5,6")
4778 	PORT_DIPSETTING(      0x2800, DEF_STR( 3C_1C ) )
4779 	PORT_DIPSETTING(      0x3000, DEF_STR( 2C_1C ) )
4780 	PORT_DIPSETTING(      0x3800, DEF_STR( 1C_1C ) )
4781 	PORT_DIPSETTING(      0x2000, DEF_STR( 1C_2C ) )
4782 	PORT_DIPSETTING(      0x1800, DEF_STR( 1C_3C ) )
4783 	PORT_DIPSETTING(      0x1000, DEF_STR( 1C_4C ) )
4784 	PORT_DIPSETTING(      0x0800, DEF_STR( 1C_5C ) )
4785 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
4786 	PORT_DIPNAME( 0x4000, 0x4000, "Continue Coin" ) PORT_DIPLOCATION("SW1:7")
4787 	PORT_DIPSETTING(      0x4000, "Normal: Start 1C / Continue 1C" )
4788 	PORT_DIPSETTING(      0x0000, "Half Continue: Start 2C / Continue 1C" )
4789 	PORT_DIPNAME( 0x8000, 0x8000, "Game Mode" ) PORT_DIPLOCATION("SW1:8")
4790 	PORT_DIPSETTING(      0x8000, "Finals Only" )
4791 	PORT_DIPSETTING(      0x0000, "Semi-Finals & Finals" )
4792 INPUT_PORTS_END
4793 
4794 
4795 
4796 /***************************************************************************
4797                                 Gundhara
4798 ***************************************************************************/
4799 
4800 static INPUT_PORTS_START( gundhara )
4801 	PORT_START("P1") //Player 1
4802 	JOY_TYPE1_3BUTTONS(1)
4803 
4804 	PORT_START("P2") //Player 2
4805 	JOY_TYPE1_3BUTTONS(2)
4806 
4807 	PORT_START("COINS") //Coins
4808 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
4809 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
4810 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
4811 	PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW )
4812 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
4813 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
4814 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
4815 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
4816 
4817 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
4818 	PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3,4")
4819 	PORT_DIPSETTING(      0x0002, DEF_STR( 4C_1C ) )
4820 	PORT_DIPSETTING(      0x0005, DEF_STR( 3C_1C ) )
4821 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
4822 	PORT_DIPSETTING(      0x0004, DEF_STR( 3C_2C ) )
4823 	PORT_DIPSETTING(      0x0001, DEF_STR( 4C_3C ) )
4824 	PORT_DIPSETTING(      0x000f, DEF_STR( 1C_1C ) )
4825 	PORT_DIPSETTING(      0x0003, DEF_STR( 3C_4C ) )
4826 	PORT_DIPSETTING(      0x0007, DEF_STR( 2C_3C ) )
4827 	PORT_DIPSETTING(      0x000e, DEF_STR( 1C_2C ) )
4828 	PORT_DIPSETTING(      0x0006, DEF_STR( 2C_5C ) )
4829 	PORT_DIPSETTING(      0x000d, DEF_STR( 1C_3C ) )
4830 	PORT_DIPSETTING(      0x000c, DEF_STR( 1C_4C ) )
4831 	PORT_DIPSETTING(      0x000b, DEF_STR( 1C_5C ) )
4832 	PORT_DIPSETTING(      0x000a, DEF_STR( 1C_6C ) )
4833 	PORT_DIPSETTING(      0x0009, DEF_STR( 1C_7C ) )
4834 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
4835 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:5,6")
4836 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
4837 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )
4838 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )
4839 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_2C ) )
4840 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Language ) ) PORT_DIPLOCATION("SW2:7,8") /* Yes, the manual shows it takes both switches */
4841 	PORT_DIPSETTING(      0x00c0, DEF_STR( Japanese ) )
4842 	PORT_DIPSETTING(      0x0000, DEF_STR( English ) )
4843 
4844 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:1,2")
4845 	PORT_DIPSETTING(      0x0200, DEF_STR( Easy ) )
4846 	PORT_DIPSETTING(      0x0300, DEF_STR( Normal ) )
4847 	PORT_DIPSETTING(      0x0100, DEF_STR( Hard ) )
4848 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
4849 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:3,4")
4850 	PORT_DIPSETTING(      0x0800, "2" )
4851 	PORT_DIPSETTING(      0x0c00, "3" )
4852 	PORT_DIPSETTING(      0x0400, "4" )
4853 	PORT_DIPSETTING(      0x0000, "5" )
4854 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:5,6")
4855 	PORT_DIPSETTING(      0x3000, "200K" )
4856 	PORT_DIPSETTING(      0x2000, "200K, Every 200K" )
4857 	PORT_DIPSETTING(      0x1000, "400K" )
4858 	PORT_DIPSETTING(      0x0000, DEF_STR( None ) )
4859 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
4860 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
4861 	PORT_DIPSETTING(      0x4000, DEF_STR( On ) )
4862 	PORT_SERVICE_DIPLOC(  0x8000, IP_ACTIVE_LOW, "SW1:8" )
4863 INPUT_PORTS_END
4864 
4865 /***************************************************************************
4866                                 Zombie Raid
4867 ***************************************************************************/
4868 
4869 static INPUT_PORTS_START( zombraid )
4870 	PORT_START("P1") //Player 1
4871 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
4872 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
4873 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
4874 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
4875 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)  PORT_NAME("P1 Trigger")
4876 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)  PORT_NAME("P1 Reload")
4877 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
4878 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
4879 
4880 	PORT_START("P2") //Player 2
4881 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
4882 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
4883 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
4884 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
4885 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)  PORT_NAME("P2 Trigger")
4886 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)  PORT_NAME("P2 Reload")
4887 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
4888 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2 )
4889 
4890 	PORT_START("COINS") //Coins
4891 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
4892 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
4893 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
4894 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
4895 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
4896 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
4897 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
4898 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
4899 
4900 	PORT_START("DSW")
4901 	PORT_DIPNAME( 0x0001, 0x0001, "Vertical Screen Flip" ) PORT_DIPLOCATION("SW2:1")
4902 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
4903 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
4904 	PORT_DIPNAME( 0x0002, 0x0000, "Horizontal Screen Flip" ) PORT_DIPLOCATION("SW2:2")
4905 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
4906 	PORT_DIPSETTING(      0x0002, DEF_STR( On ) )
4907 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:3")
4908 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
4909 	PORT_DIPSETTING(      0x0004, DEF_STR( On ) )
4910 	PORT_DIPNAME( 0x0018, 0x0018, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:4,5")
4911 	PORT_DIPSETTING(      0x0010, DEF_STR( Easy ) )
4912 	PORT_DIPSETTING(      0x0018, DEF_STR( Normal ) )
4913 	PORT_DIPSETTING(      0x0008, DEF_STR( Hard ) )
4914 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
4915 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:6")
4916 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
4917 	PORT_DIPSETTING(      0x0020, DEF_STR( On ) )
4918 	PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW2:7" ) /* Listed as "Unused" */
4919 	PORT_SERVICE_DIPLOC(  0x0080, IP_ACTIVE_LOW, "SW2:8" )
4920 
4921 	PORT_DIPNAME( 0x0700, 0x0700, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3")
4922 	PORT_DIPSETTING(      0x0500, DEF_STR( 3C_1C ) )
4923 	PORT_DIPSETTING(      0x0600, DEF_STR( 2C_1C ) )
4924 	PORT_DIPSETTING(      0x0700, DEF_STR( 1C_1C ) )
4925 	PORT_DIPSETTING(      0x0400, DEF_STR( 1C_2C ) )
4926 	PORT_DIPSETTING(      0x0300, DEF_STR( 1C_3C ) )
4927 	PORT_DIPSETTING(      0x0200, DEF_STR( 1C_4C ) )
4928 	PORT_DIPSETTING(      0x0100, DEF_STR( 1C_5C ) )
4929 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
4930 	PORT_DIPNAME( 0x3800, 0x3800, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:4,5,6")
4931 	PORT_DIPSETTING(      0x2800, DEF_STR( 3C_1C ) )
4932 	PORT_DIPSETTING(      0x3000, DEF_STR( 2C_1C ) )
4933 	PORT_DIPSETTING(      0x3800, DEF_STR( 1C_1C ) )
4934 	PORT_DIPSETTING(      0x2000, DEF_STR( 1C_2C ) )
4935 	PORT_DIPSETTING(      0x1800, DEF_STR( 1C_3C ) )
4936 	PORT_DIPSETTING(      0x1000, DEF_STR( 1C_4C ) )
4937 	PORT_DIPSETTING(      0x0800, DEF_STR( 1C_5C ) )
4938 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
4939 	PORT_DIPNAME( 0x4000, 0x4000, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW1:7")
4940 	PORT_DIPSETTING(      0x4000, DEF_STR( No ) )
4941 	PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
4942 	PORT_DIPUNUSED_DIPLOC( 0x8000, 0x8000, "SW1:8" ) /* Listed as "Unused" */
4943 
4944 	/* The gun calibration defaults to: left=0xc0, right=0x40, top=0x48, bottom=0xa8 */
4945 	/* The user calibrated values are lost each time MAME starts, so the gun always needs to be re-calibrated. */
4946 	/* Either NVRAM or battery backed up RAM is not emulated. */
4947 	/* For now it is best to just use a Save State after calibration to remember the setting. */
4948 	PORT_START("GUNX1")   /* Player 1 Gun X       ($f00003) */
4949 	PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, -1, 0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_REVERSE PORT_PLAYER(1)
4950 	PORT_START("GUNY1")   /* Player 1 Gun Y       ($f00003) */
4951 	PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y,  1, 0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_PLAYER(1)
4952 
4953 	PORT_START("GUNX2")   /* Player 2 Gun X       ($f00003) */
4954 	PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, -1, 0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_REVERSE PORT_PLAYER(2)
4955 	PORT_START("GUNY2")   /* Player 2 Gun Y       ($f00003) */
4956 	PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y,  1, 0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_PLAYER(2)
4957 INPUT_PORTS_END
4958 
4959 
4960 /***************************************************************************
4961                                 J.J.Squawkers
4962 ***************************************************************************/
4963 
4964 static INPUT_PORTS_START( jjsquawk )
4965 	PORT_START("P1") //Player 1 - $400000.w
4966 	JOY_TYPE1_3BUTTONS(1)
4967 
4968 	PORT_START("P2") //Player 2 - $400002.w
4969 	JOY_TYPE1_3BUTTONS(2)
4970 
4971 	PORT_START("COINS") //Coins - $400004.w
4972 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
4973 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
4974 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
4975 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
4976 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
4977 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
4978 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
4979 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
4980 
4981 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
4982 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3")
4983 	PORT_DIPSETTING(      0x0001, DEF_STR( 4C_1C ) )
4984 	PORT_DIPSETTING(      0x0002, DEF_STR( 3C_1C ) )
4985 	PORT_DIPSETTING(      0x0004, DEF_STR( 2C_1C ) )
4986 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
4987 	PORT_DIPSETTING(      0x0003, DEF_STR( 2C_3C ) )
4988 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
4989 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
4990 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
4991 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:4,5,6")
4992 	PORT_DIPSETTING(      0x0008, DEF_STR( 4C_1C ) )
4993 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_1C ) )
4994 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )
4995 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
4996 	PORT_DIPSETTING(      0x0018, DEF_STR( 2C_3C ) )
4997 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
4998 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
4999 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
5000 	PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:7")
5001 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
5002 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5003 	PORT_DIPNAME( 0x0080, 0x0080, "Unknown 2-8" ) PORT_DIPLOCATION("SW2:8") // ?? screen related
5004 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
5005 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5006 
5007 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
5008 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
5009 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5010 	PORT_SERVICE_DIPLOC(  0x0200, IP_ACTIVE_LOW, "SW1:2" )
5011 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
5012 	PORT_DIPSETTING(      0x0800, DEF_STR( Easy )    )
5013 	PORT_DIPSETTING(      0x0c00, DEF_STR( Normal )  )
5014 	PORT_DIPSETTING(      0x0400, DEF_STR( Hard )    )
5015 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
5016 	PORT_DIPNAME( 0x3000, 0x2000, "Energy" ) PORT_DIPLOCATION("SW1:5,6")
5017 	PORT_DIPSETTING(      0x2000, "2" ) // factory default
5018 	PORT_DIPSETTING(      0x3000, "3" )
5019 	PORT_DIPSETTING(      0x1000, "4" )
5020 	PORT_DIPSETTING(      0x0000, "5" )
5021 	PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:7,8")
5022 	PORT_DIPSETTING(      0x8000, "20K, Every 100K" )   //                          TYPO on manual "20000 200000"
5023 	PORT_DIPSETTING(      0xc000, "50K, Every 200K" )   // manufacturer setting //  TYPO on manual "50000 100000"
5024 	PORT_DIPSETTING(      0x4000, "70K, 200K Only" )
5025 	PORT_DIPSETTING(      0x0000, "100K Only" )
5026 INPUT_PORTS_END
5027 
5028 /***************************************************************************
5029                 (Kamen) Masked Riders Club Battle Race
5030 ***************************************************************************/
5031 
5032 static INPUT_PORTS_START( kamenrid )
5033 	PORT_START("P1") //Player 1
5034 	JOY_TYPE1_2BUTTONS(1)   // BUTTON3 in "test mode" only
5035 
5036 	PORT_START("P2") //Player 2
5037 	JOY_TYPE1_2BUTTONS(2)   // BUTTON3 in "test mode" only
5038 
5039 	PORT_START("COINS") //Coins
5040 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
5041 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
5042 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
5043 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT )
5044 	/* These are NOT Dip Switches but jumpers */
5045 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unused ) )
5046 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
5047 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5048 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unused ) )
5049 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
5050 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5051 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unused ) )
5052 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
5053 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5054 	PORT_DIPNAME( 0x0080, 0x0080, "Country" )
5055 	PORT_DIPSETTING(      0x0080, DEF_STR( USA ) )
5056 	PORT_DIPSETTING(      0x0000, DEF_STR( Japan ) )
5057 
5058 	PORT_START("DSW")   // IN3 - 2 DSWs - $500005 & 7.b
5059 	PORT_SERVICE_DIPLOC(  0x0001, IP_ACTIVE_LOW , "SW2:8" )
5060 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unused ) )   PORT_DIPLOCATION("SW2:7")
5061 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
5062 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5063 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unused ) )   PORT_DIPLOCATION("SW2:6")   // Manual states "Unused", but masked at 0x001682
5064 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
5065 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5066 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unused ) )   PORT_DIPLOCATION("SW2:5")
5067 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
5068 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5069 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unused ) )   PORT_DIPLOCATION("SW2:4")   // Manual states "Unused", but masked at 0x001682
5070 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
5071 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )                       // (displays debug infos)
5072 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unused ) )   PORT_DIPLOCATION("SW2:3")   // Manual states "Unused", but masked at 0x001682
5073 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
5074 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )                       // (unknown effect at 0x00606a, 0x0060de, 0x00650a)
5075 	PORT_DIPNAME( 0x0040, 0x0040, "Intro Music" )       PORT_DIPLOCATION("SW2:2")   // check code at 0x001792
5076 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
5077 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
5078 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) )  PORT_DIPLOCATION("SW2:1")
5079 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
5080 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5081 	PORT_DIPNAME( 0x0f00, 0x0f00, DEF_STR( Coinage ) )  PORT_DIPLOCATION("SW1:8,7,6,5")
5082 	PORT_DIPSETTING(      0x0500, DEF_STR( 6C_1C ) )
5083 	PORT_DIPSETTING(      0x0d00, DEF_STR( 5C_1C ) )
5084 	PORT_DIPSETTING(      0x0300, DEF_STR( 4C_1C ) )
5085 	PORT_DIPSETTING(      0x0b00, DEF_STR( 3C_1C ) )
5086 	PORT_DIPSETTING(      0x0800, DEF_STR( 8C_3C ) )
5087 	PORT_DIPSETTING(      0x0700, DEF_STR( 2C_1C ) )
5088 	PORT_DIPSETTING(      0x0400, DEF_STR( 5C_3C ) )
5089 	PORT_DIPSETTING(      0x0c00, DEF_STR( 3C_2C ) )
5090 	PORT_DIPSETTING(      0x0f00, DEF_STR( 1C_1C ) )
5091 	PORT_DIPSETTING(      0x0200, DEF_STR( 2C_3C ) )
5092 	PORT_DIPSETTING(      0x0900, DEF_STR( 1C_2C ) )
5093 	PORT_DIPSETTING(      0x0100, DEF_STR( 1C_3C ) )
5094 	PORT_DIPSETTING(      0x0e00, DEF_STR( 1C_4C ) )
5095 	PORT_DIPSETTING(      0x0600, DEF_STR( 1C_5C ) )
5096 	PORT_DIPSETTING(      0x0a00, DEF_STR( 1C_6C ) )
5097 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
5098 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW1:4,3")
5099 	PORT_DIPSETTING(      0x1000, DEF_STR( Easy ) )
5100 	PORT_DIPSETTING(      0x3000, DEF_STR( Normal ) )
5101 	PORT_DIPSETTING(      0x2000, DEF_STR( Hard ) )
5102 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
5103 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unused ) )   PORT_DIPLOCATION("SW1:2")
5104 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
5105 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5106 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unused ) )   PORT_DIPLOCATION("SW1:1")
5107 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
5108 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5109 INPUT_PORTS_END
5110 
5111 /***************************************************************************
5112                                 Krazy Bowl
5113 ***************************************************************************/
5114 
5115 #define KRZYBOWL_TRACKBALL(_dir_, _n_ ) \
5116 	PORT_BIT( 0x0fff, 0x0000, IPT_TRACKBALL_##_dir_ ) PORT_PLAYER(_n_) PORT_SENSITIVITY(70) PORT_KEYDELTA(30) PORT_REVERSE PORT_RESET
5117 
5118 static INPUT_PORTS_START( krzybowl )
5119 	PORT_START("P1") //Player 1
5120 	JOY_TYPE1_3BUTTONS(1)
5121 
5122 	PORT_START("P2") //Player 2
5123 	JOY_TYPE1_3BUTTONS(2)
5124 
5125 	PORT_START("COINS") //Coins
5126 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
5127 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
5128 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_IMPULSE(5)
5129 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
5130 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
5131 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
5132 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
5133 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
5134 
5135 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
5136 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
5137 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
5138 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5139 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:2")
5140 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
5141 	PORT_DIPSETTING(      0x0002, DEF_STR( On ) )
5142 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
5143 	PORT_DIPSETTING(      0x0008, DEF_STR( Easy ) )
5144 	PORT_DIPSETTING(      0x000c, DEF_STR( Normal ) )
5145 	PORT_DIPSETTING(      0x0004, DEF_STR( Hard ) )
5146 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
5147 	PORT_DIPNAME( 0x0010, 0x0010, "Frames" ) PORT_DIPLOCATION("SW1:5")
5148 	PORT_DIPSETTING(      0x0010, "10" )
5149 	PORT_DIPSETTING(      0x0000, "5" )
5150 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:6")
5151 	PORT_DIPSETTING(      0x0020, DEF_STR( Upright ) )
5152 	PORT_DIPSETTING(      0x0000, DEF_STR( Cocktail ) )
5153 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Controls ) ) PORT_DIPLOCATION("SW1:7")
5154 	PORT_DIPSETTING(      0x0040, DEF_STR( Trackball ) )
5155 	PORT_DIPSETTING(      0x0000, DEF_STR( Joystick ) )
5156 	PORT_SERVICE_DIPLOC(  0x0080, IP_ACTIVE_LOW, "SW1:8" )
5157 
5158 	PORT_DIPNAME( 0x0700, 0x0700, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3")
5159 	PORT_DIPSETTING(      0x0500, DEF_STR( 3C_1C ) )
5160 	PORT_DIPSETTING(      0x0600, DEF_STR( 2C_1C ) )
5161 	PORT_DIPSETTING(      0x0700, DEF_STR( 1C_1C ) )
5162 	PORT_DIPSETTING(      0x0400, DEF_STR( 1C_2C ) )
5163 	PORT_DIPSETTING(      0x0300, DEF_STR( 1C_3C ) )
5164 	PORT_DIPSETTING(      0x0200, DEF_STR( 1C_4C ) )
5165 	PORT_DIPSETTING(      0x0100, DEF_STR( 1C_5C ) )
5166 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
5167 	PORT_DIPNAME( 0x3800, 0x3800, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:4,5,6")
5168 	PORT_DIPSETTING(      0x2800, DEF_STR( 3C_1C ) )
5169 	PORT_DIPSETTING(      0x3000, DEF_STR( 2C_1C ) )
5170 	PORT_DIPSETTING(      0x3800, DEF_STR( 1C_1C ) )
5171 	PORT_DIPSETTING(      0x2000, DEF_STR( 1C_2C ) )
5172 	PORT_DIPSETTING(      0x1800, DEF_STR( 1C_3C ) )
5173 	PORT_DIPSETTING(      0x1000, DEF_STR( 1C_4C ) )
5174 	PORT_DIPSETTING(      0x0800, DEF_STR( 1C_5C ) )
5175 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
5176 	PORT_DIPNAME( 0x4000, 0x4000, "Force Coinage" ) PORT_DIPLOCATION("SW2:7")
5177 	PORT_DIPSETTING(      0x4000, DEF_STR( No ) )
5178 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_1C ) )
5179 	PORT_DIPNAME( 0x8000, 0x8000, "Unknown 2-8" ) PORT_DIPLOCATION("SW2:8")
5180 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
5181 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5182 
5183 	PORT_START("TRACK1_X") //Rotation X Player 1
5184 	KRZYBOWL_TRACKBALL(X,1)
5185 
5186 	PORT_START("TRACK1_Y") //Rotation Y Player 1
5187 	KRZYBOWL_TRACKBALL(Y,1)
5188 
5189 	PORT_START("TRACK2_X") //Rotation X Player 2
5190 	KRZYBOWL_TRACKBALL(X,2) PORT_REVERSE
5191 
5192 	PORT_START("TRACK2_Y") //Rotation Y Player 2
5193 	KRZYBOWL_TRACKBALL(Y,2)
5194 INPUT_PORTS_END
5195 
5196 
5197 /***************************************************************************
5198                                 Mad Shark
5199 ***************************************************************************/
5200 
5201 static INPUT_PORTS_START( madshark )
5202 	PORT_START("P1") //Player 1
5203 	JOY_TYPE1_2BUTTONS(1)   // BUTTON3 in "test mode" only
5204 
5205 	PORT_START("P2") //Player 2
5206 	JOY_TYPE1_2BUTTONS(2)   // BUTTON3 in "test mode" only
5207 
5208 	PORT_START("COINS") //Coins
5209 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
5210 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
5211 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
5212 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT )
5213 	// Soldered Jumpers on board
5214 	PORT_CONFNAME( 0x0010, 0x0010, DEF_STR( Unused ) )
5215 	PORT_CONFSETTING(      0x0010, DEF_STR( Off ) )
5216 	PORT_CONFSETTING(      0x0000, DEF_STR( On ) )
5217 	PORT_CONFNAME( 0x0020, 0x0020, DEF_STR( Unused ) )
5218 	PORT_CONFSETTING(      0x0020, DEF_STR( Off ) )
5219 	PORT_CONFSETTING(      0x0000, DEF_STR( On ) )
5220 	PORT_CONFNAME( 0x0040, 0x0040, DEF_STR( Unused ) )
5221 	PORT_CONFSETTING(      0x0040, DEF_STR( Off ) )
5222 	PORT_CONFSETTING(      0x0000, DEF_STR( On ) )
5223 	// TODO: pinpoint for what market is the Chinese title for
5224 	// (Is our current romset even suited for this setting to properly work? It still says Mad Shark during attract)
5225 	PORT_CONFNAME( 0x0080, 0x0000, "Title Language" )       // Changes title graphics only
5226 	PORT_CONFSETTING(      0x0000, "English" )              // Mad Shark - title used in most of the world, including Japan
5227 	PORT_CONFSETTING(      0x0080, "Traditional Chinese" )  // 最強鮫 - presumably for Taiwan (Zuìqiáng Jiāo) or Hong Kong (Zeoi Koeng Gaau)
5228 
5229 	PORT_START("DSW") //2 DSWs
5230 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
5231 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
5232 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5233 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
5234 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
5235 	PORT_DIPSETTING(      0x0002, DEF_STR( On ) )
5236 	PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW2:3" )
5237 	PORT_DIPNAME( 0x0018, 0x0018, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:4,5")
5238 	PORT_DIPSETTING(      0x0018, "1000k" )
5239 	PORT_DIPSETTING(      0x0008, "1000k 2000k" )
5240 	PORT_DIPSETTING(      0x0010, "1500k 3000k" )
5241 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
5242 	PORT_DIPNAME( 0x0060, 0x0060, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:6,7")
5243 	PORT_DIPSETTING(      0x0040, DEF_STR( Easy ) )
5244 	PORT_DIPSETTING(      0x0060, DEF_STR( Normal ) )
5245 	PORT_DIPSETTING(      0x0020, DEF_STR( Hard ) )
5246 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
5247 	PORT_SERVICE_DIPLOC(  0x0080, IP_ACTIVE_LOW, "SW2:8" )
5248 
5249 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
5250 	PORT_DIPSETTING(      0x0200, "2" )
5251 	PORT_DIPSETTING(      0x0300, "3" )
5252 	PORT_DIPSETTING(      0x0100, "4" )
5253 	PORT_DIPSETTING(      0x0000, "5" )
5254 	PORT_DIPNAME( 0x1c00, 0x1c00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:3,4,5")
5255 	PORT_DIPSETTING(      0x0400, DEF_STR( 4C_1C ) )
5256 	PORT_DIPSETTING(      0x0800, DEF_STR( 3C_1C ) )
5257 	PORT_DIPSETTING(      0x1000, DEF_STR( 2C_1C ) )
5258 	PORT_DIPSETTING(      0x1c00, DEF_STR( 1C_1C ) )
5259 	PORT_DIPSETTING(      0x0c00, DEF_STR( 2C_3C ) )
5260 	PORT_DIPSETTING(      0x1800, DEF_STR( 1C_2C ) )
5261 	PORT_DIPSETTING(      0x1400, DEF_STR( 1C_3C ) )
5262 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_4C ) )
5263 	PORT_DIPNAME( 0xe000, 0xe000, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:6,7,8")
5264 	PORT_DIPSETTING(      0x2000, DEF_STR( 4C_1C ) )
5265 	PORT_DIPSETTING(      0x4000, DEF_STR( 3C_1C ) )
5266 	PORT_DIPSETTING(      0x8000, DEF_STR( 2C_1C ) )
5267 	PORT_DIPSETTING(      0xe000, DEF_STR( 1C_1C ) )
5268 	PORT_DIPSETTING(      0x6000, DEF_STR( 2C_3C ) )
5269 	PORT_DIPSETTING(      0xc000, DEF_STR( 1C_2C ) )
5270 	PORT_DIPSETTING(      0xa000, DEF_STR( 1C_3C ) )
5271 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_4C ) )
5272 INPUT_PORTS_END
5273 
5274 
5275 /***************************************************************************
5276                                 Magical Speed
5277 ***************************************************************************/
5278 
5279 static INPUT_PORTS_START( magspeed )
5280 	PORT_START("P1") // Player 1
5281 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Card 1") PORT_CODE(KEYCODE_Z)
5282 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Card 2") PORT_CODE(KEYCODE_X)
5283 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Card 3") PORT_CODE(KEYCODE_C)
5284 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Card 4") PORT_CODE(KEYCODE_V)
5285 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
5286 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
5287 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
5288 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1  )
5289 
5290 	PORT_START("P2") // Player 2
5291 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Card 1") PORT_CODE(KEYCODE_D)
5292 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Card 2") PORT_CODE(KEYCODE_F)
5293 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Card 3") PORT_CODE(KEYCODE_G)
5294 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Card 4") PORT_CODE(KEYCODE_H)
5295 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
5296 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
5297 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
5298 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2  )
5299 
5300 	PORT_START("COINS") // Coins
5301 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
5302 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
5303 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
5304 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT     )
5305 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5306 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5307 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5308 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5309 
5310 	PORT_START("DSW")   // 2 DSWs - $500009 & B.b
5311 	PORT_SERVICE_DIPLOC(  0x0001, IP_ACTIVE_LOW, "SW2:8" )
5312 	PORT_DIPUNUSED_DIPLOC( 0x0002, 0x0002, "SW2:7" ) /* Listed as Unused in the manual */
5313 	PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW2:6" ) /* Listed as Unused in the manual */
5314 	PORT_DIPUNUSED_DIPLOC( 0x0008, 0x0008, "SW2:5" ) /* Listed as Unused in the manual */
5315 	PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "SW2:4" ) /* Listed as Unused in the manual */
5316 	PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW2:3" ) /* Listed as Unused in the manual */
5317 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
5318 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
5319 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
5320 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
5321 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
5322 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5323 	PORT_DIPNAME( 0x0f00, 0x0f00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:8,7,6,5")
5324 	PORT_DIPSETTING(      0x0500, DEF_STR( 6C_1C ) )
5325 	PORT_DIPSETTING(      0x0d00, DEF_STR( 5C_1C ) )
5326 	PORT_DIPSETTING(      0x0300, DEF_STR( 4C_1C ) )
5327 	PORT_DIPSETTING(      0x0b00, DEF_STR( 3C_1C ) )
5328 	PORT_DIPSETTING(      0x0800, DEF_STR( 8C_3C ) )
5329 	PORT_DIPSETTING(      0x0700, DEF_STR( 2C_1C ) )
5330 	PORT_DIPSETTING(      0x0400, DEF_STR( 5C_3C ) )
5331 	PORT_DIPSETTING(      0x0c00, DEF_STR( 3C_2C ) )
5332 	PORT_DIPSETTING(      0x0f00, DEF_STR( 1C_1C ) )
5333 	PORT_DIPSETTING(      0x0200, DEF_STR( 2C_3C ) )
5334 	PORT_DIPSETTING(      0x0900, DEF_STR( 1C_2C ) )
5335 	PORT_DIPSETTING(      0x0100, DEF_STR( 1C_3C ) )
5336 	PORT_DIPSETTING(      0x0e00, DEF_STR( 1C_4C ) )
5337 	PORT_DIPSETTING(      0x0600, DEF_STR( 1C_5C ) )
5338 	PORT_DIPSETTING(      0x0a00, DEF_STR( 1C_6C ) )
5339 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
5340 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:4,3")
5341 	PORT_DIPSETTING(      0x1000, DEF_STR( Easy ) )
5342 	PORT_DIPSETTING(      0x3000, DEF_STR( Normal ) )
5343 	PORT_DIPSETTING(      0x2000, DEF_STR( Hard ) )
5344 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
5345 	PORT_DIPNAME( 0xc000, 0xc000, "Number of Rounds" ) PORT_DIPLOCATION("SW1:2,1")
5346 	PORT_DIPSETTING(      0x4000, "1" )
5347 	PORT_DIPSETTING(      0xc000, "2" )
5348 	PORT_DIPSETTING(      0x8000, DEF_STR( Unused ) ) /* Undefined in the manual */
5349 	PORT_DIPSETTING(      0x0000, DEF_STR( Unused ) ) /* Undefined in the manual */
5350 INPUT_PORTS_END
5351 
5352 
5353 /***************************************************************************
5354                                 Meta Fox
5355 ***************************************************************************/
5356 
5357 static INPUT_PORTS_START( metafox )
5358 	PORT_START("P1") //Player 1
5359 	JOY_TYPE2_2BUTTONS(1)
5360 
5361 	PORT_START("P2") //Player 2
5362 	JOY_TYPE2_2BUTTONS(2)
5363 
5364 	PORT_START("COINS") //Coins
5365 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5366 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5367 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5368 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5369 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_TILT     )
5370 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SERVICE1 )
5371 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
5372 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
5373 
5374 	PORT_START("DSW") //$600001 & 3.b
5375 	PORT_DIPNAME( 0x0001, 0x0001, "Copyright / License" )   PORT_DIPLOCATION("SW1:1") /* Romstar's Manual states "Don't Touch" */
5376 	PORT_DIPSETTING(      0x0000, "Seta USA / Taito America" )  PORT_CONDITION("DSW",0x4000,NOTEQUALS,0x4000)
5377 	PORT_DIPSETTING(      0x0001, "Seta / Jordan I.S." )        PORT_CONDITION("DSW",0x4000,NOTEQUALS,0x4000)
5378 	PORT_DIPSETTING(      0x0000, "Seta / Taito" )          PORT_CONDITION("DSW",0x4000,EQUALS,0x4000)
5379 	PORT_DIPSETTING(      0x0001, "Seta USA / Romstar" )        PORT_CONDITION("DSW",0x4000,EQUALS,0x4000) /* Romstar's Manual shows DSW1-1=Off & DSW2-7=Off */
5380 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) )  PORT_DIPLOCATION("SW1:2")
5381 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
5382 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5383 	PORT_SERVICE_DIPLOC(  0x0004, IP_ACTIVE_LOW, "SW1:3" )
5384 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) )  PORT_DIPLOCATION("SW1:4")
5385 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
5386 	PORT_DIPSETTING(      0x0008, DEF_STR( On ) )
5387 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) )   PORT_DIPLOCATION("SW1:5,6")
5388 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
5389 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
5390 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
5391 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_2C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
5392 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
5393 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
5394 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
5395 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
5396 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) )   PORT_DIPLOCATION("SW1:7,8")
5397 	PORT_DIPSETTING(      0x0040, DEF_STR( 2C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
5398 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
5399 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
5400 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_2C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
5401 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_2C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
5402 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_3C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
5403 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_4C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
5404 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
5405 	PORT_DIPNAME( 0x0300, 0x0100, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW2:1,2")
5406 	PORT_DIPSETTING(      0x0300, DEF_STR( Normal )  )
5407 	PORT_DIPSETTING(      0x0200, DEF_STR( Easy )    )
5408 	PORT_DIPSETTING(      0x0100, DEF_STR( Hard )    )
5409 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
5410 	PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:3,4")
5411 	PORT_DIPSETTING(      0x0c00, DEF_STR( None ) )
5412 	PORT_DIPSETTING(      0x0800, "600K Only" )
5413 	PORT_DIPSETTING(      0x0000, "600k & 900k" )
5414 	PORT_DIPSETTING(      0x0400, "900K Only" )
5415 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Lives ) )    PORT_DIPLOCATION("SW2:5,6")
5416 	PORT_DIPSETTING(      0x1000, "1" )
5417 	PORT_DIPSETTING(      0x0000, "2" )
5418 	PORT_DIPSETTING(      0x3000, "3" )
5419 	PORT_DIPSETTING(      0x2000, "5" )
5420 	PORT_DIPNAME( 0x4000, 0x4000, "Licensor Option" )   PORT_DIPLOCATION("SW2:7") /* Romstar's Manual states "Don't Touch" */
5421 	PORT_DIPSETTING(      0x4000, "Option 1" )
5422 	PORT_DIPSETTING(      0x0000, "Option 2" )
5423 	PORT_DIPNAME( 0x8000, 0x8000, "Coinage Type" )      PORT_DIPLOCATION("SW2:8") /* Romstar's Manual states "Don't Touch" */
5424 	PORT_DIPSETTING(      0x8000, "Coin Mode 1" )
5425 	PORT_DIPSETTING(      0x0000, "Coin Mode 2" )
5426 INPUT_PORTS_END
5427 
5428 
5429 
5430 /***************************************************************************
5431                             Mobile Suit Gundam
5432 ***************************************************************************/
5433 
5434 
5435 static INPUT_PORTS_START( msgundam )
5436 	PORT_START("P1") //Player 1 - $400000.w
5437 	JOY_TYPE1_2BUTTONS(1)
5438 
5439 	PORT_START("P2") //Player 2 - $400002.w
5440 	JOY_TYPE1_2BUTTONS(2)
5441 
5442 	PORT_START("COINS") //Coins - $400004.w
5443 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
5444 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
5445 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
5446 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT     )
5447 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5448 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5449 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5450 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Language ) )
5451 	PORT_DIPSETTING(      0x0080, DEF_STR( English ) )
5452 	PORT_DIPSETTING(      0x0000, DEF_STR( Japanese ) )
5453 
5454 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
5455 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3")
5456 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
5457 	PORT_DIPSETTING(      0x0001, DEF_STR( 3C_1C ) )
5458 	PORT_DIPSETTING(      0x0002, DEF_STR( 2C_1C ) )
5459 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
5460 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
5461 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
5462 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_4C ) )
5463 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_5C ) )
5464 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:4,5,6")
5465 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
5466 	PORT_DIPSETTING(      0x0008, DEF_STR( 3C_1C ) )
5467 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )
5468 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
5469 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
5470 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
5471 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_4C ) )
5472 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_5C ) )
5473 	PORT_DIPNAME( 0x0040, 0x0040, "Unknown 2-7" ) PORT_DIPLOCATION("SW2:7")
5474 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
5475 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5476 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW2:8")
5477 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
5478 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5479 
5480 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
5481 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
5482 	PORT_DIPSETTING(      0x0100, DEF_STR( On ) )
5483 	PORT_DIPNAME( 0x0600, 0x0600, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:2,3")   // unverified, from the manual
5484 	PORT_DIPSETTING(      0x0400, DEF_STR( Easy ) )
5485 	PORT_DIPSETTING(      0x0600, DEF_STR( Normal ) )
5486 	PORT_DIPSETTING(      0x0200, DEF_STR( Hard ) )
5487 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
5488 	PORT_DIPNAME( 0x0800, 0x0800, "Unknown 1-4" ) PORT_DIPLOCATION("SW1:4")
5489 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
5490 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5491 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:5")
5492 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
5493 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5494 	PORT_DIPNAME( 0x2000, 0x2000, "Memory Check" ) PORT_DIPLOCATION("SW1:6")
5495 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
5496 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5497 	PORT_DIPNAME( 0x4000, 0x4000, "Unknown 1-7" ) PORT_DIPLOCATION("SW1:7")
5498 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
5499 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5500 	PORT_SERVICE_DIPLOC(  0x8000, IP_ACTIVE_LOW, "SW1:8" )
5501 INPUT_PORTS_END
5502 
5503 static INPUT_PORTS_START( msgundam1 )
5504 	PORT_INCLUDE(msgundam)
5505 
5506 	PORT_MODIFY("COINS") // IN2 - Coins - $400004.w
5507 	/* this set seems to be a Japan set, English mode doesn't work correctly */
5508 	PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Language ) )
5509 //  PORT_DIPSETTING(      0x0080, DEF_STR( English ) )
5510 	PORT_DIPSETTING(      0x0000, DEF_STR( Japanese ) )
5511 INPUT_PORTS_END
5512 
5513 
5514 /***************************************************************************
5515                             Oishii Puzzle
5516 ***************************************************************************/
5517 
5518 static INPUT_PORTS_START( oisipuzl )
5519 	PORT_START("P1") //Player 1
5520 	JOY_TYPE1_2BUTTONS(1)
5521 
5522 	PORT_START("P2") //Player 2
5523 	JOY_TYPE1_2BUTTONS(2)
5524 
5525 	PORT_START("COINS") //Coins
5526 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
5527 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
5528 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
5529 	PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW )
5530 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
5531 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
5532 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
5533 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
5534 
5535 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
5536 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
5537 	PORT_DIPSETTING(      0x0002, DEF_STR( Easy ) )
5538 	PORT_DIPSETTING(      0x0003, DEF_STR( Normal ) )
5539 	PORT_DIPSETTING(      0x0001, DEF_STR( Hard ) )
5540 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
5541 	PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:3")
5542 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
5543 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5544 	PORT_DIPUNUSED_DIPLOC( 0x0008, 0x0008, "SW2:4" ) /* Manual States dips 4-7 are unused */
5545 	PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "SW2:5" ) /* Listed as "Unused" */
5546 	PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW2:6" ) /* Listed as "Unused" */
5547 	PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW2:7" ) /* Listed as "Unused" */
5548 	PORT_SERVICE_DIPLOC(  0x0080, IP_ACTIVE_LOW, "SW2:8" )
5549 
5550 	PORT_DIPNAME( 0x0700, 0x0700, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3")
5551 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) )
5552 	PORT_DIPSETTING(      0x0100, DEF_STR( 4C_1C ) )
5553 	PORT_DIPSETTING(      0x0200, DEF_STR( 3C_1C ) )
5554 	PORT_DIPSETTING(      0x0300, DEF_STR( 2C_1C ) )
5555 	PORT_DIPSETTING(      0x0700, DEF_STR( 1C_1C ) )
5556 	PORT_DIPSETTING(      0x0600, DEF_STR( 1C_2C ) )
5557 	PORT_DIPSETTING(      0x0500, DEF_STR( 1C_3C ) )
5558 	PORT_DIPSETTING(      0x0400, DEF_STR( 1C_4C ) )
5559 	PORT_DIPNAME( 0x3800, 0x3800, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:4,5,6")
5560 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) )
5561 	PORT_DIPSETTING(      0x0800, DEF_STR( 4C_1C ) )
5562 	PORT_DIPSETTING(      0x1000, DEF_STR( 3C_1C ) )
5563 	PORT_DIPSETTING(      0x1800, DEF_STR( 2C_1C ) )
5564 	PORT_DIPSETTING(      0x3800, DEF_STR( 1C_1C ) )
5565 	PORT_DIPSETTING(      0x3000, DEF_STR( 1C_2C ) )
5566 	PORT_DIPSETTING(      0x2800, DEF_STR( 1C_3C ) )
5567 	PORT_DIPSETTING(      0x2000, DEF_STR( 1C_4C ) )
5568 	PORT_DIPUNUSED_DIPLOC( 0x4000, 0x4000, "SW1:7" ) /* Listed as "Unused" */
5569 	PORT_DIPUNUSED_DIPLOC( 0x8000, 0x8000, "SW1:8" ) /* Listed as "Unused" */
5570 INPUT_PORTS_END
5571 
5572 
5573 
5574 /***************************************************************************
5575                             Pro Mahjong Kiwame
5576 ***************************************************************************/
5577 
5578 static INPUT_PORTS_START( kiwame )
5579 	PORT_START("P1") //Unused
5580 	PORT_START("P2") //Unused
5581 
5582 	PORT_START("COINS") //Coins
5583 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
5584 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
5585 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_IMPULSE(5)
5586 
5587 	PORT_START("DSW") //2 DSWs - $e00001 & 3.b
5588 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3")
5589 	PORT_DIPSETTING(      0x0001, DEF_STR( 4C_1C ) )
5590 	PORT_DIPSETTING(      0x0002, DEF_STR( 3C_1C ) )
5591 	PORT_DIPSETTING(      0x0004, DEF_STR( 2C_1C ) )
5592 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
5593 	PORT_DIPSETTING(      0x0003, DEF_STR( 2C_3C ) )
5594 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
5595 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
5596 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
5597 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:4,5,6")
5598 	PORT_DIPSETTING(      0x0008, DEF_STR( 4C_1C ) )
5599 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_1C ) )
5600 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )
5601 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
5602 	PORT_DIPSETTING(      0x0018, DEF_STR( 2C_3C ) )
5603 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
5604 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
5605 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
5606 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:7")
5607 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
5608 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
5609 	PORT_DIPNAME( 0x0080, 0x0080, "Player's TSUMO" ) PORT_DIPLOCATION("SW2:8")
5610 	PORT_DIPSETTING(      0x0080, "Manual" )
5611 	PORT_DIPSETTING(      0x0000, "Auto"   )
5612 
5613 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
5614 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
5615 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5616 	PORT_SERVICE_DIPLOC(  0x0200, IP_ACTIVE_LOW, "SW1:2" )
5617 	PORT_DIPNAME( 0x1c00, 0x1c00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4,5")
5618 	PORT_DIPSETTING(      0x1c00, DEF_STR( None ) )
5619 	PORT_DIPSETTING(      0x1800, "Prelim  1" )
5620 	PORT_DIPSETTING(      0x1400, "Prelim  2" )
5621 	PORT_DIPSETTING(      0x1000, "Final   1" )
5622 	PORT_DIPSETTING(      0x0c00, "Final   2" )
5623 	PORT_DIPSETTING(      0x0800, "Final   3" )
5624 	PORT_DIPSETTING(      0x0400, "Qrt Final" )
5625 	PORT_DIPSETTING(      0x0000, "SemiFinal" )
5626 	PORT_DIPNAME( 0xe000, 0xe000, "Points Gap" ) PORT_DIPLOCATION("SW1:6,7,8")
5627 	PORT_DIPSETTING(      0xe000, DEF_STR( None ) )
5628 	PORT_DIPSETTING(      0xc000, "+6000" )
5629 	PORT_DIPSETTING(      0xa000, "+4000" )
5630 	PORT_DIPSETTING(      0x8000, "+2000" )
5631 	PORT_DIPSETTING(      0x6000, "-2000" )
5632 	PORT_DIPSETTING(      0x4000, "-4000" )
5633 	PORT_DIPSETTING(      0x2000, "-6000" )
5634 	PORT_DIPSETTING(      0x0000, "-8000" )
5635 
5636 /*
5637         row 0   1   2   3   4
5638 bit 0       a   b   c   d   lc
5639     1       e   f   g   h
5640     2       i   j   k   l
5641     3       m   n   ch  po  ff
5642     4       ka  re  ro
5643     5       st  bt
5644 */
5645 
5646 	PORT_START("KEY0")
5647 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE )
5648 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
5649 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
5650 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP )
5651 	PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
5652 
5653 	PORT_START("KEY1")
5654 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_B )
5655 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_F )
5656 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_J )
5657 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_N )
5658 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
5659 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
5660 	PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
5661 
5662 	PORT_START("KEY2")
5663 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_A )
5664 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_E )
5665 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_I )
5666 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_M )
5667 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
5668 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START1  )
5669 	PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
5670 
5671 	PORT_START("KEY3")
5672 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_C )
5673 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_G )
5674 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_K )
5675 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
5676 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
5677 	PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
5678 
5679 	PORT_START("KEY4")
5680 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_D )
5681 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_H )
5682 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_L )
5683 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
5684 	PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
5685 
5686 	PORT_START("KEY5")
5687 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2)
5688 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
5689 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
5690 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2)
5691 	PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
5692 
5693 	PORT_START("KEY6")
5694 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2)
5695 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2)
5696 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2)
5697 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2)
5698 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2)
5699 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2)
5700 	PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
5701 
5702 	PORT_START("KEY7")
5703 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2)
5704 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2)
5705 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2)
5706 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2)
5707 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2)
5708 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START2  )
5709 	PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
5710 
5711 	PORT_START("KEY8")
5712 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2)
5713 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2)
5714 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2)
5715 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2)
5716 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2)
5717 	PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
5718 
5719 	PORT_START("KEY9")
5720 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2)
5721 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2)
5722 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2)
5723 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2)
5724 	PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
5725 INPUT_PORTS_END
5726 
5727 
5728 
5729 /***************************************************************************
5730                                 Quiz Kokology
5731 ***************************************************************************/
5732 
5733 static INPUT_PORTS_START( qzkklogy )
5734 	PORT_START("P1") //Player 1 - $b00001.b
5735 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
5736 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
5737 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
5738 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
5739 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON5 )  PORT_PLAYER(1) PORT_NAME("P1 Pause (Cheat)")// pause (cheat)
5740 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
5741 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
5742 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1  )
5743 
5744 	PORT_START("P2") //Player 2 - $b00003.b
5745 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
5746 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
5747 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
5748 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
5749 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON5 )  PORT_PLAYER(2) PORT_NAME("P2 Pause (Cheat)")// pause (cheat)
5750 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
5751 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
5752 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2  )
5753 
5754 	PORT_START("COINS") //Coins - $b00005.b
5755 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
5756 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
5757 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
5758 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5759 
5760 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
5761 	PORT_DIPNAME( 0x0003, 0x0003, "DS2-1&2*" )      PORT_DIPLOCATION("SW2:1,2") /* Manual States dips 1-5 are unused */
5762 	PORT_DIPSETTING(      0x0000, "0" )
5763 	PORT_DIPSETTING(      0x0001, "1" )
5764 	PORT_DIPSETTING(      0x0002, "2" )
5765 	PORT_DIPSETTING(      0x0003, "3" )
5766 	PORT_DIPNAME( 0x0004, 0x0004, "Highlight Right Answer (Cheat)") PORT_DIPLOCATION("SW2:3")
5767 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
5768 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5769 	PORT_DIPNAME( 0x0008, 0x0008, "DSW2-4" )            PORT_DIPLOCATION("SW2:4")
5770 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
5771 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5772 	PORT_DIPNAME( 0x0010, 0x0010, "DSW2-5" )            PORT_DIPLOCATION("SW2:5")
5773 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
5774 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5775 	PORT_SERVICE_DIPLOC(  0x0020, IP_ACTIVE_LOW, "SW2:6" )
5776 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("SW2:7")
5777 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
5778 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
5779 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) )      PORT_DIPLOCATION("SW2:8")
5780 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
5781 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5782 
5783 	PORT_DIPNAME( 0x0700, 0x0700, DEF_STR( Coin_A ) )       PORT_DIPLOCATION("SW1:1,2,3")
5784 	PORT_DIPSETTING(      0x0400, DEF_STR( 4C_1C ) )
5785 	PORT_DIPSETTING(      0x0500, DEF_STR( 3C_1C ) )
5786 	PORT_DIPSETTING(      0x0600, DEF_STR( 2C_1C ) )
5787 	PORT_DIPSETTING(      0x0700, DEF_STR( 1C_1C ) )
5788 	PORT_DIPSETTING(      0x0100, DEF_STR( 2C_3C ) )
5789 	PORT_DIPSETTING(      0x0300, DEF_STR( 1C_2C ) )
5790 	PORT_DIPSETTING(      0x0200, DEF_STR( 1C_3C ) )
5791 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
5792 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unused ) )       PORT_DIPLOCATION("SW1:4") /* Manual States this dip is unused */
5793 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
5794 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5795 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("SW1:5,6")
5796 	PORT_DIPSETTING(      0x2000, DEF_STR( Easy ) )
5797 	PORT_DIPSETTING(      0x3000, DEF_STR( Normal ) )
5798 	PORT_DIPSETTING(      0x1000, DEF_STR( Hard ) )
5799 	PORT_DIPSETTING(      0x0000, DEF_STR( Very_Hard ) )
5800 	PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:7,8")
5801 	PORT_DIPSETTING(      0x8000, "2" )
5802 	PORT_DIPSETTING(      0xc000, "3" )
5803 	PORT_DIPSETTING(      0x4000, "4" )
5804 	PORT_DIPSETTING(      0x0000, "5" )
5805 INPUT_PORTS_END
5806 
5807 
5808 
5809 /***************************************************************************
5810                                 Quiz Kokology 2
5811 ***************************************************************************/
5812 
5813 static INPUT_PORTS_START( qzkklgy2 )
5814 	PORT_INCLUDE(qzkklogy)
5815 
5816 	PORT_MODIFY("P1")
5817 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
5818 
5819 	PORT_MODIFY("P2")
5820 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
5821 
5822 	PORT_MODIFY("DSW") //2 DSWs - $600001 & 3.b
5823 	PORT_DIPNAME( 0x0008, 0x0008, "Skip Real DAT Rom Check?" )  PORT_DIPLOCATION("SW2:4") // 'ON' it will pass DAT rom even if it isn't mapped(!)
5824 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
5825 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5826 
5827 INPUT_PORTS_END
5828 
5829 /***************************************************************************
5830                                     Rezon
5831 ***************************************************************************/
5832 
5833 static INPUT_PORTS_START( rezon )
5834 	PORT_START("P1") //Player 1
5835 	JOY_TYPE1_3BUTTONS(1)   // 1 used??
5836 
5837 	PORT_START("P2") //Player 2
5838 	JOY_TYPE1_3BUTTONS(2)   // 1 used ??
5839 
5840 	PORT_START("COINS") //Coins
5841 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
5842 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
5843 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
5844 	PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW)
5845 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no taito logo
5846 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
5847 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
5848 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
5849 
5850 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
5851 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
5852 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
5853 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5854 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
5855 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
5856 	PORT_DIPSETTING(      0x0002, DEF_STR( On ) )
5857 	PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW2:3" ) /* Listed as "Unused" */
5858 	PORT_DIPNAME( 0x0018, 0x0018, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:4,5")
5859 	PORT_DIPSETTING(      0x0000, "Upright 1 Controller" )
5860 	PORT_DIPSETTING(      0x0018, "Upright 2 Controllers" )
5861 	PORT_DIPSETTING(      0x0008, DEF_STR( Cocktail ) )
5862 //  PORT_DIPSETTING(      0x0010, "10" )                /* Unused / Not Defined */
5863 	PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW2:6" ) /* Listed as "Unused" */
5864 	PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW2:7" ) /* Listed as "Unused" */
5865 	PORT_SERVICE_DIPLOC(  0x0080, IP_ACTIVE_LOW, "SW2:8" )
5866 
5867 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
5868 	PORT_DIPSETTING(      0x0200, "2" )
5869 	PORT_DIPSETTING(      0x0300, "3" )
5870 	PORT_DIPSETTING(      0x0100, "4" )
5871 	PORT_DIPSETTING(      0x0000, "5" )
5872 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
5873 	PORT_DIPSETTING(      0x0800, DEF_STR( Easy ) )
5874 	PORT_DIPSETTING(      0x0c00, DEF_STR( Normal ) )
5875 	PORT_DIPSETTING(      0x0400, DEF_STR( Hard ) )
5876 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
5877 	PORT_DIPNAME( 0xf000, 0xf000, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:5,6,7,8")
5878 	PORT_DIPSETTING(      0xa000, DEF_STR( 6C_1C ) )
5879 	PORT_DIPSETTING(      0xb000, DEF_STR( 5C_1C ) )
5880 	PORT_DIPSETTING(      0xc000, DEF_STR( 4C_1C ) )
5881 	PORT_DIPSETTING(      0xd000, DEF_STR( 3C_1C ) )
5882 	PORT_DIPSETTING(      0x1000, DEF_STR( 8C_3C ) )
5883 	PORT_DIPSETTING(      0xe000, DEF_STR( 2C_1C ) )
5884 	PORT_DIPSETTING(      0x2000, DEF_STR( 5C_3C ) )
5885 	PORT_DIPSETTING(      0x3000, DEF_STR( 3C_2C ) )
5886 	PORT_DIPSETTING(      0xf000, DEF_STR( 1C_1C ) )
5887 	PORT_DIPSETTING(      0x4000, DEF_STR( 2C_3C ) )
5888 	PORT_DIPSETTING(      0x9000, DEF_STR( 1C_2C ) )
5889 	PORT_DIPSETTING(      0x8000, DEF_STR( 1C_3C ) )
5890 	PORT_DIPSETTING(      0x7000, DEF_STR( 1C_4C ) )
5891 	PORT_DIPSETTING(      0x6000, DEF_STR( 1C_5C ) )
5892 	PORT_DIPSETTING(      0x5000, DEF_STR( 1C_6C ) )
5893 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
5894 INPUT_PORTS_END
5895 
5896 static INPUT_PORTS_START( rezont )
5897 
5898 	PORT_INCLUDE( rezon )
5899 
5900 	PORT_MODIFY("COINS")
5901 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // gives the taito logo
5902 INPUT_PORTS_END
5903 
5904 /***************************************************************************
5905                             SD Gundam Neo Battling
5906 ***************************************************************************/
5907 
5908 /*
5909     When the "Stage Select" dip switch is on and button1 is pressed during boot,
5910     pressing P1's button3 freezes the game (pressing P2's button3 resumes it).
5911 */
5912 static INPUT_PORTS_START( neobattl )
5913 	PORT_START("P1") // Player 1 - $400000.w
5914 	JOY_TYPE1_1BUTTON(1)    // bump to 3 buttons for freezing to work
5915 
5916 	PORT_START("P2") //Player 2 - $400002.w
5917 	JOY_TYPE1_1BUTTON(2)    // bump to 3 buttons for freezing to work
5918 
5919 	PORT_START("COINS") //Coins - $400004.w
5920 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
5921 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
5922 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
5923 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT     )
5924 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5925 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5926 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5927 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN  )
5928 
5929 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
5930 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) )
5931 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
5932 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5933 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) )
5934 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
5935 	PORT_DIPSETTING(      0x0002, DEF_STR( On ) )
5936 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )  // used
5937 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
5938 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5939 	PORT_DIPNAME( 0x0008, 0x0008, "Stage Select (Cheat)")
5940 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
5941 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5942 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )  // unused?
5943 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
5944 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5945 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )  // unused?
5946 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
5947 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5948 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )  // unused?
5949 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
5950 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
5951 	PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
5952 
5953 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) )
5954 	PORT_DIPSETTING(      0x0200, "1" )
5955 	PORT_DIPSETTING(      0x0300, "2" )
5956 	PORT_DIPSETTING(      0x0100, "3" )
5957 	PORT_DIPSETTING(      0x0000, "4" )
5958 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) )
5959 	PORT_DIPSETTING(      0x0800, DEF_STR( Easy )    )
5960 	PORT_DIPSETTING(      0x0c00, DEF_STR( Normal )  )
5961 	PORT_DIPSETTING(      0x0400, DEF_STR( Hard )    )
5962 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
5963 	PORT_DIPNAME( 0xf000, 0xf000, DEF_STR( Coinage ) )
5964 	PORT_DIPSETTING(      0xa000, DEF_STR( 6C_1C ) )
5965 	PORT_DIPSETTING(      0xb000, DEF_STR( 5C_1C ) )
5966 	PORT_DIPSETTING(      0xc000, DEF_STR( 4C_1C ) )
5967 	PORT_DIPSETTING(      0xd000, DEF_STR( 3C_1C ) )
5968 	PORT_DIPSETTING(      0x1000, DEF_STR( 8C_3C ) )
5969 	PORT_DIPSETTING(      0xe000, DEF_STR( 2C_1C ) )
5970 	PORT_DIPSETTING(      0x2000, DEF_STR( 5C_3C ) )
5971 	PORT_DIPSETTING(      0x3000, DEF_STR( 3C_2C ) )
5972 	PORT_DIPSETTING(      0xf000, DEF_STR( 1C_1C ) )
5973 	PORT_DIPSETTING(      0x4000, DEF_STR( 2C_3C ) )
5974 	PORT_DIPSETTING(      0x9000, DEF_STR( 1C_2C ) )
5975 	PORT_DIPSETTING(      0x8000, DEF_STR( 1C_3C ) )
5976 	PORT_DIPSETTING(      0x7000, DEF_STR( 1C_4C ) )
5977 	PORT_DIPSETTING(      0x6000, DEF_STR( 1C_5C ) )
5978 	PORT_DIPSETTING(      0x5000, DEF_STR( 1C_6C ) )
5979 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
5980 INPUT_PORTS_END
5981 
5982 
5983 
5984 /***************************************************************************
5985                                 Sokonuke
5986 ***************************************************************************/
5987 
5988 static INPUT_PORTS_START( sokonuke )
5989 	PORT_START("P1") //Player 1
5990 	JOY_TYPE1_1BUTTON(1)
5991 
5992 	PORT_START("P2") //Player 2
5993 	JOY_TYPE1_1BUTTON(2)
5994 
5995 	PORT_START("COINS") //Coins
5996 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
5997 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
5998 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
5999 	PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW )
6000 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
6001 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
6002 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
6003 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
6004 
6005 	PORT_START("DSW") //2 DSWs - $400009 & b.b
6006 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) )  PORT_DIPLOCATION("SW2:1")
6007 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
6008 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6009 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) )  PORT_DIPLOCATION("SW2:2")
6010 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
6011 	PORT_DIPSETTING(      0x0002, DEF_STR( On ) )
6012 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW2:3,4")
6013 	PORT_DIPSETTING(      0x0008, DEF_STR( Easy ) )
6014 	PORT_DIPSETTING(      0x000c, DEF_STR( Normal ) )
6015 	PORT_DIPSETTING(      0x0004, DEF_STR( Hard ) )
6016 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
6017 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Free_Play ) )    PORT_DIPLOCATION("SW2:5")
6018 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
6019 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6020 	PORT_DIPNAME( 0x0020, 0x0020, "DSW2 Switch 6*" )    PORT_DIPLOCATION("SW2:6")
6021 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
6022 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6023 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )  PORT_DIPLOCATION("SW2:7")
6024 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
6025 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6026 	PORT_SERVICE_DIPLOC(  0x0080, IP_ACTIVE_LOW, "SW2:8" )
6027 
6028 	PORT_DIPNAME( 0x0700, 0x0700, DEF_STR( Coin_A ) )   PORT_DIPLOCATION("SW1:1,2,3")
6029 	PORT_DIPSETTING(      0x0500, DEF_STR( 3C_1C ) )
6030 	PORT_DIPSETTING(      0x0600, DEF_STR( 2C_1C ) )
6031 	PORT_DIPSETTING(      0x0700, DEF_STR( 1C_1C ) )
6032 	PORT_DIPSETTING(      0x0400, DEF_STR( 1C_2C ) )
6033 	PORT_DIPSETTING(      0x0300, DEF_STR( 1C_3C ) )
6034 	PORT_DIPSETTING(      0x0200, DEF_STR( 1C_4C ) )
6035 	PORT_DIPSETTING(      0x0100, DEF_STR( 1C_5C ) )
6036 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
6037 	PORT_DIPNAME( 0x3800, 0x3800, DEF_STR( Coin_B ) )   PORT_DIPLOCATION("SW1:4,5,6")
6038 	PORT_DIPSETTING(      0x2800, DEF_STR( 3C_1C ) )
6039 	PORT_DIPSETTING(      0x3000, DEF_STR( 2C_1C ) )
6040 	PORT_DIPSETTING(      0x3800, DEF_STR( 1C_1C ) )
6041 	PORT_DIPSETTING(      0x2000, DEF_STR( 1C_2C ) )
6042 	PORT_DIPSETTING(      0x1800, DEF_STR( 1C_3C ) )
6043 	PORT_DIPSETTING(      0x1000, DEF_STR( 1C_4C ) )
6044 	PORT_DIPSETTING(      0x0800, DEF_STR( 1C_5C ) )
6045 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
6046 	PORT_DIPNAME( 0x4000, 0x4000, "Cheap Continue" )    PORT_DIPLOCATION("SW1:7")
6047 	PORT_DIPSETTING(      0x4000, DEF_STR( No ) )
6048 	PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
6049 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )  PORT_DIPLOCATION("SW1:8")   // unused?
6050 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
6051 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6052 INPUT_PORTS_END
6053 
6054 
6055 
6056 /***************************************************************************
6057                                 Strike Gunner
6058 ***************************************************************************/
6059 
6060 static INPUT_PORTS_START( stg )
6061 	PORT_START("P1") //Player 1 - $b00001.b
6062 	JOY_TYPE1_3BUTTONS(1)
6063 
6064 	PORT_START("P2") //Player 2 - $b00003.b
6065 	JOY_TYPE1_3BUTTONS(2)
6066 
6067 	PORT_START("COINS") //Coins - $b00005.b
6068 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
6069 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6070 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
6071 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6072 //  PORT_DIPNAME( 0x00f0, 0x00f0, "Title" )
6073 	/* This is the index in a table with pointers to the
6074 	   title logo, but the table is filled with just 1 value */
6075 
6076 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
6077 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
6078 	PORT_DIPSETTING(      0x0002, DEF_STR( Easy )    ) // 0
6079 	PORT_DIPSETTING(      0x0003, DEF_STR( Normal )  ) // 4
6080 	PORT_DIPSETTING(      0x0001, DEF_STR( Hard )    ) // 8
6081 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) ) // b
6082 	PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW2:3" )
6083 	PORT_DIPUNUSED_DIPLOC( 0x0008, 0x0008, "SW2:4" )
6084 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:5,6")
6085 	PORT_DIPSETTING(      0x0010, "1" )
6086 	PORT_DIPSETTING(      0x0000, "2" )
6087 	PORT_DIPSETTING(      0x0030, "3" )
6088 	PORT_DIPSETTING(      0x0020, "5" )
6089 	PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW2:7" )
6090 	PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "SW2:8" )
6091 
6092 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:1")
6093 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
6094 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6095 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:2")
6096 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
6097 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6098 	PORT_SERVICE_DIPLOC(  0x0400, IP_ACTIVE_LOW, "SW1:3" )
6099 	PORT_DIPUNUSED_DIPLOC( 0x0800, 0x0800, "SW1:4" )
6100 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:5,6")
6101 	PORT_DIPSETTING(      0x1000, DEF_STR( 2C_1C ) )
6102 	PORT_DIPSETTING(      0x3000, DEF_STR( 1C_1C ) )
6103 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )
6104 	PORT_DIPSETTING(      0x2000, DEF_STR( 1C_2C ) )
6105 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
6106 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
6107 	PORT_DIPSETTING(      0x4000, DEF_STR( On ) )
6108 	PORT_DIPUNUSED_DIPLOC( 0x8000, 0x8000, "SW1:8" )
6109 INPUT_PORTS_END
6110 
6111 
6112 
6113 /***************************************************************************
6114                             Thunder & Lightning
6115 ***************************************************************************/
6116 
6117 static INPUT_PORTS_START( thunderl )
6118 	PORT_START("P1") //Player 1
6119 	JOY_TYPE1_2BUTTONS(1)   // button2 = speed up
6120 
6121 	PORT_START("P2") //Player 2
6122 	JOY_TYPE1_2BUTTONS(2)
6123 
6124 	PORT_START("COINS") //Coins + DSW
6125 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
6126 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
6127 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
6128 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT     )
6129 	PORT_DIPNAME( 0x0010, 0x0000, "Force 1 Life" )
6130 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
6131 	PORT_DIPSETTING(      0x0010, DEF_STR( On ) )
6132 	PORT_DIPNAME( 0x00e0, 0x00e0, "Copyright" )
6133 	PORT_DIPSETTING(      0x0080, "Romstar" )
6134 	PORT_DIPSETTING(      0x00c0, "Seta (Romstar License)" )
6135 	PORT_DIPSETTING(      0x00e0, "Seta (Visco License)" )
6136 	PORT_DIPSETTING(      0x00a0, "Visco" )
6137 	PORT_DIPSETTING(      0x0060, DEF_STR( None ) )
6138 	PORT_DIPSETTING(      0x0040, DEF_STR( None ) )
6139 	PORT_DIPSETTING(      0x0020, DEF_STR( None ) )
6140 	PORT_DIPSETTING(      0x0000, DEF_STR( None ) )
6141 
6142 	PORT_START("DSW") //2 DSWs - $600003 & 1.b
6143 	PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3,4")
6144 	PORT_DIPSETTING(      0x000c, DEF_STR( 4C_1C ) )
6145 	PORT_DIPSETTING(      0x000d, DEF_STR( 3C_1C ) )
6146 	PORT_DIPSETTING(      0x0008, DEF_STR( 4C_2C ) )
6147 	PORT_DIPSETTING(      0x000e, DEF_STR( 2C_1C ) )
6148 	PORT_DIPSETTING(      0x0009, DEF_STR( 3C_2C ) )
6149 	PORT_DIPSETTING(      0x0004, DEF_STR( 4C_3C ) )
6150 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_4C ) )
6151 	PORT_DIPSETTING(      0x0005, DEF_STR( 3C_3C ) )
6152 	PORT_DIPSETTING(      0x000a, DEF_STR( 2C_2C ) )
6153 	PORT_DIPSETTING(      0x000f, DEF_STR( 1C_1C ) )
6154 	PORT_DIPSETTING(      0x0001, DEF_STR( 3C_4C ) )
6155 	PORT_DIPSETTING(      0x0006, DEF_STR( 2C_3C ) )
6156 	PORT_DIPSETTING(      0x0002, DEF_STR( 2C_4C ) )
6157 	PORT_DIPSETTING(      0x000b, DEF_STR( 1C_2C ) )
6158 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_3C ) )
6159 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_4C ) )
6160 	PORT_DIPNAME( 0x00f0, 0x00f0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:5,6,7,8")
6161 	PORT_DIPSETTING(      0x00c0, DEF_STR( 4C_1C ) )
6162 	PORT_DIPSETTING(      0x00d0, DEF_STR( 3C_1C ) )
6163 	PORT_DIPSETTING(      0x0080, DEF_STR( 4C_2C ) )
6164 	PORT_DIPSETTING(      0x00e0, DEF_STR( 2C_1C ) )
6165 	PORT_DIPSETTING(      0x0090, DEF_STR( 3C_2C ) )
6166 	PORT_DIPSETTING(      0x0040, DEF_STR( 4C_3C ) )
6167 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_4C ) )
6168 	PORT_DIPSETTING(      0x0050, DEF_STR( 3C_3C ) )
6169 	PORT_DIPSETTING(      0x00a0, DEF_STR( 2C_2C ) )
6170 	PORT_DIPSETTING(      0x00f0, DEF_STR( 1C_1C ) )
6171 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_4C ) )
6172 	PORT_DIPSETTING(      0x0060, DEF_STR( 2C_3C ) )
6173 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_4C ) )
6174 	PORT_DIPSETTING(      0x00b0, DEF_STR( 1C_2C ) )
6175 	PORT_DIPSETTING(      0x0070, DEF_STR( 1C_3C ) )
6176 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_4C ) )
6177 
6178 	PORT_SERVICE_DIPLOC(  0x0100, IP_ACTIVE_LOW, "SW1:1" )
6179 	PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:2")
6180 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )      // WEIRD!
6181 	PORT_DIPSETTING(      0x0200, DEF_STR( On ) )
6182 	PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:3")
6183 	PORT_DIPSETTING(      0x0000, DEF_STR( Upright ) )
6184 	PORT_DIPSETTING(      0x0400, DEF_STR( Cocktail ) )
6185 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Controls ) ) PORT_DIPLOCATION("SW1:4")
6186 	PORT_DIPSETTING(      0x0800, "2" )
6187 	PORT_DIPSETTING(      0x0000, "1" )
6188 	PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:5")
6189 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
6190 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6191 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:6")
6192 	PORT_DIPSETTING(      0x2000, "3" )
6193 	PORT_DIPSETTING(      0x0000, "2" )
6194 	PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:7,8")
6195 	PORT_DIPSETTING(      0x8000, DEF_STR( Easy ) )
6196 	PORT_DIPSETTING(      0xc000, DEF_STR( Normal ) )
6197 	PORT_DIPSETTING(      0x4000, DEF_STR( Hard ) )
6198 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
6199 
6200 	/* These are needed due to the memory map shared with Wit's */
6201 	PORT_START("P3")
6202 	PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
6203 
6204 	PORT_START("P4") //Player 4
6205 	PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
6206 INPUT_PORTS_END
6207 
6208 static INPUT_PORTS_START( thunderlbl )
6209 
6210 	PORT_INCLUDE( thunderl )
6211 
6212 	PORT_MODIFY("COINS")
6213 	PORT_DIPNAME( 0x00e0, 0x00e0, "Copyright" )
6214 	PORT_DIPSETTING(      0x0080, DEF_STR( None ) )
6215 	PORT_DIPSETTING(      0x00c0, "Hyogo (Hyogo License)" )
6216 	PORT_DIPSETTING(      0x00e0, "(Hyogo License)" )
6217 	PORT_DIPSETTING(      0x00a0, "Hyogo" )
6218 	PORT_DIPSETTING(      0x0060, DEF_STR( None ) )
6219 	PORT_DIPSETTING(      0x0040, DEF_STR( None ) )
6220 	PORT_DIPSETTING(      0x0020, DEF_STR( None ) )
6221 	PORT_DIPSETTING(      0x0000, DEF_STR( None ) )
6222 INPUT_PORTS_END
6223 
6224 /***************************************************************************
6225                                 Thundercade (US)
6226 ***************************************************************************/
6227 
6228 static INPUT_PORTS_START( tndrcade )
6229 	PORT_START("P1") //Player 1
6230 	JOY_TYPE1_2BUTTONS(1)
6231 
6232 	PORT_START("P2") //Player 2
6233 	JOY_TYPE1_2BUTTONS(2)
6234 
6235 	PORT_START("COINS") //Coins
6236 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
6237 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
6238 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1   )
6239 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START2   )
6240 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE1 )
6241 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_TILT     )
6242 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6243 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6244 
6245 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
6246 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("SW2:1,2")
6247 	PORT_DIPSETTING(      0x0002, DEF_STR( Easy )    )
6248 	PORT_DIPSETTING(      0x0003, DEF_STR( Normal )  )
6249 	PORT_DIPSETTING(      0x0001, DEF_STR( Hard )    )
6250 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
6251 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Bonus_Life ) )       PORT_DIPLOCATION("SW2:3,4")
6252 	PORT_DIPSETTING(      0x000c, "50K  Only" )
6253 	PORT_DIPSETTING(      0x0004, "50K, Every 150K" )
6254 	PORT_DIPSETTING(      0x0000, "70K, Every 200K" )
6255 	PORT_DIPSETTING(      0x0008, "100K Only" )
6256 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW2:5,6")
6257 	PORT_DIPSETTING(      0x0010, "1" )
6258 	PORT_DIPSETTING(      0x0000, "2" )
6259 	PORT_DIPSETTING(      0x0030, "3" )
6260 	PORT_DIPSETTING(      0x0020, "5" )
6261 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Allow_Continue ) )   PORT_DIPLOCATION("SW2:7")
6262 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
6263 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
6264 	PORT_DIPNAME( 0x0080, 0x0000, "Licensed To" )           PORT_DIPLOCATION("SW2:8")
6265 	PORT_DIPSETTING(      0x0080, "Taito America Corp." )
6266 	PORT_DIPSETTING(      0x0000, "Taito Corp. Japan" )
6267 
6268 	PORT_DIPNAME( 0x0100, 0x0100, "Title" )             PORT_DIPLOCATION("SW1:1")
6269 	PORT_DIPSETTING(      0x0100, "Thundercade" )
6270 	PORT_DIPSETTING(      0x0000, "Twin Formation" )
6271 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Flip_Screen ) )      PORT_DIPLOCATION("SW1:2")
6272 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
6273 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6274 	PORT_SERVICE_DIPLOC(  0x0400, IP_ACTIVE_LOW, "SW1:3" )
6275 	PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("SW1:4")
6276 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
6277 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6278 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Coin_A ) )       PORT_DIPLOCATION("SW1:5,6")
6279 	PORT_DIPSETTING(      0x1000, DEF_STR( 2C_1C ) )            PORT_CONDITION("DSW",0x0080,EQUALS,0x0080)
6280 	PORT_DIPSETTING(      0x3000, DEF_STR( 1C_1C ) )            PORT_CONDITION("DSW",0x0080,EQUALS,0x0080)
6281 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )            PORT_CONDITION("DSW",0x0080,EQUALS,0x0080)
6282 	PORT_DIPSETTING(      0x2000, DEF_STR( 1C_2C ) )            PORT_CONDITION("DSW",0x0080,EQUALS,0x0080)
6283 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )            PORT_CONDITION("DSW",0x0080,NOTEQUALS,0x0080)
6284 	PORT_DIPSETTING(      0x1000, DEF_STR( 3C_1C ) )            PORT_CONDITION("DSW",0x0080,NOTEQUALS,0x0080)
6285 	PORT_DIPSETTING(      0x2000, DEF_STR( 2C_1C ) )            PORT_CONDITION("DSW",0x0080,NOTEQUALS,0x0080)
6286 	PORT_DIPSETTING(      0x3000, DEF_STR( 1C_1C ) )            PORT_CONDITION("DSW",0x0080,NOTEQUALS,0x0080)
6287 	PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Coin_B ) )       PORT_DIPLOCATION("SW1:7,8")
6288 	PORT_DIPSETTING(      0x4000, DEF_STR( 2C_1C ) )            PORT_CONDITION("DSW",0x0080,EQUALS,0x0080)
6289 	PORT_DIPSETTING(      0xc000, DEF_STR( 1C_1C ) )            PORT_CONDITION("DSW",0x0080,EQUALS,0x0080)
6290 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )            PORT_CONDITION("DSW",0x0080,EQUALS,0x0080)
6291 	PORT_DIPSETTING(      0x8000, DEF_STR( 1C_2C ) )            PORT_CONDITION("DSW",0x0080,EQUALS,0x0080)
6292 	PORT_DIPSETTING(      0xc000, DEF_STR( 1C_2C ) )            PORT_CONDITION("DSW",0x0080,NOTEQUALS,0x0080)
6293 	PORT_DIPSETTING(      0x8000, DEF_STR( 1C_3C ) )            PORT_CONDITION("DSW",0x0080,NOTEQUALS,0x0080)
6294 	PORT_DIPSETTING(      0x4000, DEF_STR( 1C_4C ) )            PORT_CONDITION("DSW",0x0080,NOTEQUALS,0x0080)
6295 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )            PORT_CONDITION("DSW",0x0080,NOTEQUALS,0x0080)
6296 INPUT_PORTS_END
6297 
6298 
6299 /***************************************************************************
6300                                 Thundercade (Japan)
6301 ***************************************************************************/
6302 
6303 static INPUT_PORTS_START( tndrcadj )
6304 	PORT_INCLUDE(tndrcade)
6305 
6306 	PORT_MODIFY("DSW") //2 DSWs - $600001 & 3.b
6307 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW2:8")
6308 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
6309 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6310 
6311 	PORT_DIPNAME( 0x0100, 0x0100, "Invulnerability (Cheat)") PORT_DIPLOCATION("SW1:1")
6312 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
6313 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6314 
6315 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:5,6")
6316 	PORT_DIPSETTING(      0x1000, DEF_STR( 2C_1C ) )
6317 	PORT_DIPSETTING(      0x3000, DEF_STR( 1C_1C ) )
6318 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )
6319 	PORT_DIPSETTING(      0x2000, DEF_STR( 1C_2C ) )
6320 	PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:7,8")
6321 	PORT_DIPSETTING(      0x4000, DEF_STR( 2C_1C ) )
6322 	PORT_DIPSETTING(      0xc000, DEF_STR( 1C_1C ) )
6323 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )
6324 	PORT_DIPSETTING(      0x8000, DEF_STR( 1C_2C ) )
6325 INPUT_PORTS_END
6326 
6327 
6328 
6329 /***************************************************************************
6330                                 Twin Eagle
6331 ***************************************************************************/
6332 
6333 static INPUT_PORTS_START( twineagl )
6334 	PORT_START("P1") //Player 1
6335 	JOY_TYPE1_2BUTTONS(1)
6336 
6337 	PORT_START("P2") //Player 2
6338 	JOY_TYPE1_2BUTTONS(2)
6339 
6340 	PORT_START("COINS") //Coins
6341 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
6342 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
6343 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1   )
6344 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START2   )
6345 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE1 )
6346 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_TILT     )
6347 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6348 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6349 
6350 	// default taken off original Japanese DIP sheet
6351 	// Cabinet is user choice
6352 	// We use Licensor Option 2 instead of 1 just to avoid the "For use in Japan"
6353 	// TODO: the copyright dips actually don't have any effect on a real (European) PCB
6354 	// Most likely these are overwritten by the lead JPs that the board has
6355 	// (4x3 near SW2 at J2, 2x3 near two empty ROM sockets U31/U37 at C10).
6356 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
6357 	PORT_DIPNAME( 0x0001, 0x0001, "Copyright / License" )   PORT_DIPLOCATION("SW1:1") /* Always "Seta" if sim. players = 1 */
6358 	PORT_DIPSETTING(      0x0000, "Taito America / Romstar" )   PORT_CONDITION("DSW",0x4000,NOTEQUALS,0x4000)
6359 	PORT_DIPSETTING(      0x0001, "Taito Corp Japan" )      PORT_CONDITION("DSW",0x4000,NOTEQUALS,0x4000)   /* "World" Copyright */
6360 	PORT_DIPSETTING(      0x0000, "Taito America" )         PORT_CONDITION("DSW",0x4000,EQUALS,0x4000)
6361 	PORT_DIPSETTING(      0x0001, "Seta / Taito" )          PORT_CONDITION("DSW",0x4000,EQUALS,0x4000)  /* Japan Only Notice */
6362 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) )  PORT_DIPLOCATION("SW1:2")
6363 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
6364 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6365 	PORT_SERVICE_DIPLOC(  0x0004, IP_ACTIVE_LOW, "SW1:3" )
6366 	PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Cabinet ) )  PORT_DIPLOCATION("SW1:4") /* Only if simultaneous players = 1 */
6367 	PORT_DIPSETTING(      0x0000, DEF_STR( Upright ) )
6368 	PORT_DIPSETTING(      0x0008, DEF_STR( Cocktail ) )
6369 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) )   PORT_DIPLOCATION("SW1:5,6")
6370 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
6371 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
6372 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
6373 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_2C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
6374 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
6375 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
6376 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
6377 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
6378 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) )   PORT_DIPLOCATION("SW1:7,8")
6379 	PORT_DIPSETTING(      0x0040, DEF_STR( 2C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
6380 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
6381 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
6382 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_2C ) )        PORT_CONDITION("DSW",0x8000,EQUALS,0x8000)
6383 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_2C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
6384 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_3C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
6385 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_4C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
6386 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )        PORT_CONDITION("DSW",0x8000,NOTEQUALS,0x8000)
6387 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW2:1,2")
6388 	PORT_DIPSETTING(      0x0300, DEF_STR( Normal )  )
6389 	PORT_DIPSETTING(      0x0200, DEF_STR( Easy )    )
6390 	PORT_DIPSETTING(      0x0100, DEF_STR( Hard )    )
6391 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
6392 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:3,4")
6393 	PORT_DIPSETTING(      0x0c00, "Never" )
6394 	PORT_DIPSETTING(      0x0800, "500K Only" )
6395 	PORT_DIPSETTING(      0x0400, "1000K Only" )
6396 	PORT_DIPSETTING(      0x0000, "500K, Every 1500K" )
6397 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Lives ) )    PORT_DIPLOCATION("SW2:5,6")
6398 	PORT_DIPSETTING(      0x1000, "1" )
6399 	PORT_DIPSETTING(      0x0000, "2" )
6400 	PORT_DIPSETTING(      0x3000, "3" )
6401 	PORT_DIPSETTING(      0x2000, "5" )
6402 	PORT_DIPNAME( 0x4000, 0x0000, "Licensor Option" )   PORT_DIPLOCATION("SW2:7") /* Manual states "Don't Touch" */
6403 	PORT_DIPSETTING(      0x4000, "Option 1" )
6404 	PORT_DIPSETTING(      0x0000, "Option 2" )
6405 	PORT_DIPNAME( 0x8000, 0x8000, "Coinage Type" )      PORT_DIPLOCATION("SW2:8") /* Manual states "Don't Touch" */
6406 	PORT_DIPSETTING(      0x8000, "Coin Mode 1" )
6407 	PORT_DIPSETTING(      0x0000, "Coin Mode 2" )
6408 INPUT_PORTS_END
6409 
6410 
6411 
6412 /***************************************************************************
6413                                 Ultraman Club
6414 ***************************************************************************/
6415 
6416 static INPUT_PORTS_START( umanclub )
6417 	PORT_START("P1") //Player 1
6418 	JOY_TYPE1_2BUTTONS(1)
6419 
6420 	PORT_START("P2") //Player 2
6421 	JOY_TYPE1_2BUTTONS(2)
6422 
6423 	PORT_START("COINS") //Coins
6424 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
6425 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
6426 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
6427 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT     )
6428 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6429 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6430 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6431 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6432 
6433 	PORT_START("DSW") //2 DSWs
6434 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) )      PORT_DIPLOCATION("SW2:1")
6435 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
6436 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6437 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("SW2:2")
6438 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
6439 	PORT_DIPSETTING(      0x0002, DEF_STR( On ) )
6440 	PORT_DIPNAME( 0x0004, 0x0004, "Unknown DSW2 - 3*" )     PORT_DIPLOCATION("SW2:3")   // tested...Manual states "Unused"
6441 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
6442 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6443 	PORT_DIPNAME( 0x0008, 0x0008, "Stage Select (Cheat)")       PORT_DIPLOCATION("SW2:4")   // Manual states "Unused"
6444 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
6445 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6446 	PORT_DIPUNUSED_DIPLOC( 0x0010, IP_ACTIVE_LOW, "SW2:5" ) /* Listed as "Unused" */
6447 	PORT_DIPUNUSED_DIPLOC( 0x0020, IP_ACTIVE_LOW, "SW2:6" ) /* Listed as "Unused" */
6448 	PORT_DIPUNUSED_DIPLOC( 0x0040, IP_ACTIVE_LOW, "SW2:7" ) /* Listed as "Unused" */
6449 	PORT_SERVICE_DIPLOC(   0x0080, IP_ACTIVE_LOW, "SW2:8" )
6450 
6451 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:1,2")
6452 	PORT_DIPSETTING(      0x0200, "1" )
6453 	PORT_DIPSETTING(      0x0300, "2" )
6454 	PORT_DIPSETTING(      0x0100, "3" )
6455 	PORT_DIPSETTING(      0x0000, "4" )
6456 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("SW1:3,4")
6457 	PORT_DIPSETTING(      0x0800, DEF_STR( Easy )    )
6458 	PORT_DIPSETTING(      0x0c00, DEF_STR( Normal )  )
6459 	PORT_DIPSETTING(      0x0400, DEF_STR( Hard )    )
6460 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
6461 	PORT_DIPNAME( 0xf000, 0xf000, DEF_STR( Coinage ) )      PORT_DIPLOCATION("SW1:5,6,7,8")
6462 	PORT_DIPSETTING(      0xa000, DEF_STR( 6C_1C ) )
6463 	PORT_DIPSETTING(      0xb000, DEF_STR( 5C_1C ) )
6464 	PORT_DIPSETTING(      0xc000, DEF_STR( 4C_1C ) )
6465 	PORT_DIPSETTING(      0xd000, DEF_STR( 3C_1C ) )
6466 	PORT_DIPSETTING(      0x1000, DEF_STR( 8C_3C ) )
6467 	PORT_DIPSETTING(      0xe000, DEF_STR( 2C_1C ) )
6468 	PORT_DIPSETTING(      0x2000, DEF_STR( 5C_3C ) )
6469 	PORT_DIPSETTING(      0x3000, DEF_STR( 3C_2C ) )
6470 	PORT_DIPSETTING(      0xf000, DEF_STR( 1C_1C ) )
6471 	PORT_DIPSETTING(      0x4000, DEF_STR( 2C_3C ) )
6472 	PORT_DIPSETTING(      0x9000, DEF_STR( 1C_2C ) )
6473 	PORT_DIPSETTING(      0x8000, DEF_STR( 1C_3C ) )
6474 	PORT_DIPSETTING(      0x7000, DEF_STR( 1C_4C ) )
6475 	PORT_DIPSETTING(      0x6000, DEF_STR( 1C_5C ) )
6476 	PORT_DIPSETTING(      0x5000, DEF_STR( 1C_6C ) )
6477 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
6478 INPUT_PORTS_END
6479 
6480 
6481 /***************************************************************************
6482                             Ultra Toukon Densetsu
6483 ***************************************************************************/
6484 
6485 static INPUT_PORTS_START( utoukond )
6486 	PORT_START("P1") //Player 1
6487 	JOY_TYPE1_3BUTTONS(1)
6488 
6489 	PORT_START("P2") //Player 2
6490 	JOY_TYPE1_3BUTTONS(2)
6491 
6492 	PORT_START("COINS") //Coins
6493 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
6494 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
6495 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
6496 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6497 	/* These are NOT Dip Switches but jumpers */
6498 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unused ) )
6499 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
6500 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6501 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unused ) )
6502 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
6503 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6504 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unused ) )
6505 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
6506 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6507 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unused ) )
6508 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
6509 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6510 
6511 	PORT_START("DSW") //2 DSWs
6512 	PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3,4")
6513 	PORT_DIPSETTING(      0x0002, DEF_STR( 4C_1C ) )
6514 	PORT_DIPSETTING(      0x0005, DEF_STR( 3C_1C ) )
6515 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
6516 	PORT_DIPSETTING(      0x0004, DEF_STR( 3C_2C ) )
6517 	PORT_DIPSETTING(      0x0001, DEF_STR( 4C_3C ) )
6518 	PORT_DIPSETTING(      0x000f, DEF_STR( 1C_1C ) )
6519 	PORT_DIPSETTING(      0x0003, DEF_STR( 3C_4C ) )
6520 	PORT_DIPSETTING(      0x0007, DEF_STR( 2C_3C ) )
6521 	PORT_DIPSETTING(      0x000e, DEF_STR( 1C_2C ) )
6522 	PORT_DIPSETTING(      0x0006, DEF_STR( 2C_5C ) )
6523 	PORT_DIPSETTING(      0x000d, DEF_STR( 1C_3C ) )
6524 	PORT_DIPSETTING(      0x000c, DEF_STR( 1C_4C ) )
6525 	PORT_DIPSETTING(      0x000b, DEF_STR( 1C_5C ) )
6526 	PORT_DIPSETTING(      0x000a, DEF_STR( 1C_6C ) )
6527 	PORT_DIPSETTING(      0x0009, DEF_STR( 1C_7C ) )
6528 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
6529 	PORT_DIPNAME( 0x00f0, 0x00f0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:5,6,7,8")
6530 	PORT_DIPSETTING(      0x0020, DEF_STR( 4C_1C ) )
6531 	PORT_DIPSETTING(      0x0050, DEF_STR( 3C_1C ) )
6532 	PORT_DIPSETTING(      0x0080, DEF_STR( 2C_1C ) )
6533 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_3C ) )
6534 	PORT_DIPSETTING(      0x0040, DEF_STR( 3C_2C ) )
6535 	PORT_DIPSETTING(      0x0010, DEF_STR( 4C_3C ) )
6536 	PORT_DIPSETTING(      0x00f0, DEF_STR( 1C_1C ) )
6537 	PORT_DIPSETTING(      0x0030, DEF_STR( 3C_4C ) )
6538 	PORT_DIPSETTING(      0x0070, DEF_STR( 2C_3C ) )
6539 	PORT_DIPSETTING(      0x00e0, DEF_STR( 1C_2C ) )
6540 	PORT_DIPSETTING(      0x0060, DEF_STR( 2C_5C ) )
6541 	PORT_DIPSETTING(      0x00d0, DEF_STR( 1C_3C ) )
6542 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_4C ) )
6543 	PORT_DIPSETTING(      0x00b0, DEF_STR( 1C_5C ) )
6544 	PORT_DIPSETTING(      0x00a0, DEF_STR( 1C_6C ) )
6545 	PORT_DIPSETTING(      0x0090, DEF_STR( 1C_7C ) )
6546 
6547 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
6548 	PORT_DIPSETTING(      0x0000, "1" )
6549 	PORT_DIPSETTING(      0x0200, "2" )
6550 	PORT_DIPSETTING(      0x0300, "3" )
6551 	PORT_DIPSETTING(      0x0100, "4" )
6552 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
6553 	PORT_DIPSETTING(      0x0800, DEF_STR( Easy ) )
6554 	PORT_DIPSETTING(      0x0c00, DEF_STR( Normal ) )
6555 	PORT_DIPSETTING(      0x0400, DEF_STR( Hard ) )
6556 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
6557 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:5")
6558 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
6559 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6560 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:6")
6561 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
6562 	PORT_DIPSETTING(      0x2000, DEF_STR( On ) )
6563 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:7")
6564 	PORT_DIPSETTING(      0x4000, "100k" )
6565 	PORT_DIPSETTING(      0x0000, "150k" )
6566 	PORT_SERVICE_DIPLOC(  0x8000, IP_ACTIVE_LOW, "SW1:8" )
6567 INPUT_PORTS_END
6568 
6569 /***************************************************************************
6570                                 U.S. Classic
6571 ***************************************************************************/
6572 
6573 static INPUT_PORTS_START( usclssic )
6574 	PORT_START("TRACKX")
6575 	PORT_BIT( 0xfff, 0x000, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(usclssic_state, trackball_x_r)
6576 
6577 	PORT_START("TRACKY")
6578 	PORT_BIT( 0xfff, 0x000, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(usclssic_state, trackball_y_r)
6579 
6580 	PORT_START("TRACK1_X")     /* muxed port 0 */
6581 	PORT_BIT( 0xfff, 0x000, IPT_TRACKBALL_X ) PORT_SENSITIVITY(70) PORT_KEYDELTA(30) PORT_RESET
6582 
6583 	PORT_START("TRACK1_Y")     /* muxed port 0 */
6584 	PORT_BIT( 0xfff, 0x000, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(70) PORT_KEYDELTA(30) PORT_RESET
6585 
6586 	PORT_START("TRACK2_X")     /* muxed port 1 */
6587 	PORT_BIT( 0xfff, 0x000, IPT_TRACKBALL_X ) PORT_SENSITIVITY(70) PORT_KEYDELTA(30) PORT_RESET PORT_COCKTAIL
6588 
6589 	PORT_START("TRACK2_Y")     /* muxed port 1 */
6590 	PORT_BIT( 0xfff, 0x000, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(70) PORT_KEYDELTA(30) PORT_RESET PORT_COCKTAIL
6591 
6592 	PORT_START("BUTTONS")
6593 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_WRITE_LINE_DEVICE_MEMBER("buttonmux", hc157_device, a0_w)
6594 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_WRITE_LINE_DEVICE_MEMBER("buttonmux", hc157_device, a1_w)
6595 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) PORT_WRITE_LINE_DEVICE_MEMBER("buttonmux", hc157_device, a2_w)
6596 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_WRITE_LINE_DEVICE_MEMBER("buttonmux", hc157_device, b0_w)
6597 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL PORT_WRITE_LINE_DEVICE_MEMBER("buttonmux", hc157_device, b1_w)
6598 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) PORT_WRITE_LINE_DEVICE_MEMBER("buttonmux", hc157_device, b2_w)
6599 
6600 	PORT_START("COINS")
6601 	PORT_BIT( 0x0001, IP_ACTIVE_LOW,  IPT_UNKNOWN  )    // tested (sound related?)
6602 	PORT_BIT( 0x0002, IP_ACTIVE_LOW,  IPT_UNKNOWN  )
6603 	PORT_BIT( 0x0004, IP_ACTIVE_LOW,  IPT_UNKNOWN  )
6604 	PORT_BIT( 0x0008, IP_ACTIVE_LOW,  IPT_UNKNOWN  )
6605 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(5)
6606 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(5)
6607 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SERVICE1 )
6608 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_TILT     )
6609 
6610 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
6611 	PORT_DIPNAME( 0x0001, 0x0001, "Credits For 9-Hole" ) PORT_DIPLOCATION("SW2:1")
6612 	PORT_DIPSETTING(      0x0001, "2" )
6613 	PORT_DIPSETTING(      0x0000, "3" )
6614 	PORT_DIPNAME( 0x0002, 0x0002, "Game Type" ) PORT_DIPLOCATION("SW2:2")
6615 	PORT_DIPSETTING(      0x0002, "Domestic" )
6616 	PORT_DIPSETTING(      0x0000, "Foreign" )
6617 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
6618 	PORT_DIPSETTING(      0x0004, "1" )
6619 	PORT_DIPSETTING(      0x0008, "2" )
6620 	PORT_DIPSETTING(      0x000c, "3" )
6621 	PORT_DIPSETTING(      0x0000, "4" )
6622 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:5,6")
6623 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )
6624 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )
6625 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )
6626 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_2C ) )
6627 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:7,8")
6628 	PORT_DIPSETTING(      0x0040, DEF_STR( 2C_1C ) )
6629 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )
6630 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )
6631 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_2C ) )
6632 
6633 	PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:1")
6634 	PORT_DIPSETTING(      0x0000, DEF_STR( Upright ) )
6635 	PORT_DIPSETTING(      0x0100, DEF_STR( Cocktail ) )
6636 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:2")
6637 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
6638 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6639 	PORT_SERVICE_DIPLOC(  0x0400, IP_ACTIVE_LOW, "SW1:3" )
6640 	PORT_DIPNAME( 0x3800, 0x3800, "Flight Distance" ) PORT_DIPLOCATION("SW1:4,5,6")
6641 	PORT_DIPSETTING(      0x3800, DEF_STR( Normal ) )
6642 	PORT_DIPSETTING(      0x3000, "-30 Yards" )
6643 	PORT_DIPSETTING(      0x2800, "+10 Yards" )
6644 	PORT_DIPSETTING(      0x2000, "+20 Yards" )
6645 	PORT_DIPSETTING(      0x1800, "+30 Yards" )
6646 	PORT_DIPSETTING(      0x1000, "+40 Yards" )
6647 	PORT_DIPSETTING(      0x0800, "+50 Yards" )
6648 	PORT_DIPSETTING(      0x0000, "+60 Yards" )
6649 	PORT_DIPNAME( 0xc000, 0xc000, "Licensed To" ) PORT_DIPLOCATION("SW1:7,8")
6650 	PORT_DIPSETTING(      0xc000, "Romstar" )
6651 	PORT_DIPSETTING(      0x8000, "None (Japan)" )
6652 	PORT_DIPSETTING(      0x4000, "Taito" )
6653 	PORT_DIPSETTING(      0x0000, "Taito America" )
6654 INPUT_PORTS_END
6655 
6656 
6657 
6658 /***************************************************************************
6659                                 War of Aero
6660 ***************************************************************************/
6661 
6662 static INPUT_PORTS_START( wrofaero )
6663 	PORT_START("P1") //Player 1 - $400000.w
6664 	JOY_TYPE1_3BUTTONS(1)   // 3rd button selects the weapon
6665 							// when the dsw for cheating is on
6666 
6667 	PORT_START("P2") //Player 2 - $400002.w
6668 	JOY_TYPE1_3BUTTONS(2)
6669 
6670 	PORT_START("COINS") //Coins - $400004.w
6671 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
6672 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
6673 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
6674 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT     )
6675 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6676 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6677 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6678 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6679 
6680 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
6681 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
6682 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
6683 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6684 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:2")
6685 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
6686 	PORT_DIPSETTING(      0x0002, DEF_STR( On ) )
6687 	PORT_DIPNAME( 0x0004, 0x0004, "Unknown 1-3*" ) PORT_DIPLOCATION("SW1:3")    // tested...Manual states "Unused"
6688 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
6689 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6690 	PORT_DIPNAME( 0x0008, 0x0008, "Stage & Weapon Select (Cheat)") PORT_DIPLOCATION("SW1:4") // P2 Start Is Freeze Screen...Manual states "Unused"
6691 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
6692 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6693 	PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "SW1:5" ) /* Listed as "Unused" */
6694 	PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW1:6" ) /* Listed as "Unused" */
6695 	PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW1:7" ) /* Listed as "Unused" */
6696 	PORT_SERVICE_DIPLOC(  0x0080, IP_ACTIVE_LOW, "SW1:8" )
6697 
6698 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2")
6699 	PORT_DIPSETTING(      0x0200, "2" )
6700 	PORT_DIPSETTING(      0x0300, "3" )
6701 	PORT_DIPSETTING(      0x0100, "4" )
6702 	PORT_DIPSETTING(      0x0000, "5" )
6703 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:3,4")
6704 	PORT_DIPSETTING(      0x0800, DEF_STR( Easy ) )
6705 	PORT_DIPSETTING(      0x0c00, DEF_STR( Normal ) )
6706 	PORT_DIPSETTING(      0x0400, DEF_STR( Hard ) )
6707 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
6708 	PORT_DIPNAME( 0xf000, 0xf000, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:5,6,7,8")
6709 	PORT_DIPSETTING(      0xa000, DEF_STR( 6C_1C ) )
6710 	PORT_DIPSETTING(      0xb000, DEF_STR( 5C_1C ) )
6711 	PORT_DIPSETTING(      0xc000, DEF_STR( 4C_1C ) )
6712 	PORT_DIPSETTING(      0xd000, DEF_STR( 3C_1C ) )
6713 	PORT_DIPSETTING(      0x1000, DEF_STR( 8C_3C ) )
6714 	PORT_DIPSETTING(      0xe000, DEF_STR( 2C_1C ) )
6715 	PORT_DIPSETTING(      0x2000, DEF_STR( 5C_3C ) )
6716 	PORT_DIPSETTING(      0x3000, DEF_STR( 3C_2C ) )
6717 	PORT_DIPSETTING(      0xf000, DEF_STR( 1C_1C ) )
6718 	PORT_DIPSETTING(      0x4000, DEF_STR( 2C_3C ) )
6719 	PORT_DIPSETTING(      0x9000, DEF_STR( 1C_2C ) )
6720 	PORT_DIPSETTING(      0x8000, DEF_STR( 1C_3C ) )
6721 	PORT_DIPSETTING(      0x7000, DEF_STR( 1C_4C ) )
6722 	PORT_DIPSETTING(      0x6000, DEF_STR( 1C_5C ) )
6723 	PORT_DIPSETTING(      0x5000, DEF_STR( 1C_6C ) )
6724 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
6725 INPUT_PORTS_END
6726 
6727 
6728 
6729 /***************************************************************************
6730                                     Wit's
6731 ***************************************************************************/
6732 
6733 static INPUT_PORTS_START( wits )
6734 	PORT_START("P1") //Player 1
6735 	JOY_TYPE1_2BUTTONS(1)
6736 
6737 	PORT_START("P2") //Player 2
6738 	JOY_TYPE1_2BUTTONS(2)
6739 
6740 	PORT_START("COINS") //Coins + DSW
6741 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
6742 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
6743 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
6744 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT     )
6745 	PORT_DIPNAME( 0x0010, 0x0010, "Unknown 3-4*" )  // Jumpers, I guess
6746 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
6747 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6748 	PORT_DIPNAME( 0x0020, 0x0020, "Unknown 3-5*" )
6749 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
6750 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6751 	PORT_DIPNAME( 0x00c0, 0x0040, "License" )
6752 	PORT_DIPSETTING(      0x00c0, "Romstar" )
6753 	PORT_DIPSETTING(      0x0080, "Seta U.S.A" )
6754 	PORT_DIPSETTING(      0x0040, "Visco (Japan Only)" )
6755 	PORT_DIPSETTING(      0x0000, "Athena (Japan Only)" )
6756 
6757 	PORT_START("DSW") //2 DSWs - $600003 & 1.b
6758 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
6759 	PORT_DIPSETTING(      0x0002, DEF_STR( Easy ) )
6760 	PORT_DIPSETTING(      0x0003, DEF_STR( Normal ) )
6761 	PORT_DIPSETTING(      0x0001, DEF_STR( Hard ) )
6762 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
6763 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:3,4")
6764 	PORT_DIPSETTING(      0x0008, "150k, 350k" )
6765 	PORT_DIPSETTING(      0x000c, "200k, 500k" )
6766 	PORT_DIPSETTING(      0x0004, "300k, 600k" )
6767 	PORT_DIPSETTING(      0x0000, "400k" )
6768 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:5,6")
6769 	PORT_DIPSETTING(      0x0000, "1" )
6770 	PORT_DIPSETTING(      0x0010, "2" )
6771 	PORT_DIPSETTING(      0x0030, "3" )
6772 	PORT_DIPSETTING(      0x0020, "5" )
6773 	PORT_DIPNAME( 0x0040, 0x0040, "Play Mode" ) PORT_DIPLOCATION("SW2:7")
6774 	PORT_DIPSETTING(      0x0040, "2 Players" )
6775 	PORT_DIPSETTING(      0x0000, "4 Players" )
6776 	PORT_DIPNAME( 0x0080, 0x0080, "CPU Player During Multi-Player Game" ) PORT_DIPLOCATION("SW2:8")
6777 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
6778 	PORT_DIPSETTING(      0x0080, DEF_STR( Yes ) )
6779 
6780 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:1")
6781 	PORT_DIPSETTING(      0x0100, DEF_STR( Upright ) )
6782 	PORT_DIPSETTING(      0x0000, DEF_STR( Cocktail ) )
6783 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:2")
6784 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
6785 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6786 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:3")
6787 	PORT_DIPSETTING(      0x0400, "Every 3rd Loop" )
6788 	PORT_DIPSETTING(      0x0000, "Every 7th Loop" )
6789 	PORT_SERVICE_DIPLOC(  0x0800, IP_ACTIVE_LOW, "SW1:4" )
6790 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:5,6")
6791 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
6792 	PORT_DIPSETTING(      0x1000, DEF_STR( 3C_1C ) )
6793 	PORT_DIPSETTING(      0x2000, DEF_STR( 2C_1C ) )
6794 	PORT_DIPSETTING(      0x3000, DEF_STR( 1C_1C ) )
6795 	PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:7,8")
6796 	PORT_DIPSETTING(      0xc000, DEF_STR( 1C_2C ) )
6797 	PORT_DIPSETTING(      0x8000, DEF_STR( 1C_3C ) )
6798 	PORT_DIPSETTING(      0x4000, DEF_STR( 1C_4C ) )
6799 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
6800 
6801 	PORT_START("P3") //Player 3
6802 	JOY_TYPE1_2BUTTONS(3)
6803 
6804 	PORT_START("P4") //Player 4
6805 	JOY_TYPE1_2BUTTONS(4)
6806 INPUT_PORTS_END
6807 
6808 
6809 /***************************************************************************
6810                                 Zing Zing Zip
6811 ***************************************************************************/
6812 
6813 static INPUT_PORTS_START( zingzip )
6814 	PORT_START("P1") //Player 1 - $400000.w
6815 	JOY_TYPE1_2BUTTONS(1)
6816 
6817 	PORT_START("P2") //Player 2 - $400002.w
6818 	JOY_TYPE1_2BUTTONS(2)
6819 
6820 	PORT_START("COINS") //Coins - $400004.w
6821 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
6822 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN  ) // no coin 2
6823 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
6824 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT     )
6825 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6826 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6827 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6828 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN  )
6829 
6830 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
6831 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
6832 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
6833 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6834 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
6835 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
6836 	PORT_DIPSETTING(      0x0002, DEF_STR( On ) )
6837 	PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW2:3" ) /* Manual States dips 3-7 are unused */
6838 	PORT_DIPUNUSED_DIPLOC( 0x0008, 0x0008, "SW2:4" ) /* Listed as "Unused" */
6839 	PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "SW2:5" ) /* Listed as "Unused" */
6840 	PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW2:6" ) /* Listed as "Unused" */
6841 	PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW2:7" ) /* Listed as "Unused" */
6842 	PORT_SERVICE_DIPLOC(  0x0080, IP_ACTIVE_LOW, "SW2:8" )
6843 
6844 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
6845 	PORT_DIPSETTING(      0x0200, "2" )
6846 	PORT_DIPSETTING(      0x0300, "3" )
6847 	PORT_DIPSETTING(      0x0100, "4" )
6848 	PORT_DIPSETTING(      0x0000, "5" )
6849 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
6850 	PORT_DIPSETTING(      0x0800, DEF_STR( Easy )    )
6851 	PORT_DIPSETTING(      0x0c00, DEF_STR( Normal )  )
6852 	PORT_DIPSETTING(      0x0400, DEF_STR( Hard )    )
6853 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
6854 	PORT_DIPNAME( 0xf000, 0xf000, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:5,6,7,8")
6855 	PORT_DIPSETTING(      0xa000, DEF_STR( 6C_1C ) )
6856 	PORT_DIPSETTING(      0xb000, DEF_STR( 5C_1C ) )
6857 	PORT_DIPSETTING(      0xc000, DEF_STR( 4C_1C ) )
6858 	PORT_DIPSETTING(      0xd000, DEF_STR( 3C_1C ) )
6859 	PORT_DIPSETTING(      0x1000, DEF_STR( 8C_3C ) )
6860 	PORT_DIPSETTING(      0xe000, DEF_STR( 2C_1C ) )
6861 	PORT_DIPSETTING(      0x2000, DEF_STR( 5C_3C ) )
6862 	PORT_DIPSETTING(      0x3000, DEF_STR( 3C_2C ) )
6863 	PORT_DIPSETTING(      0xf000, DEF_STR( 1C_1C ) )
6864 	PORT_DIPSETTING(      0x4000, DEF_STR( 2C_3C ) )
6865 	PORT_DIPSETTING(      0x9000, DEF_STR( 1C_2C ) )
6866 	PORT_DIPSETTING(      0x8000, DEF_STR( 1C_3C ) )
6867 	PORT_DIPSETTING(      0x7000, DEF_STR( 1C_4C ) )
6868 	PORT_DIPSETTING(      0x6000, DEF_STR( 1C_5C ) )
6869 	PORT_DIPSETTING(      0x5000, DEF_STR( 1C_6C ) )
6870 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
6871 INPUT_PORTS_END
6872 
6873 /*************************************
6874         Pairs Love
6875 *************************************/
6876 
6877 static INPUT_PORTS_START( pairlove )
6878 	PORT_START("P1") //Player 1 - $500001.b
6879 	JOY_TYPE1_2BUTTONS(1)   // button2 = speed up
6880 
6881 	PORT_START("P2") //Player 2 - $500003.b
6882 	JOY_TYPE1_2BUTTONS(2)
6883 
6884 	PORT_START("COINS") //Coins + DSW - $500005.b
6885 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
6886 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
6887 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
6888 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT     )
6889 
6890 	PORT_START("DSW")    // 2 DIP switches
6891 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
6892 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
6893 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6894 	PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
6895 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
6896 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6897 	PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW2:3" ) /* Listed as "Unused" */
6898 	PORT_DIPUNUSED_DIPLOC( 0x0008, 0x0008, "SW2:4" ) /* Listed as "Unused" */
6899 	PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "SW2:5" ) /* Listed as "Unused" */
6900 	PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW2:6" ) /* Listed as "Unused" */
6901 	PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW2:7" ) /* Listed as "Unused" */
6902 	PORT_SERVICE_DIPLOC(  0x0080, IP_ACTIVE_LOW, "SW2:8" )
6903 
6904 	PORT_DIPUNUSED_DIPLOC( 0x0100, 0x0100, "SW1:1" ) /* Listed as "Unused" */
6905 	PORT_DIPUNUSED_DIPLOC( 0x0200, 0x0200, "SW1:2" ) /* Listed as "Unused" */
6906 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
6907 	PORT_DIPSETTING(      0x0800, DEF_STR( Easy ) )
6908 	PORT_DIPSETTING(      0x0c00, DEF_STR( Normal ) )
6909 	PORT_DIPSETTING(      0x0400, DEF_STR( Hard ) )
6910 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
6911 	PORT_DIPNAME( 0xf000, 0xf000, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:5,6,7,8")
6912 	PORT_DIPSETTING(      0xa000, DEF_STR( 6C_1C ) )
6913 	PORT_DIPSETTING(      0xb000, DEF_STR( 5C_1C ) )
6914 	PORT_DIPSETTING(      0xc000, DEF_STR( 4C_1C ) )
6915 	PORT_DIPSETTING(      0xd000, DEF_STR( 3C_1C ) )
6916 	PORT_DIPSETTING(      0x1000, DEF_STR( 8C_3C ) )
6917 	PORT_DIPSETTING(      0xe000, DEF_STR( 2C_1C ) )
6918 	PORT_DIPSETTING(      0x2000, DEF_STR( 5C_3C ) )
6919 	PORT_DIPSETTING(      0x3000, DEF_STR( 3C_2C ) )
6920 	PORT_DIPSETTING(      0xf000, DEF_STR( 1C_1C ) )
6921 	PORT_DIPSETTING(      0x4000, DEF_STR( 2C_3C ) )
6922 	PORT_DIPSETTING(      0x9000, DEF_STR( 1C_2C ) )
6923 	PORT_DIPSETTING(      0x8000, DEF_STR( 1C_3C ) )
6924 	PORT_DIPSETTING(      0x7000, DEF_STR( 1C_4C ) )
6925 	PORT_DIPSETTING(      0x6000, DEF_STR( 1C_5C ) )
6926 	PORT_DIPSETTING(      0x5000, DEF_STR( 1C_6C ) )
6927 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
6928 INPUT_PORTS_END
6929 
6930 /***************************************************************************
6931                                 Orbs
6932 ***************************************************************************/
6933 
6934 static INPUT_PORTS_START( orbs )
6935 	PORT_START("P1") //Player 1
6936 	JOY_TYPE1_1BUTTON(1)
6937 
6938 	PORT_START("P2") //Player 2 ??
6939 	JOY_TYPE1_1BUTTON(2)
6940 
6941 	PORT_START("COINS") //Coins
6942 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
6943 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
6944 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_IMPULSE(5)
6945 	PORT_BIT( 0x0008, IP_ACTIVE_LOW,  IPT_UNKNOWN )
6946 	PORT_BIT( 0x0010, IP_ACTIVE_LOW,  IPT_UNKNOWN )
6947 	PORT_BIT( 0x0020, IP_ACTIVE_LOW,  IPT_UNKNOWN )
6948 	PORT_BIT( 0x0040, IP_ACTIVE_LOW,  IPT_UNKNOWN )
6949 	PORT_BIT( 0x0080, IP_ACTIVE_LOW,  IPT_UNKNOWN )
6950 
6951 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
6952 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
6953 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
6954 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6955 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
6956 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
6957 	PORT_DIPSETTING(      0x0002, DEF_STR( On ) )
6958 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:3,4")
6959 	PORT_DIPSETTING(      0x0008, DEF_STR( Easy ) )
6960 	PORT_DIPSETTING(      0x000c, DEF_STR( Normal ) )
6961 	PORT_DIPSETTING(      0x0004, DEF_STR( Hard ) )
6962 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
6963 	PORT_DIPNAME( 0x0010, 0x0010, "Stock" ) PORT_DIPLOCATION("SW2:5")
6964 	PORT_DIPSETTING(      0x0010, "1" )
6965 	PORT_DIPSETTING(      0x0000, "2" )
6966 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Level_Select ) ) PORT_DIPLOCATION("SW2:6")
6967 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
6968 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6969 	PORT_DIPNAME( 0x0040, 0x0040, "Timer speed" ) PORT_DIPLOCATION("SW2:7")
6970 	PORT_DIPSETTING(      0x0040, DEF_STR( Normal ) )
6971 	PORT_DIPSETTING(      0x0000, "Fast" )
6972 	PORT_SERVICE_DIPLOC(  0x0080, IP_ACTIVE_LOW, "SW2:8" )
6973 
6974 	PORT_DIPNAME( 0x0700, 0x0700, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3")
6975 	PORT_DIPSETTING(      0x0500, DEF_STR( 3C_1C ) )
6976 	PORT_DIPSETTING(      0x0600, DEF_STR( 2C_1C ) )
6977 	PORT_DIPSETTING(      0x0700, DEF_STR( 1C_1C ) )
6978 	PORT_DIPSETTING(      0x0400, DEF_STR( 1C_2C ) )
6979 	PORT_DIPSETTING(      0x0300, DEF_STR( 1C_3C ) )
6980 	PORT_DIPSETTING(      0x0200, DEF_STR( 1C_4C ) )
6981 	PORT_DIPSETTING(      0x0100, DEF_STR( 1C_5C ) )
6982 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
6983 	PORT_DIPNAME( 0x3800, 0x3800, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:4,5,6")
6984 	PORT_DIPSETTING(      0x2800, DEF_STR( 3C_1C ) )
6985 	PORT_DIPSETTING(      0x3000, DEF_STR( 2C_1C ) )
6986 	PORT_DIPSETTING(      0x3800, DEF_STR( 1C_1C ) )
6987 	PORT_DIPSETTING(      0x2000, DEF_STR( 1C_2C ) )
6988 	PORT_DIPSETTING(      0x1800, DEF_STR( 1C_3C ) )
6989 	PORT_DIPSETTING(      0x1000, DEF_STR( 1C_4C ) )
6990 	PORT_DIPSETTING(      0x0800, DEF_STR( 1C_5C ) )
6991 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
6992 	PORT_DIPNAME( 0x4000, 0x4000, "Force Coinage (Half Coin)" ) PORT_DIPLOCATION("SW1:7")
6993 	PORT_DIPSETTING(      0x4000, DEF_STR( No ) )
6994 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_1C ) )
6995 	PORT_DIPNAME( 0x8000, 0x8000, "Unknown 1-8" ) PORT_DIPLOCATION("SW1:8")
6996 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
6997 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
6998 INPUT_PORTS_END
6999 
7000 /***************************************************************************
7001                   Kero Kero Keroppi no Issyoni Asobou
7002 ***************************************************************************/
7003 
7004 
7005 static INPUT_PORTS_START( keroppi )
7006 	PORT_START("P1")
7007 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
7008 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
7009 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
7010 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
7011 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
7012 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
7013 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Prize Out") PORT_CODE(KEYCODE_W)
7014 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
7015 
7016 	PORT_START("P2")
7017 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
7018 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
7019 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_IMPULSE(5)
7020 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
7021 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
7022 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
7023 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
7024 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
7025 
7026 	PORT_START("COINS") //Coins
7027 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
7028 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Prize Hopper") PORT_CODE(KEYCODE_Q)
7029 	PORT_BIT( 0x0004, IP_ACTIVE_LOW,  IPT_UNKNOWN )
7030 	PORT_BIT( 0x0008, IP_ACTIVE_LOW,  IPT_UNKNOWN )
7031 	PORT_BIT( 0x0010, IP_ACTIVE_LOW,  IPT_UNKNOWN )
7032 	PORT_BIT( 0x0020, IP_ACTIVE_LOW,  IPT_UNKNOWN )
7033 	PORT_BIT( 0x0040, IP_ACTIVE_LOW,  IPT_UNKNOWN )
7034 	PORT_BIT( 0x0080, IP_ACTIVE_LOW,  IPT_UNKNOWN )
7035 
7036 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
7037 	PORT_DIPNAME( 0x0003, 0x0003, "Obstacle Course Payout Setting" ) PORT_DIPLOCATION("SW2:1,2")
7038 	PORT_DIPSETTING(      0x0000, "Highest (0, 3, 5, 7, 15 Tickets)" )
7039 	PORT_DIPSETTING(      0x0001, "High (0, 3, 4, 5, 10 Tickets)" )
7040 	PORT_DIPSETTING(      0x0002, "Low (0, 1, 2, 3, 6 Tickets)" )
7041 	PORT_DIPSETTING(      0x0003, "Medium (0, 2, 3, 4, 8 Tickets)" )
7042 	PORT_DIPNAME( 0x000c, 0x000c, "Treasure Hunt Payout Setting" ) PORT_DIPLOCATION("SW2:3,4")
7043 	PORT_DIPSETTING(      0x0000, "Highest (5, 10, 15 Tickets)" )
7044 	PORT_DIPSETTING(      0x0004, "High (5, 7, 10 Tickets)" )
7045 	PORT_DIPSETTING(      0x0008, "Low (1, 3, 5 Tickets)" )
7046 	PORT_DIPSETTING(      0x000c, "Medium (3, 5, 7 Tickets)" )
7047 	PORT_DIPNAME( 0x0030, 0x0030, "New Jersey Payout Setting" ) PORT_DIPLOCATION("SW2:5,6")
7048 	PORT_DIPSETTING(      0x0000, "Always Payout 5 Tickets" )
7049 	PORT_DIPSETTING(      0x0010, "Always Payout 3 Tickets" )
7050 	PORT_DIPSETTING(      0x0020, "Always Payout 1 Ticket" )
7051 	PORT_DIPSETTING(      0x0030, DEF_STR( Off ) )
7052 	PORT_DIPNAME( 0x00c0, 0x00c0, "Mercy Ticket Payout Setting (Treasure Hunt Only" ) PORT_DIPLOCATION("SW2:7,8")
7053 	PORT_DIPSETTING(      0x0000, "No Payout" )
7054 	PORT_DIPSETTING(      0x0040, "3 Tickets" )
7055 	PORT_DIPSETTING(      0x0080, "2 Tickets" )
7056 	PORT_DIPSETTING(      0x00c0, "1 Ticket" )
7057 
7058 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2")
7059 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
7060 	PORT_DIPSETTING(      0x0100, DEF_STR( 3C_1C ) )
7061 	PORT_DIPSETTING(      0x0200, DEF_STR( 2C_1C ) )
7062 	PORT_DIPSETTING(      0x0300, DEF_STR( 1C_1C ) )
7063 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:3")
7064 	PORT_DIPSETTING(      0x0400, DEF_STR( On ) )
7065 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
7066 	PORT_DIPNAME( 0x0800, 0x0800, "Vending Style" ) PORT_DIPLOCATION("SW1:4")
7067 	PORT_DIPSETTING(      0x0800, "Ticket" )
7068 	PORT_DIPSETTING(      0x0000, "No Vending" )
7069 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW1:5")
7070 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
7071 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7072 	PORT_DIPNAME( 0x6000, 0x6000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:6,7")
7073 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
7074 	PORT_DIPSETTING(      0x2000, DEF_STR( Hard ) )
7075 	PORT_DIPSETTING(      0x4000, DEF_STR( Easy ) )
7076 	PORT_DIPSETTING(      0x6000, DEF_STR( Normal ) )
7077 	PORT_DIPNAME( 0x8000, 0x8000, "Payout Setting" ) PORT_DIPLOCATION("SW1:8")
7078 	PORT_DIPSETTING(      0x8000, "Normal Payout" )
7079 	PORT_DIPSETTING(      0x0000, "No Payout" )
7080 
7081 INPUT_PORTS_END
7082 
7083 static INPUT_PORTS_START( keroppij )
7084 	PORT_START("P1")
7085 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
7086 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
7087 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
7088 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
7089 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
7090 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
7091 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Prize Out") PORT_CODE(KEYCODE_W)
7092 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
7093 
7094 	PORT_START("P2")
7095 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
7096 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
7097 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_IMPULSE(5)
7098 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
7099 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
7100 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
7101 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
7102 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
7103 
7104 	PORT_START("COINS") //Coins
7105 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
7106 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Prize Hopper") PORT_CODE(KEYCODE_Q)
7107 	PORT_BIT( 0x0004, IP_ACTIVE_LOW,  IPT_UNKNOWN )
7108 	PORT_BIT( 0x0008, IP_ACTIVE_LOW,  IPT_UNKNOWN )
7109 	PORT_BIT( 0x0010, IP_ACTIVE_LOW,  IPT_UNKNOWN )
7110 	PORT_BIT( 0x0020, IP_ACTIVE_LOW,  IPT_UNKNOWN )
7111 	PORT_BIT( 0x0040, IP_ACTIVE_LOW,  IPT_UNKNOWN )
7112 	PORT_BIT( 0x0080, IP_ACTIVE_LOW,  IPT_UNKNOWN )
7113 
7114 	PORT_START("DSW") //2 DSWs - $600001 & 3.b
7115 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2,3")
7116 	PORT_DIPSETTING(      0x0003, "1" )
7117 	PORT_DIPSETTING(      0x0005, "2" )
7118 	PORT_DIPSETTING(      0x0001, "3" )
7119 	PORT_DIPSETTING(      0x0007, "4" )
7120 	PORT_DIPSETTING(      0x0006, "5" )
7121 	PORT_DIPSETTING(      0x0002, "6" )
7122 	PORT_DIPSETTING(      0x0004, "7" )
7123 	PORT_DIPSETTING(      0x0000, "8" )
7124 	PORT_DIPNAME( 0x0038, 0x0038, "Game Select" ) PORT_DIPLOCATION("SW2:4,5,6")
7125 	PORT_DIPSETTING(      0x0038, "No. 1,2,3" )
7126 	PORT_DIPSETTING(      0x0030, "No. 1" )
7127 	PORT_DIPSETTING(      0x0028, "No. 2,3" )
7128 	PORT_DIPSETTING(      0x0020, "No. 3" )
7129 	PORT_DIPSETTING(      0x0018, "No. 1,2" )
7130 	PORT_DIPSETTING(      0x0010, "No. 2" )
7131 	PORT_DIPSETTING(      0x0008, "No. 1,3" )
7132 	PORT_DIPSETTING(      0x0000, "No. 1,2,3" )
7133 	PORT_DIPNAME( 0x0040, 0x0040, "Unknown 2-7" ) PORT_DIPLOCATION("SW2:7")
7134 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
7135 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7136 	PORT_DIPNAME( 0x0080, 0x0080, "Unknown 2-8" ) PORT_DIPLOCATION("SW2:8")
7137 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
7138 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7139 
7140 	PORT_DIPNAME( 0x0700, 0x0700, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3")
7141 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) )
7142 	PORT_DIPSETTING(      0x0400, DEF_STR( 4C_1C ) )
7143 	PORT_DIPSETTING(      0x0200, DEF_STR( 3C_1C ) )
7144 	PORT_DIPSETTING(      0x0600, DEF_STR( 2C_1C ) )
7145 	PORT_DIPSETTING(      0x0700, DEF_STR( 1C_1C ) )
7146 	PORT_DIPSETTING(      0x0300, DEF_STR( 1C_2C ) )
7147 	PORT_DIPSETTING(      0x0500, DEF_STR( 1C_3C ) )
7148 	PORT_DIPSETTING(      0x0100, DEF_STR( 1C_4C ) )
7149 	PORT_DIPNAME( 0x0800, 0x0800, "Unknown 1-4" ) PORT_DIPLOCATION("SW1:4")
7150 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
7151 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7152 	PORT_DIPNAME( 0x1000, 0x1000, "Unknown 1-5" ) PORT_DIPLOCATION("SW1:5")
7153 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
7154 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7155 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW1:6")
7156 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
7157 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7158 	PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
7159 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
7160 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7161 	PORT_SERVICE_DIPLOC(  0x8000, IP_ACTIVE_LOW, "SW1:8" )
7162 INPUT_PORTS_END
7163 
7164 /***************************************************************************
7165                                 Crazy Fight
7166 ***************************************************************************/
7167 
7168 static INPUT_PORTS_START( crazyfgt )
7169 	PORT_START("COINS") //Coins - $610000.w
7170 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
7171 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
7172 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
7173 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
7174 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
7175 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
7176 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
7177 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_CUSTOM )  // protection
7178 
7179 	PORT_START("UNK") //? - $610002.w
7180 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
7181 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
7182 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
7183 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
7184 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
7185 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
7186 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
7187 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
7188 
7189 	PORT_START("INPUT") //Player - $610004.w
7190 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("top-center")    PORT_CODE(KEYCODE_5_PAD)
7191 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("bottom-center") PORT_CODE(KEYCODE_2_PAD)
7192 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("top-left")      PORT_CODE(KEYCODE_4_PAD)
7193 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("bottom-left")   PORT_CODE(KEYCODE_1_PAD)
7194 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("top-right")     PORT_CODE(KEYCODE_6_PAD)
7195 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("bottom-right")  PORT_CODE(KEYCODE_3_PAD)
7196 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN  )
7197 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_SERVICE1 ) // ticket
7198 
7199 	PORT_START("DSW") //2 DSWs - $630001 & 3.b
7200 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3")
7201 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
7202 	PORT_DIPSETTING(      0x0001, DEF_STR( 3C_1C ) )
7203 	PORT_DIPSETTING(      0x0002, DEF_STR( 2C_1C ) )
7204 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
7205 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
7206 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
7207 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
7208 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_5C ) )
7209 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:4,5,6")
7210 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
7211 	PORT_DIPSETTING(      0x0008, DEF_STR( 3C_1C ) )
7212 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )
7213 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
7214 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
7215 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
7216 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
7217 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_5C ) )
7218 	PORT_DIPNAME( 0x00c0, 0x0000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:7,8")
7219 	PORT_DIPSETTING(      0x00c0, "5" )
7220 	PORT_DIPSETTING(      0x0080, "10" )
7221 	PORT_DIPSETTING(      0x0040, "15" )
7222 	PORT_DIPSETTING(      0x0000, "20" )
7223 
7224 	PORT_SERVICE_DIPLOC(  0x0100, IP_ACTIVE_LOW, "SW1:1" )
7225 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:2")
7226 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
7227 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7228 	PORT_DIPNAME( 0x0c00, 0x0c00, "Difficulty?" ) PORT_DIPLOCATION("SW1:3,4")
7229 	PORT_DIPSETTING(      0x0c00, "0" )
7230 	PORT_DIPSETTING(      0x0800, "1" )
7231 	PORT_DIPSETTING(      0x0400, "2" )
7232 	PORT_DIPSETTING(      0x0000, "3" )
7233 	PORT_DIPNAME( 0x3000, 0x3000, "Energy" ) PORT_DIPLOCATION("SW1:5,6")
7234 	PORT_DIPSETTING(      0x1000, "24" )
7235 	PORT_DIPSETTING(      0x2000, "32" )
7236 	PORT_DIPSETTING(      0x3000, "48" )
7237 	PORT_DIPSETTING(      0x0000, "100" )
7238 	PORT_DIPNAME( 0xc000, 0xc000, "Bonus?" ) PORT_DIPLOCATION("SW1:7,8")
7239 	PORT_DIPSETTING(      0xc000, "0" )
7240 	PORT_DIPSETTING(      0x8000, "1" )
7241 	PORT_DIPSETTING(      0x4000, "2" )
7242 	PORT_DIPSETTING(      0x0000, "3" )
7243 INPUT_PORTS_END
7244 
7245 /***************************************************************************
7246                                  Jockey Club
7247 ***************************************************************************/
7248 
7249 /*
7250     Betting Panel         (keys)
7251 
7252     1 1-2 2-3 3-4 4-5 5-6 (1QWERT)
7253     2 1-3 2-4 3-5 4-6     (2ASDF)
7254     3 1-4 2-5 3-6         (3ZXC)
7255     4 1-5 2-6             (4YU)
7256     5 1-6                 (5H)
7257     6                     (6)
7258 */
7259 
7260 static INPUT_PORTS_START( jockeyc_keyboards )
7261 	PORT_START("KEY1.0")  // 200000.w (0x08)
7262 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 1") PORT_CODE(KEYCODE_1_PAD)
7263 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 2") PORT_CODE(KEYCODE_2_PAD)
7264 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 3") PORT_CODE(KEYCODE_3_PAD)
7265 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 4") PORT_CODE(KEYCODE_4_PAD)
7266 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 5") PORT_CODE(KEYCODE_5_PAD)
7267 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
7268 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
7269 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
7270 	PORT_START("KEY2.0")
7271 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 1")
7272 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 2")
7273 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 3")
7274 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 4")
7275 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 5")
7276 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
7277 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
7278 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
7279 
7280 	PORT_START("KEY1.1")  // 200000.w (0x10)
7281 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 6") PORT_CODE(KEYCODE_6_PAD)
7282 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Payout")
7283 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START3  ) PORT_NAME("P1 Credit") // shown in test mode, but seems unused
7284 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1  )
7285 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Cancel")
7286 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
7287 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
7288 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
7289 	PORT_START("KEY2.1")
7290 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 6")
7291 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Payout")
7292 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START4  ) PORT_NAME("P2 Credit") // shown in test mode, but seems unused
7293 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2  )
7294 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Cancel")
7295 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
7296 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
7297 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
7298 
7299 	PORT_START("KEY1.2")  // 200000.w (0x20)
7300 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 1-2") PORT_CODE(KEYCODE_Q)
7301 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 1-3") PORT_CODE(KEYCODE_A)
7302 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 1-4") PORT_CODE(KEYCODE_Z)
7303 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 1-5") PORT_CODE(KEYCODE_Y)
7304 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 1-6") PORT_CODE(KEYCODE_H)
7305 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
7306 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
7307 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
7308 	PORT_START("KEY2.2")
7309 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 1-2")
7310 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 1-3")
7311 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 1-4")
7312 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 1-5")
7313 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 1-6")
7314 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
7315 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
7316 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
7317 
7318 	PORT_START("KEY1.3")  // 200000.w (0x40)
7319 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 2-3") PORT_CODE(KEYCODE_W)
7320 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 2-4") PORT_CODE(KEYCODE_S)
7321 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 2-5") PORT_CODE(KEYCODE_X)
7322 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 2-6") PORT_CODE(KEYCODE_U)
7323 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 3-4") PORT_CODE(KEYCODE_E)
7324 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
7325 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
7326 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
7327 	PORT_START("KEY2.3")
7328 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 2-3")
7329 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 2-4")
7330 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 2-5")
7331 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 2-6")
7332 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 3-4")
7333 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
7334 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
7335 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
7336 
7337 	PORT_START("KEY1.4")  // 200000.w (0x80)
7338 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 3-5") PORT_CODE(KEYCODE_D)
7339 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 3-6") PORT_CODE(KEYCODE_C)
7340 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 4-5") PORT_CODE(KEYCODE_R)
7341 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 4-6") PORT_CODE(KEYCODE_F)
7342 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P1 Bet 5-6") PORT_CODE(KEYCODE_T)
7343 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
7344 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
7345 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
7346 	PORT_START("KEY2.4")
7347 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 3-5")
7348 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 3-6")
7349 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 4-5")
7350 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 4-6")
7351 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER   ) PORT_NAME("P2 Bet 5-6")
7352 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
7353 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
7354 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
7355 INPUT_PORTS_END
7356 
7357 static INPUT_PORTS_START( jockeyc )
7358 	PORT_INCLUDE( jockeyc_keyboards )
7359 
7360 	PORT_START("COIN") // 200002.w
7361 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_CUSTOM ) // Coin Drop - 1P
7362 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_CUSTOM ) // Hopper Overflow - 1P
7363 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper1", ticket_dispenser_device, line_r) // Hopper Coin Out - 1P
7364 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_OTHER   ) // Attendant Pay - 1P
7365 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("Coin B - 1P")
7366 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("Coin A - 1P")
7367 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_CUSTOM ) // Coin Sense 2 - 1P
7368 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_CUSTOM ) // Coin Sense 1 - 1P
7369 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_CUSTOM ) // Coin Drop - 2P
7370 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_CUSTOM ) // Sel Sense (single hopper mode) / Hopper Overflow - 2P (double hopper mode)
7371 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper2", ticket_dispenser_device, line_r) // Hopper Coin Out - 2P (double hopper mode)
7372 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_OTHER   ) // Attendant Pay - 2P
7373 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_NAME("Coin B - 2P")
7374 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("Coin A - 2P")
7375 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_CUSTOM ) // Coin Sense 2 - 2P
7376 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_CUSTOM ) // Coin Sense 1 - 2P
7377 
7378 	PORT_START("SERVICE") // 200010.w
7379 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR ) PORT_TOGGLE
7380 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
7381 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
7382 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT ) PORT_CODE(KEYCODE_L)
7383 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
7384 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
7385 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
7386 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
7387 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
7388 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
7389 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_OTHER    ) PORT_NAME("Special Test")  PORT_CODE(KEYCODE_F1) // enter Special Screen in test mode
7390 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_SERVICE4 ) PORT_NAME("Call Attendant") // Flips an output bit (lamp?)
7391 	// Electronic key switches, fitted beneath the front panel:
7392 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Last Game Key") PORT_TOGGLE // Test Mode at boot, Last Game during play
7393 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Meter Key")     PORT_TOGGLE
7394 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Reset Key")     PORT_TOGGLE // reset error condition, e.g. hopper empty error
7395 	PORT_CONFNAME( 0x8000, 0x0000, "Backup Battery"  )
7396 	PORT_CONFSETTING(      0x0000, "OK" )
7397 	PORT_CONFSETTING(      0x8000, "NG" )
7398 
7399 	PORT_START("DSW1") // SW1
7400 	PORT_DIPNAME( 0x01, 0x01, "Coin Type" )             PORT_DIPLOCATION("SW1:1")
7401 	PORT_DIPSETTING(    0x01, "Coin" )
7402 	PORT_DIPSETTING(    0x00, "Medal" )
7403 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )  PORT_DIPLOCATION("SW1:2")
7404 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
7405 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
7406 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )                 PORT_DIPLOCATION("SW1:3")
7407 	PORT_DIPNAME( 0x08, 0x00, "Max Jackpot" )           PORT_DIPLOCATION("SW1:4")
7408 	PORT_DIPSETTING(    0x08, "500 coins" )
7409 	PORT_DIPSETTING(    0x00, "Unlimited" )
7410 	PORT_DIPNAME( 0x10, 0x10, "Music During Race" )     PORT_DIPLOCATION("SW1:5")
7411 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
7412 	PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
7413 	PORT_DIPNAME( 0x20, 0x20, "Coin Divider?" )         PORT_DIPLOCATION("SW1:6")
7414 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
7415 	PORT_DIPSETTING(    0x20, DEF_STR( Yes ) )
7416 	PORT_DIPNAME( 0x40, 0x00, "Hopper" )                PORT_DIPLOCATION("SW1:7")
7417 	PORT_DIPSETTING(    0x40, "Single" )
7418 	PORT_DIPSETTING(    0x00, "Double" )
7419 	PORT_DIPNAME( 0x80, 0x80, "Coin Sensor" )           PORT_DIPLOCATION("SW1:8")
7420 	PORT_DIPSETTING(    0x00, "Single" )
7421 	PORT_DIPSETTING(    0x80, "Double" )
7422 
7423 	PORT_START("DSW2_3") // SW2 & SW3
7424 	PORT_DIPNAME( 0x0007, 0x0007, "Payout Rate" )       PORT_DIPLOCATION("SW2:1,2,3")
7425 	PORT_DIPSETTING(      0x0007, "100%" )
7426 	PORT_DIPSETTING(      0x0006, "95%" )
7427 	PORT_DIPSETTING(      0x0005, "90%" )
7428 	PORT_DIPSETTING(      0x0004, "85%" )
7429 	PORT_DIPSETTING(      0x0003, "80%" )
7430 	PORT_DIPSETTING(      0x0002, "75%" )
7431 	PORT_DIPSETTING(      0x0001, "70%" )
7432 	PORT_DIPSETTING(      0x0000, "65%" )
7433 	PORT_DIPUNKNOWN_DIPLOC(0x0008, 0x0008, "SW2:4")
7434 	PORT_DIPUNKNOWN_DIPLOC(0x0010, 0x0010, "SW2:5")
7435 	PORT_DIPUNKNOWN_DIPLOC(0x0020, 0x0020, "SW2:6")
7436 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coinage ) )  PORT_DIPLOCATION("SW2:7,8")
7437 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )
7438 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_2C ) )
7439 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_5C ) )
7440 	PORT_DIPSETTING(      0x0000, "1 Coin/10 Credits" )
7441 
7442 	PORT_DIPUNKNOWN_DIPLOC(0x0100, 0x0100, "SW3:1")
7443 	PORT_DIPUNKNOWN_DIPLOC(0x0200, 0x0200, "SW3:2")
7444 	PORT_DIPUNKNOWN_DIPLOC(0x0400, 0x0400, "SW3:3")
7445 	PORT_DIPUNKNOWN_DIPLOC(0x0800, 0x0800, "SW3:4")
7446 	PORT_DIPUNKNOWN_DIPLOC(0x1000, 0x1000, "SW3:5")
7447 	PORT_DIPUNKNOWN_DIPLOC(0x2000, 0x2000, "SW3:6")
7448 	PORT_DIPNAME( 0x4000, 0x4000, "Auto Bet" )          PORT_DIPLOCATION("SW3:7")
7449 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
7450 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7451 	PORT_DIPNAME( 0x8000, 0x8000, "Skip Race" )         PORT_DIPLOCATION("SW3:8") // debug? corrupt background
7452 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
7453 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7454 
7455 	PORT_START("CABINET")
7456 	PORT_CONFNAME( 0x01, 0x01, "Fitted Hoppers" )
7457 	PORT_CONFSETTING(    0x00, "1" )
7458 	PORT_CONFSETTING(    0x01, "2" )
7459 
7460 #if JOCKEYC_HIDDEN_EDITOR
7461 	PORT_START("P1X") // 400001/3.b (low/high)
7462 	PORT_BIT( 0x0fff, 0x0000, IPT_TRACKBALL_X ) PORT_SENSITIVITY(70) PORT_KEYDELTA(8)
7463 	PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) // dec
7464 	PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) // inc
7465 	PORT_START("P1Y") // 400005/7.b (low/high)
7466 	PORT_BIT( 0x0fff, 0x0000, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(70) PORT_KEYDELTA(8)
7467 #endif
7468 INPUT_PORTS_END
7469 
7470 
7471 /***************************************************************************
7472                              International Toote
7473 ***************************************************************************/
7474 
7475 static INPUT_PORTS_START( inttoote )
7476 	PORT_INCLUDE( jockeyc_keyboards )
7477 	PORT_MODIFY("KEY1.1") // 200000.w (0x10)
7478 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no 1p credit
7479 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no separate start keys?
7480 	PORT_MODIFY("KEY2.1")
7481 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
7482 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
7483 	// inttoote: press cancel before betting to repeat the last bet
7484 
7485 	PORT_START("COIN") // 200002.w
7486 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
7487 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
7488 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_CUSTOM ) // P1 coin out
7489 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
7490 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
7491 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
7492 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
7493 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
7494 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
7495 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
7496 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_CUSTOM )  // P2 coin out
7497 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
7498 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
7499 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
7500 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
7501 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
7502 
7503 	PORT_START("SERVICE") // 200010.w
7504 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR ) PORT_TOGGLE // open the door when in function menu to access the test mode
7505 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1  )
7506 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Help") // press together with one of 1-2, 1-3, 1-4, 1-5, 1-6, 2-3, 2-4 to set clock
7507 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
7508 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
7509 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
7510 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
7511 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
7512 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
7513 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
7514 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
7515 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
7516 	// Electronic key switch, fitted beneath the front panel:
7517 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Function Key") PORT_TOGGLE // Function menu
7518 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
7519 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
7520 	PORT_CONFNAME( 0x8000, 0x0000, "Backup Battery" )
7521 	PORT_CONFSETTING(      0x0000, "OK" )
7522 	PORT_CONFSETTING(      0x8000, "NG" )
7523 
7524 	PORT_START("DSW1") // SW1
7525 	PORT_DIPNAME( 0x03, 0x03, "Max Bet (Per Horse)" )     PORT_DIPLOCATION("SW1:1,2")
7526 	PORT_DIPSETTING(    0x03, "10" )
7527 	PORT_DIPSETTING(    0x02, "20" )
7528 	PORT_DIPSETTING(    0x01, "99" )
7529 	PORT_DIPSETTING(    0x00, "99 (alt)" )
7530 	PORT_DIPNAME( 0x1c, 0x1c, DEF_STR( Coinage ) )        PORT_DIPLOCATION("SW1:3,4,5")
7531 	PORT_DIPSETTING(    0x1c, DEF_STR( 1C_1C ) )
7532 	PORT_DIPSETTING(    0x18, DEF_STR( 1C_2C ) )
7533 	PORT_DIPSETTING(    0x14, DEF_STR( 1C_3C ) )
7534 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_4C ) )
7535 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_5C ) )
7536 	PORT_DIPSETTING(    0x08, "1 Coin/10 Credits" )
7537 	PORT_DIPSETTING(    0x04, "1 Coin/20 Credits" )
7538 	PORT_DIPSETTING(    0x00, "1 Coin/50 Credits" )
7539 	PORT_DIPNAME( 0x20, 0x20, "Unknown SW1:6" )           PORT_DIPLOCATION("SW1:6")
7540 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
7541 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
7542 	PORT_DIPNAME( 0x40, 0x40, "Unknown SW1:7" )           PORT_DIPLOCATION("SW1:7")
7543 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
7544 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
7545 	PORT_DIPNAME( 0x80, 0x80, "Unknown SW1:8" )           PORT_DIPLOCATION("SW1:8")
7546 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
7547 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
7548 
7549 	PORT_START("DSW2_3") // SW2 & SW3
7550 	PORT_DIPNAME( 0x0001, 0x0001, "Unknown SW2:1" )       PORT_DIPLOCATION("SW2:1")
7551 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
7552 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7553 	PORT_DIPNAME( 0x0002, 0x0002, "Unknown SW2:2" )       PORT_DIPLOCATION("SW2:2")
7554 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
7555 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7556 	PORT_DIPNAME( 0x0004, 0x0004, "Unknown SW2:3" )       PORT_DIPLOCATION("SW2:3")
7557 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
7558 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7559 	PORT_DIPNAME( 0x0018, 0x0018, "Betting Clock Speed" ) PORT_DIPLOCATION("SW2:4,5")
7560 	PORT_DIPSETTING(      0x0018, "Slowest" )
7561 	PORT_DIPSETTING(      0x0010, "Slower" )
7562 	PORT_DIPSETTING(      0x0008, "Faster" )
7563 	PORT_DIPSETTING(      0x0000, "Fastest" )
7564 	PORT_DIPNAME( 0x01e0, 0x01e0, "Payout Rate" )         PORT_DIPLOCATION("SW2:6,7,8,SW3:1")
7565 	PORT_DIPSETTING(      0x01e0, "80%" )
7566 	PORT_DIPSETTING(      0x01c0, "81%" )
7567 	PORT_DIPSETTING(      0x01a0, "82%" )
7568 	PORT_DIPSETTING(      0x0180, "83%" )
7569 	PORT_DIPSETTING(      0x0160, "84%" )
7570 	PORT_DIPSETTING(      0x0140, "85%" )
7571 	PORT_DIPSETTING(      0x0120, "86%" )
7572 	PORT_DIPSETTING(      0x0100, "87%" )
7573 	PORT_DIPSETTING(      0x00e0, "88%" )
7574 	PORT_DIPSETTING(      0x00c0, "89%" )
7575 	PORT_DIPSETTING(      0x00a0, "90%" )
7576 	PORT_DIPSETTING(      0x0080, "91%" )
7577 	PORT_DIPSETTING(      0x0060, "92%" )
7578 	PORT_DIPSETTING(      0x0040, "93%" )
7579 	PORT_DIPSETTING(      0x0020, "94%" )
7580 	PORT_DIPSETTING(      0x0000, "95%" )
7581 	PORT_DIPNAME( 0x0200, 0x0200, "Unknown SW3:2" )       PORT_DIPLOCATION("SW3:2")
7582 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
7583 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7584 	PORT_DIPNAME( 0x0400, 0x0400, "Hopper Payout" )       PORT_DIPLOCATION("SW3:3")
7585 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
7586 	PORT_DIPSETTING(      0x0400, DEF_STR( On ) )
7587 	PORT_DIPNAME( 0x0800, 0x0800, "Horses" )              PORT_DIPLOCATION("SW3:4")
7588 	PORT_DIPSETTING(      0x0800, "Random (6 Out Of 100)" ) // 6 horses randomly chosen from a stable of 100
7589 	PORT_DIPSETTING(      0x0000, "Cyclic (8 Set Races)"  ) // 8 set races continually cycled (player has a mental history of the preceding races)
7590 	PORT_DIPNAME( 0x1000, 0x1000, "Odds" )                PORT_DIPLOCATION("SW3:5")
7591 	PORT_DIPSETTING(      0x1000, "Lower" )
7592 	PORT_DIPSETTING(      0x0000, "Higher" )
7593 	PORT_DIPNAME( 0x2000, 0x2000, "Unknown SW3:6" )       PORT_DIPLOCATION("SW3:6")
7594 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
7595 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7596 	PORT_DIPNAME( 0x4000, 0x4000, "Unknown SW3:7" )       PORT_DIPLOCATION("SW3:7")
7597 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
7598 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7599 	PORT_DIPNAME( 0x8000, 0x8000, "Unknown SW3:8" )       PORT_DIPLOCATION("SW3:8")
7600 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
7601 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
7602 INPUT_PORTS_END
7603 
7604 
7605 /***************************************************************************
7606 
7607 
7608                                 Graphics Layouts
7609 
7610 Sprites and layers use 16x16 tile, made of four 8x8 tiles. They can be 4
7611 or 6 planes deep and are stored in a wealth of formats.
7612 
7613 ***************************************************************************/
7614 
7615 						/* First the 4 bit tiles */
7616 
7617 
7618 /* The tilemap bitplanes are packed togheter */
7619 static const gfx_layout layout_tilemap =
7620 {
7621 	16,16,
7622 	RGN_FRAC(1,1),
7623 	4,
7624 	{ STEP4(0,4) },
7625 	{ STEP4(4*4*8*3,1), STEP4(4*4*8*2,1), STEP4(4*4*8,1), STEP4(0,1) },
7626 	{ STEP8(0,4*4), STEP8(4*4*8*4,4*4) },
7627 	16*16*4
7628 };
7629 
7630 
7631 /* The sprite bitplanes are separated (but there are 2 per rom) */
7632 static const gfx_layout layout_sprites =
7633 {
7634 	16,16,
7635 	RGN_FRAC(1,2),
7636 	4,
7637 	{ RGN_FRAC(1,2) + 8, RGN_FRAC(1,2) + 0, 8, 0 },
7638 	{ STEP8(0,1), STEP8(8*2*8,1) },
7639 	{ STEP8(0,8*2), STEP8(8*2*8*2,8*2) },
7640 	16*16*2
7641 };
7642 
7643 
7644 static const gfx_layout layout_tilemap_8bpp =
7645 {
7646 	16,16,
7647 	RGN_FRAC(1,1),
7648 	8,
7649 	{ STEP8(0,4) },
7650 	{ STEP4(8*4*8*3,1), STEP4(8*4*8*2,1), STEP4(8*4*8,1), STEP4(0,1) },
7651 	{ STEP8(0,8*4), STEP8(8*4*8*4,8*4) },
7652 	16*16*8
7653 };
7654 
7655 
7656 						/* Then the 6 bit tiles */
7657 
7658 
7659 /* The tilemap bitplanes are packed together */
7660 static const gfx_layout layout_tilemap_6bpp =
7661 {
7662 	16,16,
7663 	RGN_FRAC(1,1),
7664 	6,
7665 	{ STEP4(0,4), STEP2(4*4,4) },
7666 	{ STEP4(6*4*8*3,1), STEP4(6*4*8*2,1), STEP4(6*4*8,1), STEP4(0,1) },
7667 	{ STEP8(0,6*4), STEP8(6*4*8*4,6*4) },
7668 	16*16*6
7669 };
7670 
7671 
7672 /***************************************************************************
7673                                 Blandia
7674 ***************************************************************************/
7675 
7676 static GFXDECODE_START( gfx_blandia )
7677 	GFXDECODE_ENTRY( "gfx1", 0, layout_sprites,                  0, 32 ) // [0] Sprites
7678 	GFXDECODE_ENTRY( "gfx2", 0, layout_tilemap_6bpp, 16*32+64*32*1, 32 ) // [1] Layer 1
7679 	GFXDECODE_ENTRY( "gfx3", 0, layout_tilemap_6bpp, 16*32+64*32*0, 32 ) // [2] Layer 2
7680 	GFXDECODE_ENTRY( "gfx2", 0, layout_tilemap_6bpp, 16*32+64*32*3, 32 ) // [3] Layer 1
7681 	GFXDECODE_ENTRY( "gfx3", 0, layout_tilemap_6bpp, 16*32+64*32*2, 32 ) // [4] Layer 2
7682 GFXDECODE_END
7683 
7684 /***************************************************************************
7685                                 DownTown
7686 ***************************************************************************/
7687 
7688 static GFXDECODE_START( gfx_downtown )
7689 	GFXDECODE_ENTRY( "gfx1", 0, layout_sprites, 0, 32 ) // [0] Sprites
7690 	GFXDECODE_ENTRY( "gfx2", 0, layout_tilemap, 0, 32 ) // [1] Layer 1
7691 GFXDECODE_END
7692 
7693 /***************************************************************************
7694                                 The Roulette
7695 ***************************************************************************/
7696 
7697 static GFXDECODE_START( gfx_setaroul )
7698 	GFXDECODE_ENTRY( "gfx1", 0, layout_sprites,  0x100, 16 ) // [0] Sprites
7699 	GFXDECODE_ENTRY( "gfx2", 0, layout_tilemap_8bpp, 0, 32 ) // [1] Layer 1
7700 GFXDECODE_END
7701 
7702 /***************************************************************************
7703                                 J.J.Squawkers
7704 ***************************************************************************/
7705 
7706 static GFXDECODE_START( gfx_jjsquawk )
7707 	GFXDECODE_ENTRY( "gfx1", 0, layout_sprites,                  0, 32 ) // [0] Sprites
7708 	GFXDECODE_ENTRY( "gfx2", 0, layout_tilemap_6bpp, 16*32+64*32*0, 32 ) // [1] Layer 1
7709 	GFXDECODE_ENTRY( "gfx3", 0, layout_tilemap_6bpp, 16*32+64*32*1, 32 ) // [2] Layer 2
7710 	GFXDECODE_ENTRY( "gfx2", 0, layout_tilemap_6bpp, 16*32+64*32*2, 32 ) // [3] Layer 1
7711 	GFXDECODE_ENTRY( "gfx3", 0, layout_tilemap_6bpp, 16*32+64*32*3, 32 ) // [4] Layer 2
7712 GFXDECODE_END
7713 
7714 /* The bitplanes are packed togheter: 4 bits in one rom, 2 bits in another.
7715    Since there isn't simmetry between the two roms, we load the latter with
7716    ROM_LOAD16_BYTE. This way we can think of it as a 4 planes rom, with the
7717    upper 2 planes unused.    */
7718 
7719 static const gfx_layout layout_tilemap_6bpp_jjsquawkb =
7720 {
7721 	16,16,
7722 	RGN_FRAC(1,2),
7723 	6,
7724 	{RGN_FRAC(1,2) + 0*4, RGN_FRAC(1,2) + 1*4, 2*4,3*4,0*4,1*4},
7725 	{256+128,256+129,256+130,256+131, 256+0,256+1,256+2,256+3,
7726 		128,129,130,131, 0,1,2,3},
7727 	{0*16,1*16,2*16,3*16,4*16,5*16,6*16,7*16,
7728 		32*16,33*16,34*16,35*16,36*16,37*16,38*16,39*16},
7729 	16*16*4
7730 };
7731 
7732 static GFXDECODE_START( gfx_jjsquawkb )
7733 	GFXDECODE_ENTRY( "gfx1", 0, layout_sprites,                            0, 32 ) // [0] Sprites
7734 	GFXDECODE_ENTRY( "gfx2", 0, layout_tilemap_6bpp_jjsquawkb, 16*32+64*32*0, 32 ) // [1] Layer 1
7735 	GFXDECODE_ENTRY( "gfx3", 0, layout_tilemap_6bpp_jjsquawkb, 16*32+64*32*1, 32 ) // [2] Layer 2
7736 	GFXDECODE_ENTRY( "gfx2", 0, layout_tilemap_6bpp_jjsquawkb, 16*32+64*32*2, 32 ) // [3] Layer 1
7737 	GFXDECODE_ENTRY( "gfx3", 0, layout_tilemap_6bpp_jjsquawkb, 16*32+64*32*3, 32 ) // [4] Layer 2
7738 GFXDECODE_END
7739 
7740 /***************************************************************************
7741                             Mobile Suit Gundam
7742 ***************************************************************************/
7743 
7744 static GFXDECODE_START( gfx_msgundam )
7745 	GFXDECODE_ENTRY( "gfx1", 0, layout_sprites,     0, 32 ) // [0] Sprites
7746 	GFXDECODE_ENTRY( "gfx2", 0, layout_tilemap, 0x400, 32 ) // [1] Layer 1
7747 	GFXDECODE_ENTRY( "gfx3", 0, layout_tilemap, 0x200, 32 ) // [2] Layer 2
7748 GFXDECODE_END
7749 
7750 /***************************************************************************
7751                                 Thundercade
7752 ***************************************************************************/
7753 
7754 static GFXDECODE_START( gfx_tndrcade )
7755 	GFXDECODE_ENTRY( "gfx1", 0, layout_sprites, 0, 32 ) // [0] Sprites
7756 GFXDECODE_END
7757 
7758 // TODO: pairlove sets up two identical palette banks at 0-1ff and 0x200-0x3ff in-game, 0x200-0x3ff only in service mode.
7759 //       Maybe there's a coloroffsetregister to somewhere?
7760 static GFXDECODE_START( gfx_pairlove )
7761 	GFXDECODE_ENTRY( "gfx1", 0, layout_sprites, 0x200, 32 ) // [0] Sprites
7762 GFXDECODE_END
7763 
7764 
7765 
7766 /***************************************************************************
7767                                 Wiggie Waggle / Super Bar
7768 ****************************************************************************/
7769 
7770 /* these seem to have some silly address swapping, different on each game
7771   we handle it here, but we could also handle it in the init instead */
7772 static const gfx_layout wiggie_layout =
7773 {
7774 	16,16,
7775 	RGN_FRAC(1,4),
7776 	4,
7777 	{ RGN_FRAC(0,4),RGN_FRAC(1,4),RGN_FRAC(2,4),RGN_FRAC(3,4) },
7778 	{ 0,1,2,3,4,5,6,7,
7779 		64,65,66,67,68,69,70,71 },
7780 	{ 0*8, 16*8, 4*8, 20*8,
7781 		2*8, 18*8, 6*8, 22*8,
7782 		1*8, 17*8, 5*8, 21*8,
7783 		3*8, 19*8, 7*8, 23*8 },
7784 	16*16
7785 };
7786 
7787 
7788 static GFXDECODE_START( gfx_wiggie )
7789 	GFXDECODE_ENTRY( "gfx1", 0, wiggie_layout, 0x0, 32 ) /* bg tiles */
7790 GFXDECODE_END
7791 
7792 static const gfx_layout superbar_layout =
7793 {
7794 	16,16,
7795 	RGN_FRAC(1,4),
7796 	4,
7797 	{ RGN_FRAC(0,4),RGN_FRAC(1,4),RGN_FRAC(2,4),RGN_FRAC(3,4) },
7798 	{ 0,1,2,3,4,5,6,7,
7799 		64,65,66,67,68,69,70,71 },
7800 	{ 0*8, 2*8,   16*8, 18*8,
7801 		1*8, 3*8,     17*8, 19*8,
7802 		4*8, 6*8,     20*8, 22*8,
7803 		5*8, 7*8,     21*8, 23*8 },
7804 	16*16
7805 };
7806 
7807 
7808 static GFXDECODE_START( gfx_superbar )
7809 	GFXDECODE_ENTRY( "gfx1", 0, superbar_layout, 0x0, 32 ) /* bg tiles */
7810 GFXDECODE_END
7811 
7812 /***************************************************************************
7813                                 U.S. Classic
7814 ***************************************************************************/
7815 
7816 static GFXDECODE_START( gfx_usclssic )
7817 	GFXDECODE_ENTRY( "gfx1", 0, layout_sprites,                0, 32 ) // [0] Sprites
7818 	GFXDECODE_ENTRY( "gfx2", 0, layout_tilemap_6bpp, 512+64*32*0, 32 ) // [1] Layer 1
7819 	GFXDECODE_ENTRY( "gfx2", 0, layout_tilemap_6bpp, 512+64*32*1, 32 ) // [2] Layer 1
7820 GFXDECODE_END
7821 
7822 
7823 /***************************************************************************
7824                                 Zing Zing Zip
7825 ***************************************************************************/
7826 
7827 static GFXDECODE_START( gfx_zingzip )
7828 	GFXDECODE_ENTRY( "gfx1", 0, layout_sprites,              16*32*0, 32 ) // [0] Sprites
7829 	GFXDECODE_ENTRY( "gfx2", 0, layout_tilemap_6bpp,         16*32*2, 32 ) // [1] Layer 1
7830 	GFXDECODE_ENTRY( "gfx3", 0, layout_tilemap,              16*32*1, 32 ) // [2] Layer 2
7831 	GFXDECODE_ENTRY( "gfx2", 0, layout_tilemap_6bpp, 16*32*2+64*32*1, 32 ) // [3] Layer 1
7832 GFXDECODE_END
7833 
7834 static const gfx_layout layout_zzbl =
7835 {
7836 	16,16,
7837 	RGN_FRAC(1,2),
7838 	4,
7839 	{ RGN_FRAC(1,2) + 8, RGN_FRAC(1,2) + 0, 8, 0 },
7840 	{ STEP8(0,1), STEP8(8*2*16,1) },
7841 	{ STEP16(0,8*2) },
7842 	16*16*2
7843 };
7844 
7845 static const gfx_layout layout_zzbl_6bpp =
7846 {
7847 	16,16,
7848 	RGN_FRAC(1,3),
7849 	6,
7850 	{ RGN_FRAC(2,3) + 8, RGN_FRAC(2,3) + 0, RGN_FRAC(1,3) + 8, RGN_FRAC(1,3) + 0, 8, 0 },
7851 	{ STEP8(8*2*16,1), STEP8(0,1) },
7852 	{ STEP16(0,8*2) },
7853 	16*16*2
7854 };
7855 
7856 
7857 static GFXDECODE_START( gfx_zingzipbl )
7858 	GFXDECODE_ENTRY( "gfx1", 0, layout_zzbl,              16*32*0, 32 ) // [0] Sprites
7859 	GFXDECODE_ENTRY( "gfx2", 0, layout_zzbl_6bpp,         16*32*2, 32 ) // [1] Layer 1
7860 	GFXDECODE_ENTRY( "gfx3", 0, layout_zzbl,              16*32*1, 32 ) // [2] Layer 2
7861 	GFXDECODE_ENTRY( "gfx2", 0, layout_zzbl_6bpp, 16*32*2+64*32*1, 32 ) // [3] Layer 1
7862 GFXDECODE_END
7863 
7864 
7865 /***************************************************************************
7866 
7867                                 Machine drivers
7868 
7869 ***************************************************************************/
7870 
TIMER_DEVICE_CALLBACK_MEMBER(seta_state::seta_interrupt_1_and_2)7871 TIMER_DEVICE_CALLBACK_MEMBER(seta_state::seta_interrupt_1_and_2)
7872 {
7873 	int scanline = param;
7874 
7875 	if (scanline == 240)
7876 		m_maincpu->set_input_line(1, HOLD_LINE);
7877 
7878 	if (scanline == 112)
7879 		m_maincpu->set_input_line(2, HOLD_LINE);
7880 }
7881 
TIMER_DEVICE_CALLBACK_MEMBER(seta_state::seta_interrupt_2_and_4)7882 TIMER_DEVICE_CALLBACK_MEMBER(seta_state::seta_interrupt_2_and_4)
7883 {
7884 	int scanline = param;
7885 
7886 	if (scanline == 240)
7887 		m_maincpu->set_input_line(2, HOLD_LINE);
7888 
7889 	if (scanline == 112)
7890 		m_maincpu->set_input_line(4, HOLD_LINE);
7891 }
7892 
7893 
TIMER_DEVICE_CALLBACK_MEMBER(seta_state::seta_sub_interrupt)7894 TIMER_DEVICE_CALLBACK_MEMBER(seta_state::seta_sub_interrupt)
7895 {
7896 	int scanline = param;
7897 
7898 	if (scanline == 240)
7899 		m_subcpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
7900 
7901 	if (scanline == 112)
7902 		m_subcpu->set_input_line(0, HOLD_LINE);
7903 }
7904 
7905 
7906 /***************************************************************************
7907                                 Thundercade
7908 ***************************************************************************/
7909 
TIMER_DEVICE_CALLBACK_MEMBER(seta_state::tndrcade_sub_interrupt)7910 TIMER_DEVICE_CALLBACK_MEMBER(seta_state::tndrcade_sub_interrupt)
7911 {
7912 	int scanline = param;
7913 
7914 	if (scanline == 240)
7915 		m_subcpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
7916 
7917 	if ((scanline % 16) == 0)
7918 		m_subcpu->set_input_line(0, HOLD_LINE);
7919 }
7920 
tndrcade(machine_config & config)7921 void seta_state::tndrcade(machine_config &config)
7922 {
7923 	/* basic machine hardware */
7924 	M68000(config, m_maincpu, 16000000/2); /* 8 MHz */
7925 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::tndrcade_map);
7926 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq2_line_assert));
7927 
7928 	M65C02(config, m_subcpu, 16000000/8); /* 2 MHz */
7929 	m_subcpu->set_addrmap(AS_PROGRAM, &seta_state::tndrcade_sub_map);
7930 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::tndrcade_sub_interrupt), "screen", 0, 1);
7931 
7932 	SETA001_SPRITE(config, m_seta001, 0);
7933 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
7934 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
7935 
7936 	/* video hardware */
7937 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
7938 	screen.set_refresh_hz(60);
7939 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
7940 	screen.set_size(64*8, 32*8);
7941 	screen.set_visarea(0*8, 48*8-1, 2*8, 30*8-1);
7942 	screen.set_screen_update(FUNC(seta_state::screen_update_seta_no_layers));
7943 	screen.set_palette(m_palette);
7944 
7945 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_tndrcade);
7946 	PALETTE(config, m_palette).set_entries(512);    // sprites only
7947 
7948 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
7949 
7950 	/* sound hardware */
7951 	SPEAKER(config, "mono").front_center();
7952 
7953 	ym2203_device &ym1(YM2203(config, "ym1", 16000000/4));   /* 4 MHz */
7954 	ym1.port_a_read_callback().set(FUNC(seta_state::dsw1_r));     /* input A: DSW 1 */
7955 	ym1.port_b_read_callback().set(FUNC(seta_state::dsw2_r));     /* input B: DSW 2 */
7956 	ym1.add_route(ALL_OUTPUTS, "mono", 0.35);
7957 
7958 	ym3812_device &ym2(YM3812(config, "ym2", 16000000/4));   /* 4 MHz */
7959 	ym2.add_route(ALL_OUTPUTS, "mono", 1.0);
7960 }
7961 
7962 
7963 /***************************************************************************
7964                                 Twin Eagle
7965 ***************************************************************************/
7966 
7967 /* Just like metafox, but:
7968    the sub cpu reads the ip at different locations,
7969    the visible area seems different. */
7970 
7971 /* twineagl lev 3 = lev 2 + lev 1 ! */
7972 
twineagl(machine_config & config)7973 void seta_state::twineagl(machine_config &config)
7974 {
7975 	/* basic machine hardware */
7976 	M68000(config, m_maincpu, 16000000/2); /* 8 MHz */
7977 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::downtown_map);
7978 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq3_line_assert));
7979 
7980 	M65C02(config, m_subcpu, 16000000/8); /* 2 MHz */
7981 	m_subcpu->set_addrmap(AS_PROGRAM, &seta_state::twineagl_sub_map);
7982 	TIMER(config, "s_scantimer").configure_scanline(FUNC(seta_state::seta_sub_interrupt), "screen", 0, 1);
7983 
7984 	SETA001_SPRITE(config, m_seta001, 0);
7985 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
7986 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
7987 
7988 	/* video hardware */
7989 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
7990 	screen.set_refresh_hz(57.42); // Possibly lower than 60Hz, Correct?
7991 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
7992 	screen.set_size(64*8, 32*8);
7993 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
7994 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
7995 	screen.set_palette(m_palette);
7996 
7997 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_downtown);
7998 	PALETTE(config, m_palette).set_entries(512);
7999 
8000 	MCFG_VIDEO_START_OVERRIDE(seta_state,twineagl_1_layer)
8001 
8002 	/* sound hardware */
8003 	SPEAKER(config, "mono").front_center();
8004 
8005 	GENERIC_LATCH_8(config, m_soundlatch[0]);
8006 	GENERIC_LATCH_8(config, m_soundlatch[1]);
8007 
8008 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8009 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
8010 }
8011 
8012 
8013 /***************************************************************************
8014                                 DownTown
8015 ***************************************************************************/
8016 
8017 /* downtown lev 3 = lev 2 + lev 1 ! */
8018 
downtown(machine_config & config)8019 void seta_state::downtown(machine_config &config)
8020 {
8021 	/* basic machine hardware */
8022 	M68000(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */
8023 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::downtown_map);
8024 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq2_line_assert));
8025 
8026 	M65C02(config, m_subcpu, XTAL(16'000'000)/8); /* verified on pcb */
8027 	m_subcpu->set_addrmap(AS_PROGRAM, &seta_state::downtown_sub_map);
8028 	TIMER(config, "s_scantimer").configure_scanline(FUNC(seta_state::seta_sub_interrupt), "screen", 0, 1);
8029 
8030 	SETA001_SPRITE(config, m_seta001, 0);
8031 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8032 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8033 
8034 	/* video hardware */
8035 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8036 	screen.set_refresh_hz(57.42); /* verified on pcb */
8037 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8038 	screen.set_size(64*8, 32*8);
8039 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
8040 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
8041 	screen.set_palette(m_palette);
8042 
8043 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_downtown);
8044 	PALETTE(config, m_palette).set_entries(512);
8045 
8046 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_1_layer)
8047 
8048 	/* sound hardware */
8049 	SPEAKER(config, "mono").front_center();
8050 
8051 	GENERIC_LATCH_8(config, m_soundlatch[0]);
8052 	GENERIC_LATCH_8(config, m_soundlatch[1]);
8053 
8054 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8055 	m_x1->add_route(ALL_OUTPUTS, "mono", 0.50);
8056 }
8057 
8058 
8059 /***************************************************************************
8060                                 U.S. Classic
8061 ***************************************************************************/
8062 
8063 
8064 /*  usclssic lev 6 = lev 2+4 !
8065     Test mode shows a 16ms and 4ms counters. I wonder if every game has
8066     5 ints per frame
8067 */
8068 
TIMER_DEVICE_CALLBACK_MEMBER(seta_state::calibr50_interrupt)8069 TIMER_DEVICE_CALLBACK_MEMBER(seta_state::calibr50_interrupt)
8070 {
8071 	int scanline = param;
8072 
8073 	if ((scanline % 64) == 0)
8074 		m_maincpu->set_input_line(4, ASSERT_LINE);
8075 
8076 	if (scanline == 248)
8077 		m_maincpu->set_input_line(2, ASSERT_LINE);
8078 }
8079 
8080 
machine_start()8081 void usclssic_state::machine_start()
8082 {
8083 	m_buttonmux->ab_w(0xff);
8084 }
8085 
8086 
usclssic(machine_config & config)8087 void usclssic_state::usclssic(machine_config &config)
8088 {
8089 	/* basic machine hardware */
8090 	M68000(config, m_maincpu, 16000000/2); /* 8 MHz */
8091 	m_maincpu->set_addrmap(AS_PROGRAM, &usclssic_state::usclssic_map);
8092 	TIMER(config, "scantimer").configure_scanline(FUNC(usclssic_state::calibr50_interrupt), "screen", 0, 1);
8093 
8094 	WATCHDOG_TIMER(config, "watchdog");
8095 
8096 	M65C02(config, m_subcpu, 16000000/8); /* 2 MHz */
8097 	m_subcpu->set_addrmap(AS_PROGRAM, &usclssic_state::calibr50_sub_map);
8098 	m_subcpu->set_vblank_int("screen", FUNC(usclssic_state::irq0_line_assert));
8099 
8100 	UPD4701A(config, m_upd4701);
8101 	m_upd4701->set_portx_tag("TRACKX");
8102 	m_upd4701->set_porty_tag("TRACKY");
8103 
8104 	HC157(config, m_buttonmux, 0);
8105 	m_buttonmux->out_callback().set(m_upd4701, FUNC(upd4701_device::middle_w)).bit(0);
8106 	m_buttonmux->out_callback().append(m_upd4701, FUNC(upd4701_device::right_w)).bit(1);
8107 	m_buttonmux->out_callback().append(m_upd4701, FUNC(upd4701_device::left_w)).bit(2);
8108 
8109 	MCFG_MACHINE_RESET_OVERRIDE(usclssic_state,calibr50)
8110 
8111 	SETA001_SPRITE(config, m_seta001, 0);
8112 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8113 	m_seta001->set_gfxbank_callback(FUNC(usclssic_state::setac_gfxbank_callback));
8114 
8115 	/* video hardware */
8116 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8117 	screen.set_refresh_hz(60);
8118 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8119 	screen.set_size(64*8, 32*8);
8120 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
8121 	screen.set_screen_update(FUNC(usclssic_state::screen_update_usclssic));
8122 	screen.set_palette(m_palette);
8123 
8124 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_usclssic);
8125 	PALETTE(config, m_palette, FUNC(usclssic_state::usclssic_palette), 16*32 + 64*32*2, 0x400); // sprites, layer - layer is 6 planes deep
8126 
8127 	MCFG_VIDEO_START_OVERRIDE(usclssic_state,seta_1_layer)
8128 
8129 	/* sound hardware */
8130 	SPEAKER(config, "mono").front_center();
8131 
8132 	GENERIC_LATCH_8(config, m_soundlatch[0]);
8133 	m_soundlatch[0]->data_pending_callback().set_inputline(m_subcpu, INPUT_LINE_NMI);
8134 	m_soundlatch[0]->set_separate_acknowledge(true);
8135 
8136 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8137 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
8138 }
8139 
8140 
8141 /***************************************************************************
8142                                 Caliber 50
8143 ***************************************************************************/
8144 
8145 /*  calibr50 lev 6 = lev 2 + lev 4 !
8146              lev 3 = lev 2 + lev 1 !
8147     Test mode shows a 16ms and 4ms counters. I wonder if every game has
8148     5 ints per frame */
8149 
calibr50(machine_config & config)8150 void seta_state::calibr50(machine_config &config)
8151 {
8152 	/* basic machine hardware */
8153 	M68000(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */
8154 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::calibr50_map);
8155 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::calibr50_interrupt), "screen", 0, 1);
8156 
8157 	WATCHDOG_TIMER(config, "watchdog");
8158 
8159 	NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
8160 
8161 	M65C02(config, m_subcpu, XTAL(16'000'000)/8); /* verified on pcb */
8162 	m_subcpu->set_addrmap(AS_PROGRAM, &seta_state::calibr50_sub_map);
8163 	m_subcpu->set_periodic_int(FUNC(seta_state::irq0_line_assert), attotime::from_hz(4*60));  // IRQ: 4/frame
8164 
8165 	upd4701_device &upd4701(UPD4701A(config, "upd4701"));
8166 	upd4701.set_portx_tag("ROT1");
8167 	upd4701.set_porty_tag("ROT2");
8168 
8169 	MCFG_MACHINE_RESET_OVERRIDE(seta_state,calibr50)
8170 
8171 	SETA001_SPRITE(config, m_seta001, 0);
8172 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8173 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8174 
8175 	/* video hardware */
8176 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8177 	screen.set_refresh_hz(57.42); /* verified on pcb */
8178 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8179 	screen.set_size(64*8, 32*8);
8180 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
8181 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
8182 	screen.set_palette(m_palette);
8183 
8184 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_downtown);
8185 	PALETTE(config, m_palette).set_entries(512);
8186 
8187 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_1_layer)
8188 
8189 	/* sound hardware */
8190 	SPEAKER(config, "mono").front_center();
8191 
8192 	GENERIC_LATCH_8(config, m_soundlatch[0]);
8193 	m_soundlatch[0]->data_pending_callback().set_inputline(m_subcpu, INPUT_LINE_NMI);
8194 	m_soundlatch[0]->set_separate_acknowledge(true);
8195 
8196 	GENERIC_LATCH_8(config, m_soundlatch[1]);
8197 
8198 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8199 	m_x1->add_route(ALL_OUTPUTS, "mono", 0.50);
8200 }
8201 
8202 
8203 /***************************************************************************
8204                                 Meta Fox
8205 ***************************************************************************/
8206 
8207 /* metafox lev 3 = lev 2 + lev 1 ! */
8208 
metafox(machine_config & config)8209 void seta_state::metafox(machine_config &config)
8210 {
8211 	/* basic machine hardware */
8212 	M68000(config, m_maincpu, 16000000/2); /* 8 MHz */
8213 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::downtown_map);
8214 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq3_line_assert));
8215 
8216 	M65C02(config, m_subcpu, 16000000/8); /* 2 MHz */
8217 	m_subcpu->set_addrmap(AS_PROGRAM, &seta_state::metafox_sub_map);
8218 	TIMER(config, "s_scantimer").configure_scanline(FUNC(seta_state::seta_sub_interrupt), "screen", 0, 1);
8219 
8220 	SETA001_SPRITE(config, m_seta001, 0);
8221 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8222 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8223 
8224 	/* video hardware */
8225 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8226 	screen.set_refresh_hz(60);
8227 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8228 	screen.set_size(64*8, 32*8);
8229 	screen.set_visarea(0*8, 48*8-1, 2*8, 30*8-1);
8230 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
8231 	screen.set_palette(m_palette);
8232 
8233 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_downtown);
8234 	PALETTE(config, m_palette).set_entries(512);
8235 
8236 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_1_layer)
8237 
8238 	/* sound hardware */
8239 	SPEAKER(config, "mono").front_center();
8240 
8241 	GENERIC_LATCH_8(config, m_soundlatch[0]);
8242 	GENERIC_LATCH_8(config, m_soundlatch[1]);
8243 
8244 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8245 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
8246 }
8247 
8248 
8249 /***************************************************************************
8250                                 Athena no Hatena?
8251 ***************************************************************************/
8252 
atehate(machine_config & config)8253 void seta_state::atehate(machine_config &config)
8254 {
8255 	/* basic machine hardware */
8256 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
8257 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::atehate_map);
8258 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
8259 
8260 	SETA001_SPRITE(config, m_seta001, 0);
8261 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8262 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8263 
8264 	/* video hardware */
8265 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8266 	screen.set_refresh_hz(60);
8267 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8268 	screen.set_size(64*8, 32*8);
8269 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
8270 	screen.set_screen_update(FUNC(seta_state::screen_update_seta_no_layers));
8271 	screen.set_palette(m_palette);
8272 
8273 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_tndrcade);
8274 	PALETTE(config, m_palette).set_entries(512);    // sprites only
8275 
8276 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
8277 
8278 	/* sound hardware */
8279 	SPEAKER(config, "mono").front_center();
8280 
8281 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8282 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
8283 }
8284 
8285 
8286 /***************************************************************************
8287                                 Blandia
8288 ***************************************************************************/
8289 
8290 /*
8291     Similar to wrofaero, but the layers are 6 planes deep (and
8292     the pens are strangely mapped to palette entries) + the
8293     samples are bankswitched
8294 */
8295 
blandia(machine_config & config)8296 void seta_state::blandia(machine_config &config)
8297 {
8298 	/* basic machine hardware */
8299 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
8300 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::blandia_map);
8301 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_2_and_4), "screen", 0, 1);
8302 
8303 	SETA001_SPRITE(config, m_seta001, 0);
8304 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8305 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8306 
8307 	/* video hardware */
8308 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8309 	screen.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
8310 	screen.set_refresh_hz(60);
8311 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8312 	screen.set_size(64*8, 32*8);
8313 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
8314 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
8315 	screen.screen_vblank().set(FUNC(seta_state::screen_vblank_seta_buffer_sprites));
8316 	screen.set_palette(m_palette);
8317 
8318 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_blandia);
8319 	PALETTE(config, m_palette, FUNC(seta_state::blandia_palette), (16*32 + 64*32*4)*2, 0x600*2);  // sprites, layer1, layer2, palette effect - layers 1&2 are 6 planes deep
8320 
8321 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
8322 
8323 	/* sound hardware */
8324 	SPEAKER(config, "mono").front_center();
8325 
8326 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8327 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
8328 	m_x1->set_addrmap(0, &seta_state::blandia_x1_map);
8329 }
8330 
blandiap(machine_config & config)8331 void seta_state::blandiap(machine_config &config)
8332 {
8333 	/* basic machine hardware */
8334 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
8335 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::blandiap_map);
8336 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_2_and_4), "screen", 0, 1);
8337 
8338 	SETA001_SPRITE(config, m_seta001, 0);
8339 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8340 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8341 
8342 	/* video hardware */
8343 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8344 	screen.set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
8345 	screen.set_refresh_hz(60);
8346 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8347 	screen.set_size(64*8, 32*8);
8348 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
8349 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
8350 	screen.screen_vblank().set(FUNC(seta_state::screen_vblank_seta_buffer_sprites));
8351 	screen.set_palette(m_palette);
8352 
8353 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_blandia);
8354 	PALETTE(config, m_palette, FUNC(seta_state::blandia_palette), (16*32 + 64*32*4)*2, 0x600*2);  // sprites, layer1, layer2, palette effect - layers 1&2 are 6 planes deep
8355 
8356 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
8357 
8358 	/* sound hardware */
8359 	SPEAKER(config, "mono").front_center();
8360 
8361 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8362 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
8363 	m_x1->set_addrmap(0, &seta_state::blandia_x1_map);
8364 }
8365 
8366 
8367 /***************************************************************************
8368                                 Block Carnival
8369 ***************************************************************************/
8370 
blockcar(machine_config & config)8371 void seta_state::blockcar(machine_config &config)
8372 {
8373 	/* basic machine hardware */
8374 	M68000(config, m_maincpu, 16000000/2); /* 8 MHz */
8375 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::blockcar_map);
8376 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq3_line_hold));
8377 
8378 	SETA001_SPRITE(config, m_seta001, 0);
8379 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8380 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8381 
8382 	/* video hardware */
8383 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8384 	screen.set_refresh_hz(60);
8385 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8386 	screen.set_size(64*8, 32*8);
8387 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
8388 	screen.set_screen_update(FUNC(seta_state::screen_update_seta_no_layers));
8389 	screen.set_palette(m_palette);
8390 
8391 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_tndrcade);
8392 	PALETTE(config, m_palette).set_entries(512);    // sprites only
8393 
8394 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
8395 
8396 	/* sound hardware */
8397 	SPEAKER(config, "mono").front_center();
8398 
8399 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8400 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
8401 }
8402 
8403 
blockcarb_sound_map(address_map & map)8404 void seta_state::blockcarb_sound_map(address_map &map)
8405 {
8406 	map.unmap_value_high();
8407 	map(0x0000, 0x7fff).rom();
8408 	map(0xd000, 0xdfff).ram();
8409 	//map(0xf001, 0xf001) ??
8410 }
8411 
blockcarb_sound_portmap(address_map & map)8412 void seta_state::blockcarb_sound_portmap(address_map &map)
8413 {
8414 	map.unmap_value_high();
8415 	map.global_mask(0xff);
8416 //  map(0x00, 0x01).mirror(0x3e).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
8417 //  map(0xc0, 0xc0).mirror(0x3f).r(m_soundlatch[0], FUNC(generic_latch_8_device::read));
8418 }
8419 
blockcarb(machine_config & config)8420 void seta_state::blockcarb(machine_config &config)
8421 {
8422 	blockcar(config);
8423 
8424 	/* basic machine hardware */
8425 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::blockcarb_map);
8426 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq3_line_hold));
8427 
8428 	Z80(config, m_audiocpu, 4000000); // unk freq
8429 	m_audiocpu->set_addrmap(AS_PROGRAM, &seta_state::blockcarb_sound_map);
8430 	m_audiocpu->set_addrmap(AS_IO, &seta_state::blockcarb_sound_portmap);
8431 
8432 	/* the sound hardware / program is ripped from Tetris (S16B) */
8433 	config.device_remove("x1snd");
8434 
8435 	OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
8436 		.add_route(ALL_OUTPUTS, "mono", 1.0);
8437 }
8438 
8439 
8440 
8441 /***************************************************************************
8442                                 Daioh
8443 ***************************************************************************/
8444 
daioh(machine_config & config)8445 void seta_state::daioh(machine_config &config)
8446 {
8447 	/* basic machine hardware */
8448 	M68000(config, m_maincpu, XTAL(16'000'000));   /* 16 MHz, MC68000-16, Verified from PCB */
8449 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::daioh_map);
8450 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
8451 
8452 	SETA001_SPRITE(config, m_seta001, 0);
8453 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8454 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8455 
8456 	/* video hardware */
8457 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8458 	screen.set_refresh_hz(57.42);   /* verified on PCB */
8459 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8460 	screen.set_size(64*8, 32*8);
8461 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
8462 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
8463 	screen.set_palette(m_palette);
8464 
8465 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_msgundam);
8466 	PALETTE(config, m_palette).set_entries(512 * 3);    // sprites, layer1, layer2
8467 
8468 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
8469 
8470 	/* sound hardware */
8471 	SPEAKER(config, "mono").front_center();
8472 
8473 	X1_010(config, m_x1, XTAL(16'000'000));   /* 16 MHz, Verified from PCB audio */
8474 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
8475 }
8476 
8477 
8478 /***************************************************************************
8479                        Daioh (prototype)
8480 ***************************************************************************/
8481 
daiohp(machine_config & config)8482 void seta_state::daiohp(machine_config &config)
8483 {
8484 	daioh(config);
8485 	/* basic machine hardware */
8486 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::daiohp_map);
8487 }
8488 
8489 
8490 /***************************************************************************
8491                 Dragon Unit, Quiz Kokology, Strike Gunner
8492 ***************************************************************************/
8493 
8494 /*
8495     drgnunit,qzkklogy,stg:
8496     lev 1 == lev 3 (writes to $500000, bit 4 -> 1 then 0)
8497     lev 2 drives the game
8498 */
8499 
drgnunit(machine_config & config)8500 void seta_state::drgnunit(machine_config &config)
8501 {
8502 	/* basic machine hardware */
8503 	M68000(config, m_maincpu, 16000000/2); /* 8 MHz */
8504 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::drgnunit_map);
8505 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
8506 
8507 	SETA001_SPRITE(config, m_seta001, 0);
8508 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8509 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8510 
8511 	/* video hardware */
8512 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8513 	screen.set_refresh_hz(60);
8514 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8515 	screen.set_size(64*8, 32*8);
8516 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
8517 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
8518 	screen.screen_vblank().set(FUNC(seta_state::screen_vblank_seta_buffer_sprites));
8519 	screen.set_palette(m_palette);
8520 
8521 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_downtown);
8522 	PALETTE(config, m_palette).set_entries(512);
8523 
8524 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_1_layer)
8525 
8526 	/* sound hardware */
8527 	SPEAKER(config, "mono").front_center();
8528 
8529 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8530 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
8531 }
8532 
8533 /*  Same as qzkklogy, but with a 16MHz CPU    */
8534 
qzkklgy2(machine_config & config)8535 void seta_state::qzkklgy2(machine_config &config)
8536 {
8537 	drgnunit(config);
8538 	/* basic machine hardware */
8539 	m_maincpu->set_clock(16000000);   /* 16 MHz */
8540 }
8541 
8542 
8543 /***************************************************************************
8544                                 The Roulette
8545 ***************************************************************************/
8546 
TIMER_DEVICE_CALLBACK_MEMBER(setaroul_state::interrupt)8547 TIMER_DEVICE_CALLBACK_MEMBER(setaroul_state::interrupt)
8548 {
8549 	int scanline = param;
8550 
8551 	if ((scanline % 32) == 0) // every 2ms?
8552 		m_maincpu->set_input_line(2, HOLD_LINE); // read 1 board column (out of 26) every other call
8553 
8554 	if (scanline == 248)
8555 		m_maincpu->set_input_line(4, HOLD_LINE); // vblank
8556 
8557 	// lev 6: RS232
8558 }
8559 
setaroul(machine_config & config)8560 void setaroul_state::setaroul(machine_config &config)
8561 {
8562 	/* basic machine hardware */
8563 	M68000(config, m_maincpu, XTAL(16'000'000)/2); /* 8 MHz */
8564 	m_maincpu->set_addrmap(AS_PROGRAM, &setaroul_state::setaroul_map);
8565 	TIMER(config, "scantimer").configure_scanline(FUNC(setaroul_state::interrupt), "screen", 0, 1);
8566 
8567 	WATCHDOG_TIMER(config, "watchdog");
8568 
8569 	MCFG_MACHINE_START_OVERRIDE(setaroul_state, setaroul)
8570 	MCFG_MACHINE_RESET_OVERRIDE(setaroul_state, setaroul)
8571 
8572 	SETA001_SPRITE(config, m_seta001, 0);
8573 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8574 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8575 
8576 	NVRAM(config, "nvram", nvram_device::DEFAULT_RANDOM);
8577 
8578 	/* devices */
8579 	UPD4992(config, m_rtc, 32'768); // ! Actually D4911C !
8580 	ACIA6850(config, "acia0", 0);
8581 	TICKET_DISPENSER(config, "hopper", attotime::from_msec(150), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
8582 
8583 	/* video hardware */
8584 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8585 	screen.set_refresh_hz(60);
8586 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8587 	screen.set_size(64*8, 32*8);
8588 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
8589 	screen.set_screen_update(FUNC(setaroul_state::screen_update));
8590 	screen.screen_vblank().set(FUNC(setaroul_state::screen_vblank));
8591 	screen.set_palette(m_palette);
8592 
8593 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_setaroul);
8594 	PALETTE(config, m_palette, FUNC(setaroul_state::setaroul_palette), 512);
8595 
8596 	MCFG_VIDEO_START_OVERRIDE(setaroul_state,setaroul_1_layer)
8597 
8598 	/* sound hardware */
8599 	SPEAKER(config, "lspeaker").front_left();
8600 	SPEAKER(config, "rspeaker").front_right();
8601 
8602 	X1_010(config, m_x1, XTAL(16'000'000));   /* 16 MHz */
8603 	m_x1->add_route(0, "lspeaker", 1.0);
8604 	m_x1->add_route(1, "rspeaker", 1.0);
8605 
8606 	// layout
8607 	config.set_default_layout(layout_setaroul);
8608 }
8609 
8610 
8611 /***************************************************************************
8612                                 Eight Force
8613 ***************************************************************************/
8614 
eightfrc(machine_config & config)8615 void seta_state::eightfrc(machine_config &config)
8616 {
8617 	/* basic machine hardware */
8618 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
8619 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::wrofaero_map);
8620 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
8621 	WATCHDOG_TIMER(config, "watchdog");
8622 
8623 	SETA001_SPRITE(config, m_seta001, 0);
8624 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8625 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8626 
8627 	/* video hardware */
8628 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8629 	screen.set_refresh_hz(60);
8630 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8631 	screen.set_size(64*8, 32*8);
8632 	screen.set_visarea(0*8, 48*8-1, 2*8, 30*8-1);
8633 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
8634 	screen.set_palette(m_palette);
8635 
8636 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_msgundam);
8637 	PALETTE(config, m_palette).set_entries(512 * 3);    // sprites, layer1, layer2
8638 
8639 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
8640 
8641 	/* sound hardware */
8642 	SPEAKER(config, "mono").front_center();
8643 
8644 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8645 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
8646 	m_x1->set_addrmap(0, &seta_state::blandia_x1_map);
8647 }
8648 
8649 
8650 /***************************************************************************
8651                         Extreme Downhill / Sokonuke
8652 ***************************************************************************/
8653 
8654 /*
8655     extdwnhl:
8656     lev 1 == lev 3 (writes to $500000, bit 4 -> 1 then 0)
8657     lev 2 drives the game
8658 */
extdwnhl(machine_config & config)8659 void seta_state::extdwnhl(machine_config &config)
8660 {
8661 	/* basic machine hardware */
8662 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
8663 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::extdwnhl_map);
8664 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
8665 	WATCHDOG_TIMER(config, "watchdog");
8666 
8667 	SETA001_SPRITE(config, m_seta001, 0);
8668 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8669 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8670 
8671 	/* video hardware */
8672 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8673 	screen.set_refresh_hz(60);
8674 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8675 	screen.set_size(64*8, 32*8);
8676 	screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
8677 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
8678 	screen.set_palette(m_palette);
8679 
8680 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_zingzip);
8681 	PALETTE(config, m_palette, FUNC(seta_state::zingzip_palette), 16*32 + 16*32 + 64*32*2, 0x600);    // sprites, layer2, layer1 - layer 1 gfx is 6 planes deep
8682 
8683 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
8684 
8685 	/* sound hardware */
8686 	SPEAKER(config, "lspeaker").front_left();
8687 	SPEAKER(config, "rspeaker").front_right();
8688 
8689 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8690 	m_x1->add_route(0, "lspeaker", 1.0);
8691 	m_x1->add_route(1, "rspeaker", 1.0);
8692 }
8693 
8694 
8695 /***************************************************************************
8696                                 Gundhara
8697 ***************************************************************************/
8698 #if USE_uPD71054_TIMER
INTERRUPT_GEN_MEMBER(seta_state::wrofaero_interrupt)8699 INTERRUPT_GEN_MEMBER(seta_state::wrofaero_interrupt)
8700 {
8701 	device.execute().set_input_line(2, HOLD_LINE );
8702 }
8703 
MACHINE_START_MEMBER(seta_state,wrofaero)8704 MACHINE_START_MEMBER(seta_state,wrofaero){ uPD71054_timer_init(); }
8705 #endif  // USE_uPD71054_TIMER
8706 
8707 
8708 
8709 /*
8710     lev 1: sample end? (needed in zombraid otherwise music stops)
8711            gundhara's debug code calls it "BUT_IPL" and does nothing
8712     lev 2: VBlank
8713     lev 4: Sound (generated by a timer mapped at $d00000-6 ?)
8714 */
gundhara(machine_config & config)8715 void seta_state::gundhara(machine_config &config)
8716 {
8717 	/* basic machine hardware */
8718 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
8719 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::wrofaero_map);
8720 #if USE_uPD71054_TIMER
8721 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
8722 #else
8723 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_2_and_4), "screen", 0, 1);
8724 #endif  // USE_uPD71054_TIMER
8725 
8726 	WATCHDOG_TIMER(config, "watchdog");
8727 
8728 #if USE_uPD71054_TIMER
8729 	MCFG_MACHINE_START_OVERRIDE(seta_state, wrofaero )
8730 #endif  // USE_uPD71054_TIMER
8731 
8732 	SETA001_SPRITE(config, m_seta001, 0);
8733 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8734 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8735 
8736 	/* video hardware */
8737 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8738 	screen.set_refresh_hz(60);
8739 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8740 	screen.set_size(64*8, 32*8);
8741 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
8742 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
8743 	screen.set_palette(m_palette);
8744 
8745 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_jjsquawk);
8746 	PALETTE(config, m_palette, FUNC(seta_state::gundhara_palette), 16*32 + 64*32*4, 0x600);  // sprites, layer2, layer1 - layers are 6 planes deep (seta_state,but have only 4 palettes)
8747 
8748 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
8749 
8750 	/* sound hardware */
8751 	SPEAKER(config, "mono").front_center();
8752 
8753 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8754 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
8755 }
8756 
8757 
8758 /***************************************************************************
8759                                 Zombie Raid
8760 ***************************************************************************/
8761 
MACHINE_START_MEMBER(zombraid_state,zombraid)8762 MACHINE_START_MEMBER(zombraid_state,zombraid)
8763 {
8764 	uPD71054_timer_init();
8765 	m_gun_recoil.resolve();
8766 }
8767 
zombraid(machine_config & config)8768 void zombraid_state::zombraid(machine_config &config)
8769 {
8770 	gundhara(config);
8771 
8772 	/* basic machine hardware */
8773 	m_maincpu->set_addrmap(AS_PROGRAM, &zombraid_state::zombraid_map);
8774 
8775 	MCFG_MACHINE_START_OVERRIDE(zombraid_state, zombraid)
8776 
8777 	NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
8778 
8779 	adc0834_device &adc(ADC0834(config, "adc"));
8780 	adc.set_input_callback(FUNC(zombraid_state::adc_cb));
8781 
8782 	m_x1->set_addrmap(0, &zombraid_state::zombraid_x1_map);
8783 }
8784 
8785 /***************************************************************************
8786                                 J.J.Squawkers
8787 ***************************************************************************/
8788 
8789 /*
8790     lev 1 == lev 3 (writes to $500000, bit 4 -> 1 then 0)
8791     lev 2 drives the game
8792 */
jjsquawk(machine_config & config)8793 void seta_state::jjsquawk(machine_config &config)
8794 {
8795 	/* basic machine hardware */
8796 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
8797 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::wrofaero_map);
8798 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
8799 	WATCHDOG_TIMER(config, "watchdog");
8800 
8801 	SETA001_SPRITE(config, m_seta001, 0);
8802 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8803 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8804 
8805 	/* video hardware */
8806 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8807 	screen.set_refresh_hz(60);
8808 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8809 	screen.set_size(64*8, 32*8);
8810 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
8811 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
8812 	screen.set_palette(m_palette);
8813 
8814 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_jjsquawk);
8815 	PALETTE(config, m_palette, FUNC(seta_state::jjsquawk_palette), 16*32 + 64*32*4, 0x600);  // sprites, layer2, layer1 - layers are 6 planes deep
8816 
8817 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
8818 
8819 	/* sound hardware */
8820 	SPEAKER(config, "mono").front_center();
8821 
8822 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8823 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
8824 }
8825 
jjsquawb(machine_config & config)8826 void seta_state::jjsquawb(machine_config &config)
8827 {
8828 	/* basic machine hardware */
8829 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
8830 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::jjsquawb_map);
8831 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
8832 
8833 	SETA001_SPRITE(config, m_seta001, 0);
8834 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8835 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8836 
8837 	/* video hardware */
8838 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8839 	screen.set_refresh_hz(60);
8840 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8841 	screen.set_size(64*8, 32*8);
8842 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
8843 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
8844 	screen.set_palette(m_palette);
8845 
8846 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_jjsquawkb);
8847 	PALETTE(config, m_palette, FUNC(seta_state::jjsquawk_palette), 16*32 + 64*32*4, 0x600);  // sprites, layer2, layer1 - layers are 6 planes deep
8848 
8849 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
8850 
8851 	/* sound hardware */
8852 	SPEAKER(config, "mono").front_center();
8853 
8854 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8855 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
8856 }
8857 
8858 
8859 /***************************************************************************
8860                 (Kamen) Masked Riders Club Battle Race
8861 ***************************************************************************/
8862 
8863 /*  kamenrid: lev 2 by vblank, lev 4 by timer */
kamenrid(machine_config & config)8864 void seta_state::kamenrid(machine_config &config)
8865 {
8866 	/* basic machine hardware */
8867 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
8868 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::kamenrid_map);
8869 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq2_line_assert));
8870 
8871 	WATCHDOG_TIMER(config, "watchdog");
8872 
8873 	pit8254_device &pit(PIT8254(config, "pit", 0)); // uPD71054C
8874 	pit.set_clk<0>(16000000/2/8);
8875 	pit.out_handler<0>().set(FUNC(seta_state::pit_out0));
8876 
8877 	SETA001_SPRITE(config, m_seta001, 0);
8878 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8879 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8880 
8881 	/* video hardware */
8882 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8883 	screen.set_refresh_hz(60);
8884 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8885 	screen.set_size(64*8, 32*8);
8886 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
8887 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
8888 	screen.set_palette(m_palette);
8889 
8890 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_msgundam);
8891 	PALETTE(config, m_palette).set_entries(512 * 3);    // sprites, layer1, layer2
8892 
8893 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
8894 
8895 	/* sound hardware */
8896 	SPEAKER(config, "mono").front_center();
8897 
8898 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
8899 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
8900 }
8901 
8902 
8903 /***************************************************************************
8904                                 Orbs
8905 ***************************************************************************/
8906 
8907 /* The CPU clock has been verified/measured, PCB only has one OSC and it's 14.318180 MHz */
8908 
orbs(machine_config & config)8909 void seta_state::orbs(machine_config &config)
8910 {
8911 	/* basic machine hardware */
8912 	M68000(config, m_maincpu, 14318180/2); /* 7.143 MHz */
8913 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::orbs_map);
8914 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
8915 
8916 	SETA001_SPRITE(config, m_seta001, 0);
8917 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8918 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8919 
8920 	/* video hardware */
8921 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8922 	screen.set_refresh_hz(60);
8923 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8924 	screen.set_size(64*8, 32*8);
8925 	screen.set_visarea(1*8, 39*8-1, 1*8, 31*8-1);
8926 	screen.set_screen_update(FUNC(seta_state::screen_update_seta_no_layers));
8927 	screen.set_palette(m_palette);
8928 
8929 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_tndrcade);
8930 	PALETTE(config, m_palette).set_entries(512);    // sprites only
8931 
8932 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
8933 
8934 	/* sound hardware */
8935 	SPEAKER(config, "lspeaker").front_left();
8936 	SPEAKER(config, "rspeaker").front_right();
8937 
8938 	X1_010(config, m_x1, 14318180);   /* 14.318180 MHz */
8939 	m_x1->add_route(0, "lspeaker", 1.0);
8940 	m_x1->add_route(1, "rspeaker", 1.0);
8941 }
8942 
8943 
8944 /***************************************************************************
8945                   Kero Kero Keroppi no Issyoni Asobou
8946 ***************************************************************************/
8947 
keroppij(machine_config & config)8948 void seta_state::keroppij(machine_config &config)
8949 {
8950 	/* basic machine hardware */
8951 	M68000(config, m_maincpu, 14318180/2); /* 7.143 MHz */
8952 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::keroppi_map);
8953 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
8954 
8955 	MCFG_MACHINE_START_OVERRIDE(seta_state,keroppi)
8956 
8957 	SETA001_SPRITE(config, m_seta001, 0);
8958 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
8959 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
8960 
8961 	/* video hardware */
8962 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
8963 	screen.set_refresh_hz(60);
8964 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
8965 	screen.set_size(64*8, 32*8);
8966 	screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
8967 	screen.set_screen_update(FUNC(seta_state::screen_update_seta_no_layers));
8968 	screen.set_palette(m_palette);
8969 
8970 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_tndrcade);
8971 	PALETTE(config, m_palette).set_entries(512);    // sprites only
8972 
8973 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
8974 
8975 	/* sound hardware */
8976 	SPEAKER(config, "lspeaker").front_left();
8977 	SPEAKER(config, "rspeaker").front_right();
8978 
8979 	X1_010(config, m_x1, 14318180);   /* 14.318180 MHz */
8980 	m_x1->add_route(0, "lspeaker", 1.0);
8981 	m_x1->add_route(1, "rspeaker", 1.0);
8982 }
8983 
keroppi(machine_config & config)8984 void seta_state::keroppi(machine_config &config)
8985 {
8986 	keroppij(config);
8987 	m_gfxdecode->set_info(gfx_tndrcade);
8988 }
8989 
8990 
8991 /***************************************************************************
8992                                 Krazy Bowl
8993 ***************************************************************************/
8994 
krzybowl(machine_config & config)8995 void seta_state::krzybowl(machine_config &config)
8996 {
8997 	/* basic machine hardware */
8998 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
8999 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::krzybowl_map);
9000 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
9001 
9002 	upd4701_device &upd1(UPD4701A(config, "upd1"));
9003 	upd1.set_portx_tag("TRACK1_X");
9004 	upd1.set_porty_tag("TRACK1_Y");
9005 
9006 	upd4701_device &upd2(UPD4701A(config, "upd2"));
9007 	upd2.set_portx_tag("TRACK2_X");
9008 	upd2.set_porty_tag("TRACK2_Y");
9009 
9010 	SETA001_SPRITE(config, m_seta001, 0);
9011 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9012 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9013 
9014 	/* video hardware */
9015 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9016 	screen.set_refresh_hz(60);
9017 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9018 	screen.set_size(64*8, 32*8);
9019 	screen.set_visarea(1*8, 39*8-1, 1*8, 31*8-1);
9020 	screen.set_screen_update(FUNC(seta_state::screen_update_seta_no_layers));
9021 	screen.set_palette(m_palette);
9022 
9023 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_tndrcade);
9024 	PALETTE(config, m_palette).set_entries(512);    // sprites only
9025 
9026 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
9027 
9028 	/* sound hardware */
9029 	SPEAKER(config, "mono").front_center();
9030 
9031 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
9032 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
9033 }
9034 
9035 
9036 /***************************************************************************
9037                                 Mad Shark
9038 ***************************************************************************/
9039 
9040 /*  madshark: lev 2 by vblank, lev 4 by timer */
madshark(machine_config & config)9041 void seta_state::madshark(machine_config &config)
9042 {
9043 	/* basic machine hardware */
9044 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
9045 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::madshark_map);
9046 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq2_line_assert));
9047 
9048 	pit8254_device &pit(PIT8254(config, "pit", 0)); // uPD71054C
9049 	pit.set_clk<0>(16000000/2/8);
9050 	pit.out_handler<0>().set(FUNC(seta_state::pit_out0));
9051 
9052 	SETA001_SPRITE(config, m_seta001, 0);
9053 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9054 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9055 
9056 	WATCHDOG_TIMER(config, "watchdog");
9057 
9058 	/* video hardware */
9059 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9060 	screen.set_refresh_hz(60);
9061 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9062 	screen.set_size(64*8, 32*8);
9063 	screen.set_visarea(0*8, 48*8-1, 2*8, 30*8-1);
9064 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
9065 	screen.set_palette(m_palette);
9066 
9067 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_jjsquawk);
9068 	PALETTE(config, m_palette, FUNC(seta_state::jjsquawk_palette), 16*32 + 64*32*4, 0x600);  // sprites, layer2, layer1 - layers are 6 planes deep
9069 
9070 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
9071 
9072 	/* sound hardware */
9073 	SPEAKER(config, "mono").front_center();
9074 
9075 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
9076 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
9077 }
9078 
9079 
9080 /***************************************************************************
9081                                 Magical Speed
9082 ***************************************************************************/
9083 
MACHINE_START_MEMBER(seta_state,magspeed)9084 MACHINE_START_MEMBER(seta_state,magspeed){ m_leds.resolve(); }
9085 
9086 /*  magspeed: lev 2 by vblank, lev 4 by timer */
magspeed(machine_config & config)9087 void seta_state::magspeed(machine_config &config)
9088 {
9089 	/* basic machine hardware */
9090 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
9091 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::magspeed_map);
9092 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq2_line_assert));
9093 
9094 	WATCHDOG_TIMER(config, "watchdog");
9095 
9096 	MCFG_MACHINE_START_OVERRIDE(seta_state, magspeed)
9097 
9098 	pit8254_device &pit(PIT8254(config, "pit", 0)); // uPD71054C
9099 	pit.set_clk<0>(16000000/2/8);
9100 	pit.out_handler<0>().set(FUNC(seta_state::pit_out0));
9101 
9102 	SETA001_SPRITE(config, m_seta001, 0);
9103 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9104 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9105 
9106 	/* video hardware */
9107 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9108 	screen.set_refresh_hz(60);
9109 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9110 	screen.set_size(64*8, 32*8);
9111 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
9112 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
9113 	screen.set_palette(m_palette);
9114 
9115 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_msgundam);
9116 	PALETTE(config, m_palette).set_entries(512 * 3);    // sprites, layer1, layer2
9117 
9118 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
9119 
9120 	/* sound hardware */
9121 	SPEAKER(config, "mono").front_center();
9122 
9123 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
9124 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
9125 }
9126 
9127 
9128 /***************************************************************************
9129                             Mobile Suit Gundam
9130 ***************************************************************************/
9131 
9132 /* msgundam lev 2 == lev 6 ! */
9133 
msgundam(machine_config & config)9134 void seta_state::msgundam(machine_config &config)
9135 {
9136 	/* basic machine hardware */
9137 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
9138 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::msgundam_map);
9139 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq2_line_assert));
9140 
9141 	pit8254_device &pit(PIT8254(config, "pit", 0)); // uPD71054C
9142 	pit.set_clk<0>(16000000/2/8);
9143 	pit.out_handler<0>().set(FUNC(seta_state::pit_out0));
9144 
9145 	SETA001_SPRITE(config, m_seta001, 0);
9146 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9147 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9148 
9149 	/* video hardware */
9150 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9151 	screen.set_refresh_hz(56.66); /* between 56 and 57 to match a real PCB's game speed */
9152 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9153 	screen.set_size(64*8, 32*8);
9154 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
9155 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
9156 	screen.screen_vblank().set(FUNC(seta_state::screen_vblank_seta_buffer_sprites));
9157 	screen.set_palette(m_palette);
9158 
9159 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_msgundam);
9160 	PALETTE(config, m_palette).set_entries(512 * 3);    // sprites, layer1, layer2
9161 
9162 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
9163 
9164 	/* sound hardware */
9165 	SPEAKER(config, "mono").front_center();
9166 
9167 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
9168 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
9169 }
9170 
msgundamb(machine_config & config)9171 void seta_state::msgundamb(machine_config &config)
9172 {
9173 	msgundam(config);
9174 
9175 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::msgundamb_map);
9176 }
9177 
9178 /***************************************************************************
9179                             Oishii Puzzle
9180 ***************************************************************************/
9181 
oisipuzl(machine_config & config)9182 void seta_state::oisipuzl(machine_config &config)
9183 {
9184 	/* basic machine hardware */
9185 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
9186 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::oisipuzl_map);
9187 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
9188 
9189 	SETA001_SPRITE(config, m_seta001, 0);
9190 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9191 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9192 
9193 	/* video hardware */
9194 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9195 	screen.set_refresh_hz(60);
9196 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9197 	screen.set_size(64*8, 32*8);
9198 	screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
9199 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
9200 	screen.set_palette(m_palette);
9201 
9202 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_msgundam);
9203 	PALETTE(config, m_palette).set_entries(512 * 3);    // sprites, layer1, layer2
9204 
9205 	MCFG_VIDEO_START_OVERRIDE(seta_state, oisipuzl_2_layers) // flip is inverted for the tilemaps
9206 
9207 	/* sound hardware */
9208 	SPEAKER(config, "lspeaker").front_left();
9209 	SPEAKER(config, "rspeaker").front_right();
9210 
9211 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
9212 	m_x1->add_route(0, "lspeaker", 1.0);
9213 	m_x1->add_route(1, "rspeaker", 1.0);
9214 }
9215 
9216 
9217 /***************************************************************************
9218                             Triple Fun
9219 ***************************************************************************/
9220 
9221 /* same as oisipuzl but with different interrupts and sound */
9222 
triplfun(machine_config & config)9223 void seta_state::triplfun(machine_config &config)
9224 {
9225 	/* basic machine hardware */
9226 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
9227 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::triplfun_map);
9228 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq3_line_hold));
9229 
9230 	SETA001_SPRITE(config, m_seta001, 0);
9231 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9232 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9233 
9234 	/* video hardware */
9235 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9236 	screen.set_refresh_hz(60);
9237 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9238 	screen.set_size(64*8, 32*8);
9239 	screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
9240 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
9241 	screen.set_palette(m_palette);
9242 
9243 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_msgundam);
9244 	PALETTE(config, m_palette).set_entries(512 * 3);    // sprites, layer1, layer2
9245 
9246 	MCFG_VIDEO_START_OVERRIDE(seta_state, oisipuzl_2_layers) // flip is inverted for the tilemaps
9247 
9248 	/* sound hardware */
9249 	SPEAKER(config, "lspeaker").front_left();
9250 	SPEAKER(config, "rspeaker").front_right();
9251 
9252 	okim6295_device &oki(OKIM6295(config, "oki", 792000, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
9253 	oki.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
9254 	oki.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
9255 }
9256 
9257 
9258 /***************************************************************************
9259                             Pro Mahjong Kiwame
9260 ***************************************************************************/
9261 
WRITE_LINE_MEMBER(kiwame_state::kiwame_vblank)9262 WRITE_LINE_MEMBER(kiwame_state::kiwame_vblank)
9263 {
9264 	if (state)
9265 		m_maincpu->external_interrupt_0();
9266 }
9267 
kiwame(machine_config & config)9268 void kiwame_state::kiwame(machine_config &config)
9269 {
9270 	/* basic machine hardware */
9271 	TMP68301(config, m_maincpu, 16000000);   /* 16 MHz */
9272 	m_maincpu->set_addrmap(AS_PROGRAM, &kiwame_state::kiwame_map);
9273 	m_maincpu->out_parallel_callback().set(FUNC(kiwame_state::row_select_w));
9274 
9275 	NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
9276 
9277 	SETA001_SPRITE(config, m_seta001, 0);
9278 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9279 	m_seta001->set_gfxbank_callback(FUNC(kiwame_state::setac_gfxbank_callback));
9280 
9281 	/* video hardware */
9282 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9283 	screen.set_refresh_hz(60);
9284 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9285 	screen.set_size(64*8, 32*8);
9286 	screen.set_visarea(0*8, 56*8-1, 1*8, 31*8-1);
9287 	screen.set_screen_update(FUNC(kiwame_state::screen_update_seta_no_layers));
9288 	screen.screen_vblank().set(FUNC(kiwame_state::kiwame_vblank));
9289 	screen.set_palette(m_palette);
9290 
9291 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_tndrcade);
9292 	PALETTE(config, m_palette).set_entries(512);    // sprites only
9293 
9294 	MCFG_VIDEO_START_OVERRIDE(kiwame_state,seta_no_layers)
9295 
9296 	/* sound hardware */
9297 	SPEAKER(config, "lspeaker").front_left();
9298 	SPEAKER(config, "rspeaker").front_right();
9299 
9300 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
9301 	m_x1->add_route(0, "lspeaker", 1.0);
9302 	m_x1->add_route(1, "rspeaker", 1.0);
9303 }
9304 
9305 
9306 /***************************************************************************
9307                                     Rezon
9308 ***************************************************************************/
9309 
9310 /* pretty much like wrofaero, but ints are 1&2, not 2&4 */
9311 
rezon(machine_config & config)9312 void seta_state::rezon(machine_config &config)
9313 {
9314 	/* basic machine hardware */
9315 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
9316 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::wrofaero_map);
9317 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
9318 
9319 	WATCHDOG_TIMER(config, "watchdog");
9320 
9321 	SETA001_SPRITE(config, m_seta001, 0);
9322 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9323 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9324 
9325 	/* video hardware */
9326 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9327 	screen.set_refresh_hz(60);
9328 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9329 	screen.set_size(64*8, 32*8);
9330 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
9331 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
9332 	screen.set_palette(m_palette);
9333 
9334 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_msgundam);
9335 	PALETTE(config, m_palette).set_entries(512 * 3);    // sprites, layer1, layer2
9336 
9337 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
9338 
9339 	/* sound hardware */
9340 	SPEAKER(config, "mono").front_center();
9341 
9342 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
9343 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
9344 }
9345 
9346 
9347 /***************************************************************************
9348                         Thunder & Lightning / Wit's
9349 ***************************************************************************/
9350 
9351 /*  thunderl lev 2 = lev 3 - other levels lead to an error */
9352 
thunderl(machine_config & config)9353 void seta_state::thunderl(machine_config &config)
9354 {
9355 	/* basic machine hardware */
9356 	M68000(config, m_maincpu, 16000000/2); /* 8 MHz */
9357 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::thunderl_map);
9358 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq2_line_assert));
9359 
9360 	SETA001_SPRITE(config, m_seta001, 0);
9361 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9362 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9363 
9364 	/* video hardware */
9365 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9366 	screen.set_refresh_hz(60);
9367 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9368 	screen.set_size(64*8, 32*8);
9369 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
9370 	screen.set_screen_update(FUNC(seta_state::screen_update_seta_no_layers));
9371 	screen.set_palette(m_palette);
9372 
9373 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_tndrcade);
9374 	PALETTE(config, m_palette).set_entries(512);    // sprites only
9375 
9376 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
9377 
9378 	/* sound hardware */
9379 	SPEAKER(config, "mono").front_center();
9380 
9381 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
9382 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
9383 }
9384 
9385 
thunderlbl_sound_map(address_map & map)9386 void seta_state::thunderlbl_sound_map(address_map &map)
9387 {
9388 	map.unmap_value_high();
9389 	map(0x0000, 0x7fff).rom();
9390 	map(0x8000, 0xdfff).rom();
9391 	map(0xf800, 0xffff).ram();
9392 }
9393 
thunderlbl_sound_portmap(address_map & map)9394 void seta_state::thunderlbl_sound_portmap(address_map &map)
9395 {
9396 	map.unmap_value_high();
9397 	map.global_mask(0xff);
9398 	map(0x00, 0x01).mirror(0x3e).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
9399 	map(0xc0, 0xc0).mirror(0x3f).r(m_soundlatch[0], FUNC(generic_latch_8_device::read));
9400 }
9401 
thunderlbl(machine_config & config)9402 void seta_state::thunderlbl(machine_config &config)
9403 {
9404 	thunderl(config);
9405 
9406 	/* basic machine hardware */
9407 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::thunderlbl_map);
9408 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq2_line_assert));
9409 
9410 	Z80(config, m_audiocpu, 16_MHz_XTAL / 4); // XTAL verified, divider unknown, but Z8400A PS, so likely
9411 	m_audiocpu->set_addrmap(AS_PROGRAM, &seta_state::thunderlbl_sound_map);
9412 	m_audiocpu->set_addrmap(AS_IO, &seta_state::thunderlbl_sound_portmap);
9413 
9414 	/* the sound hardware / program is ripped from Tetris (S16B) */
9415 	config.device_remove("x1snd");
9416 
9417 	YM2151(config, "ymsnd", 16_MHz_XTAL / 4).add_route(ALL_OUTPUTS, "mono", 1.0); // XTAL verified, divider unknown
9418 
9419 	GENERIC_LATCH_8(config, m_soundlatch[0]);
9420 	m_soundlatch[0]->data_pending_callback().set_inputline(m_audiocpu, 0);
9421 }
9422 
9423 
wiggie(machine_config & config)9424 void seta_state::wiggie(machine_config &config)
9425 {
9426 	/* basic machine hardware */
9427 	M68000(config, m_maincpu, 16000000/2); /* 8 MHz */
9428 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::wiggie_map);
9429 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq2_line_assert));
9430 
9431 	Z80(config, m_audiocpu, 16000000/4);   /* 4 MHz */
9432 	m_audiocpu->set_addrmap(AS_PROGRAM, &seta_state::wiggie_sound_map);
9433 
9434 	SETA001_SPRITE(config, m_seta001, 0);
9435 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9436 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9437 
9438 	/* video hardware */
9439 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9440 	screen.set_refresh_hz(60);
9441 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9442 	screen.set_size(64*8, 32*8);
9443 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
9444 	screen.set_screen_update(FUNC(seta_state::screen_update_seta_no_layers));
9445 	screen.set_palette(m_palette);
9446 
9447 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_wiggie);
9448 	PALETTE(config, m_palette).set_entries(512);    // sprites only
9449 
9450 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
9451 
9452 	/* sound hardware */
9453 	SPEAKER(config, "mono").front_center();
9454 
9455 	OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
9456 
9457 	GENERIC_LATCH_8(config, m_soundlatch[0]);
9458 	m_soundlatch[0]->data_pending_callback().set_inputline(m_audiocpu, 0);
9459 }
9460 
superbar(machine_config & config)9461 void seta_state::superbar(machine_config &config)
9462 {
9463 	wiggie(config);
9464 	m_gfxdecode->set_info(gfx_superbar);
9465 }
9466 
wits(machine_config & config)9467 void seta_state::wits(machine_config &config)
9468 {
9469 	/* basic machine hardware */
9470 	M68000(config, m_maincpu, 16000000/2); /* 8 MHz */
9471 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::thunderl_map);
9472 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq2_line_assert));
9473 
9474 	SETA001_SPRITE(config, m_seta001, 0);
9475 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9476 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9477 
9478 	/* video hardware */
9479 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9480 	screen.set_refresh_hz(60);
9481 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9482 	screen.set_size(64*8, 32*8);
9483 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
9484 	screen.set_screen_update(FUNC(seta_state::screen_update_seta_no_layers));
9485 	screen.set_palette(m_palette);
9486 
9487 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_tndrcade);
9488 	PALETTE(config, m_palette).set_entries(512);    // sprites only
9489 
9490 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
9491 
9492 	/* sound hardware */
9493 	SPEAKER(config, "mono").front_center();
9494 
9495 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
9496 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
9497 }
9498 
9499 
9500 /***************************************************************************
9501                     Ultraman Club / SD Gundam Neo Battling
9502 ***************************************************************************/
9503 
umanclub(machine_config & config)9504 void seta_state::umanclub(machine_config &config)
9505 {
9506 	/* basic machine hardware */
9507 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
9508 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::umanclub_map);
9509 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq3_line_hold));
9510 
9511 	SETA001_SPRITE(config, m_seta001, 0);
9512 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9513 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9514 
9515 	/* video hardware */
9516 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9517 	screen.set_refresh_hz(60);
9518 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9519 	screen.set_size(64*8, 32*8);
9520 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
9521 	screen.set_screen_update(FUNC(seta_state::screen_update_seta_no_layers));
9522 	screen.set_palette(m_palette);
9523 
9524 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_tndrcade);
9525 	PALETTE(config, m_palette).set_entries(512);
9526 
9527 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
9528 
9529 	/* sound hardware */
9530 	SPEAKER(config, "mono").front_center();
9531 
9532 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
9533 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
9534 }
9535 
9536 
9537 /***************************************************************************
9538                             Ultra Toukond Densetsu
9539 ***************************************************************************/
9540 
utoukond(machine_config & config)9541 void seta_state::utoukond(machine_config &config)
9542 {
9543 	/* basic machine hardware */
9544 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
9545 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::utoukond_map);
9546 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
9547 
9548 	Z80(config, m_audiocpu, 16000000/4);   /* 4 MHz */
9549 	m_audiocpu->set_addrmap(AS_PROGRAM, &seta_state::utoukond_sound_map);
9550 	m_audiocpu->set_addrmap(AS_IO, &seta_state::utoukond_sound_io_map);
9551 
9552 	SETA001_SPRITE(config, m_seta001, 0);
9553 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9554 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9555 
9556 	/* video hardware */
9557 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9558 	screen.set_refresh_hz(60);
9559 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9560 	screen.set_size(64*8, 32*8);
9561 	screen.set_visarea(0*8, 48*8-1, 2*8, 30*8-1);
9562 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
9563 	screen.set_palette(m_palette);
9564 
9565 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_msgundam);
9566 	PALETTE(config, m_palette).set_entries(512 * 3);    // sprites, layer1, layer2
9567 
9568 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
9569 
9570 	/* sound hardware */
9571 	SPEAKER(config, "lspeaker").front_left();
9572 	SPEAKER(config, "rspeaker").front_right();
9573 
9574 	GENERIC_LATCH_8(config, m_soundlatch[0]);
9575 	m_soundlatch[0]->data_pending_callback().set_inputline(m_audiocpu, 0);
9576 	m_soundlatch[0]->set_separate_acknowledge(true);
9577 
9578 	X1_010(config, m_x1, 16000000);
9579 	m_x1->add_route(0, "lspeaker", 1.0);
9580 	m_x1->add_route(1, "rspeaker", 1.0);
9581 
9582 	ym3438_device &ymsnd(YM3438(config, "ymsnd", 16000000/4)); /* 4 MHz */
9583 	ymsnd.irq_handler().set(FUNC(seta_state::utoukond_ym3438_interrupt));
9584 	ymsnd.add_route(0, "lspeaker", 0.30);
9585 	ymsnd.add_route(1, "rspeaker", 0.30);
9586 }
9587 
9588 
9589 /***************************************************************************
9590                                 War of Aero
9591 ***************************************************************************/
9592 
wrofaero(machine_config & config)9593 void seta_state::wrofaero(machine_config &config)
9594 {
9595 	/* basic machine hardware */
9596 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
9597 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::wrofaero_map);
9598 #if USE_uPD71054_TIMER
9599 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::wrofaero_interrupt));
9600 #else
9601 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_2_and_4), "screen", 0, 1);
9602 #endif  // USE_uPD71054_TIMER
9603 
9604 	WATCHDOG_TIMER(config, "watchdog");
9605 
9606 #if USE_uPD71054_TIMER
9607 	MCFG_MACHINE_START_OVERRIDE(seta_state, wrofaero )
9608 #endif  // USE_uPD71054_TIMER
9609 
9610 	SETA001_SPRITE(config, m_seta001, 0);
9611 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9612 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9613 
9614 	/* video hardware */
9615 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9616 	screen.set_refresh_hz(60);
9617 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9618 	screen.set_size(64*8, 32*8);
9619 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
9620 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
9621 	screen.set_palette(m_palette);
9622 
9623 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_msgundam);
9624 	PALETTE(config, m_palette).set_entries(512 * 3);    // sprites, layer1, layer2
9625 
9626 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
9627 
9628 	/* sound hardware */
9629 	SPEAKER(config, "mono").front_center();
9630 
9631 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
9632 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
9633 }
9634 
9635 
9636 /***************************************************************************
9637                                 Zing Zing Zip
9638 ***************************************************************************/
9639 
9640 /* zingzip lev 3 = lev 2 + lev 1 !
9641    SR = 2100 -> lev1 is ignored so we must supply int 3, since the routine
9642    at int 1 is necessary: it plays the background music.
9643 */
9644 
zingzip(machine_config & config)9645 void seta_state::zingzip(machine_config &config)
9646 {
9647 	/* basic machine hardware */
9648 	M68000(config, m_maincpu, 16000000);   /* 16 MHz */
9649 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::wrofaero_map);
9650 	m_maincpu->set_vblank_int("screen", FUNC(seta_state::irq3_line_hold));
9651 
9652 	SETA001_SPRITE(config, m_seta001, 0);
9653 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9654 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9655 
9656 	WATCHDOG_TIMER(config, "watchdog");
9657 
9658 	/* video hardware */
9659 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9660 	screen.set_refresh_hz(57.42); // taken from other games but seems to better match PCB videos
9661 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9662 	screen.set_size(64*8, 32*8);
9663 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
9664 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
9665 	screen.set_palette(m_palette);
9666 
9667 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_zingzip);
9668 	PALETTE(config, m_palette, FUNC(seta_state::zingzip_palette), 16*32 + 16*32 + 64*32*2, 0x600);    // sprites, layer2, layer1 - layer 1 gfx is 6 planes deep
9669 
9670 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
9671 
9672 	/* sound hardware */
9673 	SPEAKER(config, "mono").front_center();
9674 
9675 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
9676 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
9677 }
9678 
9679 
zingzipbl(machine_config & config)9680 void seta_state::zingzipbl(machine_config &config)
9681 {
9682 	zingzip(config);
9683 	m_gfxdecode->set_info(gfx_zingzipbl);
9684 
9685 	M68000(config.replace(), m_maincpu, 16000000);   /* 16 MHz */
9686 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::zingzipbl_map);
9687 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
9688 
9689 	config.device_remove("x1snd");
9690 
9691 	OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
9692 }
9693 
9694 
9695 /***************************************************************************
9696                                 Pairs Love
9697 ***************************************************************************/
9698 
pairlove(machine_config & config)9699 void seta_state::pairlove(machine_config &config)
9700 {
9701 	/* basic machine hardware */
9702 	M68000(config, m_maincpu, 16000000/2); /* 8 MHz */
9703 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::pairlove_map);
9704 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1);
9705 
9706 	SETA001_SPRITE(config, m_seta001, 0);
9707 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9708 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9709 
9710 	/* video hardware */
9711 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9712 	screen.set_refresh_hz(60);
9713 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9714 	screen.set_size(64*8, 32*8);
9715 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
9716 	screen.set_screen_update(FUNC(seta_state::screen_update_seta_no_layers));
9717 	screen.set_palette(m_palette);
9718 
9719 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_pairlove);
9720 	PALETTE(config, m_palette).set_entries(2048);   // sprites only
9721 
9722 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
9723 
9724 	/* sound hardware */
9725 	SPEAKER(config, "mono").front_center();
9726 
9727 	X1_010(config, m_x1, 16000000);   /* 16 MHz */
9728 	m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
9729 }
9730 
9731 
9732 /***************************************************************************
9733                                 Crazy Fight
9734 ***************************************************************************/
9735 
TIMER_DEVICE_CALLBACK_MEMBER(seta_state::crazyfgt_interrupt)9736 TIMER_DEVICE_CALLBACK_MEMBER(seta_state::crazyfgt_interrupt)
9737 {
9738 	int scanline = param;
9739 
9740 	if ((scanline % 48) == 0)
9741 		m_maincpu->set_input_line(2, HOLD_LINE); // should this be triggered by the 3812?
9742 
9743 	if (scanline == 240)
9744 		m_maincpu->set_input_line(1, HOLD_LINE);
9745 }
9746 
crazyfgt(machine_config & config)9747 void seta_state::crazyfgt(machine_config &config)
9748 {
9749 	/* basic machine hardware */
9750 	M68000(config, m_maincpu, 16_MHz_XTAL);
9751 	m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::crazyfgt_map);
9752 	TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::crazyfgt_interrupt), "screen", 0, 1);
9753 
9754 	SETA001_SPRITE(config, m_seta001, 0);
9755 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9756 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9757 
9758 	/* video hardware */
9759 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9760 	screen.set_refresh_hz(59.1851);
9761 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9762 	screen.set_size(64*8, 32*8);
9763 	screen.set_visarea(0*8, 48*8-1, 2*8, 30*8-1);
9764 	screen.set_screen_update(FUNC(seta_state::screen_update_seta));
9765 	screen.set_palette(m_palette);
9766 
9767 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_blandia);
9768 	PALETTE(config, m_palette, FUNC(seta_state::gundhara_palette), 16*32 + 64*32*4, 0x600);  // sprites, layer2, layer1 - layers are 6 planes deep (seta_state,but have only 4 palettes)
9769 
9770 	MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
9771 
9772 	/* sound hardware */
9773 	SPEAKER(config, "mono").front_center();
9774 
9775 	ym3812_device &ymsnd(YM3812(config, "ymsnd", 16_MHz_XTAL / 4));
9776 	ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
9777 
9778 	okim6295_device &oki(OKIM6295(config, "oki", 4.433619_MHz_XTAL / 4, okim6295_device::PIN7_HIGH));
9779 	oki.add_route(ALL_OUTPUTS, "mono", 1.0);
9780 }
9781 
9782 
9783 /***************************************************************************
9784                                  Jockey Club
9785 ***************************************************************************/
9786 
9787 // Test mode shows a 16ms and 2ms counters, then there's vblank and presumably ACIA irqs ...
TIMER_DEVICE_CALLBACK_MEMBER(jockeyc_state::interrupt)9788 TIMER_DEVICE_CALLBACK_MEMBER(jockeyc_state::interrupt)
9789 {
9790 	int scanline = param;
9791 
9792 	/* ACIA irq */
9793 	if (scanline == 15)
9794 		m_maincpu->set_input_line(4, HOLD_LINE);
9795 
9796 	if (scanline == 38)
9797 		m_maincpu->set_input_line(1, HOLD_LINE);
9798 
9799 	if (scanline == 61)
9800 		m_maincpu->set_input_line(2, HOLD_LINE);
9801 
9802 	if (scanline >= 85 && (scanline % 23) == 0)
9803 		m_maincpu->set_input_line(6, HOLD_LINE);
9804 }
9805 
MACHINE_START_MEMBER(jockeyc_state,jockeyc)9806 MACHINE_START_MEMBER(jockeyc_state, jockeyc)
9807 {
9808 	m_out_cancel.resolve();
9809 	m_out_payout.resolve();
9810 	m_out_start.resolve();
9811 }
9812 
9813 
jockeyc(machine_config & config)9814 void jockeyc_state::jockeyc(machine_config &config)
9815 {
9816 	/* basic machine hardware */
9817 	M68000(config, m_maincpu, XTAL(16'000'000)/2); // TMP68000N-8
9818 	m_maincpu->set_addrmap(AS_PROGRAM, &jockeyc_state::jockeyc_map);
9819 	TIMER(config, "scantimer").configure_scanline(FUNC(jockeyc_state::interrupt), "screen", 0, 1);
9820 
9821 	WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(2.0)); // jockeyc: watchdog test error if over 2.5s
9822 
9823 	SETA001_SPRITE(config, m_seta001, 0);
9824 	m_seta001->set_gfxdecode_tag(m_gfxdecode);
9825 	m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
9826 
9827 	NVRAM(config, "nvram", nvram_device::DEFAULT_RANDOM);
9828 
9829 	MCFG_MACHINE_START_OVERRIDE(jockeyc_state, jockeyc)
9830 	/* devices */
9831 	UPD4992(config, m_rtc, 32'768); // ! Actually D4911C !
9832 	ACIA6850(config, "acia0", 0);
9833 	TICKET_DISPENSER(config, "hopper1", attotime::from_msec(150), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
9834 	TICKET_DISPENSER(config, "hopper2", attotime::from_msec(150), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
9835 
9836 	/* video hardware */
9837 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
9838 	screen.set_refresh_hz(60);
9839 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
9840 	screen.set_size(64*8, 32*8);
9841 	screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
9842 	screen.set_screen_update(FUNC(seta_state::screen_update_seta_layers));
9843 	screen.set_palette(m_palette);
9844 
9845 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_downtown);
9846 	PALETTE(config, m_palette, FUNC(seta_state::palette_init_RRRRRGGGGGBBBBB_proms), 512 * 1);
9847 
9848 	MCFG_VIDEO_START_OVERRIDE(jockeyc_state,jockeyc_1_layer)
9849 
9850 	/* sound hardware */
9851 	SPEAKER(config, "lspeaker").front_left();
9852 	SPEAKER(config, "rspeaker").front_right();
9853 
9854 	X1_010(config, m_x1, 16000000);
9855 	m_x1->add_route(0, "lspeaker", 1.0);
9856 	m_x1->add_route(1, "rspeaker", 1.0);
9857 
9858 	// layout
9859 	config.set_default_layout(layout_jockeyc);
9860 }
9861 
9862 
9863 /***************************************************************************
9864                              International Toote
9865 ***************************************************************************/
9866 
MACHINE_START_MEMBER(jockeyc_state,inttoote)9867 MACHINE_START_MEMBER(jockeyc_state, inttoote)
9868 {
9869 	m_out_help.resolve();
9870 	m_out_itstart.resolve();
9871 }
9872 
inttoote(machine_config & config)9873 void jockeyc_state::inttoote(machine_config &config)
9874 {
9875 	jockeyc(config);
9876 
9877 	M68000(config.replace(), m_maincpu, XTAL(16'000'000)); // TMP68HC000N-16
9878 	m_maincpu->set_addrmap(AS_PROGRAM, &jockeyc_state::inttoote_map);
9879 
9880 	MCFG_MACHINE_START_OVERRIDE(jockeyc_state, inttoote)
9881 
9882 	// I/O board (not hooked up yet)
9883 	PIA6821(config, "pia0", 0);
9884 	PIA6821(config, "pia1", 0);
9885 
9886 	ACIA6850(config, "acia1", 0);
9887 	ACIA6850(config, "acia2", 0);
9888 
9889 	// layout
9890 	config.set_default_layout(layout_inttoote);
9891 }
9892 
9893 
9894 
9895 /***************************************************************************
9896 
9897                                 ROMs Loading
9898 
9899 ***************************************************************************/
9900 
9901 // used for 6bpp gfxs
9902 #define ROM_LOAD24_BYTE(name, offset,length,hash)        ROMX_LOAD(name, offset, length, hash, ROM_SKIP(2))
9903 #define ROM_LOAD24_WORD(name, offset,length,hash)        ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_SKIP(1))
9904 #define ROM_LOAD24_WORD_SWAP(name, offset,length,hash)   ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(1))
9905 
9906 ROM_START( tndrcade )
9907 	ROM_REGION( 0x080000, "maincpu", 0 )        /* 68000 Code */
9908 	ROM_LOAD16_BYTE( "ua0-4.u19", 0x000000, 0x020000, CRC(73bd63eb) SHA1(5d410d2a77f1c3c4c37a9fe1e56019335891fe67) )
CRC(e96194b1)9909 	ROM_LOAD16_BYTE( "ua0-2.u17", 0x000001, 0x020000, CRC(e96194b1) SHA1(c5084d06a2e4f7ba3112be1ccc314f7d712bb45e) )
9910 	ROM_LOAD16_BYTE( "ua0-3.u18", 0x040000, 0x020000, CRC(0a7b1c41) SHA1(ede14ac08d7e63972c21fd2d0717276e73153f18) )
9911 	ROM_LOAD16_BYTE( "ua0-1.u16", 0x040001, 0x020000, CRC(fa906626) SHA1(a1d28328afa8dda98dd20f3f5a19c0dbf2ebaf36) )
9912 
9913 	ROM_REGION( 0x02c000, "sub", 0 )        /* 65c02 Code */
9914 	ROM_LOAD( "ua10-5.u24", 0x004000, 0x020000, CRC(8eff6122) SHA1(1adc1643018e612df85643014b78525106478889) )  // $1fffd=2 (country code)
9915 	ROM_RELOAD(             0x00c000, 0x020000  )
9916 
9917 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
9918 	ROM_LOAD( "ua0-10.u12", 0x000000, 0x040000, CRC(aa7b6757) SHA1(9157cc930760c846cce95e18bf38e7ea241f7a8e) )
9919 	ROM_LOAD( "ua0-11.u13", 0x040000, 0x040000, CRC(11eaf931) SHA1(ba1dfc4b0f87b1bbdc6c2e36deaecda2b4655d57) )
9920 	ROM_LOAD( "ua0-12.u14", 0x080000, 0x040000, CRC(00b5381c) SHA1(6fc3138dd0e2b3f99872b1f0d177094df5bed39d) )
9921 	ROM_LOAD( "ua0-13.u15", 0x0c0000, 0x040000, CRC(8f9a0ed3) SHA1(61315312fdb2fe090cd8e99a1ce3ecba46b466e9) )
9922 	ROM_LOAD( "ua0-6.u8",   0x100000, 0x040000, CRC(14ecc7bb) SHA1(920983f5086462f8f06dc9cf7bebffeeb7187977) )
9923 	ROM_LOAD( "ua0-7.u9",   0x140000, 0x040000, CRC(ff1a4e68) SHA1(d732df7d139995814969a603c9c4e9f8b068b1a3) )
9924 	ROM_LOAD( "ua0-8.u10",  0x180000, 0x040000, CRC(936e1884) SHA1(9ad495b88e124d08a7141611ed1897b6e2abd412) )
9925 	ROM_LOAD( "ua0-9.u11",  0x1c0000, 0x040000, CRC(e812371c) SHA1(b0e1e0c143da743bf9f7b48d657594e76f4970ed) )
9926 ROM_END
9927 
9928 ROM_START( tndrcadej )
9929 	ROM_REGION( 0x080000, "maincpu", 0 )        /* 68000 Code */
9930 	ROM_LOAD16_BYTE( "ua0-4.u19", 0x000000, 0x020000, CRC(73bd63eb) SHA1(5d410d2a77f1c3c4c37a9fe1e56019335891fe67) )
9931 	ROM_LOAD16_BYTE( "ua0-2.u17", 0x000001, 0x020000, CRC(e96194b1) SHA1(c5084d06a2e4f7ba3112be1ccc314f7d712bb45e) )
9932 	ROM_LOAD16_BYTE( "ua0-3.u18", 0x040000, 0x020000, CRC(0a7b1c41) SHA1(ede14ac08d7e63972c21fd2d0717276e73153f18) )
9933 	ROM_LOAD16_BYTE( "ua0-1.u16", 0x040001, 0x020000, CRC(fa906626) SHA1(a1d28328afa8dda98dd20f3f5a19c0dbf2ebaf36) )
9934 
9935 	ROM_REGION( 0x02c000, "sub", 0 )        /* 65c02 Code */
9936 	ROM_LOAD( "thcade5.u24", 0x004000, 0x020000, CRC(8cb9df7b) SHA1(5b504657f4cc1ea265913ff670aed108ceddba46) ) // $1fffd=1 (country code jp)
9937 	ROM_RELOAD(              0x00c000, 0x020000  )
9938 
9939 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
9940 	ROM_LOAD( "ua0-10.u12", 0x000000, 0x040000, CRC(aa7b6757) SHA1(9157cc930760c846cce95e18bf38e7ea241f7a8e) )
9941 	ROM_LOAD( "ua0-11.u13", 0x040000, 0x040000, CRC(11eaf931) SHA1(ba1dfc4b0f87b1bbdc6c2e36deaecda2b4655d57) )
9942 	ROM_LOAD( "ua0-12.u14", 0x080000, 0x040000, CRC(00b5381c) SHA1(6fc3138dd0e2b3f99872b1f0d177094df5bed39d) )
9943 	ROM_LOAD( "ua0-13.u15", 0x0c0000, 0x040000, CRC(8f9a0ed3) SHA1(61315312fdb2fe090cd8e99a1ce3ecba46b466e9) )
9944 	ROM_LOAD( "ua0-6.u8",   0x100000, 0x040000, CRC(14ecc7bb) SHA1(920983f5086462f8f06dc9cf7bebffeeb7187977) )
9945 	ROM_LOAD( "ua0-7.u9",   0x140000, 0x040000, CRC(ff1a4e68) SHA1(d732df7d139995814969a603c9c4e9f8b068b1a3) )
9946 	ROM_LOAD( "ua0-8.u10",  0x180000, 0x040000, CRC(936e1884) SHA1(9ad495b88e124d08a7141611ed1897b6e2abd412) )
9947 	ROM_LOAD( "ua0-9.u11",  0x1c0000, 0x040000, CRC(e812371c) SHA1(b0e1e0c143da743bf9f7b48d657594e76f4970ed) )
9948 ROM_END
9949 
9950 ROM_START( twineagl )
9951 	ROM_REGION( 0x0a0000, "maincpu", 0 )        /* 68000 Code */
9952 	ROM_LOAD16_WORD( "ua2-1", 0x000000, 0x080000, CRC(5c3fe531) SHA1(e484dad25cda906fb1b0606fb10ae50056c64e6a) )
9953 
9954 	ROM_REGION( 0x010000, "sub", 0 )        /* 65c02 Code */
9955 	ROM_LOAD( "ua2-2", 0x006000, 0x002000, CRC(783ca84e) SHA1(21e19f74812de50e98b755dd1f68c187dd1e7e81) )
9956 	ROM_RELOAD(        0x008000, 0x002000  )
9957 	ROM_RELOAD(        0x00a000, 0x002000  )
9958 	ROM_RELOAD(        0x00c000, 0x002000  )
9959 	ROM_RELOAD(        0x00e000, 0x002000  )
9960 
9961 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
9962 	ROM_LOAD16_BYTE( "ua2-4",  0x000000, 0x040000, CRC(8b7532d6) SHA1(ec42d21bc44f004282f822b3da36b5442eabd87a) )
9963 	ROM_LOAD16_BYTE( "ua2-3",  0x000001, 0x040000, CRC(1124417a) SHA1(c908f51b943188946486c639a0cb9712114b5437) )
9964 	ROM_LOAD16_BYTE( "ua2-6",  0x080000, 0x040000, CRC(99d8dbba) SHA1(ac2a3c5cad23e0207eba52935c72e23203c8e0af) )
9965 	ROM_LOAD16_BYTE( "ua2-5",  0x080001, 0x040000, CRC(6e450d28) SHA1(d0050afcc3f425ac70768271c9d2d55ab7fba622) )
9966 
9967 	ROM_REGION( 0x200000, "gfx2", 0 )   /* Layer 1 */
9968 	ROM_LOAD16_BYTE( "ua2-7",  0x000001, 0x080000, CRC(fce56907) SHA1(5d0d2d6dfdbadb21f1d61d84b8992ec0e527e18d) )
9969 	ROM_LOAD16_BYTE( "ua2-8",  0x000000, 0x080000, CRC(7d3a8d73) SHA1(d6a0bea124d7d228818f8ea8c804ad2ba8cead4b) )
9970 	ROM_LOAD16_BYTE( "ua2-9",  0x100001, 0x080000, CRC(a451eae9) SHA1(c236c92d9ecf56f8d8f4a5ee493e3791be0d3db4) )
9971 	ROM_LOAD16_BYTE( "ua2-10", 0x100000, 0x080000, CRC(5bbe1f56) SHA1(309bc43884816dafeb0f47e71ff5272d4d7cac54) )
9972 
9973 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
9974 	ROM_LOAD( "ua2-11", 0x000000, 0x080000, CRC(624e6057) SHA1(0e8e4d4b6bc5febf5ca83eea92e3ed06f16e7df0) )
9975 	ROM_LOAD( "ua2-12", 0x080000, 0x080000, CRC(3068ff64) SHA1(7c06a48a99ebb9e7f3709f25bd0caa4c9d7a2688) )
9976 ROM_END
9977 
9978 ROM_START( downtown )
9979 	ROM_REGION( 0x0a0000, "maincpu", 0 )        /* 68000 Code */
9980 	ROM_LOAD16_BYTE( "ud2-001-000.3c",  0x000000, 0x040000, CRC(f1965260) SHA1(c0560342238d75f9b81ae9f3408cacfbcd331529) ) /* 40 pin MASK rom */
9981 	ROM_LOAD16_BYTE( "ud2-001-003.11c", 0x000001, 0x040000, CRC(e7d5fa5f) SHA1(48612514598711aa73bf75243c842f0aca72f3d0) ) /* 40 pin MASK rom */
9982 	ROM_LOAD16_BYTE( "ud2001002.9b", 0x080000, 0x010000, CRC(a300e3ac) SHA1(958cb121787444cdc6938fc5aad1e92238e39c13) )
9983 	ROM_LOAD16_BYTE( "ud2001001.8b", 0x080001, 0x010000, CRC(d2918094) SHA1(c135939ad12e3cf0688db148c49f99e757ad7b0d) )
9984 
9985 	ROM_REGION( 0x04c000, "sub", 0 )        /* 65c02 Code */
9986 	ROM_LOAD( "ud2-002-004.17c", 0x004000, 0x040000, CRC(bbd538b1) SHA1(de4c43bfc4004a14f9f66b5e8ff192b00c45c003) ) /* 40 pin MASK rom */
9987 	ROM_RELOAD(                  0x00c000, 0x040000  )
9988 
9989 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
9990 	ROM_LOAD16_BYTE( "ud2-001-005-t01.2n", 0x000000, 0x080000, CRC(77e6d249) SHA1(cdf67211cd447858293188511e826640fe24078b) ) /* 32 pin MASK rom */
9991 	ROM_LOAD16_BYTE( "ud2-001-006-t02.3n", 0x000001, 0x080000, CRC(6e381bf2) SHA1(ba46e019d2991dec539444ef7376fe0e9a6a8b75) ) /* 32 pin MASK rom */
9992 	ROM_LOAD16_BYTE( "ud2-001-007-t03.5n", 0x100000, 0x080000, CRC(737b4971) SHA1(2a034011b0ac03d532a89b544f4eec497ac7ee80) ) /* 32 pin MASK rom */
9993 	ROM_LOAD16_BYTE( "ud2-001-008-t04.6n", 0x100001, 0x080000, CRC(99b9d757) SHA1(c3a763993305110ec2a0b231d75fbef4c385d21b) ) /* 32 pin MASK rom */
9994 
9995 	ROM_REGION( 0x100000, "gfx2", 0 )   /* Layer 1 */
9996 	ROM_LOAD16_BYTE( "ud2-001-009-t05.8n", 0x000000, 0x080000, CRC(aee6c581) SHA1(5b2150a308ca12eea8148d0bbff663b3baf0c831) ) /* 32 pin MASK rom */
9997 	ROM_LOAD16_BYTE( "ud2-001-010-t06.9n", 0x000001, 0x080000, CRC(3d399d54) SHA1(7d9036e73fbf0e9c3b976336e3e4786b17b2f4fc) ) /* 32 pin MASK rom */
9998 
9999 	ROM_REGION( 0x080000, "x1snd", 0 )  /* Samples */
10000 	ROM_LOAD( "ud2-001-011-t07.14n", 0x000000, 0x080000, CRC(9c9ff69f) SHA1(3840b654f4f709bc4c03dfe4ee79369d5c70dd62) ) /* 32 pin MASK rom */
10001 ROM_END
10002 
10003 ROM_START( downtown2 )
10004 	ROM_REGION( 0x0a0000, "maincpu", 0 )        /* 68000 Code */
10005 	ROM_LOAD16_BYTE( "ud2-001-000.3c",  0x000000, 0x040000, CRC(f1965260) SHA1(c0560342238d75f9b81ae9f3408cacfbcd331529) ) /* 40 pin MASK rom */
10006 	ROM_LOAD16_BYTE( "ud2-001-003.11c", 0x000001, 0x040000, CRC(e7d5fa5f) SHA1(48612514598711aa73bf75243c842f0aca72f3d0) ) /* 40 pin MASK rom */
10007 	ROM_LOAD16_BYTE( "ud2000002.9b",    0x080000, 0x010000, CRC(ca976b24) SHA1(3b2e362f414b0103dd02c9af6a5d480ec2cf9ca3) )
10008 	ROM_LOAD16_BYTE( "ud2000001.8b",    0x080001, 0x010000, CRC(1708aebd) SHA1(337a9e8d5da5b13a7ea4ee728de6b82fe92e16c5) )
10009 
10010 	ROM_REGION( 0x04c000, "sub", 0 )        /* 65c02 Code */
10011 	ROM_LOAD( "ud2-002-004.17c", 0x004000, 0x040000, CRC(bbd538b1) SHA1(de4c43bfc4004a14f9f66b5e8ff192b00c45c003) ) /* 40 pin MASK rom */
10012 	ROM_RELOAD(                  0x00c000, 0x040000  )
10013 
10014 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
10015 	ROM_LOAD16_BYTE( "ud2-001-005-t01.2n", 0x000000, 0x080000, CRC(77e6d249) SHA1(cdf67211cd447858293188511e826640fe24078b) ) /* 32 pin MASK rom */
10016 	ROM_LOAD16_BYTE( "ud2-001-006-t02.3n", 0x000001, 0x080000, CRC(6e381bf2) SHA1(ba46e019d2991dec539444ef7376fe0e9a6a8b75) ) /* 32 pin MASK rom */
10017 	ROM_LOAD16_BYTE( "ud2-001-007-t03.5n", 0x100000, 0x080000, CRC(737b4971) SHA1(2a034011b0ac03d532a89b544f4eec497ac7ee80) ) /* 32 pin MASK rom */
10018 	ROM_LOAD16_BYTE( "ud2-001-008-t04.6n", 0x100001, 0x080000, CRC(99b9d757) SHA1(c3a763993305110ec2a0b231d75fbef4c385d21b) ) /* 32 pin MASK rom */
10019 
10020 	ROM_REGION( 0x100000, "gfx2", 0 )   /* Layer 1 */
10021 	ROM_LOAD16_BYTE( "ud2-001-009-t05.8n", 0x000000, 0x080000, CRC(aee6c581) SHA1(5b2150a308ca12eea8148d0bbff663b3baf0c831) ) /* 32 pin MASK rom */
10022 	ROM_LOAD16_BYTE( "ud2-001-010-t06.9n", 0x000001, 0x080000, CRC(3d399d54) SHA1(7d9036e73fbf0e9c3b976336e3e4786b17b2f4fc) ) /* 32 pin MASK rom */
10023 
10024 	ROM_REGION( 0x080000, "x1snd", 0 )  /* Samples */
10025 	ROM_LOAD( "ud2-001-011-t07.14n", 0x000000, 0x080000, CRC(9c9ff69f) SHA1(3840b654f4f709bc4c03dfe4ee79369d5c70dd62) ) /* 32 pin MASK rom */
10026 ROM_END
10027 
10028 ROM_START( downtownj )
10029 	ROM_REGION( 0x0a0000, "maincpu", 0 )        /* 68000 Code */
10030 	ROM_LOAD16_BYTE( "ud2-001-000.3c",  0x000000, 0x040000, CRC(f1965260) SHA1(c0560342238d75f9b81ae9f3408cacfbcd331529) ) /* 40 pin MASK rom */
10031 	ROM_LOAD16_BYTE( "ud2-001-003.11c", 0x000001, 0x040000, CRC(e7d5fa5f) SHA1(48612514598711aa73bf75243c842f0aca72f3d0) ) /* 40 pin MASK rom */
10032 	ROM_LOAD16_BYTE( "u37.9b",          0x080000, 0x010000, CRC(73047657) SHA1(731663101d809170aad3cd39e901ef494494c5a1) )
10033 	ROM_LOAD16_BYTE( "u31.8b",          0x080001, 0x010000, CRC(6a050240) SHA1(6a1a305b7d32bb2ad17842b4eeabc891fce02160) )
10034 
10035 	ROM_REGION( 0x04c000, "sub", 0 )        /* 65c02 Code */
10036 	ROM_LOAD( "ud2-002-004.17c", 0x004000, 0x040000, CRC(bbd538b1) SHA1(de4c43bfc4004a14f9f66b5e8ff192b00c45c003) ) /* 40 pin MASK rom */
10037 	ROM_RELOAD(                  0x00c000, 0x040000  )
10038 
10039 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
10040 	ROM_LOAD16_BYTE( "ud2-001-005-t01.2n", 0x000000, 0x080000, CRC(77e6d249) SHA1(cdf67211cd447858293188511e826640fe24078b) ) /* 32 pin MASK rom */
10041 	ROM_LOAD16_BYTE( "ud2-001-006-t02.3n", 0x000001, 0x080000, CRC(6e381bf2) SHA1(ba46e019d2991dec539444ef7376fe0e9a6a8b75) ) /* 32 pin MASK rom */
10042 	ROM_LOAD16_BYTE( "ud2-001-007-t03.5n", 0x100000, 0x080000, CRC(737b4971) SHA1(2a034011b0ac03d532a89b544f4eec497ac7ee80) ) /* 32 pin MASK rom */
10043 	ROM_LOAD16_BYTE( "ud2-001-008-t04.6n", 0x100001, 0x080000, CRC(99b9d757) SHA1(c3a763993305110ec2a0b231d75fbef4c385d21b) ) /* 32 pin MASK rom */
10044 
10045 	ROM_REGION( 0x100000, "gfx2", 0 )   /* Layer 1 */
10046 	ROM_LOAD16_BYTE( "ud2-001-009-t05.8n", 0x000000, 0x080000, CRC(aee6c581) SHA1(5b2150a308ca12eea8148d0bbff663b3baf0c831) ) /* 32 pin MASK rom */
10047 	ROM_LOAD16_BYTE( "ud2-001-010-t06.9n", 0x000001, 0x080000, CRC(3d399d54) SHA1(7d9036e73fbf0e9c3b976336e3e4786b17b2f4fc) ) /* 32 pin MASK rom */
10048 
10049 	ROM_REGION( 0x080000, "x1snd", 0 )  /* Samples */
10050 	ROM_LOAD( "ud2-001-011-t07.14n", 0x000000, 0x080000, CRC(9c9ff69f) SHA1(3840b654f4f709bc4c03dfe4ee79369d5c70dd62) ) /* 32 pin MASK rom */
10051 ROM_END
10052 
10053 ROM_START( downtownp )
10054 	ROM_REGION( 0x0a0000, "maincpu", 0 )        /* 68000 Code */
10055 	ROM_LOAD16_BYTE( "ud2-001-000.3c",   0x000000, 0x040000, CRC(f1965260) SHA1(c0560342238d75f9b81ae9f3408cacfbcd331529) ) /* 40 pin MASK rom */
10056 	ROM_LOAD16_BYTE( "ud2-001-003.11c",  0x000001, 0x040000, CRC(e7d5fa5f) SHA1(48612514598711aa73bf75243c842f0aca72f3d0) ) /* 40 pin MASK rom */
10057 	ROM_LOAD16_BYTE( "ud2_even_v061.9b", 0x080000, 0x010000, CRC(251d6552) SHA1(0f78bf142db826e956f670ba81102804e88fa2ed) ) /* handwritten label UD2 EVEN V0.61 2/13 */
10058 	ROM_LOAD16_BYTE( "ud2_odd_v061.8b",  0x080001, 0x010000, CRC(6394a7c0) SHA1(9f5099b32b3c3e100441f6c0ccbe88c19b01a9e5) ) /* handwritten label UD2 ODD V0.61 2/13  */
10059 
10060 	ROM_REGION( 0x04c000, "sub", 0 )        /* 65c02 Code */
10061 	ROM_LOAD( "ud2-002-004.17c", 0x004000, 0x040000, CRC(bbd538b1) SHA1(de4c43bfc4004a14f9f66b5e8ff192b00c45c003) ) /* 40 pin MASK rom */
10062 	ROM_RELOAD(                  0x00c000, 0x040000  )
10063 
10064 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
10065 	ROM_LOAD16_BYTE( "ud2-001-005-t01.2n", 0x000000, 0x080000, CRC(77e6d249) SHA1(cdf67211cd447858293188511e826640fe24078b) ) /* 32 pin MASK rom */
10066 	ROM_LOAD16_BYTE( "ud2-001-006-t02.3n", 0x000001, 0x080000, CRC(6e381bf2) SHA1(ba46e019d2991dec539444ef7376fe0e9a6a8b75) ) /* 32 pin MASK rom */
10067 	ROM_LOAD16_BYTE( "ud2-001-007-t03.5n", 0x100000, 0x080000, CRC(737b4971) SHA1(2a034011b0ac03d532a89b544f4eec497ac7ee80) ) /* 32 pin MASK rom */
10068 	ROM_LOAD16_BYTE( "ud2-001-008-t04.6n", 0x100001, 0x080000, CRC(99b9d757) SHA1(c3a763993305110ec2a0b231d75fbef4c385d21b) ) /* 32 pin MASK rom */
10069 
10070 	ROM_REGION( 0x100000, "gfx2", 0 )   /* Layer 1 */
10071 	ROM_LOAD16_BYTE( "ud2-001-009-t05.8n", 0x000000, 0x080000, CRC(aee6c581) SHA1(5b2150a308ca12eea8148d0bbff663b3baf0c831) ) /* 32 pin MASK rom */
10072 	ROM_LOAD16_BYTE( "ud2-001-010-t06.9n", 0x000001, 0x080000, CRC(3d399d54) SHA1(7d9036e73fbf0e9c3b976336e3e4786b17b2f4fc) ) /* 32 pin MASK rom */
10073 
10074 	ROM_REGION( 0x080000, "x1snd", 0 )  /* Samples */
10075 	ROM_LOAD( "ud2-001-011-t07.14n", 0x000000, 0x080000, CRC(9c9ff69f) SHA1(3840b654f4f709bc4c03dfe4ee79369d5c70dd62) ) /* 32 pin MASK rom */
10076 ROM_END
10077 
10078 ROM_START( usclssic )
10079 	ROM_REGION( 0x080000, "maincpu", 0 )        /* 68000 Code */
10080 	ROM_LOAD16_BYTE( "ue2001.u20", 0x000000, 0x020000, CRC(18b41421) SHA1(74e96071d46eda152aaa82cf87d09203f225b504) )
10081 	ROM_LOAD16_BYTE( "ue2000.u14", 0x000001, 0x020000, CRC(69454bc2) SHA1(19a3b6ca65770353401544c50e04d895e391612c) )
10082 	ROM_LOAD16_BYTE( "ue2002.u22", 0x040000, 0x020000, CRC(a7bbe248) SHA1(8f7ffeffb8b6ef0e1ab5e7fbba31a1b97bbd7f8c) )
10083 	ROM_LOAD16_BYTE( "ue2003.u30", 0x040001, 0x020000, CRC(29601906) SHA1(9cdf2d80a72317a4eb7a335aaaae381822da24b1) )
10084 
10085 	ROM_REGION( 0x04c000, "sub", 0 )        /* 65c02 Code */
10086 	ROM_LOAD( "ue002u61.004", 0x004000, 0x040000, CRC(476e9f60) SHA1(940c09eb472652a88d5d34130270ff55a5f5ba27) )
10087 	ROM_RELOAD(               0x00c000, 0x040000  )
10088 
10089 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
10090 	ROM_LOAD16_BYTE( "ue001009.119", 0x000000, 0x080000, CRC(dc065204) SHA1(0478b8126cd3ce3dee64cb7de2b30b509636eb1a) )
10091 	ROM_LOAD16_BYTE( "ue001008.118", 0x000001, 0x080000, CRC(5947d9b5) SHA1(de3a63c55b558451bbbe98bf8d71561ba32c5e60) )
10092 	ROM_LOAD16_BYTE( "ue001007.117", 0x100000, 0x080000, CRC(b48a885c) SHA1(8c0d458d6967c2ff4bdcf37aaa8025341fe90bbc) )
10093 	ROM_LOAD16_BYTE( "ue001006.116", 0x100001, 0x080000, CRC(a6ab6ef4) SHA1(9f54f116d1d8e54d64ba541195baa66c5ca960bd) )
10094 
10095 	ROM_REGION( 0x600000, "gfx2", 0 )   /* Layer 1 */
10096 	ROM_LOAD24_BYTE( "ue001010.120", 0x000000, 0x080000, CRC(dd683031) SHA1(06ed38a243666c1acaf8eb3fdba51d18fc2a70bc) )    // planes 01
10097 	ROM_LOAD24_BYTE( "ue001011.121", 0x180000, 0x080000, CRC(0e27bc49) SHA1(f9ec4f4c15c86f608607a5ec916f5182a8e265fa) )
10098 	ROM_LOAD24_BYTE( "ue001012.122", 0x300000, 0x080000, CRC(961dfcdc) SHA1(9de95692860abd4206db22ad7ade9f02f0c03506) )
10099 	ROM_LOAD24_BYTE( "ue001013.123", 0x480000, 0x080000, CRC(03e9eb79) SHA1(e7cabfd73b73c7df8d79c113db5eca110bf2f05e) )
10100 
10101 	ROM_LOAD24_BYTE( "ue001014.124", 0x000001, 0x080000, CRC(9576ace7) SHA1(a5350934533241daf63c561a88d952bb6976b81b) )    // planes 23
10102 	ROM_LOAD24_BYTE( "ue001015.125", 0x180001, 0x080000, CRC(631d6eb1) SHA1(df342c20e2b3c29eab3c72440c11be60d14d3557) )
10103 	ROM_LOAD24_BYTE( "ue001016.126", 0x300001, 0x080000, CRC(f44a8686) SHA1(649f6f95cc67fa2f4551af19a2b607c811318820) )
10104 	ROM_LOAD24_BYTE( "ue001017.127", 0x480001, 0x080000, CRC(7f568258) SHA1(ac36e87386f9d5c68c66a9469e1b30ee66c4cb7f) )
10105 
10106 	ROM_LOAD24_BYTE( "ue001018.128", 0x000002, 0x080000, CRC(4bd98f23) SHA1(be6483253a5ea1efe7c7f6b4432fe819b906894c) )    // planes 45
10107 	ROM_LOAD24_BYTE( "ue001019.129", 0x180002, 0x080000, CRC(6d9f5a33) SHA1(8d300adf2b3299df78e274c4c7f2ee2d8e1e2575) )
10108 	ROM_LOAD24_BYTE( "ue001020.130", 0x300002, 0x080000, CRC(bc07403f) SHA1(f994b6d1dee23f5dabdb328f955f4380a8ca9d52) )
10109 	ROM_LOAD24_BYTE( "ue001021.131", 0x480002, 0x080000, CRC(98c03efd) SHA1(761c51d5573e6f35c48b8b9ee5d88cbde02e92a7) )
10110 
10111 	ROM_REGION( 0x400, "proms", 0 ) /* Extra Colours */
10112 	ROM_LOAD16_BYTE( "ue1-022.prm", 0x000, 0x200, CRC(1a23129e) SHA1(110eb54ab83ecb8375164a5c96f522b2737c379c) )
10113 	ROM_LOAD16_BYTE( "ue1-023.prm", 0x001, 0x200, CRC(a13192a4) SHA1(86e312e0f7400b7fa08fbe8fced1eb95a32502ca) )
10114 
10115 	ROM_REGION( 0x080000, "x1snd", 0 )  /* Samples */
10116 	ROM_LOAD( "ue001005.132", 0x000000, 0x080000, CRC(c5fea37c) SHA1(af4f09dd36af06e50262f607ff14eedc33beffd2) )
10117 ROM_END
10118 
10119 ROM_START( calibr50 )
10120 	ROM_REGION( 0x0a0000, "maincpu", 0 )        /* 68000 Code */
10121 	ROM_LOAD16_BYTE( "uh002001.u45", 0x000000, 0x040000, CRC(eb92e7ed) SHA1(2aee8a7bce549ef7d7b35d1c248ebbdbc906e38d) )
10122 	ROM_LOAD16_BYTE( "uh002004.u41", 0x000001, 0x040000, CRC(5a0ed31e) SHA1(d6ee7654354ac9f1dc7add1ef9f68a147b6f2953) )
10123 	ROM_LOAD16_BYTE( "uh001003.9a",  0x080000, 0x010000, CRC(0d30d09f) SHA1(8a48511b628e85b72fda0968d813f4faebd0c418) )
10124 	ROM_LOAD16_BYTE( "uh001002.7a",  0x080001, 0x010000, CRC(7aecc3f9) SHA1(2454d9c758fa623d4d81a9230871b67d31d16cef) )
10125 
10126 	ROM_REGION( 0x04c000, "sub", 0 )        /* 65c02 Code */
10127 	ROM_LOAD( "uh001005.u61", 0x004000, 0x040000, CRC(4a54c085) SHA1(f53ff257ce3d95f945a6befcfb61f1b570f0eafe) )
10128 	ROM_RELOAD(               0x00c000, 0x040000  )
10129 
10130 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
10131 	ROM_LOAD16_BYTE( "uh001006.ux2", 0x000000, 0x080000, CRC(fff52f91) SHA1(fd7807e9a8dd5a88df1fcd13746b44a33adbc0fa) )
10132 	ROM_LOAD16_BYTE( "uh001007.ux1", 0x000001, 0x080000, CRC(b6c19f71) SHA1(eb8bbaeaf4af07e178100ff16b228b537aa36272) )
10133 	ROM_LOAD16_BYTE( "uh001008.ux6", 0x100000, 0x080000, CRC(7aae07ef) SHA1(1db666db20efce1efe5b5769b8e3c78bbf508466) )
10134 	ROM_LOAD16_BYTE( "uh001009.ux0", 0x100001, 0x080000, CRC(f85da2c5) SHA1(d090e49b3a897729c7fb05f9386939448fe1d3d9) )
10135 
10136 	ROM_REGION( 0x100000, "gfx2", 0 )   /* Layer 1 */
10137 	ROM_LOAD16_BYTE( "uh001010.u3x", 0x000000, 0x080000, CRC(f986577a) SHA1(8f6c2fca271fed21a1c04e93c3f50dc41348ae30) )
10138 	ROM_LOAD16_BYTE( "uh001011.u50", 0x000001, 0x080000, CRC(08620052) SHA1(e2ab49dbabc139e6b276401340085ccab1ae3892) )
10139 
10140 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10141 	ROM_LOAD( "uh001013.u60", 0x000000, 0x080000, CRC(09ec0df6) SHA1(57c68d05074ea4a1e133be2ce6e25c594f04a712) )
10142 	ROM_LOAD( "uh001012.u46", 0x080000, 0x080000, CRC(bb996547) SHA1(0c8f570ef4454b10a023e0c463001c22a8cf99cd) )
10143 ROM_END
10144 
10145 ROM_START( arbalest )
10146 	ROM_REGION( 0x0a0000, "maincpu", 0 )        /* 68000 Code */
10147 	ROM_LOAD16_BYTE( "uk-001-003",  0x000000, 0x040000, CRC(ee878a2c) SHA1(f7d5817015382ce6af317c02746b473ec798bb4f) ) /* Mask ROM on P1-037A sub PCB */
10148 	ROM_LOAD16_BYTE( "uk-001-004",  0x000001, 0x040000, CRC(902bb4e3) SHA1(e37a361a7c03aee2d6ac8c96c2dd6c1e411b46fb) ) /* Mask ROM on P1-037A sub PCB */
10149 
10150 	ROM_REGION( 0x010000, "sub", 0 )        /* 65c02 Code */
10151 	/* Label is correct, 1st & 2nd halves identical is correct. Chip is a 27128 - Verified on 2 different PCBs */
10152 	ROM_LOAD( "uk6005", 0x006000, 0x004000, CRC(48c73a4a) SHA1(1284ae7236a82a5898a57ec0451b7dcc4d409099) ) /* EPROM on P1-037A sub PCB */
10153 	ROM_RELOAD(         0x00a000, 0x004000  )
10154 	ROM_RELOAD(         0x00e000, 0x002000  )
10155 
10156 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
10157 	ROM_LOAD16_BYTE( "uk001.06", 0x000000, 0x040000, CRC(11c75746) SHA1(7faf9a26534397d21211d5ef25ca53c4eb286474) )
10158 	ROM_LOAD16_BYTE( "uk001.07", 0x000001, 0x040000, CRC(01b166c7) SHA1(d1b5b73a55025a264a22dd950ea79ba8172c4bed) )
10159 	ROM_LOAD16_BYTE( "uk001.08", 0x080000, 0x040000, CRC(78d60ba3) SHA1(c4fa546e4ca637d67ecc1b085b91c753606ccdb3) )
10160 	ROM_LOAD16_BYTE( "uk001.09", 0x080001, 0x040000, CRC(b4748ae0) SHA1(a71e671754ed5bba737f0b5f7be510a23d5e925c) )
10161 
10162 	ROM_REGION( 0x200000, "gfx2", 0 )   /* Layer 1 */
10163 	ROM_LOAD16_BYTE( "uk-001-010-t26", 0x000000, 0x080000, CRC(c1e2f823) SHA1(892473351e7b590c59c578047a67fc235bd31e02) ) /* Mask ROM on P1-036A sub PCB */
10164 	ROM_LOAD16_BYTE( "uk-001-011-t27", 0x100000, 0x080000, CRC(09dfe56a) SHA1(077627627d3cb8f79ffdd83e46157bd3c473c4a1) ) /* Mask ROM on P1-036A sub PCB */
10165 	ROM_LOAD16_BYTE( "uk-001-012-t28", 0x000001, 0x080000, CRC(818a4085) SHA1(fd8b5658fc7f5fa6d3daebb4be17aeabd60c9028) ) /* Mask ROM on P1-036A sub PCB */
10166 	ROM_LOAD16_BYTE( "uk-001-013-t29", 0x100001, 0x080000, CRC(771fa164) SHA1(a91214318808f991846a828f0e309c0ff430245e) ) /* Mask ROM on P1-036A sub PCB */
10167 
10168 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10169 	ROM_LOAD( "uk-001-015-t31", 0x000000, 0x080000, CRC(ce9df5dd) SHA1(91d879b774b5b367adb5bd511fda827bc0bae0a9) ) /* Mask ROM on P1-036A sub PCB */
10170 	ROM_LOAD( "uk-001-014-t30", 0x080000, 0x080000, CRC(016b844a) SHA1(1fe091233746ced358292014393896af730f5940) ) /* Mask ROM on P1-036A sub PCB */
10171 ROM_END
10172 
10173 ROM_START( metafox )
10174 	ROM_REGION( 0x0a0000, "maincpu", 0 )        /* 68000 Code */
10175 	ROM_LOAD16_BYTE( "p1003161", 0x000000, 0x040000, CRC(4fd6e6a1) SHA1(11a830d76ef737bcfac73d0958425fe4329f0dcd) )
10176 	ROM_LOAD16_BYTE( "p1004162", 0x000001, 0x040000, CRC(b6356c9a) SHA1(182a1ea9f0643b05b14ad2a2cd820f5ca2086c4c) )
10177 	ROM_LOAD16_BYTE( "up001002", 0x080000, 0x010000, CRC(ce91c987) SHA1(63546fa1342371a7080ac3cf59b41a01ac313c8c) )
10178 	ROM_LOAD16_BYTE( "up001001", 0x080001, 0x010000, CRC(0db7a505) SHA1(d593da2f7d8b54724cae017cbabc3c0909893da1) )
10179 
10180 	ROM_REGION( 0x010000, "sub", 0 )        /* 65c02 Code */
10181 	ROM_LOAD( "up001005", 0x006000, 0x002000, CRC(2ac5e3e3) SHA1(b794554cd25bdd48a21a0a2861daf8369e798ce8) )
10182 	ROM_RELOAD(           0x008000, 0x002000  )
10183 	ROM_RELOAD(           0x00a000, 0x002000  )
10184 	ROM_RELOAD(           0x00c000, 0x002000  )
10185 	ROM_RELOAD(           0x00e000, 0x002000  )
10186 
10187 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
10188 	ROM_LOAD16_BYTE( "p1006163", 0x000000, 0x040000, CRC(80f69c7c) SHA1(df323e801ebec6316ba17fe0371f7c87fad19295) )
10189 	ROM_LOAD16_BYTE( "p1007164", 0x000001, 0x040000, CRC(d137e1a3) SHA1(0e0234f1d0adb7db6d0508263e3b0b31fe7071b9) )
10190 	ROM_LOAD16_BYTE( "p1008165", 0x080000, 0x040000, CRC(57494f2b) SHA1(28d620254e81d7e63dfed07b29b252b975a81248) )
10191 	ROM_LOAD16_BYTE( "p1009166", 0x080001, 0x040000, CRC(8344afd2) SHA1(7348b423405ad00b9240d152b119cf5341754815) )
10192 
10193 	ROM_REGION( 0x200000, "gfx2", 0 )   /* Layer 1 */
10194 	ROM_LOAD16_BYTE( "up001010", 0x000000, 0x080000, CRC(bfbab472) SHA1(d3e7b20d14de48134c4fbe3da31feb928c1c655b) )
10195 	ROM_LOAD16_BYTE( "up001011", 0x100000, 0x080000, CRC(26cea381) SHA1(b4bfd2a13ef6051376fe3ed57e2331a072970f86) )
10196 	ROM_LOAD16_BYTE( "up001012", 0x000001, 0x080000, CRC(fed2c5f9) SHA1(81f0f19a500b665c937f5431000ebde7abd97c30) )
10197 	ROM_LOAD16_BYTE( "up001013", 0x100001, 0x080000, CRC(adabf9ea) SHA1(db28e4e565e567a97a6b05a4803a55a403e24a0e) )
10198 
10199 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10200 	ROM_LOAD( "up001015", 0x000000, 0x080000, CRC(2e20e39f) SHA1(6f8bd4a76ed5c2150015698e7a98044d060157be) )
10201 	ROM_LOAD( "up001014", 0x080000, 0x080000, CRC(fca6315e) SHA1(cef2385ec43f8b7a2d655b42c18ef44e46ff7364) )
10202 ROM_END
10203 
10204 ROM_START( drgnunit )
10205 	ROM_REGION( 0x0c0000, "maincpu", 0 )        /* 68000 Code */
10206 	ROM_LOAD16_BYTE( "prg-e.bin", 0x000000, 0x020000, CRC(728447df) SHA1(8bdc52a4cc5f36794a47f963545bdaa26c9acd6b) )
10207 	ROM_LOAD16_BYTE( "prg-o.bin", 0x000001, 0x020000, CRC(b2f58ecf) SHA1(5198e75b22bab630b458797988f2e443c601351f) )
10208 
10209 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
10210 	ROM_LOAD16_BYTE( "obj-2.bin", 0x000000, 0x020000, CRC(d7f6ab5a) SHA1(a32f1705e833c339bd0c426a395cc706da96dad7) )
10211 	ROM_LOAD16_BYTE( "obj-1.bin", 0x000001, 0x020000, CRC(53a95b13) SHA1(b7c7994441aafcea49662dc0fbebd6db836723f5) )
10212 	ROM_LOAD16_BYTE( "obj-6.bin", 0x040000, 0x020000, CRC(80b801f7) SHA1(5b5635903137e50bc982d05b73c2648bbf182e71) )
10213 	ROM_LOAD16_BYTE( "obj-5.bin", 0x040001, 0x020000, CRC(6b87bc20) SHA1(9a0e3e18339d6c12e63960fb940a56c16dcb87cf) )
10214 	ROM_LOAD16_BYTE( "obj-4.bin", 0x080000, 0x020000, CRC(60d17771) SHA1(0874c10a2527293715db95bd7c83886d94f810cf) )
10215 	ROM_LOAD16_BYTE( "obj-3.bin", 0x080001, 0x020000, CRC(0bccd4d5) SHA1(7139ef793efe7c6477f78b50207227b1be223755) )
10216 	ROM_LOAD16_BYTE( "obj-8.bin", 0x0c0000, 0x020000, CRC(826c1543) SHA1(f669f255b4596da5648592b5993b02671e404102) )
10217 	ROM_LOAD16_BYTE( "obj-7.bin", 0x0c0001, 0x020000, CRC(cbaa7f6a) SHA1(060f0651b8ca07d239ef1b7c63943cdd433e1ae9) )
10218 
10219 	ROM_REGION( 0x100000, "gfx2", 0 )   /* Layer 1 */
10220 	ROM_LOAD16_BYTE( "scr-1o.bin",  0x000000, 0x020000, CRC(671525db) SHA1(e230e99754c9f40af7da2054bd5ea09823e0b1b7) )
10221 	ROM_LOAD16_BYTE( "scr-2o.bin",  0x040000, 0x020000, CRC(2a3f2ed8) SHA1(9d188100437a10eb3d3097f28e28e3cb2dc1b21d) )
10222 	ROM_LOAD16_BYTE( "scr-3o.bin",  0x080000, 0x020000, CRC(4d33a92d) SHA1(8b09768abb460446405224565eb6652d2dc1c571) )
10223 	ROM_LOAD16_BYTE( "scr-4o.bin",  0x0c0000, 0x020000, CRC(79a0aa61) SHA1(9905d90afb759b1d983856d7bef17c139d4f0e4f) )
10224 	ROM_LOAD16_BYTE( "scr-1e.bin",  0x000001, 0x020000, CRC(dc9cd8c9) SHA1(04450a5cfde5d6b69fdd745cd930309863e1aadd) )
10225 	ROM_LOAD16_BYTE( "scr-2e.bin",  0x040001, 0x020000, CRC(b6126b41) SHA1(13275f05868d93af95ebb162d229b69ddd660438) )
10226 	ROM_LOAD16_BYTE( "scr-3e.bin",  0x080001, 0x020000, CRC(1592b8c2) SHA1(d337de280c5ea3704dec9baa04c45e1c837924a9) )
10227 	ROM_LOAD16_BYTE( "scr-4e.bin",  0x0c0001, 0x020000, CRC(8201681c) SHA1(7784a68828d728107b0228bb3568129c543cbf40) )
10228 
10229 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10230 	ROM_LOAD( "snd-1.bin", 0x000000, 0x020000, CRC(8f47bd0d) SHA1(c55e22ac4294931cfb72ac88a2128891d9f8ee93) )
10231 	ROM_LOAD( "snd-2.bin", 0x020000, 0x020000, CRC(65c40ef5) SHA1(726b46144e2216d17b0828abad2f5e7c2305c174) )
10232 	ROM_LOAD( "snd-3.bin", 0x040000, 0x020000, CRC(71fbd54e) SHA1(bdaf7ecf1c79c6c8fc82d959186ca2f3304729c8) )
10233 	ROM_LOAD( "snd-4.bin", 0x060000, 0x020000, CRC(ac50133f) SHA1(d56a9569bd72c7bc13d09dcea9789cdc7252ffb4) )
10234 	ROM_LOAD( "snd-5.bin", 0x080000, 0x020000, CRC(70652f2c) SHA1(04ff016a087a230efe4644eb76f68886aae26978) )
10235 	ROM_LOAD( "snd-6.bin", 0x0a0000, 0x020000, CRC(10a1039d) SHA1(a1160fe600d39ae6fdbf247f634c2e094b3a675f) )
10236 	ROM_LOAD( "snd-7.bin", 0x0c0000, 0x020000, CRC(decbc8b0) SHA1(9d315d1119fbc2bf889efdb174ebc5e26ecad859) )
10237 	ROM_LOAD( "snd-8.bin", 0x0e0000, 0x020000, CRC(3ac51bee) SHA1(cb2ee501895b848d434991152dea293685f8ed22) )
10238 ROM_END
10239 
10240 ROM_START( wits )
10241 	ROM_REGION( 0x010000, "maincpu", 0 )        /* 68000 Code */
10242 	ROM_LOAD16_BYTE( "un001001.u1", 0x000000, 0x008000, CRC(416c567e) SHA1(f0898ce4457efc272e0fec3447c9d4598684219e) )
10243 	ROM_LOAD16_BYTE( "un001002.u4", 0x000001, 0x008000, CRC(497a3fa6) SHA1(cf035efddc2a90013e83dcb81687ba1896ba6055) )
10244 
10245 	ROM_REGION( 0x080000, "gfx1", 0 )   /* Sprites */
10246 	ROM_LOAD16_BYTE( "un001008.7l", 0x000000, 0x020000, CRC(1d5d0b2b) SHA1(12cf1be316012e8ee910edfd1b892b7ce1383535) )
10247 	ROM_LOAD16_BYTE( "un001007.5l", 0x000001, 0x020000, CRC(9e1e6d51) SHA1(9a87f0f18ac0b3d267fe8655d01750d693745c1f) )
10248 	ROM_LOAD16_BYTE( "un001006.4l", 0x040000, 0x020000, CRC(98a980d4) SHA1(ab2c1ed83bccffabfacc8a185d1fbc3e8aaf210d) )
10249 	ROM_LOAD16_BYTE( "un001005.2l", 0x040001, 0x020000, CRC(6f2ce3c0) SHA1(8086b44c7025bc0bffff75cc6c6c7846cc56e8d0) )
10250 
10251 	ROM_REGION( 0x40000, "x1snd", 0 )   /* Samples */
10252 	ROM_LOAD( "un001004.12a", 0x000000, 0x020000, CRC(a15ff938) SHA1(fdfdf73e85d89a39cfc5b3c3048a64178200f942) )
10253 	ROM_LOAD( "un001003.10a", 0x020000, 0x020000, CRC(3f4b9e55) SHA1(3cecf89ae6a056622affcddec9e10be08761e56d) )
10254 ROM_END
10255 
10256 ROM_START( thunderl )
10257 	ROM_REGION( 0x010000, "maincpu", 0 )        /* 68000 Code */
10258 	ROM_LOAD16_BYTE( "m4", 0x000000, 0x008000, CRC(1e6b9462) SHA1(f7f93479117e97d4e38632fef83c10345587f77f) )
10259 	ROM_LOAD16_BYTE( "m5", 0x000001, 0x008000, CRC(7e82793e) SHA1(3e487f465d64af8c1c4852567b2fd9190363570c) )
10260 
10261 	ROM_REGION( 0x080000, "gfx1", 0 )   /* Sprites */
10262 	ROM_LOAD16_BYTE( "t17", 0x000000, 0x020000, CRC(599a632a) SHA1(29da423dfe1f971cbb205767cf902d199d968d85) )
10263 	ROM_LOAD16_BYTE( "t16", 0x000001, 0x020000, CRC(3aeef91c) SHA1(a5dc8c22a7bcc1199bdd09c7d0f1f8a378e757c5) )
10264 	ROM_LOAD16_BYTE( "t15", 0x040000, 0x020000, CRC(b97a7b56) SHA1(c08d3586d489947af21f3493356e3a88d79746e8) )
10265 	ROM_LOAD16_BYTE( "t14", 0x040001, 0x020000, CRC(79c707be) SHA1(f67fa40c8f6ab0fbce44997fdfbf699fea1f0df6) )
10266 
10267 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10268 	ROM_LOAD( "r28", 0x000000, 0x080000, CRC(a043615d) SHA1(e483fa9fd8e922578a9d7b6ced0750643089ca78) )
10269 	ROM_LOAD( "r27", 0x080000, 0x080000, CRC(cb8425a3) SHA1(655afa295fbe99acc79c4004f03ed832560cff5b) )
10270 ROM_END
10271 
10272 ROM_START( thunderlbl )
10273 	ROM_REGION( 0x010000, "maincpu", 0 )        /* 68000 Code */
10274 	ROM_LOAD16_BYTE( "20.g11", 0x000000, 0x008000, CRC(83500006) SHA1(f078e614078296df48bb8b953c3ba88f6f288255) )
10275 	ROM_LOAD16_BYTE( "19.f11", 0x000001, 0x008000, CRC(1bb4cd03) SHA1(1a22bf02f2116b9f01ff01e18ef31497016df0d2) )
10276 
10277 	// they ripped the sound CPU program from Tetris!
10278 	ROM_REGION( 0x40000, "audiocpu", 0 ) /* sound cpu code */
10279 	ROM_LOAD( "21.d5", 0x00000, 0x08000, CRC(bd9ba01b) SHA1(fafa7dc36cc057a50ae4cdf7a35f3594292336f4) )
10280 
10281 	ROM_REGION( 0x080000, "gfx1", 0 )   /* Sprites */
10282 	ROM_LOAD16_BYTE( "25.a10", 0x000000, 0x020000, CRC(599a632a) SHA1(29da423dfe1f971cbb205767cf902d199d968d85) )
10283 	ROM_LOAD16_BYTE( "24.a8",  0x000001, 0x020000, CRC(3aeef91c) SHA1(a5dc8c22a7bcc1199bdd09c7d0f1f8a378e757c5) )
10284 	ROM_LOAD16_BYTE( "23.a5",  0x040000, 0x020000, CRC(b97a7b56) SHA1(c08d3586d489947af21f3493356e3a88d79746e8) )
10285 	ROM_LOAD16_BYTE( "22.a3",  0x040001, 0x020000, CRC(79c707be) SHA1(f67fa40c8f6ab0fbce44997fdfbf699fea1f0df6) )
10286 ROM_END
10287 
10288 ROM_START( thunderlbl2 ) // 2 PCB stack, label JK274
10289 	ROM_REGION( 0x010000, "maincpu", 0 )        /* 68000 Code, both 27c256, on main PCB */
10290 	ROM_LOAD16_BYTE( "g11", 0x000000, 0x008000, CRC(e4842fbd) SHA1(6fc4cded6a7f2e7f331c22323c5b793a7bafdd06) )
10291 	ROM_LOAD16_BYTE( "f11", 0x000001, 0x008000, CRC(b883ab13) SHA1(b835506b97359e3cd9e528d78c6195721be9e878) )
10292 
10293 	// they ripped the sound CPU program from Tetris!
10294 	ROM_REGION( 0x40000, "audiocpu", 0 ) /* sound cpu code, on main PCB */
10295 	ROM_LOAD( "d", 0x00000, 0x08000, CRC(bd9ba01b) SHA1(fafa7dc36cc057a50ae4cdf7a35f3594292336f4) ) // 27c256
10296 
10297 	ROM_REGION( 0x080000, "gfx1", 0 )   /* Sprites, all 27c010a, on sub PCB */
10298 	ROM_LOAD16_BYTE( "a10", 0x000000, 0x020000, CRC(599a632a) SHA1(29da423dfe1f971cbb205767cf902d199d968d85) )
10299 	ROM_LOAD16_BYTE( "a8",  0x000001, 0x020000, CRC(3aeef91c) SHA1(a5dc8c22a7bcc1199bdd09c7d0f1f8a378e757c5) )
10300 	ROM_LOAD16_BYTE( "a5",  0x040000, 0x020000, CRC(b97a7b56) SHA1(c08d3586d489947af21f3493356e3a88d79746e8) )
10301 	ROM_LOAD16_BYTE( "a3",  0x040001, 0x020000, CRC(79c707be) SHA1(f67fa40c8f6ab0fbce44997fdfbf699fea1f0df6) )
10302 
10303 	ROM_REGION( 0xc00, "plds", 0 ) // all on sub PCB
10304 	ROM_LOAD( "pal16l8acn.e13", 0x000, 0x104, NO_DUMP )
10305 	ROM_LOAD( "pal16l8acn.e14", 0x200, 0x104, NO_DUMP )
10306 	ROM_LOAD( "pal16l8acn.e15", 0x400, 0x104, NO_DUMP )
10307 	ROM_LOAD( "pal16l8acn.f13", 0x600, 0x104, NO_DUMP )
10308 	ROM_LOAD( "pal16l8acn.h9",  0x800, 0x104, NO_DUMP )
10309 	ROM_LOAD( "pal16l8acn.i3",  0xa00, 0x104, NO_DUMP )
10310 ROM_END
10311 
10312 /*
10313 
10314 Wiggie Waggie & Super Bar run on a bootleg SETA board with an OKI M6295 replacing the X1-010 sound chip.
10315 Both games are based on Thunder & Lightning code.
10316 
10317 PCB:
10318 
10319 +--------------------------------------------------------+
10320 | YM3012* YM2151*  2M-1                                  |
10321 |                  2M-2*      6116             6116      |
10322 | VOL  6116 M6295  2M-3*      6116             6116      |
10323 |       A5   16MHz                             6116      |
10324 +-+   Z80A               6264                  6116      |
10325   |                      6264                            |
10326 +-+                                                      |
10327 |                6116                                    |
10328 |J               6116                                    |
10329 |A                                                       |
10330 |M                                    PAL                |
10331 |M                                       +------+        |
10332 |A   DSW2                                |Actel |        |
10333 |              +-+                       |A1020A|        |
10334 +-+  DSW1      |6|                       |PL84C |        |
10335   |            |8| 6264                  +------+        |
10336 +-+            |0| 6264           6116     1M-4          |
10337 |              |0|                6116     1M-5          |
10338 |              |0| 512-1          6116     1M-6          |
10339 |              +-+ 512-2          6116     1M-7          |
10340 +--------------------------------------------------------+
10341 
10342   CPU: 68000P10 (8MHz)
10343        Z80A (4MHz)
10344 Sound: OKI M6295
10345   OSC: 16MHz
10346 Other: Actel A1020A PLC84C (used for graphics and graphic rom decode)
10347 
10348 * Denotes unpopulated sockets
10349 
10350 */
10351 
10352 ROM_START( wiggie )
10353 	ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 Code */
10354 	ROM_LOAD16_BYTE( "wiggie.e19", 0x00000, 0x10000, CRC(24b58f16) SHA1(96ef92ab79258da9322dd7e706bf05ac5143f7b7) )
10355 	ROM_LOAD16_BYTE( "wiggie.e21", 0x00001, 0x10000, CRC(83ba6edb) SHA1(fa74fb39599ed877317db73d02d14df5b475fc35) )
10356 
10357 	ROM_REGION( 0x40000, "audiocpu", 0 ) /* sound cpu code */
10358 	ROM_LOAD( "wiggie.a5", 0x00000, 0x10000, CRC(8078d77b) SHA1(4e6855d396a1bace2810b13b7dd08ccf5de89bd8) )
10359 
10360 	ROM_REGION( 0x040000, "oki", 0 ) /* Samples */
10361 	ROM_LOAD( "wiggie.d1", 0x00000, 0x40000, CRC(27fbe12a) SHA1(73f476a03b321ed1ae89104f5b32d77153fabb82) )
10362 
10363 	ROM_REGION( 0x80000, "gfx1", 0 )
10364 	ROM_LOAD( "wiggie.j16", 0x00000, 0x20000, CRC(4fb40b8a) SHA1(120c9fd677071485a9f8accc2385117baf542b9c) ) /* Drawn nude girls for the backgrounds */
10365 	ROM_LOAD( "wiggie.j18", 0x20000, 0x20000, CRC(ebc418e9) SHA1(a9af9bebce56608b0533d7d147191ebdceaca4e4) )
10366 	ROM_LOAD( "wiggie.j20", 0x40000, 0x20000, CRC(c073501b) SHA1(4b4cd0fed5efe12bcd10f98a71becc212e7e753a) )
10367 	ROM_LOAD( "wiggie.j21", 0x60000, 0x20000, CRC(22f6fa39) SHA1(d3e86e156434153335c5d2ce71417f35097f5ab7) )
10368 ROM_END
10369 
10370 ROM_START( superbar ) /* All roms had a "PROMAT" label with no other information.  Rom size was silkscreened on the PCB */
10371 	ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 Code */
10372 	ROM_LOAD16_BYTE( "promat_512-1.e19", 0x00000, 0x10000, CRC(cc7f9e87) SHA1(6c63ee5ac1c145a151a972a2b6bcb29036dad02d) )
10373 	ROM_LOAD16_BYTE( "promat_512-2.e21", 0x00001, 0x10000, CRC(5e8c7231) SHA1(16efbaa871335143490ca897e0573bbbcf16ff16) )
10374 
10375 	ROM_REGION( 0x40000, "audiocpu", 0 ) /* sound cpu code */
10376 	ROM_LOAD( "promat.a5", 0x00000, 0x10000, CRC(8078d77b) SHA1(4e6855d396a1bace2810b13b7dd08ccf5de89bd8) ) /* Same as Wiggie Waggie */
10377 
10378 	ROM_REGION( 0x040000, "oki", 0 ) /* Samples */
10379 	ROM_LOAD( "promat_2m-1.d1", 0x00000, 0x40000, CRC(27fbe12a) SHA1(73f476a03b321ed1ae89104f5b32d77153fabb82) ) /* Same as Wiggie Waggie */
10380 	/* 2M-2 sample rom not populated */
10381 	/* 2M-3 sample rom not populated */
10382 
10383 	ROM_REGION( 0x80000, "gfx1", 0 )
10384 	ROM_LOAD( "promat_1m-4.j16", 0x00000, 0x20000, CRC(43dbc99f) SHA1(36ac4df9286d8661c61e0dfc9788b936c5596c31) ) /* Drawn clothed girls for the backgrounds */
10385 	ROM_LOAD( "promat_1m-5.j18", 0x20000, 0x20000, CRC(c09344b0) SHA1(4c54dbc602fa2ccddd232f145d3844a4d145611c) )
10386 	ROM_LOAD( "promat_1m-6.j20", 0x40000, 0x20000, CRC(7d83f8ba) SHA1(55d026a3b98dd0e9a6263a0c913a1d9b6c30cfd1) )
10387 	ROM_LOAD( "promat_1m-7.j21", 0x60000, 0x20000, CRC(734df92a) SHA1(0dfd58a3f47fa8dfa315df7adfad25ade97c2a3b) )
10388 ROM_END
10389 
10390 ROM_START( rezon )
10391 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
10392 	ROM_LOAD16_BYTE( "us001001.u3",  0x000000, 0x020000, CRC(ab923052) SHA1(26761c228b63c300f635787e63e1276b6e3083f0) )
10393 	ROM_LOAD16_BYTE( "us001002.u4",  0x000001, 0x020000, CRC(3dafa0d5) SHA1(80cdff86b99d364acbbf1322c73b2f26b1a93167) )
10394 	/* empty gap */
10395 	ROM_LOAD16_BYTE( "us001004.103", 0x100000, 0x020000, CRC(54871c7c) SHA1(2f807b15760b1e712fa69eee6f33cc8a36ee1c02) ) // 1xxxxxxxxxxxxxxxx = 0x00
10396 	ROM_LOAD16_BYTE( "us001003.102", 0x100001, 0x020000, CRC(1ac3d272) SHA1(0f19bc9c19e355dad5b463b0fa33127523bf141b) ) // 1xxxxxxxxxxxxxxxx = 0x00
10397 
10398 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
10399 	ROM_LOAD( "us001006.u64",  0x000000, 0x080000, CRC(a4916e96) SHA1(bfb63b72273e4fbf0843b3201bb4fddaf54909a7) )
10400 	ROM_LOAD( "us001005.u63",  0x080000, 0x080000, CRC(e6251ebc) SHA1(f02a4c8373e33fc57e18e39f1b5ecff3f6d9ca9e) )
10401 
10402 	ROM_REGION( 0x080000, "gfx2", 0 )   /* Layer 1 */
10403 	ROM_LOAD16_WORD_SWAP( "us001007.u66",  0x000000, 0x080000, CRC(3760b935) SHA1(f5fe69f7e93c90a5b6c1dff236402b962821e33f) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
10404 
10405 	ROM_REGION( 0x080000, "gfx3", 0 )   /* Layer 2 */
10406 	ROM_LOAD16_WORD_SWAP( "us001008.u68",  0x000000, 0x080000, CRC(0ab73910) SHA1(78e2c0570c5c6f5e1cdb2fbeae73376923127024) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
10407 
10408 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10409 	ROM_LOAD16_WORD_SWAP( "us001009.u70",  0x000000, 0x100000, CRC(0d7d2e2b) SHA1(cfba19314ecb0a49ed9ff8df32cd6a3fe37ff526) )
10410 ROM_END
10411 
10412 /* note the ONLY byte that changes is the year, 1992 instead of 1991.  The actual license is controlled by a jumper but
10413    since Taito released the game in 1992 this is the Taito version and we hardcode the jumper in the input ports */
10414 
10415 ROM_START( rezont )
10416 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
10417 	ROM_LOAD16_BYTE( "us001001.u3",  0x000000, 0x020000, CRC(ab923052) SHA1(26761c228b63c300f635787e63e1276b6e3083f0) )
10418 	ROM_LOAD16_BYTE( "rezon_1_p.u4", 0x000001, 0x020000, CRC(9ed32f8c) SHA1(68b926de4cb5f2632ab78b2cdf7409411fadbb1d) )
10419 	/* empty gap */
10420 	ROM_LOAD16_BYTE( "us001004.103", 0x100000, 0x020000, CRC(54871c7c) SHA1(2f807b15760b1e712fa69eee6f33cc8a36ee1c02) ) // 1xxxxxxxxxxxxxxxx = 0x00
10421 	ROM_LOAD16_BYTE( "us001003.102", 0x100001, 0x020000, CRC(1ac3d272) SHA1(0f19bc9c19e355dad5b463b0fa33127523bf141b) ) // 1xxxxxxxxxxxxxxxx = 0x00
10422 
10423 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
10424 	ROM_LOAD( "us001006.u64",  0x000000, 0x080000, CRC(a4916e96) SHA1(bfb63b72273e4fbf0843b3201bb4fddaf54909a7) )
10425 	ROM_LOAD( "us001005.u63",  0x080000, 0x080000, CRC(e6251ebc) SHA1(f02a4c8373e33fc57e18e39f1b5ecff3f6d9ca9e) )
10426 
10427 	ROM_REGION( 0x080000, "gfx2", 0 )   /* Layer 1 */
10428 	ROM_LOAD16_WORD_SWAP( "us001007.u66",  0x000000, 0x080000, CRC(3760b935) SHA1(f5fe69f7e93c90a5b6c1dff236402b962821e33f) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
10429 
10430 	ROM_REGION( 0x080000, "gfx3", 0 )   /* Layer 2 */
10431 	ROM_LOAD16_WORD_SWAP( "us001008.u68",  0x000000, 0x080000, CRC(0ab73910) SHA1(78e2c0570c5c6f5e1cdb2fbeae73376923127024) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
10432 
10433 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10434 	ROM_LOAD16_WORD_SWAP( "us001009.u70",  0x000000, 0x100000, CRC(0d7d2e2b) SHA1(cfba19314ecb0a49ed9ff8df32cd6a3fe37ff526) )
10435 ROM_END
10436 
10437 ROM_START( stg )
10438 	ROM_REGION( 0x0c0000, "maincpu", 0 )        /* 68000 Code */
10439 	ROM_LOAD16_BYTE( "att01003.u27", 0x000000, 0x020000, CRC(7a640a93) SHA1(28c54eca9502d06ca55c2db91bfe7d149af006ed) )
10440 	ROM_LOAD16_BYTE( "att01001.u9",  0x000001, 0x020000, CRC(4fa88ad3) SHA1(55e0e689758511cdf514a633ffe3d7729e281b52) )
10441 	ROM_LOAD16_BYTE( "att01004.u33", 0x040000, 0x020000, CRC(bbd45ca1) SHA1(badb11faf5779e8444dd95eb08a94fbf9f73cc2c) ) // 1xxxxxxxxxxxxxxxx = 0xFF
10442 	ROM_LOAD16_BYTE( "att01002.u17", 0x040001, 0x020000, CRC(2f8fd80c) SHA1(b8e16adc84b918b5eee05d032a7841e8d726eeeb) ) // 1xxxxxxxxxxxxxxxx = 0xFF
10443 
10444 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
10445 	ROM_LOAD( "att01006.u32", 0x000000, 0x080000, CRC(6ad78ea2) SHA1(eb8fc9833fb1c7041f5e0a3b37c8de9156a034b6) )
10446 	ROM_LOAD( "att01005.u26", 0x080000, 0x080000, CRC(a347ff00) SHA1(8455c5e7dfa25646b1782ab3bcf62fca91ca03ad) )
10447 
10448 	ROM_REGION( 0x100000, "gfx2", 0 )   /* Layer 1 */
10449 	ROM_LOAD16_BYTE( "att01008.u39", 0x000000, 0x080000, CRC(20c47457) SHA1(53ddf8c076aa35fb87edc739bc9e9612a5a1526b) ) // FIRST AND SECOND HALF IDENTICAL
10450 	ROM_LOAD16_BYTE( "att01007.u42", 0x000001, 0x080000, CRC(ac975544) SHA1(5cdd2c7aada7179d4bdaf8578134c0ef672a2704) ) // FIRST AND SECOND HALF IDENTICAL
10451 
10452 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10453 	ROM_LOAD( "att01009.u47", 0x000000, 0x080000, CRC(4276b58d) SHA1(a2e77dc3295791520c6cb25dea4e910b5a7bc137) )
10454 	ROM_LOAD( "att01010.u55", 0x080000, 0x080000, CRC(fffb2f53) SHA1(0aacb24437e9a6874850313163922d834da27611) )
10455 ROM_END
10456 
10457 ROM_START( blandia )
10458 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
10459 	ROM_LOAD16_BYTE( "ux001001.u3", 0x000000, 0x040000, CRC(2376a1f3) SHA1(705a3c5cc1137d14ffded6c949bf9aa650133eb7) )
10460 	ROM_LOAD16_BYTE( "ux001002.u4", 0x000001, 0x040000, CRC(b915e172) SHA1(e43e50a664dc1286ece42a5ff8629b2da7fb49b4) )
10461 	ROM_LOAD16_WORD_SWAP( "ux001003.u202",    0x100000, 0x100000, CRC(98052c63) SHA1(b523596de29038b3ec9f1b6e1f7374a6a8709d42) )
10462 
10463 	ROM_REGION( 0x400000, "gfx1", 0 )   /* Sprites */
10464 	ROM_LOAD( "ux001005.u200", 0x300000, 0x100000, CRC(bea0c4a5) SHA1(a690c17fb7cbdab533c1dfad13abbad9359b9631) )
10465 	ROM_LOAD( "ux001007.u201", 0x100000, 0x100000, CRC(4440fdd1) SHA1(7bfee90f81a2c867bd487abcf5905393ad400902) )
10466 	ROM_LOAD( "ux001006.u63",  0x200000, 0x100000, CRC(abc01cf7) SHA1(c3f26e75eeb68073d2825be8df82cc6afcfbfb26) )
10467 	ROM_LOAD( "ux001008.u64",  0x000000, 0x100000, CRC(413647b6) SHA1(594e010ca6f49ec82cc6d44fe23ac3427c4c3dbd) )
10468 
10469 	ROM_REGION( 0x180000, "gfx2", 0 )   /* Layer 1 */
10470 	ROM_LOAD24_BYTE     ( "ux001009.u65", 0x000000, 0x080000, CRC(bc6f6aea) SHA1(673efa0c70587b5650ccf0a3c4bc316f53d52ba6) )
10471 	ROM_LOAD24_WORD_SWAP( "ux001010.u66", 0x000001, 0x080000, CRC(bd7f7614) SHA1(dc865ff0f327f460956915b2018aaac815e8fce5) )
10472 
10473 	ROM_REGION( 0x180000, "gfx3", 0 )   /* Layer 2 */
10474 	ROM_LOAD24_BYTE     ( "ux001011.u67",  0x000000, 0x080000, CRC(5efe0397) SHA1(a294a2dae9a10e93912543a8614a7f960a011f27) )
10475 	ROM_LOAD24_WORD_SWAP( "ux001012.u068", 0x000001, 0x080000, CRC(f29959f6) SHA1(edccea3d0bf972a07edd6339e18792d089033bff) )
10476 
10477 	/* The c0000-fffff region is bankswitched */
10478 	ROM_REGION( 0x200000, "x1snd", 0 )  /* Samples */
10479 	ROM_LOAD( "ux001013.u69", 0x000000, 0x100000, CRC(5cd273cd) SHA1(602e1f10454e2b1c941f2e6983872bb9ca77a542) )
10480 	ROM_LOAD( "ux001014.u70", 0x100000, 0x080000, CRC(86b49b4e) SHA1(045b352950d848907af4c22b817d154b2cfff382) )
10481 ROM_END
10482 
10483 ROM_START( blandiap )
10484 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
10485 	ROM_LOAD16_BYTE( "prg-even.bin", 0x000000, 0x040000, CRC(7ecd30e8) SHA1(25e555a45bbb154170189b065206f7536a5dec1b) )
10486 	ROM_LOAD16_BYTE( "prg-odd.bin",  0x000001, 0x040000, CRC(42b86c15) SHA1(9a4adcc16c35f84826a6effed5ebe439483ab856) )
10487 	ROM_LOAD16_BYTE( "tbl0.bin",     0x100000, 0x080000, CRC(69b79eb8) SHA1(f7b33c99744d8b7f6e2991b4d2b35719eebd0b43) )
10488 	ROM_LOAD16_BYTE( "tbl1.bin",     0x100001, 0x080000, CRC(cf2fd350) SHA1(4d0fb720af544f746eeaaad499be00e0d1c6f129) )
10489 
10490 	ROM_REGION( 0x400000, "gfx1", 0 )   /* Sprites */
10491 	ROM_LOAD16_BYTE( "o-1.bin",  0x000000, 0x080000, CRC(4c67b7f0) SHA1(ad6bd4b880f0f63a803c097795a4b70f24c94848) )
10492 	ROM_LOAD16_BYTE( "o-0.bin",  0x000001, 0x080000, CRC(5e7b8555) SHA1(040599db77041765f582aa99d6f616a7a2c4dd5c) )
10493 	ROM_LOAD16_BYTE( "o-5.bin",  0x100000, 0x080000, CRC(40bee78b) SHA1(1ec0b1854c26ba300a3a54077332a9af55677dca) )
10494 	ROM_LOAD16_BYTE( "o-4.bin",  0x100001, 0x080000, CRC(7c634784) SHA1(047287c630336001d2b1e21f7273ccc3d5278e3c) )
10495 	ROM_LOAD16_BYTE( "o-3.bin",  0x200000, 0x080000, CRC(387fc7c4) SHA1(4e5bd3985f16aa7295110a9902adc8e1453c03ab) )
10496 	ROM_LOAD16_BYTE( "o-2.bin",  0x200001, 0x080000, CRC(c669bb49) SHA1(db5051ea8b08672b6079004060e20fb250560d9f) )
10497 	ROM_LOAD16_BYTE( "o-7.bin",  0x300000, 0x080000, CRC(fc77b04a) SHA1(b3c7b2cb9407cac261890e0355cbb87ac8e2e93c) )
10498 	ROM_LOAD16_BYTE( "o-6.bin",  0x300001, 0x080000, CRC(92882943) SHA1(460f3ae37d6f88d3a6068e2fb8d0d330be7c786f) )
10499 
10500 	ROM_REGION( 0x0c0000, "gfx2", 0 )   /* Layer 1 */
10501 	ROM_LOAD24_BYTE( "v1-2.bin",  0x000000, 0x020000, CRC(d524735e) SHA1(4d17e7896b6c6451effe8a19bf7a4919db0cc06d) )
10502 	ROM_LOAD24_BYTE( "v1-1.bin",  0x000001, 0x020000, CRC(09bdf75f) SHA1(33bda046092d5bc3d8e8ffec25c745a2fda16a5c) )
10503 	ROM_LOAD24_BYTE( "v1-0.bin",  0x000002, 0x020000, CRC(73617548) SHA1(9c04d0179cb93e9fb78cc8af1006ef3edfcde707) )
10504 	ROM_LOAD24_BYTE( "v1-5.bin",  0x060000, 0x020000, CRC(eb440cdb) SHA1(180ed9d616c66b7fae1a3d1156028c8476e45bde) )
10505 	ROM_LOAD24_BYTE( "v1-4.bin",  0x060001, 0x020000, CRC(803911e5) SHA1(a93cac42eda69698b393a1a49e3615ee60868838) )
10506 	ROM_LOAD24_BYTE( "v1-3.bin",  0x060002, 0x020000, CRC(7f18e4fb) SHA1(0e51e3f88b90c07a1352bcd42e6438c947d4856e) )
10507 
10508 	ROM_REGION( 0x0c0000, "gfx3", 0 )   /* Layer 2 */
10509 	ROM_LOAD24_BYTE( "v2-2.bin",  0x000000, 0x020000, CRC(c4f15638) SHA1(6be0f3e90ab23189caadfd99b3e4ded74749ebbc) )   // identical to v2-1
10510 	ROM_LOAD24_BYTE( "v2-1.bin",  0x000001, 0x020000, CRC(c4f15638) SHA1(6be0f3e90ab23189caadfd99b3e4ded74749ebbc) )
10511 	ROM_LOAD24_BYTE( "v2-0.bin",  0x000002, 0x020000, CRC(5b05eba9) SHA1(665001cdb3c9977f8f4c7ce551549f7fc640c6a9) )
10512 	ROM_LOAD24_BYTE( "v2-5.bin",  0x060000, 0x020000, CRC(c2e57622) SHA1(994a4774d68f2d562d985951b06216d59f38afe9) )
10513 	ROM_LOAD24_BYTE( "v2-4.bin",  0x060001, 0x020000, CRC(16ec2130) SHA1(187f548563577ca36cced9ae184d27e6fcdd7e6a) )
10514 	ROM_LOAD24_BYTE( "v2-3.bin",  0x060002, 0x020000, CRC(80ad0c3b) SHA1(00fcbcf7805784d7298b92136e7f256d65029c44) )
10515 
10516 	/* The c0000-fffff region is bankswitched */
10517 	ROM_REGION( 0x200000, "x1snd", 0 )  /* Samples */
10518 	ROM_LOAD( "s-0.bin",  0x000000, 0x020000, CRC(a5fde408) SHA1(89efcd37ef6c5b313169d74a962a7c074a09b12a) )
10519 	ROM_CONTINUE(         0x100000, 0x020000  )
10520 	ROM_LOAD( "s-1.bin",  0x020000, 0x020000, CRC(3083f9c4) SHA1(f5d2297c3d680eb1f128fa42a3a7f61badb9853a) )
10521 	ROM_CONTINUE(         0x120000, 0x020000  )
10522 	ROM_LOAD( "s-2.bin",  0x040000, 0x020000, CRC(a591c9ef) SHA1(83e665e342c42fd3582c83becfacc27a3a3e5a54) )
10523 	ROM_CONTINUE(         0x140000, 0x020000  )
10524 	ROM_LOAD( "s-3.bin",  0x060000, 0x020000, CRC(68826c9d) SHA1(a860b7b2140a5a506bf25110c08c6ea59db25743) )
10525 	ROM_CONTINUE(         0x160000, 0x020000  )
10526 	ROM_LOAD( "s-4.bin",  0x080000, 0x020000, CRC(1c7dc8c2) SHA1(006459a23de83fe48e11bdd6ebe23ef6a18a87e8) )
10527 	ROM_CONTINUE(         0x180000, 0x020000  )
10528 	ROM_LOAD( "s-5.bin",  0x0a0000, 0x020000, CRC(4bb0146a) SHA1(1e3c1739ea3c85296573426e55f25dce11f0ed2b) )
10529 	ROM_CONTINUE(         0x1a0000, 0x020000  )
10530 	ROM_LOAD( "s-6.bin",  0x0c0000, 0x020000, CRC(9f8f34ee) SHA1(60abb70ae87595ebae23df68d62f3b0ed4a2e768) )
10531 	ROM_CONTINUE(         0x1c0000, 0x020000  ) // this half is 0
10532 	ROM_LOAD( "s-7.bin",  0x0e0000, 0x020000, CRC(e077dd39) SHA1(a6f0881a026161710adc132bcf7cb95c4c8f2528) )
10533 	ROM_CONTINUE(         0x1e0000, 0x020000  ) // this half is 0
10534 ROM_END
10535 
10536 ROM_START( blockcar )
10537 	ROM_REGION( 0x040000, "maincpu", 0 )        /* 68000 Code */
10538 	ROM_LOAD16_BYTE( "u1.a1",  0x000000, 0x020000, CRC(4313fb00) SHA1(f5b9e212436282284fa344e1c4200bc38ca3c50a) )
10539 	ROM_LOAD16_BYTE( "u4.a3",  0x000001, 0x020000, CRC(2237196d) SHA1(5a9d972fac94e62f026c36bca0c2f5fe8e0e1a1d) )
10540 
10541 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
10542 	ROM_LOAD( "bl-chr-0.j3",  0x000000, 0x080000, CRC(a33300ca) SHA1(b0a7ccb77c3e8e33c12b83e254924f30209a4c2c) )
10543 	ROM_LOAD( "bl-chr-1.l3",  0x080000, 0x080000, CRC(563de808) SHA1(40b2f9f4a4cb1a019f6419572ee21d66dda7d4af) )
10544 
10545 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10546 	ROM_LOAD( "bl-snd-0.a13",  0x000000, 0x080000, CRC(a92dabaf) SHA1(610c1dc0467753dfddaa4b27bc40cb118b0bc7a3) )
10547 	ROM_RELOAD(                0x080000, 0x080000  )
10548 ROM_END
10549 
10550 ROM_START( blockcarb )
10551 	ROM_REGION( 0x040000, "maincpu", 0 )        /* 68000 Code */
10552 	ROM_LOAD16_BYTE( "tl2.bin",  0x000000, 0x020000, CRC(049d0565) SHA1(4c4d2838336556aa486d8990d038f9ed9f021cfd) )
10553 	ROM_LOAD16_BYTE( "tl1.bin",  0x000001, 0x020000, CRC(b0011882) SHA1(417d5d6d648cc121a1d26071806f14dc37930870) )
10554 
10555 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
10556 	ROM_LOAD16_BYTE( "tl4.bin",  0x000000, 0x040000, CRC(6c4d53af) SHA1(69ed3b8374efd6f55c8ccf5f1db5c03a24cac9d6) )
10557 	ROM_LOAD16_BYTE( "tl3.bin",  0x000001, 0x040000, CRC(bf4abe64) SHA1(78439f2f088b38c454cf3db7372175a5dc22b6a0) )
10558 	ROM_LOAD16_BYTE( "tl6.bin",  0x080000, 0x040000, CRC(6d49fff2) SHA1(676de504be18ba0832000678846eb4527414a36d) )
10559 	ROM_LOAD16_BYTE( "tl5.bin",  0x080001, 0x040000, CRC(9369e8dc) SHA1(645ae72a8b49ec43c26cdee5b6cb8cca5f46e542) )
10560 
10561 	ROM_REGION( 0x100000, "oki", 0 )  /* 6295 samples */
10562 	ROM_LOAD( "tl7.bin",  0x000000, 0x040000, CRC(41e899dc) SHA1(36c8161dcb68cdc312c7d1177dbcfb9b62b18f05) )    // == so2_09.12b  mercs      Mercs (World 900302)
10563 
10564 	ROM_REGION( 0x10000, "audiocpu", 0 )
10565 	ROM_LOAD( "tl8.bin",  0x000000, 0x010000, CRC(d09d7c7a) SHA1(8e8532be08818c855d9c3ce45716eb07cfab5767) )    //cpu prg
10566 ROM_END
10567 
10568 ROM_START( qzkklogy )
10569 	ROM_REGION( 0x0c0000, "maincpu", 0 )        /* 68000 Code */
10570 	ROM_LOAD16_BYTE( "3.u27", 0x000000, 0x020000, CRC(b8c27cde) SHA1(4c36076801b6c915888b925c1e37d772bab1bb02) )
10571 	ROM_LOAD16_BYTE( "1.u9",  0x000001, 0x020000, CRC(ce01cd54) SHA1(ef91aecdf7b5586a6870ff237372d65f85cd4cd3) )
10572 	ROM_LOAD16_BYTE( "4.u33", 0x040000, 0x020000, CRC(4f5c554c) SHA1(0a10cefdf2dd876e6cb78023c3c15af24ba3c39a) )
10573 	ROM_LOAD16_BYTE( "2.u17", 0x040001, 0x020000, CRC(65fa1b8d) SHA1(81fd7785f138a189de978fd30dbfca36687cda17) )
10574 
10575 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
10576 	ROM_LOAD( "t2709u32.u32", 0x000000, 0x080000, CRC(900f196c) SHA1(b60741c3242ce56cb61ea68093b571489db0c6fa) ) // FIRST AND SECOND HALF IDENTICAL
10577 	ROM_LOAD( "t2709u26.u26", 0x080000, 0x080000, CRC(416ac849) SHA1(3bd5dd13a8f2693e8f160a4ecfff3b7610644f5f) ) // FIRST AND SECOND HALF IDENTICAL
10578 
10579 	ROM_REGION( 0x100000, "gfx2", 0 )   /* Layer 1 */
10580 	ROM_LOAD16_BYTE( "t2709u42.u39", 0x000000, 0x080000, CRC(194d5704) SHA1(ab2833f7427d0608850c158b813bc49935ac7d6d) )
10581 	ROM_LOAD16_BYTE( "t2709u39.u42", 0x000001, 0x080000, CRC(6f95a76d) SHA1(925f5880fb5153c1215d1f5ee1eff5b53a84abea) )
10582 
10583 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10584 	ROM_LOAD( "t2709u47.u47", 0x000000, 0x080000, CRC(0ebdad40) SHA1(6558eeaac76d98d91b0be6faa78f531f1e3b9f84) )
10585 	ROM_LOAD( "t2709u55.u55", 0x080000, 0x080000, CRC(43960c68) SHA1(9a1901b65f989aa57ab8736ef0be3bac492c081c) )
10586 ROM_END
10587 
10588 ROM_START( umanclub )
10589 	ROM_REGION( 0x040000, "maincpu", 0 )        /* 68000 Code */
10590 	ROM_LOAD16_BYTE( "uw001006.u48", 0x000000, 0x020000, CRC(3dae1e9d) SHA1(91a738c299d134d198bad648383be87345f4f475) )
10591 	ROM_LOAD16_BYTE( "uw001007.u49", 0x000001, 0x020000, CRC(5c21e702) SHA1(c69e9dd7dfac82f116885610f90878f865e629b3) )
10592 
10593 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
10594 	ROM_LOAD( "bp-u-002.u2", 0x000000, 0x080000, CRC(936cbaaa) SHA1(f7932ee310eb792b2776ae8a9d29e1a492761b11) )
10595 	ROM_LOAD( "bp-u-001.u1", 0x080000, 0x080000, CRC(87813c48) SHA1(7ec9b08fe0490d277c531e2b6394862df4d5678d) )
10596 
10597 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10598 	ROM_LOAD( "uw003.u13", 0x000000, 0x100000, CRC(e2f718eb) SHA1(fd085b68f76c8778816a1b7d47783b9dc20bff12) )
10599 ROM_END
10600 
10601 ROM_START( zingzip )
10602 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
10603 	ROM_LOAD16_BYTE( "uy001001.3",  0x000000, 0x040000, CRC(1a1687ec) SHA1(c840752dd87d8c1c30e6b31452173148e20538b1) )
10604 	ROM_LOAD16_BYTE( "uy001002.4",  0x000001, 0x040000, CRC(62e3b0c4) SHA1(51a27fbf68a142dd132157bed1dc22acda3fa044) )
10605 
10606 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
10607 	ROM_LOAD( "uy001006.64",  0x000000, 0x080000, CRC(46e4a7d8) SHA1(2c829e52d9aead351702335bf06aa0f337528306) )
10608 	ROM_LOAD( "uy001005.63",  0x080000, 0x080000, CRC(4aac128e) SHA1(3ac64c84a40f86e29e33a218babcd21cae6dbfdb) )
10609 
10610 	ROM_REGION( 0x200000, "gfx2", 0 )   /* Layer 1 */
10611 	ROM_LOAD24_WORD_SWAP( "uy001008.66", 0x000001, 0x100000, CRC(1dff7c4b) SHA1(94f581f4aae1ef417dce6e62a611a523205e8c27) ) // FIRST AND SECOND HALF IDENTICAL
10612 	ROM_LOAD24_BYTE     ( "uy001007.65", 0x000000, 0x080000, CRC(ec5b3ab9) SHA1(e82fb050ae4e2486e43418fcb5fa726d92c5cd21) )
10613 
10614 	ROM_REGION( 0x200000, "gfx3", 0 )   /* Layer 2 */
10615 	ROM_LOAD16_WORD_SWAP( "uy001010.68", 0x000000, 0x100000, CRC(bdbcdf03) SHA1(857f541697f76086ac6c761a3505678a3d3499df) ) // FIRST AND SECOND HALF IDENTICAL
10616 
10617 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10618 	ROM_LOAD( "uy001011.70",  0x000000, 0x100000, CRC(bd845f55) SHA1(345b79cfcd8c924d6ba365814286e518438f10bc) ) // uy001017 + uy001018
10619 ROM_END
10620 
10621 ROM_START( zingzipbl )
10622 	ROM_REGION( 0x80000, "maincpu", 0 )        /* 68000 Code */
10623 	ROM_LOAD16_BYTE( "prg9.bin",   0x000000, 0x040000, CRC(bf47a8cf) SHA1(87ef35c2dc4d25bbd90cd7528616d06362b20fc8) )
10624 	ROM_LOAD16_BYTE( "prg10.bin",  0x000001, 0x040000, CRC(561501ba) SHA1(f9d488b6d6b313e543738905f11ebbc5f644eb09) )
10625 
10626 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
10627 	ROM_LOAD16_BYTE( "17",  0x000000, 0x040000,  CRC(2d59ce97) SHA1(c24f863057721bd568caff6d9e3b4abd235f92fc) )
10628 	ROM_LOAD16_BYTE( "18",  0x000001, 0x040000,  CRC(4e23144a) SHA1(1c4543687e693e7e9bf3a5790cb6e7458571964f) )
10629 	ROM_LOAD16_BYTE( "19",  0x080000, 0x040000,  CRC(101beade) SHA1(2a7261583eb7326fbb50aa48fe5f0bc50e7a5180) )
10630 	ROM_LOAD16_BYTE( "20",  0x080001, 0x040000,  CRC(ebff804d) SHA1(a0fc4ed6104cfc17c33697ff8ae75949c2e9945e) )
10631 
10632 	ROM_REGION( 0x200000, "gfxtemp", 0 )    /* Layer 1 + 2 combined (4bpp data) */
10633 	ROM_LOAD16_BYTE( "11",  0x000000, 0x080000,  CRC(2f3b292d) SHA1(931abc0b7570b32e41a11555c9d55a67cfdcd1df) )
10634 	ROM_LOAD16_BYTE( "12",  0x000001, 0x080000,  CRC(b9d1cb25) SHA1(45cab6c2fb459f78ab9177f64e5c5039cbaa9e09) )
10635 	ROM_LOAD16_BYTE( "13",  0x100000, 0x080000,  CRC(cabc66d9) SHA1(cf1777eb95822cd705edf9b7e4b2d4d6e75f33cf) )
10636 	ROM_LOAD16_BYTE( "14",  0x100001, 0x080000,  CRC(fefad62f) SHA1(13aaf6cc6af4b42a1184f3fc6c07d9d966153dc1) )
10637 
10638 	ROM_REGION( 0x180000, "gfx2", 0 )   /* Layer 1 */
10639 	ROM_COPY( "gfxtemp", 0x000000, 0x000000, 0x80000 )
10640 	ROM_COPY( "gfxtemp", 0x100000, 0x080000, 0x80000 )
10641 	// 2bpp of extra planes for this layer
10642 	ROM_LOAD16_BYTE( "15",  0x100000, 0x040000, CRC(af7a786f) SHA1(de67960f529ebfff0f1d55c79912685f9eca9623) )
10643 	ROM_LOAD16_BYTE( "16",  0x100001, 0x040000, CRC(06dee8f3) SHA1(8c5f489e53bc10e2bad9f98445328e2ec0eac7d2) )
10644 
10645 	ROM_REGION( 0x100000, "gfx3", 0 )   /* Layer 2 */
10646 	ROM_COPY( "gfxtemp", 0x080000, 0x000000, 0x80000 )
10647 	ROM_COPY( "gfxtemp", 0x180000, 0x080000, 0x80000 )
10648 
10649 	ROM_REGION( 0x100000, "oki", 0 )    /* OKI Samples - Not Seta */
10650 	ROM_LOAD( "8",  0x000000, 0x40000, CRC(7927a200) SHA1(fd6163d2867959ec14b418d6207ae024afd3b654) )
10651 ROM_END
10652 
10653 ROM_START( atehate )
10654 	ROM_REGION( 0x100000, "maincpu", 0 )        /* 68000 Code */
10655 	ROM_LOAD16_BYTE( "fs001001.evn", 0x000000, 0x080000, CRC(4af1f273) SHA1(79b28fe768aa634c31ee4e7687e62ebe78cf4014) )
10656 	ROM_LOAD16_BYTE( "fs001002.odd", 0x000001, 0x080000, CRC(c7ca7a85) SHA1(1221f57d4aa3d2cb6662bc059978eafd65c1858f) )
10657 
10658 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
10659 	ROM_LOAD( "fs001003.gfx", 0x000000, 0x200000, CRC(8b17e431) SHA1(643fc62d5bad9941630ab621ecb3c69ded9d4536) )
10660 
10661 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10662 	ROM_LOAD( "fs001004.pcm", 0x000000, 0x100000, CRC(f9344ce5) SHA1(cffbc235f3a8e9a5004e671d924affd321ec9eed) )
10663 ROM_END
10664 
10665 /*
10666 The changes between the set daioh and daioha are very minimal, the main game effects are:
10667 
10668  - Fixes the crashing bug in the US version caused by pressing Shot1 and Shot2 in weird orders and timings.
10669  - 1UP, and 2UPs no longer spawn "randomly". (Only the fixed extend items exist, and the 1UPs from score)
10670  - After picking up a max powerup, a 1UP or a 2UP, daoiha sets the "item timer" to a random value.
10671    daioh always sets it to 0x7F.
10672  - The powerups spawned from picking up an additional max powerup are no longer random, but feeds from the
10673    original "spawn item" function (thus, it advances the "item timer")
10674 
10675 So it's a bug fix version which also makes the game a little harder by limiting the spawning of 1ups
10676 */
10677 
10678 ROM_START( daioh )
10679 	ROM_REGION( 0x100000, "maincpu", 0 )        /* 68000 Code */
10680 	ROM_LOAD16_BYTE( "fg001001.u3",  0x000000, 0x080000, CRC(e1ef3007) SHA1(864349efac3e3dc3ccdeb892fed285c73aea3997) )
10681 	ROM_LOAD16_BYTE( "fg001002.u4",  0x000001, 0x080000, CRC(5e3481f9) SHA1(7585a7e56392fc2b13d466cf262383dd68d6d995) )
10682 
10683 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
10684 	ROM_LOAD( "fg-001-004", 0x000000, 0x100000, CRC(9ab0533e) SHA1(b260ceb2b3e140971419329bee07a020171794f7) )
10685 	ROM_LOAD( "fg-001-003", 0x100000, 0x100000, CRC(1c9d51e2) SHA1(1d6236ab28d11676386834fd6e405fd40198e924) )
10686 
10687 	ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 1 */
10688 	ROM_LOAD16_WORD_SWAP( "fg-001-005",  0x000000, 0x200000, CRC(c25159b9) SHA1(4c9da3233223508389c3c0f277a00aedfc860da4) )
10689 
10690 	ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 2 */
10691 	ROM_LOAD16_WORD_SWAP( "fg-001-006",  0x000000, 0x200000, CRC(2052c39a) SHA1(83a444a76e68aa711b0e25a5aa963ca876a6357e) )
10692 
10693 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10694 	ROM_LOAD( "fg-001-007",  0x000000, 0x100000, CRC(4a2fe9e0) SHA1(e55b6f301f842ff5d3c7a0041856695ac1d8a78f) )
10695 ROM_END
10696 
10697 ROM_START( daioha )
10698 	ROM_REGION( 0x100000, "maincpu", 0 )        /* 68000 Code */
10699 	ROM_LOAD16_BYTE( "fg-001-001.u3",  0x000000, 0x080000, CRC(104ae74a) SHA1(928c467e3ff98285a4828a927d851fcdf296849b) )
10700 	ROM_LOAD16_BYTE( "fg-001-002.u4",  0x000001, 0x080000, CRC(e39a4e67) SHA1(c3f47e9d407f32dbfaf209d29b4446e4de8829a2) )
10701 
10702 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
10703 	ROM_LOAD( "fg-001-004", 0x000000, 0x100000, CRC(9ab0533e) SHA1(b260ceb2b3e140971419329bee07a020171794f7) )
10704 	ROM_LOAD( "fg-001-003", 0x100000, 0x100000, CRC(1c9d51e2) SHA1(1d6236ab28d11676386834fd6e405fd40198e924) )
10705 
10706 	ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 1 */
10707 	ROM_LOAD16_WORD_SWAP( "fg-001-005",  0x000000, 0x200000, CRC(c25159b9) SHA1(4c9da3233223508389c3c0f277a00aedfc860da4) )
10708 
10709 	ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 2 */
10710 	ROM_LOAD16_WORD_SWAP( "fg-001-006",  0x000000, 0x200000, CRC(2052c39a) SHA1(83a444a76e68aa711b0e25a5aa963ca876a6357e) )
10711 
10712 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10713 	ROM_LOAD( "fg-001-007",  0x000000, 0x100000, CRC(4a2fe9e0) SHA1(e55b6f301f842ff5d3c7a0041856695ac1d8a78f) )
10714 ROM_END
10715 
10716 ROM_START( daiohp ) /* Found on the same P0-072-2 PCB as the Blandia prototype */
10717 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
10718 	ROM_LOAD16_BYTE( "prg_even.u3",    0x000000, 0x040000, CRC(3c97b976) SHA1(5850bf71b594a25f3e2de16f2933078c4a0dc518) )
10719 	ROM_LOAD16_BYTE( "prg_odd.u4",     0x000001, 0x040000, CRC(aed2b87e) SHA1(d5b81614fbbda8a75418e69eb481e5adf38b4ebf) )
10720 	ROM_LOAD16_BYTE( "data_even.u103", 0x100000, 0x040000, CRC(e07776ef) SHA1(5e75dd35fd8eae98182a9798a8b3eceb3e33b780) )
10721 	ROM_LOAD16_BYTE( "data_odd.u102",  0x100001, 0x040000, CRC(b75b9a5c) SHA1(4c187105fe5253cc86862df1f3970fa45d4f7317) )
10722 
10723 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
10724 	ROM_LOAD16_BYTE( "obj_1.u140",  0x000000, 0x040000, CRC(8ff6c5a9) SHA1(a2d188d44c8671282bf53f7927e099a212c0ed51) )
10725 	ROM_LOAD16_BYTE( "obj_0.u142",  0x000001, 0x040000, CRC(78f45582) SHA1(021e635ba365558d9bf37a3b33b4c42b63119f0c) )
10726 	ROM_LOAD16_BYTE( "obj_5.u141",  0x080000, 0x040000, CRC(6a671757) SHA1(aa6c2f916f1ca70514f1bb5754545171d8991456) )
10727 	ROM_LOAD16_BYTE( "obj_4.u143",  0x080001, 0x040000, CRC(d387de72) SHA1(22f40a2daa98e52d6990aa52f9fde2cd66ad40d8) )
10728 	ROM_LOAD16_BYTE( "obj_3.u144",  0x100000, 0x040000, CRC(d33ca640) SHA1(3d278cb46f2eabd03851ee470adfae5313988a27) )
10729 	ROM_LOAD16_BYTE( "obj_2.u146",  0x100001, 0x040000, CRC(77560a03) SHA1(f766b56a88d49e4b41c9ed3c68e5478991033b5b) )
10730 	ROM_LOAD16_BYTE( "obj_7.u145",  0x180000, 0x040000, CRC(e878ac92) SHA1(fc67cbefb050bfbc96f3350bb3d76bf0206e6553) )
10731 	ROM_LOAD16_BYTE( "obj_6.u147",  0x180001, 0x040000, CRC(081f5fb1) SHA1(2fc6816704f7c42627ec47edd0e2ea88e7088101) )
10732 
10733 	ROM_REGION( 0x200000, "gfx2", 0 )   /* Layer 1 */
10734 	ROM_LOAD16_BYTE( "bg1_0.u148",  0x000001, 0x080000, CRC(bec48d7a) SHA1(9fdcc8f461e48cb4244827bead980ad48acdfbd8) )
10735 	ROM_LOAD16_BYTE( "bg1_1.u150",  0x000000, 0x080000, CRC(d5793a2f) SHA1(0623d51d405fde69622f1e15512fd8fc41209a59) )
10736 	ROM_LOAD16_BYTE( "bg1_2.u149",  0x100001, 0x080000, CRC(5e674c30) SHA1(8f2e264df7d0b4f2a5a54d86dd0b3106d0ff7c15) )
10737 	ROM_LOAD16_BYTE( "bg1_3.u151",  0x100000, 0x080000, CRC(6456fae1) SHA1(ce839e68342b62be61e29255ebdd8ddbd2b67a71) )
10738 
10739 	ROM_REGION( 0x200000, "gfx3", 0 )   /* Layer 2 */
10740 	ROM_LOAD16_BYTE( "bg2_0.u164",  0x000001, 0x080000, CRC(7e46a10e) SHA1(a8576f7a140b065b88a0dab648f7b31c75fec006) )
10741 	ROM_LOAD16_BYTE( "bg2_1.u166",  0x000000, 0x080000, CRC(9274123b) SHA1(b58e107a5bd222e454fd435d515e57cab52e6593) )
10742 	ROM_LOAD16_BYTE( "bg2_2.u165",  0x100001, 0x080000, CRC(3119189b) SHA1(3a45ec8db30659d7fd47090cb137df05bbdc1c86) )
10743 	ROM_LOAD16_BYTE( "bg2_3.u167",  0x100000, 0x080000, CRC(d3d68aa1) SHA1(14b0e4fd9bbdc2b6a99147dd6f6143d609d9110b) )
10744 
10745 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10746 	ROM_LOAD( "snd0.u156",  0x000000, 0x020000, CRC(4d253547) SHA1(87cda11dc86bc121cb8fb0e574006c3627158f51) )
10747 	ROM_LOAD( "snd1.u157",  0x020000, 0x020000, CRC(79b56e22) SHA1(4b6c62e96dc1e8fb6dc0a76c505f9d805ef4684f) )
10748 	ROM_LOAD( "snd2.u158",  0x040000, 0x020000, CRC(bc8de02a) SHA1(503c2c9f9ce029701e6a5b134d9407ab06e28913) )
10749 	ROM_LOAD( "snd3.u159",  0x060000, 0x020000, CRC(939777fd) SHA1(3dd1b89a4f81f745c68037c568c885fe1403ed31) )
10750 	ROM_LOAD( "snd4.u160",  0x080000, 0x020000, CRC(7b97716d) SHA1(6693e81dc008317c6a985558624f5d5cf00785e9) )
10751 	ROM_LOAD( "snd5.u161",  0x0A0000, 0x020000, CRC(294e1cc9) SHA1(5faef5eb9f15c23686c2f66646c6f6724e7c611f) )
10752 	ROM_LOAD( "snd6.u162",  0x0C0000, 0x020000, CRC(ecab073b) SHA1(f991fb9d9d4ffe24b67b233850ef0727dc6329b6) )
10753 	ROM_LOAD( "snd7.u163",  0x0E0000, 0x020000, CRC(1b7ea768) SHA1(7dfa8cbcb839c76f3f9eefd6abbc2b424c3d970a) )
10754 
10755 	ROM_REGION( 0xC00, "pals", 0 )
10756 	ROM_LOAD( "con1x.u35",  0x000000, 0x104, CRC(ce8b57d9) SHA1(e433a8cee4f964123595f904170793e152290be1) )
10757 	ROM_LOAD( "con2x.u36",  0x000200, 0x104, CRC(0b18db9e) SHA1(80e6aacb1455e15c6e665feaec8711070c14a901) )
10758 	ROM_LOAD( "dec1x.u14",  0x000400, 0x104, CRC(d197abfe) SHA1(93f08d879c339ec00598383723912d7d0eab306c) )
10759 	ROM_LOAD( "dec2x.u206", 0x000600, 0x104, CRC(35afbba8) SHA1(ce1cc0f75467a1ce6444250d741e70c2ed8d4c14) )
10760 	ROM_LOAD( "pcon2.u110", 0x000800, 0x104, CRC(082882c2) SHA1(78385047ed8b1e2c11926c5ce8dea40450b0d0b0) )
10761 	ROM_LOAD( "sc.u116",    0x000A00, 0x104, CRC(e57bfde9) SHA1(33632d007c8e48d756fc920985f82ae32dcd63e6) )
10762 ROM_END
10763 
10764 ROM_START( daiohc ) /* Found on a 93111A PCB - same PCB as War of Areo & J. J. Squawkers */
10765 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
10766 	ROM_LOAD16_BYTE( "15.u3", 0x000000, 0x040000, CRC(14616abb) SHA1(1ff5331b0de60230baa4ced58bec6a954cb599d5) )
10767 	ROM_CONTINUE   (          0x100000, 0x040000  )
10768 	ROM_LOAD16_BYTE( "14.u4", 0x000001, 0x040000, CRC(a029f991) SHA1(5d341fe5b3ac3bdda1d8e7cc8e6a260f04d00aa1) )
10769 	ROM_CONTINUE   (          0x100001, 0x040000  )
10770 
10771 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
10772 	ROM_LOAD(  "9.u9",  0x000000, 0x080000, CRC(4444cbd4) SHA1(e039cd7e7093d399bc39aa4d355a03250e087fb3) ) /* connects to U63 & U64 through a riser card */
10773 	ROM_LOAD( "10.u10", 0x080000, 0x080000, CRC(1d88d20b) SHA1(3cf95041d0876a4ef378651783e53cee1994ed3d) )
10774 	ROM_LOAD( "11.u11", 0x100000, 0x080000, CRC(3e41de61) SHA1(7d3ddf3780bbe99b13937d75cbdbfb58449301a6) )
10775 	ROM_LOAD( "12.u12", 0x180000, 0x080000, CRC(f35e3341) SHA1(9260460e1823d157201de02557c7136ef898cfb3) )
10776 
10777 	ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 1 */
10778 	ROM_LOAD16_WORD_SWAP( "5.u5", 0x000000, 0x080000, CRC(aaa5e41e) SHA1(fe362ec083cb13732ea07003a4a1a9c63d382f4b) ) /* connects to U66 through a riser card */
10779 	ROM_LOAD16_WORD_SWAP( "6.u6", 0x080000, 0x080000, CRC(9ad8b4b4) SHA1(b6e4cff160ae0efe6f3fd0df9a8a618957c3ce61) )
10780 	ROM_LOAD16_WORD_SWAP( "7.u7", 0x100000, 0x080000, CRC(babf194a) SHA1(ef838aab2d651c10553fb87552c67f289a8ac83d) )
10781 	ROM_LOAD16_WORD_SWAP( "8.u8", 0x180000, 0x080000, CRC(2db65290) SHA1(4f4d65e984fad7bb1d886de67bc50645798282bb) )
10782 
10783 	ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 2 */
10784 	ROM_LOAD16_WORD_SWAP( "1.u1", 0x000000, 0x080000, CRC(30f81f99) SHA1(9c164c798c7e869e92505d9d85f06f4a1c9a9528) ) /* connects to U68 through a riser card */
10785 	ROM_LOAD16_WORD_SWAP( "2.u2", 0x080000, 0x080000, CRC(3b3e0f4e) SHA1(740afe4eefea480f941dd80a03392592d8d4b084) )
10786 	ROM_LOAD16_WORD_SWAP( "3.u3", 0x100000, 0x080000, CRC(c5eef1c1) SHA1(d4b3188b39bad5c7a2c7b7dbc91a79c7ee80a3a1) )
10787 	ROM_LOAD16_WORD_SWAP( "4.u4", 0x180000, 0x080000, CRC(851115b6) SHA1(b8e1e22231d131085c90afcf30ff35a2866edff5) )
10788 
10789 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10790 	ROM_LOAD( "data.u69", 0x000000, 0x080000, CRC(21e4f093) SHA1(f0420d158dc5d182e41b6fb2ea3af6baf88bacb8) )
10791 	ROM_LOAD( "data.u70", 0x080000, 0x080000, CRC(593c3c58) SHA1(475fb530a6d23269cb0aea6e294291c7463b57a2) )
10792 
10793 	ROM_REGION( 0x200, "gals", 0 )
10794 	ROM_LOAD( "gal.u14",  0x000000, 0x117, CRC(b972b479) SHA1(50da73b4cc7b9c0ff8fb19b2c34d05a4dbc8f0cb) )
10795 ROM_END
10796 
10797 ROM_START( msgundam )
10798 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
10799 	ROM_LOAD16_WORD_SWAP( "fa003002.u25",  0x000000, 0x080000, CRC(1cc72d4c) SHA1(5043d693b5a8116a077d5b6997b658cb287e2aa7) )
10800 	ROM_LOAD16_WORD_SWAP( "fa001001.u20",  0x100000, 0x100000, CRC(fca139d0) SHA1(b56282c69f7ec64c697a48e42d59a2565401c032) )
10801 
10802 	ROM_REGION( 0x400000, "gfx1", 0 )   /* Sprites */
10803 	ROM_LOAD( "fa001008.u21",  0x000000, 0x200000, CRC(e7accf48) SHA1(dca9d53bc9cf0ecb661358d5a3f388c4ce9388e7) )
10804 	ROM_LOAD( "fa001007.u22",  0x200000, 0x200000, CRC(793198a6) SHA1(45f53870e74b14126680d18dd58dbbe01a6ef509) )
10805 
10806 	ROM_REGION( 0x100000, "gfx2", 0 )   /* Layer 1 */
10807 	ROM_LOAD16_WORD_SWAP( "fa001006.u23",  0x000000, 0x100000, CRC(3b60365c) SHA1(bdf5a0b1b45eb75dbbb6725d1e5303716321aeb9) )
10808 
10809 	ROM_REGION( 0x080000, "gfx3", 0 )   /* Layer 2 */
10810 	ROM_LOAD16_WORD_SWAP( "fa001005.u24",  0x000000, 0x080000, CRC(8cd7ff86) SHA1(ce7eb90776e21239f8f52e822c636143506c6f9b) )
10811 
10812 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10813 	ROM_LOAD( "fa001004.u26",  0x000000, 0x100000, CRC(b965f07c) SHA1(ff7827cc80655465ffbb732d55ba81f21f51a5ca) )
10814 ROM_END
10815 
10816 ROM_START( msgundam1 )
10817 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
10818 	ROM_LOAD16_WORD_SWAP( "fa002002.u25",  0x000000, 0x080000, CRC(dee3b083) SHA1(e2ad626aa0109906846dd9e9053ffc83b7bf4d2e) )
10819 	ROM_LOAD16_WORD_SWAP( "fa001001.u20",  0x100000, 0x100000, CRC(fca139d0) SHA1(b56282c69f7ec64c697a48e42d59a2565401c032) )
10820 
10821 	ROM_REGION( 0x400000, "gfx1", 0 )   /* Sprites */
10822 	ROM_LOAD( "fa001008.u21",  0x000000, 0x200000, CRC(e7accf48) SHA1(dca9d53bc9cf0ecb661358d5a3f388c4ce9388e7) )
10823 	ROM_LOAD( "fa001007.u22",  0x200000, 0x200000, CRC(793198a6) SHA1(45f53870e74b14126680d18dd58dbbe01a6ef509) )
10824 
10825 	ROM_REGION( 0x100000, "gfx2", 0 )   /* Layer 1 */
10826 	ROM_LOAD16_WORD_SWAP( "fa001006.u23",  0x000000, 0x100000, CRC(3b60365c) SHA1(bdf5a0b1b45eb75dbbb6725d1e5303716321aeb9) )
10827 
10828 	ROM_REGION( 0x080000, "gfx3", 0 )   /* Layer 2 */
10829 	ROM_LOAD16_WORD_SWAP( "fa001005.u24",  0x000000, 0x080000, CRC(8cd7ff86) SHA1(ce7eb90776e21239f8f52e822c636143506c6f9b) )
10830 
10831 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10832 	ROM_LOAD( "fa001004.u26",  0x000000, 0x100000, CRC(b965f07c) SHA1(ff7827cc80655465ffbb732d55ba81f21f51a5ca) )
10833 ROM_END
10834 
10835 ROM_START( msgundamb ) // 2 PCB stack, one has a 'Tecnoval - tecnologia valenciana del recreativo' sticker
10836 	ROM_REGION( 0x300000, "maincpu", 0 )        /* 68000 Code, on lower board */
10837 	ROM_LOAD16_BYTE( "d-4.bin", 0x000000, 0x040000, CRC(ca5bfa89) SHA1(108435cb65919b4b90be102e7ac2799501149fc8) ) // 27c020
10838 	ROM_LOAD16_BYTE( "d-2.bin", 0x000001, 0x040000, CRC(b4b86d1b) SHA1(d9b625cfdabcabed9308fccc29c66adfe566a996) ) // 27c020
10839 	ROM_LOAD16_BYTE( "27c8001-7.bin",   0x100000, 0x100000, CRC(803f279c) SHA1(1095ac434ce553ed56d106556e7d23ccac1f0cd4) ) // 1ST AND 2ND HALF IDENTICAL
10840 	ROM_LOAD16_BYTE( "27c8001-8.bin",   0x100001, 0x100000, CRC(a310fa93) SHA1(2ee1616699c95ed2b8c46d43de4cffece1b033ea) ) // 1ST AND 2ND HALF IDENTICAL
10841 
10842 	ROM_REGION( 0x400000, "gfx1", 0 )   /* Sprites, on top board, almost identical to the original but split */
10843 	ROM_LOAD16_BYTE( "27c8001-3.bin", 0x000000, 0x100000, CRC(9f36d867) SHA1(01a15dcdcb1077d7c8678762f58ad705dc29e8c9) )
10844 	ROM_LOAD16_BYTE( "27c8001-2.bin", 0x000001, 0x100000, CRC(70d333d9) SHA1(9ef3b0e0567ceed082921a5c384cfcfeb154f048) )
10845 	ROM_LOAD16_BYTE( "27c8001-1.bin", 0x200000, 0x100000, CRC(2792692c) SHA1(ed99c589ed15f8c1a4e2ab435a379b35105ba503) )
10846 	ROM_LOAD16_BYTE( "4.bin", 0x200001, 0x080000, CRC(eb551f1a) SHA1(e9d2fc31c3076164c5ee9722ea1b1e60b4f6d663) ) // mx27c4000
10847 	ROM_LOAD16_BYTE( "5.bin", 0x300001, 0x080000, CRC(e9aa57e8) SHA1(699c0132f4be81570f748e5ca2f88fc4fc6802bb) ) // mx27c4000
10848 
10849 	ROM_REGION( 0x200000, "gfx2", 0 )   /* Layer 1, on lower board */
10850 	ROM_LOAD16_BYTE( "27c8001-5.bin", 0x000000, 0x100000, CRC(c83ae34a) SHA1(d7bf49843c443c5b7cb9187404a3518eaed577a6) ) // 1ST AND 2ND HALF IDENTICAL, fa001006.u23 [odd]  IDENTICAL
10851 	ROM_LOAD16_BYTE( "27c8001-6.bin", 0x000001, 0x100000, CRC(8fbb5478) SHA1(247fd080f0ee18282c4d8b918171cfeab4b40d23) ) // 1ST AND 2ND HALF IDENTICAL, fa001006.u23 [even] IDENTICAL
10852 
10853 	ROM_REGION( 0x080000, "gfx3", 0 )   /* Layer 2, on lower board, identical to the original but split */
10854 	ROM_LOAD16_BYTE( "d-8.bin", 0x000001, 0x040000, CRC(a03c8345) SHA1(d3c3f0045ebb3d82d82432c212db4a801cb53b60) ) // 27c020
10855 	ROM_LOAD16_BYTE( "d-9.bin", 0x000000, 0x040000, CRC(cfd47024) SHA1(ab4fbaf258d2694407dd6c896f45d69821ccc408) ) // 27c020
10856 
10857 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples, on lower board */
10858 	ROM_LOAD( "27c8001-4.bin", 0x000000, 0x100000, CRC(b965f07c) SHA1(ff7827cc80655465ffbb732d55ba81f21f51a5ca) )  // identical to the original
10859 ROM_END
10860 
10861 ROM_START( oisipuzl )
10862 	ROM_REGION( 0x180000, "maincpu", 0 )        /* 68000 Code */
10863 	ROM_LOAD16_WORD_SWAP( "ss1u200.v10", 0x000000, 0x080000, CRC(f5e53baf) SHA1(057e8b35bc6f65634685b5d0cf38e12f2e62d72c) )
10864 	/* Gap of 0x80000 bytes */
10865 	ROM_LOAD16_WORD_SWAP( "ss1u201.v10", 0x100000, 0x080000, CRC(7a7ff5ae) SHA1(9e4da7ecc4d833c3ba4ddc6e5870fad53b9b2d2b) )
10866 
10867 	ROM_REGION( 0x200000, "gfx1", ROMREGION_INVERT )    /* Sprites */
10868 	ROM_LOAD( "ss1u306.v10", 0x000000, 0x080000, CRC(ce43a754) SHA1(3991042678badafee716b084c1768a794f144b1e) )
10869 	ROM_LOAD( "ss1u307.v10", 0x080000, 0x080000, CRC(2170b7ec) SHA1(c9f3d12646d4e877bc2b656f977e21d927f241f6) )
10870 	ROM_LOAD( "ss1u304.v10", 0x100000, 0x080000, CRC(546ab541) SHA1(aa96a79e3b0ba71f5e0fbb15e190d219630c2ba3) )
10871 	ROM_LOAD( "ss1u305.v10", 0x180000, 0x080000, CRC(2a33e08b) SHA1(780cfe44a4d57b254bd0cfae8727dc77358027a8) )
10872 
10873 	ROM_REGION( 0x100000, "gfx2", 0 )   /* Layer 1 */
10874 	ROM_LOAD16_WORD_SWAP( "ss1u23.v10",  0x000000, 0x080000, CRC(9fa60901) SHA1(3d42e4174ad566b6eeb488c7a4c51db9c1fef7af) )
10875 	ROM_LOAD16_WORD_SWAP( "ss1u24.v10",  0x080000, 0x080000, CRC(c10eb4b3) SHA1(70a82a750b1d9c849cd92d4f73769bbf5962c771) )
10876 
10877 	ROM_REGION( 0x080000, "gfx3", 0 )   /* Layer 2 */
10878 	ROM_LOAD16_WORD_SWAP( "ss1u25.v10",  0x000000, 0x080000, CRC(56840728) SHA1(db61539fd84f0de35ee2077238ba3646c4960cc6) )
10879 
10880 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10881 	ROM_LOAD( "ss1u26.v10", 0x000000, 0x080000, CRC(d452336b) SHA1(d3bf3cb383c40911758a60546f121c48087868e3) )
10882 	ROM_LOAD( "ss1u27.v10", 0x080000, 0x080000, CRC(17fe921d) SHA1(7fc176b8eefad4f2b8532bfe62e7852d2be185ca) )
10883 ROM_END
10884 
10885 ROM_START( triplfun ) /* the program fails its self-check but thats probably because its a bootleg, it does the same on the real board */
10886 	ROM_REGION( 0x180000, "maincpu", 0 )
10887 	ROM_LOAD16_BYTE( "05.bin", 0x000000, 0x40000, CRC(06eb3821) SHA1(51c67c87b5c28e693dfffd32d25cdb6d2a9448cf) )
10888 	ROM_CONTINUE(0x100000,0x40000)
10889 	ROM_LOAD16_BYTE( "04.bin", 0x000001, 0x40000, CRC(37a5c46e) SHA1(80b49b422a7db64d9ba5896da2b01a4588a6cf62) )
10890 	ROM_CONTINUE(0x100001,0x40000)
10891 
10892 	ROM_REGION( 0x200000, "gfx1", 0 )
10893 	ROM_LOAD16_BYTE( "08.bin", 0x000001, 0x80000, CRC(63a8f10f) SHA1(0a045d559b9edc9f335e6ec2d214d70c4959ec50) )
10894 	ROM_LOAD16_BYTE( "09.bin", 0x000000, 0x80000, CRC(98cc8ca5) SHA1(1bd9d2d860e02ee4fea3d9592172690cb9d3acf2) )
10895 	ROM_LOAD16_BYTE( "10.bin", 0x100001, 0x80000, CRC(20b0f282) SHA1(c98de63c1ad9dfe9b24f55966ccc5392c5ae82ba) )
10896 	ROM_LOAD16_BYTE( "11.bin", 0x100000, 0x80000, CRC(276ef724) SHA1(e0c642dfd19542234abb0de68a66f8c36d9cb827) )
10897 
10898 	ROM_REGION( 0x100000, "gfx2", 0 )
10899 	ROM_LOAD16_BYTE( "02.bin", 0x000001, 0x80000, CRC(4c0d1068) SHA1(cb77309474938765fd0582ab132f19fb5e21fca3) )
10900 	ROM_LOAD16_BYTE( "03.bin", 0x000000, 0x80000, CRC(dba94e18) SHA1(3f54d874287e4ab96b2791503235488164d90cb1) )
10901 
10902 	ROM_REGION( 0x80000, "gfx3", 0 )
10903 	ROM_LOAD16_BYTE( "06.bin", 0x000001, 0x40000, CRC(8944bb72) SHA1(37cd0e2c8e99fb23ea70dc183a8aa0670c5f6b65) )
10904 	ROM_LOAD16_BYTE( "07.bin", 0x000000, 0x40000, CRC(934a5d91) SHA1(aa19d2699b5ebdd99d59004005b0ce0c5140d192) )
10905 
10906 	ROM_REGION( 0x40000, "oki", 0 )
10907 	ROM_LOAD( "01.bin", 0x000000, 0x40000, CRC(c186a930) SHA1(e17e1a620e380f0737b80c7f160ad643979b2799) )
10908 ROM_END
10909 
10910 ROM_START( qzkklgy2 )
10911 	ROM_REGION( 0x0c0000, "maincpu", 0 )        /* 68000 Code */
10912 	ROM_LOAD16_WORD_SWAP( "fn001001.106", 0x000000, 0x080000, CRC(7bf8eb17) SHA1(f2d1666e22f564d59b37ca00c8db34ca822fd142) )
10913 	ROM_LOAD16_WORD_SWAP( "fn001003.107", 0x080000, 0x040000, CRC(ee6ef111) SHA1(6d9efac46ba01fff8784034801cba10e38b2c923) )
10914 
10915 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
10916 	ROM_LOAD( "fn001004.100", 0x000000, 0x100000, CRC(5ba139a2) SHA1(24fe19a7e5d2cd53bf3b1c71bf05020067f5e956) )
10917 
10918 	ROM_REGION( 0x200000, "gfx2", 0 )   /* Layer 1 */
10919 	ROM_LOAD16_WORD_SWAP( "fn001005.104", 0x000000, 0x200000, CRC(95726a63) SHA1(e53ffc2815c4858bbfb5ff452c581bccb41854c9) )
10920 
10921 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10922 	ROM_LOAD( "fn001006.105", 0x000000, 0x100000, CRC(83f201e6) SHA1(536e74788ad0e07451300a1ad3b127bc9d2d9063) )
10923 ROM_END
10924 
10925 ROM_START( wrofaero )
10926 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
10927 	ROM_LOAD16_BYTE( "u3.bin",  0x000000, 0x040000, CRC(9b896a97) SHA1(f4e768911705e6def5dc4a43cfc4146c48c80caf) )
10928 	ROM_LOAD16_BYTE( "u4.bin",  0x000001, 0x040000, CRC(dda84846) SHA1(50142692e13190900bc752908b105b65c48ea911) )
10929 
10930 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
10931 	ROM_LOAD( "u64.bin",  0x000000, 0x080000, CRC(f06ccd78) SHA1(1701bdac2c826327441cfe0039b4cadf8f3a4803) )
10932 	ROM_LOAD( "u63.bin",  0x080000, 0x080000, CRC(2a602a1b) SHA1(b04fa743200d62bc25a6aa34efae53209f185f79) )
10933 
10934 	ROM_REGION( 0x080000, "gfx2", 0 )   /* Layer 1 */
10935 	ROM_LOAD16_WORD_SWAP( "u66.bin",  0x000000, 0x080000, CRC(c9fc6a0c) SHA1(85ac0726221e3fedd80bd9b426d61471eb20ce46) )
10936 
10937 	ROM_REGION( 0x080000, "gfx3", 0 )   /* Layer 2 */
10938 	ROM_LOAD16_WORD_SWAP( "u68.bin",  0x000000, 0x080000, CRC(25c0c483) SHA1(2e705e7f0c66c3bc73e78ffb526606ab8be61d99) )
10939 
10940 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10941 	ROM_LOAD( "u69.bin",  0x000000, 0x080000, CRC(957ecd41) SHA1(3b37ba44b8b8f0f0de41c8c26c3dfdb391ba572c) )
10942 	ROM_LOAD( "u70.bin",  0x080000, 0x080000, CRC(8d756fdf) SHA1(d66712a6aa19252f2c915ac66fc27df031fa9512) )
10943 ROM_END
10944 
10945 ROM_START( jjsquawk ) /* PCB stickered  J.J. SQUAWKERS 9401- 1022 */
10946 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
10947 	ROM_LOAD16_BYTE( "fe2002001.u3", 0x000000, 0x040000, CRC(7b9af960) SHA1(1718d54b0c12ae148de44f9ccccf90c0182f7b4f) )
10948 	ROM_CONTINUE   (                 0x100000, 0x040000  )
10949 	ROM_LOAD16_BYTE( "fe2002002.u4", 0x000001, 0x040000, CRC(47dd71a3) SHA1(e219d984a1cac484ce1e570b7849562a88e0903e) )
10950 	ROM_CONTINUE   (                 0x100001, 0x040000  )
10951 
10952 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
10953 	ROM_LOAD( "fe2001009", 0x000000, 0x080000, CRC(27441cd3) SHA1(5867fc30c158e07f2d36ecab97b1d304383e6f35) ) /* These roms located on a plug-in PCB */
10954 	ROM_LOAD( "fe2001010", 0x080000, 0x080000, CRC(ca2b42c4) SHA1(9b99b6618fe44a6c29a255e89dab72a0a56214df) )
10955 	ROM_LOAD( "fe2001007", 0x100000, 0x080000, CRC(62c45658) SHA1(82b1ea138e8f4b4ade7e44b31843aa2023c9dd71) )
10956 	ROM_LOAD( "fe2001008", 0x180000, 0x080000, CRC(2690c57b) SHA1(b880ded7715dffe12c4fea7ad7cb9c5133b73250) )
10957 
10958 	ROM_REGION( 0x180000, "gfx2", 0 )   /* Layer 1 */
10959 	ROM_LOAD24_WORD_SWAP( "fe2001011", 0x000001, 0x080000, CRC(98b9f4b4) SHA1(de96708aebb428ddc413c3649caaec80c0c155bd) ) /* This rom located on a plug-in PCB */
10960 	ROM_LOAD24_WORD_SWAP( "fe2001012", 0x0c0001, 0x080000, CRC(d4aa916c) SHA1(d619d20c33f16ab06b529fc1717ad9b703acbabf) ) /* This rom located on a plug-in PCB */
10961 	ROM_LOAD24_BYTE     ( "fe2001003", 0x000000, 0x080000, CRC(a5a35caf) SHA1(da4bdb7f0b319f8ff972a552d0134a73e5ac1b87) )
10962 
10963 	ROM_REGION( 0x180000, "gfx3", 0 )   /* Layer 2 */
10964 	ROM_LOAD24_WORD_SWAP( "fe2001014", 0x000001, 0x080000, CRC(274bbb48) SHA1(b8db632a9bbb7232d0b1debd67b3b453fd4989e6) ) /* This rom located on a plug-in PCB */
10965 	ROM_LOAD24_WORD_SWAP( "fe2001013", 0x0c0001, 0x080000, CRC(51e29871) SHA1(9d33283bd9a3f57602a55cfc9fafa49edd0be8c5) ) /* This rom located on a plug-in PCB */
10966 	ROM_LOAD24_BYTE     ( "fe2001004", 0x000000, 0x080000, CRC(a235488e) SHA1(a45d02a4451defbef7fbdab15671955fab8ed76b) )
10967 
10968 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10969 	ROM_LOAD( "fe2001005.u69", 0x000000, 0x080000, CRC(d99f2879) SHA1(66e83a6bc9093d19c72bd8ef1ec0523cfe218250) )
10970 	ROM_LOAD( "fe2001006.u70", 0x080000, 0x080000, CRC(9df1e478) SHA1(f41b55821187b417ad09e4a1f439c01a107d2674) )
10971 ROM_END
10972 
10973 ROM_START( jjsquawko ) /* Official 93111A PCB missing version sticker */
10974 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
10975 	ROM_LOAD16_BYTE( "fe2001001.u3", 0x000000, 0x040000, CRC(921c9762) SHA1(bbc1fb95256f7eb2aa7ad23f38dbcdf502e7da8d) )
10976 	ROM_CONTINUE   (                 0x100000, 0x040000  )
10977 	ROM_LOAD16_BYTE( "fe2001002.u4", 0x000001, 0x040000, CRC(0227a2be) SHA1(8ee0c39f84110865778564f803b4db11bfdfbad7) )
10978 	ROM_CONTINUE   (                 0x100001, 0x040000  )
10979 
10980 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
10981 	ROM_LOAD( "fe2001009", 0x000000, 0x080000, CRC(27441cd3) SHA1(5867fc30c158e07f2d36ecab97b1d304383e6f35) ) /* These roms located on a plug-in PCB */
10982 	ROM_LOAD( "fe2001010", 0x080000, 0x080000, CRC(ca2b42c4) SHA1(9b99b6618fe44a6c29a255e89dab72a0a56214df) )
10983 	ROM_LOAD( "fe2001007", 0x100000, 0x080000, CRC(62c45658) SHA1(82b1ea138e8f4b4ade7e44b31843aa2023c9dd71) )
10984 	ROM_LOAD( "fe2001008", 0x180000, 0x080000, CRC(2690c57b) SHA1(b880ded7715dffe12c4fea7ad7cb9c5133b73250) )
10985 
10986 	ROM_REGION( 0x180000, "gfx2", 0 )   /* Layer 1 */
10987 	ROM_LOAD24_WORD_SWAP( "fe2001011", 0x000001, 0x080000, CRC(98b9f4b4) SHA1(de96708aebb428ddc413c3649caaec80c0c155bd) ) /* This rom located on a plug-in PCB */
10988 	ROM_LOAD24_WORD_SWAP( "fe2001012", 0x0c0001, 0x080000, CRC(d4aa916c) SHA1(d619d20c33f16ab06b529fc1717ad9b703acbabf) ) /* This rom located on a plug-in PCB */
10989 	ROM_LOAD24_BYTE     ( "fe2001003", 0x000000, 0x080000, CRC(a5a35caf) SHA1(da4bdb7f0b319f8ff972a552d0134a73e5ac1b87) )
10990 
10991 	ROM_REGION( 0x180000, "gfx3", 0 )   /* Layer 2 */
10992 	ROM_LOAD24_WORD_SWAP( "fe2001014", 0x000001, 0x080000, CRC(274bbb48) SHA1(b8db632a9bbb7232d0b1debd67b3b453fd4989e6) ) /* This rom located on a plug-in PCB */
10993 	ROM_LOAD24_WORD_SWAP( "fe2001013", 0x0c0001, 0x080000, CRC(51e29871) SHA1(9d33283bd9a3f57602a55cfc9fafa49edd0be8c5) ) /* This rom located on a plug-in PCB */
10994 	ROM_LOAD24_BYTE     ( "fe2001004", 0x000000, 0x080000, CRC(a235488e) SHA1(a45d02a4451defbef7fbdab15671955fab8ed76b) )
10995 
10996 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
10997 	ROM_LOAD( "fe2001005.u69", 0x000000, 0x080000, CRC(d99f2879) SHA1(66e83a6bc9093d19c72bd8ef1ec0523cfe218250) )
10998 	ROM_LOAD( "fe2001006.u70", 0x080000, 0x080000, CRC(9df1e478) SHA1(f41b55821187b417ad09e4a1f439c01a107d2674) )
10999 ROM_END
11000 
11001 ROM_START( jjsquawkb )
11002 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
11003 	ROM_LOAD16_WORD_SWAP( "3", 0x000000, 0x080000, CRC(afd5bd07) SHA1(eee231f596ce5cb9bbf41c7c9e18c11a399d7dfd) )
11004 	ROM_LOAD16_WORD_SWAP( "2", 0x100000, 0x080000, CRC(740a7366) SHA1(2539f9a9b4fed1a1e2c354d144b8d455ed4bc144) )
11005 
11006 	ROM_REGION( 0x400000, "gfx1", 0 )   /* Sprites */
11007 	ROM_LOAD( "4.bin",  0x000000, 0x200000, CRC(969502f7) SHA1(d6cecb38e8b73c61537cc1bdc843fc7cd695c771) ) // sldh
11008 	ROM_LOAD( "2.bin",  0x200000, 0x200000, CRC(765253d1) SHA1(4cbc6f093c87280ef9c17fecfc319cb780d755cc) ) // sldh
11009 
11010 	ROM_REGION( 0x400000, "gfxtemp", 0  )
11011 	ROM_LOAD( "3.bin",  0x000000, 0x200000, CRC(b1e3a4bb) SHA1(be2241a4fbb99444487e7b550faac4ee1ee1ad15) ) // sldh
11012 	ROM_LOAD( "1.bin",  0x200000, 0x200000, CRC(a5d37cf7) SHA1(9573777f3cdd6b25f0bd56f65f583fddda21c900) ) // sldh
11013 
11014 	ROM_REGION( 0x200000, "gfx2", 0 )   /* Layer 1 */
11015 	ROM_COPY( "gfxtemp", 0x000000, 0x000000, 0x100000 )
11016 	ROM_COPY( "gfxtemp", 0x200000, 0x100000, 0x100000 )
11017 
11018 	ROM_REGION( 0x200000, "gfx3", 0 )   /* Layer 2 */
11019 	ROM_COPY( "gfxtemp", 0x100000, 0x000000, 0x100000 )
11020 	ROM_COPY( "gfxtemp", 0x300000, 0x100000, 0x100000 )
11021 
11022 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11023 	ROM_LOAD( "1", 0x000000, 0x100000, CRC(181a55b8) SHA1(6fa404f85bad93cc15e80feb61d19bed84602b82) ) /* fe2001005.u69 + fe2001006.u70 from jjsquawk */
11024 ROM_END
11025 
11026 ROM_START( jjsquawkb2 ) /* PCB was P0-078A, which was a Blandia board converted to JJ Squawkers. No labels on any of the ROMs.  Apparently based on jjsquawko set. */
11027 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
11028 	ROM_LOAD16_BYTE( "u3.3a", 0x000000, 0x040000, CRC(f94c913b) SHA1(de6e422c514c787897f8f41d7cd98acb0135c763) ) // 99.999619%
11029 	ROM_CONTINUE   (                0x100000, 0x040000  )
11030 	ROM_LOAD16_BYTE( "u4.4a", 0x000001, 0x040000, CRC(0227a2be) SHA1(8ee0c39f84110865778564f803b4db11bfdfbad7) ) // 99.999809%
11031 	ROM_CONTINUE   (                0x100001, 0x040000  )
11032 
11033 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
11034 	ROM_LOAD( "u64.3l",  0x000000, 0x100000, CRC(11d8713a) SHA1(8e3359f605913625191ac0a09222ec465b5fea71) ) /* fe2001009 + fe2001010 from jjsquawk */
11035 	ROM_LOAD( "u63.2l",  0x100000, 0x100000, CRC(7a385ef0) SHA1(d38e2242532074b58707783608a6ddce42c55a77) ) /* fe2001007 + fe2001008 from jjsquawk */
11036 
11037 	ROM_REGION( 0x200000, "gfx2", 0 )   /* Layer 1 */
11038 	ROM_LOAD24_WORD_SWAP( "u66.5l", 0x000001, 0x100000, CRC(bbaf40c5) SHA1(aecd48176adbe79e76c8febca1d9bb95ff0d6912) ) /* fe2001011 + fe2001012 from jjsquawk */
11039 	ROM_LOAD24_BYTE     ( "u65.4l", 0x000000, 0x080000, CRC(a5a35caf) SHA1(da4bdb7f0b319f8ff972a552d0134a73e5ac1b87) ) /* fe2001003             from jjsquawk */
11040 
11041 	ROM_REGION( 0x200000, "gfx3", 0 )   /* Layer 2 */
11042 	ROM_LOAD24_WORD_SWAP( "u68.7l", 0x000001, 0x100000, CRC(ae9ae01f) SHA1(1a828d5b8848c5b5d8e5f279f1fde26b972a6332) ) /* fe2001014 + fe2001013 from jjsquawk */
11043 	ROM_LOAD24_BYTE     ( "u67.6l", 0x000000, 0x080000, CRC(a235488e) SHA1(a45d02a4451defbef7fbdab15671955fab8ed76b) ) /* fe2001004             from jjsquawk */
11044 
11045 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11046 	ROM_LOAD( "u70.10l", 0x000000, 0x100000, CRC(181a55b8) SHA1(6fa404f85bad93cc15e80feb61d19bed84602b82) ) /* fe2001005.u69 + fe2001006.u70 from jjsquawk */
11047 ROM_END
11048 
11049 ROM_START( simpsonjr ) /* bootleg of J. J. Squawkers by Daigom */
11050 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
11051 	ROM_LOAD16_WORD_SWAP( "4.bin", 0x000000, 0x080000, CRC(469cc203) SHA1(4ecd8dce936f24acb149ef2fdf34595bd4a20a74) ) // sldh
11052 	ROM_LOAD16_WORD_SWAP( "3.bin", 0x100000, 0x080000, CRC(740a7366) SHA1(2539f9a9b4fed1a1e2c354d144b8d455ed4bc144) ) // sldh
11053 
11054 	ROM_REGION( 0x800000, "gfxtemp", 0  )
11055 	ROM_LOAD( "5.bin",  0x000000, 0x400000, CRC(82952780) SHA1(83b61c726dd102491fe338036531f7653b0edefc) )
11056 	ROM_LOAD( "6.bin",  0x400000, 0x400000, CRC(5a22bb87) SHA1(e5f91af685eb9331c5f00d81eca6dca177a9c860) )
11057 
11058 	ROM_REGION( 0x400000, "gfx1", 0 )   /* Sprites */
11059 	ROM_COPY( "gfxtemp", 0x600000, 0x000000, 0x200000 )
11060 	ROM_COPY( "gfxtemp", 0x200000, 0x200000, 0x200000 )
11061 
11062 	ROM_REGION( 0x200000, "gfx2", 0 )   /* Layer 1 */
11063 	ROM_COPY( "gfxtemp", 0x400000, 0x000000, 0x100000 )
11064 	ROM_COPY( "gfxtemp", 0x000000, 0x100000, 0x100000 )
11065 
11066 	ROM_REGION( 0x200000, "gfx3", 0 )   /* Layer 2 */
11067 	ROM_COPY( "gfxtemp", 0x500000, 0x000000, 0x100000 )
11068 	ROM_COPY( "gfxtemp", 0x100000, 0x100000, 0x100000 )
11069 
11070 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11071 	ROM_LOAD( "1.bin", 0x000000, 0x080000, CRC(d99f2879) SHA1(66e83a6bc9093d19c72bd8ef1ec0523cfe218250) ) // sldh
11072 	ROM_LOAD( "2.bin", 0x080000, 0x080000, CRC(9df1e478) SHA1(f41b55821187b417ad09e4a1f439c01a107d2674) ) // sldh
11073 ROM_END
11074 
11075 ROM_START( kamenrid )
11076 	ROM_REGION( 0x080000, "maincpu", 0 )        /* 68000 Code */
11077 	ROM_LOAD16_WORD_SWAP( "fj001003.25", 0x000000, 0x080000, CRC(9b65d1b9) SHA1(a9183f817dbd1721cbb1a9049ca2bfc6acdf9f4a) )
11078 
11079 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
11080 	ROM_LOAD( "fj001005.21", 0x000000, 0x100000, CRC(5d031333) SHA1(7b603e7e79c9439b526687021c0be4a5965b4c11) )
11081 	ROM_LOAD( "fj001006.22", 0x100000, 0x100000, CRC(cf28eb78) SHA1(b1b34e0e50b5d54ff3cff908c579031a326890a2) )
11082 
11083 	ROM_REGION( 0x80000, "user1", 0 )   /* Layers 1+2 */
11084 	ROM_LOAD16_WORD_SWAP( "fj001007.152", 0x000000, 0x080000, CRC(d9ffe80b) SHA1(c1f919b53cd1b9874a5e5dc5640891e1b227cfc6) )
11085 
11086 	ROM_REGION( 0x40000, "gfx2", 0 )    /* Layer 1 */
11087 	ROM_COPY( "user1", 0x000000, 0x000000, 0x040000 )
11088 
11089 	ROM_REGION( 0x40000, "gfx3", 0 )    /* Layer 2 */
11090 	ROM_COPY( "user1", 0x040000, 0x000000, 0x040000 )
11091 
11092 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11093 	ROM_LOAD( "fj001008.26", 0x000000, 0x100000, CRC(45e2b329) SHA1(8526afae1aa9178570c906eb96438f174d174f4d) )
11094 ROM_END
11095 
11096 ROM_START( eightfrc )
11097 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
11098 	ROM_LOAD16_BYTE( "uy2-u4.u3",  0x000000, 0x040000, CRC(f1f249c5) SHA1(5277b7a15934e60e0ca305c318fb02d0ffb99d42) )
11099 	ROM_LOAD16_BYTE( "uy2-u3.u4",  0x000001, 0x040000, CRC(6f2d8618) SHA1(ea243e6064b76bc5d6e831362ac9611a48ac94a7) )
11100 
11101 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
11102 	ROM_LOAD( "u64.bin",  0x000000, 0x080000, CRC(f561ff2e) SHA1(1ed78c90bf876f24c2859a73a71764189cebddbe) )
11103 	ROM_LOAD( "u63.bin",  0x080000, 0x080000, CRC(4c3f8366) SHA1(b25a27a67ae828d8fcf2c8d9d373ebdaacce9c4e) )
11104 
11105 	ROM_REGION( 0x100000, "gfx2", 0 )   /* Layer 1 */
11106 	ROM_LOAD16_WORD_SWAP( "u66.bin",  0x000000, 0x100000, CRC(6fad2b7f) SHA1(469d185dc942bd4b54babf1d528e0e420f31d88b) )
11107 
11108 	ROM_REGION( 0x100000, "gfx3", 0 )   /* Layer 2 */
11109 	ROM_LOAD16_WORD_SWAP( "u68.bin",  0x000000, 0x100000, CRC(c17aad22) SHA1(eabbae2142cad3eef6a94d542ea03221c8228e94) )
11110 
11111 	ROM_REGION( 0x200000, "x1snd", 0 )  /* Samples */
11112 	ROM_LOAD( "u70.bin",  0x000000, 0x100000, CRC(dfdb67a3) SHA1(0fed6fb498dcfc1276facd0ecd2dfde45ff671f2) )
11113 	ROM_LOAD( "u69.bin",  0x100000, 0x100000, CRC(82ec08f1) SHA1(f17300d3cf990ef5c11056fd922f8cae0b2c918f) )
11114 ROM_END
11115 
11116 ROM_START( kiwame )
11117 	ROM_REGION( 0x080000, "maincpu", 0 )        /* 68000 Code */
11118 	ROM_LOAD16_BYTE( "fp001001.bin", 0x000000, 0x040000, CRC(31b17e39) SHA1(4f001bf365d6c259ac8a13894e207a44c15e1d8b) )
11119 	ROM_LOAD16_BYTE( "fp001002.bin", 0x000001, 0x040000, CRC(5a6e2efb) SHA1(a3b2ecfb5b91c6013370b359f89db0da8f120ad9) )
11120 
11121 	ROM_REGION( 0x080000, "gfx1", 0 )   /* Sprites */
11122 	ROM_LOAD( "fp001003.bin", 0x000000, 0x080000, CRC(0f904421) SHA1(de5810746cfab1a4a7d1b055b1a97bc7fbc173dd) )
11123 
11124 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11125 	ROM_LOAD( "fp001006.bin", 0x000000, 0x080000, CRC(96cf395d) SHA1(877b291598e3a42e5003b2f50a16d162348ce72d) )
11126 	ROM_LOAD( "fp001005.bin", 0x080000, 0x080000, CRC(65b5fe9a) SHA1(35605be00c7c455551d18386fcb5ad013aa2907e) )
11127 
11128 	// default NVRAM, avoids "BACKUP RAM ERROR" at boot (useful for inp record/playback)
11129 	ROM_REGION( 0x10000, "nvram", 0 )
11130 	ROM_LOAD( "nvram.bin", 0, 0x10000, CRC(1f719400) SHA1(c63bbe5d3a0a917f74c1bd5e57cd44389e4e645c) )
11131 ROM_END
11132 
11133 ROM_START( krzybowl )
11134 	ROM_REGION( 0x080000, "maincpu", 0 )        /* 68000 Code */
11135 	ROM_LOAD16_BYTE( "fv001.002", 0x000000, 0x040000, CRC(8c03c75f) SHA1(e56c50440681a0b06d785000018c4213266f2a4e) )
11136 	ROM_LOAD16_BYTE( "fv001.001", 0x000001, 0x040000, CRC(f0630beb) SHA1(1ddd4ab1bc5ab2b6461eb35c8093884185828d7b) )
11137 
11138 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
11139 	ROM_LOAD( "fv001.003", 0x000000, 0x080000, CRC(7de22749) SHA1(933a11f2d45667348b136d72806fc2e2f6f8d944) )
11140 	ROM_LOAD( "fv001.004", 0x080000, 0x080000, CRC(c7d2fe32) SHA1(37291fa78c28be274e1240e081ea253ebe487e5c) )
11141 
11142 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11143 	ROM_LOAD( "fv001.005", 0x000000, 0x080000, CRC(5e206062) SHA1(e47cfb6947df178f3547dfe61907571bcb84e4ac) )
11144 	ROM_LOAD( "fv001.006", 0x080000, 0x080000, CRC(572a15e7) SHA1(b6a3e99e14a473b78ff48d1a46b20a0862d128e9) )
11145 ROM_END
11146 
11147 ROM_START( orbs )   /* All eproms are socketed and labelled (handwritten) "ORBS 10\7\94" */
11148 			/* most of rom space is unused (filled with sound samples - same data in all roms) */
11149 
11150 	ROM_REGION( 0x100000, "maincpu", 0 )        /* 68000 Code */
11151 	ROM_LOAD16_BYTE( "orbs.u10",  0x000000, 0x080000, CRC(10f079c8) SHA1(0baf2b7e1e8be116a6fab609481c87fc7c86f305) )
11152 	ROM_LOAD16_BYTE( "orbs.u9",   0x000001, 0x080000, CRC(f269d16f) SHA1(34f38789cb3256e334b0ac8acd9f339d14481578) )
11153 
11154 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
11155 	ROM_LOAD16_BYTE( "orbs.u11",  0x000000, 0x080000, CRC(58cb38ba) SHA1(1c6c5f7ccb9c81b71bc1cbad080799b97962f262) )
11156 	ROM_LOAD16_BYTE( "orbs.u12",  0x000001, 0x080000, CRC(b8c352c2) SHA1(7d6fd1425d9d5cf6a14a1ddceba0ad10e472dfa5) )
11157 	ROM_LOAD16_BYTE( "orbs.u13",  0x100000, 0x080000, CRC(784bdc1a) SHA1(de2c5b38561b8ba6bd800126d010b734c2751575) )
11158 	ROM_LOAD16_BYTE( "orbs.u14",  0x100001, 0x080000, CRC(1cc76541) SHA1(d8a233212bfb9a9c686a40e470524f95b34417fa) )
11159 
11160 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11161 	ROM_LOAD( "orbs.u15",  0x000000, 0x080000, CRC(bc0e9fe3) SHA1(758a44d07d59af8bbc87602df25dfcdc6cb8d9b3) )
11162 	ROM_LOAD( "orbs.u16",  0x080000, 0x080000, CRC(aecd8373) SHA1(5620bcb281a9ea4920cfe81d163827013289c5bf) )
11163 ROM_END
11164 
11165 ROM_START( keroppi )
11166 	ROM_REGION( 0x100000, "maincpu", 0 )        /* 68000 Code */
11167 	ROM_LOAD16_BYTE( "keroppi jr. code =u10= v1.0.u10",  0x000000, 0x040000, CRC(1fc2e895) SHA1(08f1f48d4f601cf51583bf8854a9fa7016337cfc) )
11168 	ROM_LOAD16_BYTE( "keroppi jr. code =u9= v1.0.u9",    0x000001, 0x040000, CRC(e0599e7b) SHA1(46b5ecc2864ab9e75540764453df5a2e6b6195e0) )
11169 
11170 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
11171 	ROM_LOAD( "keroppi jr. chr=u11= v1.0.u11",  0x000000, 0x080000, CRC(74148c23) SHA1(26e642e2e0ad2b2af749355e9c46605061b100bc) )
11172 	ROM_LOAD( "keroppi jr. chr=u12= v1.0.u12",  0x080000, 0x080000, CRC(6f4dae98) SHA1(da88837278cea956485f11ef55da8a4e9504c97a) )
11173 
11174 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11175 	ROM_LOAD( "keroppi jr. snd =u15= v1.0.u15",  0x000000, 0x080000, CRC(c98dacf0) SHA1(b508433e2383af1e8bd5fda253c9925c48443490) ) // == = ft-001-007.u15
11176 	ROM_LOAD( "keroppi jr. snd =u16= v1.0.u16",  0x080000, 0x080000, CRC(d61e5a32) SHA1(aa2edf39e72ac15a8c8dd016b87bea17472f0f94) )
11177 ROM_END
11178 
11179 ROM_START( keroppij )
11180 	ROM_REGION( 0x100000, "maincpu", 0 )        /* 68000 Code */
11181 	ROM_LOAD16_BYTE( "ft-001-001.u10",  0x000000, 0x080000, CRC(37861e7d) SHA1(4bf75f119b0ef1420c96844224850867fa8e273f) )
11182 	ROM_LOAD16_BYTE( "ft-001-002.u9",   0x000001, 0x080000, CRC(f531d4ef) SHA1(75a99695679de083765700c250bd1fdfd8be9981) )
11183 
11184 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
11185 	ROM_LOAD16_BYTE( "ft-001-006.u11",  0x000000, 0x080000, CRC(9c500eae) SHA1(3448adef04c9ad2e0b39a283e4eb9c9bac7d4967) )
11186 	ROM_LOAD16_BYTE( "ft-001-005.u12",  0x000001, 0x080000, CRC(de6432a8) SHA1(afee9b29e0b3db4815fc29456044532aee03597e) )
11187 	ROM_LOAD16_BYTE( "ft-001-004.u13",  0x100000, 0x080000, CRC(69908c98) SHA1(1af069e9330a33cd2f0e1365e05c72eb23c3244e) )
11188 	ROM_LOAD16_BYTE( "ft-001-003.u14",  0x100001, 0x080000, CRC(62fb22fb) SHA1(a67cb46152b73a47c2287c4058d0a22fb7064e7e) )
11189 
11190 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11191 	ROM_LOAD( "ft-001-007.u15",  0x000000, 0x080000, CRC(c98dacf0) SHA1(b508433e2383af1e8bd5fda253c9925c48443490) )
11192 	ROM_LOAD( "ft-001-008.u16",  0x080000, 0x080000, CRC(b9c4b637) SHA1(82977d10de1048f71525bab5431b031cca510114) )
11193 ROM_END
11194 
11195 ROM_START( extdwnhl )
11196 	ROM_REGION( 0x100000, "maincpu", 0 )        /* 68000 Code */
11197 	ROM_LOAD16_BYTE( "fw001002.201",  0x000000, 0x080000, CRC(24d21924) SHA1(9914a68a578f884b06305ffcd9aeed7d83df1c7b) )
11198 	ROM_LOAD16_BYTE( "fw001001.200",  0x000001, 0x080000, CRC(fb12a28b) SHA1(89167c042dc535b5f639057ff04a8e28824790f2) )
11199 
11200 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
11201 	ROM_LOAD( "fw001003.202", 0x000000, 0x200000, CRC(ac9b31d5) SHA1(d362217ea0c474994e3c79ddcf87ee6688428ea5) )
11202 
11203 	ROM_REGION( 0x400000, "gfx2", 0 )   /* Layer 1 */
11204 	ROM_LOAD24_WORD_SWAP( "fw001004.206", 0x000001, 0x200000, CRC(0dcb1d72) SHA1(ffc84f46f06f46750bddd1a303ed83a28fa9572f) )
11205 	ROM_LOAD24_BYTE     ( "fw001005.205", 0x000000, 0x100000, CRC(5c33b2f1) SHA1(9ea848aeaccbba0b71e60b39cf844665bd97928f) )
11206 
11207 	ROM_REGION( 0x200000, "gfx3", 0 )   /* Layer 2 */
11208 	ROM_LOAD16_WORD_SWAP( "fw001006.152",  0x000000, 0x200000, CRC(d00e8ddd) SHA1(e13692034afec1a0e86d19abfb9efa518b374147) )   // FIRST AND SECOND HALF IDENTICAL
11209 
11210 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11211 	ROM_LOAD( "fw001007.026",  0x080000, 0x080000, CRC(16d84d7a) SHA1(fdc13776ba1ec9c48a33a9f2dfe8a0e55c54d89e) )   // swapped halves
11212 	ROM_CONTINUE(              0x000000, 0x080000  )
11213 ROM_END
11214 
11215 ROM_START( gundhara )
11216 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
11217 	ROM_LOAD16_BYTE( "bpgh-003.u3",  0x000000, 0x080000, CRC(14e9970a) SHA1(31964bd290cc94c40684adf3a5d129b1c3addc3b) )
11218 	ROM_LOAD16_BYTE( "bpgh-004.u4",  0x000001, 0x080000, CRC(96dfc658) SHA1(f570bc49758535eb00d93ecce9f75832f97a0d8d) )
11219 	ROM_LOAD16_BYTE( "bpgh-002.103", 0x100000, 0x080000, CRC(312f58e2) SHA1(a74819d2f84a00c233489893f12c9ab1a98459cf) )
11220 	ROM_LOAD16_BYTE( "bpgh-001.102", 0x100001, 0x080000, CRC(8d23a23c) SHA1(9e9a6488db424c81a97edcb7115cc070fe35c077) )
11221 
11222 	ROM_REGION( 0x800000, "gfx1", 0 )   /* Sprites */
11223 	ROM_LOAD( "bpgh-008.u64", 0x000000, 0x200000, CRC(7ed9d272) SHA1(2e9243b3ecee27c175234f9bb1893ab498090fce) )
11224 	ROM_LOAD( "bpgh-006.201", 0x200000, 0x200000, CRC(5a81411d) SHA1(ebf90afe027a0dc0fa3022978677fb071b9083d1) )
11225 	ROM_LOAD( "bpgh-007.u63", 0x400000, 0x200000, CRC(aa49ce7b) SHA1(fe0064d533bd895657b88a0ef96e835443a4077f) )
11226 	ROM_LOAD( "bpgh-005.200", 0x600000, 0x200000, CRC(74138266) SHA1(c859acff358a61a32e5810ff369b9d5528137337) )
11227 
11228 	ROM_REGION( 0x180000, "gfx2", 0 )   /* Layer 1 */
11229 	ROM_LOAD24_BYTE     ( "bpgh-009.u65", 0x000000, 0x080000, CRC(b768e666) SHA1(473fa52c16c0a9f321e6429947a3e0fc1ef22f7e) )
11230 	ROM_LOAD24_WORD_SWAP( "bpgh-010.u66", 0x000001, 0x100000, CRC(b742f0b8) SHA1(9246846c9ee839d5d84f5e02cf4605afcfd6bf7a) )
11231 
11232 	ROM_REGION( 0x300000, "gfx3", 0 )   /* Layer 2 */
11233 	ROM_LOAD24_BYTE     ( "bpgh-011.u67", 0x000000, 0x100000, CRC(49aff270) SHA1(de25209e520cd8747042078440ee20866097d0cb) )
11234 	ROM_LOAD24_WORD_SWAP( "bpgh-012.u68", 0x000001, 0x200000, CRC(edfda595) SHA1(5942181430d59c0c303cd1cbe753910c26c109a2) )
11235 
11236 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11237 	ROM_LOAD( "bpgh-013.u70",  0x080000, 0x080000, CRC(0fa5d503) SHA1(fd7a80cd25c23e737cc2c3d11de2291e22313b58) )   // swapped halves
11238 	ROM_CONTINUE(              0x000000, 0x080000  )
11239 ROM_END
11240 
11241 /* Chinese factory board, possibly bootleg but appears to come from the
11242    same factory as normal boards same as daiohc.  Modified layout allowing
11243    split ROMs */
11244 ROM_START( gundharac )
11245 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
11246 	ROM_LOAD16_BYTE( "4.u3",   0x000000, 0x080000, CRC(14e9970a) SHA1(31964bd290cc94c40684adf3a5d129b1c3addc3b) )
11247 	ROM_LOAD16_BYTE( "2.u4",   0x000001, 0x080000, CRC(96dfc658) SHA1(f570bc49758535eb00d93ecce9f75832f97a0d8d) )
11248 	ROM_LOAD16_BYTE( "3.u103", 0x100000, 0x080000, CRC(312f58e2) SHA1(a74819d2f84a00c233489893f12c9ab1a98459cf) )
11249 	ROM_LOAD16_BYTE( "1.u102", 0x100001, 0x080000, CRC(8d23a23c) SHA1(9e9a6488db424c81a97edcb7115cc070fe35c077) )
11250 
11251 	ROM_REGION( 0x800000, "gfx1", 0 )   /* Sprites */
11252 	ROM_LOAD16_BYTE( "19.u140",   0x000000, 0x080000, CRC(32d92c28) SHA1(7ba67f715f094aacf2dc2399809e4dfc7e4ca241) )
11253 	ROM_LOAD16_BYTE( "23.u142",   0x000001, 0x080000, CRC(ff44db9b) SHA1(76ecd3ce3b6b33f3ae0b0454d58cf37d545dd72c) )
11254 	ROM_LOAD16_BYTE( "21.u141",   0x100000, 0x080000, CRC(1901dc08) SHA1(b19428a7510d6e28a39bdf6ecc9732e3c2d19214) )
11255 	ROM_LOAD16_BYTE( "25.u143",   0x100001, 0x080000, CRC(877289a2) SHA1(7482320e319d7b641fabba5aeeaa1237b693a219) )
11256 	ROM_LOAD16_BYTE( "18.u140-b", 0x200000, 0x080000, CRC(4f023fb0) SHA1(815765c9783e44762bf57a3fbfad4385c316343a) )
11257 	ROM_LOAD16_BYTE( "22.u142-b", 0x200001, 0x080000, CRC(6f3fe7e7) SHA1(71bc347c06678f4ae7850799da6346c6447bf3c0) )
11258 	ROM_LOAD16_BYTE( "20.u141-b", 0x300000, 0x080000, CRC(7f1932e0) SHA1(13262a7322ad29cf7c85461204a3518e900c6145) )
11259 	ROM_LOAD16_BYTE( "24.u143-b", 0x300001, 0x080000, CRC(066a2e2b) SHA1(186729918a89535484ab86dd58caf20ccce81501) )
11260 	ROM_LOAD16_BYTE( "9.u144",    0x400000, 0x080000, CRC(6b4a531f) SHA1(701d6b2d87a742c8a2ab36331bd843dcd3309eae) )
11261 	ROM_LOAD16_BYTE( "13.u146",   0x400001, 0x080000, CRC(45be3df4) SHA1(36667bf5e4b80d17a9d7b6ce4df7498f94681c46) )
11262 	ROM_LOAD16_BYTE( "11.u145",   0x500000, 0x080000, CRC(f5210aa5) SHA1(4834d905f699dbec1cdacea6b320271c291aa2a7) )
11263 	ROM_LOAD16_BYTE( "15.u147",   0x500001, 0x080000, CRC(17003119) SHA1(a2edd65c98bc654b541dad3e3783d90931c97597) )
11264 	ROM_LOAD16_BYTE( "8.u144-b",  0x600000, 0x080000, CRC(ad9d9338) SHA1(33d6c881a20e2150017cc26f929473291e561718) )
11265 	ROM_LOAD16_BYTE( "12.u146-b", 0x600001, 0x080000, CRC(0fd4c062) SHA1(7f418d43d9ba884c504f6fe3c04b11724412ac6b) )
11266 	ROM_LOAD16_BYTE( "10.u145-b", 0x700000, 0x080000, CRC(7c5d12b9) SHA1(6ee45c4da6994540852153752e2818a8ea8ecf1a) )
11267 	ROM_LOAD16_BYTE( "14.u147-b", 0x700001, 0x080000, CRC(5a8af50f) SHA1(3b7937ba720fcbbc5e29c1b95a97c29e8ff5490a) )
11268 
11269 	ROM_REGION( 0x180000, "gfx2", 0 )   /* Layer 1 */
11270 	ROM_LOAD24_BYTE( "5.u148", 0x000002, 0x080000, CRC(0c740f9b) SHA1(f6d135c3318ff0d50d40921aa108b1b332c1a086) )
11271 	ROM_LOAD24_BYTE( "6.u150", 0x000001, 0x080000, CRC(ba60eb98) SHA1(7204269816332bbb3401d9f20a513372ffe78500) )
11272 	ROM_LOAD24_BYTE( "7.u154", 0x000000, 0x080000, CRC(b768e666) SHA1(473fa52c16c0a9f321e6429947a3e0fc1ef22f7e) )
11273 
11274 	ROM_REGION( 0x300000, "gfx3", 0 )   /* Layer 2 */
11275 	ROM_LOAD24_BYTE( "26.u164", 0x000002, 0x080000, CRC(be3ccaba) SHA1(98f8b83cbed00932866375d21f86ee5c9bddb2a6) )
11276 	ROM_LOAD24_BYTE( "28.u166", 0x000001, 0x080000, CRC(8a650a4e) SHA1(1f6eda27b39ad052e3d9a8a72cb0a072e7be4487) )
11277 	ROM_LOAD24_BYTE( "16.u152", 0x000000, 0x080000, CRC(5ccc500b) SHA1(d3a2a5658cac8d788e0a1189c184309b8394b10a) )
11278 	ROM_LOAD24_BYTE( "27.u165", 0x180002, 0x080000, CRC(47994ff0) SHA1(25211a9af01f77788578bb524619d95b5b86e241) )
11279 	ROM_LOAD24_BYTE( "29.u167", 0x180001, 0x080000, CRC(453c3d3f) SHA1(151528b6b1e7f8c059d67dbaca61e7c382e9ce04) )
11280 	ROM_LOAD24_BYTE( "17.u153", 0x180000, 0x080000, CRC(5586d086) SHA1(e43d5e8834701f40389400f68a99353e67598f6d) )
11281 
11282 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11283 	ROM_LOAD( "30.u69", 0x000000, 0x080000, CRC(3111a98a) SHA1(75e17a0113060a10551b2b8c17b19890eb7aa0a6) )
11284 	ROM_LOAD( "31.u70", 0x080000, 0x080000, CRC(30cb2524) SHA1(85deb83262bbe481404705e163e5eb9362985b01) )
11285 ROM_END
11286 
11287 ROM_START( sokonuke )
11288 	ROM_REGION( 0x100000, "maincpu", 0 )        /* 68000 Code */
11289 	ROM_LOAD16_BYTE( "001-001.bin",  0x000000, 0x080000, CRC(9d0aa3ca) SHA1(f641c46f2c6e7f82bb9184daac62938afb607c09) )
11290 	ROM_LOAD16_BYTE( "001-002.bin",  0x000001, 0x080000, CRC(96f2ef5f) SHA1(264e82e192089230f208edf609dee575bf5c6513) )
11291 
11292 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
11293 	ROM_LOAD( "001-003.bin", 0x000000, 0x200000, CRC(ab9ba897) SHA1(650c1eadf82f6e2b4c598495c867118277565411) )
11294 
11295 	ROM_REGION( 0x180000, "gfx2", 0 )   /* Layer 1 */
11296 	ROM_LOAD24_WORD_SWAP( "001-004.bin", 0x000001, 0x100000, CRC(34ca3540) SHA1(a9b6b395037870033a2a422453e304fd4666b99e) )
11297 	ROM_LOAD24_BYTE     ( "001-005.bin", 0x000000, 0x080000, CRC(2b95d68d) SHA1(2fb480c31a6a7e180a68bd774b5f86348bea0761) )
11298 
11299 	ROM_REGION( 0x100, "gfx3", ROMREGION_ERASE )    /* Layer 2 */
11300 	/* Unused */
11301 
11302 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11303 	ROM_LOAD( "001-006.bin",   0x080000, 0x080000, CRC(ecfac767) SHA1(3d05bdb2c2a8c7eb5fa77b0c4482f98d3947c6d6) )
11304 	ROM_CONTINUE(              0x000000, 0x080000  )
11305 ROM_END
11306 
11307 ROM_START( zombraid )
11308 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
11309 	ROM_LOAD16_BYTE( "fy001003.3",   0x000000, 0x080000, CRC(0b34b8f7) SHA1(8c6d7d208ece08695169f2e06806e7e55c595eb2) )
11310 	ROM_LOAD16_BYTE( "fy001004.4",   0x000001, 0x080000, CRC(71bfeb1a) SHA1(75747b0c6e655624a5dc2e4fa8f16a6a51bd8769) )
11311 	ROM_LOAD16_BYTE( "fy001002.103", 0x100000, 0x080000, CRC(313fd68f) SHA1(792733acc72b4719b3f7f79b57fb874c71e8abfb) )
11312 	ROM_LOAD16_BYTE( "fy001001.102", 0x100001, 0x080000, CRC(a0f61f13) SHA1(ba14c5ae0d0b3f217c130eeebd987dfde4c64c0d) )
11313 
11314 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
11315 	ROM_LOAD( "fy001006.200", 0x000000, 0x200000, CRC(e9ae99f7) SHA1(7ffd62e5db4a48d362c90e8fca991c5b63f22bd8) )
11316 
11317 	ROM_REGION( 0x300000, "gfx2", 0 )   /* Layer 1 */
11318 	ROM_LOAD24_WORD_SWAP( "fy001008.66", 0x000001, 0x200000, CRC(73d7b0e1) SHA1(aa332b563005edb1a6e20fbceaba68b56761a634) )
11319 	ROM_LOAD24_BYTE     ( "fy001007.65", 0x000000, 0x100000, CRC(b2fc2c81) SHA1(2c529beccea353c3e90563215ddf3d8931e0fb83) )
11320 
11321 	ROM_REGION( 0x300000, "gfx3", 0 )   /* Layer 2 */
11322 	ROM_LOAD24_WORD_SWAP( "fy001010.68", 0x000001, 0x200000, CRC(8b40ed7a) SHA1(05fcd7947a8419cab5ed2305fba9a671911e4850) )
11323 	ROM_LOAD24_BYTE     ( "fy001009.67", 0x000000, 0x100000, CRC(6bcca641) SHA1(49c9106e6f23e25e5b5917af11fc48d34457c61a) )
11324 
11325 	ROM_REGION( 0x400000, "x1snd", 0 )  /* Samples */
11326 	ROM_LOAD( "fy001012.b",  0x000000, 0x200000, CRC(fd30e102) SHA1(ae02f94f69aa301b0c37921ca1117e3ad20467b5) )
11327 	ROM_LOAD( "fy001011.a",  0x200000, 0x200000, CRC(e3c431de) SHA1(1030adacbbfabc00231417e09f3de40e3052f65c) )
11328 
11329 	ROM_REGION(0x10000, "nvram", 0)
11330 	ROM_LOAD( "nvram.bin",  0x0000, 0x10000, CRC(1a4b2ee8) SHA1(9a14fb2089fef9d13e0a5fe0a83eb7bae51fe1ae) )
11331 ROM_END
11332 
11333 /* Notes about the Proto/Test roms:
11334 
11335 Each rom was labeled with PCB location, use, SUM16 and final date EX:
11336 
11337 LOGO  Zombie Raid
11338 
11339 U3 Master USA
11340 PRG E_L DD28 9/28/95
11341 
11342 
11343 The "LOGO" above means that the actual Sammy logo was printed there.
11344 
11345 These look like final prototype or test roms before production and combining the data into larger MASK roms.
11346 */
11347 
11348 
11349 ROM_START( zombraidp ) /* Prototype or test board version.  Data matches released MASK rom version */
11350 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
11351 	ROM_LOAD16_BYTE( "u3_master_usa_prg_e_l_dd28.u3",     0x000000, 0x080000, CRC(0b34b8f7) SHA1(8c6d7d208ece08695169f2e06806e7e55c595eb2) ) /* These 4 roms dated 9/28/95 */
11352 	ROM_LOAD16_BYTE( "u4_master_usa_prg_o_l_5e2b.u4",     0x000001, 0x080000, CRC(71bfeb1a) SHA1(75747b0c6e655624a5dc2e4fa8f16a6a51bd8769) )
11353 	ROM_LOAD16_BYTE( "u103_master_usa_prg_e_h_789e.u103", 0x100000, 0x080000, CRC(313fd68f) SHA1(792733acc72b4719b3f7f79b57fb874c71e8abfb) )
11354 	ROM_LOAD16_BYTE( "u102_master_usa_prg_o_h_1f25.u102", 0x100001, 0x080000, CRC(a0f61f13) SHA1(ba14c5ae0d0b3f217c130eeebd987dfde4c64c0d) )
11355 
11356 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
11357 	ROM_LOAD16_BYTE( "u142_master_obj_00_1bb3.u142", 0x000001, 0x040000, CRC(ed6c8541) SHA1(a119ad751184d575e135da0598cf1172025ddd48) ) /* These 6 roms dated 7/17/95 */
11358 	ROM_LOAD16_BYTE(             "obj_01",           0x000000, 0x040000, CRC(a423620e) SHA1(8d9351eddeecb444a1ab2f99d0da1d74f01bad88) )
11359 	ROM_LOAD16_BYTE( "u143_master_obj_04_b5aa.u143", 0x080001, 0x040000, CRC(1242670d) SHA1(e6189a1974981cedbd16f5ea0295ff73cfd6a666) )
11360 	ROM_LOAD16_BYTE(             "obj_05",           0x080000, 0x040000, CRC(57fe3e97) SHA1(2f9e79d6984099495c0c025b11bea7c9f72f9ef4) )
11361 	ROM_LOAD16_BYTE( "u146_master_obj_02_6cc6.u146", 0x100001, 0x040000, CRC(7562ee1b) SHA1(bffb1a172e5259687dc0bc84916127419825c1b7) )
11362 	ROM_LOAD16_BYTE( "u144_master_obj_03_1cb5.u144", 0x100000, 0x040000, CRC(a83040f1) SHA1(c7efacaa706e7f07c95f23509c738665775db2d2) )
11363 	ROM_LOAD16_BYTE( "u147_master_obj_06_c3d8.u147", 0x180001, 0x040000, CRC(a32c3da8) SHA1(fd63c0fb13fb546732351dc2ee5fa33c1c275274) )
11364 	ROM_LOAD16_BYTE( "u145_master_obj_07_8ad4.u145", 0x180000, 0x040000, CRC(8071f0b6) SHA1(e596897e52beaf686e95ad643a36beefe311d85c) )
11365 
11366 	ROM_REGION( 0x300000, "gfx2", ROMREGION_ERASE00 )   /* Layer 1 */
11367 	ROM_LOAD24_BYTE( "u148_master_scn_1-0_3ef8.u148", 0x000000, 0x080000, CRC(7d722f2a) SHA1(6bcd18fe65a4a94a718f75c3813cea014c80b35a) ) /* These 6 roms dated 7/17/95 */
11368 	ROM_LOAD24_BYTE( "u150_master_scn_1-1_89a6.u150", 0x000001, 0x080000, CRC(3c62a8af) SHA1(38d9a32817a928586fe027b4c974f7dde585e5b7) )
11369 	ROM_LOAD24_BYTE( "u154_master_scn_1-2_0f4b.u154", 0x000000, 0x080000, CRC(0a1d647c) SHA1(66dede165438001a34317d5ab29a9553d25530a2) )
11370 	ROM_LOAD24_BYTE( "u149_master_scn_1-3_71bb.u149", 0x180000, 0x080000, CRC(70d6af7f) SHA1(1c922882a90efe83eacf6e25c4fb0c0a9e29a22c) )
11371 	ROM_LOAD24_BYTE( "u151_master_scn_1-4_872e.u151", 0x180001, 0x080000, CRC(83ef4d5f) SHA1(b7e804c3a702caaee320daf8604d0af6f5874946) )
11372 	ROM_LOAD24_BYTE( "u155_master_scn_1-5_daef.u155", 0x180000, 0x080000, CRC(2508f67f) SHA1(43a9d56c49187891007457dd23d3ac696f8ce0fa) )
11373 
11374 	ROM_REGION( 0x300000, "gfx3", ROMREGION_ERASE00 )   /* Layer 2 */
11375 	ROM_LOAD24_BYTE( "u164_master_scn_2-0_e79c.u164", 0x000002, 0x080000, CRC(f8c89062) SHA1(08fd32b30923025b3769e56a8601b2ea1f85ebd1) ) /* These 6 roms dated 7/17/95 */
11376 	ROM_LOAD24_BYTE( "u166_master_scn_2-1_0b75.u166", 0x000001, 0x080000, CRC(4d7a72d5) SHA1(83b7ca4ea4c83fdab5be3c17d816dfd4033fb89c) )
11377 	ROM_LOAD24_BYTE( "u152_master_scn_2-2_c00e.u152", 0x000000, 0x080000, CRC(0870ad58) SHA1(20e076fa665c24db0e316598a0a5d7fae9fc2f2a) )
11378 	ROM_LOAD24_BYTE( "u165_master_scn_2-3_be68.u165", 0x180002, 0x080000, CRC(8aaaef08) SHA1(12b9c8c170a4acf200e3fba45407a3e38f787926) )
11379 	ROM_LOAD24_BYTE( "u167_master_scn_2-4_c515.u167", 0x180001, 0x080000, CRC(d22ff5c1) SHA1(c488a69c9a241e1ca2119264bf879140d16fe69f) )
11380 	ROM_LOAD24_BYTE( "u153_master_scn_2-5_e1da.u153", 0x180000, 0x080000, CRC(814ac66a) SHA1(1fd13a0bf73b9bdede82a865789413308d989c3a) )
11381 
11382 	ROM_REGION( 0x400000, "x1snd", 0 )  /* Samples */
11383 	ROM_LOAD( "u156_master_snd_0_f630.u156", 0x000000, 0x080000, CRC(bfc467bd) SHA1(a234cb8e0259a21b7bad40a72d99bf379a4b4046) ) /* These 8 roms dated 7/17/95 */
11384 	ROM_LOAD( "u157_master_snd_1_c20a.u157", 0x080000, 0x080000, CRC(b449a8ba) SHA1(3248a767132f60dec848fdc21a76481caa428cd2) )
11385 	ROM_LOAD( "u158_master_snd_2_5c69.u158", 0x100000, 0x080000, CRC(ed6de791) SHA1(416c39c03a9ac2214702eaea7716e9aa74c8c228) )
11386 	ROM_LOAD( "u159_master_snd_3_0727.u159", 0x180000, 0x080000, CRC(794cec21) SHA1(5c44286ea14c0e6a7a4588e523015f83d64dd1a7) )
11387 	ROM_LOAD( "u160_master_snd_4_5a70.u160", 0x200000, 0x080000, CRC(e81ace66) SHA1(f4984e855c222e1cf3287538f536f7b0275f03d5) )
11388 	ROM_LOAD( "u161_master_snd_5_599c.u161", 0x280000, 0x080000, CRC(1793dd13) SHA1(1b5b3c50e6df399c3e334c08be5313eef7d7ed95) )
11389 	ROM_LOAD( "u162_master_snd_6_6d2e.u162", 0x300000, 0x080000, CRC(2ece241f) SHA1(1ebe4dd788799ec10c2eddf02f9bdaee8457993b) )
11390 	ROM_LOAD( "u163_master_snd_7_c733.u163", 0x380000, 0x080000, CRC(d90f78b2) SHA1(e847eba6a4d6c1a3044041a9d32b6b534fb45307) )
11391 
11392 	ROM_REGION(0x10000, "nvram", 0)
11393 	ROM_LOAD( "nvram.bin",  0x0000, 0x10000, CRC(1a4b2ee8) SHA1(9a14fb2089fef9d13e0a5fe0a83eb7bae51fe1ae) )
11394 ROM_END
11395 
11396 ROM_START( zombraidpj ) /* Prototype or test board version.  Data matches released MASK rom version */
11397 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
11398 	ROM_LOAD16_BYTE( "u3_master_usa_prg_e_l_dd28.u3",     0x000000, 0x080000, CRC(0b34b8f7) SHA1(8c6d7d208ece08695169f2e06806e7e55c595eb2) ) /* These 4 roms dated 9/28/95 */
11399 	ROM_LOAD16_BYTE( "u4_master_jpn_prg_o_l_5e2c.u4",     0x000001, 0x080000, CRC(3cb6bdf0) SHA1(4c1babeb4d7dbf7d26f8e34b552c0338432abd57) )
11400 	ROM_LOAD16_BYTE( "u103_master_usa_prg_e_h_789e.u103", 0x100000, 0x080000, CRC(313fd68f) SHA1(792733acc72b4719b3f7f79b57fb874c71e8abfb) )
11401 	ROM_LOAD16_BYTE( "u102_master_usa_prg_o_h_1f25.u102", 0x100001, 0x080000, CRC(a0f61f13) SHA1(ba14c5ae0d0b3f217c130eeebd987dfde4c64c0d) )
11402 
11403 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
11404 	ROM_LOAD16_BYTE( "u142_master_obj_00_1bb3.u142", 0x000001, 0x040000, CRC(ed6c8541) SHA1(a119ad751184d575e135da0598cf1172025ddd48) ) /* These 6 roms dated 7/17/95 */
11405 	ROM_LOAD16_BYTE(             "obj_01",           0x000000, 0x040000, CRC(a423620e) SHA1(8d9351eddeecb444a1ab2f99d0da1d74f01bad88) )
11406 	ROM_LOAD16_BYTE( "u143_master_obj_04_b5aa.u143", 0x080001, 0x040000, CRC(1242670d) SHA1(e6189a1974981cedbd16f5ea0295ff73cfd6a666) )
11407 	ROM_LOAD16_BYTE(             "obj_05",           0x080000, 0x040000, CRC(57fe3e97) SHA1(2f9e79d6984099495c0c025b11bea7c9f72f9ef4) )
11408 	ROM_LOAD16_BYTE( "u146_master_obj_02_6cc6.u146", 0x100001, 0x040000, CRC(7562ee1b) SHA1(bffb1a172e5259687dc0bc84916127419825c1b7) )
11409 	ROM_LOAD16_BYTE( "u144_master_obj_03_1cb5.u144", 0x100000, 0x040000, CRC(a83040f1) SHA1(c7efacaa706e7f07c95f23509c738665775db2d2) )
11410 	ROM_LOAD16_BYTE( "u147_master_obj_06_c3d8.u147", 0x180001, 0x040000, CRC(a32c3da8) SHA1(fd63c0fb13fb546732351dc2ee5fa33c1c275274) )
11411 	ROM_LOAD16_BYTE( "u145_master_obj_07_8ad4.u145", 0x180000, 0x040000, CRC(8071f0b6) SHA1(e596897e52beaf686e95ad643a36beefe311d85c) )
11412 
11413 	ROM_REGION( 0x300000, "gfx2", ROMREGION_ERASE00 )   /* Layer 1 */
11414 	ROM_LOAD24_BYTE( "u148_master_scn_1-0_3ef8.u148", 0x000002, 0x080000, CRC(7d722f2a) SHA1(6bcd18fe65a4a94a718f75c3813cea014c80b35a) ) /* These 6 roms dated 7/17/95 */
11415 	ROM_LOAD24_BYTE( "u150_master_scn_1-1_89a6.u150", 0x000001, 0x080000, CRC(3c62a8af) SHA1(38d9a32817a928586fe027b4c974f7dde585e5b7) )
11416 	ROM_LOAD24_BYTE( "u154_master_scn_1-2_0f4b.u154", 0x000000, 0x080000, CRC(0a1d647c) SHA1(66dede165438001a34317d5ab29a9553d25530a2) )
11417 	ROM_LOAD24_BYTE( "u149_master_scn_1-3_71bb.u149", 0x180002, 0x080000, CRC(70d6af7f) SHA1(1c922882a90efe83eacf6e25c4fb0c0a9e29a22c) )
11418 	ROM_LOAD24_BYTE( "u151_master_scn_1-4_872e.u151", 0x180001, 0x080000, CRC(83ef4d5f) SHA1(b7e804c3a702caaee320daf8604d0af6f5874946) )
11419 	ROM_LOAD24_BYTE( "u155_master_scn_1-5_daef.u155", 0x180000, 0x080000, CRC(2508f67f) SHA1(43a9d56c49187891007457dd23d3ac696f8ce0fa) )
11420 
11421 	ROM_REGION( 0x300000, "gfx3", ROMREGION_ERASE00 )   /* Layer 2 */
11422 	ROM_LOAD24_BYTE( "u164_master_scn_2-0_e79c.u164", 0x000002, 0x080000, CRC(f8c89062) SHA1(08fd32b30923025b3769e56a8601b2ea1f85ebd1) ) /* These 6 roms dated 7/17/95 */
11423 	ROM_LOAD24_BYTE( "u166_master_scn_2-1_0b75.u166", 0x000001, 0x080000, CRC(4d7a72d5) SHA1(83b7ca4ea4c83fdab5be3c17d816dfd4033fb89c) )
11424 	ROM_LOAD24_BYTE( "u152_master_scn_2-2_c00e.u152", 0x000000, 0x080000, CRC(0870ad58) SHA1(20e076fa665c24db0e316598a0a5d7fae9fc2f2a) )
11425 	ROM_LOAD24_BYTE( "u165_master_scn_2-3_be68.u165", 0x180002, 0x080000, CRC(8aaaef08) SHA1(12b9c8c170a4acf200e3fba45407a3e38f787926) )
11426 	ROM_LOAD24_BYTE( "u167_master_scn_2-4_c515.u167", 0x180001, 0x080000, CRC(d22ff5c1) SHA1(c488a69c9a241e1ca2119264bf879140d16fe69f) )
11427 	ROM_LOAD24_BYTE( "u153_master_scn_2-5_e1da.u153", 0x180000, 0x080000, CRC(814ac66a) SHA1(1fd13a0bf73b9bdede82a865789413308d989c3a) )
11428 
11429 	ROM_REGION( 0x400000, "x1snd", 0 )  /* Samples */
11430 	ROM_LOAD( "u156_master_snd_0_f630.u156", 0x000000, 0x080000, CRC(bfc467bd) SHA1(a234cb8e0259a21b7bad40a72d99bf379a4b4046) ) /* These 8 roms dated 7/17/95 */
11431 	ROM_LOAD( "u157_master_snd_1_c20a.u157", 0x080000, 0x080000, CRC(b449a8ba) SHA1(3248a767132f60dec848fdc21a76481caa428cd2) )
11432 	ROM_LOAD( "u158_master_snd_2_5c69.u158", 0x100000, 0x080000, CRC(ed6de791) SHA1(416c39c03a9ac2214702eaea7716e9aa74c8c228) )
11433 	ROM_LOAD( "u159_master_snd_3_0727.u159", 0x180000, 0x080000, CRC(794cec21) SHA1(5c44286ea14c0e6a7a4588e523015f83d64dd1a7) )
11434 	ROM_LOAD( "u160_master_snd_4_5a70.u160", 0x200000, 0x080000, CRC(e81ace66) SHA1(f4984e855c222e1cf3287538f536f7b0275f03d5) )
11435 	ROM_LOAD( "u161_master_snd_5_599c.u161", 0x280000, 0x080000, CRC(1793dd13) SHA1(1b5b3c50e6df399c3e334c08be5313eef7d7ed95) )
11436 	ROM_LOAD( "u162_master_snd_6_6d2e.u162", 0x300000, 0x080000, CRC(2ece241f) SHA1(1ebe4dd788799ec10c2eddf02f9bdaee8457993b) )
11437 	ROM_LOAD( "u163_master_snd_7_c733.u163", 0x380000, 0x080000, CRC(d90f78b2) SHA1(e847eba6a4d6c1a3044041a9d32b6b534fb45307) )
11438 
11439 	ROM_REGION(0x10000, "nvram", 0)
11440 	ROM_LOAD( "nvram.bin",  0x0000, 0x10000, CRC(1a4b2ee8) SHA1(9a14fb2089fef9d13e0a5fe0a83eb7bae51fe1ae) )
11441 ROM_END
11442 
11443 ROM_START( madshark )
11444 	ROM_REGION( 0x100000, "maincpu", 0 )        /* 68000 Code */
11445 	ROM_LOAD16_BYTE( "fq001002.201",  0x000000, 0x080000, CRC(4286a811) SHA1(c8d4a28008548fe7d1d70758462205862142c56b) )
11446 	ROM_LOAD16_BYTE( "fq001001.200",  0x000001, 0x080000, CRC(38bfa0ad) SHA1(59398ef69caa01f51cdfb20db23af494db658e5e) )
11447 
11448 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
11449 	ROM_LOAD( "fq001004.202", 0x100000, 0x100000, CRC(e56a1b5e) SHA1(f0dd34122fd7db15cc56714b72b60d07ccb59222) )
11450 	ROM_CONTINUE(             0x000000, 0x100000 )
11451 
11452 	ROM_REGION( 0x300000, "user1", 0 )  /* Layers 1+2 */
11453 	ROM_LOAD24_WORD_SWAP( "fq001006.152", 0x000001, 0x200000, CRC(3bc5e8e4) SHA1(74cdf1bb2e58bef29c6f4371ff40f64472bff3ce) )
11454 	ROM_LOAD24_BYTE     ( "fq001005.205", 0x000000, 0x100000, CRC(5f6c6d4a) SHA1(eed5661738282a14ce89917335fd1b695eb7351e) )
11455 
11456 	ROM_REGION( 0x180000, "gfx2", 0 )   /* Layer 1 */
11457 	ROM_COPY( "user1", 0x000000, 0x000000, 0x180000 )
11458 
11459 	ROM_REGION( 0x180000, "gfx3", 0 )   /* Layer 2 */
11460 	ROM_COPY( "user1", 0x180000, 0x000000, 0x180000 )
11461 
11462 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11463 	ROM_LOAD( "fq001007.26", 0x000000, 0x100000, CRC(e4b33c13) SHA1(c4f9532de7a09c80f5a74c3a386e99a0f546846f) )
11464 ROM_END
11465 
11466 ROM_START( magspeed )
11467 	ROM_REGION( 0x100000, "maincpu", 0 )    /* 68000 Code */
11468 	ROM_LOAD16_BYTE( "fu001002.201", 0x00000, 0x40000, CRC(bdeb3fcc) SHA1(3a69eae49967fdad1f9bda6a09bffbd824254c92) )
11469 	ROM_LOAD16_BYTE( "fu001001.200", 0x00001, 0x40000, CRC(9b873d46) SHA1(958502dea9f271249da715cd6b1ea5045369cbb9) )
11470 
11471 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
11472 	ROM_LOAD( "fu001004.21", 0x000000, 0x100000, CRC(7582c5a8) SHA1(3754e3bbac8e4a50f5ca28390357f00b7579182d) )
11473 	ROM_LOAD( "fu001005.22", 0x100000, 0x100000, CRC(fd4b1ff6) SHA1(188b74cdf120e9d6e0fe15b60997383929dfa5cd) )
11474 
11475 	ROM_REGION( 0x100000, "user1", 0 )  /* Layers 1+2 */
11476 	ROM_LOAD16_WORD_SWAP( "fu001006.152", 0x000000, 0x100000, CRC(70855139) SHA1(24d635aceb823b0569169c8ecced13ac82c17d6a) )
11477 
11478 	ROM_REGION( 0x80000, "gfx2", 0 )    /* Layer 1 */
11479 	ROM_COPY( "user1", 0x000000, 0x00000, 0x80000 )
11480 
11481 	ROM_REGION( 0x80000, "gfx3", 0 )    /* Layer 2 */
11482 	ROM_COPY( "user1", 0x80000, 0x00000, 0x80000 )
11483 
11484 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11485 	ROM_LOAD( "fu001007.26", 0x000000, 0x100000, CRC(173463c2) SHA1(f7afc200662f72b3da149e0d17517c89ad66ef67) )
11486 ROM_END
11487 
11488 ROM_START( utoukond )
11489 	ROM_REGION( 0x100000, "maincpu", 0 )        /* 68000 Code */
11490 	ROM_LOAD16_BYTE( "93uta010.3",  0x000000, 0x080000, CRC(c486ef5e) SHA1(36e4ef4805d543216269f1161028d8a436f72284) )
11491 	ROM_LOAD16_BYTE( "93uta011.4",  0x000001, 0x080000, CRC(978978f7) SHA1(a7fd3a4ce3a7c6c9d9bdd60df29b4f427abf4f92) )
11492 
11493 	ROM_REGION( 0x10000, "audiocpu", 0 )        /* Z80 Code */
11494 	ROM_LOAD( "93uta009.112", 0x0000, 0x10000, CRC(67f18483) SHA1(d9af58dec09c317ccab65553d53d82c8cce2bfb9) )
11495 
11496 	ROM_REGION( 0x400000, "gfx1", ROMREGION_INVERT )    /* Sprites */
11497 	ROM_LOAD( "93uta04.64",  0x000000, 0x100000, CRC(9cba0538) SHA1(83278918b6ad160d3e53c178b3cad252e7b0edfb) )
11498 	ROM_LOAD( "93uta02.201", 0x100000, 0x100000, CRC(884fedfa) SHA1(3710003bd2e55bba03e2720fcab0fe080163222d) )
11499 	ROM_LOAD( "93uta03.63",  0x200000, 0x100000, CRC(818484a5) SHA1(642252abe56e26aa8376db2e25b192b11586d1e4) )
11500 	ROM_LOAD( "93uta01.200", 0x300000, 0x100000, CRC(364de841) SHA1(a025bd57f60eac05c0d7b4fb69b4b4979f357e6b) )
11501 
11502 	ROM_REGION( 0x100000, "gfx2", 0 )   /* Layer 1 */
11503 	ROM_LOAD16_WORD_SWAP( "93uta05.66",  0x000000, 0x100000, CRC(5e640bfb) SHA1(37f30ae6ab9d7860da6ca6a343fa9adf4b3d355c) )
11504 
11505 	ROM_REGION( 0x200000, "gfx3", 0 )   /* Layer 2 */
11506 	ROM_LOAD16_WORD_SWAP( "93uta07.68",  0x000000, 0x100000, CRC(67bdd036) SHA1(527b6a67e7a62263bee738dc82d6ff289ab54853) )
11507 	ROM_LOAD16_WORD_SWAP( "93uta06.67",  0x100000, 0x100000, CRC(294c26e4) SHA1(459ec7f8c8db4f1e3906d5db240298405bda991c) )
11508 
11509 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11510 	ROM_LOAD( "93uta08.69", 0x000000, 0x100000, CRC(3d50bbcd) SHA1(e9b78d08466e1f9b42f11999bb53b6deceb81a12) )
11511 ROM_END
11512 
11513 ROM_START( neobattl )   // 1CC74: "SD GUNDAM v0.00. 1992/11/04 10:04:33"
11514 	ROM_REGION( 0x100000, "maincpu", 0 )        /* 68000 Code */
11515 	ROM_LOAD16_BYTE( "bp923001.u45", 0x000000, 0x020000, CRC(0d0aeb73) SHA1(5ca631d5d68e53029f379d9877a056997c6c6afa) ) /* Alt label X1-001 which is also a Seta custom chip number */
11516 	ROM_LOAD16_BYTE( "bp923002.u46", 0x000001, 0x020000, CRC(9731fbbc) SHA1(196c913fb67496f9da2943ad1e69edf89cb65fdf) ) /* Alt label X1-002A which is also a Seta custom chip number */
11517 
11518 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
11519 	ROM_LOAD( "bp923-003.u15", 0x00000, 0x80000, CRC(91ca98a1) SHA1(b02b362e3a6118f52d9e1a262ca11aecef887b00) )
11520 	ROM_LOAD( "bp923-004.u9",  0x80000, 0x80000, CRC(15c678e3) SHA1(8c0fa41a1f4e7b4e1c90faaeec7f6c910cc3ad0b) )
11521 
11522 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11523 	ROM_LOAD( "bp923-005.u4", 0x000000, 0x100000, CRC(7c0e37be) SHA1(5d5779de948f986971a82db2a5a4302044c3257a) )
11524 ROM_END
11525 
11526 ROM_START( pairlove )
11527 	ROM_REGION( 0x040000, "maincpu", 0 )        /* 68000 Code */
11528 	ROM_LOAD16_BYTE( "ut2-001-001.1a",  0x000000, 0x010000, CRC(083338b7) SHA1(d775c1618272967713bd3f3164fdfc42dc5c36ca) )
11529 	ROM_LOAD16_BYTE( "ut2-001-002.3a",  0x000001, 0x010000, CRC(39d88aae) SHA1(8498dfb221e9b34a889594fe5ed0431814b733e6) )
11530 
11531 	ROM_REGION( 0x100000, "gfx1", 0 )   /* Sprites */
11532 	ROM_LOAD( "ut2-001-004.5j",  0x000000, 0x080000, CRC(fdc47b26) SHA1(0de51bcf67b909ac9578f0d1b14af8a4c758aacf) )
11533 	ROM_LOAD( "ut2-001-005.5l",  0x080000, 0x080000, CRC(076f94a2) SHA1(94b4b41a497dea1b6db5396bd7cd81ebcb217735) )
11534 
11535 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11536 	ROM_LOAD( "ut2-001-003.12a",  0x000000, 0x080000, CRC(900219a9) SHA1(3260a900df25beba597bf947a9fbb6f7392827d7) )
11537 	ROM_RELOAD(                   0x080000, 0x080000 )
11538 ROM_END
11539 
11540 ROM_START( crazyfgt )
11541 	ROM_REGION( 0x80000, "maincpu", 0 )     /* 68000 Code */
11542 	ROM_LOAD16_BYTE( "rom.u3", 0x00000, 0x40000, CRC(bf333e75) SHA1(be124558ca49963cc56d3255c546587558b61926) )
11543 	ROM_LOAD16_BYTE( "rom.u4", 0x00001, 0x40000, CRC(505e9d47) SHA1(3797d396a24e46b891de4c40aafe960d1cf5f161) )
11544 
11545 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
11546 	ROM_LOAD16_BYTE( "rom.u225",  0x000000, 0x80000, CRC(451b4419) SHA1(ab32b3c452b566ddfc64c0a80a257c3baadd8f41) )
11547 	ROM_LOAD16_BYTE( "rom.u226",  0x000001, 0x80000, CRC(ef210e34) SHA1(99241ffcbc8af889c8ab6f0bc67eedef27d455f0) )
11548 	ROM_LOAD16_BYTE( "rom.u227",  0x100000, 0x80000, CRC(7905b5f2) SHA1(633f86bf2be620afbe8012ade5d1e59c359a25d4) )
11549 	ROM_LOAD16_BYTE( "rom.u228",  0x100001, 0x80000, CRC(7181618e) SHA1(57c5aced95b0a11a43dc9bd532290f067113e65a) )
11550 
11551 	ROM_REGION( 0xc0000, "gfx2", 0 )    /* Layer 1 */
11552 	ROM_LOAD24_BYTE     ( "rom.u67",  0x000000, 0x40000, CRC(ec8c6831) SHA1(e0ef1c2e539c1780fc5816ec950d33cb2a69d55e) )
11553 	ROM_LOAD24_WORD_SWAP( "rom.u68",  0x000001, 0x80000, CRC(2124312e) SHA1(1c6053c87a975bfdf910e75bd3e38d0898806ea0) )
11554 
11555 	ROM_REGION( 0xc0000, "gfx3", 0 )    /* Layer 2 */
11556 	ROM_LOAD24_BYTE     ( "rom.u65",  0x000000, 0x40000, CRC(58448231) SHA1(711f24831777719f6a7b143f4f1bfd14f5a9ed4c) )
11557 	ROM_LOAD24_WORD_SWAP( "rom.u66",  0x000001, 0x80000, CRC(c6f7735b) SHA1(0e77045f82d0bf659be5dbfe21cfc8f223faeee9) )
11558 
11559 	ROM_REGION( 0x40000, "oki", 0 ) /* OKI samples */
11560 	ROM_LOAD( "rom.u85",  0x00000, 0x40000, CRC(7b95d0bb) SHA1(f16dfd639eed6856e3ab93704caef592a07ba367) )
11561 ROM_END
11562 
11563 ROM_START( jockeyc )
11564 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
11565 	ROM_LOAD16_BYTE(      "ya_007_002.u23", 0x000000, 0x10000, CRC(c499bf4d) SHA1(2417eac2972bbb0f8f0a4a1fd72c9d78537367c7) )
11566 	ROM_LOAD16_BYTE(      "ya_007_003.u33", 0x000001, 0x10000, CRC(e7b0677e) SHA1(90dbd710623ff57b953483240e1006c9bda3fc91) )
11567 	ROM_FILL(                               0x020000, 0xe0000, 0xff )
11568 	ROM_LOAD16_WORD_SWAP( "ya-002-001.u18", 0x100000, 0x80000, CRC(dd108016) SHA1(1554de4cc1a9436a1e62400cd96c9752a2098f99) )
11569 	ROM_FILL(                               0x180000, 0x80000, 0xff )
11570 
11571 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
11572 	ROM_LOAD16_BYTE( "ya-001-007-t77.u27", 0x000000, 0x80000, CRC(2dc7a294) SHA1(97f2aa9939a45aaa94d4aeb2fcd5b7f30204b942) )
11573 	ROM_LOAD16_BYTE( "ya-001-006-t76.u22", 0x000001, 0x80000, CRC(bfae01a5) SHA1(3be83972c3987e9bf722cd6db7770f074587301c) )
11574 	ROM_LOAD16_BYTE( "ya-001-005-t75.u17", 0x100000, 0x80000, CRC(4a6c804b) SHA1(b596b9b0b3b453c26f9c7f976ff4d56eac4fac04) )
11575 	ROM_LOAD16_BYTE( "ya-001-004-t74.u10", 0x100001, 0x80000, CRC(eb74d2e0) SHA1(221ff6cc03ce57a7fcbe418f1c12a293990f8a7d) )
11576 
11577 	ROM_REGION( 0x80000, "gfx2", 0 )    /* Layer 1 */
11578 	ROM_LOAD16_BYTE( "ya-001-008-t59.u35", 0x000000, 0x40000, CRC(4b890f83) SHA1(fde6544898a0691b550f3045803f2e81cfeb5fe9) )
11579 	ROM_LOAD16_BYTE( "ya-001-009-t60.u41", 0x000001, 0x40000, CRC(caa5e3c1) SHA1(63cccc5479040a02872febc8d7f2d46096e138d1) )
11580 
11581 	ROM_REGION( 0x400, "proms", 0 ) /* Colours */
11582 	ROM_LOAD16_BYTE( "ya1-010.prom", 0x000, 0x200, CRC(778094b3) SHA1(270329a0d544dc7a8240d6dab08ccd54ea87ab70) )
11583 	ROM_LOAD16_BYTE( "ya1-011.prom", 0x001, 0x200, CRC(bd4fe2f6) SHA1(83d9f9db3fbfa2d172f5227c397ea4d5a9687015) )
11584 
11585 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11586 	ROM_LOAD( "ya-001-013.u71", 0x00000, 0x80000, CRC(2bccaf47) SHA1(1658643444d575410f11b648e0d7ae6c43fcf1ea) )
11587 	ROM_LOAD( "ya-001-012.u64", 0x80000, 0x80000, CRC(a8015ce6) SHA1(bb0b589856ec82e1fd42be9af89b07ba1d17e595) )
11588 ROM_END
11589 
11590 /***************************************************************************
11591 
11592     International Toote II (v1.24, P387.V01)
11593     (C) 1993 Coinmaster
11594 
11595     Program roms which were in use in Belgium. "International Toote" was the only name allowed in Belgium
11596     those days for horse racing gambling games, so every horse game was named International Toote
11597     (which means nothing even for us).
11598 
11599     I don't really know if Coinmaster owned the rights for this game or not, but they reverse engineered it,
11600     added some protection and made eproms sets for Germany, Belgium etc ... with their name and logo.
11601 
11602     Roms:
11603 
11604     P387_v01.002    new
11605     P387_v01.003    new
11606     YA-001-004.u10  same as YA-011-xxx from: International Toote (Germany, P523.V01)
11607     YA-001-005.u17  ""
11608     YA-001-006.u22  ""
11609     YA-001-007.u27  ""
11610     YA-001-008.u35  ""
11611     YA-001-009.u41  ""
11612     YA-001-012.u64  ""
11613     YA-001-013.u71  ""
11614     YA-002-001.u18  ""
11615     YA-010.prom     ""
11616     YA-011.prom     ""
11617 
11618     This set does not use the "fore" and "back" graphics roms
11619 
11620 ***************************************************************************/
11621 
11622 ROM_START( inttoote2 )
11623 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
11624 	ROM_LOAD16_BYTE( "p387.v01_horse_prog_2.002", 0x000000, 0x10000, CRC(1ced885e) SHA1(7bb444bbfa3c07c0c54378432186ff3b056b6090) )
11625 	ROM_LOAD16_BYTE( "p387.v01_horse_prog_1.003", 0x000001, 0x10000, CRC(e24592af) SHA1(86ab84cb1c5cbb0dcc73e75c05ce446411fab08a) )
11626 	ROM_FILL(                                     0x020000, 0xe0000, 0xff )
11627 	ROM_LOAD16_WORD_SWAP( "ya_002_001.u18",       0x100000, 0x80000, CRC(dd108016) SHA1(1554de4cc1a9436a1e62400cd96c9752a2098f99) )
11628 	ROM_FILL(                                     0x180000, 0x80000, 0xff )
11629 
11630 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
11631 	ROM_LOAD16_BYTE( "ya-001-007-t77.u27", 0x000000, 0x80000, CRC(2dc7a294) SHA1(97f2aa9939a45aaa94d4aeb2fcd5b7f30204b942) )
11632 	ROM_LOAD16_BYTE( "ya-001-006-t76.u22", 0x000001, 0x80000, CRC(bfae01a5) SHA1(3be83972c3987e9bf722cd6db7770f074587301c) )
11633 	ROM_LOAD16_BYTE( "ya-001-005-t75.u17", 0x100000, 0x80000, CRC(4a6c804b) SHA1(b596b9b0b3b453c26f9c7f976ff4d56eac4fac04) )
11634 	ROM_LOAD16_BYTE( "ya-001-004-t74.u10", 0x100001, 0x80000, CRC(eb74d2e0) SHA1(221ff6cc03ce57a7fcbe418f1c12a293990f8a7d) )
11635 
11636 	ROM_REGION( 0x80000, "gfx2", 0 )    /* Layer 1 */
11637 	ROM_LOAD16_BYTE( "ya-001-008-t59.u35", 0x000000, 0x40000, CRC(4b890f83) SHA1(fde6544898a0691b550f3045803f2e81cfeb5fe9) )
11638 	ROM_LOAD16_BYTE( "ya-001-009-t60.u41", 0x000001, 0x40000, CRC(caa5e3c1) SHA1(63cccc5479040a02872febc8d7f2d46096e138d1) )
11639 
11640 	ROM_REGION( 0x400, "proms", 0 ) /* Colours */
11641 	ROM_LOAD16_BYTE( "ya-010.prom", 0x000, 0x200, CRC(778094b3) SHA1(270329a0d544dc7a8240d6dab08ccd54ea87ab70) )
11642 	ROM_LOAD16_BYTE( "ya-011.prom", 0x001, 0x200, CRC(bd4fe2f6) SHA1(83d9f9db3fbfa2d172f5227c397ea4d5a9687015) )
11643 
11644 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11645 	ROM_LOAD( "ya-001-013.u71", 0x00000, 0x80000, CRC(2bccaf47) SHA1(1658643444d575410f11b648e0d7ae6c43fcf1ea) )
11646 	ROM_LOAD( "ya-001-012.u64", 0x80000, 0x80000, CRC(a8015ce6) SHA1(bb0b589856ec82e1fd42be9af89b07ba1d17e595) )
11647 ROM_END
11648 
11649 ROM_START( inttoote )
11650 	ROM_REGION( 0x200000, "maincpu", 0 )        /* 68000 Code */
11651 	ROM_LOAD16_BYTE( "p523.v01_horse_prog_2.002", 0x000000, 0x10000, CRC(6ce6f1ad) SHA1(82e7100721ca5b1a736f6523610b1f1edf225c12) ) // 27/8/98 German
11652 	ROM_LOAD16_BYTE( "p523.v01_horse_prog_1.003", 0x000001, 0x10000, CRC(921fcff5) SHA1(cabc4e9936621132a6fbaa1a925d205c5f04a2ae) ) // ""
11653 	ROM_FILL(                                     0x020000, 0xe0000, 0xff )
11654 	ROM_LOAD16_WORD_SWAP( "ya_002_001.u18",       0x100000, 0x80000, CRC(dd108016) SHA1(1554de4cc1a9436a1e62400cd96c9752a2098f99) )
11655 	ROM_FILL(                                     0x180000, 0x80000, 0xff )
11656 
11657 	ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
11658 	ROM_LOAD16_BYTE( "ya_011_007.u27",             0x000000, 0x80000, CRC(2dc7a294) SHA1(97f2aa9939a45aaa94d4aeb2fcd5b7f30204b942) )
11659 	ROM_LOAD16_BYTE( "ya_011_006.u22",             0x000001, 0x80000, CRC(bfae01a5) SHA1(3be83972c3987e9bf722cd6db7770f074587301c) )
11660 	ROM_LOAD16_BYTE( "p523.v01_horse_fore_3.u133", 0x0e0001, 0x10000, CRC(c38596af) SHA1(d27141e28d8f8352f065c55121412e604c199a9a) )
11661 	ROM_LOAD16_BYTE( "p523.v01_horse_fore_4.u132", 0x0e0000, 0x10000, CRC(64ef345e) SHA1(ef5d9f293ded44a2be91278549f5db8673fc7571) )
11662 	ROM_LOAD16_BYTE( "ya_011_005.u17",             0x100000, 0x80000, CRC(4a6c804b) SHA1(b596b9b0b3b453c26f9c7f976ff4d56eac4fac04) )
11663 	ROM_LOAD16_BYTE( "ya_011_004.u10",             0x100001, 0x80000, CRC(eb74d2e0) SHA1(221ff6cc03ce57a7fcbe418f1c12a293990f8a7d) )
11664 	ROM_LOAD16_BYTE( "p523.v01_horse_fore_2.u134", 0x1e0000, 0x10000, CRC(26fb0339) SHA1(a134ecef00f690c82c8bddf26498b357ccf8d5c3) )
11665 	ROM_LOAD16_BYTE( "p523.v01_horse_fore_1.u135", 0x1e0001, 0x10000, CRC(3a75df30) SHA1(f3b3a7428e3e125921686bc9aacde6b28b1947b5) )
11666 
11667 	ROM_REGION( 0xc0000, "gfx2", 0 )    /* Layer 1 */
11668 	ROM_LOAD16_BYTE( "ya_011_008.u35",             0x000000, 0x40000, CRC(4b890f83) SHA1(fde6544898a0691b550f3045803f2e81cfeb5fe9) )
11669 	ROM_LOAD16_BYTE( "ya_011_009.u41",             0x000001, 0x40000, CRC(caa5e3c1) SHA1(63cccc5479040a02872febc8d7f2d46096e138d1) )
11670 	ROM_LOAD16_BYTE( "p523.v01_horse_back_1.u137", 0x080000, 0x20000, CRC(39b221ea) SHA1(3b3367430733ed36d6a981cd2ec6df731d07c089) )
11671 	ROM_LOAD16_BYTE( "p523.v01_horse_back_2.u136", 0x080001, 0x20000, CRC(9c5e32a0) SHA1(964734a626b5c7b9d7130addc642895df520dcb7) )
11672 
11673 	ROM_REGION( 0x400, "proms", 0 ) /* Colours */
11674 	ROM_LOAD16_BYTE( "ya-010.prom", 0x000, 0x200, CRC(778094b3) SHA1(270329a0d544dc7a8240d6dab08ccd54ea87ab70) )
11675 	ROM_LOAD16_BYTE( "ya-011.prom", 0x001, 0x200, CRC(bd4fe2f6) SHA1(83d9f9db3fbfa2d172f5227c397ea4d5a9687015) )
11676 
11677 	ROM_REGION( 0x100000, "x1snd", 0 )  /* Samples */
11678 	ROM_LOAD( "ya_011_013.u71", 0x00000, 0x80000, CRC(2bccaf47) SHA1(1658643444d575410f11b648e0d7ae6c43fcf1ea) )
11679 	ROM_LOAD( "ya_011_012.u64", 0x80000, 0x80000, CRC(a8015ce6) SHA1(bb0b589856ec82e1fd42be9af89b07ba1d17e595) )
11680 ROM_END
11681 
11682 /***************************************************************************
11683 
11684 The Roulette (Visco)
11685 
11686 PCB P0-047A
11687 
11688 3x8 DSW
11689 SETA X1-004 (826100) (input)
11690 SETA X1-010 (811101) (sound)
11691 MC68B50P (ACIA)
11692 uPD4911C (RTC)
11693 M68000
11694 16MHz OSC, near CPU
11695 SETA X1-002A (sprites, near 005 - 008)
11696 SETA X1-001A (sprites, "")
11697 SETA X1-007 (737100)
11698 SETA X1-011
11699 SETA X1-012
11700  _____________________________________________________________________________________________________________________
11701 |     W              T  S      R     P   N     M     L   K      J     H     F    E      D            C     B    A     |
11702 |          __________      _______   _______   _______   _______                 ______________________________       |
11703 |         |Hd74LS74AF|    |UF0    | |UF0    | |UF0    | |UF0    |               |                              |      |
11704 |         |__________|    |008    | |007    | |006    | |005    |               |                              |     1|
11705 |  __________________     |       | |       | |       | |       |               |                              |      |
11706 | |UF0_009        W15|    |TOSHIBA| |TOSHIBA| |TOSHIBA| |TOSHIBA|               |                              |      |
11707 | |                  |    |       | |       | |       | |       |               |                              |      |
11708 | |   4M             |    |TMM2725| |TMM2725| |TMM2725| |TMM2725|   __          |______________________________|     2|
11709 | |U13               |    |6AD_20 | |6AD_20 | |6BD_15 | |6BD_15 |  |  |   __                                          |
11710 | |__________________|    |       | |       | |       | |       |  |  |  |  |       __                                |
11711 |  __________________     |       | |       | |       | |       |  |S |  |  |  __  |  |                              3|
11712 | |UF0_010        W16|    |       | |       | |       | |       |  |  |  |T | |  | |  |                               |
11713 | |                  |    |       | |       | |       | |       |  |  |  |  | |  | |U |                               |
11714 | |   4M             |    |_______| |_______| |_______| |_______|  |__|  |  | |A1| |  |                              4|
11715 | |U15               |  __                                               |__| |  | |  |                               |
11716 | |__________________| |  |     _______________________________    _____      |  | |__|        __________________     |
11717 |  __________________  |  |    |                               |  |XTAL |     |__|            |UF1 002           |    |
11718 | |UF0_011        W17| |  |    |             SETA              |  |     |   __                |                  |   5|
11719 | |                  | |  |    |            8820KX             |  |16MHz|  |  |    __   __    |                  |    |
11720 | |   4M             | |  |    |            X1_002A            |  |     |  |  |   |  | |  |   |27512             |    |
11721 | |U22               | |__|    |                               |  |     |  |B |   |  | |  |   |__________________|   6|
11722 | |__________________|         |                               |  |_____|  |  |   |V | |W |    __________________     |
11723 |  __________________          |_______________________________|           |  |   |  | |  |   |UF1 003           |    |
11724 | |UF0_012        W18|  __                                            __   |__|   |  | |  |   |                  |    |
11725 | |                  | |  |     _______________________________      |  |         |__| |__|   |                  |   7|
11726 | |   4M             | |  |    |                               |     |  |                     |27512             |    |
11727 | |U29               | |  |    |             SETA              |     |  |   __     __         |__________________|    |
11728 | |__________________| |  |    |            8836KX             |     |X |  |  |   |  |                                |
11729 |  __________________  |  |    |            X1_001A            |     |  |  |  |   |  |                                |
11730 | |UF0_013        W19| |__|    |                               |     |  |  |D |   |D |                               8|
11731 | |                  |         |                               |     |  |  |  |   |  |         __________________     |
11732 | |   4M             |         |_______________________________|     |  |  |  |   |  |        |   TMM2063AP_12   |    |
11733 | |U37               |                                               |__|  |__|   |__|        |__________________|    |
11734 | |__________________|                                                __    __    __                                  |
11735 |  __________________                                                |  |  |  |  |  |   __                           9|
11736 | |UF0_014        W20|     ____________                              |  |  |  |  |  |  |  |    __________________     |
11737 | |                  |    |            |      __________________     |  |  |  |  |  |  |  |   |                  |    |
11738 | |   4M             |    |    SETA    |     |   TMM2063AP_10   |    |Y |  |A |  |A |  |S |   |__________________|    |
11739 | |U38               |    |   X1_011   |     |__________________|    |  |  |  |  |  |  |  |       _______________     |
11740 | |__________________|    |            |                             |  |  |  |  |  |  |  |      |               |    |
11741 |  __________________     |            |                             |  |  |  |  |  |  |  |      |   MC68B50P    |    |
11742 | |UF0_015        W21|    |____________|                             |  |  |  |  |  |  |__|      |   T6A J8905   |  10|
11743 | |                  |                                               |__|  |__|  |__|            |               |    |
11744 | |   4M             |                                                                           |_______________|    |
11745 | |U40               |                                                                                                |
11746 | |__________________|                               _______          __    __    __                                  |
11747 |  __________________      ____________             |       |        |  |  |  |  |  |                                 |
11748 | |UF0_016        W22|    |            |            |       |        |  |  |  |  |  |                                 |
11749 | |                  |    |    SETA    |            |_______|        |  |  |  |  |  |             ___  O              |
11750 | |                  |    |   X1_012   |                             |A |  |Z |  |A |          O | |#| F            11|
11751 | |                  |    |            |                             |  |  |  |  |  |      __  N |___| F              |
11752 | |__________________|    |            |                             |  |  |  |  |  |     |  |  _________             |
11753 |   ___________           |____________|                             |  |  |  |  |  |     |  | |74HC00AP |            |
11754 |  |           |                                                     |  |  |  |  |  |     |  | |_________|            |
11755 |  |___________|                                                     |__|  |__|  |__|     |A2|                      12|
11756 |   ___________                                                                           |  |                        |
11757 |  |           |                                                                 __       |  |                        |
11758 |  |___________|          __    __    __             _______          __    __  |  |      |__|   ________________     |
11759 |                        |  |  |  |  |  |           |       |        |  |  |  | |  |            |  TMM2063AP_12  |  13|
11760 |  __________________    |  |  |  |  |  |           |       |        |  |  |  | |A |            |________________|    |
11761 | |                  |   |L |  |I |  |K |           |_______|        |C |  |B | |  |           ___________________    |
11762 | |       SETA       |   |  |  |  |  |  |                            |  |  |  | |  |          |UF1 004            |   |
11763 | |      X1_007      |   |  |  |  |  |  |                            |  |  |  | |  |          |                   | 14|
11764 | |      737100      |   |__|  |__|  |__|                            |__|  |__| |__|          |  TC571001D_20     |   |
11765 | |__________________|                                                           __           |                   |   |
11766 |                           __________                                          |  |          |___________________|   |
11767 |                          |          |   __   __   __    __    __    __    __  |  |                         ____   15|
11768 |                          |__________|  |  | |  | |  |  |  |  |  |  |  |  |  | |  |     __________    __   |    |    |
11769 |                                        |  | |  | |  |  |  |  |  |  |  |  |  | |A |    |          |  |  |  |    |    |
11770 |                           __________   |  | |C | |G |  |F |  |E |  |D |  |  | |  |    | SETA     |  |  |  |DIP1|    |
11771 |                ___  O    |          |  |  | |  | |  |  |  |  |  |  |  |  |  | |  |    |  X1_010  |  |H |  |    |  16|
11772 |             O |#| | F    |__________|  |  | |  | |  |  |  |  |  |  |  |  |  | |  |    |  811101  |  |  |  |    |    |
11773 |             N |___| F                  |__| |__| |__|  |__|  |__|  |__|  |__| |__|    |__________|  |  |  |____|    |
11774 |          __________      _______                _________    _________                              |__|   ____     |
11775 |         |    O     |    |   M   |              |    I    |  |    I    |                                   |    |  17|
11776 |         |__________|    |_______|              |_________|  |_________|                 __________   __   |    |    |
11777 |   ___    __________      _______    ________                                           |74HC273AP | |  |  |DIP2|    |
11778 |  |   |  |    O     |    |   N   |  |   I    |   _________                              |__________| |  |  |    |    |
11779 |  |___|  |__________|    |_______|  |________|  |    J    |                              __________  |H |  |    |  18|
11780 |                                                |_________|                             |74HC273AP | |  |  |____|    |
11781 |                                     ________                                           |__________| |  |   ____     |
11782 |                                    |   P    |                                                       |__|  |    |  19|
11783 |                                    |________|                                  _____________________      |    |    |
11784 |          ___             _______    ________    _________    __________       |      SETA X1_004    |     |DIP3|    |
11785 |         |   |           |   Q   |  |   Q    |  |    Q    |  |    P     |      |        826100       |     |    |  20|
11786 |         |___|           |_______|  |________|  |_________|  |__________|      |                     |     |    |    |
11787 |                                                                               |_____________________|     |____|    |
11788 |                                     ________    _________    __________    ___________    _________   _________     |
11789 |                                    |        |  |         |  |    R     |  |     A     |  |    Q    | |    Q    |  21|
11790 |                                    |________|  |_________|  |__________|  |___________|  |_________| |_________|    |
11791 |                                                                                                                     |
11792 |                                                         _   _                                                       |
11793 |                                                        | | | |                                                    22|
11794 |                                                        |_| |_|                                                      |
11795 |                                                                                                                     |
11796 |                                                                                                                   23|
11797 |                        _______ |||||||||||||||||||||||||||||||||||||||||||||||||||||| __ ||||||| _____              |
11798 |                       |       ||||||||||||||||||||||||||||||||||||||||||||||||||||||||  |||||||||     |             |
11799 |_______________________|       |______________________________________________________|  |_______|     |_____________|
11800 
11801 
11802 A = 74HC245AP      O = TC74HC4520P
11803 B = MB74LS32       P = TC4069UBP
11804 C = 74HC02AP       Q = TC4050BP
11805 D = SN74HC138N     R = MC14504B
11806 E = MC74HC32       S = 74HC367AP
11807 F = TC24HC27P      T = M74LS04P
11808 G = SN74LS260N     U = MC74HC20
11809 H = M74LS253P      V = 74HC161AP
11810 I = 74HC74AP       W = SN74LS146N
11811 J = TC74HC174P     X = MC74F244N
11812 K = TC74HC157P     Y = MC74F374N
11813 L = MB74LS08       Z = M74LS245P
11814 M = HD14040BP      A1= 74HC60AP
11815 N = TC4013BP       A2= D4911C
11816 
11817 
11818 DIP1:                     DIP2:                     DIP3:
11819 |___________________|     |___________________|     |___________________|
11820 | ON                |     | ON                |     | ON                |
11821 | |_______________| |     | |_______________| |     | |_______________| |
11822 | |_|_|_|_|_|#|#|#| |     | |_|_|#|#|_|_|_|_| |     | |_|_|#|#|_|_|#|_| |
11823 | |#|#|#|#|#| | | | |     | |#|#| | |#|#|#|#| |     | |#|#| | |#|#| |#| |
11824 | |_______________| |     | |_______________| |     | |_______________| |
11825 |  1 2 3 4 5 6 7 8  |     |  1 2 3 4 5 6 7 8  |     |  1 2 3 4 5 6 7 8  |
11826 |___________________|     |___________________|     |___________________|
11827 
11828 ***************************************************************************/
11829 
11830 ROM_START( setaroul )
11831 	ROM_REGION( 0x0c0000, "maincpu", 0 )        /* 68000 Code */
11832 	ROM_LOAD16_BYTE( "uf1-002.u14", 0x000000, 0x010000, CRC(b3a622b0) SHA1(bc4a02167002579149c19640e65e679b7c19fa66) )
11833 	ROM_LOAD16_BYTE( "uf1-003.u16", 0x000001, 0x010000, CRC(a6afd769) SHA1(82c54c8a2219f20d08faf9f7afcf821d83511660) )
11834 
11835 	ROM_REGION( 0x020000, "gfx1", 0 )   /* Sprites */
11836 	ROM_LOAD16_BYTE( "uf0-005.u3", 0x010001, 0x008000, CRC(383c2d57) SHA1(3bbf0464f80f657dfa275e885fbce064a0a08f4a) )
11837 	ROM_LOAD16_BYTE( "uf0-006.u4", 0x010000, 0x008000, CRC(90c9dae6) SHA1(a226aab82f5b8174644281fa3efab4f8a8f8d827) )
11838 	ROM_LOAD16_BYTE( "uf0-007.u5", 0x000001, 0x008000, CRC(e72c3dba) SHA1(aaebb484e76d8f3da0ecff26c3c1bad4f3f11ac0) )
11839 	ROM_LOAD16_BYTE( "uf0-008.u6", 0x000000, 0x008000, CRC(e198e602) SHA1(f53fa36d1ea51239e71fe1ea7432bb4b7b8b3466) )
11840 
11841 	ROM_REGION( 0x400000, "gfx2", 0 )   /* Layer 1 - 8bpp */
11842 	ROM_LOAD32_BYTE( "uf0-010.u15", 0x000000, 0x080000, CRC(0af13a56) SHA1(c294b7947d004c0e0b280ca44636e4059e05a57e) )
11843 	ROM_LOAD32_BYTE( "uf0-012.u29", 0x000001, 0x080000, CRC(cba2a6b7) SHA1(8627eda24c6980a0e786fd9dc06176893a33c58f) )
11844 	ROM_LOAD32_BYTE( "uf0-014.u38", 0x000002, 0x080000, CRC(da2bd4e4) SHA1(244af8705f2fa4ab3f3a002af16a0e4d60e03de8) )
11845 	ROM_LOAD32_BYTE( "uf0-015.u40", 0x000003, 0x080000, CRC(11dc19fa) SHA1(e7084f61d075a61249d924a523c32e7993d9ae46) )
11846 	ROM_LOAD32_BYTE( "uf0-009.u13", 0x200000, 0x080000, CRC(20f2d7f5) SHA1(343a8fac76d6ee7f845f9988c491698ebd0150d4) )
11847 	ROM_LOAD32_BYTE( "uf0-011.u22", 0x200001, 0x080000, CRC(af60adf9) SHA1(6505cbce6e066d75b779fdbe2c034ba4daabbefe) )
11848 	ROM_LOAD32_BYTE( "uf0-013.u37", 0x200002, 0x080000, CRC(645ec3c3) SHA1(e9b8056c68bf33b0b7130a5ce2bafd11dfd6c29b) )
11849 	ROM_LOAD32_BYTE( "uf0-016.u48", 0x200003, 0x080000, CRC(10f99fa8) SHA1(7ef9a3f71dd071483cf3513ef57e2fcfe8702994) )
11850 
11851 	ROM_REGION( 0x100000, "x1snd", ROMREGION_ERASE00 )  /* Samples */
11852 	ROM_LOAD( "uf1-004.u52",     0x040000, 0x020000, CRC(6638054d) SHA1(f5c4a4c822ee56cfcbb4e8401253ae0a2c2c1df7) )
11853 
11854 	ROM_REGION( 0x400, "proms", 0 )
11855 	ROM_LOAD16_BYTE( "uf0-017.u50", 0x000, 0x200, CRC(bf50c303) SHA1(31685ed4849e5c27654f02945678db425d54bf5e) )
11856 	ROM_LOAD16_BYTE( "uf0-018.u51", 0x001, 0x200, CRC(1c584d5f) SHA1(f1c7e3da8b108d78b459cae53fabb6e28d3a7ee8) )
11857 ROM_END
11858 
11859 u16 seta_state::twineagl_debug_r()
11860 {
11861 	/*  At several points in the code, the program checks if four
11862 	    consecutive bytes in this range are equal to a string, and if they
11863 	    are, it fetches an address from the following 4 bytes and jumps there.
11864 	    They are probably hooks for debug routines to be found in an extra ROM.
11865 
11866 	    0000 "MT00" + jump address
11867 	    0008 "MT01" + jump address
11868 	    0010 "MT02" + jump address
11869 	    0018 "MT03" + jump address
11870 	    0020 "MT04" + jump address
11871 	    0028 "MT05" + jump address
11872 	    0030 "MT06" + jump address
11873 	    0038 "MT07" + jump address
11874 	    0040 "WZ08" + jump address
11875 	    0080 "KB00" + jump address
11876 	    00C0 "MT18" + jump address
11877 	    00C8 "MT19" + jump address
11878 	    00D0 "MT1a" + jump address
11879 	    00D8 "MT1b" + jump address
11880 	    00E0 "MT1c" + jump address
11881 	    00E8 "MT1d" + jump address
11882 	    00F0 "MT1e" + jump address
11883 	    00F8 "MT1f" + jump address
11884 	*/
11885 
11886 	return 0;
11887 }
11888 
init_bank6502()11889 void seta_state::init_bank6502()
11890 {
11891 	u8 *rom = memregion("sub")->base();
11892 	const u32 max = (memregion("sub")->bytes() - 0xc000) / 0x4000;
11893 
11894 	if (max > 1) // if 6502 ROM is bankswitched(size is larger than 0x4000)
11895 	{
11896 		m_subbank->configure_entries(0, max, &rom[0xc000], 0x4000);
11897 		if (max < 16)
11898 			m_subbank->configure_entries(max, 16-max, &rom[0xc000], 0x4000); // Unverified : Bankswitching is Mirrored?
11899 	}
11900 	else
11901 		m_subbank->configure_entries(0, 16, &rom[0xc000], 0); // Not bankswitched : for avoid crashing when accessing bank functions
11902 }
11903 
11904 /* Extra RAM ? Check code at 0x00ba90 */
11905 /* 2000F8 = A3 enables it, 2000F8 = 00 disables? see downtown too */
twineagl_200100_r(offs_t offset)11906 u16 seta_state::twineagl_200100_r(offs_t offset)
11907 {
11908 	// protection check at boot
11909 	logerror("%04x: twineagl_200100_r %d\n",m_maincpu->pc(), offset);
11910 	return m_twineagl_xram[offset];
11911 }
twineagl_200100_w(offs_t offset,u16 data,u16 mem_mask)11912 void seta_state::twineagl_200100_w(offs_t offset, u16 data, u16 mem_mask)
11913 {
11914 	logerror("%04x: twineagl_200100_w %d = %02x\n",m_maincpu->pc(), offset,data);
11915 
11916 	if (ACCESSING_BITS_0_7)
11917 	{
11918 		m_twineagl_xram[offset] = data & 0xff;
11919 	}
11920 }
11921 
init_twineagl()11922 void seta_state::init_twineagl()
11923 {
11924 	init_bank6502();
11925 	/* debug? */
11926 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x800000, 0x8000ff, read16smo_delegate(*this, FUNC(seta_state::twineagl_debug_r)));
11927 
11928 	/* This allows 2 simultaneous players and the use of the "Copyright" Dip Switch. */
11929 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x200100, 0x20010f, read16sm_delegate(*this, FUNC(seta_state::twineagl_200100_r)));
11930 	m_maincpu->space(AS_PROGRAM).install_write_handler(0x200100, 0x20010f, write16s_delegate(*this, FUNC(seta_state::twineagl_200100_w)));
11931 }
11932 
11933 
11934 /* Protection? NVRAM is handled writing commands here */
downtown_protection_r(offs_t offset)11935 u16 seta_state::downtown_protection_r(offs_t offset)
11936 {
11937 	const int job = m_downtown_protection[0xf8/2] & 0xff;
11938 
11939 	switch (job)
11940 	{
11941 		case 0xa3:
11942 		{
11943 			static const u8 word[] = "WALTZ0";
11944 			if (offset >= 0x100/2 && offset <= 0x10a/2) return word[offset - 0x100/2];
11945 			else                                        return 0;
11946 		}
11947 		default:
11948 			return m_downtown_protection[offset] & 0xff;
11949 	}
11950 }
11951 
downtown_protection_w(offs_t offset,u16 data,u16 mem_mask)11952 void seta_state::downtown_protection_w(offs_t offset, u16 data, u16 mem_mask)
11953 {
11954 	COMBINE_DATA(&m_downtown_protection[offset]);
11955 }
11956 
init_downtown()11957 void seta_state::init_downtown()
11958 {
11959 	init_bank6502();
11960 
11961 	m_downtown_protection = make_unique_clear<u16[]>(0x200/2);
11962 	save_pointer(NAME(m_downtown_protection),0x200/2);
11963 
11964 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x2001ff, read16sm_delegate(*this, FUNC(seta_state::downtown_protection_r)));
11965 	m_maincpu->space(AS_PROGRAM).install_write_handler(0x200000, 0x2001ff, write16s_delegate(*this, FUNC(seta_state::downtown_protection_w)));
11966 }
11967 
11968 
arbalest_debug_r()11969 u16 seta_state::arbalest_debug_r()
11970 {
11971 	/*  At some points in the code, the program checks if four
11972 	    consecutive bytes in this range are equal to a string, and if they
11973 	    are, it fetches an address from the following 4 bytes and jumps there.
11974 	    They are probably hooks for debug routines to be found in an extra ROM.
11975 
11976 	    0000 "CHK1" + jump address
11977 	    0008 "CHK2" + jump address
11978 	*/
11979 
11980 	return 0;
11981 }
11982 
init_arbalest()11983 void seta_state::init_arbalest()
11984 {
11985 	init_bank6502();
11986 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x80000, 0x8000f, read16smo_delegate(*this, FUNC(seta_state::arbalest_debug_r)));
11987 }
11988 
11989 
metafox_protection_r(offs_t offset)11990 u16 seta_state::metafox_protection_r(offs_t offset)
11991 {
11992 	// very simplified protection simulation
11993 	// 21c000-21c3ff, 21d000-21d3ff, and 21e000-21e3ff are tested as 8 bit reads/writes
11994 	// the first address in each range is special and returns data written elsewhere in that range
11995 	// 21fde0-21fdff appears to be control bytes?
11996 
11997 	switch (offset)
11998 	{
11999 		case 0x0001/2:
12000 			return 0x3d;
12001 
12002 		case 0x1001/2:
12003 			return 0x76;
12004 
12005 		case 0x2001/2:
12006 			return 0x10;
12007 	}
12008 
12009 	return offset * 0x1f;
12010 }
12011 
init_metafox()12012 void seta_state::init_metafox()
12013 {
12014 	init_bank6502();
12015 	m_maincpu->space(AS_PROGRAM).install_read_handler(0x21c000, 0x21ffff,read16sm_delegate(*this, FUNC(seta_state::metafox_protection_r)));
12016 }
12017 
12018 
init_bankx1()12019 void seta_state::init_bankx1()
12020 {
12021 	m_x1_bank->configure_entries(0, 8, memregion("x1snd")->base(), 0x40000);
12022 }
12023 
init_eightfrc()12024 void seta_state::init_eightfrc()
12025 {
12026 	m_maincpu->space(AS_PROGRAM).nop_read(0x500004, 0x500005);   // watchdog??
12027 	init_bankx1();
12028 }
12029 
init_rezon()12030 void seta_state::init_rezon()
12031 {
12032 	m_maincpu->space(AS_PROGRAM).nop_read(0x500006, 0x500007);   // irq ack?
12033 }
12034 
init_pairlove()12035 void seta_state::init_pairlove()
12036 {
12037 	m_pairslove_protram = make_unique_clear<u16[]>(0x200/2);
12038 	m_pairslove_protram_old = make_unique_clear<u16[]>(0x200/2);
12039 	save_pointer(NAME(m_pairslove_protram), 0x200/2);
12040 	save_pointer(NAME(m_pairslove_protram_old), 0x200/2);
12041 }
12042 
init_zombraid()12043 void zombraid_state::init_zombraid()
12044 {
12045 	/* bank 1 is never explicitly selected, 0 is used in its place */
12046 	m_x1_bank->configure_entry(0, memregion("x1snd")->base() + 0x80000);
12047 	m_x1_bank->configure_entries(1, 7, memregion("x1snd")->base() + 0x80000, 0x80000);
12048 }
12049 
init_wiggie()12050 void seta_state::init_wiggie()
12051 {
12052 	u8 temp[16];
12053 	u8 *src = memregion("maincpu")->base();
12054 	int len = memregion("maincpu")->bytes();
12055 	for (int i = 0; i < len; i += 16)
12056 	{
12057 		std::copy(&src[i], &src[i+16], std::begin(temp));
12058 		for (int j = 0; j < 16; j++)
12059 		{
12060 			static const int convtable[16] =
12061 			{
12062 				0x0, 0x1, 0x8, 0x9,
12063 				0x2, 0x3, 0xa, 0xb,
12064 				0x4, 0x5, 0xc, 0xd,
12065 				0x6, 0x7, 0xe, 0xf
12066 			};
12067 
12068 			src[i+j] = temp[convtable[j]];
12069 		}
12070 
12071 	}
12072 }
12073 
init_crazyfgt()12074 void seta_state::init_crazyfgt()
12075 {
12076 	u16 *RAM = (u16 *) memregion("maincpu")->base();
12077 
12078 	// protection check at boot
12079 	RAM[0x1078/2] = 0x4e71;
12080 
12081 	// fixed priorities?
12082 }
12083 
init_inttoote()12084 void jockeyc_state::init_inttoote()
12085 {
12086 	// code patches due to unemulated protection (to be removed...)
12087 	u16 *ROM = (u16 *)memregion( "maincpu" )->base();
12088 
12089 	ROM[0x4de0/2] = 0x4e71; // hardware test errors
12090 	ROM[0x4de2/2] = 0x4e71;
12091 
12092 	ROM[0x368a/2] = 0x50f9; // betting count down
12093 }
12094 
12095 
12096 /***************************************************************************
12097 
12098                                 Game Drivers
12099 
12100 ***************************************************************************/
12101 
12102 /* 68000 + 65C02 */
12103 GAME( 1987, tndrcade,  0,        tndrcade,  tndrcade,  seta_state,     init_bank6502,  ROT270, "Seta (Taito license)",      "Thundercade / Twin Formation" , 0) // Title/License: DSW
12104 GAME( 1987, tndrcadej, tndrcade, tndrcade,  tndrcadj,  seta_state,     init_bank6502,  ROT270, "Seta (Taito license)",      "Tokusyu Butai U.A.G. (Japan)" , 0) // License: DSW
12105 
12106 GAME( 1988, twineagl,  0,        twineagl,  twineagl,  seta_state,     init_twineagl,  ROT270, "Seta (Taito license)",      "Twin Eagle - Revenge Joe's Brother" , 0) // Country/License: DSW
12107 
12108 GAME( 1989, downtown,  0,        downtown,  downtown,  seta_state,     init_downtown,  ROT270, "Seta",                      "DownTown / Mokugeki (set 1)" , 0) // Country/License: DSW
12109 GAME( 1989, downtown2, downtown, downtown,  downtown,  seta_state,     init_downtown,  ROT270, "Seta",                      "DownTown / Mokugeki (set 2)" , 0) // Country/License: DSW
12110 GAME( 1989, downtownj, downtown, downtown,  downtown,  seta_state,     init_downtown,  ROT270, "Seta",                      "DownTown / Mokugeki (joystick hack)" , 0) // Country/License: DSW
12111 GAME( 1989, downtownp, downtown, downtown,  downtown,  seta_state,     init_downtown,  ROT270, "Seta",                      "DownTown / Mokugeki (prototype)" , 0) // Country/License: DSW
12112 
12113 GAME( 1989, usclssic,  0,        usclssic,  usclssic,  usclssic_state, init_bank6502,  ROT270, "Seta",                      "U.S. Classic" , 0) // Country/License: DSW
12114 
12115 GAME( 1989, calibr50,  0,        calibr50,  calibr50,  seta_state,     init_bank6502,  ROT270, "Athena / Seta",             "Caliber 50 (Ver. 1.01)" , 0) // Country/License: DSW
12116 
12117 GAME( 1989, arbalest,  0,        metafox,   arbalest,  seta_state,     init_arbalest,  ROT270, "Seta",                      "Arbalester" , 0) // Country/License: DSW
12118 
12119 GAME( 1989, metafox,   0,        metafox,   metafox,   seta_state,     init_metafox,   ROT270, "Seta",                      "Meta Fox" , 0) // Country/License: DSW
12120 
12121 /* 68000 */
12122 
12123 GAME( 1989?,setaroul,  0,        setaroul,  setaroul,  setaroul_state, empty_init,     ROT270, "Visco",                     "The Roulette (Visco)", MACHINE_CLICKABLE_ARTWORK )
12124 
12125 GAME( 1989, drgnunit,  0,        drgnunit,  drgnunit,  seta_state,     empty_init,     ROT0,   "Seta",                      "Dragon Unit / Castle of Dragon", 0 )
12126 
12127 GAME( 1989, wits,      0,        wits,      wits,      seta_state,     empty_init,     ROT0,   "Athena (Visco license)",    "Wit's (Japan)" , 0) // Country/License: DSW
12128 
12129 GAME( 1990, thunderl,   0,       thunderl,  thunderl,  seta_state,     empty_init,     ROT270, "Seta",                      "Thunder & Lightning" , 0) // Country/License: DSW
12130 GAME( 1991, thunderlbl, thunderl,thunderlbl,thunderlbl,seta_state,     empty_init,     ROT270, "bootleg (Hyogo)",           "Thunder & Lightning (bootleg with Tetris sound, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL ) // Country/License: DSW
12131 GAME( 1990, thunderlbl2,thunderl,thunderlbl,thunderl,  seta_state,     empty_init,     ROT270, "bootleg",                   "Thunder & Lightning (bootleg with Tetris sound, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL ) // Country/License: DSW
12132 
12133 GAME( 1994, wiggie,    0,        wiggie,    thunderl,  seta_state,     init_wiggie,    ROT270, "Promat",                    "Wiggie Waggie", MACHINE_IMPERFECT_GRAPHICS ) // hack of Thunder & Lightning
12134 GAME( 1994, superbar,  wiggie,   superbar,  thunderl,  seta_state,     init_wiggie,    ROT270, "Promat",                    "Super Bar", MACHINE_IMPERFECT_GRAPHICS ) // hack of Thunder & Lightning
12135 
12136 GAME( 1990, jockeyc,   0,        jockeyc,   jockeyc,   jockeyc_state,  empty_init,     ROT0,   "Seta (Visco license)",      "Jockey Club (v1.18)", MACHINE_CLICKABLE_ARTWORK )
12137 GAME( 1993, inttoote2, jockeyc,  jockeyc,   jockeyc,   jockeyc_state,  empty_init,     ROT0,   "bootleg (Coinmaster)",      "International Toote II (v1.24, P387.V01)", MACHINE_CLICKABLE_ARTWORK )
12138 GAME( 1998, inttoote,  jockeyc,  inttoote,  inttoote,  jockeyc_state,  init_inttoote,  ROT0,   "bootleg (Coinmaster)",      "International Toote (Germany, P523.V01)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_CLICKABLE_ARTWORK )
12139 
12140 GAME( 1991, rezon,     0,        rezon,     rezon,     seta_state,     init_rezon,     ROT0,   "Allumer",                   "Rezon", 0 )
12141 GAME( 1992, rezont,    rezon,    rezon,     rezont,    seta_state,     init_rezon,     ROT0,   "Allumer (Taito license)",   "Rezon (Taito)", 0 )
12142 
12143 GAME( 1991, stg,       0,        drgnunit,  stg,       seta_state,     empty_init,     ROT270, "Athena / Tecmo",            "Strike Gunner S.T.G", 0 )
12144 
12145 GAME( 1991, pairlove,  0,        pairlove,  pairlove,  seta_state,     init_pairlove,  ROT270, "Athena",                    "Pairs Love", 0 )
12146 
12147 GAME( 1992, blandia,   0,        blandia,   blandia,   seta_state,     init_bankx1,    ROT0,   "Allumer",                   "Blandia", MACHINE_IMPERFECT_GRAPHICS )
12148 GAME( 1992, blandiap,  blandia,  blandiap,  blandia,   seta_state,     init_bankx1,    ROT0,   "Allumer",                   "Blandia (prototype)", MACHINE_IMPERFECT_GRAPHICS )
12149 
12150 GAME( 1992, blockcar,  0,        blockcar,  blockcar,  seta_state,     empty_init,     ROT90,  "Visco",                     "Block Carnival / Thunder & Lightning 2" , 0) // Title: DSW
12151 GAME( 1992, blockcarb, blockcar, blockcarb, blockcar,  seta_state,     empty_init,     ROT90,  "bootleg",                   "Block Carnival / Thunder & Lightning 2 (bootleg)", MACHINE_IMPERFECT_SOUND)
12152 
12153 GAME( 1992, qzkklogy,  0,        drgnunit,  qzkklogy,  seta_state,     empty_init,     ROT0,   "Tecmo",                     "Quiz Kokology", 0 )
12154 
12155 GAME( 1992, neobattl,  0,        umanclub,  neobattl,  seta_state,     empty_init,     ROT270, "Banpresto / Sotsu Agency. Sunrise", "SD Gundam Neo Battling (Japan)", 0 )
12156 
12157 GAME( 1992, umanclub,  0,        umanclub,  umanclub,  seta_state,     empty_init,     ROT0,   "Banpresto / Tsuburaya Productions", "Ultraman Club - Tatakae! Ultraman Kyoudai!!", 0 )
12158 
12159 GAME( 1992, zingzip,   0,        zingzip,   zingzip,   seta_state,     empty_init,     ROT270, "Allumer / Tecmo",           "Zing Zing Zip", 0 ) // This set has Chinese Characters in Title screen, it distributed for Chinese market/or Title: DSW?
12160 GAME( 1992, zingzipbl, zingzip,  zingzipbl, zingzip,   seta_state,     empty_init,     ROT270, "bootleg",                   "Zing Zing Zip (bootleg)", MACHINE_NOT_WORKING )
12161 
12162 GAME( 1993, atehate,   0,        atehate,   atehate,   seta_state,     empty_init,     ROT0,   "Athena",                    "Athena no Hatena ?", 0 )
12163 
12164 GAME( 1993, daioh,     0,        daioh,     daioh,     seta_state,     empty_init,     ROT270, "Athena",                    "Daioh", 0 )
12165 GAME( 1993, daioha,    daioh,    daioh,     daioh,     seta_state,     empty_init,     ROT270, "Athena",                    "Daioh (earlier)", 0 )
12166 GAME( 1993, daiohp,    daioh,    daiohp,    daiohp,    seta_state,     empty_init,     ROT270, "Athena",                    "Daioh (prototype)", 0 )
12167 GAME( 1993, daiohc,    daioh,    wrofaero,  daioh,     seta_state,     empty_init,     ROT270, "Athena",                    "Daioh (93111A PCB conversion)", 0 )
12168 
12169 GAME( 1993, jjsquawk,  0,        jjsquawk,  jjsquawk,  seta_state,     empty_init,     ROT0,   "Athena / Able",             "J. J. Squawkers", MACHINE_IMPERFECT_SOUND )
12170 GAME( 1993, jjsquawko, jjsquawk, jjsquawk,  jjsquawk,  seta_state,     empty_init,     ROT0,   "Athena / Able",             "J. J. Squawkers (older)", MACHINE_IMPERFECT_SOUND )
12171 GAME( 1999, jjsquawkb, jjsquawk, jjsquawb,  jjsquawk,  seta_state,     empty_init,     ROT0,   "bootleg",                   "J. J. Squawkers (bootleg)", MACHINE_IMPERFECT_SOUND )
12172 GAME( 1999, jjsquawkb2,jjsquawk, jjsquawk,  jjsquawk,  seta_state,     empty_init,     ROT0,   "bootleg",                   "J. J. Squawkers (bootleg, Blandia Conversion)", MACHINE_IMPERFECT_SOUND )
12173 GAME( 2003, simpsonjr, jjsquawk, jjsquawb,  jjsquawk,  seta_state,     empty_init,     ROT0,   "bootleg (Daigom Games)",    "Simpson Junior (bootleg of J. J. Squawkers)", MACHINE_IMPERFECT_SOUND )
12174 
12175 GAME( 1993, kamenrid,  0,        kamenrid,  kamenrid,  seta_state,     empty_init,     ROT0,   "Banpresto / Toei",          "Masked Riders Club Battle Race", 0 )
12176 
12177 GAME( 1993, madshark,  0,        madshark,  madshark,  seta_state,     empty_init,     ROT270, "Allumer",                   "Mad Shark", 0 )
12178 
12179 // end credits shows Allumer as developer.
12180 GAME( 1993, msgundam,  0,        msgundam,  msgundam,  seta_state,     empty_init,     ROT0,   "Banpresto / Allumer",       "Mobile Suit Gundam", 0 )
12181 GAME( 1993, msgundam1, msgundam, msgundam,  msgundam1, seta_state,     empty_init,     ROT0,   "Banpresto / Allumer",       "Mobile Suit Gundam (Japan)", 0 )
12182 GAME( 1993, msgundamb, msgundam, msgundamb, msgundam,  seta_state,     empty_init,     ROT0,   "bootleg",                   "Mobile Suit Gundam (bootleg)", 0 )
12183 
12184 GAME( 1993, oisipuzl,  0,        oisipuzl,  oisipuzl,  seta_state,     empty_init,     ROT0,   "Sunsoft / Atlus",           "Oishii Puzzle Ha Irimasenka", 0 )
12185 GAME( 1993, triplfun,  oisipuzl, triplfun,  oisipuzl,  seta_state,     empty_init,     ROT0,   "bootleg",                   "Triple Fun", 0 )
12186 
12187 GAME( 1993, qzkklgy2,  0,        qzkklgy2,  qzkklgy2,  seta_state,     empty_init,     ROT0,   "Tecmo",                     "Quiz Kokology 2", 0 )
12188 
12189 GAME( 1993, utoukond,  0,        utoukond,  utoukond,  seta_state,     empty_init,     ROT0,   "Banpresto / Tsuburaya Productions", "Ultra Toukon Densetsu (Japan)", 0 )
12190 
12191 GAME( 1993, wrofaero,  0,        wrofaero,  wrofaero,  seta_state,     empty_init,     ROT270, "Yang Cheng",                "War of Aero - Project MEIOU", 0 )
12192 
12193 GAME( 1994, eightfrc,  0,        eightfrc,  eightfrc,  seta_state,     init_eightfrc,  ROT90,  "Tecmo",                     "Eight Forces", 0 )
12194 
12195 GAME( 1994, kiwame,    0,        kiwame,    kiwame,    kiwame_state,   empty_init,     ROT0,   "Athena",                    "Pro Mahjong Kiwame", 0 )
12196 
12197 GAME( 1994, krzybowl,  0,        krzybowl,  krzybowl,  seta_state,     empty_init,     ROT270, "American Sammy",            "Krazy Bowl", 0 )
12198 
12199 GAME( 1994, magspeed,  0,        magspeed,  magspeed,  seta_state,     empty_init,     ROT0,   "Allumer",                   "Magical Speed", 0 )
12200 
12201 GAME( 1994, orbs,      0,        orbs,      orbs,      seta_state,     empty_init,     ROT0,   "American Sammy",            "Orbs (10/7/94 prototype?)", 0 )
12202 
12203 GAME( 1995, keroppi,   0,        keroppi,   keroppi,   seta_state,     empty_init,     ROT0,   "American Sammy",            "Kero Kero Keroppi's Let's Play Together (USA, Version 2.0)", 0 ) // ROM labels are all v1.0 tho.
12204 GAME( 1993, keroppij,  keroppi,  keroppij,  keroppij,  seta_state,     empty_init,     ROT0,   "Sammy Industries",          "Kero Kero Keroppi no Issyoni Asobou (Japan)", 0 )
12205 
12206 GAME( 1995, extdwnhl,  0,        extdwnhl,  extdwnhl,  seta_state,     empty_init,     ROT0,   "Sammy Industries Japan",    "Extreme Downhill (v1.5)", MACHINE_IMPERFECT_GRAPHICS )
12207 
12208 GAME( 1995, gundhara,  0,        gundhara,  gundhara,  seta_state,     empty_init,     ROT270, "Banpresto",                 "Gundhara", 0 )
12209 GAME( 1995, gundharac, gundhara, gundhara,  gundhara,  seta_state,     empty_init,     ROT270, "Banpresto",                 "Gundhara (Chinese, bootleg?)", 0 )
12210 
12211 GAME( 1995, sokonuke,  0,        extdwnhl,  sokonuke,  seta_state,     empty_init,     ROT0,   "Sammy Industries",          "Sokonuke Taisen Game (Japan)", MACHINE_IMPERFECT_SOUND )
12212 
12213 GAME( 1995, zombraid,  0,        zombraid,  zombraid,  zombraid_state, init_zombraid,  ROT0,   "American Sammy",            "Zombie Raid (9/28/95, US)", MACHINE_NO_COCKTAIL )
12214 GAME( 1995, zombraidp, zombraid, zombraid,  zombraid,  zombraid_state, init_zombraid,  ROT0,   "American Sammy",            "Zombie Raid (9/28/95, US, prototype PCB)", MACHINE_NO_COCKTAIL ) // actual code is same as the released version
12215 GAME( 1995, zombraidpj,zombraid, zombraid,  zombraid,  zombraid_state, init_zombraid,  ROT0,   "Sammy Industries Co.,Ltd.", "Zombie Raid (9/28/95, Japan, prototype PCB)", MACHINE_NO_COCKTAIL ) // just 3 bytes different from above
12216 
12217 GAME( 1996, crazyfgt,  0,        crazyfgt,  crazyfgt,  seta_state,     init_crazyfgt,  ROT0,   "Subsino",                   "Crazy Fight", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
12218