1 /*************************************************************************
2
3 Driver for Midway V-Unit games
4
5 driver by Aaron Giles
6
7 Games supported:
8 * Cruis'n USA (1994) [3 sets]
9 * Cruis'n World (1996) [3 sets]
10 * War Gods (1996)
11 * Off Road Challenge (1997)
12
13 Known bugs:
14 * textures for automatic/manual selection get overwritten in Cruis'n World
15 * rendering needs to be looked at a little more closely to fix some holes
16 * in Cruis'n World attract mode, right side of sky looks like it has wrapped
17 * Off Road Challenge has polygon sorting issues, among other problems
18
19 **************************************************************************/
20
21 #include "driver.h"
22 #include "cpu/tms32031/tms32031.h"
23 #include "cpu/adsp2100/adsp2100.h"
24 #include "sndhrdw/dcs.h"
25 #include "machine/idectrl.h"
26 #include "machine/midwayic.h"
27 #include "midvunit.h"
28 #include <time.h>
29 #include "bootstrap.h"
30 #include "inptport.h"
31
32
33 static data32_t *ram_base;
34 static data32_t *fastram_base;
35 static UINT8 cmos_protected;
36 static UINT16 control_data;
37
38 static UINT8 adc_data;
39 static UINT8 adc_shift;
40
41 static data16_t last_port0;
42 static UINT8 shifter_state;
43
44 static void *timer[2];
45 static double timer_rate;
46
47 static data32_t *tms32031_control;
48
49 static data32_t *midvplus_misc;
50
51
52
53 /*************************************
54 *
55 * Machine init
56 *
57 *************************************/
58
MACHINE_INIT(midvunit)59 static MACHINE_INIT( midvunit )
60 {
61 dcs_reset_w(0);
62 dcs_reset_w(1);
63
64 cpu_setbank(1, memory_region(REGION_USER1));
65 memcpy(ram_base, memory_region(REGION_USER1), 0x20000*4);
66
67 timer[0] = timer_alloc(NULL);
68 timer[1] = timer_alloc(NULL);
69 }
70
71
MACHINE_INIT(midvplus)72 static MACHINE_INIT( midvplus )
73 {
74 dcs_reset_w(0);
75 dcs_reset_w(1);
76
77 /* cpu_setbank(1, ram_base);*/
78 memcpy(ram_base, memory_region(REGION_USER1), 0x20000*4);
79
80 timer[0] = timer_alloc(NULL);
81 timer[1] = timer_alloc(NULL);
82
83 ide_controller_reset(0);
84 }
85
86
87
88 /*************************************
89 *
90 * Input ports
91 *
92 *************************************/
93
READ32_HANDLER(port0_r)94 static READ32_HANDLER( port0_r )
95 {
96 data16_t val = readinputport(0);
97 data16_t diff = val ^ last_port0;
98
99 /* make sure the shift controls are mutually exclusive */
100 if ((diff & 0x0400) && !(val & 0x0400))
101 shifter_state = (shifter_state == 1) ? 0 : 1;
102 if ((diff & 0x0800) && !(val & 0x0800))
103 shifter_state = (shifter_state == 2) ? 0 : 2;
104 if ((diff & 0x1000) && !(val & 0x1000))
105 shifter_state = (shifter_state == 4) ? 0 : 4;
106 if ((diff & 0x2000) && !(val & 0x2000))
107 shifter_state = (shifter_state == 8) ? 0 : 8;
108 last_port0 = val;
109
110 val = (val | 0x3c00) ^ (shifter_state << 10);
111
112 return (val << 16) | val;
113 }
114
115
READ32_HANDLER(port1_r)116 static READ32_HANDLER( port1_r )
117 {
118 return (readinputport(1) << 16) | readinputport(1);
119 }
120
121
READ32_HANDLER(port2_r)122 static READ32_HANDLER( port2_r )
123 {
124 return (readinputport(2) << 16) | readinputport(2);
125 }
126
127
128
129 /*************************************
130 *
131 * ADC input ports
132 *
133 *************************************/
134
READ32_HANDLER(midvunit_adc_r)135 READ32_HANDLER( midvunit_adc_r )
136 {
137 if (!(control_data & 0x40))
138 return adc_data << adc_shift;
139 else
140 log_cb(RETRO_LOG_DEBUG, LOGPRE "adc_r without enabling reads!\n");
141 return 0xffffffff;
142 }
143
144
adc_ready(int param)145 static void adc_ready(int param)
146 {
147 cpu_set_irq_line(0, 3, ASSERT_LINE);
148 }
149
150
WRITE32_HANDLER(midvunit_adc_w)151 WRITE32_HANDLER( midvunit_adc_w )
152 {
153 if (!(control_data & 0x20))
154 {
155 int which = (data >> adc_shift) - 4;
156 if (which < 0 || which > 2)
157 log_cb(RETRO_LOG_DEBUG, LOGPRE "adc_w: unexpected which = %02X\n", which + 4);
158 adc_data = readinputport(3 + which);
159 timer_set(TIME_IN_MSEC(1), 0, adc_ready);
160 }
161 else
162 log_cb(RETRO_LOG_DEBUG, LOGPRE "adc_w without enabling writes!\n");
163 }
164
165
166
167 /*************************************
168 *
169 * CMOS access
170 *
171 *************************************/
172
WRITE32_HANDLER(midvunit_cmos_protect_w)173 static WRITE32_HANDLER( midvunit_cmos_protect_w )
174 {
175 cmos_protected = ((data & 0xc00) != 0xc00);
176 }
177
178
WRITE32_HANDLER(midvunit_cmos_w)179 static WRITE32_HANDLER( midvunit_cmos_w )
180 {
181 if (!cmos_protected)
182 {
183 data32_t *cmos = (data32_t *)generic_nvram;
184 COMBINE_DATA(&cmos[offset]);
185 }
186 }
187
188
READ32_HANDLER(midvunit_cmos_r)189 static READ32_HANDLER( midvunit_cmos_r )
190 {
191 data32_t *cmos = (data32_t *)generic_nvram;
192 return cmos[offset];
193 }
194
195
196
197 /*************************************
198 *
199 * System controls
200 *
201 *************************************/
202
WRITE32_HANDLER(midvunit_control_w)203 WRITE32_HANDLER( midvunit_control_w )
204 {
205 UINT16 olddata = control_data;
206 COMBINE_DATA(&control_data);
207
208 /* bit 7 is the LED */
209
210 /* bit 3 is the watchdog */
211 if ((olddata ^ control_data) & 0x0008)
212 watchdog_reset_w(0, 0);
213
214 /* bit 1 is the DCS sound reset */
215 dcs_reset_w((control_data >> 1) & 1);
216
217 /* log anything unusual */
218 if ((olddata ^ control_data) & ~0x00e8)
219 log_cb(RETRO_LOG_DEBUG, LOGPRE "midvunit_control_w: old=%04X new=%04X diff=%04X\n", olddata, control_data, olddata ^ control_data);
220 }
221
222
WRITE32_HANDLER(crusnwld_control_w)223 WRITE32_HANDLER( crusnwld_control_w )
224 {
225 UINT16 olddata = control_data;
226 COMBINE_DATA(&control_data);
227
228 /* bit 11 is the DCS sound reset */
229 dcs_reset_w((control_data >> 11) & 1);
230
231 /* bit 9 is the watchdog */
232 if ((olddata ^ control_data) & 0x0200)
233 watchdog_reset_w(0, 0);
234
235 /* bit 8 is the LED */
236
237 /* log anything unusual */
238 if ((olddata ^ control_data) & ~0xe800)
239 log_cb(RETRO_LOG_DEBUG, LOGPRE "crusnwld_control_w: old=%04X new=%04X diff=%04X\n", olddata, control_data, olddata ^ control_data);
240 }
241
242
WRITE32_HANDLER(midvunit_sound_w)243 static WRITE32_HANDLER( midvunit_sound_w )
244 {
245 log_cb(RETRO_LOG_DEBUG, LOGPRE "Sound W = %02X\n", data);
246 dcs_data_w(data & 0xff);
247 }
248
249
250
251 /*************************************
252 *
253 * TMS32031 I/O accesses
254 *
255 *************************************/
256
READ32_HANDLER(tms32031_control_r)257 READ32_HANDLER( tms32031_control_r )
258 {
259 /* watch for accesses to the timers */
260 if (offset == 0x24 || offset == 0x34)
261 {
262 /* timer is clocked at 100ns */
263 int which = (offset >> 4) & 1;
264 INT32 result = timer_timeelapsed(timer[which]) * timer_rate;
265 /* log_cb(RETRO_LOG_DEBUG, LOGPRE "%06X:tms32031_control_r(%02X) = %08X\n", activecpu_get_pc(), offset, result);*/
266 return result;
267 }
268
269 /* log anything else except the memory control register */
270 if (offset != 0x64)
271 log_cb(RETRO_LOG_DEBUG, LOGPRE "%06X:tms32031_control_r(%02X)\n", activecpu_get_pc(), offset);
272
273 return tms32031_control[offset];
274 }
275
276
WRITE32_HANDLER(tms32031_control_w)277 WRITE32_HANDLER( tms32031_control_w )
278 {
279 COMBINE_DATA(&tms32031_control[offset]);
280
281 /* ignore changes to the memory control register */
282 if (offset == 0x64)
283 ;
284
285 /* watch for accesses to the timers */
286 else if (offset == 0x20 || offset == 0x30)
287 {
288 int which = (offset >> 4) & 1;
289 /* log_cb(RETRO_LOG_DEBUG, LOGPRE "%06X:tms32031_control_w(%02X) = %08X\n", activecpu_get_pc(), offset, data);*/
290 if (data & 0x40)
291 timer_adjust(timer[which], TIME_NEVER, 0, TIME_NEVER);
292
293 /* bit 0x200 selects internal clocking, which is 1/2 the main CPU clock rate */
294 if (data & 0x200)
295 timer_rate = (double)Machine->drv->cpu[0].cpu_clock * 0.5;
296 else
297 timer_rate = 10000000.;
298 }
299 else
300 log_cb(RETRO_LOG_DEBUG, LOGPRE "%06X:tms32031_control_w(%02X) = %08X\n", activecpu_get_pc(), offset, data);
301 }
302
303
304
305 /*************************************
306 *
307 * Serial number access
308 *
309 *************************************/
310
READ32_HANDLER(crusnwld_serial_status_r)311 static READ32_HANDLER( crusnwld_serial_status_r )
312 {
313 int status = midway_serial_pic_status_r();
314 return (port1_r(offset, mem_mask) & 0x7fff7fff) | (status << 31) | (status << 15);
315 }
316
317
READ32_HANDLER(crusnwld_serial_data_r)318 static READ32_HANDLER( crusnwld_serial_data_r )
319 {
320 return midway_serial_pic_r() << 16;
321 }
322
323
WRITE32_HANDLER(crusnwld_serial_data_w)324 static WRITE32_HANDLER( crusnwld_serial_data_w )
325 {
326 if ((data & 0xf0000) == 0x10000)
327 {
328 midway_serial_pic_reset_w(1);
329 midway_serial_pic_reset_w(0);
330 }
331 midway_serial_pic_w(data >> 16);
332 }
333
334
335
336 /*************************************
337 *
338 * Some kind of protection-like
339 * device
340 *
341 *************************************/
342
343 /* values from offset 3, 6, and 10 must add up to 0x904752a2 */
344 static UINT16 bit_index;
345 static UINT32 bit_data[0x10] =
346 {
347 0x3017c636,0x3017c636,0x3017c636,0x3017c636,
348 0x3017c636,0x3017c636,0x3017c636,0x3017c636,
349 0x3017c636,0x3017c636,0x3017c636,0x3017c636,
350 0x3017c636,0x3017c636,0x3017c636,0x3017c636
351 };
352
353
READ32_HANDLER(bit_data_r)354 static READ32_HANDLER( bit_data_r )
355 {
356 data32_t *cmos_base = (data32_t *)generic_nvram;
357 int bit = (bit_data[bit_index / 32] >> (31 - (bit_index % 32))) & 1;
358 bit_index = (bit_index + 1) % 512;
359 return bit ? cmos_base[offset] : ~cmos_base[offset];
360 }
361
362
WRITE32_HANDLER(bit_reset_w)363 static WRITE32_HANDLER( bit_reset_w )
364 {
365 bit_index = 0;
366 }
367
368
369
370 /*************************************
371 *
372 * Off Road Challenge PIC access
373 *
374 *************************************/
375
READ32_HANDLER(offroadc_serial_status_r)376 static READ32_HANDLER( offroadc_serial_status_r )
377 {
378 int status = midway_serial_pic2_status_r();
379 return (port1_r(offset, mem_mask) & 0x7fff7fff) | (status << 31) | (status << 15);
380 }
381
382
READ32_HANDLER(offroadc_serial_data_r)383 static READ32_HANDLER( offroadc_serial_data_r )
384 {
385 return midway_serial_pic2_r() << 16;
386 }
387
388
WRITE32_HANDLER(offroadc_serial_data_w)389 static WRITE32_HANDLER( offroadc_serial_data_w )
390 {
391 midway_serial_pic2_w(data >> 16);
392 }
393
394
395
396 /*************************************
397 *
398 * War Gods I/O ASICs
399 *
400 *************************************/
401
READ32_HANDLER(midvplus_misc_r)402 static READ32_HANDLER( midvplus_misc_r )
403 {
404 data32_t result = midvplus_misc[offset];
405
406 switch (offset)
407 {
408 case 0:
409 result = 0xb580;
410 break;
411
412 case 2:
413 result = 0xf3ff;
414 break;
415
416 case 3:
417 /* seems to want loopback */
418 break;
419 }
420
421 if (offset != 0 && offset != 3)
422 log_cb(RETRO_LOG_DEBUG, LOGPRE "%06X:midvplus_misc_r(%d) = %08X\n", activecpu_get_pc(), offset, result);
423 return result;
424 }
425
426
WRITE32_HANDLER(midvplus_misc_w)427 static WRITE32_HANDLER( midvplus_misc_w )
428 {
429 data32_t olddata = midvplus_misc[offset];
430 int logit = 1;
431
432 COMBINE_DATA(&midvplus_misc[offset]);
433
434 switch (offset)
435 {
436 case 0:
437 /* bit 0x10 resets watchdog */
438 if ((olddata ^ midvplus_misc[offset]) & 0x0010)
439 {
440 watchdog_reset_w(0, 0);
441 logit = 0;
442 }
443 break;
444
445 case 3:
446 logit = 0;
447 break;
448 }
449
450 if (logit)
451 log_cb(RETRO_LOG_DEBUG, LOGPRE "%06X:midvplus_misc_w(%d) = %08X\n", activecpu_get_pc(), offset, data);
452 }
453
454
455
456 /*************************************
457 *
458 * War Gods RAM grossness
459 *
460 *************************************/
461
midvplus_xf1_w(UINT8 val)462 static void midvplus_xf1_w(UINT8 val)
463 {
464 static int lastval;
465 /* log_cb(RETRO_LOG_DEBUG, LOGPRE "xf1_w = %d\n", val);*/
466
467 if (lastval && !val)
468 memcpy(ram_base, fastram_base, 0x20000*4);
469
470 lastval = val;
471 }
472
473
474
475 /*************************************
476 *
477 * Memory maps
478 *
479 *************************************/
480
481 #define ADDR_RANGE(s,e) ((s)*4), ((e)*4+3)
482
MEMORY_READ32_START(vunit_readmem)483 static MEMORY_READ32_START( vunit_readmem )
484 { ADDR_RANGE(0x000000, 0x01ffff), MRA32_RAM },
485 { ADDR_RANGE(0x400000, 0x41ffff), MRA32_RAM },
486 { ADDR_RANGE(0x808000, 0x80807f), tms32031_control_r },
487 { ADDR_RANGE(0x809800, 0x809fff), MRA32_RAM },
488 { ADDR_RANGE(0x900000, 0x97ffff), midvunit_videoram_r },
489 { ADDR_RANGE(0x980000, 0x980000), midvunit_dma_queue_entries_r },
490 { ADDR_RANGE(0x980020, 0x980020), midvunit_scanline_r },
491 { ADDR_RANGE(0x980040, 0x980040), midvunit_page_control_r },
492 { ADDR_RANGE(0x980080, 0x980080), MRA32_NOP },
493 { ADDR_RANGE(0x980082, 0x980083), midvunit_dma_trigger_r },
494 { ADDR_RANGE(0x990000, 0x990000), MRA32_NOP }, /* link PAL (low 4 bits must == 4)*/
495 { ADDR_RANGE(0x991030, 0x991030), port1_r },
496 /* { ADDR_RANGE(0x991050, 0x991050), MRA32_RAM }, */ /* seems to be another port*/
497 { ADDR_RANGE(0x991060, 0x991060), port0_r },
498 { ADDR_RANGE(0x992000, 0x992000), port2_r },
499 { ADDR_RANGE(0x993000, 0x993000), midvunit_adc_r },
500 { ADDR_RANGE(0x997000, 0x997000), MRA32_NOP }, /* communications*/
501 { ADDR_RANGE(0x9c0000, 0x9c1fff), midvunit_cmos_r },
502 { ADDR_RANGE(0x9e0000, 0x9e7fff), MRA32_RAM },
503 { ADDR_RANGE(0xa00000, 0xbfffff), midvunit_textureram_r },
504 { ADDR_RANGE(0xc00000, 0xffffff), MRA32_BANK1 },
505 MEMORY_END
506
507
508 static MEMORY_WRITE32_START( vunit_writemem )
509 { ADDR_RANGE(0x000000, 0x01ffff), MWA32_RAM, &ram_base },
510 { ADDR_RANGE(0x400000, 0x41ffff), MWA32_RAM },
511 { ADDR_RANGE(0x600000, 0x600000), midvunit_dma_queue_w },
512 { ADDR_RANGE(0x808000, 0x80807f), tms32031_control_w, &tms32031_control },
513 { ADDR_RANGE(0x809800, 0x809fff), MWA32_RAM },
514 { ADDR_RANGE(0x900000, 0x97ffff), midvunit_videoram_w, (data32_t **)&midvunit_videoram },
515 { ADDR_RANGE(0x980020, 0x98002b), midvunit_video_control_w },
516 { ADDR_RANGE(0x980040, 0x980040), midvunit_page_control_w },
517 { ADDR_RANGE(0x980080, 0x980080), MWA32_NOP },
518 { ADDR_RANGE(0x993000, 0x993000), midvunit_adc_w },
519 { ADDR_RANGE(0x994000, 0x994000), midvunit_control_w },
520 { ADDR_RANGE(0x995000, 0x995000), MWA32_NOP }, /* force feedback?*/
521 { ADDR_RANGE(0x995020, 0x995020), midvunit_cmos_protect_w },
522 { ADDR_RANGE(0x997000, 0x997000), MWA32_NOP }, /* link communications*/
523 { ADDR_RANGE(0x9a0000, 0x9a0000), midvunit_sound_w },
524 { ADDR_RANGE(0x9c0000, 0x9c1fff), midvunit_cmos_w, (data32_t **)&generic_nvram, &generic_nvram_size },
525 { ADDR_RANGE(0x9e0000, 0x9e7fff), midvunit_paletteram_w, &paletteram32 },
526 { ADDR_RANGE(0xa00000, 0xbfffff), midvunit_textureram_w, &midvunit_textureram },
527 { ADDR_RANGE(0xc00000, 0xffffff), MWA32_ROM },
528 MEMORY_END
529
530
531 static struct tms32031_config midvplus_config = { 0, NULL, midvplus_xf1_w };
532
MEMORY_READ32_START(midvplus_readmem)533 static MEMORY_READ32_START( midvplus_readmem )
534 { ADDR_RANGE(0x000000, 0x01ffff), MRA32_RAM },
535 { ADDR_RANGE(0x400000, 0x41ffff), MRA32_RAM },
536 { ADDR_RANGE(0x808000, 0x80807f), tms32031_control_r },
537 { ADDR_RANGE(0x809800, 0x809fff), MRA32_RAM },
538 { ADDR_RANGE(0x900000, 0x97ffff), midvunit_videoram_r },
539 { ADDR_RANGE(0x980000, 0x980000), midvunit_dma_queue_entries_r },
540 { ADDR_RANGE(0x980020, 0x980020), midvunit_scanline_r },
541 { ADDR_RANGE(0x980040, 0x980040), midvunit_page_control_r },
542 { ADDR_RANGE(0x980080, 0x980080), MRA32_NOP },
543 { ADDR_RANGE(0x980082, 0x980083), midvunit_dma_trigger_r },
544 { ADDR_RANGE(0x990000, 0x99000f), midway_ioasic_r },
545 { ADDR_RANGE(0x9a0000, 0x9a0007), midway_ide_asic_r },
546 { ADDR_RANGE(0x9c0000, 0x9c7fff), MRA32_RAM },
547 { ADDR_RANGE(0x9d0000, 0x9d000f), midvplus_misc_r },
548 { ADDR_RANGE(0xa00000, 0xbfffff), midvunit_textureram_r },
549 { ADDR_RANGE(0xc00000, 0xcfffff), MRA32_RAM },
550 MEMORY_END
551
552
553 static MEMORY_WRITE32_START( midvplus_writemem )
554 { ADDR_RANGE(0x000000, 0x01ffff), MWA32_RAM, &ram_base },
555 { ADDR_RANGE(0x400000, 0x41ffff), MWA32_RAM, &fastram_base },
556 { ADDR_RANGE(0x600000, 0x600000), midvunit_dma_queue_w },
557 { ADDR_RANGE(0x808000, 0x80807f), tms32031_control_w, &tms32031_control },
558 { ADDR_RANGE(0x809800, 0x809fff), MWA32_RAM },
559 { ADDR_RANGE(0x900000, 0x97ffff), midvunit_videoram_w, (data32_t **)&midvunit_videoram },
560 { ADDR_RANGE(0x980020, 0x98002b), midvunit_video_control_w },
561 { ADDR_RANGE(0x980040, 0x980040), midvunit_page_control_w },
562 { ADDR_RANGE(0x980080, 0x980080), MWA32_NOP },
563 { ADDR_RANGE(0x990000, 0x99000f), midway_ioasic_w },
564 { ADDR_RANGE(0x994000, 0x994000), midvunit_control_w },
565 { ADDR_RANGE(0x995020, 0x995020), midvunit_cmos_protect_w },
566 { ADDR_RANGE(0x9a0000, 0x9a0007), midway_ide_asic_w },
567 { ADDR_RANGE(0x9c0000, 0x9c7fff), midvunit_paletteram_w, &paletteram32 },
568 { ADDR_RANGE(0x9d0000, 0x9d000f), midvplus_misc_w, &midvplus_misc },
569 { ADDR_RANGE(0xa00000, 0xbfffff), midvunit_textureram_w, &midvunit_textureram },
570 { ADDR_RANGE(0xc00000, 0xcfffff), MWA32_RAM },
571 MEMORY_END
572
573
574
575 /*************************************
576 *
577 * Input ports
578 *
579 *************************************/
580
581 INPUT_PORTS_START( crusnusa )
582 PORT_START
583 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
584 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
585 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 )
586 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT ) /* Slam Switch */
587 PORT_BITX(0x0010, IP_ACTIVE_LOW, 0, "Enter", KEYCODE_F2, IP_JOY_NONE ) /* Test switch */
588 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED )
589 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 )
590 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN3 )
591 PORT_BITX(0x0100, IP_ACTIVE_LOW, 0, "Volume Down", KEYCODE_MINUS, IP_JOY_NONE )
592 PORT_BITX(0x0200, IP_ACTIVE_LOW, 0, "Volume Up", KEYCODE_EQUALS, IP_JOY_NONE )
593 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON5 ) /* 4th */
594 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON4 ) /* 3rd */
595 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON3 ) /* 2nd */
596 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) /* 1st */
597 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN4 )
598 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
599
600 PORT_START
601 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
602 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON6 ) /* radio */
603 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
604 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
605 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 ) /* view 1 */
606 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 ) /* view 2 */
607 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 ) /* view 3 */
608 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER2 ) /* view 4 */
609 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
610
611 PORT_START
612 PORT_DIPNAME( 0x0001, 0x0000, "Link Status" )
613 PORT_DIPSETTING( 0x0000, "Master" )
614 PORT_DIPSETTING( 0x0001, "Slave" )
615 PORT_DIPNAME( 0x0002, 0x0002, "Link???" )
616 PORT_DIPSETTING( 0x0002, DEF_STR( Off ))
617 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
618 PORT_DIPNAME( 0x0004, 0x0004, "Linking" )
619 PORT_DIPSETTING( 0x0004, DEF_STR( Off ))
620 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
621 PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ))
622 PORT_DIPSETTING( 0x0008, DEF_STR( Off ))
623 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
624 PORT_DIPNAME( 0x0010, 0x0010, "Freeze" )
625 PORT_DIPSETTING( 0x0010, DEF_STR( Off ))
626 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
627 PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Cabinet ))
628 PORT_DIPSETTING( 0x0020, DEF_STR( Upright ))
629 PORT_DIPSETTING( 0x0000, "Sitdown" )
630 PORT_DIPNAME( 0x0040, 0x0040, "Enable Motion" )
631 PORT_DIPSETTING( 0x0040, DEF_STR( Off ))
632 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
633 PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
634 PORT_DIPNAME( 0x0100, 0x0100, "Coin Counters" )
635 PORT_DIPSETTING( 0x0100, "1" )
636 PORT_DIPSETTING( 0x0000, "2" )
637 PORT_DIPNAME( 0xfe00, 0xf800, DEF_STR( Coinage ))
638 PORT_DIPSETTING( 0xfe00, "USA-1" )
639 PORT_DIPSETTING( 0xfa00, "USA-3" )
640 PORT_DIPSETTING( 0xfc00, "USA-7" )
641 PORT_DIPSETTING( 0xf800, "USA-8" )
642 PORT_DIPSETTING( 0xf600, "Norway-1" )
643 PORT_DIPSETTING( 0xee00, "Australia-1" )
644 PORT_DIPSETTING( 0xea00, "Australia-2" )
645 PORT_DIPSETTING( 0xec00, "Australia-3" )
646 PORT_DIPSETTING( 0xe800, "Australia-4" )
647 PORT_DIPSETTING( 0xde00, "Swiss-1" )
648 PORT_DIPSETTING( 0xda00, "Swiss-2" )
649 PORT_DIPSETTING( 0xdc00, "Swiss-3" )
650 PORT_DIPSETTING( 0xce00, "Belgium-1" )
651 PORT_DIPSETTING( 0xca00, "Belgium-2" )
652 PORT_DIPSETTING( 0xcc00, "Belgium-3" )
653 PORT_DIPSETTING( 0xbe00, "French-1" )
654 PORT_DIPSETTING( 0xba00, "French-2" )
655 PORT_DIPSETTING( 0xbc00, "French-3" )
656 PORT_DIPSETTING( 0xb800, "French-4" )
657 PORT_DIPSETTING( 0xb600, "Hungary-1" )
658 PORT_DIPSETTING( 0xae00, "Taiwan-1" )
659 PORT_DIPSETTING( 0xaa00, "Taiwan-2" )
660 PORT_DIPSETTING( 0xac00, "Taiwan-3" )
661 PORT_DIPSETTING( 0x9e00, "UK-1" )
662 PORT_DIPSETTING( 0x9a00, "UK-2" )
663 PORT_DIPSETTING( 0x9c00, "UK-3" )
664 PORT_DIPSETTING( 0x8e00, "Finland-1" )
665 PORT_DIPSETTING( 0x7e00, "German-1" )
666 PORT_DIPSETTING( 0x7a00, "German-2" )
667 PORT_DIPSETTING( 0x7c00, "German-3" )
668 PORT_DIPSETTING( 0x7800, "German-4" )
669 PORT_DIPSETTING( 0x7600, "Denmark-1" )
670 PORT_DIPSETTING( 0x6e00, "Japan-1" )
671 PORT_DIPSETTING( 0x6a00, "Japan-2" )
672 PORT_DIPSETTING( 0x6c00, "Japan-3" )
673 PORT_DIPSETTING( 0x5e00, "Italy-1" )
674 PORT_DIPSETTING( 0x5a00, "Italy-2" )
675 PORT_DIPSETTING( 0x5c00, "Italy-3" )
676 PORT_DIPSETTING( 0x4e00, "Sweden-1" )
677 PORT_DIPSETTING( 0x3e00, "Canada-1" )
678 PORT_DIPSETTING( 0x3a00, "Canada-2" )
679 PORT_DIPSETTING( 0x3c00, "Canada-3" )
680 PORT_DIPSETTING( 0x3600, "General-1" )
681 PORT_DIPSETTING( 0x3200, "General-3" )
682 PORT_DIPSETTING( 0x3400, "General-5" )
683 PORT_DIPSETTING( 0x3000, "General-7" )
684 PORT_DIPSETTING( 0x2e00, "Austria-1" )
685 PORT_DIPSETTING( 0x2a00, "Austria-2" )
686 PORT_DIPSETTING( 0x2c00, "Austria-3" )
687 PORT_DIPSETTING( 0x2800, "Austria-4" )
688 PORT_DIPSETTING( 0x1e00, "Spain-1" )
689 PORT_DIPSETTING( 0x1a00, "Spain-2" )
690 PORT_DIPSETTING( 0x1c00, "Spain-3" )
691 PORT_DIPSETTING( 0x1800, "Spain-4" )
692 PORT_DIPSETTING( 0x0e00, "Netherland-1" )
693
694 PORT_START /* wheel */
695 PORT_ANALOG( 0xff, 0x80, IPT_PADDLE, 25, 20, 0x10, 0xf0 )
696
697 PORT_START /* gas pedal */
698 PORT_ANALOG( 0xff, 0x00, IPT_PEDAL, 100, 20, 0x00, 0xff )
699
700 PORT_START /* brake pedal */
701 PORT_ANALOG( 0xff, 0x00, IPT_PEDAL2, 100, 20, 0x00, 0xff )
702 INPUT_PORTS_END
703
704
705 INPUT_PORTS_START( crusnwld )
706 PORT_START
707 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
708 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
709 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 )
710 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT ) /* Slam Switch */
711 PORT_BITX(0x0010, IP_ACTIVE_LOW, 0, "Enter", KEYCODE_F2, IP_JOY_NONE ) /* Test switch */
712 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED )
713 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 )
714 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN3 )
715 PORT_BITX(0x0100, IP_ACTIVE_LOW, 0, "Volume Down", KEYCODE_MINUS, IP_JOY_NONE )
716 PORT_BITX(0x0200, IP_ACTIVE_LOW, 0, "Volume Up", KEYCODE_EQUALS, IP_JOY_NONE )
717 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON5 ) /* 4th */
718 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON4 ) /* 3rd */
719 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON3 ) /* 2nd */
720 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) /* 1st */
721 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN4 )
722 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
723
724 PORT_START
725 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
726 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON6 ) /* radio */
727 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
728 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
729 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 ) /* view 1 */
730 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 ) /* view 2 */
731 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 ) /* view 3 */
732 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER2 ) /* view 4 */
733 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
734
735 PORT_START
736 PORT_DIPNAME( 0x0003, 0x0000, "Link Number" )
737 PORT_DIPSETTING( 0x0000, "1" )
738 PORT_DIPSETTING( 0x0001, "2" )
739 PORT_DIPSETTING( 0x0002, "3" )
740 PORT_DIPSETTING( 0x0003, "4" )
741 PORT_DIPNAME( 0x0004, 0x0004, "Linking" )
742 PORT_DIPSETTING( 0x0004, DEF_STR( Off ))
743 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
744 PORT_DIPNAME( 0x0018, 0x0008, "Games Linked" )
745 PORT_DIPSETTING( 0x0008, "2" )
746 PORT_DIPSETTING( 0x0010, "3" )
747 PORT_DIPSETTING( 0x0018, "4" )
748 PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Cabinet ))
749 PORT_DIPSETTING( 0x0020, DEF_STR( Upright ))
750 PORT_DIPSETTING( 0x0000, "Sitdown" )
751 PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ))
752 PORT_DIPSETTING( 0x0040, DEF_STR( Off ))
753 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
754 PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
755 PORT_DIPNAME( 0x0100, 0x0100, "Coin Counters" )
756 PORT_DIPSETTING( 0x0100, "1" )
757 PORT_DIPSETTING( 0x0000, "2" )
758 PORT_DIPNAME( 0xfe00, 0xf800, DEF_STR( Coinage ))
759 PORT_DIPSETTING( 0xfe00, "USA-1" )
760 PORT_DIPSETTING( 0xfa00, "USA-3" )
761 PORT_DIPSETTING( 0xfc00, "USA-7" )
762 PORT_DIPSETTING( 0xf800, "USA-8" )
763 PORT_DIPSETTING( 0xf600, "Norway-1" )
764 PORT_DIPSETTING( 0xee00, "Australia-1" )
765 PORT_DIPSETTING( 0xea00, "Australia-2" )
766 PORT_DIPSETTING( 0xec00, "Australia-3" )
767 PORT_DIPSETTING( 0xe800, "Australia-4" )
768 PORT_DIPSETTING( 0xde00, "Swiss-1" )
769 PORT_DIPSETTING( 0xda00, "Swiss-2" )
770 PORT_DIPSETTING( 0xdc00, "Swiss-3" )
771 PORT_DIPSETTING( 0xce00, "Belgium-1" )
772 PORT_DIPSETTING( 0xca00, "Belgium-2" )
773 PORT_DIPSETTING( 0xcc00, "Belgium-3" )
774 PORT_DIPSETTING( 0xbe00, "French-1" )
775 PORT_DIPSETTING( 0xba00, "French-2" )
776 PORT_DIPSETTING( 0xbc00, "French-3" )
777 PORT_DIPSETTING( 0xb800, "French-4" )
778 PORT_DIPSETTING( 0xb600, "Hungary-1" )
779 PORT_DIPSETTING( 0xae00, "Taiwan-1" )
780 PORT_DIPSETTING( 0xaa00, "Taiwan-2" )
781 PORT_DIPSETTING( 0xac00, "Taiwan-3" )
782 PORT_DIPSETTING( 0x9e00, "UK-1" )
783 PORT_DIPSETTING( 0x9a00, "UK-2" )
784 PORT_DIPSETTING( 0x9c00, "UK-3" )
785 PORT_DIPSETTING( 0x8e00, "Finland-1" )
786 PORT_DIPSETTING( 0x7e00, "German-1" )
787 PORT_DIPSETTING( 0x7a00, "German-2" )
788 PORT_DIPSETTING( 0x7c00, "German-3" )
789 PORT_DIPSETTING( 0x7800, "German-4" )
790 PORT_DIPSETTING( 0x7600, "Denmark-1" )
791 PORT_DIPSETTING( 0x6e00, "Japan-1" )
792 PORT_DIPSETTING( 0x6a00, "Japan-2" )
793 PORT_DIPSETTING( 0x6c00, "Japan-3" )
794 PORT_DIPSETTING( 0x5e00, "Italy-1" )
795 PORT_DIPSETTING( 0x5a00, "Italy-2" )
796 PORT_DIPSETTING( 0x5c00, "Italy-3" )
797 PORT_DIPSETTING( 0x4e00, "Sweden-1" )
798 PORT_DIPSETTING( 0x3e00, "Canada-1" )
799 PORT_DIPSETTING( 0x3a00, "Canada-2" )
800 PORT_DIPSETTING( 0x3c00, "Canada-3" )
801 PORT_DIPSETTING( 0x3600, "General-1" )
802 PORT_DIPSETTING( 0x3200, "General-3" )
803 PORT_DIPSETTING( 0x3400, "General-5" )
804 PORT_DIPSETTING( 0x3000, "General-7" )
805 PORT_DIPSETTING( 0x2e00, "Austria-1" )
806 PORT_DIPSETTING( 0x2a00, "Austria-2" )
807 PORT_DIPSETTING( 0x2c00, "Austria-3" )
808 PORT_DIPSETTING( 0x2800, "Austria-4" )
809 PORT_DIPSETTING( 0x1e00, "Spain-1" )
810 PORT_DIPSETTING( 0x1a00, "Spain-2" )
811 PORT_DIPSETTING( 0x1c00, "Spain-3" )
812 PORT_DIPSETTING( 0x1800, "Spain-4" )
813 PORT_DIPSETTING( 0x0e00, "Netherland-1" )
814
815 PORT_START /* wheel */
816 PORT_ANALOG( 0xff, 0x80, IPT_PADDLE, 25, 20, 0x10, 0xf0 )
817
818 PORT_START /* gas pedal */
819 PORT_ANALOG( 0xff, 0x00, IPT_PEDAL, 100, 20, 0x00, 0xff )
820
821 PORT_START /* brake pedal */
822 PORT_ANALOG( 0xff, 0x00, IPT_PEDAL2, 100, 20, 0x00, 0xff )
823 INPUT_PORTS_END
824
825
826 INPUT_PORTS_START( offroadc )
827 PORT_START
828 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
829 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
830 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 )
831 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT ) /* Slam Switch */
832 PORT_BITX(0x0010, IP_ACTIVE_LOW, 0, "Enter", KEYCODE_F2, IP_JOY_NONE ) /* Test switch */
833 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED )
834 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 )
835 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN3 )
836 PORT_BITX(0x0100, IP_ACTIVE_LOW, 0, "Volume Down", KEYCODE_MINUS, IP_JOY_NONE )
837 PORT_BITX(0x0200, IP_ACTIVE_LOW, 0, "Volume Up", KEYCODE_EQUALS, IP_JOY_NONE )
838 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON5 ) /* 4th */
839 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON4 ) /* 3rd */
840 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON3 ) /* 2nd */
841 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) /* 1st */
842 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN4 )
843 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
844
845 PORT_START
846 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
847 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON6 ) /* radio */
848 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
849 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
850 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 ) /* view 1 */
851 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 ) /* view 2 */
852 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 ) /* view 3 */
853 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER2 ) /* view 4 */
854 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
855
856 PORT_START
857 PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ))
858 PORT_DIPSETTING( 0x0001, DEF_STR( Off ))
859 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
860 PORT_DIPNAME( 0x0002, 0x0000, "Shifter" )
861 PORT_DIPSETTING( 0x0002, "Closed" )
862 PORT_DIPSETTING( 0x0000, "Open" )
863 PORT_DIPNAME( 0x0004, 0x0004, "Girls" )
864 PORT_DIPSETTING( 0x0000, DEF_STR( Off ))
865 PORT_DIPSETTING( 0x0004, DEF_STR( On ))
866 PORT_DIPNAME( 0x0008, 0x0008, "Road Kill" )
867 PORT_DIPSETTING( 0x0000, DEF_STR( Off ))
868 PORT_DIPSETTING( 0x0008, DEF_STR( On ))
869 PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ))
870 PORT_DIPSETTING( 0x0010, DEF_STR( Off ))
871 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
872 PORT_DIPNAME( 0x0020, 0x0020, "Link" )
873 PORT_DIPSETTING( 0x0020, "Disabled" )
874 PORT_DIPSETTING( 0x0000, "Enabled" )
875 PORT_DIPNAME( 0x00c0, 0x00c0, "Link Machine" )
876 PORT_DIPSETTING( 0x00c0, "1" )
877 PORT_DIPSETTING( 0x0080, "2" )
878 PORT_DIPSETTING( 0x0040, "3" )
879 PORT_DIPSETTING( 0x0000, "4" )
880 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ))
881 PORT_DIPSETTING( 0x0100, DEF_STR( Off ))
882 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
883 PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ))
884 PORT_DIPSETTING( 0x0200, DEF_STR( Off ))
885 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
886 PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ))
887 PORT_DIPSETTING( 0x0400, DEF_STR( Off ))
888 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
889 PORT_DIPNAME( 0xf800, 0xf800, DEF_STR( Coinage ))
890 PORT_DIPSETTING( 0xf800, "USA 1" )
891 PORT_DIPSETTING( 0xf000, "German 1" )
892 PORT_DIPSETTING( 0xe800, "French 1" )
893 PORT_DIPSETTING( 0xe000, "Canada 1" )
894 PORT_DIPSETTING( 0xd800, "Swiss 1" )
895 PORT_DIPSETTING( 0xd000, "Italy 1" )
896 PORT_DIPSETTING( 0xc800, "UK 1" )
897 PORT_DIPSETTING( 0xc000, "Spain 1" )
898 PORT_DIPSETTING( 0xb800, "Australia 1" )
899 PORT_DIPSETTING( 0xb000, "Japan 1" )
900 PORT_DIPSETTING( 0xa800, "Taiwan 1" )
901 PORT_DIPSETTING( 0xa000, "Austria 1" )
902 PORT_DIPSETTING( 0x9800, "Belgium 1" )
903 PORT_DIPSETTING( 0x9000, "Sweden 1" )
904 PORT_DIPSETTING( 0x8800, "Finland 1" )
905 PORT_DIPSETTING( 0x8000, "Netherlands 1" )
906 PORT_DIPSETTING( 0x7800, "Norway 1" )
907 PORT_DIPSETTING( 0x7000, "Denmark 1" )
908 PORT_DIPSETTING( 0x6800, "Hungary 1" )
909
910 PORT_START /* wheel */
911 PORT_ANALOG( 0xff, 0x80, IPT_PADDLE, 25, 20, 0x10, 0xf0 )
912
913 PORT_START /* gas pedal */
914 PORT_ANALOG( 0xff, 0x00, IPT_PEDAL, 100, 20, 0x00, 0xff )
915
916 PORT_START /* brake pedal */
917 PORT_ANALOG( 0xff, 0x00, IPT_PEDAL2, 100, 20, 0x00, 0xff )
918 INPUT_PORTS_END
919
920
921 INPUT_PORTS_START( wargods )
922 PORT_START /* DS1 */
923 PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ))
924 PORT_DIPSETTING( 0x0001, DEF_STR( Off ))
925 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
926 PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ))
927 PORT_DIPSETTING( 0x0002, DEF_STR( Off ))
928 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
929 PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ))
930 PORT_DIPSETTING( 0x0004, DEF_STR( Off ))
931 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
932 PORT_DIPNAME( 0x0008, 0x0008, "Blood" )
933 PORT_DIPSETTING( 0x0000, DEF_STR( Off ))
934 PORT_DIPSETTING( 0x0008, DEF_STR( On ))
935 PORT_DIPNAME( 0x0010, 0x0010, "Graphics" )
936 PORT_DIPSETTING( 0x0010, "Normal" )
937 PORT_DIPSETTING( 0x0000, "Family" )
938 PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ))
939 PORT_DIPSETTING( 0x0020, DEF_STR( Off ))
940 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
941 PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ))
942 PORT_DIPSETTING( 0x0040, DEF_STR( Off ))
943 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
944 PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ))
945 PORT_DIPSETTING( 0x0080, DEF_STR( Off ))
946 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
947 PORT_DIPNAME( 0x0100, 0x0100, "Coinage Source" )
948 PORT_DIPSETTING( 0x0100, "Dipswitch" )
949 PORT_DIPSETTING( 0x0000, "CMOS" )
950 PORT_DIPNAME( 0x3e00, 0x3e00, DEF_STR( Coinage ))
951 PORT_DIPSETTING( 0x3e00, "USA-1" )
952 PORT_DIPSETTING( 0x3c00, "USA-2" )
953 PORT_DIPSETTING( 0x3a00, "USA-3" )
954 PORT_DIPSETTING( 0x3800, "USA-4" )
955 PORT_DIPSETTING( 0x3400, "USA-9" )
956 PORT_DIPSETTING( 0x3200, "USA-10" )
957 PORT_DIPSETTING( 0x3600, "USA-ECA" )
958 PORT_DIPSETTING( 0x2e00, "German-1" )
959 PORT_DIPSETTING( 0x2c00, "German-2" )
960 PORT_DIPSETTING( 0x2a00, "German-3" )
961 PORT_DIPSETTING( 0x2800, "German-4" )
962 PORT_DIPSETTING( 0x2400, "German-5" )
963 PORT_DIPSETTING( 0x2600, "German-ECA" )
964 PORT_DIPSETTING( 0x1e00, "French-1" )
965 PORT_DIPSETTING( 0x1c00, "French-2" )
966 PORT_DIPSETTING( 0x1a00, "French-3" )
967 PORT_DIPSETTING( 0x1800, "French-4" )
968 PORT_DIPSETTING( 0x1400, "French-11" )
969 PORT_DIPSETTING( 0x1200, "French-12" )
970 PORT_DIPSETTING( 0x1600, "French-ECA" )
971 PORT_DIPSETTING( 0x3000, DEF_STR( Free_Play ))
972 PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ))
973 PORT_DIPSETTING( 0x4000, DEF_STR( Off ))
974 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
975 PORT_DIPNAME( 0x8000, 0x8000, "Test Switch" )
976 PORT_DIPSETTING( 0x8000, DEF_STR( Off ))
977 PORT_DIPSETTING( 0x0000, DEF_STR( On ))
978
979 PORT_START
980 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
981 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
982 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 )
983 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT ) /* Slam Switch */
984 PORT_BITX(0x0010, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
985 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START2 )
986 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 )
987 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN3 )
988 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN4 )
989 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START3 )
990 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START4 )
991 PORT_BITX(0x0800, IP_ACTIVE_LOW, 0, "Volume Down", KEYCODE_MINUS, IP_JOY_NONE )
992 PORT_BITX(0x1000, IP_ACTIVE_LOW, 0, "Volume Up", KEYCODE_EQUALS, IP_JOY_NONE )
993 PORT_BIT( 0x6000, IP_ACTIVE_LOW, IPT_UNUSED )
994 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SPECIAL ) /* Bill */
995
996 PORT_START
997 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER1 | IPF_8WAY )
998 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER1 | IPF_8WAY )
999 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER1 | IPF_8WAY )
1000 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 | IPF_8WAY )
1001 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
1002 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
1003 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
1004 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
1005 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 | IPF_8WAY )
1006 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 | IPF_8WAY )
1007 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 | IPF_8WAY )
1008 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 | IPF_8WAY )
1009 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
1010 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
1011 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
1012 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
1013
1014 PORT_START
1015 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER1 )
1016 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )
1017 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON6 | IPF_PLAYER1 )
1018 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED )
1019 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER2 )
1020 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 )
1021 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON6 | IPF_PLAYER2 )
1022 PORT_BIT( 0xff80, IP_ACTIVE_LOW, IPT_UNUSED )
1023 INPUT_PORTS_END
1024
1025
1026
1027 /*************************************
1028 *
1029 * Machine drivers
1030 *
1031 *************************************/
1032
1033 MACHINE_DRIVER_START( midvcommon )
1034
1035 /* basic machine hardware */
1036 MDRV_CPU_ADD_TAG("main", TMS32031, 50000000)
1037 MDRV_CPU_MEMORY(vunit_readmem,vunit_writemem)
1038
1039 MDRV_FRAMES_PER_SECOND(57)
1040 MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
1041
1042 MDRV_MACHINE_INIT(midvunit)
1043 MDRV_NVRAM_HANDLER(generic_1fill)
1044
1045 /* video hardware */
1046 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
1047 MDRV_SCREEN_SIZE(512, 432)
1048 MDRV_VISIBLE_AREA(0, 511, 0, 399)
1049 MDRV_PALETTE_LENGTH(32768)
1050
1051 MDRV_VIDEO_START(midvunit)
1052 MDRV_VIDEO_UPDATE(midvunit)
1053 MACHINE_DRIVER_END
1054
1055
1056 MACHINE_DRIVER_START( midvunit )
1057 MDRV_IMPORT_FROM(midvcommon)
1058
1059 /* sound hardware */
1060 MDRV_IMPORT_FROM(dcs_audio)
1061 MACHINE_DRIVER_END
1062
1063
1064 MACHINE_DRIVER_START( midvplus )
1065 MDRV_IMPORT_FROM(midvcommon)
1066
1067 /* basic machine hardware */
1068 MDRV_CPU_MODIFY("main")
1069 MDRV_CPU_CONFIG(midvplus_config)
1070 MDRV_CPU_MEMORY(midvplus_readmem,midvplus_writemem)
1071
1072 MDRV_MACHINE_INIT(midvplus)
1073 MDRV_NVRAM_HANDLER(midway_serial_pic2)
1074
1075 /* sound hardware */
1076 MDRV_IMPORT_FROM(dcs2_audio)
1077 MACHINE_DRIVER_END
1078
1079
1080
1081 /*************************************
1082 *
1083 * ROM definitions
1084 *
1085 *************************************/
1086
1087 ROM_START( crusnusa )
1088 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* dummy 32C031 region */
1089
1090 ROM_REGION( ADSP2100_SIZE + 0x800000, REGION_CPU2, 0 ) /* ADSP-2105 data */
1091 ROM_LOAD( "cusa.u2", ADSP2100_SIZE + 0x000000, 0x80000, CRC(b9338332) SHA1(e5c420e63c4eba0010a68c7e0a57ef210e2c83d2) )
1092 ROM_LOAD( "cusa.u3", ADSP2100_SIZE + 0x100000, 0x80000, CRC(cd8325d6) SHA1(d65d7263e056ca1d637adb44cafef523e0831a34) )
1093 ROM_LOAD( "cusa.u4", ADSP2100_SIZE + 0x200000, 0x80000, CRC(fab457f3) SHA1(2b4b647838b7a8100afc25ca1ffdc74ed67ae00a) )
1094 ROM_LOAD( "cusa.u5", ADSP2100_SIZE + 0x300000, 0x80000, CRC(becc92f4) SHA1(6dffa73ff5270155c44f295e443d5e77c03c0338) )
1095 ROM_LOAD( "cusa.u6", ADSP2100_SIZE + 0x400000, 0x80000, CRC(a9f915d3) SHA1(6a16a2d7a807a775673e7121b54f37c583581203) )
1096 ROM_LOAD( "cusa.u7", ADSP2100_SIZE + 0x500000, 0x80000, CRC(424f0bbc) SHA1(f38a431fc0fb7102c51f2d5b6f716dd4669a9822) )
1097 ROM_LOAD( "cusa.u8", ADSP2100_SIZE + 0x600000, 0x80000, CRC(03c28199) SHA1(393b009acd3eceb346b8fff45ae2bdf4f53d041f) )
1098 ROM_LOAD( "cusa.u9", ADSP2100_SIZE + 0x700000, 0x80000, CRC(24ba6371) SHA1(f60a9ff73b3645e2c8bad67e2f6debc61b5e0653) )
1099
1100 ROM_REGION32_LE( 0xa00000, REGION_USER1, 0 )
1101 ROM_LOAD32_BYTE( "cusa-l41.u10", 0x000000, 0x80000, CRC(eb9372d1) SHA1(ab1e489b23b4540c4e0d1d9a6c9a2c9317f5c099) )
1102 ROM_LOAD32_BYTE( "cusa-l41.u11", 0x000001, 0x80000, CRC(76f3cd40) SHA1(52276841944ada54d56ecd2da95998aabd699465) )
1103 ROM_LOAD32_BYTE( "cusa-l41.u12", 0x000002, 0x80000, CRC(9021a376) SHA1(6a838d49bec4201e8ead7491e3b6d4a3a52dcb12) )
1104 ROM_LOAD32_BYTE( "cusa-l41.u13", 0x000003, 0x80000, CRC(1687c932) SHA1(45947c0c22bd4e6640f792d0c7fd06a1f4483131) )
1105 ROM_LOAD32_BYTE( "cusa.u14", 0x200000, 0x80000, CRC(6a4ae622) SHA1(f488e7616371125d5aef2047b8e0fc954ca4b9b4) )
1106 ROM_LOAD32_BYTE( "cusa.u15", 0x200001, 0x80000, CRC(1a0ad3b7) SHA1(a5300f3c789a4d9d257fda3a280e882f17f4a99f) )
1107 ROM_LOAD32_BYTE( "cusa.u16", 0x200002, 0x80000, CRC(799d4dd6) SHA1(f1208967544477005924f2a553037e0ffbc668ab) )
1108 ROM_LOAD32_BYTE( "cusa.u17", 0x200003, 0x80000, CRC(3d68b660) SHA1(3f14e32c205a504ef39abf1e390bd8031d9d7b5b) )
1109 ROM_LOAD32_BYTE( "cusa.u18", 0x400000, 0x80000, CRC(9e8193fb) SHA1(ec88c2b51bb607d3181e467f8b255c13efebc73c) )
1110 ROM_LOAD32_BYTE( "cusa.u19", 0x400001, 0x80000, CRC(0bf60cde) SHA1(6c63b3eacaefeb405c8fdf641437786262bcb10d) )
1111 ROM_LOAD32_BYTE( "cusa.u20", 0x400002, 0x80000, CRC(c07f68f0) SHA1(444ccf8e49fd9c0f707ab32347984ca5628207f9) )
1112 ROM_LOAD32_BYTE( "cusa.u21", 0x400003, 0x80000, CRC(b0264aed) SHA1(d6a6eca4e4ecedfbc5590dbd06870761155ae8c5) )
1113 ROM_LOAD32_BYTE( "cusa.u22", 0x600000, 0x80000, CRC(ad137193) SHA1(642a7c37940cb3b2b190661da7b1d4848c7c513d) )
1114 ROM_LOAD32_BYTE( "cusa.u23", 0x600001, 0x80000, CRC(842449b0) SHA1(b23ebe28ff3c6a268ff9ae1242a4392d2305396b) )
1115 ROM_LOAD32_BYTE( "cusa.u24", 0x600002, 0x80000, CRC(0b2275be) SHA1(3dc79095064cc158d37218c9a038b5b7a777fc66) )
1116 ROM_LOAD32_BYTE( "cusa.u25", 0x600003, 0x80000, CRC(2b9fe68f) SHA1(2750613e61c1eaac629ef5b9e89fd88e99a262cc) )
1117 ROM_LOAD32_BYTE( "cusa.u26", 0x800000, 0x80000, CRC(ae56b871) SHA1(1e218426084123c6c2389d96ce92691010012aa4) )
1118 ROM_LOAD32_BYTE( "cusa.u27", 0x800001, 0x80000, CRC(2d977a8e) SHA1(8f4d511bfd6c3bee18daa7253be1a27d079aec8f) )
1119 ROM_LOAD32_BYTE( "cusa.u28", 0x800002, 0x80000, CRC(cffa5fb1) SHA1(fb73bc8f65b604c374f88d0ecf06c50ef52f0547) )
1120 ROM_LOAD32_BYTE( "cusa.u29", 0x800003, 0x80000, CRC(cbe52c60) SHA1(3f309ce8ef1784c830f4160cfe76dc3a0b438cac) )
1121 ROM_END
1122
1123
1124 ROM_START( crusnu40 )
1125 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* dummy 32C031 region */
1126
1127 ROM_REGION( ADSP2100_SIZE + 0x800000, REGION_CPU2, 0 ) /* ADSP-2105 data */
1128 ROM_LOAD( "cusa.u2", ADSP2100_SIZE + 0x000000, 0x80000, CRC(b9338332) SHA1(e5c420e63c4eba0010a68c7e0a57ef210e2c83d2) )
1129 ROM_LOAD( "cusa.u3", ADSP2100_SIZE + 0x100000, 0x80000, CRC(cd8325d6) SHA1(d65d7263e056ca1d637adb44cafef523e0831a34) )
1130 ROM_LOAD( "cusa.u4", ADSP2100_SIZE + 0x200000, 0x80000, CRC(fab457f3) SHA1(2b4b647838b7a8100afc25ca1ffdc74ed67ae00a) )
1131 ROM_LOAD( "cusa.u5", ADSP2100_SIZE + 0x300000, 0x80000, CRC(becc92f4) SHA1(6dffa73ff5270155c44f295e443d5e77c03c0338) )
1132 ROM_LOAD( "cusa.u6", ADSP2100_SIZE + 0x400000, 0x80000, CRC(a9f915d3) SHA1(6a16a2d7a807a775673e7121b54f37c583581203) )
1133 ROM_LOAD( "cusa.u7", ADSP2100_SIZE + 0x500000, 0x80000, CRC(424f0bbc) SHA1(f38a431fc0fb7102c51f2d5b6f716dd4669a9822) )
1134 ROM_LOAD( "cusa.u8", ADSP2100_SIZE + 0x600000, 0x80000, CRC(03c28199) SHA1(393b009acd3eceb346b8fff45ae2bdf4f53d041f) )
1135 ROM_LOAD( "cusa.u9", ADSP2100_SIZE + 0x700000, 0x80000, CRC(24ba6371) SHA1(f60a9ff73b3645e2c8bad67e2f6debc61b5e0653) )
1136
1137 ROM_REGION32_LE( 0xa00000, REGION_USER1, 0 )
1138 ROM_LOAD32_BYTE( "cusa-l4.u10", 0x000000, 0x80000, CRC(7526d8bf) SHA1(ef00ea3b6e1923d3e4d10bf3601b080a009fb711) )
1139 ROM_LOAD32_BYTE( "cusa-l4.u11", 0x000001, 0x80000, CRC(bfc691b9) SHA1(41d1503c4290e396a49043fea7778851cdf11310) )
1140 ROM_LOAD32_BYTE( "cusa-l4.u12", 0x000002, 0x80000, CRC(059c2234) SHA1(145ec1ab3a46c3316f39bd731730dcb57b55b4ec) )
1141 ROM_LOAD32_BYTE( "cusa-l4.u13", 0x000003, 0x80000, CRC(39e0ff7d) SHA1(3b0f95bf2a6999b8ec8722e0bc0f3a60264469aa) )
1142 ROM_LOAD32_BYTE( "cusa.u14", 0x200000, 0x80000, CRC(6a4ae622) SHA1(f488e7616371125d5aef2047b8e0fc954ca4b9b4) )
1143 ROM_LOAD32_BYTE( "cusa.u15", 0x200001, 0x80000, CRC(1a0ad3b7) SHA1(a5300f3c789a4d9d257fda3a280e882f17f4a99f) )
1144 ROM_LOAD32_BYTE( "cusa.u16", 0x200002, 0x80000, CRC(799d4dd6) SHA1(f1208967544477005924f2a553037e0ffbc668ab) )
1145 ROM_LOAD32_BYTE( "cusa.u17", 0x200003, 0x80000, CRC(3d68b660) SHA1(3f14e32c205a504ef39abf1e390bd8031d9d7b5b) )
1146 ROM_LOAD32_BYTE( "cusa.u18", 0x400000, 0x80000, CRC(9e8193fb) SHA1(ec88c2b51bb607d3181e467f8b255c13efebc73c) )
1147 ROM_LOAD32_BYTE( "cusa.u19", 0x400001, 0x80000, CRC(0bf60cde) SHA1(6c63b3eacaefeb405c8fdf641437786262bcb10d) )
1148 ROM_LOAD32_BYTE( "cusa.u20", 0x400002, 0x80000, CRC(c07f68f0) SHA1(444ccf8e49fd9c0f707ab32347984ca5628207f9) )
1149 ROM_LOAD32_BYTE( "cusa.u21", 0x400003, 0x80000, CRC(b0264aed) SHA1(d6a6eca4e4ecedfbc5590dbd06870761155ae8c5) )
1150 ROM_LOAD32_BYTE( "cusa.u22", 0x600000, 0x80000, CRC(ad137193) SHA1(642a7c37940cb3b2b190661da7b1d4848c7c513d) )
1151 ROM_LOAD32_BYTE( "cusa.u23", 0x600001, 0x80000, CRC(842449b0) SHA1(b23ebe28ff3c6a268ff9ae1242a4392d2305396b) )
1152 ROM_LOAD32_BYTE( "cusa.u24", 0x600002, 0x80000, CRC(0b2275be) SHA1(3dc79095064cc158d37218c9a038b5b7a777fc66) )
1153 ROM_LOAD32_BYTE( "cusa.u25", 0x600003, 0x80000, CRC(2b9fe68f) SHA1(2750613e61c1eaac629ef5b9e89fd88e99a262cc) )
1154 ROM_LOAD32_BYTE( "cusa.u26", 0x800000, 0x80000, CRC(ae56b871) SHA1(1e218426084123c6c2389d96ce92691010012aa4) )
1155 ROM_LOAD32_BYTE( "cusa.u27", 0x800001, 0x80000, CRC(2d977a8e) SHA1(8f4d511bfd6c3bee18daa7253be1a27d079aec8f) )
1156 ROM_LOAD32_BYTE( "cusa.u28", 0x800002, 0x80000, CRC(cffa5fb1) SHA1(fb73bc8f65b604c374f88d0ecf06c50ef52f0547) )
1157 ROM_LOAD32_BYTE( "cusa.u29", 0x800003, 0x80000, CRC(cbe52c60) SHA1(3f309ce8ef1784c830f4160cfe76dc3a0b438cac) )
1158 ROM_END
1159
1160
1161 ROM_START( crusnu21 )
1162 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* dummy 32C031 region */
1163
1164 ROM_REGION( ADSP2100_SIZE + 0x800000, REGION_CPU2, 0 ) /* ADSP-2105 data */
1165 ROM_LOAD( "cusa.u2", ADSP2100_SIZE + 0x000000, 0x80000, CRC(b9338332) SHA1(e5c420e63c4eba0010a68c7e0a57ef210e2c83d2) )
1166 ROM_LOAD( "cusa.u3", ADSP2100_SIZE + 0x100000, 0x80000, CRC(cd8325d6) SHA1(d65d7263e056ca1d637adb44cafef523e0831a34) )
1167 ROM_LOAD( "cusa.u4", ADSP2100_SIZE + 0x200000, 0x80000, CRC(fab457f3) SHA1(2b4b647838b7a8100afc25ca1ffdc74ed67ae00a) )
1168 ROM_LOAD( "cusa.u5", ADSP2100_SIZE + 0x300000, 0x80000, CRC(becc92f4) SHA1(6dffa73ff5270155c44f295e443d5e77c03c0338) )
1169 ROM_LOAD( "cusa.u6", ADSP2100_SIZE + 0x400000, 0x80000, CRC(a9f915d3) SHA1(6a16a2d7a807a775673e7121b54f37c583581203) )
1170 ROM_LOAD( "cusa.u7", ADSP2100_SIZE + 0x500000, 0x80000, CRC(424f0bbc) SHA1(f38a431fc0fb7102c51f2d5b6f716dd4669a9822) )
1171 ROM_LOAD( "cusa.u8", ADSP2100_SIZE + 0x600000, 0x80000, CRC(03c28199) SHA1(393b009acd3eceb346b8fff45ae2bdf4f53d041f) )
1172 ROM_LOAD( "cusa.u9", ADSP2100_SIZE + 0x700000, 0x80000, CRC(24ba6371) SHA1(f60a9ff73b3645e2c8bad67e2f6debc61b5e0653) )
1173
1174 ROM_REGION32_LE( 0xa00000, REGION_USER1, 0 )
1175 ROM_LOAD32_BYTE( "cusa-l21.u10", 0x000000, 0x80000, CRC(bb759945) SHA1(dbf5270503cb58adb0abd34a8aece5933063ec66) )
1176 ROM_LOAD32_BYTE( "cusa-l21.u11", 0x000001, 0x80000, CRC(4d2da096) SHA1(6ccb9fee095580089f8d43a2e86e0f8a4407dda5) )
1177 ROM_LOAD32_BYTE( "cusa-l21.u12", 0x000002, 0x80000, CRC(4b66fe5e) SHA1(885d31c06b11209a1154789bc84e75d0ac9e1e8a) )
1178 ROM_LOAD32_BYTE( "cusa-l21.u13", 0x000003, 0x80000, CRC(a165359f) SHA1(eefbeaa67282b3826503f4edff84282ff5f45d35) )
1179 ROM_LOAD32_BYTE( "cusa.u14", 0x200000, 0x80000, CRC(6a4ae622) SHA1(f488e7616371125d5aef2047b8e0fc954ca4b9b4) )
1180 ROM_LOAD32_BYTE( "cusa.u15", 0x200001, 0x80000, CRC(1a0ad3b7) SHA1(a5300f3c789a4d9d257fda3a280e882f17f4a99f) )
1181 ROM_LOAD32_BYTE( "cusa.u16", 0x200002, 0x80000, CRC(799d4dd6) SHA1(f1208967544477005924f2a553037e0ffbc668ab) )
1182 ROM_LOAD32_BYTE( "cusa.u17", 0x200003, 0x80000, CRC(3d68b660) SHA1(3f14e32c205a504ef39abf1e390bd8031d9d7b5b) )
1183 ROM_LOAD32_BYTE( "cusa.u18", 0x400000, 0x80000, CRC(9e8193fb) SHA1(ec88c2b51bb607d3181e467f8b255c13efebc73c) )
1184 ROM_LOAD32_BYTE( "cusa.u19", 0x400001, 0x80000, CRC(0bf60cde) SHA1(6c63b3eacaefeb405c8fdf641437786262bcb10d) )
1185 ROM_LOAD32_BYTE( "cusa.u20", 0x400002, 0x80000, CRC(c07f68f0) SHA1(444ccf8e49fd9c0f707ab32347984ca5628207f9) )
1186 ROM_LOAD32_BYTE( "cusa.u21", 0x400003, 0x80000, CRC(b0264aed) SHA1(d6a6eca4e4ecedfbc5590dbd06870761155ae8c5) )
1187 ROM_LOAD32_BYTE( "cusa.u22", 0x600000, 0x80000, CRC(ad137193) SHA1(642a7c37940cb3b2b190661da7b1d4848c7c513d) )
1188 ROM_LOAD32_BYTE( "cusa.u23", 0x600001, 0x80000, CRC(842449b0) SHA1(b23ebe28ff3c6a268ff9ae1242a4392d2305396b) )
1189 ROM_LOAD32_BYTE( "cusa.u24", 0x600002, 0x80000, CRC(0b2275be) SHA1(3dc79095064cc158d37218c9a038b5b7a777fc66) )
1190 ROM_LOAD32_BYTE( "cusa.u25", 0x600003, 0x80000, CRC(2b9fe68f) SHA1(2750613e61c1eaac629ef5b9e89fd88e99a262cc) )
1191 ROM_LOAD32_BYTE( "cusa.u26", 0x800000, 0x80000, CRC(ae56b871) SHA1(1e218426084123c6c2389d96ce92691010012aa4) )
1192 ROM_LOAD32_BYTE( "cusa.u27", 0x800001, 0x80000, CRC(2d977a8e) SHA1(8f4d511bfd6c3bee18daa7253be1a27d079aec8f) )
1193 ROM_LOAD32_BYTE( "cusa.u28", 0x800002, 0x80000, CRC(cffa5fb1) SHA1(fb73bc8f65b604c374f88d0ecf06c50ef52f0547) )
1194 ROM_LOAD32_BYTE( "cusa.u29", 0x800003, 0x80000, CRC(cbe52c60) SHA1(3f309ce8ef1784c830f4160cfe76dc3a0b438cac) )
1195 ROM_END
1196
1197
1198 ROM_START( crusnwld )
1199 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* dummy 32C031 region */
1200
1201 ROM_REGION( ADSP2100_SIZE + 0x800000, REGION_CPU2, 0 ) /* ADSP-2105 data */
1202 ROM_LOAD( "cwld.u2", ADSP2100_SIZE + 0x000000, 0x80000, CRC(7a233c89) SHA1(ecfad4bc48a69cd3399e3b3266c81574082e0169) )
1203 ROM_LOAD( "cwld.u3", ADSP2100_SIZE + 0x100000, 0x80000, CRC(be9a5ff0) SHA1(98d69dbfa6aa8462cdd46772e991ee418b79c653) )
1204 ROM_LOAD( "cwld.u4", ADSP2100_SIZE + 0x200000, 0x80000, CRC(69f02d84) SHA1(0fb4ff750de78505f241ae6cd18fccf3ddf4223f) )
1205 ROM_LOAD( "cwld.u5", ADSP2100_SIZE + 0x300000, 0x80000, CRC(9d0b9071) SHA1(05edf9073399a942a9d0b969274a7ebf4ca677da) )
1206 ROM_LOAD( "cwld.u6", ADSP2100_SIZE + 0x400000, 0x80000, CRC(df28f492) SHA1(c61f3870f59458b7bb5efbf93d697e3fa44a7830) )
1207 ROM_LOAD( "cwld.u7", ADSP2100_SIZE + 0x500000, 0x80000, CRC(0128913e) SHA1(c11bc115877310c17f9b57f72b29d19b0ad71afa) )
1208 ROM_LOAD( "cwld.u8", ADSP2100_SIZE + 0x600000, 0x80000, CRC(5127c08e) SHA1(4f0eae73817270fa156829100b66f0ff88fa422c) )
1209 ROM_LOAD( "cwld.u9", ADSP2100_SIZE + 0x700000, 0x80000, CRC(84cdc781) SHA1(62287aa72903698d1890908adde53c39f8bd200c) )
1210
1211 ROM_REGION32_LE( 0x1000000, REGION_USER1, 0 )
1212 ROM_LOAD32_BYTE( "cwld_l23.u10", 0x0000000, 0x100000, CRC(956e0642) SHA1(c023d41159bac9b468d6fc411005f66b15b9dff6) )
1213 ROM_LOAD32_BYTE( "cwld_l23.u11", 0x0000001, 0x100000, CRC(b4ed2929) SHA1(22afc3c7bcc57b7b24b4156376df0b7fb8f0c9fb) )
1214 ROM_LOAD32_BYTE( "cwld_l23.u12", 0x0000002, 0x100000, CRC(cd12528e) SHA1(685e2280448be2cd90a875cca9ef2ab3d2f8d3e1) )
1215 ROM_LOAD32_BYTE( "cwld_l23.u13", 0x0000003, 0x100000, CRC(b096d211) SHA1(a2663b58e2f21bcfcba5317ff0ae91dd21a399f5) )
1216 ROM_LOAD32_BYTE( "cwld.u14", 0x0400000, 0x100000, CRC(ee815091) SHA1(fb8a99bae07f42966f76a3bb073d7d8280d8efcb) )
1217 ROM_LOAD32_BYTE( "cwld.u15", 0x0400001, 0x100000, CRC(e2da7bf1) SHA1(9d9a80055ee62476f47c95e30ec9a989d5d0e25b) )
1218 ROM_LOAD32_BYTE( "cwld.u16", 0x0400002, 0x100000, CRC(05a7ad2f) SHA1(4bdfde671379ecefa3f8ceb6fc06e8df5d70fc22) )
1219 ROM_LOAD32_BYTE( "cwld.u17", 0x0400003, 0x100000, CRC(d6278c0c) SHA1(3e152d755d69903718a84d4154e442a31026f3d8) )
1220 ROM_LOAD32_BYTE( "cwld.u18", 0x0800000, 0x100000, CRC(e2dc2733) SHA1(c277643548c03d831a3b091f1a311accac9d106b) )
1221 ROM_LOAD32_BYTE( "cwld.u19", 0x0800001, 0x100000, CRC(5223a070) SHA1(90ce48b2308fa9e7cb636c4732b20b8e177aa9b1) )
1222 ROM_LOAD32_BYTE( "cwld.u20", 0x0800002, 0x100000, CRC(db535625) SHA1(599ccd6bcfb155eb68ac131de4af524510ab35b7) )
1223 ROM_LOAD32_BYTE( "cwld.u21", 0x0800003, 0x100000, CRC(92a080e8) SHA1(e5e0faf820b5870a81f121b6ad4c37a9081724e4) )
1224 ROM_LOAD32_BYTE( "cwld.u22", 0x0c00000, 0x100000, CRC(77c56318) SHA1(52344038942c83f3ce82f3169a345ceb86e43dcb) )
1225 ROM_LOAD32_BYTE( "cwld.u23", 0x0c00001, 0x100000, CRC(6b920fc7) SHA1(993da81181f24075e1aead7c4b374f36dd86a9c3) )
1226 ROM_LOAD32_BYTE( "cwld.u24", 0x0c00002, 0x100000, CRC(83485401) SHA1(58407818a82a7a3657530dcda7e373e678b58ab2) )
1227 ROM_LOAD32_BYTE( "cwld.u25", 0x0c00003, 0x100000, CRC(0dad97a9) SHA1(cdb0c02da35243b118e37ff1519aa6ee1a79d06d) )
1228 ROM_END
1229
1230
1231 ROM_START( crusnw20 )
1232 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* dummy 32C031 region */
1233
1234 ROM_REGION( ADSP2100_SIZE + 0x800000, REGION_CPU2, 0 ) /* ADSP-2105 data */
1235 ROM_LOAD( "cwld.u2", ADSP2100_SIZE + 0x000000, 0x80000, CRC(7a233c89) SHA1(ecfad4bc48a69cd3399e3b3266c81574082e0169) )
1236 ROM_LOAD( "cwld.u3", ADSP2100_SIZE + 0x100000, 0x80000, CRC(be9a5ff0) SHA1(98d69dbfa6aa8462cdd46772e991ee418b79c653) )
1237 ROM_LOAD( "cwld.u4", ADSP2100_SIZE + 0x200000, 0x80000, CRC(69f02d84) SHA1(0fb4ff750de78505f241ae6cd18fccf3ddf4223f) )
1238 ROM_LOAD( "cwld.u5", ADSP2100_SIZE + 0x300000, 0x80000, CRC(9d0b9071) SHA1(05edf9073399a942a9d0b969274a7ebf4ca677da) )
1239 ROM_LOAD( "cwld.u6", ADSP2100_SIZE + 0x400000, 0x80000, CRC(df28f492) SHA1(c61f3870f59458b7bb5efbf93d697e3fa44a7830) )
1240 ROM_LOAD( "cwld.u7", ADSP2100_SIZE + 0x500000, 0x80000, CRC(0128913e) SHA1(c11bc115877310c17f9b57f72b29d19b0ad71afa) )
1241 ROM_LOAD( "cwld.u8", ADSP2100_SIZE + 0x600000, 0x80000, CRC(5127c08e) SHA1(4f0eae73817270fa156829100b66f0ff88fa422c) )
1242 ROM_LOAD( "cwld.u9", ADSP2100_SIZE + 0x700000, 0x80000, CRC(84cdc781) SHA1(62287aa72903698d1890908adde53c39f8bd200c) )
1243
1244 ROM_REGION32_LE( 0x1000000, REGION_USER1, 0 )
1245 ROM_LOAD32_BYTE( "u10_v20.u10", 0x0000000, 0x100000, CRC(2a04da6d) SHA1(0aab4f3dc4853de11234245ac14baa14cb3867f3) )
1246 ROM_LOAD32_BYTE( "u11_v20.u11", 0x0000001, 0x100000, CRC(26a8ad51) SHA1(522ef3499ba83fa808d7cdae71759e056df353bf) )
1247 ROM_LOAD32_BYTE( "u12_v20.u12", 0x0000002, 0x100000, CRC(236caec0) SHA1(f53df733943a52f94878bb1b7d6c877722b3fd82) )
1248 ROM_LOAD32_BYTE( "u13_v20.u13", 0x0000003, 0x100000, CRC(7e056e53) SHA1(62b593e093d06a8c0cca56e34f567f795bfc41fc) )
1249 ROM_LOAD32_BYTE( "cwld.u14", 0x0400000, 0x100000, CRC(ee815091) SHA1(fb8a99bae07f42966f76a3bb073d7d8280d8efcb) )
1250 ROM_LOAD32_BYTE( "cwld.u15", 0x0400001, 0x100000, CRC(e2da7bf1) SHA1(9d9a80055ee62476f47c95e30ec9a989d5d0e25b) )
1251 ROM_LOAD32_BYTE( "cwld.u16", 0x0400002, 0x100000, CRC(05a7ad2f) SHA1(4bdfde671379ecefa3f8ceb6fc06e8df5d70fc22) )
1252 ROM_LOAD32_BYTE( "cwld.u17", 0x0400003, 0x100000, CRC(d6278c0c) SHA1(3e152d755d69903718a84d4154e442a31026f3d8) )
1253 ROM_LOAD32_BYTE( "cwld.u18", 0x0800000, 0x100000, CRC(e2dc2733) SHA1(c277643548c03d831a3b091f1a311accac9d106b) )
1254 ROM_LOAD32_BYTE( "cwld.u19", 0x0800001, 0x100000, CRC(5223a070) SHA1(90ce48b2308fa9e7cb636c4732b20b8e177aa9b1) )
1255 ROM_LOAD32_BYTE( "cwld.u20", 0x0800002, 0x100000, CRC(db535625) SHA1(599ccd6bcfb155eb68ac131de4af524510ab35b7) )
1256 ROM_LOAD32_BYTE( "cwld.u21", 0x0800003, 0x100000, CRC(92a080e8) SHA1(e5e0faf820b5870a81f121b6ad4c37a9081724e4) )
1257 ROM_LOAD32_BYTE( "cwld.u22", 0x0c00000, 0x100000, CRC(77c56318) SHA1(52344038942c83f3ce82f3169a345ceb86e43dcb) )
1258 ROM_LOAD32_BYTE( "cwld.u23", 0x0c00001, 0x100000, CRC(6b920fc7) SHA1(993da81181f24075e1aead7c4b374f36dd86a9c3) )
1259 ROM_LOAD32_BYTE( "cwld.u24", 0x0c00002, 0x100000, CRC(83485401) SHA1(58407818a82a7a3657530dcda7e373e678b58ab2) )
1260 ROM_LOAD32_BYTE( "cwld.u25", 0x0c00003, 0x100000, CRC(0dad97a9) SHA1(cdb0c02da35243b118e37ff1519aa6ee1a79d06d) )
1261 ROM_END
1262
1263
1264 ROM_START( crusnw13 )
1265 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* dummy 32C031 region */
1266
1267 ROM_REGION( ADSP2100_SIZE + 0x800000, REGION_CPU2, 0 ) /* ADSP-2105 data */
1268 ROM_LOAD( "cwld.u2", ADSP2100_SIZE + 0x000000, 0x80000, CRC(7a233c89) SHA1(ecfad4bc48a69cd3399e3b3266c81574082e0169) )
1269 ROM_LOAD( "cwld.u3", ADSP2100_SIZE + 0x100000, 0x80000, CRC(be9a5ff0) SHA1(98d69dbfa6aa8462cdd46772e991ee418b79c653) )
1270 ROM_LOAD( "cwld.u4", ADSP2100_SIZE + 0x200000, 0x80000, CRC(69f02d84) SHA1(0fb4ff750de78505f241ae6cd18fccf3ddf4223f) )
1271 ROM_LOAD( "cwld.u5", ADSP2100_SIZE + 0x300000, 0x80000, CRC(9d0b9071) SHA1(05edf9073399a942a9d0b969274a7ebf4ca677da) )
1272 ROM_LOAD( "cwld.u6", ADSP2100_SIZE + 0x400000, 0x80000, CRC(df28f492) SHA1(c61f3870f59458b7bb5efbf93d697e3fa44a7830) )
1273 ROM_LOAD( "cwld.u7", ADSP2100_SIZE + 0x500000, 0x80000, CRC(0128913e) SHA1(c11bc115877310c17f9b57f72b29d19b0ad71afa) )
1274 ROM_LOAD( "cwld.u8", ADSP2100_SIZE + 0x600000, 0x80000, CRC(5127c08e) SHA1(4f0eae73817270fa156829100b66f0ff88fa422c) )
1275 ROM_LOAD( "cwld.u9", ADSP2100_SIZE + 0x700000, 0x80000, CRC(84cdc781) SHA1(62287aa72903698d1890908adde53c39f8bd200c) )
1276
1277 ROM_REGION32_LE( 0x1000000, REGION_USER1, 0 )
1278 ROM_LOAD32_BYTE( "cwld_l13.u10", 0x0000000, 0x100000, BAD_DUMP CRC(956bac74) SHA1(bf0b121670df23f2cc64302d9f215e7c81187bbb) )
1279 ROM_LOAD32_BYTE( "cwld_l13.u11", 0x0000001, 0x100000, CRC(b0c0a462) SHA1(22ae081c3eb9f298aea73e99a0124becd540f0df) )
1280 ROM_LOAD32_BYTE( "cwld_l13.u12", 0x0000002, 0x100000, CRC(5e7c566b) SHA1(81e6f21309bd3ba8589bc591a9ba5729f301539e) )
1281 ROM_LOAD32_BYTE( "cwld_l13.u13", 0x0000003, 0x100000, CRC(46886e9c) SHA1(a2400f42fef9838fd8a347e8a249ba977d9fbcfe) )
1282 ROM_LOAD32_BYTE( "cwld.u14", 0x0400000, 0x100000, CRC(ee815091) SHA1(fb8a99bae07f42966f76a3bb073d7d8280d8efcb) )
1283 ROM_LOAD32_BYTE( "cwld.u15", 0x0400001, 0x100000, CRC(e2da7bf1) SHA1(9d9a80055ee62476f47c95e30ec9a989d5d0e25b) )
1284 ROM_LOAD32_BYTE( "cwld.u16", 0x0400002, 0x100000, CRC(05a7ad2f) SHA1(4bdfde671379ecefa3f8ceb6fc06e8df5d70fc22) )
1285 ROM_LOAD32_BYTE( "cwld.u17", 0x0400003, 0x100000, CRC(d6278c0c) SHA1(3e152d755d69903718a84d4154e442a31026f3d8) )
1286 ROM_LOAD32_BYTE( "cwld.u18", 0x0800000, 0x100000, CRC(e2dc2733) SHA1(c277643548c03d831a3b091f1a311accac9d106b) )
1287 ROM_LOAD32_BYTE( "cwld.u19", 0x0800001, 0x100000, CRC(5223a070) SHA1(90ce48b2308fa9e7cb636c4732b20b8e177aa9b1) )
1288 ROM_LOAD32_BYTE( "cwld.u20", 0x0800002, 0x100000, CRC(db535625) SHA1(599ccd6bcfb155eb68ac131de4af524510ab35b7) )
1289 ROM_LOAD32_BYTE( "cwld.u21", 0x0800003, 0x100000, CRC(92a080e8) SHA1(e5e0faf820b5870a81f121b6ad4c37a9081724e4) )
1290 ROM_LOAD32_BYTE( "cwld.u22", 0x0c00000, 0x100000, CRC(77c56318) SHA1(52344038942c83f3ce82f3169a345ceb86e43dcb) )
1291 ROM_LOAD32_BYTE( "cwld.u23", 0x0c00001, 0x100000, CRC(6b920fc7) SHA1(993da81181f24075e1aead7c4b374f36dd86a9c3) )
1292 ROM_LOAD32_BYTE( "cwld.u24", 0x0c00002, 0x100000, CRC(83485401) SHA1(58407818a82a7a3657530dcda7e373e678b58ab2) )
1293 ROM_LOAD32_BYTE( "cwld.u25", 0x0c00003, 0x100000, CRC(0dad97a9) SHA1(cdb0c02da35243b118e37ff1519aa6ee1a79d06d) )
1294 ROM_END
1295
1296
1297 ROM_START( offroadc )
1298 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* dummy 32C031 region */
1299
1300 ROM_REGION( ADSP2100_SIZE + 0x800000, REGION_CPU2, 0 ) /* ADSP-2105 data */
1301 ROM_LOAD( "offroadc.u2", ADSP2100_SIZE + 0x000000, 0x80000, CRC(69976e9d) SHA1(63c886ac2563c43a10840f49f929f8613cd94de2) )
1302 ROM_LOAD( "offroadc.u3", ADSP2100_SIZE + 0x100000, 0x80000, CRC(2db9b548) SHA1(4f454a3e6a8851b0ef5d325dd28102d57ea11a11) )
1303 ROM_LOAD( "offroadc.u4", ADSP2100_SIZE + 0x200000, 0x80000, CRC(42bdf9d0) SHA1(04add0f0ee7fa61de1913cc0b988345d3d430cde) )
1304 ROM_LOAD( "offroadc.u5", ADSP2100_SIZE + 0x300000, 0x80000, CRC(569cc84b) SHA1(08b917cc41fae6b6a3e9d9461a783d3d2865e72a) )
1305 ROM_LOAD( "offroadc.u6", ADSP2100_SIZE + 0x400000, 0x80000, CRC(0896f679) SHA1(dde39ef17834256909ef2c9fcd5b5fb9939d5178) )
1306 ROM_LOAD( "offroadc.u7", ADSP2100_SIZE + 0x500000, 0x80000, CRC(fe242d6a) SHA1(8fbac22ed23044841f309ce58c5b1affcdd5d114) )
1307 ROM_LOAD( "offroadc.u8", ADSP2100_SIZE + 0x600000, 0x80000, CRC(5da13f12) SHA1(2bb5e929e8bc6c70cb4475024a6b0bb07ac25244) )
1308 ROM_LOAD( "offroadc.u9", ADSP2100_SIZE + 0x700000, 0x80000, CRC(7ad27f69) SHA1(b33665d0593a95b58d529720aae49e90449bf714) )
1309
1310 ROM_REGION32_LE( 0x1000000, REGION_USER1, 0 )
1311 ROM_LOAD32_BYTE( "offroadc.u10", 0x0000000, 0x100000, CRC(4729660c) SHA1(0baff6a27015f4eb3fe0a981ecbac33d140e872a) )
1312 ROM_LOAD32_BYTE( "offroadc.u11", 0x0000001, 0x100000, CRC(6272d013) SHA1(860121184282627ed692e56a0dafee8b64562811) )
1313 ROM_LOAD32_BYTE( "offroadc.u12", 0x0000002, 0x100000, CRC(9c8326be) SHA1(55f16d14379f57d08ed84d82f9db1a582bc223a1) )
1314 ROM_LOAD32_BYTE( "offroadc.u13", 0x0000003, 0x100000, CRC(53bbc181) SHA1(1ab29a27a216eb09d69a9f3d681865de1a904717) )
1315 ROM_LOAD32_BYTE( "offroadc.u14", 0x0400000, 0x100000, CRC(1e41d14b) SHA1(3f7c5fae1f8b82ddd811720837fa298785a8dd27) )
1316 ROM_LOAD32_BYTE( "offroadc.u15", 0x0400001, 0x100000, CRC(654d623d) SHA1(a944b8f8d71b099d7b5bbd7df6effb90afc3aec8) )
1317 ROM_LOAD32_BYTE( "offroadc.u16", 0x0400002, 0x100000, CRC(259774d8) SHA1(90cdf659324b84b3c2c59497cc5611e8f12629a6) )
1318 ROM_LOAD32_BYTE( "offroadc.u17", 0x0400003, 0x100000, CRC(50c61434) SHA1(52bc603101b4f88b7d892af683b7c8358cabbf4a) )
1319 ROM_LOAD32_BYTE( "offroadc.u18", 0x0800000, 0x100000, CRC(015be91c) SHA1(1624537068c6bc5fa6235bf0b0343347c337e8d8) )
1320 ROM_LOAD32_BYTE( "offroadc.u19", 0x0800001, 0x100000, CRC(cfc6b70e) SHA1(8c5ad84c50ca142726db0595153cf04caaabec9c) )
1321 ROM_LOAD32_BYTE( "offroadc.u20", 0x0800002, 0x100000, CRC(f48d6e33) SHA1(8b9c205e24f217ac110cdd82388c056ebbbb09b0) )
1322 ROM_LOAD32_BYTE( "offroadc.u21", 0x0800003, 0x100000, CRC(17794b56) SHA1(8bfd8f5b43056bfe7f62524bb8c3a8564a3a9413) )
1323 ROM_LOAD32_BYTE( "offroadc.u22", 0x0c00000, 0x100000, CRC(f2a6e622) SHA1(a7d7004e95b058124cc02e8073dab8fbed8813c5) )
1324 ROM_LOAD32_BYTE( "offroadc.u23", 0x0c00001, 0x100000, CRC(1cba6e20) SHA1(a7c9c58bfc4d26decb08979d83cccedb27528eb6) )
1325 ROM_LOAD32_BYTE( "offroadc.u24", 0x0c00002, 0x100000, CRC(fd3ce11f) SHA1(78c65267712488784bc6dc14eef98a90494a9553) )
1326 ROM_LOAD32_BYTE( "offroadc.u25", 0x0c00003, 0x100000, CRC(78f8e5db) SHA1(7ec2a5add27d66c43ba5cb7182554321007f5798) )
1327 ROM_END
1328
1329
1330 ROM_START( wargods )
1331 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* dummy 32C031 region */
1332
1333 ROM_REGION( ADSP2100_SIZE + 0x208000, REGION_CPU2, 0 ) /* ADSP-2105 data */
1334 ROM_LOAD( "u2.rom", ADSP2100_SIZE + 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) )
1335
1336 ROM_REGION32_LE( 0x1000000, REGION_USER1, 0 )
1337 ROM_LOAD( "u41.rom", 0x000000, 0x20000, CRC(398c54cc) SHA1(6c4b5d6ec5c844dcbf181f9d86a9196a088ed2db) )
1338
1339 DISK_REGION( REGION_DISKS )
1340 DISK_IMAGE( "wargods.chd", 0, MD5(9a41ae319a67fc626377b6d9ea34c860) SHA1(4b02f8f33027a0e7b2c750c10da1fe22222b3e1e) )
1341 ROM_END
1342
1343
1344
1345 /*************************************
1346 *
1347 * Driver init
1348 *
1349 *************************************/
1350
1351 static data32_t *generic_speedup;
READ32_HANDLER(generic_speedup_r)1352 static READ32_HANDLER( generic_speedup_r )
1353 {
1354 activecpu_eat_cycles(100);
1355 return generic_speedup[offset];
1356 }
1357
1358
init_crusnusa_common(offs_t speedup)1359 static void init_crusnusa_common(offs_t speedup)
1360 {
1361 dcs_init();
1362 adc_shift = 24;
1363
1364 /* speedups */
1365 generic_speedup = install_mem_read32_handler(0, ADDR_RANGE(speedup, speedup + 1), generic_speedup_r);
1366 }
DRIVER_INIT(crusnusa)1367 static DRIVER_INIT( crusnusa ) { init_crusnusa_common(0xc93e); }
DRIVER_INIT(crusnu40)1368 static DRIVER_INIT( crusnu40 ) { init_crusnusa_common(0xc957); }
DRIVER_INIT(crusnu21)1369 static DRIVER_INIT( crusnu21 ) { init_crusnusa_common(0xc051); }
1370
1371
init_crusnwld_common(offs_t speedup)1372 static void init_crusnwld_common(offs_t speedup)
1373 {
1374 dcs_init();
1375 adc_shift = 16;
1376
1377 /* control register is different */
1378 install_mem_write32_handler(0, ADDR_RANGE(0x994000, 0x994000), crusnwld_control_w);
1379
1380 /* valid values are 450 or 460 */
1381 midway_serial_pic_init(450);
1382 install_mem_read32_handler(0, ADDR_RANGE(0x991030, 0x991030), offroadc_serial_status_r);
1383 install_mem_read32_handler(0, ADDR_RANGE(0x996000, 0x996000), offroadc_serial_data_r);
1384 install_mem_write32_handler(0, ADDR_RANGE(0x996000, 0x996000), offroadc_serial_data_w);
1385
1386 /* install strange protection device */
1387 install_mem_read32_handler(0, ADDR_RANGE(0x9d0000, 0x9d1fff), bit_data_r);
1388 install_mem_write32_handler(0, ADDR_RANGE(0x9d0000, 0x9d0000), bit_reset_w);
1389
1390 /* speedups */
1391 if (speedup)
1392 generic_speedup = install_mem_read32_handler(0, ADDR_RANGE(speedup, speedup + 1), generic_speedup_r);
1393 }
DRIVER_INIT(crusnwld)1394 static DRIVER_INIT( crusnwld ) { init_crusnwld_common(0xd4c0); }
DRIVER_INIT(crusnw20)1395 static DRIVER_INIT( crusnw20 ) { init_crusnwld_common(0xd49c); }
DRIVER_INIT(crusnw13)1396 static DRIVER_INIT( crusnw13 ) { init_crusnwld_common(0); }
1397
1398
DRIVER_INIT(offroadc)1399 static DRIVER_INIT( offroadc )
1400 {
1401 dcs_init();
1402 adc_shift = 16;
1403
1404 /* control register is different */
1405 install_mem_write32_handler(0, ADDR_RANGE(0x994000, 0x994000), crusnwld_control_w);
1406
1407 /* valid values are 230 or 234 */
1408 midway_serial_pic2_init(230, 94);
1409 install_mem_read32_handler(0, ADDR_RANGE(0x991030, 0x991030), offroadc_serial_status_r);
1410 install_mem_read32_handler(0, ADDR_RANGE(0x996000, 0x996000), offroadc_serial_data_r);
1411 install_mem_write32_handler(0, ADDR_RANGE(0x996000, 0x996000), offroadc_serial_data_w);
1412
1413 /* speedups */
1414 generic_speedup = install_mem_read32_handler(0, ADDR_RANGE(0x195aa, 0x195aa), generic_speedup_r);
1415 }
1416
1417
1418 static struct ide_interface ide_intf =
1419 {
1420 0
1421 };
1422
DRIVER_INIT(wargods)1423 static DRIVER_INIT( wargods )
1424 {
1425 UINT8 default_nvram[256];
1426
1427 /* initialize the subsystems */
1428 dcs2_init(0x3839);
1429 ide_controller_init(0, &ide_intf);
1430 midway_ioasic_init(0, 452/* no alternates */, 94, NULL);
1431 adc_shift = 16;
1432
1433 /* we need proper VRAM */
1434 memset(default_nvram, 0xff, sizeof(default_nvram));
1435 default_nvram[0x0e] = default_nvram[0x2e] = 0x67;
1436 default_nvram[0x0f] = default_nvram[0x2f] = 0x32;
1437 default_nvram[0x10] = default_nvram[0x30] = 0x0a;
1438 default_nvram[0x11] = default_nvram[0x31] = 0x00;
1439 default_nvram[0x12] = default_nvram[0x32] = 0xaf;
1440 default_nvram[0x17] = default_nvram[0x37] = 0xd8;
1441 default_nvram[0x18] = default_nvram[0x38] = 0xe7;
1442 midway_serial_pic2_set_default_nvram(default_nvram);
1443
1444 /* speedups */
1445 generic_speedup = install_mem_read32_handler(0, ADDR_RANGE(0x2f4c, 0x2f4c), generic_speedup_r);
1446 }
1447
1448
1449
1450 /*************************************
1451 *
1452 * Game drivers
1453 *
1454 *************************************/
1455
1456 GAMEC( 1994, crusnusa, 0, midvunit, crusnusa, crusnusa, ROT0, "Midway", "Cruis'n USA (rev L4.1)", &generic_ctrl, &crusnusa_bootstrap )
1457 GAMEC( 1994, crusnu40, crusnusa, midvunit, crusnusa, crusnu40, ROT0, "Midway", "Cruis'n USA (rev L4.0)", &generic_ctrl, &crusnu40_bootstrap )
1458 GAMEC( 1994, crusnu21, crusnusa, midvunit, crusnusa, crusnu21, ROT0, "Midway", "Cruis'n USA (rev L2.1)", &generic_ctrl, &crusnu21_bootstrap )
1459 GAME ( 1996, crusnwld, 0, midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L2.3)" )
1460 GAME ( 1996, crusnw20, crusnwld, midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L2.0)" )
1461 GAME ( 1996, crusnw13, crusnwld, midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L1.3)" )
1462 GAMEC( 1997, offroadc, 0, midvunit, offroadc, offroadc, ROT0, "Midway", "Off Road Challenge", &generic_ctrl, &offroadc_bootstrap )
1463
1464 GAME ( 1995, wargods, 0, midvplus, wargods, wargods, ROT0, "Midway", "War Gods" )
1465