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