1 /***************************************************************************
2
3 Midway Omega Race hardware
4
5 driver by Bernd Wiebelt
6
7 Games supported:
8 * Omega Race
9 * Delta Race (Omega Race bootleg by Allied Leisure)
10
11 Known bugs:
12 * none at this time
13
14 ****************************************************************************
15
16 This driver is dedicated to my loving wife Natalia Wiebelt
17 and my daughter Lara Anna Maria
18 Summer 1997 Bernd Wiebelt
19
20 Many thanks to Al Kossow for the original sources and the solid documentation.
21 Without him, I could never had completed this driver.
22
23
24 --------
25
26 Most of the info here comes from the wiretap archive at:
27 http://www.spies.com/arcade/simulation/gameHardware/
28
29
30 Omega Race Memory Map
31 Version 1.1 (Jul 24,1997)
32 ---------------------
33
34 0000 - 3fff PROM
35 4000 - 4bff RAM (3k)
36 5c00 - 5cff NVRAM (256 x 4bits)
37 8000 - 8fff Vec RAM (4k)
38 9000 - 9fff Vec ROM (4k)
39
40 15 14 13 12 11 10
41 --+--+--+--+--+--
42 0 0 0 0 M8 - 2732 (4k)
43 0 0 0 1 L8 - 2732
44 0 0 1 0 K8 - 2732
45 0 0 1 1 J8 - 2732
46
47 0 1 - 0 0 0 RAM (3k)
48 0 1 - 0 0 1
49 0 1 - 0 1 0
50
51 0 1 - 1 1 1 4 Bit BB RAM (d0-d3)
52
53 1 - - 0 0 Vec RAM (4k)
54 1 - - 0 1
55 1 - - 1 0 Vec ROM (2k) E1
56 1 - - 1 1 Vec ROM (2k) F1
57
58 I/O Ports
59
60 8 Start/ (VG start)
61 9 WDOG/ (Reset watchdog)
62 A SEQRES/ (VG stop/reset?)
63 B RDSTOP/ d7 = stop (VG running if 0)
64
65 10 I DIP SW C4 (game ship settings)
66
67 6 5 4 3 2 1
68 1st bonus ship at
69 | | | | 0 0 40,000
70 | | | | 0 1 50,000
71 | | | | 1 0 70,000
72 | | | | 1 1 100,000
73 | | | | 2nd and 3rd bonus ships
74 | | 0 0 150,000 250,000
75 | | 0 1 250,000 500,000
76 | | 1 0 500,000 750,000
77 | | 1 1 750,000 1,500,000
78 | | ships per credit
79 0 0 1 credit = 2 ships / 2 credits = 4 ships
80 0 1 1 credit = 2 ships / 2 credits = 5 ships
81 1 0 1 credit = 3 ships / 2 credits = 6 ships
82 1 1 1 credit = 3 ships / 2 credits = 7 ships
83
84 11 I 7 = Test
85 6 = P1 Fire
86 5 = P1 Thrust
87 4 = Tilt
88
89 1 = Coin 2
90 0 = Coin 1
91
92 12 I 7 = 1P1CR
93 6 = 1P2CR
94
95 3 = 2P2CR -+
96 2 = 2P1CR |
97 1 = P2Fire |
98 0 = P2Thr -+ cocktail only
99
100 13 O 7 =
101 6 = screen reverse
102 5 = 2 player 2 credit start LED
103 4 = 2 player 1 credit start LED
104 3 = 1 player 1 credit start LED
105 2 = 1 player 1 credit start LED
106 1 = coin meter 2
107 0 = coin meter 1
108
109 14 O sound command (interrupts sound Z80)
110
111 15 I encoder 1 (d7-d2)
112
113 The encoder is a 64 position Grey Code encoder, or a
114 pot and A to D converter.
115
116 Unlike the quadrature inputs on Atari and Sega games,
117 Omega Race's controller is an absolute angle.
118
119 0x00, 0x04, 0x14, 0x10, 0x18, 0x1c, 0x5c, 0x58,
120 0x50, 0x54, 0x44, 0x40, 0x48, 0x4c, 0x6c, 0x68,
121 0x60, 0x64, 0x74, 0x70, 0x78, 0x7c, 0xfc, 0xf8,
122 0xf0, 0xf4, 0xe4, 0xe0, 0xe8, 0xec, 0xcc, 0xc8,
123 0xc0, 0xc4, 0xd4, 0xd0, 0xd8, 0xdc, 0x9c, 0x98,
124 0x90, 0x94, 0x84, 0x80, 0x88, 0x8c, 0xac, 0xa8,
125 0xa0, 0xa4, 0xb4, 0xb0, 0xb8, 0xbc, 0x3c, 0x38,
126 0x30, 0x34, 0x24, 0x20, 0x28, 0x2c, 0x0c, 0x08
127
128 16 I encoder 2 (d5-d0)
129
130 The inputs aren't scrambled as they are on the 1 player
131 encoder
132
133 17 I DIP SW C6 (coin/cocktail settings)
134
135 8 7 6 5 4 3 2 1
136 coin switch 1
137 | | | | | 0 0 0 1 coin 2 credits
138 | | | | | 0 0 1 1 coin 3 credits
139 | | | | | 0 1 0 1 coin 5 credits
140 | | | | | 0 1 1 4 coins 5 credits
141 | | | | | 1 0 0 3 coins 4 credits
142 | | | | | 1 0 1 2 coins 3 credits
143 | | | | | 1 1 0 2 coins 1 credit
144 | | | | | 1 1 1 1 coin 1 credit
145 | | | | |
146 | | | | | coin switch 2
147 | | 0 0 0 1 coin 2 credits
148 | | 0 0 1 1 coin 3 credits
149 | | 0 1 0 1 coin 5 credits
150 | | 0 1 1 4 coins 5 credits
151 | | 1 0 0 3 coins 4 credits
152 | | 1 0 1 2 coins 3 credits
153 | | 1 1 0 2 coins 1 credit
154 | | 1 1 1 1 coin 1 credit
155 | |
156 | 0 coin play
157 | 1 free play
158 |
159 0 normal
160 1 cocktail
161
162 display list format: (4 byte opcodes)
163
164 +------+------+------+------+------+------+------+------+
165 |DY07 DY06 DY05 DY04 DY03 DY02 DY01 DY00 | 0
166 +------+------+------+------+------+------+------+------+
167 |OPCD3 OPCD2 OPCD1 OPCD0 DY11 DY10 DY09 DY08 | 1 OPCD 1111 = ABBREV/
168 +------+------+------+------+------+------+------+------+
169 |DX07 DX06 DX05 DX04 DX03 DX02 DX01 DX00 | 2
170 +------+------+------+------+------+------+------+------+
171 |INTEN3 INTEN2 INTEN1 INTEN0 DX11 DX10 DX09 DX08 | 3
172 +------+------+------+------+------+------+------+------+
173
174 Draw relative vector 0x80 1000YYYY YYYYYYYY IIIIXXXX XXXXXXXX
175
176 Draw relative vector
177 and load scale 0x90 1001YYYY YYYYYYYY SSSSXXXX XXXXXXXX
178
179 Beam to absolute
180 screen position 0xA0 1010YYYY YYYYYYYY ----XXXX XXXXXXXX
181
182 Halt 0xB0 1011---- --------
183
184 Jump to subroutine 0xC0 1100AAAA AAAAAAAA
185
186 Return from subroutine 0xD0 1101---- --------
187
188 Jump to new address 0xE0 1110AAAA AAAAAAAA
189
190 Short vector draw 0xF0 1111YYYY IIIIXXXX
191
192
193 Sound Z80 Memory Map
194
195 0000 ROM
196 1000 RAM
197
198 15 14 13 12 11 10
199 0 2k prom (K5)
200 1 2k prom (J5)
201 1 1k RAM (K4,J4)
202
203 I/O (write-only)
204
205 0,1 8912 (K3)
206 2,3 8912 (J3)
207
208
209 I/O (read-only)
210
211 0 input port from main CPU.
212 main CPU writing port generated INT
213 Sound Commands:
214
215 0 - reset sound CPU
216
217 ***************************************************************************/
218
219 #include "driver.h"
220 #include "vidhrdw/vector.h"
221 #include "vidhrdw/avgdvg.h"
222
223
224
225 /*************************************
226 *
227 * Machine init
228 *
229 *************************************/
230
MACHINE_INIT(omegrace)231 static MACHINE_INIT( omegrace )
232 {
233 /* Omega Race expects the vector processor to be ready. */
234 avgdvg_reset_w (0, 0);
235 }
236
237
238
239 /*************************************
240 *
241 * Vector processor interaction
242 *
243 *************************************/
244
READ_HANDLER(omegrace_vg_go_r)245 static READ_HANDLER( omegrace_vg_go_r )
246 {
247 avgdvg_go_w(0,0);
248 return 0;
249 }
250
251
READ_HANDLER(omegrace_vg_status_r)252 static READ_HANDLER( omegrace_vg_status_r )
253 {
254 return avgdvg_done() ? 0x00 : 0x80;
255 }
256
257
258
259 /*************************************
260 *
261 * Input handlers
262 *
263 *************************************/
264
265 /*
266 * Encoder bit mappings
267 * The encoder is a 64 way switch, with the inputs scrambled
268 * on the input port (and shifted 2 bits to the left for the
269 * 1 player encoder
270 *
271 * 3 6 5 4 7 2 for encoder 1 (shifted two bits left..)
272 *
273 *
274 * 5 4 3 2 1 0 for encoder 2 (not shifted..)
275 */
276
277 static unsigned char spinnerTable[64] =
278 {
279 0x00, 0x04, 0x14, 0x10, 0x18, 0x1c, 0x5c, 0x58,
280 0x50, 0x54, 0x44, 0x40, 0x48, 0x4c, 0x6c, 0x68,
281 0x60, 0x64, 0x74, 0x70, 0x78, 0x7c, 0xfc, 0xf8,
282 0xf0, 0xf4, 0xe4, 0xe0, 0xe8, 0xec, 0xcc, 0xc8,
283 0xc0, 0xc4, 0xd4, 0xd0, 0xd8, 0xdc, 0x9c, 0x98,
284 0x90, 0x94, 0x84, 0x80, 0x88, 0x8c, 0xac, 0xa8,
285 0xa0, 0xa4, 0xb4, 0xb0, 0xb8, 0xbc, 0x3c, 0x38,
286 0x30, 0x34, 0x24, 0x20, 0x28, 0x2c, 0x0c, 0x08
287 };
288
289
READ_HANDLER(omegrace_spinner1_r)290 READ_HANDLER( omegrace_spinner1_r )
291 {
292 return (spinnerTable[readinputport(4) & 0x3f]);
293 }
294
295
296
297 /*************************************
298 *
299 * Output handlers
300 *
301 *************************************/
302
WRITE_HANDLER(omegrace_leds_w)303 WRITE_HANDLER( omegrace_leds_w )
304 {
305 /* bits 0 and 1 are coin counters */
306 coin_counter_w(0,data & 0x01);
307 coin_counter_w(1,data & 0x02);
308
309 /* bits 2 to 5 are the start leds (4 and 5 cocktail only) */
310 set_led_status(0,~data & 0x04);
311 set_led_status(1,~data & 0x08);
312 set_led_status(2,~data & 0x10);
313 set_led_status(3,~data & 0x20);
314
315 /* bit 6 flips screen (not supported) */
316 }
317
318
WRITE_HANDLER(omegrace_soundlatch_w)319 WRITE_HANDLER( omegrace_soundlatch_w )
320 {
321 soundlatch_w (offset, data);
322 cpu_set_irq_line(1, 0, HOLD_LINE);
323 }
324
325
326
327 /*************************************
328 *
329 * Overlay
330 *
331 *************************************/
332
333 OVERLAY_START( omegrace_overlay )
334 OVERLAY_RECT( 0.0, 0.0, 1.0, 1.0, MAKE_ARGB(0x04,0xff,0xe4,0x57) )
335 OVERLAY_END
336
337
338
339 /*************************************
340 *
341 * Main CPU memory handlers
342 *
343 *************************************/
344
MEMORY_READ_START(readmem)345 static MEMORY_READ_START( readmem )
346 { 0x0000, 0x3fff, MRA_ROM },
347 { 0x4000, 0x4bff, MRA_RAM },
348 { 0x5c00, 0x5cff, MRA_RAM }, /* NVRAM */
349 { 0x8000, 0x8fff, MRA_RAM },
350 { 0x9000, 0x9fff, MRA_ROM }, /* vector rom */
351 MEMORY_END
352
353
354 static MEMORY_WRITE_START( writemem )
355 { 0x0000, 0x3fff, MWA_ROM }, /* Omega Race tries to write there! */
356 { 0x4000, 0x4bff, MWA_RAM },
357 { 0x5c00, 0x5cff, MWA_RAM, &generic_nvram, &generic_nvram_size }, /* NVRAM */
358 { 0x8000, 0x8fff, MWA_RAM, &vectorram, &vectorram_size }, /* vector ram */
359 { 0x9000, 0x9fff, MWA_ROM }, /* vector rom */
360 MEMORY_END
361
362
363 static PORT_READ_START( readport )
364 { 0x08, 0x08, omegrace_vg_go_r },
365 { 0x09, 0x09, watchdog_reset_r },
366 { 0x0b, 0x0b, omegrace_vg_status_r }, /* vg_halt */
367 { 0x10, 0x10, input_port_0_r }, /* DIP SW C4 */
368 { 0x17, 0x17, input_port_1_r }, /* DIP SW C6 */
369 { 0x11, 0x11, input_port_2_r }, /* Player 1 input */
370 { 0x12, 0x12, input_port_3_r }, /* Player 2 input */
371 { 0x15, 0x15, omegrace_spinner1_r }, /* 1st controller */
372 { 0x16, 0x16, input_port_5_r }, /* 2nd controller (cocktail) */
373 PORT_END
374
375
376 static PORT_WRITE_START( writeport )
377 { 0x0a, 0x0a, avgdvg_reset_w },
378 { 0x13, 0x13, omegrace_leds_w }, /* coin counters, leds, flip screen */
379 { 0x14, 0x14, omegrace_soundlatch_w }, /* Sound command */
380 PORT_END
381
382
383
384 /*************************************
385 *
386 * Sound CPU memory handlers
387 *
388 *************************************/
389
390 static MEMORY_READ_START( sound_readmem )
391 { 0x0000, 0x07ff, MRA_ROM },
392 { 0x1000, 0x13ff, MRA_RAM },
393 MEMORY_END
394
395
396 static MEMORY_WRITE_START( sound_writemem )
397 { 0x0000, 0x07ff, MWA_ROM },
398 { 0x1000, 0x13ff, MWA_RAM },
399 MEMORY_END
400
401
402 static PORT_READ_START( sound_readport )
403 { 0x00, 0x00, soundlatch_r },
404 PORT_END
405
406
407 static PORT_WRITE_START( sound_writeport )
408 { 0x00, 0x00, AY8910_control_port_0_w },
409 { 0x01, 0x01, AY8910_write_port_0_w },
410 { 0x02, 0x02, AY8910_control_port_1_w },
411 { 0x03, 0x03, AY8910_write_port_1_w },
412 PORT_END
413
414
415
416 /*************************************
417 *
418 * Port definitions
419 *
420 *************************************/
421
422 INPUT_PORTS_START( omegrace )
423 PORT_START /* SW0 */
424 PORT_DIPNAME( 0x03, 0x03, "1st Bonus Life" )
425 PORT_DIPSETTING ( 0x00, "40k" )
426 PORT_DIPSETTING ( 0x01, "50k" )
427 PORT_DIPSETTING ( 0x02, "70k" )
428 PORT_DIPSETTING ( 0x03, "100k" )
429 PORT_DIPNAME( 0x0c, 0x0c, "2nd & 3rd Bonus Life" )
430 PORT_DIPSETTING ( 0x00, "150k 250k" )
431 PORT_DIPSETTING ( 0x04, "250k 500k" )
432 PORT_DIPSETTING ( 0x08, "500k 750k" )
433 PORT_DIPSETTING ( 0x0c, "750k 1500k" )
434 PORT_DIPNAME( 0x30, 0x30, "Credit(s)/Ships" )
435 PORT_DIPSETTING ( 0x00, "1C/2S 2C/4S" )
436 PORT_DIPSETTING ( 0x10, "1C/2S 2C/5S" )
437 PORT_DIPSETTING ( 0x20, "1C/3S 2C/6S" )
438 PORT_DIPSETTING ( 0x30, "1C/3S 2C/7S" )
439 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
440 PORT_DIPSETTING ( 0x00, DEF_STR( Off ) )
441 PORT_DIPSETTING ( 0x40, DEF_STR( On ) )
442 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
443 PORT_DIPSETTING ( 0x00, DEF_STR( Off ) )
444 PORT_DIPSETTING ( 0x80, DEF_STR( On ) )
445
446 PORT_START /* SW1 */
447 PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) )
448 PORT_DIPSETTING ( 0x06, DEF_STR( 2C_1C ) )
449 PORT_DIPSETTING ( 0x07, DEF_STR( 1C_1C ) )
450 PORT_DIPSETTING ( 0x03, DEF_STR( 4C_5C ) )
451 PORT_DIPSETTING ( 0x04, DEF_STR( 3C_4C ) )
452 PORT_DIPSETTING ( 0x05, DEF_STR( 2C_3C ) )
453 PORT_DIPSETTING ( 0x00, DEF_STR( 1C_2C ) )
454 PORT_DIPSETTING ( 0x01, DEF_STR( 1C_3C ) )
455 PORT_DIPSETTING ( 0x02, DEF_STR( 1C_5C ) )
456 PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) )
457 PORT_DIPSETTING ( 0x30, DEF_STR( 2C_1C ) )
458 PORT_DIPSETTING ( 0x38, DEF_STR( 1C_1C ) )
459 PORT_DIPSETTING ( 0x18, DEF_STR( 4C_5C ) )
460 PORT_DIPSETTING ( 0x20, DEF_STR( 3C_4C ) )
461 PORT_DIPSETTING ( 0x28, DEF_STR( 2C_3C ) )
462 PORT_DIPSETTING ( 0x00, DEF_STR( 1C_2C ) )
463 PORT_DIPSETTING ( 0x08, DEF_STR( 1C_3C ) )
464 PORT_DIPSETTING ( 0x10, DEF_STR( 1C_5C ) )
465 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Free_Play ) )
466 PORT_DIPSETTING ( 0x00, DEF_STR( Off ) )
467 PORT_DIPSETTING ( 0x40, DEF_STR( On ) )
468 PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
469 PORT_DIPSETTING ( 0x00, DEF_STR( Upright ) )
470 PORT_DIPSETTING ( 0x80, DEF_STR( Cocktail ) )
471
472 PORT_START /* IN2 - port 0x11 */
473 PORT_BIT ( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
474 PORT_BIT ( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
475 PORT_BIT ( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
476 PORT_BIT ( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
477 PORT_BIT ( 0x10, IP_ACTIVE_LOW, IPT_TILT )
478 PORT_BIT ( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
479 PORT_BIT ( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 )
480 PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
481
482 PORT_START /* IN3 - port 0x12 */
483 PORT_BIT ( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
484 PORT_BIT ( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
485 PORT_BITX( 0x04, IP_ACTIVE_HIGH, IPT_START2, "2 Players Start (1 credit)", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
486 PORT_BITX( 0x08, IP_ACTIVE_HIGH, IPT_START4, "2 Players Start (2 credits)", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
487 PORT_BIT ( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
488 PORT_BIT ( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
489 PORT_BITX( 0x40, IP_ACTIVE_HIGH, IPT_START1, "1 Player Start (1 credit)", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
490 PORT_BITX( 0x80, IP_ACTIVE_HIGH, IPT_START3, "1 Player Start (2 credits)", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
491
492 PORT_START /* IN4 - port 0x15 - spinner */
493 PORT_ANALOG(0x3f, 0x00, IPT_DIAL, 12, 10, 0, 0 )
494
495 PORT_START /* IN5 - port 0x16 - second spinner */
496 PORT_ANALOG(0x3f, 0x00, IPT_DIAL | IPF_COCKTAIL, 12, 10, 0, 0 )
497 INPUT_PORTS_END
498
499
500
501 /*************************************
502 *
503 * Sound interfaces
504 *
505 *************************************/
506
507 static struct AY8910interface ay8910_interface =
508 {
509 2, /* 2 chips */
510 1500000, /* 1.5 MHz */
511 { 25, 25 },
512 { 0 },
513 { 0 },
514 { 0 },
515 { 0 }
516 };
517
518
519
520 /*************************************
521 *
522 * Machine drivers
523 *
524 *************************************/
525
526 static MACHINE_DRIVER_START( omegrace )
527
528 /* basic machine hardware */
529 MDRV_CPU_ADD(Z80, 3000000)
MDRV_CPU_MEMORY(readmem,writemem)530 MDRV_CPU_MEMORY(readmem,writemem)
531 MDRV_CPU_PORTS(readport,writeport)
532 MDRV_CPU_PERIODIC_INT(irq0_line_hold,250)
533
534 MDRV_CPU_ADD(Z80, 1500000)
535 MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
536 MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
537 MDRV_CPU_PORTS(sound_readport,sound_writeport)
538 MDRV_CPU_PERIODIC_INT(nmi_line_pulse,250)
539
540 MDRV_FRAMES_PER_SECOND(40)
541
542 MDRV_MACHINE_INIT(omegrace)
543 MDRV_NVRAM_HANDLER(generic_0fill)
544
545 /* video hardware */
546 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_VECTOR | VIDEO_RGB_DIRECT)
547 MDRV_SCREEN_SIZE(400, 300)
548 MDRV_VISIBLE_AREA(0, 1020, -10, 1010)
549 MDRV_PALETTE_LENGTH(32768)
550
551 MDRV_PALETTE_INIT(avg_white)
552 MDRV_VIDEO_START(dvg)
553 MDRV_VIDEO_UPDATE(vector)
554
555 /* sound hardware */
556 MDRV_SOUND_ADD(AY8910, ay8910_interface)
557 MACHINE_DRIVER_END
558
559
560
561 /*************************************
562 *
563 * ROM definitions
564 *
565 *************************************/
566
567 ROM_START( omegrace )
568 ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for code */
569 ROM_LOAD( "omega.m7", 0x0000, 0x1000, CRC(0424d46e) SHA1(cc1ac6c06ba6f6e8466fa08286a0c70b5335af33) )
570 ROM_LOAD( "omega.l7", 0x1000, 0x1000, CRC(edcd7a7d) SHA1(5d142de2f48b01d563578a54fd5540e5d0ac8f4c) )
571 ROM_LOAD( "omega.k7", 0x2000, 0x1000, CRC(6d10f197) SHA1(9609a0cbeeef2efa10d49cde9f0afdca96e9c2f8) )
572 ROM_LOAD( "omega.j7", 0x3000, 0x1000, CRC(8e8d4b54) SHA1(944192c0f6f0cdb25d492ee9f33959d38a1062f2) )
573 ROM_LOAD( "omega.e1", 0x9000, 0x0800, CRC(1d0fdf3a) SHA1(3333397a9745874cea1dd6a1bda783cc59393b55) )
574 ROM_LOAD( "omega.f1", 0x9800, 0x0800, CRC(d44c0814) SHA1(2f216ee6de88bbe09775619003aee2d5aa8c554d) )
575
576 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for audio cpu */
577 ROM_LOAD( "sound.k5", 0x0000, 0x0800, CRC(7d426017) SHA1(370f0fb5608819de873c845f6010cbde75a9818e) )
578 ROM_END
579
580 ROM_START( deltrace )
581 ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for code */
582 ROM_LOAD( "omega.m7", 0x0000, 0x1000, CRC(0424d46e) SHA1(cc1ac6c06ba6f6e8466fa08286a0c70b5335af33) )
583 ROM_LOAD( "omega.l7", 0x1000, 0x1000, CRC(edcd7a7d) SHA1(5d142de2f48b01d563578a54fd5540e5d0ac8f4c) )
584 ROM_LOAD( "omega.k7", 0x2000, 0x1000, CRC(6d10f197) SHA1(9609a0cbeeef2efa10d49cde9f0afdca96e9c2f8) )
585 ROM_LOAD( "delta.j7", 0x3000, 0x1000, CRC(8ef9541e) SHA1(89e34f50a958ac60c5f223bcb6c1c14796b903c7) )
586 ROM_LOAD( "omega.e1", 0x9000, 0x0800, CRC(1d0fdf3a) SHA1(3333397a9745874cea1dd6a1bda783cc59393b55) )
587 ROM_LOAD( "omega.f1", 0x9800, 0x0800, CRC(d44c0814) SHA1(2f216ee6de88bbe09775619003aee2d5aa8c554d) )
588
589 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for audio cpu */
590 ROM_LOAD( "sound.k5", 0x0000, 0x0800, CRC(7d426017) SHA1(370f0fb5608819de873c845f6010cbde75a9818e) )
591 ROM_END
592
593
594 /*************************************
595 *
596 * Driver initialization
597 *
598 *************************************/
599
600 static DRIVER_INIT( omegrace )
601 {
602 /* Removed 2019-01-02 based on report that this yellow overlay is not accurate to original hardware */
603 /* Reinstated 2020-09-09 based on evidence of two sources of original hardware showing overlay color: */
604 /* https://www.youtube.com/watch?v=PTb5JVCPc2g */
605 /* https://www.youtube.com/watch?v=BgIYtzccPnw */
606 /* Also shown as yellow in flyer: https://flyers.arcade-museum.com/?page=flyer&db=videodb&id=752&image=1 */
607 /* and in flyer: https://flyers.arcade-museum.com/?page=flyer&db=videodb&id=752&image=2 */
608 artwork_set_overlay(omegrace_overlay);
609 }
610
611
612
613 /*************************************
614 *
615 * Game drivers
616 *
617 *************************************/
618
619 GAMEX( 1981, omegrace, 0, omegrace, omegrace, omegrace, ROT0, "Midway", "Omega Race", GAME_NO_COCKTAIL )
620 GAMEX( 1981, deltrace, omegrace, omegrace, omegrace, omegrace, ROT0, "Allied Leisure", "Delta Race", GAME_NO_COCKTAIL )
621