1 // license:BSD-3-Clause
2 // copyright-holders:Nicola Salmoria
3 /***************************************************************************
4 
5     Sega Zaxxon hardware
6 
7     Games supported:
8         * Zaxxon
9         * Super Zaxxon
10         * Future Spy
11         * Razmatazz
12         * Ixion
13         * Congo Bongo
14 
15     DIP locations verified from manual for:
16         * Zaxxon
17         * Congo Bongo
18 
19     Known bugs:
20         * discrete sound emulation
21 
22 ****************************************************************************
23 
24     Zaxxon memory map (preliminary)
25 
26     0000-1fff ROM 3
27     2000-3fff ROM 2
28     4000-4fff ROM 1
29     6000-67ff RAM 1
30     6800-6fff RAM 2
31     8000-83ff Video RAM
32     a000-a0ff sprites
33 
34     read:
35     c000      IN0
36     c001      IN1
37     c002      DSW0
38     c003      DSW1
39     c100      IN2
40     see the input_ports definition below for details on the input bits
41 
42     write:
43     c000      coin A enable
44     c001      coin B enable
45     c002      coin aux enable
46     c003-c004 coin counters
47     c006      flip screen
48     ff3c-ff3f sound (see below)
49     fff0      interrupt enable
50     fff1      character color bank (not used during the game, but used in test mode)
51     fff8-fff9 background playfield position (11 bits)
52     fffa      background color bank (0 = standard  1 = reddish)
53     fffb      background enable
54 
55     interrupts:
56     VBlank triggers IRQ, handled with interrupt mode 1
57     NMI enters the test mode.
58 
59     Changes:
60     25 Jan 98 LBO
61         * Added crude support for samples based on Frank's info. As of yet, I don't have
62           a set that matches the names - I need a way to edit the .wav files I have.
63           Hopefully I'll be able to create a good set shortly. I also don't know which
64           sounds "loop".
65     26 Jan 98 LBO
66         * Fixed the sound support. I lack explosion samples and the base missile sample so
67           these are untested. I'm also unsure about the background noise. It seems to have
68           a variable volume so I've tried to reproduce that via just 1 sample.
69 
70     12 Mar 98 ATJ
71             * For the moment replaced Brad's version of the samples with mine from the Mame/P
72               release. As yet, no variable volume, but I will be combining the features from
73               Brad's driver into mine ASAP.
74 
75 ****************************************************************************
76 
77     Ixion Board Info
78 
79     Ixion
80     Sega(prototype)  7/1/1983
81 
82 
83     Board set is a modified Super Zaxxon, similar to Razzmatazz
84 
85     [G80 Sound board]
86 
87 
88 
89                             U51
90                             U50
91 
92     [834-0214 ZAXXON-SOUNDII]
93 
94                                        315-5013  U27 U28 U29
95 
96 
97              U68 U69      U72
98                                             U98
99 
100     [         ZAXXON-VIDEOII]
101 
102 
103     U77 U78 U79                                U90 U91 U92 U93
104                               U111 U112 U113
105 
106 ****************************************************************************
107 
108     Congo Bongo memory map (preliminary)
109 
110     0000-1fff ROM 1
111     2000-3fff ROM 2
112     4000-5fff ROM 3
113     6000-7fff ROM 4
114 
115     8000-87ff RAM 1
116     8800-8fff RAM 2
117     a000-a3ff Video RAM
118     a400-a7ff Color RAM
119 
120     8400-8fff sprites
121 
122     read:
123     c000      IN0
124     c001      IN1
125     c002      DSW1
126     c003      DSW2
127     c008      IN2
128 
129     write:
130     c000-c002 ?
131     c006      ?
132     c018      coinAen, used to enable input on coin slot A
133     c019      coinBen, used to enable input on coin slot B
134     c01a      serven,  used to enable input on service sw
135     c01b      counterA,coin counter for slot A
136     c01c      counterB,coin counter for slot B
137     c01d      background enable
138     c01e      flip screen
139     c01f      interrupt enable
140 
141     c028-c029 background playfield position
142     c031      sprite enable ?
143     c032      sprite start
144     c033      sprite count
145 
146 
147     interrupts:
148     VBlank triggers IRQ, handled with interrupt mode 1
149     NMI causes a ROM/RAM test.
150 
151     ----------------------------------------------------------------------
152 
153     There are two different Congo Bongo boardsets. One is a 3-stack (which I have)
154     and the other is a 2-stack.
155 
156     The smaller third board is just a dedicated sound board, then later they started
157     making 2-stack boardset versions with merged sound circuits built into the control
158     board.
159 
160     The schematic name for the control board on the two-stack set is "Control Board II"
161     my boardset uses control board 1.
162 
163     The ROMs that are dumped for MAME are from the 3-stack boardset.
164     The ROMs on control board II are in different socket assignments than the ROMs
165     found on control board 1.
166 
167     For example:
168     MAME congo1.bin = ROM 1 at location U35 on the 3-stack control board 1
169     MAME congo1.bin = ROM 1 at location U21 on the 2-stack control board II
170 
171     So the locations are different between the two boardsets but they appear to use
172     the same ROM.
173 
174     The Video boards are exactly the same between the two boardset versions (bottom
175     board) nothing changed with the video boards.
176 
177     Both the 2-stack control board and 3-stack control board use a PROM that's contents
178     are identical between the two.  Apparently the 3-Stack Control Board prom was
179     dumped as a TBP28L22, because that is how the 2-Stack Control board prom was dumped.
180 
181     Board                  Location  Label            PROM Type
182     ---------------------  --------  ---------------  ---------
183     3-Stack Control Board  U68       MR020 (PR-5308)  TBP28S42?
184     2-Stack Control Board  U87       MR019 (PR-5315)  TBP28L22?
185 
186     For the 3-stack control board PROM sheet 2 of 6 for the 834-5212 board lists the pinouts
187     and they match the physical board.  The PROM also has the TI logo and a date code? of J810A.
188 
189     ROM locations are different with ROMs 1-5 on control board II and a different
190     numbered ROM in U87.
191 
192     ----ROM--NAMES-------------------------------------
193 
194 
195     THREE STACK BOARDSET
196     control board = 834-5166
197     video board = 834-5167
198     sound board = 834-5168
199 
200 
201     Current MAME      Schematic Board
202        Names       Names     Location (3-stack)
203     ------------      ---------     -------------------
204 
205     congo.u68    =    MR020     U68  control board
206     congo1.bin   =    ROM 1     U35  control board
207     congo2.bin   =    ROM 2     U34  control board
208     congo3.bin   =    ROM 3     U33  control board
209     congo4.bin   =    ROM 4     U32  control board
210     congo5.bin   =    ROM 5     U76  control board
211     congo6.bin   =    ROM 6     U57  video board
212     congo7.bin   =    ROM 7     U58  video board
213     congo8.bin   =    ROM 8     U93  video board
214     congo9.bin   =    ROM 9     U94  video board
215     congo10.bin  =    ROM 10    U95  video board
216     congo11.bin  =    ROM 11    U77  video board
217     congo12.bin  =    ROM 12    U78  video board
218     congo13.bin  =    ROM 13    U79  video board
219     congo14.bin  =    ROM 14    U104 video board
220     congo15.bin  =    ROM 15    U105 video board
221     congo16.bin  =    ROM 16    U106 video board
222     congo17.bin  =    ROM 17    U11  sound board
223 
224 
225 
226     TWO STACK BOARDSET
227     control board II = 834-5212
228     video board = 834-5167
229 
230 
231     Current MAME      Schematic Board
232        Names       Names     Location (2-stack)
233     ------------      ---------     -------------------
234 
235     congo.u68    =    MR019     U87  control board
236     congo1.bin   =    ROM 1     U21  control board
237     congo2.bin   =    ROM 2     U22  control board
238     congo3.bin   =    ROM 3     U23  control board
239     congo4.bin   =    ROM 4     U24  control board
240     congo5.bin   =    ROM 5     U77  control board
241     congo6.bin   =    ROM 6     U57  video board
242     congo7.bin   =    ROM 7     U58  video board
243     congo8.bin   =    ROM 8     U93  video board
244     congo9.bin   =    ROM 9     U94  video board
245     congo10.bin  =    ROM 10    U95  video board
246     congo11.bin  =    ROM 11    U77  video board
247     congo12.bin  =    ROM 12    U78  video board
248     congo13.bin  =    ROM 13    U79  video board
249     congo14.bin  =    ROM 14    U104 video board
250     congo15.bin  =    ROM 15    U105 video board
251     congo16.bin  =    ROM 16    U106 video board
252     congo17.bin  =    ROM 17    U19  control board
253 
254 ***************************************************************************/
255 
256 #include "emu.h"
257 #include "includes/zaxxon.h"
258 #include "audio/segausb.h"
259 
260 #include "cpu/z80/z80.h"
261 #include "machine/gen_latch.h"
262 #include "machine/i8255.h"
263 #include "machine/segacrpt_device.h"
264 #include "sound/samples.h"
265 #include "sound/sn76496.h"
266 
267 #include "screen.h"
268 #include "speaker.h"
269 
270 
271 /*************************************
272  *
273  *  Constants
274  *
275  *************************************/
276 
277 static constexpr XTAL MASTER_CLOCK  = 48.66_MHz_XTAL;
278 static constexpr XTAL SOUND_CLOCK   = 4_MHz_XTAL;
279 
280 static constexpr XTAL PIXEL_CLOCK   = MASTER_CLOCK/8;
281 
282 #define HTOTAL              (384)
283 #define HBEND               (0)
284 #define HBSTART             (256)
285 
286 #define VTOTAL              (264)
287 #define VBEND               (16)
288 #define VBSTART             (240)
289 
290 
291 
292 /*************************************
293  *
294  *  Interrupt generation
295  *
296  *************************************/
297 
INPUT_CHANGED_MEMBER(zaxxon_state::service_switch)298 INPUT_CHANGED_MEMBER(zaxxon_state::service_switch)
299 {
300 	/* pressing the service switch sends an NMI */
301 	if (newval)
302 		m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
303 }
304 
305 
WRITE_LINE_MEMBER(zaxxon_state::vblank_int)306 WRITE_LINE_MEMBER(zaxxon_state::vblank_int)
307 {
308 	if (state && m_int_enabled)
309 		m_maincpu->set_input_line(0, ASSERT_LINE);
310 }
311 
312 
WRITE_LINE_MEMBER(zaxxon_state::int_enable_w)313 WRITE_LINE_MEMBER(zaxxon_state::int_enable_w)
314 {
315 	m_int_enabled = state;
316 	if (!m_int_enabled)
317 		m_maincpu->set_input_line(0, CLEAR_LINE);
318 }
319 
320 
321 
322 /*************************************
323  *
324  *  Machine setup
325  *
326  *************************************/
327 
machine_start()328 void zaxxon_state::machine_start()
329 {
330 	/* register for save states */
331 	save_item(NAME(m_int_enabled));
332 	save_item(NAME(m_coin_status));
333 }
334 
335 
336 
337 /*************************************
338  *
339  *  Input handlers
340  *
341  *************************************/
342 
razmataz_counter_r()343 uint8_t zaxxon_state::razmataz_counter_r()
344 {
345 	/* this behavior is really unknown; however, the code is using this */
346 	/* counter as a sort of timeout when talking to the sound board */
347 	/* it needs to be increasing at a reasonable rate but not too fast */
348 	/* or else the sound will mess up */
349 	return m_razmataz_counter++ >> 8;
350 }
351 
352 
353 template <int Num>
CUSTOM_INPUT_MEMBER(zaxxon_state::razmataz_dial_r)354 CUSTOM_INPUT_MEMBER(zaxxon_state::razmataz_dial_r)
355 {
356 	int res;
357 
358 	int delta = m_dials[Num]->read();
359 
360 	if (delta < 0x80)
361 	{
362 		// right
363 		m_razmataz_dial_pos[Num] -= delta;
364 		res = (m_razmataz_dial_pos[Num] << 1) | 1;
365 	}
366 	else
367 	{
368 		// left
369 		m_razmataz_dial_pos[Num] += delta;
370 		res = (m_razmataz_dial_pos[Num] << 1);
371 	}
372 
373 	return res;
374 }
375 
376 
377 
378 /*************************************
379  *
380  *  Output handlers
381  *
382  *************************************/
383 
zaxxon_control_w(offs_t offset,uint8_t data)384 void zaxxon_state::zaxxon_control_w(offs_t offset, uint8_t data)
385 {
386 	// address decode for E0F8/E0F9 (74LS138 @ U57) has its G2B enable input in common with this latch
387 	bool a3 = BIT(offset, 3);
388 	m_mainlatch[1]->write_bit((a3 ? 4 : 0) | (offset & 3), BIT(data, 0));
389 	if (a3 && !BIT(offset, 1))
390 		bg_position_w(offset & 1, data);
391 }
392 
393 
WRITE_LINE_MEMBER(zaxxon_state::coin_counter_a_w)394 WRITE_LINE_MEMBER(zaxxon_state::coin_counter_a_w)
395 {
396 	machine().bookkeeping().coin_counter_w(0, state);
397 }
398 
399 
WRITE_LINE_MEMBER(zaxxon_state::coin_counter_b_w)400 WRITE_LINE_MEMBER(zaxxon_state::coin_counter_b_w)
401 {
402 	machine().bookkeeping().coin_counter_w(1, state);
403 }
404 
405 
406 // There is no external coin lockout circuitry; instead, the pcb simply latches
407 // each coin input, which then needs to be explicitly cleared by the game.
408 // Each coin input first passes through a debounce circuit consisting of a
409 // LS175 quad flip-flop and LS10 3-input NAND gate, which is not emulated.
WRITE_LINE_MEMBER(zaxxon_state::coin_enable_w)410 WRITE_LINE_MEMBER(zaxxon_state::coin_enable_w)
411 {
412 	for (int n = 0; n < 3; n++)
413 		if (!BIT(m_mainlatch[0]->output_state(), n))
414 			m_coin_status[n] = 0;
415 }
416 
417 
INPUT_CHANGED_MEMBER(zaxxon_state::zaxxon_coin_inserted)418 INPUT_CHANGED_MEMBER(zaxxon_state::zaxxon_coin_inserted)
419 {
420 	if (newval && BIT(m_mainlatch[0]->output_state(), param))
421 		m_coin_status[param] = 1;
422 }
423 
424 
425 template <int Num>
READ_LINE_MEMBER(zaxxon_state::zaxxon_coin_r)426 READ_LINE_MEMBER(zaxxon_state::zaxxon_coin_r)
427 {
428 	return m_coin_status[Num];
429 }
430 
431 
432 
433 /*************************************
434  *
435  *  Main CPU memory handlers
436  *
437  *************************************/
438 
439 /* complete memory map derived from schematics */
zaxxon_map(address_map & map)440 void zaxxon_state::zaxxon_map(address_map &map)
441 {
442 	map(0x0000, 0x5fff).rom();
443 	map(0x6000, 0x6fff).ram();
444 	map(0x8000, 0x83ff).mirror(0x1c00).ram().w(FUNC(zaxxon_state::zaxxon_videoram_w)).share("videoram");
445 	map(0xa000, 0xa0ff).mirror(0x1f00).ram().share("spriteram");
446 	map(0xc000, 0xc000).mirror(0x18fc).portr("SW00");
447 	map(0xc001, 0xc001).mirror(0x18fc).portr("SW01");
448 	map(0xc002, 0xc002).mirror(0x18fc).portr("DSW02");
449 	map(0xc003, 0xc003).mirror(0x18fc).portr("DSW03");
450 	map(0xc100, 0xc100).mirror(0x18ff).portr("SW100");
451 	map(0xc000, 0xc007).mirror(0x18f8).w("mainlatch1", FUNC(ls259_device::write_d0));
452 	map(0xe03c, 0xe03f).mirror(0x1f00).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
453 	map(0xe0f0, 0xe0f3).mirror(0x1f00).select(0x0008).w(FUNC(zaxxon_state::zaxxon_control_w));
454 }
455 
decrypted_opcodes_map(address_map & map)456 void zaxxon_state::decrypted_opcodes_map(address_map &map)
457 {
458 	map(0x0000, 0x5fff).rom().share("decrypted_opcodes");
459 }
460 
461 /* derived from Zaxxon, different sound hardware */
ixion_map(address_map & map)462 void zaxxon_state::ixion_map(address_map &map)
463 {
464 	map(0x0000, 0x5fff).rom();
465 	map(0x6000, 0x6fff).ram();
466 	map(0x8000, 0x83ff).mirror(0x1c00).ram().w(FUNC(zaxxon_state::zaxxon_videoram_w)).share("videoram");
467 	map(0xa000, 0xa0ff).mirror(0x1f00).ram().share("spriteram");
468 	map(0xc000, 0xc000).mirror(0x18fc).portr("SW00");
469 	map(0xc001, 0xc001).mirror(0x18fc).portr("SW01");
470 	map(0xc002, 0xc002).mirror(0x18fc).portr("DSW02");
471 	map(0xc003, 0xc003).mirror(0x18fc).portr("DSW03");
472 	map(0xc100, 0xc100).mirror(0x18ff).portr("SW100");
473 	map(0xc000, 0xc007).mirror(0x18f8).w("mainlatch1", FUNC(ls259_device::write_d0));
474 	map(0xe03c, 0xe03c).mirror(0x1f00).rw("usbsnd", FUNC(usb_sound_device::status_r), FUNC(usb_sound_device::data_w));
475 	map(0xe0f0, 0xe0f3).mirror(0x1f00).select(0x0008).w(FUNC(zaxxon_state::zaxxon_control_w));
476 }
477 
478 
479 /* complete memory map derived from schematics */
congo_map(address_map & map)480 void zaxxon_state::congo_map(address_map &map)
481 {
482 	map(0x0000, 0x7fff).rom();
483 	map(0x8000, 0x8fff).ram();
484 	map(0xa000, 0xa3ff).mirror(0x1800).ram().w(FUNC(zaxxon_state::zaxxon_videoram_w)).share("videoram");
485 	map(0xa400, 0xa7ff).mirror(0x1800).ram().w(FUNC(zaxxon_state::congo_colorram_w)).share("colorram");
486 	map(0xc000, 0xc000).mirror(0x1fc4).portr("SW00");
487 	map(0xc001, 0xc001).mirror(0x1fc4).portr("SW01");
488 	map(0xc002, 0xc002).mirror(0x1fc4).portr("DSW02");
489 	map(0xc003, 0xc003).mirror(0x1fc4).portr("DSW03");
490 	map(0xc008, 0xc008).mirror(0x1fc7).portr("SW100");
491 	map(0xc018, 0xc01f).mirror(0x1fc0).w("mainlatch1", FUNC(ls259_device::write_d0));
492 	map(0xc020, 0xc027).mirror(0x1fc0).w("mainlatch2", FUNC(ls259_device::write_d0));
493 	map(0xc028, 0xc029).mirror(0x1fc4).w(FUNC(zaxxon_state::bg_position_w));
494 	map(0xc030, 0xc033).mirror(0x1fc4).w(FUNC(zaxxon_state::congo_sprite_custom_w));
495 	map(0xc038, 0xc03f).mirror(0x1fc0).w("soundlatch", FUNC(generic_latch_8_device::write));
496 }
497 
498 
499 /* complete memory map derived from schematics */
congo_sound_map(address_map & map)500 void zaxxon_state::congo_sound_map(address_map &map)
501 {
502 	map(0x0000, 0x1fff).rom();
503 	map(0x4000, 0x47ff).mirror(0x1800).ram();
504 	map(0x6000, 0x6000).mirror(0x1fff).w("sn1", FUNC(sn76489a_device::write));
505 	map(0x8000, 0x8003).mirror(0x1ffc).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
506 	map(0xa000, 0xa000).mirror(0x1fff).w("sn2", FUNC(sn76489a_device::write));
507 }
508 
509 
510 
511 /*************************************
512  *
513  *  Port definitions
514  *
515  *************************************/
516 
517 static INPUT_PORTS_START( zaxxon )
518 	PORT_START("SW00")
519 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
520 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
521 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
522 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
523 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
524 	PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED )
525 
526 	PORT_START("SW01")
527 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
528 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
529 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
530 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
531 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
532 	PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED )
533 
534 	PORT_START("SW100")
535 	PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED )
536 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
537 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 )
538 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
539 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(zaxxon_state, zaxxon_coin_r<0>)
540 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(zaxxon_state, zaxxon_coin_r<1>)
541 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(zaxxon_state, zaxxon_coin_r<2>)
542 
543 	PORT_START("COIN")
544 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )    PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_inserted, 0)
545 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )    PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_inserted, 1)
546 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_inserted, 2)
547 
548 	PORT_START("SERVICESW")
549 	PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_HIGH ) PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,service_switch, 0)
550 
551 	PORT_START("DSW02")
552 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:!1,!2")
553 	PORT_DIPSETTING(    0x03, "10000" )
554 	PORT_DIPSETTING(    0x01, "20000" )
555 	PORT_DIPSETTING(    0x02, "30000" )
556 	PORT_DIPSETTING(    0x00, "40000" )
557 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:!3")
558 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
559 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
560 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:!4")
561 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
562 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
563 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:!5,!6")
564 	PORT_DIPSETTING(    0x30, "3" )
565 	PORT_DIPSETTING(    0x10, "4" )
566 	PORT_DIPSETTING(    0x20, "5" )
567 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
568 	PORT_DIPNAME( 0x40, 0x40, "Sound" ) PORT_DIPLOCATION("SW1:!7")
569 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
570 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
571 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:!8")
572 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
573 	PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
574 
575 	PORT_START("DSW03")
576 	PORT_DIPNAME( 0x0f, 0x03, DEF_STR ( Coin_B ) ) PORT_DIPLOCATION("SW2:!1,!2,!3,!4")
577 	PORT_DIPSETTING(    0x0f, DEF_STR ( 4C_1C ) )
578 	PORT_DIPSETTING(    0x07, DEF_STR ( 3C_1C ) )
579 	PORT_DIPSETTING(    0x0b, DEF_STR ( 2C_1C ) )
580 	PORT_DIPSETTING(    0x06, "2C/1C 5C/3C 6C/4C" )
581 	PORT_DIPSETTING(    0x0a, "2C/1C 3C/2C 4C/3C" )
582 	PORT_DIPSETTING(    0x03, DEF_STR ( 1C_1C ) )
583 	PORT_DIPSETTING(    0x02, "1C/1C 5C/6C" )
584 	PORT_DIPSETTING(    0x0c, "1C/1C 4C/5C" )
585 	PORT_DIPSETTING(    0x04, "1C/1C 2C/3C" )
586 	PORT_DIPSETTING(    0x0d, DEF_STR ( 1C_2C ) )
587 	PORT_DIPSETTING(    0x08, "1C/2C 5C/11C" )
588 	PORT_DIPSETTING(    0x00, "1C/2C 4C/9C" )
589 	PORT_DIPSETTING(    0x05, DEF_STR ( 1C_3C ) )
590 	PORT_DIPSETTING(    0x09, DEF_STR ( 1C_4C ) )
591 	PORT_DIPSETTING(    0x01, DEF_STR ( 1C_5C ) )
592 	PORT_DIPSETTING(    0x0e, DEF_STR ( 1C_6C ) )
593 	PORT_DIPNAME( 0xf0, 0x30, DEF_STR ( Coin_A ) ) PORT_DIPLOCATION("SW2:!5,!6,!7,!8")
594 	PORT_DIPSETTING(    0xf0, DEF_STR ( 4C_1C ) )
595 	PORT_DIPSETTING(    0x70, DEF_STR ( 3C_1C ) )
596 	PORT_DIPSETTING(    0xb0, DEF_STR ( 2C_1C ) )
597 	PORT_DIPSETTING(    0x60, "2C/1C 5C/3C 6C/4C" )
598 	PORT_DIPSETTING(    0xa0, "2C/1C 3C/2C 4C/3C" )
599 	PORT_DIPSETTING(    0x30, DEF_STR ( 1C_1C ) )
600 	PORT_DIPSETTING(    0x20, "1C/1C 5C/6C" )
601 	PORT_DIPSETTING(    0xc0, "1C/1C 4C/5C" )
602 	PORT_DIPSETTING(    0x40, "1C/1C 2C/3C" )
603 	PORT_DIPSETTING(    0xd0, DEF_STR ( 1C_2C ) )
604 	PORT_DIPSETTING(    0x80, "1C/2C 5C/11C" )
605 	PORT_DIPSETTING(    0x00, "1C/2C 4C/9C" )
606 	PORT_DIPSETTING(    0x50, DEF_STR ( 1C_3C ) )
607 	PORT_DIPSETTING(    0x90, DEF_STR ( 1C_4C ) )
608 	PORT_DIPSETTING(    0x10, DEF_STR ( 1C_5C ) )
609 	PORT_DIPSETTING(    0xe0, DEF_STR ( 1C_6C ) )
610 INPUT_PORTS_END
611 
612 
613 static INPUT_PORTS_START( szaxxon )
614 	PORT_INCLUDE(zaxxon)
615 
616 	PORT_MODIFY("DSW02")
617 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Difficulty ) )
618 	PORT_DIPSETTING(    0x04, DEF_STR( Normal ) )
619 	PORT_DIPSETTING(    0x00, DEF_STR( Hard ) )
620 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
621 INPUT_PORTS_END
622 
623 
624 static INPUT_PORTS_START( futspy )
625 	PORT_INCLUDE(zaxxon)
626 
627 	PORT_MODIFY("SW00")
628 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
629 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
630 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 )
631 	PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
632 
633 	PORT_MODIFY("SW01")
634 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL
635 	PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
636 
637 	PORT_MODIFY("DSW02")
638 	PORT_DIPNAME( 0x0f, 0x00, DEF_STR ( Coin_A ) )      PORT_DIPLOCATION("SW1:1,2,3,4")
639 	PORT_DIPSETTING(    0x08, DEF_STR ( 4C_1C ) )
640 	PORT_DIPSETTING(    0x07, DEF_STR ( 3C_1C ) )
641 	PORT_DIPSETTING(    0x06, DEF_STR ( 2C_1C ) )
642 	PORT_DIPSETTING(    0x0a, "2C/1C 5C/3C 6C/4C" )
643 	PORT_DIPSETTING(    0x0b, "2C/1C 4C/3C" )
644 	PORT_DIPSETTING(    0x00, DEF_STR ( 1C_1C ) )
645 	PORT_DIPSETTING(    0x0e, "1C/1C 2C/3C" )
646 	PORT_DIPSETTING(    0x0d, "1C/1C 4C/5C" )
647 	PORT_DIPSETTING(    0x0c, "1C/1C 5C/6C" )
648 	PORT_DIPSETTING(    0x09, DEF_STR ( 2C_3C ) )
649 	PORT_DIPSETTING(    0x01, DEF_STR ( 1C_2C ) )
650 	PORT_DIPSETTING(    0x0f, "1C/2C 5C/11C" )
651 	PORT_DIPSETTING(    0x02, DEF_STR ( 1C_3C ) )
652 	PORT_DIPSETTING(    0x03, DEF_STR ( 1C_4C ) )
653 	PORT_DIPSETTING(    0x04, DEF_STR ( 1C_5C ) )
654 	PORT_DIPSETTING(    0x05, DEF_STR ( 1C_6C ) )
655 	PORT_DIPNAME( 0xf0, 0x00, DEF_STR ( Coin_B ) )      PORT_DIPLOCATION("SW1:5,6,7,8")
656 	PORT_DIPSETTING(    0x80, DEF_STR ( 4C_1C ) )
657 	PORT_DIPSETTING(    0x70, DEF_STR ( 3C_1C ) )
658 	PORT_DIPSETTING(    0x60, DEF_STR ( 2C_1C ) )
659 	PORT_DIPSETTING(    0xa0, "2C/1C 5C/3C 6C/4C" )
660 	PORT_DIPSETTING(    0xb0, "2C/1C 4C/3C" )
661 	PORT_DIPSETTING(    0x00, DEF_STR ( 1C_1C ) )
662 	PORT_DIPSETTING(    0xe0, "1C/1C 2C/3C" )
663 	PORT_DIPSETTING(    0xd0, "1C/1C 4C/5C" )
664 	PORT_DIPSETTING(    0xc0, "1C/1C 5C/6C" )
665 	PORT_DIPSETTING(    0x90, DEF_STR ( 2C_3C ) )
666 	PORT_DIPSETTING(    0x10, DEF_STR ( 1C_2C ) )
667 	PORT_DIPSETTING(    0xf0, "1C/2C 5C/11C" )
668 	PORT_DIPSETTING(    0x20, DEF_STR ( 1C_3C ) )
669 	PORT_DIPSETTING(    0x30, DEF_STR ( 1C_4C ) )
670 	PORT_DIPSETTING(    0x40, DEF_STR ( 1C_5C ) )
671 	PORT_DIPSETTING(    0x50, DEF_STR ( 1C_6C ) )
672 
673 	PORT_MODIFY("DSW03")
674 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )      PORT_DIPLOCATION("SW2:1")
675 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
676 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
677 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) )  PORT_DIPLOCATION("SW2:2")
678 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
679 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
680 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW2:3,4")
681 	PORT_DIPSETTING(    0x00, "3" )
682 	PORT_DIPSETTING(    0x04, "4" )
683 	PORT_DIPSETTING(    0x08, "5" )
684 	PORT_DIPSETTING(    0x0c, DEF_STR( Free_Play ) )
685 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:5,6")
686 	PORT_DIPSETTING(    0x00, "20K 40K 60K" )
687 	PORT_DIPSETTING(    0x10, "30K 60K 90K" )
688 	PORT_DIPSETTING(    0x20, "40K 70K 100K" )
689 	PORT_DIPSETTING(    0x30, "40K 80K 120K" )
690 	PORT_DIPNAME( 0xc0, 0x40, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW2:7,8")
691 	PORT_DIPSETTING(    0x00, DEF_STR( Easy ) )
692 	PORT_DIPSETTING(    0x40, DEF_STR( Medium ) )
693 	PORT_DIPSETTING(    0x80, DEF_STR( Hard ) )
694 	PORT_DIPSETTING(    0xc0, DEF_STR( Hardest ) )
695 INPUT_PORTS_END
696 
697 
698 static INPUT_PORTS_START( razmataz )
699 	PORT_START("SW00")
700 	PORT_BIT( 0xff, 0x00, IPT_CUSTOM) PORT_CUSTOM_MEMBER(zaxxon_state, razmataz_dial_r<0>)
701 
702 	PORT_START("DIAL.0")
703 	PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(30) PORT_KEYDELTA(15) PORT_RESET PORT_PLAYER(1)
704 
705 	PORT_START("SW01")
706 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
707 
708 	PORT_START("SW04")
709 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
710 	PORT_BIT( 0x1e, IP_ACTIVE_HIGH, IPT_UNUSED )
711 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
712 	PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
713 
714 	PORT_START("SW08")
715 	PORT_BIT( 0xff, 0x00, IPT_CUSTOM) PORT_CUSTOM_MEMBER(zaxxon_state, razmataz_dial_r<1>)
716 
717 	PORT_START("DIAL.1")
718 	PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(30) PORT_KEYDELTA(15) PORT_RESET PORT_PLAYER(2)
719 
720 	PORT_START("SW0C")
721 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
722 	PORT_BIT( 0x1e, IP_ACTIVE_HIGH, IPT_UNUSED )
723 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 )
724 	PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
725 
726 	PORT_START("SW100")
727 	PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_UNUSED )
728 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(zaxxon_state, zaxxon_coin_r<0>)
729 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(zaxxon_state, zaxxon_coin_r<1>)
730 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(zaxxon_state, zaxxon_coin_r<2>)
731 
732 	PORT_START("COIN")
733 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )    PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_inserted, 0)
734 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )    PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_inserted, 1)
735 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_inserted, 2)
736 
737 	PORT_START("SERVICESW")
738 	PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_HIGH ) PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,service_switch, 0)
739 
740 	PORT_START("DSW02")
741 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Bonus_Life ) )
742 	PORT_DIPSETTING(    0x00, "50000" )
743 	PORT_DIPSETTING(    0x01, "100000" )
744 	PORT_DIPSETTING(    0x02, "150000" )
745 	PORT_DIPSETTING(    0x03, "200000" )
746 	PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Difficulty ) )
747 	PORT_DIPSETTING(    0x00, DEF_STR( Easy ) )
748 	PORT_DIPSETTING(    0x04, DEF_STR( Normal ) )
749 	PORT_DIPSETTING(    0x08, DEF_STR( Hard ) )
750 	PORT_DIPSETTING(    0x0c, DEF_STR( Very_Hard ) )
751 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
752 	PORT_DIPSETTING(    0x00, "3" )
753 	PORT_DIPSETTING(    0x10, "4" )
754 	PORT_DIPSETTING(    0x20, "5" )
755 	PORT_DIPSETTING(    0x30, "6" )
756 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
757 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
758 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
759 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
760 
761 	PORT_START("DSW03")
762 	PORT_DIPNAME( 0x07, 0x03, DEF_STR( Coin_B ) )
763 	PORT_DIPSETTING(    0x00, DEF_STR ( 4C_1C ) )
764 	PORT_DIPSETTING(    0x01, DEF_STR ( 3C_1C ) )
765 	PORT_DIPSETTING(    0x02, DEF_STR ( 2C_1C ) )
766 	PORT_DIPSETTING(    0x03, DEF_STR ( 1C_1C ) )
767 	PORT_DIPSETTING(    0x04, DEF_STR ( 1C_2C ) )
768 	PORT_DIPSETTING(    0x05, DEF_STR ( 1C_3C ) )
769 	PORT_DIPSETTING(    0x06, DEF_STR ( 1C_4C ) )
770 	PORT_DIPSETTING(    0x07, DEF_STR ( 1C_5C ) )
771 	PORT_DIPNAME( 0x38, 0x18, DEF_STR( Coin_A ) )
772 	PORT_DIPSETTING(    0x00, DEF_STR ( 4C_1C ) )
773 	PORT_DIPSETTING(    0x08, DEF_STR ( 3C_1C ) )
774 	PORT_DIPSETTING(    0x10, DEF_STR ( 2C_1C ) )
775 	PORT_DIPSETTING(    0x18, DEF_STR ( 1C_1C ) )
776 	PORT_DIPSETTING(    0x20, DEF_STR ( 1C_2C ) )
777 	PORT_DIPSETTING(    0x28, DEF_STR ( 1C_3C ) )
778 	PORT_DIPSETTING(    0x30, DEF_STR ( 1C_4C ) )
779 	PORT_DIPSETTING(    0x38, DEF_STR ( 1C_5C ) )
780 	PORT_DIPNAME( 0x40, 0x40, "Test Flip Screen" )
781 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
782 	PORT_DIPSETTING(    0x40, DEF_STR( Yes ) )
783 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Free_Play ) )
784 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
785 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
786 INPUT_PORTS_END
787 
788 
789 static INPUT_PORTS_START( ixion )
790 	PORT_INCLUDE(zaxxon)
791 
792 	PORT_MODIFY("SW00")
793 	PORT_BIT( 0xff, 0x00, IPT_CUSTOM) PORT_CUSTOM_MEMBER(zaxxon_state, razmataz_dial_r<0>)
794 
795 	PORT_START("DIAL.0")
796 	PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(30) PORT_KEYDELTA(15) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X) PORT_RESET
797 
798 	PORT_MODIFY("SW01")
799 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
800 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
801 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
802 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
803 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
804 	PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED )
805 
806 	PORT_MODIFY("DSW02")
807 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Bonus_Life ) )
808 	PORT_DIPSETTING(    0x00, "40000" )
809 	PORT_DIPSETTING(    0x01, "60000" )
810 	PORT_DIPSETTING(    0x02, "80000" )
811 	PORT_DIPSETTING(    0x03, "100000" )
812 	PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Lives ) )
813 	PORT_DIPSETTING(    0x00, "2" )
814 	PORT_DIPSETTING(    0x04, "3" )
815 	PORT_DIPSETTING(    0x08, "4" )
816 	PORT_DIPSETTING(    0x0c, "5" )
817 	PORT_DIPNAME( 0x70, 0x30, DEF_STR( Difficulty ) )
818 	PORT_DIPSETTING(    0x00, DEF_STR( Easiest ) )
819 	PORT_DIPSETTING(    0x10, DEF_STR( Easier ) )
820 	PORT_DIPSETTING(    0x20, DEF_STR( Easy ) )
821 	PORT_DIPSETTING(    0x30, DEF_STR( Normal ) )
822 	PORT_DIPSETTING(    0x40, DEF_STR( Medium ) )
823 	PORT_DIPSETTING(    0x50, DEF_STR( Hard ) )
824 	PORT_DIPSETTING(    0x60, DEF_STR( Harder ) )
825 	PORT_DIPSETTING(    0x70, DEF_STR( Hardest ) )
826 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
827 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
828 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
829 
830 	PORT_MODIFY("DSW03")
831 	PORT_DIPNAME( 0x07, 0x03, DEF_STR( Coin_B ) )
832 	PORT_DIPSETTING(    0x00, DEF_STR ( 4C_1C ) )
833 	PORT_DIPSETTING(    0x01, DEF_STR ( 3C_1C ) )
834 	PORT_DIPSETTING(    0x02, DEF_STR ( 2C_1C ) )
835 	PORT_DIPSETTING(    0x03, DEF_STR ( 1C_1C ) )
836 	PORT_DIPSETTING(    0x04, DEF_STR ( 1C_2C ) )
837 	PORT_DIPSETTING(    0x05, DEF_STR ( 1C_3C ) )
838 	PORT_DIPSETTING(    0x06, DEF_STR ( 1C_4C ) )
839 	PORT_DIPSETTING(    0x07, DEF_STR ( 1C_5C ) )
840 	PORT_DIPNAME( 0x38, 0x18, DEF_STR( Coin_A ) )
841 	PORT_DIPSETTING(    0x00, DEF_STR ( 4C_1C ) )
842 	PORT_DIPSETTING(    0x08, DEF_STR ( 3C_1C ) )
843 	PORT_DIPSETTING(    0x10, DEF_STR ( 2C_1C ) )
844 	PORT_DIPSETTING(    0x18, DEF_STR ( 1C_1C ) )
845 	PORT_DIPSETTING(    0x20, DEF_STR ( 1C_2C ) )
846 	PORT_DIPSETTING(    0x28, DEF_STR ( 1C_3C ) )
847 	PORT_DIPSETTING(    0x30, DEF_STR ( 1C_4C ) )
848 	PORT_DIPSETTING(    0x38, DEF_STR ( 1C_5C ) )
849 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
850 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Free_Play ) )
851 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
852 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
853 INPUT_PORTS_END
854 
855 
856 static INPUT_PORTS_START( congo )
857 	PORT_INCLUDE(zaxxon)
858 
859 	PORT_MODIFY("SW00")
860 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
861 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
862 	PORT_DIPNAME( 0x20, 0x00, "Test Back and Target" )
863 	PORT_DIPSETTING(    0x20, DEF_STR( No ) )
864 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
865 	PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
866 
867 	PORT_MODIFY("SW01")
868 	PORT_DIPNAME( 0x20, 0x00, "Test I/O and Dip SW" )
869 	PORT_DIPSETTING(    0x20, DEF_STR( No ) )
870 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
871 	PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
872 
873 	PORT_MODIFY("DSW02")
874 	PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:!3,!4")
875 	PORT_DIPSETTING(    0x0c, DEF_STR( Easy ) )
876 	PORT_DIPSETTING(    0x04, DEF_STR( Medium ) )
877 	PORT_DIPSETTING(    0x08, DEF_STR( Hard ) )
878 	PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
879 INPUT_PORTS_END
880 
881 
882 /*************************************
883  *
884  *  Graphics definitions
885  *
886  *************************************/
887 
888 static const gfx_layout zaxxon_spritelayout =
889 {
890 	32,32,
891 	RGN_FRAC(1,3),
892 	3,
893 	{ RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
894 	{ 0, 1, 2, 3, 4, 5, 6, 7,
895 			8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7,
896 			16*8+0, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+7,
897 			24*8+0, 24*8+1, 24*8+2, 24*8+3, 24*8+4, 24*8+5, 24*8+6, 24*8+7 },
898 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
899 			32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8,
900 			64*8, 65*8, 66*8, 67*8, 68*8, 69*8, 70*8, 71*8,
901 			96*8, 97*8, 98*8, 99*8, 100*8, 101*8, 102*8, 103*8 },
902 	128*8
903 };
904 
905 
906 static GFXDECODE_START( gfx_zaxxon )
907 	GFXDECODE_ENTRY( "gfx_tx", 0, gfx_8x8x2_planar,  0, 64*2 )  /* characters */
908 	GFXDECODE_ENTRY( "gfx_bg", 0, gfx_8x8x3_planar,  0, 32*2 )  /* background tiles */
909 	GFXDECODE_ENTRY( "gfx_spr", 0, zaxxon_spritelayout,  0, 32*2 )  /* sprites */
910 GFXDECODE_END
911 
912 
913 /*************************************
914  *
915  *  Machine driver
916  *
917  *************************************/
918 
root(machine_config & config)919 void zaxxon_state::root(machine_config &config)
920 {
921 	/* basic machine hardware */
922 	Z80(config, m_maincpu, MASTER_CLOCK/16);
923 	m_maincpu->set_addrmap(AS_PROGRAM, &zaxxon_state::zaxxon_map);
924 
925 	I8255A(config, m_ppi);
926 	m_ppi->out_pa_callback().set(FUNC(zaxxon_state::zaxxon_sound_a_w));
927 	m_ppi->out_pb_callback().set(FUNC(zaxxon_state::zaxxon_sound_b_w));
928 	m_ppi->out_pc_callback().set(FUNC(zaxxon_state::zaxxon_sound_c_w));
929 
930 	LS259(config, m_mainlatch[0]); // U55 on Zaxxon IC Board A
931 	m_mainlatch[0]->q_out_cb<0>().set(FUNC(zaxxon_state::coin_enable_w)); // COIN EN A
932 	m_mainlatch[0]->q_out_cb<1>().set(FUNC(zaxxon_state::coin_enable_w)); // COIN EN B
933 	m_mainlatch[0]->q_out_cb<2>().set(FUNC(zaxxon_state::coin_enable_w)); // SERV EN
934 	m_mainlatch[0]->q_out_cb<3>().set(FUNC(zaxxon_state::coin_counter_a_w)); // COUNT A
935 	m_mainlatch[0]->q_out_cb<4>().set(FUNC(zaxxon_state::coin_counter_b_w)); // COUNT B
936 	m_mainlatch[0]->q_out_cb<6>().set(FUNC(zaxxon_state::flipscreen_w)); // FLIP
937 
938 	LS259(config, m_mainlatch[1]); // U56 on Zaxxon IC Board A
939 	m_mainlatch[1]->q_out_cb<0>().set(FUNC(zaxxon_state::int_enable_w)); // INTON
940 	m_mainlatch[1]->q_out_cb<1>().set(FUNC(zaxxon_state::fg_color_w)); // CREF 1
941 	m_mainlatch[1]->q_out_cb<6>().set(FUNC(zaxxon_state::bg_color_w)); // CREF 3
942 	m_mainlatch[1]->q_out_cb<7>().set(FUNC(zaxxon_state::bg_enable_w)); // BEN
943 
944 	/* video hardware */
945 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_zaxxon);
946 	PALETTE(config, m_palette, FUNC(zaxxon_state::zaxxon_palette), 256);
947 
948 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
949 	screen.set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
950 	screen.set_screen_update(FUNC(zaxxon_state::screen_update_zaxxon));
951 	screen.set_palette(m_palette);
952 	screen.screen_vblank().set(FUNC(zaxxon_state::vblank_int));
953 }
954 
955 
zaxxon(machine_config & config)956 void zaxxon_state::zaxxon(machine_config &config)
957 {
958 	root(config);
959 
960 	/* sound hardware */
961 	SPEAKER(config, "speaker").front_center();
962 	zaxxon_samples(config);
963 }
964 
965 
szaxxon(machine_config & config)966 void zaxxon_state::szaxxon(machine_config &config)
967 {
968 	zaxxon(config);
969 	m_maincpu->set_addrmap(AS_OPCODES, &zaxxon_state::decrypted_opcodes_map);
970 }
971 
972 
szaxxone(machine_config & config)973 void zaxxon_state::szaxxone(machine_config &config)
974 {
975 	zaxxon(config);
976 	sega_315_5013_device &maincpu(SEGA_315_5013(config.replace(), m_maincpu, MASTER_CLOCK/16));
977 	maincpu.set_addrmap(AS_PROGRAM, &zaxxon_state::zaxxon_map);
978 	maincpu.set_addrmap(AS_OPCODES, &zaxxon_state::decrypted_opcodes_map);
979 	maincpu.set_decrypted_tag(":decrypted_opcodes");
980 	maincpu.set_size(0x6000);
981 }
982 
983 
futspye(machine_config & config)984 void zaxxon_state::futspye(machine_config &config)
985 {
986 	root(config);
987 	sega_315_5061_device &maincpu(SEGA_315_5061(config.replace(), m_maincpu, MASTER_CLOCK/16));
988 	maincpu.set_addrmap(AS_PROGRAM, &zaxxon_state::zaxxon_map);
989 	maincpu.set_addrmap(AS_OPCODES, &zaxxon_state::decrypted_opcodes_map);
990 	maincpu.set_decrypted_tag(":decrypted_opcodes");
991 	maincpu.set_size(0x6000);
992 
993 
994 	/* video hardware */
995 	subdevice<screen_device>("screen")->set_screen_update(FUNC(zaxxon_state::screen_update_futspy));
996 
997 	/* sound hardware */
998 	SPEAKER(config, "speaker").front_center();
999 	zaxxon_samples(config);
1000 }
1001 
1002 
razmataze(machine_config & config)1003 void zaxxon_state::razmataze(machine_config &config)
1004 {
1005 	root(config);
1006 	sega_315_5098_device &maincpu(SEGA_315_5098(config.replace(), m_maincpu, MASTER_CLOCK/16));
1007 	maincpu.set_addrmap(AS_PROGRAM, &zaxxon_state::ixion_map);
1008 	maincpu.set_addrmap(AS_OPCODES, &zaxxon_state::decrypted_opcodes_map);
1009 	maincpu.set_decrypted_tag(":decrypted_opcodes");
1010 	maincpu.set_size(0x6000);
1011 
1012 	config.device_remove("ppi8255");
1013 
1014 	/* video hardware */
1015 	MCFG_VIDEO_START_OVERRIDE(zaxxon_state,razmataz)
1016 	subdevice<screen_device>("screen")->set_screen_update(FUNC(zaxxon_state::screen_update_razmataz));
1017 
1018 	/* sound hardware */
1019 	SPEAKER(config, "speaker").front_center();
1020 	SEGAUSBROM(config, "usbsnd", 0, m_maincpu).add_route(ALL_OUTPUTS, "speaker", 1.0);
1021 }
1022 
1023 
ixion(machine_config & config)1024 void zaxxon_state::ixion(machine_config &config)
1025 {
1026 	razmataze(config);
1027 	sega_315_5013_device &maincpu(SEGA_315_5013(config.replace(), m_maincpu, MASTER_CLOCK/16));
1028 	maincpu.set_addrmap(AS_PROGRAM, &zaxxon_state::ixion_map);
1029 	maincpu.set_addrmap(AS_OPCODES, &zaxxon_state::decrypted_opcodes_map);
1030 	maincpu.set_decrypted_tag(":decrypted_opcodes");
1031 	maincpu.set_size(0x6000);
1032 
1033 	m_mainlatch[0]->q_out_cb<6>().set_nop(); // flip screen not used
1034 }
1035 
1036 
congo(machine_config & config)1037 void zaxxon_state::congo(machine_config &config)
1038 {
1039 	root(config);
1040 
1041 	m_maincpu->set_addrmap(AS_PROGRAM, &zaxxon_state::congo_map);
1042 
1043 	m_ppi->in_pa_callback().set("soundlatch", FUNC(generic_latch_8_device::read));
1044 	m_ppi->out_pa_callback().set_nop();
1045 	m_ppi->out_pb_callback().set(FUNC(zaxxon_state::congo_sound_b_w));
1046 	m_ppi->out_pc_callback().set(FUNC(zaxxon_state::congo_sound_c_w));
1047 
1048 	// U52 on Control Board
1049 	m_mainlatch[0]->q_out_cb<5>().set(FUNC(zaxxon_state::bg_enable_w)); // BEN
1050 	m_mainlatch[0]->q_out_cb<7>().set(FUNC(zaxxon_state::int_enable_w)); // INTON
1051 
1052 	// U53 on Control Board
1053 	m_mainlatch[1]->q_out_cb<0>().set_nop(); // not used
1054 	m_mainlatch[1]->q_out_cb<3>().set(FUNC(zaxxon_state::bg_color_w)); // CREF 3
1055 	m_mainlatch[1]->q_out_cb<6>().set(FUNC(zaxxon_state::congo_fg_bank_w)); // BS
1056 	m_mainlatch[1]->q_out_cb<7>().set(FUNC(zaxxon_state::congo_color_bank_w)); // CBS
1057 
1058 	z80_device &audiocpu(Z80(config, "audiocpu", SOUND_CLOCK));
1059 	audiocpu.set_addrmap(AS_PROGRAM, &zaxxon_state::congo_sound_map);
1060 	audiocpu.set_periodic_int(FUNC(zaxxon_state::irq0_line_hold), attotime::from_hz(SOUND_CLOCK/16/16/16/4));
1061 
1062 	/* video hardware */
1063 	m_palette->set_entries(512).set_init(FUNC(zaxxon_state::zaxxon_palette));
1064 
1065 	MCFG_VIDEO_START_OVERRIDE(zaxxon_state,congo)
1066 	subdevice<screen_device>("screen")->set_screen_update(FUNC(zaxxon_state::screen_update_congo));
1067 
1068 	/* sound hardware */
1069 	SPEAKER(config, "speaker").front_center();
1070 
1071 	GENERIC_LATCH_8(config, "soundlatch");
1072 
1073 	SN76489A(config, "sn1", SOUND_CLOCK).add_route(ALL_OUTPUTS, "speaker", 1.0); // schematic shows sn76489A
1074 
1075 	SN76489A(config, "sn2", SOUND_CLOCK/4).add_route(ALL_OUTPUTS, "speaker", 1.0); // schematic shows sn76489A
1076 
1077 	congo_samples(config);
1078 }
1079 
1080 
1081 /*************************************
1082  *
1083  *  ROM definitions
1084  *
1085  *************************************/
1086 
1087 ROM_START( zaxxon )
1088 	ROM_REGION( 0x6000, "maincpu", 0 )
1089 	ROM_LOAD( "zaxxon_rom3d.u27",  0x0000, 0x2000, CRC(6e2b4a30) SHA1(80ac53c554c84226b119cbe3cf3470bcdbcd5762) ) /* These 3 roms had a red D stamped on them */
1090 	ROM_LOAD( "zaxxon_rom2d.u28",  0x2000, 0x2000, CRC(1c9ea398) SHA1(0cd259be3fa80f3d53dfa76d5ca06773cdfe5945) )
1091 	ROM_LOAD( "zaxxon_rom1d.u29",  0x4000, 0x1000, CRC(1c123ef9) SHA1(2588be06ea7baca6112d58c78a1eeb98aad8a02e) )
1092 
1093 	ROM_REGION( 0x1000, "gfx_tx", 0 )
1094 	ROM_LOAD( "zaxxon_rom14.u68", 0x0000, 0x0800, CRC(07bf8c52) SHA1(425157a1625b1bd5169c3218b958010bf6af12bb) )
CRC(c215edcb)1095 	ROM_LOAD( "zaxxon_rom15.u69", 0x0800, 0x0800, CRC(c215edcb) SHA1(f1ded2173eb139f48d2ca86c5ef00acbe6c11cd3) )
1096 
1097 	ROM_REGION( 0x6000, "gfx_bg", 0 )
1098 	ROM_LOAD( "zaxxon_rom6.u113", 0x0000, 0x2000, CRC(6e07bb68) SHA1(a002f3441b0f0044615ce71ecbd14edadba16270) )
1099 	ROM_LOAD( "zaxxon_rom5.u112", 0x2000, 0x2000, CRC(0a5bce6a) SHA1(a86543727389931244ba8a576b543d7ac05a2585) )
1100 	ROM_LOAD( "zaxxon_rom4.u111", 0x4000, 0x2000, CRC(a5bf1465) SHA1(a8cd27dfb4a606bae8bfddcf936e69e980fb1977) )
1101 
1102 	ROM_REGION( 0x6000, "gfx_spr", 0 )
1103 	ROM_LOAD( "zaxxon_rom11.u77", 0x0000, 0x2000, CRC(eaf0dd4b) SHA1(194e2ca0a806e0cb6bb7cc8341d1fc6f2ea911f6) )
1104 	ROM_LOAD( "zaxxon_rom12.u78", 0x2000, 0x2000, CRC(1c5369c7) SHA1(af6a5984c3cedfa8c9efcd669f4f205b51a433b2) )
1105 	ROM_LOAD( "zaxxon_rom13.u79", 0x4000, 0x2000, CRC(ab4e8a9a) SHA1(4ac79cccc30e4adfa878b36101e97e20ac010438) )
1106 
1107 	ROM_REGION( 0x8000, "tilemap_dat", 0 )
1108 	ROM_LOAD( "zaxxon_rom8.u91",  0x0000, 0x2000, CRC(28d65063) SHA1(e1f90716236c61df61bdc6915a8e390cb4dcbf15) )
1109 	ROM_LOAD( "zaxxon_rom7.u90",  0x2000, 0x2000, CRC(6284c200) SHA1(d26a9049541479b8b19f5aa0690cf4aaa787c9b5) )
1110 	ROM_LOAD( "zaxxon_rom10.u93", 0x4000, 0x2000, CRC(a95e61fd) SHA1(a0f8c15ff75affa3532abf8f340811cf415421fd) )
1111 	ROM_LOAD( "zaxxon_rom9.u92",  0x6000, 0x2000, CRC(7e42691f) SHA1(2124363be8f590b74e2b15dd3f90d77dd9ca9528) )
1112 
1113 	ROM_REGION( 0x0200, "proms", 0 )
1114 	ROM_LOAD( "mro16.u76",   0x0000, 0x0100, CRC(6cc6695b) SHA1(01ae8450ccc302e1a5ae74230d44f6f531a962e2) ) /* BPROM from TI stamped as J214A2  MRO16 */
1115 	ROM_LOAD( "zaxxon.u72",  0x0100, 0x0100, CRC(deaa21f7) SHA1(0cf08fb62f77d93ff7cb883c633e0db35906e11d) ) /* Same data as PR-5167 from Super Zaxxon */
1116 ROM_END
1117 
1118 ROM_START( zaxxon2 )
1119 	ROM_REGION( 0x6000, "maincpu", 0 )
1120 	ROM_LOAD( "zaxxon_rom3a.u27", 0x0000, 0x2000, CRC(b18e428a) SHA1(d3ff077e37a3ed8a9cc32cba19e1694b79df6b30) ) /* Need to verify proper revision level via ROM label */
1121 	ROM_LOAD( "zaxxon_rom2a.u28", 0x2000, 0x2000, CRC(1c9ea398) SHA1(0cd259be3fa80f3d53dfa76d5ca06773cdfe5945) ) /* Need to verify proper revision level via ROM label */
1122 	ROM_LOAD( "zaxxon_rom1a.u29", 0x4000, 0x1000, CRC(1977d933) SHA1(b0100a51a85928b8df3b07b27c9e7e4f929d7893) ) /* Need to verify proper revision level via ROM label */
1123 
1124 	ROM_REGION( 0x1000, "gfx_tx", 0 )
1125 	ROM_LOAD( "zaxxon_rom14.u68", 0x0000, 0x0800, CRC(07bf8c52) SHA1(425157a1625b1bd5169c3218b958010bf6af12bb) )
1126 	ROM_LOAD( "zaxxon_rom15.u69", 0x0800, 0x0800, CRC(c215edcb) SHA1(f1ded2173eb139f48d2ca86c5ef00acbe6c11cd3) )
1127 
1128 	ROM_REGION( 0x6000, "gfx_bg", 0 )
1129 	ROM_LOAD( "zaxxon_rom6.u113", 0x0000, 0x2000, CRC(6e07bb68) SHA1(a002f3441b0f0044615ce71ecbd14edadba16270) )
1130 	ROM_LOAD( "zaxxon_rom5.u112", 0x2000, 0x2000, CRC(0a5bce6a) SHA1(a86543727389931244ba8a576b543d7ac05a2585) )
1131 	ROM_LOAD( "zaxxon_rom4.u111", 0x4000, 0x2000, CRC(a5bf1465) SHA1(a8cd27dfb4a606bae8bfddcf936e69e980fb1977) )
1132 
1133 	ROM_REGION( 0x6000, "gfx_spr", 0 )
1134 	ROM_LOAD( "zaxxon_rom11.u77", 0x0000, 0x2000, CRC(eaf0dd4b) SHA1(194e2ca0a806e0cb6bb7cc8341d1fc6f2ea911f6) )
1135 	ROM_LOAD( "zaxxon_rom12.u78", 0x2000, 0x2000, CRC(1c5369c7) SHA1(af6a5984c3cedfa8c9efcd669f4f205b51a433b2) )
1136 	ROM_LOAD( "zaxxon_rom13.u79", 0x4000, 0x2000, CRC(ab4e8a9a) SHA1(4ac79cccc30e4adfa878b36101e97e20ac010438) )
1137 
1138 	ROM_REGION( 0x8000, "tilemap_dat", 0 )
1139 	ROM_LOAD( "zaxxon_rom8.u91",  0x0000, 0x2000, CRC(28d65063) SHA1(e1f90716236c61df61bdc6915a8e390cb4dcbf15) )
1140 	ROM_LOAD( "zaxxon_rom7.u90",  0x2000, 0x2000, CRC(6284c200) SHA1(d26a9049541479b8b19f5aa0690cf4aaa787c9b5) )
1141 	ROM_LOAD( "zaxxon_rom10.u93", 0x4000, 0x2000, CRC(a95e61fd) SHA1(a0f8c15ff75affa3532abf8f340811cf415421fd) )
1142 	ROM_LOAD( "zaxxon_rom9.u92",  0x6000, 0x2000, CRC(7e42691f) SHA1(2124363be8f590b74e2b15dd3f90d77dd9ca9528) )
1143 
1144 	ROM_REGION( 0x0200, "proms", 0 )
1145 	ROM_LOAD( "mro16.u76",   0x0000, 0x0100, CRC(6cc6695b) SHA1(01ae8450ccc302e1a5ae74230d44f6f531a962e2) ) /* BPROM from TI stamped as J214A2  MRO16 */
1146 	ROM_LOAD( "mro17.u41",   0x0100, 0x0100, CRC(a9e1fb43) SHA1(57dbcfe2438fd090c08594818549aeea6339eab2) ) /* BPROM from TI stamped as J214A2  MRO17 */
1147 ROM_END
1148 
1149 ROM_START( zaxxon3 )
1150 	ROM_REGION( 0x6000, "maincpu", 0 )
1151 	ROM_LOAD( "zaxxon3_alt.u27", 0x0000, 0x2000, CRC(2f2f2b7c) SHA1(009b6f8943b35bf933c56e9538377be3e1db6a6d) ) /* Need to verify proper revision level via ROM label */
1152 	ROM_LOAD( "zaxxon2_alt.u28", 0x2000, 0x2000, CRC(ae7e1c38) SHA1(896f920e04c182eced3a3714b45a1d96e45b4473) ) /* Need to verify proper revision level via ROM label */
1153 	ROM_LOAD( "zaxxon1_alt.u29", 0x4000, 0x1000, CRC(cc67c097) SHA1(d258b2900a173b0f3f8acd94b6b636ce3324616d) ) /* Need to verify proper revision level via ROM label */
1154 
1155 	ROM_REGION( 0x1000, "gfx_tx", 0 )
1156 	ROM_LOAD( "zaxxon_rom14.u68", 0x0000, 0x0800, CRC(07bf8c52) SHA1(425157a1625b1bd5169c3218b958010bf6af12bb) )
1157 	ROM_LOAD( "zaxxon_rom15.u69", 0x0800, 0x0800, CRC(c215edcb) SHA1(f1ded2173eb139f48d2ca86c5ef00acbe6c11cd3) )
1158 
1159 	ROM_REGION( 0x6000, "gfx_bg", 0 )
1160 	ROM_LOAD( "zaxxon_rom6.u113", 0x0000, 0x2000, CRC(6e07bb68) SHA1(a002f3441b0f0044615ce71ecbd14edadba16270) )
1161 	ROM_LOAD( "zaxxon_rom5.u112", 0x2000, 0x2000, CRC(0a5bce6a) SHA1(a86543727389931244ba8a576b543d7ac05a2585) )
1162 	ROM_LOAD( "zaxxon_rom4.u111", 0x4000, 0x2000, CRC(a5bf1465) SHA1(a8cd27dfb4a606bae8bfddcf936e69e980fb1977) )
1163 
1164 	ROM_REGION( 0x6000, "gfx_spr", 0 )
1165 	ROM_LOAD( "zaxxon_rom11.u77", 0x0000, 0x2000, CRC(eaf0dd4b) SHA1(194e2ca0a806e0cb6bb7cc8341d1fc6f2ea911f6) )
1166 	ROM_LOAD( "zaxxon_rom12.u78", 0x2000, 0x2000, CRC(1c5369c7) SHA1(af6a5984c3cedfa8c9efcd669f4f205b51a433b2) )
1167 	ROM_LOAD( "zaxxon_rom13.u79", 0x4000, 0x2000, CRC(ab4e8a9a) SHA1(4ac79cccc30e4adfa878b36101e97e20ac010438) )
1168 
1169 	ROM_REGION( 0x8000, "tilemap_dat", 0 )
1170 	ROM_LOAD( "zaxxon_rom8.u91",  0x0000, 0x2000, CRC(28d65063) SHA1(e1f90716236c61df61bdc6915a8e390cb4dcbf15) )
1171 	ROM_LOAD( "zaxxon_rom7.u90",  0x2000, 0x2000, CRC(6284c200) SHA1(d26a9049541479b8b19f5aa0690cf4aaa787c9b5) )
1172 	ROM_LOAD( "zaxxon_rom10.u93", 0x4000, 0x2000, CRC(a95e61fd) SHA1(a0f8c15ff75affa3532abf8f340811cf415421fd) )
1173 	ROM_LOAD( "zaxxon_rom9.u92",  0x6000, 0x2000, CRC(7e42691f) SHA1(2124363be8f590b74e2b15dd3f90d77dd9ca9528) )
1174 
1175 	ROM_REGION( 0x0200, "proms", 0 )
1176 	ROM_LOAD( "mro16.u76",   0x0000, 0x0100, CRC(6cc6695b) SHA1(01ae8450ccc302e1a5ae74230d44f6f531a962e2) ) /* BPROM from TI stamped as J214A2  MRO16 */
1177 	ROM_LOAD( "mro17.u41",   0x0100, 0x0100, CRC(a9e1fb43) SHA1(57dbcfe2438fd090c08594818549aeea6339eab2) ) /* BPROM from TI stamped as J214A2  MRO17 */
1178 ROM_END
1179 
1180 ROM_START( zaxxonj )
1181 	ROM_REGION( 0x6000, "maincpu", 0 )
1182 	ROM_LOAD( "zaxxon_rom3.u13",  0x0000, 0x2000, CRC(925168c7) SHA1(0f14b5072b5be252955ffb3a30fa6c76b3e6a6c4) )
1183 	ROM_LOAD( "zaxxon_rom2.u12",  0x2000, 0x2000, CRC(c088df92) SHA1(c0c6cd8dcf6db65129980331fa9ecc3800b63436) )
1184 	ROM_LOAD( "zaxxon_rom1.u11",  0x4000, 0x1000, CRC(f832dd79) SHA1(1d626f22630eaa53603637991a06aeb7401e9769) )
1185 
1186 	ROM_REGION( 0x1000, "gfx_tx", 0 )
1187 	ROM_LOAD( "zaxxon_rom14.u54", 0x0000, 0x0800, CRC(07bf8c52) SHA1(425157a1625b1bd5169c3218b958010bf6af12bb) )
1188 	ROM_LOAD( "zaxxon_rom15.u55", 0x0800, 0x0800, CRC(c215edcb) SHA1(f1ded2173eb139f48d2ca86c5ef00acbe6c11cd3) )
1189 
1190 	ROM_REGION( 0x6000, "gfx_bg", 0 )
1191 	ROM_LOAD( "zaxxon_rom6.u70",  0x0000, 0x2000, CRC(6e07bb68) SHA1(a002f3441b0f0044615ce71ecbd14edadba16270) )
1192 	ROM_LOAD( "zaxxon_rom5.u69",  0x2000, 0x2000, CRC(0a5bce6a) SHA1(a86543727389931244ba8a576b543d7ac05a2585) )
1193 	ROM_LOAD( "zaxxon_rom4.u68",  0x4000, 0x2000, CRC(a5bf1465) SHA1(a8cd27dfb4a606bae8bfddcf936e69e980fb1977) )
1194 
1195 	ROM_REGION( 0x6000, "gfx_spr", 0 )
1196 	ROM_LOAD( "zaxxon_rom11.u59", 0x0000, 0x2000, CRC(eaf0dd4b) SHA1(194e2ca0a806e0cb6bb7cc8341d1fc6f2ea911f6) )
1197 	ROM_LOAD( "zaxxon_rom12.u60", 0x2000, 0x2000, CRC(1c5369c7) SHA1(af6a5984c3cedfa8c9efcd669f4f205b51a433b2) )
1198 	ROM_LOAD( "zaxxon_rom13.u61", 0x4000, 0x2000, CRC(ab4e8a9a) SHA1(4ac79cccc30e4adfa878b36101e97e20ac010438) )
1199 
1200 	ROM_REGION( 0x8000, "tilemap_dat", 0 )
1201 	ROM_LOAD( "zaxxon_rom8.u58",  0x0000, 0x2000, CRC(28d65063) SHA1(e1f90716236c61df61bdc6915a8e390cb4dcbf15) )
1202 	ROM_LOAD( "zaxxon_rom7.u57",  0x2000, 0x2000, CRC(6284c200) SHA1(d26a9049541479b8b19f5aa0690cf4aaa787c9b5) )
1203 	ROM_LOAD( "zaxxon_rom10.u60", 0x4000, 0x2000, CRC(a95e61fd) SHA1(a0f8c15ff75affa3532abf8f340811cf415421fd) )
1204 	ROM_LOAD( "zaxxon_rom9.u59",  0x6000, 0x2000, CRC(7e42691f) SHA1(2124363be8f590b74e2b15dd3f90d77dd9ca9528) )
1205 
1206 	ROM_REGION( 0x0200, "proms", 0 )
1207 	ROM_LOAD( "mro16.u76",   0x0000, 0x0100, CRC(6cc6695b) SHA1(01ae8450ccc302e1a5ae74230d44f6f531a962e2) ) /* BPROM from TI stamped as J214A2  MRO16 */
1208 	ROM_LOAD( "mro17.u41",   0x0100, 0x0100, CRC(a9e1fb43) SHA1(57dbcfe2438fd090c08594818549aeea6339eab2) ) /* BPROM from TI stamped as J214A2  MRO17 */
1209 ROM_END
1210 
1211 ROM_START( zaxxonb )
1212 	ROM_REGION( 0x6000, "maincpu", 0 )
1213 	ROM_LOAD( "jackson_rom3.u27", 0x0000, 0x2000, CRC(125bca1c) SHA1(f4160966d42e5282736cde8a276204ba8910ca61) ) /* Need to verify ALL the labels in this set */
1214 	ROM_LOAD( "jackson_rom2.u28", 0x2000, 0x2000, CRC(c088df92) SHA1(c0c6cd8dcf6db65129980331fa9ecc3800b63436) ) /* Same data as ROM2 from the Japanese set */
1215 	ROM_LOAD( "jackson_rom1.u29", 0x4000, 0x1000, CRC(e7bdc417) SHA1(209f0d259f60b984c84229bb31af1ef939adc73e) )
1216 
1217 	ROM_REGION( 0x1000, "gfx_tx", 0 )
1218 	ROM_LOAD( "zaxxon_rom14.u54", 0x0000, 0x0800, CRC(07bf8c52) SHA1(425157a1625b1bd5169c3218b958010bf6af12bb) )
1219 	ROM_LOAD( "zaxxon_rom15.u55", 0x0800, 0x0800, CRC(c215edcb) SHA1(f1ded2173eb139f48d2ca86c5ef00acbe6c11cd3) )
1220 
1221 	ROM_REGION( 0x6000, "gfx_bg", 0 )
1222 	ROM_LOAD( "zaxxon_rom6.u70",  0x0000, 0x2000, CRC(6e07bb68) SHA1(a002f3441b0f0044615ce71ecbd14edadba16270) )
1223 	ROM_LOAD( "zaxxon_rom5.u69",  0x2000, 0x2000, CRC(0a5bce6a) SHA1(a86543727389931244ba8a576b543d7ac05a2585) )
1224 	ROM_LOAD( "zaxxon_rom4.u68",  0x4000, 0x2000, CRC(a5bf1465) SHA1(a8cd27dfb4a606bae8bfddcf936e69e980fb1977) )
1225 
1226 	ROM_REGION( 0x6000, "gfx_spr", 0 )
1227 	ROM_LOAD( "zaxxon_rom11.u59", 0x0000, 0x2000, CRC(eaf0dd4b) SHA1(194e2ca0a806e0cb6bb7cc8341d1fc6f2ea911f6) )
1228 	ROM_LOAD( "zaxxon_rom12.u60", 0x2000, 0x2000, CRC(1c5369c7) SHA1(af6a5984c3cedfa8c9efcd669f4f205b51a433b2) )
1229 	ROM_LOAD( "zaxxon_rom13.u61", 0x4000, 0x2000, CRC(ab4e8a9a) SHA1(4ac79cccc30e4adfa878b36101e97e20ac010438) )
1230 
1231 	ROM_REGION( 0x8000, "tilemap_dat", 0 )
1232 	ROM_LOAD( "zaxxon_rom8.u58",  0x0000, 0x2000, CRC(28d65063) SHA1(e1f90716236c61df61bdc6915a8e390cb4dcbf15) )
1233 	ROM_LOAD( "zaxxon_rom7.u57",  0x2000, 0x2000, CRC(6284c200) SHA1(d26a9049541479b8b19f5aa0690cf4aaa787c9b5) )
1234 	ROM_LOAD( "zaxxon_rom10.u60", 0x4000, 0x2000, CRC(a95e61fd) SHA1(a0f8c15ff75affa3532abf8f340811cf415421fd) )
1235 	ROM_LOAD( "zaxxon_rom9.u59",  0x6000, 0x2000, CRC(7e42691f) SHA1(2124363be8f590b74e2b15dd3f90d77dd9ca9528) )
1236 
1237 	ROM_REGION( 0x0200, "proms", 0 )
1238 	ROM_LOAD( "mro16.u76",   0x0000, 0x0100, CRC(6cc6695b) SHA1(01ae8450ccc302e1a5ae74230d44f6f531a962e2) ) /* BPROM from TI stamped as J214A2  MRO16 */
1239 	ROM_LOAD( "zaxxon.u72",  0x0100, 0x0100, CRC(deaa21f7) SHA1(0cf08fb62f77d93ff7cb883c633e0db35906e11d) )
1240 ROM_END
1241 
1242 
1243 ROM_START( szaxxon )
1244 	ROM_REGION( 0x6000, "maincpu", 0 )
1245 	ROM_LOAD( "1804e.u27",   0x0000, 0x2000, CRC(af7221da) SHA1(b5d3beb296d52ed69b4ceacf329c20a72e3a1dce) )
1246 	ROM_LOAD( "1803e.u28",   0x2000, 0x2000, CRC(1b90fb2a) SHA1(afb2bd2ffee3f5e589064f59b6ac21ed915094df) )
1247 	ROM_LOAD( "1802e.u29",   0x4000, 0x1000, CRC(07258b4a) SHA1(91e3a0c0df6c9cf66980d1ffcc3830ffdbef8c2f) )
1248 
1249 	ROM_REGION( 0x1000, "gfx_tx", 0 )
1250 	ROM_LOAD( "1815b.u68",   0x0000, 0x0800, CRC(bccf560c) SHA1(9f92bd15466048a5665bfc2ebc8c6504af9353eb) )
1251 	ROM_LOAD( "1816b.u69",   0x0800, 0x0800, CRC(d28c628b) SHA1(42ab7dc0e4e0d09213054597373383cdb6a55699) )
1252 
1253 	ROM_REGION( 0x6000, "gfx_bg", 0 )
1254 	ROM_LOAD( "1807b.u113",  0x0000, 0x2000, CRC(f51af375) SHA1(8682217dc800f43b73cd5e8501dbf3b7cd136dc1) )
1255 	ROM_LOAD( "1806b.u112",  0x2000, 0x2000, CRC(a7de021d) SHA1(a1bee07aa906366aa69866d1bdff38e2d90fafdd) )
1256 	ROM_LOAD( "1805b.u111",  0x4000, 0x2000, CRC(5bfb3b04) SHA1(f898e42d6bc1fd3629c9caee3c2af27805969ac6) )
1257 
1258 	ROM_REGION( 0x6000, "gfx_spr", 0 )
1259 	ROM_LOAD( "1812e.u77",   0x0000, 0x2000, CRC(1503ae41) SHA1(d4085f15fcbfb9547a7f9e2cb7ce9276c4d6c08d) )
1260 	ROM_LOAD( "1813e.u78",   0x2000, 0x2000, CRC(3b53d83f) SHA1(118e9d2b4f5daf96f5a38ccd92d0b046a470b0b2) )
1261 	ROM_LOAD( "1814e.u79",   0x4000, 0x2000, CRC(581e8793) SHA1(2b3305dd55dc09d7394ed8ae691773972dba28b9) )
1262 
1263 	ROM_REGION( 0x8000, "tilemap_dat", 0 )
1264 	ROM_LOAD( "1809b.u91",   0x0000, 0x2000, CRC(dd1b52df) SHA1(8170dd9f81c41104694951a2c74405d0c6d8b9b6) )
1265 	ROM_LOAD( "1808b.u90",   0x2000, 0x2000, CRC(b5bc07f0) SHA1(1e4d460ce8cca66b081ee8ec1a9adb6ef98274ec) )
1266 	ROM_LOAD( "1811b.u93",   0x4000, 0x2000, CRC(68e84174) SHA1(b78c44d92078552835a20bcb7125fc9ca8af5048) )
1267 	ROM_LOAD( "1810b.u92",   0x6000, 0x2000, CRC(a509994b) SHA1(51541ec78ab3f8241a5ddf7f99a46f5e44292992) )
1268 
1269 	ROM_REGION( 0x0200, "proms", 0 )
1270 	ROM_LOAD( "pr-5168.u98", 0x0000, 0x0100, CRC(15727a9f) SHA1(42840e9ab303fb64102a1dbae03d66c9cf743a9f) ) /* TBP24S10N */
1271 	ROM_LOAD( "pr-5167.u72", 0x0100, 0x0100, CRC(deaa21f7) SHA1(0cf08fb62f77d93ff7cb883c633e0db35906e11d) ) /* TBP28L22 */
1272 ROM_END
1273 
1274 
1275 ROM_START( futspy )
1276 	ROM_REGION( 0x6000, "maincpu", 0 )
1277 	ROM_LOAD( "fs_snd.u27",   0x0000, 0x2000, CRC(7578fe7f) SHA1(ab42bdf74b07c1ba5337c3d34647d3ee16f9db05) )
1278 	ROM_LOAD( "fs_snd.u28",   0x2000, 0x2000, CRC(8ade203c) SHA1(f095f4019befff7af4203c886ef42357f79592a1) )
1279 	ROM_LOAD( "fs_snd.u29",   0x4000, 0x1000, CRC(734299c3) SHA1(12acf71d9d00e0e0df29c4d8c397ad407266b364) )
1280 
1281 	ROM_REGION( 0x1000, "gfx_tx", 0 )
1282 	ROM_LOAD( "fs_snd.u68",   0x0000, 0x0800, CRC(305fae2d) SHA1(fbe89feff0fb2d4515000d1b73b7c91aac4e0b67) )
1283 	ROM_LOAD( "fs_snd.u69",   0x0800, 0x0800, CRC(3c5658c0) SHA1(70ac44b9334b086cdecd73f5f7820a0bf8ae2629) )
1284 
1285 	ROM_REGION( 0x6000, "gfx_bg", 0 )
1286 	ROM_LOAD( "fs_vid.u113",  0x0000, 0x2000, CRC(36d2bdf6) SHA1(c27835055beedf61ba644070f8920b6008d99040) )
1287 	ROM_LOAD( "fs_vid.u112",  0x2000, 0x2000, CRC(3740946a) SHA1(e7579dd91628a811a60a8d8a5b407728b74aa17e) )
1288 	ROM_LOAD( "fs_vid.u111",  0x4000, 0x2000, CRC(4cd4df98) SHA1(3ae4b2d0a79069e0de81596805bcf1a9ae7912cf) )
1289 
1290 	ROM_REGION( 0xc000, "gfx_spr", 0 )
1291 	ROM_LOAD( "fs_vid.u77",   0x0000, 0x4000, CRC(1b93c9ec) SHA1(4b1d3b7e35d65cc3b96eb4f2e98c59e779bcb1c1) )
1292 	ROM_LOAD( "fs_vid.u78",   0x4000, 0x4000, CRC(50e55262) SHA1(363acbde7b37a2358b3e53cfc08c9bd5dee73d55) )
1293 	ROM_LOAD( "fs_vid.u79",   0x8000, 0x4000, CRC(bfb02e3e) SHA1(f53bcec46b8c7d26e9ab01c821a8d1578b85f786) )
1294 
1295 	ROM_REGION( 0x8000, "tilemap_dat", 0 )
1296 	ROM_LOAD( "fs_vid.u91",   0x0000, 0x2000, CRC(86da01f4) SHA1(954e4be1b0e24c8bc88c2b328e3a0e32005bb7b2) )
1297 	ROM_LOAD( "fs_vid.u90",   0x2000, 0x2000, CRC(2bd41d2d) SHA1(efb74b4bce31c7868ab6438e07b02b0539d35120) )
1298 	ROM_LOAD( "fs_vid.u93",   0x4000, 0x2000, CRC(b82b4997) SHA1(263f74aab47fc4e516b2111eaa94beea61c5fbe5) )
1299 	ROM_LOAD( "fs_vid.u92",   0x6000, 0x2000, CRC(af4015af) SHA1(6ed01a42d395ada6f2442b68f901fe61b04c8e44) )
1300 
1301 	ROM_REGION( 0x0200, "proms", 0 )
1302 	ROM_LOAD( "futrprom.u98", 0x0000, 0x0100, CRC(9ba2acaa) SHA1(20e0257ca531ddc398b3aab861c7b5c41b659d40) )
1303 	ROM_LOAD( "futrprom.u72", 0x0100, 0x0100, CRC(f9e26790) SHA1(339f27e0126312d35211b5ce533f293b58851c1d) )
1304 ROM_END
1305 
1306 
1307 ROM_START( razmataz )
1308 	ROM_REGION( 0x6000, "maincpu", 0 )
1309 	ROM_LOAD( "u27",           0x0000, 0x2000, CRC(254f350f) SHA1(f8e84778b7ffc4da76e97992f01c742c212480cf) )
1310 	ROM_LOAD( "u28",           0x2000, 0x2000, CRC(3a1eaa99) SHA1(d1f2a61a8548135c9754097aa468672616244710) )
1311 	ROM_LOAD( "u29",           0x4000, 0x2000, CRC(0ee67e78) SHA1(c6c703000a4e0da8af65be53b2a6b2ef67860c30) )
1312 
1313 	ROM_REGION( 0x1000, "usbcpu", 0 )
1314 	ROM_LOAD( "1924.u51",      0x0000, 0x0800, CRC(a75e0011) SHA1(7d67ce2e8a2de471221b3b565a937ae1a35e1560) )
1315 	ROM_LOAD( "1923.u50",      0x0800, 0x0800, CRC(59994a51) SHA1(57ccee24a989efe39f8ffc08aab7d72a1cdef3d1) )
1316 
1317 	ROM_REGION( 0x1000, "gfx_tx", 0 )
1318 	ROM_LOAD( "1921.u68",      0x0000, 0x0800, CRC(77f8ff5a) SHA1(d535109387559dd5b58dc6432a1eae6535442079) )
1319 	ROM_LOAD( "1922.u69",      0x0800, 0x0800, CRC(cf63621e) SHA1(60452ad34f2b0e0afa0f09455d9aa84058c54fd5) )
1320 
1321 	ROM_REGION( 0x6000, "gfx_bg", 0 )
1322 	ROM_LOAD( "1934.u113",     0x0000, 0x2000, CRC(39bb679c) SHA1(0a384286dbfc8b35e4779119f62769b6cfc93a52) )
1323 	ROM_LOAD( "1933.u112",     0x2000, 0x2000, CRC(1022185e) SHA1(874d796baea8ade2c642f3640ec7875a9f509a68) )
1324 	ROM_LOAD( "1932.u111",     0x4000, 0x2000, CRC(c7a715eb) SHA1(8b04558c87c5a5f94a5bab9fbe198a0b8a84ebf4) )
1325 
1326 	ROM_REGION( 0x6000, "gfx_spr", 0 )
1327 	ROM_LOAD( "1925.u77",      0x0000, 0x2000, CRC(a7965437) SHA1(24ab3cc9b6d70e8cab4f0a20f84fb98682b321f5) )
1328 	ROM_LOAD( "1926.u78",      0x2000, 0x2000, CRC(9a3af434) SHA1(0b5b1ac9cf8bee1c3830ef3baffcd7d3a05bf765) )
1329 	ROM_LOAD( "1927.u79",      0x4000, 0x2000, CRC(0323de2b) SHA1(6f6ceafe6472d59bd0ffecb9dd2d401659157b50) )
1330 
1331 	ROM_REGION( 0x8000, "tilemap_dat", 0 )
1332 	ROM_LOAD( "1929.u91",      0x0000, 0x2000, CRC(55c7c757) SHA1(ad8d548eb965f343e88bad4b4ad1b5b226f21d71) )
1333 	ROM_LOAD( "1928.u90",      0x2000, 0x2000, CRC(e58b155b) SHA1(dd6abeae66de69734b7aa5e133dbfb8f8a35578e) )
1334 	ROM_LOAD( "1931.u93",      0x4000, 0x2000, CRC(55fe0f82) SHA1(391434b41b6235199a4f19a8873a523cbb417f70) )
1335 	ROM_LOAD( "1930.u92",      0x6000, 0x2000, CRC(f355f105) SHA1(93067b7390c05b71020e77abdd9577b39e486d9f) )
1336 
1337 	ROM_REGION( 0x0200, "proms", 0 )
1338 	ROM_LOAD( "clr.u98",       0x0000, 0x0100, CRC(0fd671af) SHA1(7f26139398754dae7383c9375fca95b7970fcefb) )
1339 	ROM_LOAD( "clr.u72",       0x0100, 0x0100, CRC(03233bc5) SHA1(30bd690da7eda4e13df90d7ee59dbf744b3541a4) )
1340 ROM_END
1341 
1342 
1343 ROM_START( ixion )
1344 	ROM_REGION( 0x6000, "maincpu", 0 )
1345 	ROM_LOAD( "1937d.u27",      0x0000, 0x2000, CRC(f447aac5) SHA1(f6ec02f20482649ba1765254e0e67a8593075092) )
1346 	ROM_LOAD( "1938b.u28",      0x2000, 0x2000, CRC(17f48640) SHA1(d661e8ae0747c2c526360cb72e403deba7a98e71) )
1347 	ROM_LOAD( "1955b.u29",      0x4000, 0x1000, CRC(78636ec6) SHA1(afca6418221e700749031cb3fa738907d77c1566) )
1348 
1349 	ROM_REGION( 0x1000, "usbcpu", 0 )
1350 	ROM_LOAD( "1944a.u51",      0x0000, 0x0800, CRC(88215098) SHA1(54bd1c71e7f10f20623e47f4e791f54ce698bc08) )
1351 	ROM_LOAD( "1943a.u50",      0x0800, 0x0800, CRC(77e5a1f0) SHA1(00152ffb59ebac718b300fdf24314b456748ffbe) )
1352 
1353 	ROM_REGION( 0x1000, "gfx_tx", 0 )
1354 	ROM_LOAD( "1939a.u68",      0x0000, 0x0800, CRC(c717ddc7) SHA1(86fdef368f097a27aac6e05bf3208fcdaf7d9da7) )
1355 	ROM_LOAD( "1940a.u69",      0x0800, 0x0800, CRC(ec4bb3ad) SHA1(8a38bc48cda59b5e76a5153d459bb2d01d6a56f3) )
1356 
1357 	ROM_REGION( 0x6000, "gfx_bg", 0 )
1358 	ROM_LOAD( "1952a.u113",     0x0000, 0x2000, CRC(ffb9b03d) SHA1(b7a900166a880ca4a71fec6ad02f5c0ecfc92df8) )
1359 	ROM_LOAD( "1951a.u112",     0x2000, 0x2000, CRC(db743f1b) SHA1(a5d13d597fe999757137d96fb4bf7c7efc7a3245) )
1360 	ROM_LOAD( "1950a.u111",     0x4000, 0x2000, CRC(c2de178a) SHA1(0347a751accb02576b9cd8b123b79018cc05268c) )
1361 
1362 	ROM_REGION( 0x6000, "gfx_spr", 0 )
1363 	ROM_LOAD( "1945a.u77",      0x0000, 0x2000, CRC(3a3fbfe7) SHA1(f3a503f476524f9de5b55de49009972124e58601) )
1364 	ROM_LOAD( "1946a.u78",      0x2000, 0x2000, CRC(f2cb1b53) SHA1(8c2fb58ce7de7876c4d2f1a3d13c6a5efd06d354) )
1365 	ROM_LOAD( "1947a.u79",      0x4000, 0x2000, CRC(d2421e92) SHA1(07000055ace2c6983c7add180904d6bc20e1bb3b) )
1366 
1367 	ROM_REGION( 0x8000, "tilemap_dat", 0 )
1368 	ROM_LOAD( "1948a.u91",      0x0000, 0x2000, CRC(7a7fcbbe) SHA1(76dffffcadbe446091ee98958873aa76f7b17213) )
1369 	ROM_LOAD( "1953a.u90",      0x2000, 0x2000, CRC(6b626ea7) SHA1(7e02da0b031a42b077c173d85f15f75242e61e98) )
1370 	ROM_LOAD( "1949a.u93",      0x4000, 0x2000, CRC(e7722d09) SHA1(c9a0fb4fac798454facd3d5dd02d2c05cfe8e3a6) )
1371 	ROM_LOAD( "1954a.u92",      0x6000, 0x2000, CRC(a970f5ff) SHA1(0f1f8f329ceefcbd0725f8eeff1b01348f5c9374) )
1372 
1373 	ROM_REGION( 0x0200, "proms", 0 )
1374 	ROM_LOAD( "1942a.u98",       0x0000, 0x0100, CRC(3a8e6f74) SHA1(c2d480f8c8a111c1e23cbf819dea807f8128208d) )
1375 	ROM_LOAD( "1941a.u72",       0x0100, 0x0100, CRC(a5d0d97e) SHA1(2677508b44f9b7a6c6ee56e49a7b88073e80debe) )
1376 ROM_END
1377 
1378 /*
1379 Extra notes about Congo Bongo:
1380 
1381 There is known to be a version of Congo Bongo with official Sega "EPR" numbers. Sega game ID number for this set is 834-5197
1382 
1383 3 board stack with 834-5181 stickered as 834-5207 with standard 834-5167 video board & 834-5168 sound board.
1384 EPR-5309A.rom1 @ U35
1385 EPR-5310A.rom2 @ U34
1386 EPR-5311A.rom3 @ U33
1387 EPR-5312A.rom4 @ U32
1388 
1389 Uses the MR018 BPROM @ U68
1390 
1391 Oddly, it seems most Congo Bongo board sets (2 & 3 board stacks) have hand written labels for the program roms. At least
1392 all the PCB photos I found via Google as well as those included in a recent redump of both board set types.  And YES it's
1393 actually "CONGO BONGO REV C ROM 2A" this is verified in several PCB photos.
1394 
1395 */
1396 
1397 ROM_START( congo ) /* 2 board stack, Sega game ID number for this set is 834-5180 */
1398 	ROM_REGION( 0x8000, "maincpu", 0 ) /* Located on 834-5181 PCB,  AKA Tip Top-CONTR II */
1399 	ROM_LOAD( "congo_rev_c_rom1.u21",   0x0000, 0x2000, CRC(09355b5b) SHA1(0085ac7eb0035a88cb54cdd3dd6b2643141d39db) ) /* SUM16 written on label 044A */
1400 	ROM_LOAD( "congo_rev_c_rom2a.u22",  0x2000, 0x2000, CRC(1c5e30ae) SHA1(7cc5420e0e7a2793a671b938c121ae4079f5b1b8) ) /* SUM16 written on label DD4D */
1401 	ROM_LOAD( "congo_rev_c_rom3.u23",   0x4000, 0x2000, CRC(5ee1132c) SHA1(26294cd69ee43dfd29fc3642e8c04552dcdbaa49) ) /* SUM16 written on label C932 */
1402 	ROM_LOAD( "congo_rev_c_rom4.u24",   0x6000, 0x2000, CRC(5332b9bf) SHA1(8440cc6f92918b3b467a5a0b86c9defeb0a7db0e) ) /* SUM16 written on label 5128 */
1403 
1404 	ROM_REGION( 0x2000, "audiocpu", 0 ) /* Located on 834-5181 PCB,  AKA Tip Top-CONTR II */
1405 	ROM_LOAD( "tip_top_rom_17.u19",  0x0000, 0x2000, CRC(5024e673) SHA1(6f846146a4e29bcdfd5bd1bc5f1211d344cd5afa) )
1406 
1407 	ROM_REGION( 0x1000, "gfx_tx", 0 ) /* Located on 834-5181 PCB,  AKA Tip Top-CONTR II */
1408 	ROM_LOAD( "tip_top_rom_5.u76",   0x00000, 0x1000, CRC(7bf6ba2b) SHA1(3a2bd21b0e0e55cbd737c7b075492b5e8f944150) )
1409 
1410 	ROM_REGION( 0x6000, "gfx_bg", 0 ) /* Located on 834-5167 PCB, AKA Tip Tip-VIDEO */
1411 	ROM_LOAD( "tip_top_rom_8.u93",   0x00000, 0x2000, CRC(db99a619) SHA1(499029197d26f9aea3ac15d66b5738ce7dea1f6c) )
1412 	ROM_LOAD( "tip_top_rom_9.u94",   0x02000, 0x2000, CRC(93e2309e) SHA1(bd8a74332cac0cf85f319c1f35d04a4781c9d655) )
1413 	ROM_LOAD( "tip_top_rom_10.u95",  0x04000, 0x2000, CRC(f27a9407) SHA1(d41c90c89ae28c92bf0c57927357d9b68ed7e0ef) )
1414 
1415 	ROM_REGION( 0xc000, "gfx_spr", 0 ) /* Located on 834-5167 PCB, AKA Tip Tip-VIDEO */
1416 	ROM_LOAD( "tip_top_rom_12.u78",  0x00000, 0x2000, CRC(15e3377a) SHA1(04a7fbfd58924359fae0ba76ed152f325f07beae) )
1417 	ROM_LOAD( "tip_top_rom_13.u79",  0x02000, 0x2000, CRC(1d1321c8) SHA1(d12e156a24db105c5f941b7ef79f32181b616710) )
1418 	ROM_LOAD( "tip_top_rom_11.u77",  0x04000, 0x2000, CRC(73e2709f) SHA1(14919facf08f6983c3a9baad031239a1b57c8202) )
1419 	ROM_LOAD( "tip_top_rom_14.u104", 0x06000, 0x2000, CRC(bf9169fe) SHA1(303d68e38e9a47464f14dc5be6bff1be01b88bb6) )
1420 	ROM_LOAD( "tip_top_rom_16.u106", 0x08000, 0x2000, CRC(cb6d5775) SHA1(b1f8ead6e6f8ad995baaeb7f8554d41ed2296fff) )
1421 	ROM_LOAD( "tip_top_rom_15.u105", 0x0a000, 0x2000, CRC(7b15a7a4) SHA1(b1c05e60a1442e4dd56d197be8b768bcbf45e2d9) )
1422 
1423 	ROM_REGION( 0x4000, "tilemap_dat", 0 ) /* Located on 834-5167 PCB, AKA Tip Tip-VIDEO */
1424 	ROM_LOAD( "tip_top_rom_6.u57",   0x0000, 0x2000, CRC(d637f02b) SHA1(29127149924c5bfdeb9456d7df2a5a5d14098794) )
1425 	ROM_LOAD( "tip_top_rom_7.u58",   0x2000, 0x2000, CRC(80927943) SHA1(4683520c241d209c6cabeaead9b363f046c30f70) )
1426 
1427 	ROM_REGION( 0x0200, "proms", 0 ) /* Located on 834-5181 PCB,  AKA Tip Top-CONTR II */
1428 	ROM_LOAD( "mr019.u87",    0x0000, 0x100, CRC(b788d8ae) SHA1(9765180f3087140c75e5953409df841787558160) ) /* BPROM type is a TBP28L22 per the schematics */
1429 	ROM_RELOAD(               0x0100, 0x100 )
1430 ROM_END
1431 
1432 ROM_START( congoa ) /* 3 board stack, Sega game ID number for this set is 834-5156 */
1433 	ROM_REGION( 0x8000, "maincpu", 0 ) /* Located on 834-5166 PCB  AKA Tip Top-CONTR */
1434 	ROM_LOAD( "congo_rev_c_rom1.u35",   0x0000, 0x2000, CRC(09355b5b) SHA1(0085ac7eb0035a88cb54cdd3dd6b2643141d39db) ) /* SUM16 written on label 044A */
1435 	ROM_LOAD( "congo_rev_c_rom2a.u34",  0x2000, 0x2000, CRC(1c5e30ae) SHA1(7cc5420e0e7a2793a671b938c121ae4079f5b1b8) ) /* SUM16 written on label DD4D */
1436 	ROM_LOAD( "congo_rev_c_rom3.u33",   0x4000, 0x2000, CRC(5ee1132c) SHA1(26294cd69ee43dfd29fc3642e8c04552dcdbaa49) ) /* SUM16 written on label C932 */
1437 	ROM_LOAD( "congo_rev_c_rom4.u32",   0x6000, 0x2000, CRC(5332b9bf) SHA1(8440cc6f92918b3b467a5a0b86c9defeb0a7db0e) ) /* SUM16 written on label 5128 */
1438 
1439 	ROM_REGION( 0x2000, "audiocpu", 0 ) /* Located on 834-5168 PCB  AKA Tip Top-SOUND */
1440 	ROM_LOAD( "tip_top_rom_17.u11",  0x0000, 0x2000, CRC(5024e673) SHA1(6f846146a4e29bcdfd5bd1bc5f1211d344cd5afa) )
1441 
1442 	ROM_REGION( 0x1000, "gfx_tx", 0 ) /* Located on 834-5166 PCB  AKA Tip Top-CONTR */
1443 	ROM_LOAD( "tip_top_rom_5.u76",   0x00000, 0x1000, CRC(7bf6ba2b) SHA1(3a2bd21b0e0e55cbd737c7b075492b5e8f944150) )
1444 
1445 	ROM_REGION( 0x6000, "gfx_bg", 0 ) /* Located on 834-5167 PCB, AKA Tip Tip-VIDEO */
1446 	ROM_LOAD( "tip_top_rom_8.u93",   0x00000, 0x2000, CRC(db99a619) SHA1(499029197d26f9aea3ac15d66b5738ce7dea1f6c) )
1447 	ROM_LOAD( "tip_top_rom_9.u94",   0x02000, 0x2000, CRC(93e2309e) SHA1(bd8a74332cac0cf85f319c1f35d04a4781c9d655) )
1448 	ROM_LOAD( "tip_top_rom_10.u95",  0x04000, 0x2000, CRC(f27a9407) SHA1(d41c90c89ae28c92bf0c57927357d9b68ed7e0ef) )
1449 
1450 	ROM_REGION( 0xc000, "gfx_spr", 0 ) /* Located on 834-5167 PCB, AKA Tip Tip-VIDEO */
1451 	ROM_LOAD( "tip_top_rom_12.u78",  0x00000, 0x2000, CRC(15e3377a) SHA1(04a7fbfd58924359fae0ba76ed152f325f07beae) )
1452 	ROM_LOAD( "tip_top_rom_13.u79",  0x02000, 0x2000, CRC(1d1321c8) SHA1(d12e156a24db105c5f941b7ef79f32181b616710) )
1453 	ROM_LOAD( "tip_top_rom_11.u77",  0x04000, 0x2000, CRC(73e2709f) SHA1(14919facf08f6983c3a9baad031239a1b57c8202) )
1454 	ROM_LOAD( "tip_top_rom_14.u104", 0x06000, 0x2000, CRC(bf9169fe) SHA1(303d68e38e9a47464f14dc5be6bff1be01b88bb6) )
1455 	ROM_LOAD( "tip_top_rom_16.u106", 0x08000, 0x2000, CRC(cb6d5775) SHA1(b1f8ead6e6f8ad995baaeb7f8554d41ed2296fff) )
1456 	ROM_LOAD( "tip_top_rom_15.u105", 0x0a000, 0x2000, CRC(7b15a7a4) SHA1(b1c05e60a1442e4dd56d197be8b768bcbf45e2d9) )
1457 
1458 	ROM_REGION( 0x4000, "tilemap_dat", 0 ) /* Located on 834-5167 PCB, Tip Tip-VIDEO */
1459 	ROM_LOAD( "tip_top_rom_6.u57",   0x0000, 0x2000, CRC(d637f02b) SHA1(29127149924c5bfdeb9456d7df2a5a5d14098794) )
1460 	ROM_LOAD( "tip_top_rom_7.u58",   0x2000, 0x2000, CRC(80927943) SHA1(4683520c241d209c6cabeaead9b363f046c30f70) )
1461 
1462 	ROM_REGION( 0x0200, "proms", 0 ) /* Located on 834-5166 PCB  AKA Tip Top-CONTR */
1463 	ROM_LOAD( "mr018.u68",    0x0000, 0x200, CRC(56b9f1ba) SHA1(32ae743087f7c2dfba6818df8e9d665d8d9a3ee7) ) /* dumped as TBP28S42, first 256 bytes match MR019 then 0xFF filled */
1464 ROM_END
1465 
1466 ROM_START( tiptop ) /* 3 board stack */
1467 	ROM_REGION( 0x8000, "maincpu", 0 ) /* Located on 834-5166 PCB  AKA Tip Top-CONTR */
1468 	ROM_LOAD( "tiptop1.u35",  0x0000, 0x2000, CRC(e19dc77b) SHA1(d3782dd55701e0f5cd426ad2771c1bd0264c366a) )
1469 	ROM_LOAD( "tiptop2.u34",  0x2000, 0x2000, CRC(3fcd3b6e) SHA1(2898807ee36fca7fbc06616c9a070604beb782b9) )
1470 	ROM_LOAD( "tiptop3.u33",  0x4000, 0x2000, CRC(1c94250b) SHA1(cb70a91d07b0a9c61a093f1b5d37f2e69d1345c1) )
1471 	ROM_LOAD( "tiptop4.u32",  0x6000, 0x2000, CRC(577b501b) SHA1(5cad98a60a5241ba9467aa03fcd94c7490e6dbbb) )
1472 
1473 	ROM_REGION( 0x2000, "audiocpu", 0 ) /* Located on 834-5168 PCB  AKA Tip Top-SOUND */
1474 	ROM_LOAD( "tip_top_rom_17.u11",  0x0000, 0x2000, CRC(5024e673) SHA1(6f846146a4e29bcdfd5bd1bc5f1211d344cd5afa) )
1475 
1476 	ROM_REGION( 0x1000, "gfx_tx", 0 ) /* Located on 834-5166 PCB  AKA Tip Top-CONTR */
1477 	ROM_LOAD( "tip_top_rom_5.u76",   0x00000, 0x1000, CRC(7bf6ba2b) SHA1(3a2bd21b0e0e55cbd737c7b075492b5e8f944150) )
1478 
1479 	ROM_REGION( 0x6000, "gfx_bg", 0 ) /* Located on 834-5167 PCB, AKA Tip Tip-VIDEO */
1480 	ROM_LOAD( "tip_top_rom_8.u93",   0x00000, 0x2000, CRC(db99a619) SHA1(499029197d26f9aea3ac15d66b5738ce7dea1f6c) )
1481 	ROM_LOAD( "tip_top_rom_9.u94",   0x02000, 0x2000, CRC(93e2309e) SHA1(bd8a74332cac0cf85f319c1f35d04a4781c9d655) )
1482 	ROM_LOAD( "tip_top_rom_10.u95",  0x04000, 0x2000, CRC(f27a9407) SHA1(d41c90c89ae28c92bf0c57927357d9b68ed7e0ef) )
1483 
1484 	ROM_REGION( 0xc000, "gfx_spr", 0 ) /* Located on 834-5167 PCB, AKA Tip Tip-VIDEO */
1485 	ROM_LOAD( "tip_top_rom_12.u78",  0x00000, 0x2000, CRC(15e3377a) SHA1(04a7fbfd58924359fae0ba76ed152f325f07beae) )
1486 	ROM_LOAD( "tip_top_rom_13.u79",  0x02000, 0x2000, CRC(1d1321c8) SHA1(d12e156a24db105c5f941b7ef79f32181b616710) )
1487 	ROM_LOAD( "tip_top_rom_11.u77",  0x04000, 0x2000, CRC(73e2709f) SHA1(14919facf08f6983c3a9baad031239a1b57c8202) )
1488 	ROM_LOAD( "tip_top_rom_14.u104", 0x06000, 0x2000, CRC(bf9169fe) SHA1(303d68e38e9a47464f14dc5be6bff1be01b88bb6) )
1489 	ROM_LOAD( "tip_top_rom_16.u106", 0x08000, 0x2000, CRC(cb6d5775) SHA1(b1f8ead6e6f8ad995baaeb7f8554d41ed2296fff) )
1490 	ROM_LOAD( "tip_top_rom_15.u105", 0x0a000, 0x2000, CRC(7b15a7a4) SHA1(b1c05e60a1442e4dd56d197be8b768bcbf45e2d9) )
1491 
1492 	ROM_REGION( 0x4000, "tilemap_dat", 0 ) /* Located on 834-5167 PCB, AKA Tip Tip-VIDEO */
1493 	ROM_LOAD( "tip_top_rom_6.u57",   0x0000, 0x2000, CRC(d637f02b) SHA1(29127149924c5bfdeb9456d7df2a5a5d14098794) )
1494 	ROM_LOAD( "tip_top_rom_7.u58",   0x2000, 0x2000, CRC(80927943) SHA1(4683520c241d209c6cabeaead9b363f046c30f70) )
1495 
1496 	ROM_REGION( 0x0200, "proms", 0 ) /* Located on 834-5166 PCB  AKA Tip Top-CONTR */
1497 	ROM_LOAD( "mr018.u68",    0x0000, 0x200, CRC(56b9f1ba) SHA1(32ae743087f7c2dfba6818df8e9d665d8d9a3ee7) ) /* dumped as TBP28S42, first 256 bytes match MR019 then 0xFF filled */
1498 ROM_END
1499 
1500 
1501 /*************************************
1502  *
1503  *  Driver initialization
1504  *
1505  *************************************/
1506 
1507 void zaxxon_state::init_zaxxonj()
1508 {
1509 /*
1510     the values vary, but the translation mask is always laid out like this:
1511 
1512       0 1 2 3 4 5 6 7 8 9 a b c d e f
1513     0 A A B B A A B B C C D D C C D D
1514     1 A A B B A A B B C C D D C C D D
1515     2 E E F F E E F F G G H H G G H H
1516     3 E E F F E E F F G G H H G G H H
1517     4 A A B B A A B B C C D D C C D D
1518     5 A A B B A A B B C C D D C C D D
1519     6 E E F F E E F F G G H H G G H H
1520     7 E E F F E E F F G G H H G G H H
1521     8 H H G G H H G G F F E E F F E E
1522     9 H H G G H H G G F F E E F F E E
1523     a D D C C D D C C B B A A B B A A
1524     b D D C C D D C C B B A A B B A A
1525     c H H G G H H G G F F E E F F E E
1526     d H H G G H H G G F F E E F F E E
1527     e D D C C D D C C B B A A B B A A
1528     f D D C C D D C C B B A A B B A A
1529 
1530     (e.g. 0xc0 is XORed with H)
1531     therefore in the following tables we only keep track of A, B, C, D, E, F, G and H.
1532 */
1533 	static const uint8_t data_xortable[2][8] =
1534 	{
1535 		{ 0x0a,0x0a,0x22,0x22,0xaa,0xaa,0x82,0x82 },    /* ...............0 */
1536 		{ 0xa0,0xaa,0x28,0x22,0xa0,0xaa,0x28,0x22 },    /* ...............1 */
1537 	};
1538 
1539 	static const uint8_t opcode_xortable[8][8] =
1540 	{
1541 		{ 0x8a,0x8a,0x02,0x02,0x8a,0x8a,0x02,0x02 },    /* .......0...0...0 */
1542 		{ 0x80,0x80,0x08,0x08,0xa8,0xa8,0x20,0x20 },    /* .......0...0...1 */
1543 		{ 0x8a,0x8a,0x02,0x02,0x8a,0x8a,0x02,0x02 },    /* .......0...1...0 */
1544 		{ 0x02,0x08,0x2a,0x20,0x20,0x2a,0x08,0x02 },    /* .......0...1...1 */
1545 		{ 0x88,0x0a,0x88,0x0a,0xaa,0x28,0xaa,0x28 },    /* .......1...0...0 */
1546 		{ 0x80,0x80,0x08,0x08,0xa8,0xa8,0x20,0x20 },    /* .......1...0...1 */
1547 		{ 0x88,0x0a,0x88,0x0a,0xaa,0x28,0xaa,0x28 },    /* .......1...1...0 */
1548 		{ 0x02,0x08,0x2a,0x20,0x20,0x2a,0x08,0x02 }     /* .......1...1...1 */
1549 	};
1550 
1551 	uint8_t *rom = memregion("maincpu")->base();
1552 
1553 	for (int A = 0x0000; A < 0x6000; A++)
1554 	{
1555 		uint8_t src = rom[A];
1556 
1557 		/* pick the translation table from bit 0 of the address */
1558 		int i = A & 1;
1559 
1560 		/* pick the offset in the table from bits 1, 3 and 5 of the source data */
1561 		int j = ((src >> 1) & 1) + (((src >> 3) & 1) << 1) + (((src >> 5) & 1) << 2);
1562 		/* the bottom half of the translation table is the mirror image of the top */
1563 		if (src & 0x80) j = 7 - j;
1564 
1565 		/* decode the ROM data */
1566 		rom[A] = src ^ data_xortable[i][j];
1567 
1568 		/* now decode the opcodes */
1569 		/* pick the translation table from bits 0, 4, and 8 of the address */
1570 		i = ((A >> 0) & 1) + (((A >> 4) & 1) << 1) + (((A >> 8) & 1) << 2);
1571 		m_decrypted_opcodes[A] = src ^ opcode_xortable[i][j];
1572 	}
1573 }
1574 
1575 
1576 
init_razmataz()1577 void zaxxon_state::init_razmataz()
1578 {
1579 	address_space &pgmspace = m_maincpu->space(AS_PROGRAM);
1580 
1581 	/* additional input ports are wired */
1582 	pgmspace.install_read_port(0xc004, 0xc004, 0x18f3, "SW04");
1583 	pgmspace.install_read_port(0xc008, 0xc008, 0x18f3, "SW08");
1584 	pgmspace.install_read_port(0xc00c, 0xc00c, 0x18f3, "SW0C");
1585 
1586 	/* unknown behavior expected here */
1587 	pgmspace.install_read_handler(0xc80a, 0xc80a, read8smo_delegate(*this, FUNC(zaxxon_state::razmataz_counter_r)));
1588 
1589 	/* additional state saving */
1590 	save_item(NAME(m_razmataz_dial_pos));
1591 	save_item(NAME(m_razmataz_counter));
1592 }
1593 
1594 
1595 
1596 /*************************************
1597  *
1598  *  Game drivers
1599  *
1600  *************************************/
1601 
1602 /* these games run on standard Zaxxon hardware */
1603 GAME( 1982, zaxxon,   0,      zaxxon,    zaxxon,   zaxxon_state,   empty_init,    ROT90,  "Sega",    "Zaxxon (set 1, rev D)",        MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1604 GAME( 1982, zaxxon2,  zaxxon, zaxxon,    zaxxon,   zaxxon_state,   empty_init,    ROT90,  "Sega",    "Zaxxon (set 2, unknown rev)",  MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1605 GAME( 1982, zaxxon3,  zaxxon, zaxxon,    zaxxon,   zaxxon_state,   empty_init,    ROT90,  "Sega",    "Zaxxon (set 3, unknown rev)",  MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1606 GAME( 1982, zaxxonj,  zaxxon, szaxxon,   zaxxon,   zaxxon_state,   init_zaxxonj,  ROT90,  "Sega",    "Zaxxon (Japan)",               MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1607 GAME( 1982, zaxxonb,  zaxxon, szaxxon,   zaxxon,   zaxxon_state,   init_zaxxonj,  ROT90,  "bootleg", "Jackson",                      MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1608 
1609 /* standard Zaxxon hardware but extra sound board plugged into 8255 PPI socket and encrypted cpu */
1610 GAME( 1982, szaxxon,  0,      szaxxone,  szaxxon,  zaxxon_state,   empty_init,    ROT90,  "Sega",    "Super Zaxxon (315-5013)",  MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1611 
1612 /* standard Zaxxon hardware? but encrypted cpu */
1613 GAME( 1984, futspy,   0,      futspye,   futspy,   zaxxon_state,   empty_init,    ROT90,  "Sega",    "Future Spy (315-5061)",  MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1614 
1615 /* these games run on modified Zaxxon hardware with no skewing, extra inputs, and a */
1616 /* G-80 Universal Sound Board */
1617 GAME( 1983, razmataz, 0,      razmataze, razmataz, zaxxon_state,   init_razmataz, ROT90,  "Sega",    "Razzmatazz",        MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1618 GAME( 1983, ixion,    0,      ixion,     ixion,    zaxxon_state,   empty_init,    ROT270, "Sega",    "Ixion (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE)
1619 
1620 /* these games run on a slightly newer Zaxxon hardware with more ROM space and a */
1621 /* custom sprite DMA chip */
1622 GAME( 1983, congo,    0,      congo,     congo,   zaxxon_state,    empty_init,    ROT90,  "Sega",    "Congo Bongo (Rev C, 2 board stack)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1623 GAME( 1983, congoa,   congo,  congo,     congo,   zaxxon_state,    empty_init,    ROT90,  "Sega",    "Congo Bongo (Rev C, 3 board stack)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1624 GAME( 1983, tiptop,   congo,  congo,     congo,   zaxxon_state,    empty_init,    ROT90,  "Sega",    "Tip Top (3 board stack)",            MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1625