1 /*
2 Sega Multi System 32 hardware
3
4 preliminary support by Jason Lo aka fbff
5
6 based on earlier work by R.Belmont and David Haywood which was
7 in turn based on the Modeler emulator
8
9 Main ToDo's:
10
11 convert from using the 16-bit V60 to the 32-bit V70 (I'm doing this
12 later as I couldn't get it to boot with the V70 for now and the gfx
13 hardware is easier to work with this way)
14
15
16 */
17
18 #include "driver.h"
19 #include "vidhrdw/generic.h"
20 #include "machine/eeprom.h"
21 #include "machine/random.h"
22
23 #define MASTER_CLOCK 32215900
24 #define MULTI32_CLOCK 40000000
25
26 #define MAX_COLOURS (16384)
27
28 int multi32;
29
30 static unsigned char irq_status;
31 static data16_t *system32_shared_ram;
32 extern data16_t *system32_mixerregs[2]; /* mixer registers*/
33
34 static data16_t *sys32_protram;
35 static data16_t *system32_workram;
36 extern data16_t sys32_tilebank_external;
37 extern data16_t sys32_displayenable;
38
39 /* Video Hardware */
40 extern int system32_temp_kludge;
41 extern data16_t *sys32_spriteram16;
42 extern data16_t *sys32_txtilemap_ram;
43 extern data16_t *sys32_ramtile_ram;
44 extern data16_t *scrambled_paletteram16[2];
45 static data16_t *paletteram16_b;
46
47 extern int system32_mixerShift;
48 extern int system32_screen_mode;
49 extern int system32_screen_old_mode;
50 extern int system32_allow_high_resolution;
51
52 extern int sys32_brightness[2][3];
53
54 WRITE16_HANDLER( sys32_videoram_w );
55 WRITE16_HANDLER( sys32_ramtile_w );
56 WRITE16_HANDLER( sys32_spriteram_w );
57 READ16_HANDLER ( sys32_videoram_r );
58 WRITE32_HANDLER( sys32_videoram_long_w );
59 READ32_HANDLER ( sys32_videoram_long_r );
60 VIDEO_START( system32 );
61 VIDEO_UPDATE( system32 );
62
63 extern int system32_use_default_eeprom;
64
65 static data16_t controlB[256];
66 static data16_t control[256];
67
irq_raise(int level)68 static void irq_raise(int level)
69 {
70 irq_status |= (1 << level);
71 cpu_set_irq_line(0, 0, ASSERT_LINE);
72 }
73
irq_callback(int irqline)74 static int irq_callback(int irqline)
75 {
76 int i;
77 for(i=7; i>=0; i--)
78 if(irq_status & (1 << i)) {
79 return i;
80 }
81 return 0;
82 }
83
WRITE16_HANDLER(irq_ack_w)84 static WRITE16_HANDLER(irq_ack_w)
85 {
86 if(ACCESSING_MSB) {
87 irq_status &= data >> 8;
88 if(!irq_status)
89 cpu_set_irq_line(0, 0, CLEAR_LINE);
90 }
91 }
92
irq_init(void)93 static void irq_init(void)
94 {
95 irq_status = 0;
96 cpu_set_irq_line(0, 0, CLEAR_LINE);
97 cpu_set_irq_callback(0, irq_callback);
98 }
99
NVRAM_HANDLER(system32)100 static NVRAM_HANDLER( system32 )
101 {
102 if (read_or_write)
103 EEPROM_save(file);
104 else {
105 EEPROM_init(&eeprom_interface_93C46);
106
107 if (file)
108 EEPROM_load(file);
109 }
110 }
111
READ16_HANDLER(system32_eeprom_r)112 static READ16_HANDLER(system32_eeprom_r)
113 {
114 return (EEPROM_read_bit() << 7) | input_port_0_r(0);
115 }
116
WRITE16_HANDLER(system32_eeprom_w)117 static WRITE16_HANDLER(system32_eeprom_w)
118 {
119 if(ACCESSING_LSB) {
120 EEPROM_write_bit(data & 0x80);
121 EEPROM_set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
122 EEPROM_set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
123 }
124 }
125
126
READ16_HANDLER(sys32_read_ff)127 static READ16_HANDLER(sys32_read_ff)
128 {
129 return 0xffff;
130 }
131
READ16_HANDLER(sys32_read_random)132 static READ16_HANDLER(sys32_read_random)
133 {
134 return mame_rand(); /* new random.c random number code, see clouds in ga2*/
135 }
136
137 extern int sys32_brightness[2][3];
138
multi32_set_colour(int offset,int monitor)139 void multi32_set_colour (int offset, int monitor)
140 {
141 int data;
142 int r,g,b;
143 int r2,g2,b2;
144 UINT16 r_bright, g_bright, b_bright;
145
146 /* Although the hardware writes to all 65536 colours on both monitors, the
147 games do not use more than 16384 colours per monitor. We discard any
148 colours that are written above MAX_COLOURS(16384).
149 */
150
151 if (offset<MAX_COLOURS) {
152 if (monitor) {
153 data = paletteram16_b[offset];
154 }
155 else data = paletteram16[offset];
156
157 r = (data >> 0) & 0x0f;
158 g = (data >> 4) & 0x0f;
159 b = (data >> 8) & 0x0f;
160
161 r2 = (data >> 13) & 0x1;
162 g2 = (data >> 13) & 0x1;
163 b2 = (data >> 13) & 0x1;
164
165 r = (r << 4) | (r2 << 3);
166 g = (g << 4) | (g2 << 3);
167 b = (b << 4) | (b2 << 3);
168
169 /* there might be better ways of doing this ... but for now its functional ;-)*/
170 r_bright = sys32_brightness[monitor][0]; r_bright &= 0x3f;
171 g_bright = sys32_brightness[monitor][1]; g_bright &= 0x3f;
172 b_bright = sys32_brightness[monitor][2]; b_bright &= 0x3f;
173
174 if ((r_bright & 0x20)) { r = (r * (r_bright&0x1f))>>5; } else { r = r+(((0xf8-r) * (r_bright&0x1f))>>5); }
175 if ((g_bright & 0x20)) { g = (g * (g_bright&0x1f))>>5; } else { g = g+(((0xf8-g) * (g_bright&0x1f))>>5); }
176 if ((b_bright & 0x20)) { b = (b * (b_bright&0x1f))>>5; } else { b = b+(((0xf8-b) * (b_bright&0x1f))>>5); }
177
178 palette_set_color((monitor*MAX_COLOURS)+offset,r,g,b);
179 }
180 }
181
WRITE16_HANDLER(multi32_paletteram16_xBBBBBGGGGGRRRRR_scrambled_word_w)182 static WRITE16_HANDLER( multi32_paletteram16_xBBBBBGGGGGRRRRR_scrambled_word_w )
183 {
184 int r,g,b;
185 int r2,g2,b2;
186
187 if (offset<MAX_COLOURS) {
188 COMBINE_DATA(&scrambled_paletteram16[0][offset]); /* it expects to read back the same values?*/
189
190 /* rearrange the data to normal format ... */
191
192 r = (data >>1) & 0xf;
193 g = (data >>6) & 0xf;
194 b = (data >>11) & 0xf;
195
196 r2 = (data >>0) & 0x1;
197 g2 = (data >>5) & 0x1;
198 b2 = (data >> 10) & 0x1;
199
200 data = (data & 0x8000) | r | g<<4 | b << 8 | r2 << 12 | g2 << 13 | b2 << 14;
201
202 COMBINE_DATA(&paletteram16[offset]);
203
204 multi32_set_colour(offset, 0);
205 }
206 }
207
WRITE16_HANDLER(multi32_paletteram16_xBGRBBBBGGGGRRRR_word_w)208 static WRITE16_HANDLER( multi32_paletteram16_xBGRBBBBGGGGRRRR_word_w )
209 {
210 if (offset<MAX_COLOURS) {
211 COMBINE_DATA(&paletteram16[offset]);
212
213 /* some games use 8-bit writes to some palette regions*/
214 /* (especially for the text layer palettes)*/
215
216 multi32_set_colour(offset, 0);
217 }
218 }
219
220 /* --------------------------------------- Monitor B ---------------------------------*/
221
WRITE16_HANDLER(multi32_paletteram16_xBBBBBGGGGGRRRRR_scrambled_word_b_w)222 static WRITE16_HANDLER( multi32_paletteram16_xBBBBBGGGGGRRRRR_scrambled_word_b_w )
223 {
224 int r,g,b;
225 int r2,g2,b2;
226
227 if (offset<MAX_COLOURS) {
228 COMBINE_DATA(&scrambled_paletteram16[1][offset]); /* it expects to read back the same values?*/
229
230 /* rearrange the data to normal format ... */
231
232 r = (data >>1) & 0xf;
233 g = (data >>6) & 0xf;
234 b = (data >>11) & 0xf;
235
236 r2 = (data >>0) & 0x1;
237 g2 = (data >>5) & 0x1;
238 b2 = (data >> 10) & 0x1;
239
240 data = (data & 0x8000) | r | g<<4 | b << 8 | r2 << 12 | g2 << 13 | b2 << 14;
241
242
243 COMBINE_DATA(&paletteram16_b[offset]);
244
245 multi32_set_colour(offset, 1);
246 }
247 }
248
WRITE16_HANDLER(multi32_paletteram16_xBGRBBBBGGGGRRRR_word_b_w)249 static WRITE16_HANDLER( multi32_paletteram16_xBGRBBBBGGGGRRRR_word_b_w )
250 {
251 if (offset<MAX_COLOURS) {
252 COMBINE_DATA(&paletteram16_b[offset]);
253
254 /* some games use 8-bit writes to some palette regions*/
255 /* (especially for the text layer palettes)*/
256
257 multi32_set_colour(offset, 1);
258 }
259 }
260
261 extern int analogRead[8];
262 extern int analogSwitch;
263
READ16_HANDLER(multi32_io_analog_r)264 static READ16_HANDLER( multi32_io_analog_r )
265 {
266 /*
267 { 0xc00050, 0xc00057, system32_io_analog_r },
268
269 Read the value of each analog control port, one bit at a time, 8 times.
270 Analog Input Set B is requested by the hardware using "analogSwitch"
271 */
272 int retdata;
273 if (offset<=3) {
274 retdata = analogRead[offset*2+analogSwitch] & 0x80;
275 analogRead[offset*2+analogSwitch] <<= 1;
276 return retdata;
277 }
278
279 switch(offset)
280 {
281 default:
282 log_cb(RETRO_LOG_DEBUG, LOGPRE "multi32_io_analog [%d:%06x]: read %02x (mask %x)\n", cpu_getactivecpu(), activecpu_get_pc(), offset, mem_mask);
283 return 0xffff;
284 break;
285 }
286 }
287
WRITE16_HANDLER(multi32_io_analog_w)288 static WRITE16_HANDLER( multi32_io_analog_w )
289 {
290 COMBINE_DATA(&control[offset]);
291
292 if (offset<=3) {
293 if (analogSwitch) analogRead[offset*2+1]=readinputport(offset*2+5);
294 else analogRead[offset*2]=readinputport(offset*2+4);
295 }
296 }
297
READ16_HANDLER(multi32_io_r)298 static READ16_HANDLER( multi32_io_r )
299 {
300 /* I/O Control port at 0xc00000
301
302 { 0xc00000, 0xc00001, input_port_1_word_r },
303 { 0xc00002, 0xc00003, input_port_2_word_r },
304 { 0xc00004, 0xc00007, sys32_read_ff },
305 { 0xc00008, 0xc00009, input_port_3_word_r },
306 { 0xc0000a, 0xc0000b, system32_eeprom_r },
307 { 0xc0000c, 0xc0004f, sys32_read_ff },
308 */
309 switch(offset) {
310 case 0x00:
311 return readinputport(0x01);
312 case 0x01:
313 return readinputport(0x02);
314 case 0x02:
315 return 0xffff;
316 case 0x03:
317 /* f1lap*/
318 return 0xffff;
319 case 0x04:
320 return readinputport(0x03);
321 case 0x05:
322 return (EEPROM_read_bit() << 7) | readinputport(0x00);
323 case 0x06:
324 return 0xffff;
325 case 0x07:
326 /* scross*/
327 return sys32_tilebank_external;
328 case 0x0e:
329 /* f1lap*/
330 return 0xffff;
331 default:
332 log_cb(RETRO_LOG_DEBUG, LOGPRE "Port A1 %d [%d:%06x]: read (mask %x)\n", offset, cpu_getactivecpu(), activecpu_get_pc(), mem_mask);
333 return 0xffff;
334 }
335 }
336
WRITE16_HANDLER(multi32_io_w)337 static WRITE16_HANDLER( multi32_io_w )
338 {
339 /* I/O Control port at 0xc00000
340
341 { 0xc00006, 0xc00007, system32_eeprom_w },
342 { 0xc0000c, 0xc0000d, jp_v60_write_cab },
343 { 0xc00008, 0xc0000d, MWA16_RAM }, // Unknown c00008=f1lap , c0000c=titlef
344 { 0xc0000e, 0xc0000f, MWA16_RAM, &sys32_tilebank_external }, // tilebank per layer on multi32
345 { 0xc0001c, 0xc0001d, MWA16_RAM, &sys32_displayenable },
346 { 0xc0001e, 0xc0001f, MWA16_RAM }, // Unknown
347 */
348
349 COMBINE_DATA(&control[offset]);
350
351 switch(offset) {
352 case 0x03:
353 if(ACCESSING_LSB) {
354 EEPROM_write_bit(data & 0x80);
355 EEPROM_set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
356 EEPROM_set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
357 }
358 break;
359 case 0x04:
360 /* f1lap*/
361 break;
362 case 0x06:
363 /* jp_v60_write_cab / titlef*/
364 break;
365 case 0x07:
366 /* Multi32: tilebank per layer*/
367 COMBINE_DATA(&sys32_tilebank_external);
368 break;
369 case 0x0e:
370 COMBINE_DATA(&sys32_displayenable);
371 break;
372 case 0x0f:
373 /* orunners unknown*/
374 break;
375 default:
376 log_cb(RETRO_LOG_DEBUG, LOGPRE "Port A1 %d [%d:%06x]: write %02x (mask %x)\n", offset, cpu_getactivecpu(), activecpu_get_pc(), data, mem_mask);
377 break;
378 }
379 }
380
READ16_HANDLER(multi32_io_2_r)381 static READ16_HANDLER( multi32_io_2_r )
382 {
383 /* I/O Control port at 0xc00060
384
385 { 0xc00060, 0xc00061, input_port_4_word_r },
386 { 0xc00062, 0xc00063, input_port_5_word_r },
387 { 0xc00064, 0xc00065, input_port_6_word_r },
388 { 0xc00066, 0xc000ff, sys32_read_ff },
389 */
390 switch(offset) {
391 case 0x00:
392 return readinputport(0x04);
393 case 0x01:
394 return readinputport(0x05);
395 case 0x02:
396 return readinputport(0x06);
397 default:
398 log_cb(RETRO_LOG_DEBUG, LOGPRE "Port A2 %d [%d:%06x]: read (mask %x)\n", offset, cpu_getactivecpu(), activecpu_get_pc(), mem_mask);
399 return 0xffff;
400 }
401 }
402
WRITE16_HANDLER(multi32_io_2_w)403 static WRITE16_HANDLER( multi32_io_2_w )
404 {
405 /* I/O Control port at 0xc00060
406
407 { 0xc00060, 0xc00061, MWA16_RAM }, // Analog switch
408 { 0xc00074, 0xc00075, MWA16_RAM }, // Unknown
409 */
410
411 switch(offset) {
412 case 0x00:
413 /* Used by the hardware to switch the analog input ports to set B*/
414 analogSwitch=data;
415 break;
416 case 0x0a:
417 /* orunners unknown*/
418 break;
419 default:
420 log_cb(RETRO_LOG_DEBUG, LOGPRE "Port A2 %d [%d:%06x]: write %02x (mask %x)\n", offset, cpu_getactivecpu(), activecpu_get_pc(), data, mem_mask);
421 break;
422 }
423 }
424
READ16_HANDLER(multi32_io_B_r)425 static READ16_HANDLER( multi32_io_B_r )
426 {
427 switch(offset) {
428 case 0:
429 /* orunners (mask ff00)*/
430 return readinputport(0X0c); /* orunners Monitor B Shift Up, Shift Down buttons*/
431 case 1:
432 /* orunners (mask ff00)*/
433 return readinputport(0X0d); /* orunners Monitor B DJ Music, Music Up, Music Down buttons*/
434 case 2:
435 return 0x00;
436 case 3:
437 /* orunners (mask ff00)*/
438 return 0x00;
439 case 4:
440 /* harddunk (mask ff00) will not exit test mode if not 0xff*/
441 return readinputport(0X0e); /* orunners Monitor B Service, Test, Coin and Start buttons*/
442 case 5:
443 /* orunners (mask ff00) locks up*/
444 return (EEPROM_read_bit() << 7) | readinputport(0x00);
445 case 7:
446 /* orunners (mask ff00)*/
447 return 0xffff;
448 case 14:
449 /* harddunk (mask ff00)*/
450 return 0xffff;
451 default:
452 log_cb(RETRO_LOG_DEBUG, LOGPRE "Port B %d [%d:%06x]: read (mask %x)\n", offset, cpu_getactivecpu(), activecpu_get_pc(), mem_mask);
453 return 0xffff;
454 }
455 }
456
WRITE16_HANDLER(multi32_io_B_w)457 static WRITE16_HANDLER( multi32_io_B_w )
458 {
459 COMBINE_DATA(&controlB[offset]);
460 switch(offset) {
461
462 case 0x03:
463 /* titlef value=00*/
464 break;
465 case 0x06:
466 /* orunners value=00, 08, 34*/
467 break;
468 case 0x07:
469 if(ACCESSING_LSB) {
470 EEPROM_write_bit(data & 0x80);
471 EEPROM_set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
472 EEPROM_set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
473 }
474 break;
475 case 0x0e:
476 /* orunners value=86 (displayenable?)*/
477 break;
478 case 0x0f:
479 /* orunners value=c8*/
480 break;
481
482 default:
483 log_cb(RETRO_LOG_DEBUG, LOGPRE "Port B %d [%d:%06x]: write %02x (mask %x)\n", offset, cpu_getactivecpu(), activecpu_get_pc(), data, mem_mask);
484 break;
485 }
486 }
487
MEMORY_READ16_START(multi32_readmem)488 static MEMORY_READ16_START( multi32_readmem )
489 { 0x000000, 0x1fffff, MRA16_ROM },
490 { 0x200000, 0x23ffff, MRA16_RAM }, /* work RAM*/
491 { 0x300000, 0x31ffff, sys32_videoram_r }, /* Tile Ram*/
492 { 0x400000, 0x41ffff, MRA16_RAM }, /* sprite RAM*/
493 { 0x500000, 0x50000d, MRA16_RAM }, /* Unknown*/
494 /* { 0x500002, 0x500003, jp_v60_read_cab },*/
495
496 { 0x600000, 0x6100ff, MRA16_RAM }, /* Palette + mixer registers (Monitor A)*/
497 { 0x680000, 0x69004f, MRA16_RAM }, /* Palette + mixer registers (Monitor B)*/
498
499 { 0x700000, 0x701fff, MRA16_RAM }, /* shared RAM*/
500 { 0x800000, 0x80000f, MRA16_RAM }, /* Unknown*/
501 { 0x80007e, 0x80007f, MRA16_RAM }, /* Unknown f1lap*/
502 { 0x801000, 0x801003, MRA16_RAM }, /* Unknown*/
503 { 0xa00000, 0xa00001, MRA16_RAM }, /* Unknown dbzvrvs*/
504
505 { 0xc00000, 0xc0003f, multi32_io_r },
506 { 0xc00050, 0xc0005f, multi32_io_analog_r },
507 { 0xc00060, 0xc0007f, multi32_io_2_r },
508 { 0xc80000, 0xc8007f, multi32_io_B_r },
509
510 { 0xd80000, 0xd80001, sys32_read_random },
511 { 0xd80002, 0xd80003, MRA16_RAM }, /* Unknown harddunk*/
512 { 0xe00000, 0xe0000f, MRA16_RAM }, /* Unknown*/
513 { 0xe80000, 0xe80003, MRA16_RAM }, /* Unknown*/
514 { 0xf00000, 0xffffff, MRA16_BANK1 }, /* High rom mirror*/
515 MEMORY_END
516
517 static MEMORY_WRITE16_START( multi32_writemem )
518 { 0x000000, 0x1fffff, MWA16_ROM },
519 { 0x200000, 0x23ffff, MWA16_RAM, &system32_workram },
520 { 0x300000, 0x31ffff, sys32_videoram_w },
521 { 0x400000, 0x41ffff, sys32_spriteram_w, &sys32_spriteram16 }, /* Sprites*/
522 { 0x500000, 0x50000d, MWA16_RAM }, /* Unknown*/
523
524 { 0x600000, 0x607fff, multi32_paletteram16_xBBBBBGGGGGRRRRR_scrambled_word_w, &scrambled_paletteram16[0] }, /* magic data-line-scrambled mirror of palette RAM * we need to shuffle data written then?*/
525 { 0x608000, 0x60ffff, multi32_paletteram16_xBGRBBBBGGGGRRRR_word_w, &paletteram16 }, /* Palettes*/
526 { 0x610000, 0x6100ff, MWA16_RAM, &system32_mixerregs[0] }, /* mixer chip registers*/
527
528 { 0x680000, 0x687fff, multi32_paletteram16_xBBBBBGGGGGRRRRR_scrambled_word_b_w, &scrambled_paletteram16[1] }, /* magic data-line-scrambled mirror of palette RAM * we need to shuffle data written then?*/
529 { 0x688000, 0x68ffff, multi32_paletteram16_xBGRBBBBGGGGRRRR_word_b_w, &paletteram16_b }, /* Monitor B palette*/
530 { 0x690000, 0x69004f, MWA16_RAM, &system32_mixerregs[1] }, /* monitor B mixer registers*/
531
532 { 0x700000, 0x701fff, MWA16_RAM, &system32_shared_ram }, /* Shared ram with the z80*/
533 { 0x800000, 0x80000f, MWA16_RAM }, /* Unknown*/
534 { 0x80007e, 0x80007f, MWA16_RAM }, /* Unknown f1lap*/
535 { 0x801000, 0x801003, MWA16_RAM }, /* Unknown*/
536 { 0x81002a, 0x81002b, MWA16_RAM }, /* Unknown dbzvrvs*/
537 { 0x810100, 0x810101, MWA16_RAM }, /* Unknown dbzvrvs*/
538 { 0xa00000, 0xa00fff, MWA16_RAM, &sys32_protram }, /* protection RAM*/
539
540 { 0xc00000, 0xc0003f, multi32_io_w },
541 { 0xc00050, 0xc0005f, multi32_io_analog_w },
542 { 0xc00060, 0xc0007f, multi32_io_2_w },
543 { 0xc80000, 0xc8007f, multi32_io_B_w },
544
545 { 0xd00000, 0xd00005, MWA16_RAM }, /* Unknown*/
546 { 0xd00006, 0xd00007, irq_ack_w },
547 { 0xd00008, 0xd0000b, MWA16_RAM }, /* Unknown*/
548 { 0xd80000, 0xd80003, MWA16_RAM }, /* Unknown titlef / harddunk*/
549 { 0xe00000, 0xe0000f, MWA16_RAM }, /* Unknown*/
550 { 0xe80000, 0xe80003, MWA16_RAM }, /* Unknown*/
551 { 0xf00000, 0xffffff, MWA16_ROM },
552 MEMORY_END
553
554
555 static MACHINE_INIT( system32 )
556 {
557 cpu_setbank(1, memory_region(REGION_CPU1));
558 irq_init();
559
560 /* force it to select lo-resolution on reset */
561 system32_allow_high_resolution = 0;
562 system32_screen_mode = 0;
563 system32_screen_old_mode = 1;
564 }
565
INTERRUPT_GEN(system32_interrupt)566 static INTERRUPT_GEN( system32_interrupt )
567 {
568 if(cpu_getiloops())
569 irq_raise(1);
570 else
571 irq_raise(0);
572 }
573
irq_handler(int irq)574 static void irq_handler(int irq)
575 {
576 cpu_set_irq_line( 1, 0 , irq ? ASSERT_LINE : CLEAR_LINE );
577 }
578
579 static struct GfxLayout s32_bgcharlayout =
580 {
581 16,16,
582 RGN_FRAC(1,1),
583 4,
584 { 0,1,2,3 },
585 { 0, 4, 16, 20, 8, 12, 24, 28,
586 32, 36, 48, 52, 40, 44, 56, 60 },
587 { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
588 8*64, 9*64,10*64,11*64,12*64,13*64,14*64,15*64 },
589 16*64
590 };
591
592 static struct GfxLayout s32_fgcharlayout =
593 {
594 8,8,
595 RGN_FRAC(1,1),
596 4,
597 { 0,1,2,3 },
598 { 0, 4, 8, 12, 16, 20, 24, 28 },
599 { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
600 16*16
601 };
602
603 static struct GfxDecodeInfo gfxdecodeinfo[] =
604 {
605 { REGION_GFX1, 0, &s32_bgcharlayout, 0x00, 0x3ff },
606 { REGION_GFX3, 0, &s32_fgcharlayout, 0x00, 0x3ff },
607 { -1 } /* end of array */
608 };
609
610 static UINT8 *sys32_SoundMemBank;
611
READ_HANDLER(system32_bank_r)612 static READ_HANDLER( system32_bank_r )
613 {
614 return sys32_SoundMemBank[offset];
615 }
616
READ_HANDLER(sys32_shared_snd_r)617 static READ_HANDLER( sys32_shared_snd_r )
618 {
619 data8_t *RAM = (data8_t *)system32_shared_ram;
620
621 return RAM[offset];
622 }
623
WRITE_HANDLER(sys32_shared_snd_w)624 static WRITE_HANDLER( sys32_shared_snd_w )
625 {
626 data8_t *RAM = (data8_t *)system32_shared_ram;
627
628 RAM[offset] = data;
629 }
630
MEMORY_READ_START(multi32_sound_readmem)631 static MEMORY_READ_START( multi32_sound_readmem )
632 { 0x0000, 0x9fff, MRA_ROM },
633 { 0xa000, 0xbfff, system32_bank_r },
634 { 0xc000, 0xdfff, MultiPCM_reg_0_r },
635 { 0xe000, 0xffff, sys32_shared_snd_r },
636 MEMORY_END
637
638 static MEMORY_WRITE_START( multi32_sound_writemem )
639 { 0x0000, 0x9fff, MWA_ROM },
640 { 0xc000, 0xdfff, MultiPCM_reg_0_w },
641 { 0xe000, 0xffff, sys32_shared_snd_w },
642 MEMORY_END
643
644 static WRITE_HANDLER( sys32_soundbank_w )
645 {
646 unsigned char *RAM = memory_region(REGION_CPU2);
647 int Bank;
648
649 Bank = data * 0x2000;
650
651 sys32_SoundMemBank = &RAM[Bank+0x10000];
652 }
653
PORT_READ_START(multi32_sound_readport)654 static PORT_READ_START( multi32_sound_readport )
655 { 0x80, 0x80, YM2612_status_port_0_A_r },
656 PORT_END
657
658 static PORT_WRITE_START( multi32_sound_writeport )
659 { 0x80, 0x80, YM2612_control_port_0_A_w },
660 { 0x81, 0x81, YM2612_data_port_0_A_w },
661 { 0x82, 0x82, YM2612_control_port_0_B_w },
662 { 0x83, 0x83, YM2612_data_port_0_B_w },
663 { 0xa0, 0xa0, sys32_soundbank_w },
664 { 0xb0, 0xb0, MultiPCM_bank_0_w },
665 { 0xc1, 0xc1, IOWP_NOP },
666 PORT_END
667
668 struct YM2612interface mul32_ym3438_interface =
669 {
670 1,
671 MASTER_CLOCK/4,
672 { 60,60 },
673 { 0 }, { 0 }, { 0 }, { 0 },
674 { irq_handler }
675 };
676
677 static struct MultiPCM_interface mul32_multipcm_interface =
678 {
679 1, /* 1 chip*/
680 { MASTER_CLOCK/4 }, /* clock*/
681 { MULTIPCM_MODE_MULTI32 }, /* banking mode*/
682 { (512*1024) }, /* bank size*/
683 { REGION_SOUND1 }, /* sample region*/
684 { YM3012_VOL(100, MIXER_PAN_CENTER, 100, MIXER_PAN_CENTER) }
685 };
686
687 static struct MultiPCM_interface scross_multipcm_interface =
688 {
689 1, /* 1 chip*/
690 { MASTER_CLOCK/4 }, /* clock*/
691 { MULTIPCM_MODE_STADCROSS }, /* banking mode*/
692 { (512*1024) }, /* bank size*/
693 { REGION_SOUND1 }, /* sample region*/
694 { YM3012_VOL(100, MIXER_PAN_CENTER, 100, MIXER_PAN_CENTER) }
695 };
696
697 static MACHINE_DRIVER_START( base )
698
699 /* basic machine hardware */
700 MDRV_CPU_ADD(V60, MULTI32_CLOCK/2)
MDRV_CPU_MEMORY(multi32_readmem,multi32_writemem)701 MDRV_CPU_MEMORY(multi32_readmem,multi32_writemem)
702 MDRV_CPU_VBLANK_INT(system32_interrupt,2)
703
704 MDRV_CPU_ADD(Z80, MASTER_CLOCK/4)
705 MDRV_CPU_MEMORY(multi32_sound_readmem, multi32_sound_writemem)
706 MDRV_CPU_PORTS(multi32_sound_readport, multi32_sound_writeport)
707
708 MDRV_FRAMES_PER_SECOND(60)
709 MDRV_VBLANK_DURATION(100 /*DEFAULT_60HZ_VBLANK_DURATION*/)
710
711 MDRV_MACHINE_INIT(system32)
712 MDRV_NVRAM_HANDLER(system32)
713
714 /* video hardware */
715 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_NEEDS_6BITS_PER_GUN | VIDEO_UPDATE_AFTER_VBLANK | VIDEO_RGB_DIRECT | VIDEO_HAS_SHADOWS ) /* RGB_DIRECT will be needed for alpha*/
716 MDRV_SCREEN_SIZE(52*8*2, 28*8*2)
717 MDRV_VISIBLE_AREA(0*8, 52*8*2-1, 0*8, 28*8*2-1)
718
719 MDRV_GFXDECODE(gfxdecodeinfo)
720 MDRV_PALETTE_LENGTH(32768)
721
722 MDRV_VIDEO_START(system32)
723 MDRV_VIDEO_UPDATE(system32)
724
725 MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
726 MDRV_SOUND_ADD(YM3438, mul32_ym3438_interface)
727 MACHINE_DRIVER_END
728
729 static MACHINE_DRIVER_START( multi32 )
730 MDRV_IMPORT_FROM(base)
731 MDRV_SOUND_ADD(MULTIPCM, mul32_multipcm_interface)
732 MACHINE_DRIVER_END
733
734 static MACHINE_DRIVER_START( scross )
735 MDRV_IMPORT_FROM(base)
736 MDRV_SOUND_ADD(MULTIPCM, scross_multipcm_interface)
737 MACHINE_DRIVER_END
738
739 static DRIVER_INIT(orunners)
740 {
741 multi32=1;
742 system32_temp_kludge = 0;
743 system32_mixerShift = 4;
744 }
745
DRIVER_INIT(titlef)746 static DRIVER_INIT(titlef)
747 {
748 multi32=1;
749 system32_temp_kludge = 0;
750 system32_mixerShift = 4;
751 }
752
DRIVER_INIT(harddunk)753 static DRIVER_INIT(harddunk)
754 {
755 multi32=1;
756 system32_temp_kludge = 0;
757 system32_mixerShift = 5;
758 }
759
760 #define SYSTEM32_PLAYER_INPUTS(_n_, _b1_, _b2_, _b3_, _b4_) \
761 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_##_b1_ | IPF_PLAYER##_n_ ) \
762 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_##_b2_ | IPF_PLAYER##_n_ ) \
763 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_##_b3_ | IPF_PLAYER##_n_ ) \
764 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_##_b4_ | IPF_PLAYER##_n_ ) \
765 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER##_n_ ) \
766 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER##_n_ ) \
767 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER##_n_ ) \
768 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER##_n_ )
769
770
771 INPUT_PORTS_START( orunners )
772 PORT_START /* port 0*/
773 PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN )
774 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* EEPROM data */
775
776 PORT_START /* port 1*/
777 PORT_BITX( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1, "P1 Shift Up", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
778 PORT_BITX( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2, "P1 Shift Down", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
779 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
780 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
781 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
782 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
783 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
784 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
785
786 PORT_START /* port 2*/
787 PORT_BITX( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3, "P1 DJ Music", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
788 PORT_BITX( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4, "P1 Music Up", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
789 PORT_BITX( 0x04, IP_ACTIVE_LOW, IPT_BUTTON5, "P1 Music Down", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
790 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
791 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
792 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
793 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
794 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
795
796 PORT_START /* port 3*/
797 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
798 PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, "Test", KEYCODE_F2, IP_JOY_NONE )
799 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
800 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
801 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
802 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
803 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
804 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
805
806 PORT_START /* port 4*/
807 PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X | IPF_CENTER | IPF_PLAYER1, 30, 10, 0x00, 0xff)
808
809 PORT_START /* port 5*/
810 PORT_BIT( 0x00, IP_ACTIVE_LOW, IPT_UNUSED )
811
812 PORT_START /* port 6*/
813 PORT_ANALOG( 0xff, 0x00, IPT_PEDAL | IPF_PLAYER1, 30, 10, 0x00, 0xff)
814
815 PORT_START /* port 7*/
816 PORT_BIT( 0x00, IP_ACTIVE_LOW, IPT_UNUSED )
817
818 PORT_START /* port 8*/
819 PORT_ANALOG( 0xff, 0x00, IPT_PEDAL2 | IPF_PLAYER1, 30, 10, 0x00, 0xff)
820
821 PORT_START /* port 9*/
822 PORT_ANALOG( 0xff, 0x00, IPT_PEDAL | IPF_PLAYER2, 30, 10, 0x00, 0xff)
823
824 PORT_START /* port A*/
825 PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X | IPF_CENTER | IPF_PLAYER2, 30, 10, 0x00, 0xff)
826
827 PORT_START /* port B*/
828 PORT_ANALOG( 0xff, 0x00, IPT_PEDAL2 | IPF_PLAYER2, 30, 10, 0x00, 0xff)
829
830 PORT_START /* port C*/
831 PORT_BITX( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2, "P2 Shift Up", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
832 PORT_BITX( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2, "P2 Shift Down", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
833 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
834 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
835 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
836 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
837 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
838 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
839
840 PORT_START /* port D*/
841 PORT_BITX( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2, "P2 DJ Music", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
842 PORT_BITX( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2, "P2 Music Up", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
843 PORT_BITX( 0x04, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER2, "P2 Music Down", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
844 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
845 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
846 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
847 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
848 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
849
850 PORT_START /* port E*/
851 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2 )
852 PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, "Test", KEYCODE_F2, IP_JOY_NONE )
853 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
854 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
855 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
856 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
857 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
858 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
859
860 PORT_START /* port F*/
861 PORT_DIPNAME( 0x03, 0x01, "Monitors" )
862 PORT_DIPSETTING( 0x01, "A only" )
863 PORT_DIPSETTING( 0x03, "A and B" )
864 PORT_DIPSETTING( 0x02, "B only" )
865 INPUT_PORTS_END
866
867 INPUT_PORTS_START( titlef )
868 PORT_START /* 0xc0000a - port 0*/
869 PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN )
870 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* EEPROM data */
871
872 PORT_START /* 0xc00000 - port 1*/
873 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER1)
874 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER1)
875 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER1)
876 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER1)
877 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN | IPF_PLAYER1)
878 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP | IPF_PLAYER1)
879 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT | IPF_PLAYER1)
880 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT | IPF_PLAYER1)
881
882 PORT_START /* 0xc00002 - port 2*/
883 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER1)
884 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER1)
885 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER1)
886 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER1)
887 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN | IPF_PLAYER1)
888 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP | IPF_PLAYER1)
889 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT | IPF_PLAYER1)
890 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT | IPF_PLAYER1)
891
892 PORT_START /* 0xc00008 - port 3*/
893 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
894 PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, "Test", KEYCODE_F2, IP_JOY_NONE )
895 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
896 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
897 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
898 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
899 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
900 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
901
902 PORT_START /* 0xc00060 - port 4*/
903 PORT_START /* 0xc00062 - port 5*/
904 PORT_START /* 0xc00064 - port 6*/
905 PORT_START /* port 7*/
906 PORT_START /* port 8*/
907 PORT_START /* port 9*/
908 PORT_START /* port A*/
909 PORT_START /* port B*/
910
911 PORT_START /* port C*/
912 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER2)
913 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER2)
914 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER2)
915 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER2)
916 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN | IPF_PLAYER2)
917 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP | IPF_PLAYER2)
918 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT | IPF_PLAYER2)
919 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT | IPF_PLAYER2)
920
921 PORT_START /* port D*/
922 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER2)
923 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER2)
924 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER2)
925 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN | IPF_PLAYER2)
926 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN | IPF_PLAYER2)
927 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP | IPF_PLAYER2)
928 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT | IPF_PLAYER2)
929 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT | IPF_PLAYER2)
930
931 PORT_START /* port E*/
932 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
933 PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, "Test1", KEYCODE_F2, IP_JOY_NONE )
934 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
935 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
936 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START3 )
937 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START4 )
938 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
939 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
940
941 PORT_START /* port F*/
942 PORT_DIPNAME( 0x03, 0x01, "Monitors" )
943 PORT_DIPSETTING( 0x01, "A only" )
944 PORT_DIPSETTING( 0x03, "A and B" )
945 PORT_DIPSETTING( 0x02, "B only" )
946 INPUT_PORTS_END
947
948 INPUT_PORTS_START( harddunk )
949 PORT_START /* 0xc0000a - port 0*/
950 PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN )
951 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* EEPROM data */
952
953 PORT_START /* 0xc00000 - port 1*/
954 SYSTEM32_PLAYER_INPUTS(1, BUTTON1, BUTTON2, BUTTON3, BUTTON4)
955
956 PORT_START /* 0xc00002 - port 2*/
957 SYSTEM32_PLAYER_INPUTS(2, BUTTON1, BUTTON2, BUTTON3, BUTTON4)
958
959 PORT_START /* 0xc00008 - port 3*/
960 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2 )
961 PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, "Test", KEYCODE_F2, IP_JOY_NONE )
962 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
963 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
964 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
965 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
966 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
967 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
968
969 PORT_START /* port 4*/
970 SYSTEM32_PLAYER_INPUTS(3, BUTTON1, BUTTON2, BUTTON3, BUTTON4)
971
972 PORT_START /* port 5*/
973 SYSTEM32_PLAYER_INPUTS(6, BUTTON1, BUTTON2, BUTTON3, BUTTON4)
974
975 PORT_START /* port 6*/
976 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START3 )
977 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START6 )
978 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
979 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
980 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
981 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
982 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
983 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
984
985 PORT_START /* port 7*/
986 PORT_START /* port 8*/
987 PORT_START /* port 9*/
988 PORT_START /* port A*/
989 PORT_START /* port B*/
990
991 PORT_START /* port C*/
992 SYSTEM32_PLAYER_INPUTS(4, BUTTON1, BUTTON2, BUTTON3, BUTTON4)
993
994 PORT_START /* port D*/
995 SYSTEM32_PLAYER_INPUTS(5, BUTTON1, BUTTON2, BUTTON3, BUTTON4)
996
997 PORT_START /* port E*/
998 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
999 PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, "Test1", KEYCODE_F2, IP_JOY_NONE )
1000 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
1001 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1002 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START4 )
1003 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START5 )
1004 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1005 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1006
1007 PORT_START /* port F*/
1008 PORT_DIPNAME( 0x03, 0x01, "Monitors" )
1009 PORT_DIPSETTING( 0x01, "A only" )
1010 PORT_DIPSETTING( 0x03, "A and B" )
1011 PORT_DIPSETTING( 0x02, "B only" )
1012 INPUT_PORTS_END
1013
1014 INPUT_PORTS_START( scross )
1015 PORT_START /* 0xc0000a - port 0*/
1016 PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN )
1017 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* EEPROM data */
1018
1019 PORT_START /* 0xc00000 - port 1*/
1020 PORT_BITX( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2, "P1 Attack", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
1021 PORT_BITX( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3, "P1 Wheelie", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
1022 PORT_BITX( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4, "P1 Brake", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
1023 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1024 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1025 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1026 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1027 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1028
1029 PORT_START /* 0xc00002 - port 2*/
1030
1031 PORT_START /* 0xc00008 - port 3*/
1032 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
1033 PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, "Test", KEYCODE_F2, IP_JOY_NONE )
1034 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
1035 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1036 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
1037 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1038 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1039 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1040
1041 PORT_START /* port 4*/
1042 PORT_ANALOG( 0xff, 0x7f, IPT_AD_STICK_X | IPF_CENTER | IPF_REVERSE | IPF_PLAYER1, 30, 10, 0x00, 0xff)
1043
1044 PORT_START /* port 5*/
1045
1046 PORT_START /* port 6*/
1047 PORT_ANALOG( 0xff, 0x00, IPT_PEDAL | IPF_PLAYER1, 30, 10, 0x00, 0xff)
1048
1049 PORT_START /* port 7*/
1050 PORT_START /* port 8*/
1051 PORT_ANALOG( 0xff, 0x7f, IPT_AD_STICK_X | IPF_CENTER | IPF_REVERSE | IPF_PLAYER2, 30, 10, 0x00, 0xff)
1052
1053 PORT_START /* port 9*/
1054
1055 PORT_START /* port A*/
1056 PORT_ANALOG( 0xff, 0x00, IPT_PEDAL | IPF_PLAYER2, 30, 10, 0x00, 0xff)
1057
1058 PORT_START /* port B*/
1059
1060 PORT_START /* port C*/
1061 PORT_BITX( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2, "P2 Attack", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
1062 PORT_BITX( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 | IPF_PLAYER2, "P2 Wheelie", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
1063 PORT_BITX( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2, "P2 Brake", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
1064 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1065 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1066 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1067 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1068 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1069
1070 PORT_START /* port D*/
1071
1072 PORT_START /* port E*/
1073 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2 )
1074 PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, "Test", KEYCODE_F2, IP_JOY_NONE )
1075 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
1076 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1077 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
1078 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1079 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1080 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1081
1082 PORT_START /* port F*/
1083 PORT_DIPNAME( 0x03, 0x01, "Monitors" )
1084 PORT_DIPSETTING( 0x01, "A only" )
1085 PORT_DIPSETTING( 0x03, "A and B" )
1086 PORT_DIPSETTING( 0x02, "B only" )
1087 INPUT_PORTS_END
1088
1089
1090
1091 ROM_START( orunners )
1092 ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* v60 code */
1093 ROM_LOAD32_WORD( "epr15618.bin", 0x000000, 0x020000, CRC(25647f76) SHA1(9f882921ebb2f078350295c322b263f75812c053) )
1094 ROM_RELOAD( 0x040000, 0x020000 )
1095 ROM_RELOAD( 0x080000, 0x020000 )
1096 ROM_RELOAD( 0x0c0000, 0x020000 )
1097 ROM_LOAD32_WORD( "epr15619.bin", 0x000002, 0x020000, CRC(2a558f95) SHA1(616ec0a7b251da61a49b933c58895b1a4d39417a) )
1098 ROM_RELOAD( 0x040002, 0x020000 )
1099 ROM_RELOAD( 0x080002, 0x020000 )
1100 ROM_RELOAD( 0x0c0002, 0x020000 )
1101
1102 /* v60 data */
1103 ROM_LOAD32_WORD( "mpr15538.bin", 0x100000, 0x080000, CRC(93958820) SHA1(e19b6f18a5707dbb64ae009d63c05eac5bac4a81) )
1104 ROM_LOAD32_WORD( "mpr15539.bin", 0x100002, 0x080000, CRC(219760fa) SHA1(bd62a83de9c9542f6da454a87dc4947492f65c52) )
1105
1106 ROM_REGION( 0x90000, REGION_CPU2, 0 ) /* sound CPU */
1107 ROM_LOAD("epr15550.bin", 0x00000, 0x80000, CRC(0205d2ed) SHA1(3475479e1a45fe96eefbe53842758898db7accbf) )
1108 ROM_RELOAD( 0x10000, 0x80000 )
1109
1110 ROM_REGION( 0x400000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1111 ROM_LOAD16_BYTE( "mpr15548.bin", 0x000000, 0x200000, CRC(b6470a66) SHA1(e1544590c02d41f62f82a4d771b893fb0f2734c7) )
1112 ROM_LOAD16_BYTE( "mpr15549.bin", 0x000001, 0x200000, CRC(81d12520) SHA1(1555893941e832f00ad3d0b3ad0c34a0d3a1c58a) )
1113
1114 ROM_REGION( 0x1000000, REGION_GFX2, 0 ) /* sprites */
1115 ROMX_LOAD( "mpr15540.bin", 0x000000, 0x200000, CRC(a10d72b4) SHA1(6d9d5e20be6721b53ce49df4d5a1bbd91f5b3aed) , ROM_SKIP(6)|ROM_GROUPWORD )
1116 ROMX_LOAD( "mpr15542.bin", 0x000002, 0x200000, CRC(40952374) SHA1(c669ef52508bc2f49cf812dc86ac98fb535471fa) , ROM_SKIP(6)|ROM_GROUPWORD )
1117 ROMX_LOAD( "mpr15544.bin", 0x000004, 0x200000, CRC(39e3df45) SHA1(38a7b21617b45613b05509dda388f8f7770b186c) , ROM_SKIP(6)|ROM_GROUPWORD )
1118 ROMX_LOAD( "mpr15546.bin", 0x000006, 0x200000, CRC(e3fcc12c) SHA1(1cf7e05c7873f68789a27a91cddf471df40d7907) , ROM_SKIP(6)|ROM_GROUPWORD )
1119 ROMX_LOAD( "mpr15541.bin", 0x800000, 0x200000, CRC(a2003c2d) SHA1(200a2c7d78d3f5f28909267fdcdbddd58c5f5fa2) , ROM_SKIP(6)|ROM_GROUPWORD )
1120 ROMX_LOAD( "mpr15543.bin", 0x800002, 0x200000, CRC(933e8e7b) SHA1(0d53286f524f47851a483569dc37e9f6d34cc5f4) , ROM_SKIP(6)|ROM_GROUPWORD )
1121 ROMX_LOAD( "mpr15545.bin", 0x800004, 0x200000, CRC(53dd0235) SHA1(4aee5ae1820ff933b6bd8a54bdbf989c0bc95c1a) , ROM_SKIP(6)|ROM_GROUPWORD )
1122 ROMX_LOAD( "mpr15547.bin", 0x800006, 0x200000, CRC(edcb2a43) SHA1(f0bcfcc749ca0267f85bf9838164869912944d00) , ROM_SKIP(6)|ROM_GROUPWORD )
1123
1124 ROM_REGION( 0x400000, REGION_SOUND1, 0 ) /* Sega PCM sound data */
1125 ROM_LOAD("mpr15551.bin", 0x000000, 0x200000, CRC(4894bc73) SHA1(351f5c03fb430fd87df915dfe3a377b5ada622c4) )
1126 ROM_LOAD("mpr15552.bin", 0x200000, 0x200000, CRC(1c4b5e73) SHA1(50a8e9a200575a3522a51bf094aa0e87b90bb0a3) )
1127
1128 ROM_REGION( 0x20000, REGION_GFX3, 0 ) /* FG tiles */
1129 ROM_END
1130
1131 ROM_START( harddunk )
1132 ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* v60 code */
1133 ROM_LOAD32_WORD( "ep16512.37", 0x000000, 0x40000, CRC(1a7de085) SHA1(2e0dac1f7715089b7f6b1035c859ffe2d674932f) )
1134 ROM_RELOAD( 0x080000, 0x040000 )
1135 /* the following is the same as 16509.40 but with a different name, unusual for Sega */
1136 ROM_LOAD32_WORD( "ep16513.40", 0x000002, 0x40000, CRC(603dee75) SHA1(32ae964a4b57d470b4900cca6e06329f1a75a6e6) )
1137 ROM_RELOAD( 0x080002, 0x040000 )
1138
1139 ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
1140 ROM_LOAD("16505", 0x00000, 0x20000, CRC(eeb90a07) SHA1(d1c2132897994b2e85fd5a97222b9fcd61bc421e) )
1141 ROM_RELOAD( 0x10000, 0x20000 )
1142
1143 ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1144 ROM_LOAD16_BYTE( "16503", 0x000000, 0x080000, CRC(ac1b6f1a) SHA1(56482931adf7fe551acf796b74cd8af3773d4fef) )
1145 ROM_LOAD16_BYTE( "16504", 0x000001, 0x080000, CRC(7c61fcd8) SHA1(ca4354f90fada752bf11ee22a7798a8aa22b1c61) )
1146
1147 ROM_REGION( 0x1000000, REGION_GFX2, 0 ) /* sprites */
1148 ROMX_LOAD( "16495", 0x000000, 0x200000, CRC(6e5f26be) SHA1(146761072bbed08f4a9df8a474b34fab61afaa4f) , ROM_SKIP(6)|ROM_GROUPWORD )
1149 ROMX_LOAD( "16497", 0x000002, 0x200000, CRC(42ab5859) SHA1(f50c51eb81186aec5f747ecab4c5c928f8701afc) , ROM_SKIP(6)|ROM_GROUPWORD )
1150 ROMX_LOAD( "16499", 0x000004, 0x200000, CRC(a290ea36) SHA1(2503b44174f23a9d323caab86553977d1d6d9c94) , ROM_SKIP(6)|ROM_GROUPWORD )
1151 ROMX_LOAD( "16501", 0x000006, 0x200000, CRC(f1566620) SHA1(bcf31d11ee669d5afc7dc22c42fa59f4e48c1f50) , ROM_SKIP(6)|ROM_GROUPWORD )
1152 ROMX_LOAD( "16496", 0x800000, 0x200000, CRC(d9d27247) SHA1(d211623478516ed1b89ab16a7fc7969954c5e353) , ROM_SKIP(6)|ROM_GROUPWORD )
1153 ROMX_LOAD( "16498", 0x800002, 0x200000, CRC(c022a991) SHA1(a660a20692f4d9ba7be73577328f69f109be5e47) , ROM_SKIP(6)|ROM_GROUPWORD )
1154 ROMX_LOAD( "16500", 0x800004, 0x200000, CRC(452c0be3) SHA1(af87ce4618bae2d791c1baed34ba7f853af664ff) , ROM_SKIP(6)|ROM_GROUPWORD )
1155 ROMX_LOAD( "16502", 0x800006, 0x200000, CRC(ffc3147e) SHA1(12d882dec3098674d27058a8009e8778555f477a) , ROM_SKIP(6)|ROM_GROUPWORD )
1156
1157 ROM_REGION( 0x400000, REGION_SOUND1, 0 ) /* Sega PCM sound data */
1158 ROM_LOAD("mp16506.1", 0x000000, 0x200000, CRC(e779f5ed) SHA1(462d1bbe8bb12a0c5a6d6c613c720b26ec21cb25) )
1159 ROM_LOAD("mp16507.2", 0x200000, 0x200000, CRC(31e068d3) SHA1(9ac88b15af441fb3b31ce759c565b60a09039571) )
1160
1161 ROM_REGION( 0x20000, REGION_GFX3, 0 ) /* FG tiles */
1162 ROM_END
1163
1164 ROM_START( harddunj )
1165 ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* v60 code */
1166 ROM_LOAD32_WORD( "16508.37", 0x000000, 0x40000, CRC(b3713be5) SHA1(8123638a838e41fcc0d32e14382421b521eff94f) )
1167 ROM_RELOAD( 0x080000, 0x040000 )
1168 ROM_LOAD32_WORD( "16509.40", 0x000002, 0x40000, CRC(603dee75) SHA1(32ae964a4b57d470b4900cca6e06329f1a75a6e6) )
1169 ROM_RELOAD( 0x080002, 0x040000 )
1170
1171 ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
1172 ROM_LOAD("16505", 0x00000, 0x20000, CRC(eeb90a07) SHA1(d1c2132897994b2e85fd5a97222b9fcd61bc421e) )
1173 ROM_RELOAD( 0x10000, 0x20000 )
1174
1175 ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1176 ROM_LOAD16_BYTE( "16503", 0x000000, 0x080000, CRC(ac1b6f1a) SHA1(56482931adf7fe551acf796b74cd8af3773d4fef) )
1177 ROM_LOAD16_BYTE( "16504", 0x000001, 0x080000, CRC(7c61fcd8) SHA1(ca4354f90fada752bf11ee22a7798a8aa22b1c61) )
1178
1179 ROM_REGION( 0x1000000, REGION_GFX2, 0 ) /* sprites */
1180 ROMX_LOAD( "16495", 0x000000, 0x200000, CRC(6e5f26be) SHA1(146761072bbed08f4a9df8a474b34fab61afaa4f) , ROM_SKIP(6)|ROM_GROUPWORD )
1181 ROMX_LOAD( "16497", 0x000002, 0x200000, CRC(42ab5859) SHA1(f50c51eb81186aec5f747ecab4c5c928f8701afc) , ROM_SKIP(6)|ROM_GROUPWORD )
1182 ROMX_LOAD( "16499", 0x000004, 0x200000, CRC(a290ea36) SHA1(2503b44174f23a9d323caab86553977d1d6d9c94) , ROM_SKIP(6)|ROM_GROUPWORD )
1183 ROMX_LOAD( "16501", 0x000006, 0x200000, CRC(f1566620) SHA1(bcf31d11ee669d5afc7dc22c42fa59f4e48c1f50) , ROM_SKIP(6)|ROM_GROUPWORD )
1184 ROMX_LOAD( "16496", 0x800000, 0x200000, CRC(d9d27247) SHA1(d211623478516ed1b89ab16a7fc7969954c5e353) , ROM_SKIP(6)|ROM_GROUPWORD )
1185 ROMX_LOAD( "16498", 0x800002, 0x200000, CRC(c022a991) SHA1(a660a20692f4d9ba7be73577328f69f109be5e47) , ROM_SKIP(6)|ROM_GROUPWORD )
1186 ROMX_LOAD( "16500", 0x800004, 0x200000, CRC(452c0be3) SHA1(af87ce4618bae2d791c1baed34ba7f853af664ff) , ROM_SKIP(6)|ROM_GROUPWORD )
1187 ROMX_LOAD( "16502", 0x800006, 0x200000, CRC(ffc3147e) SHA1(12d882dec3098674d27058a8009e8778555f477a) , ROM_SKIP(6)|ROM_GROUPWORD )
1188
1189 ROM_REGION( 0x400000, REGION_SOUND1, 0 ) /* Sega PCM sound data */
1190 ROM_LOAD("mp16506.1", 0x000000, 0x200000, CRC(e779f5ed) SHA1(462d1bbe8bb12a0c5a6d6c613c720b26ec21cb25) )
1191 ROM_LOAD("mp16507.2", 0x200000, 0x200000, CRC(31e068d3) SHA1(9ac88b15af441fb3b31ce759c565b60a09039571) )
1192
1193 ROM_REGION( 0x20000, REGION_GFX3, 0 ) /* FG tiles */
1194 ROM_END
1195
1196 ROM_START( scross )
1197 ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* v60 code */
1198 ROM_LOAD32_WORD( "epr15093.bin", 0x000000, 0x040000, CRC(2adc7a4b) SHA1(dca71f00d94898c0758394704d819e13482bf120) )
1199 ROM_RELOAD( 0x080000, 0x040000 )
1200 ROM_LOAD32_WORD( "epr15094.bin", 0x000002, 0x040000, CRC(bbb0ae73) SHA1(0d8837706405f301adf8fa85c8d4813d7600af98) )
1201 ROM_RELOAD( 0x080002, 0x040000 )
1202
1203 /* v60 data */
1204 ROM_LOAD32_WORD( "epr15018.bin", 0x100000, 0x080000, CRC(3a98385e) SHA1(8088d337655030c28e290da4bbf44cb647dab66c) )
1205 ROM_LOAD32_WORD( "epr15019.bin", 0x100002, 0x080000, CRC(8bf4ac83) SHA1(e594d9d9b42d0765ed8a20a40b7dd92b75124d34) )
1206
1207 ROM_REGION( 0x90000, REGION_CPU2, 0 ) /* sound CPU */
1208 ROM_LOAD("epr15192.bin", 0x00000, 0x20000, CRC(7524290b) SHA1(ee58be2c0c4293ee19622b96ca493f4ce4da0038) )
1209 ROM_RELOAD( 0x10000, 0x20000 )
1210
1211 ROM_REGION( 0x400000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1212 /* 1ST AND 2ND HALF IDENTICAL (all roms) */
1213 ROM_LOAD16_BYTE( "epr15020.bin", 0x000000, 0x200000, CRC(65afea2f) SHA1(ad573727398bfac8e94f321be84b60e5690bfba6) )
1214 ROM_LOAD16_BYTE( "epr15021.bin", 0x000001, 0x200000, CRC(27bc6969) SHA1(d6bb446becb2d36b73bca5055357a43b837afc0a) )
1215
1216 ROM_REGION( 0x1000000, REGION_GFX2, 0 ) /* sprites */
1217 /* 1ST AND 2ND HALF IDENTICAL (all roms) */
1218 ROMX_LOAD( "epr15022.bin", 0x000000, 0x200000, CRC(09ca9608) SHA1(cbd0138c1c7811d42b051fed6a7e3526cc4e457f) , ROM_SKIP(6)|ROM_GROUPWORD )
1219 ROMX_LOAD( "epr15024.bin", 0x000002, 0x200000, CRC(0dc920eb) SHA1(d24d637aa0dcd3bae779ef7e12663df81667dbf7) , ROM_SKIP(6)|ROM_GROUPWORD )
1220 ROMX_LOAD( "epr15026.bin", 0x000004, 0x200000, CRC(67637c37) SHA1(7c250e7e9dd5c07da4fa35bacdfcecd5e8fa4ec7) , ROM_SKIP(6)|ROM_GROUPWORD )
1221 ROMX_LOAD( "epr15028.bin", 0x000006, 0x200000, CRC(9929abdc) SHA1(34b6624ddd3a0aedec0a2b433643a37f745ec66d) , ROM_SKIP(6)|ROM_GROUPWORD )
1222 ROMX_LOAD( "epr15023.bin", 0x800000, 0x200000, CRC(0e42a2bb) SHA1(503214caf5fa9a2324b61e04f378fd1a790322df) , ROM_SKIP(6)|ROM_GROUPWORD )
1223 ROMX_LOAD( "epr15025.bin", 0x800002, 0x200000, CRC(0c677fc6) SHA1(fc2207008417072e7ee91f722797d827e150ce2d) , ROM_SKIP(6)|ROM_GROUPWORD )
1224 ROMX_LOAD( "epr15027.bin", 0x800004, 0x200000, CRC(d6d077f9) SHA1(928cefae9ae58239fbffb1dcee282c6ac1e661fe) , ROM_SKIP(6)|ROM_GROUPWORD )
1225 ROMX_LOAD( "epr15029.bin", 0x800006, 0x200000, CRC(707af749) SHA1(fae5325c983df3cf198878220ad88d47339ac512) , ROM_SKIP(6)|ROM_GROUPWORD )
1226
1227 ROM_REGION( 0x400000, REGION_SOUND1, 0 ) /* Sega PCM sound data */
1228 /* 1ST AND 2ND HALF IDENTICAL (all roms, are these OK?) */
1229 ROM_LOAD("epr15031.bin", 0x000000, 0x200000, CRC(663a7fd2) SHA1(b4393a687225b075db21960d19a6ddd7a9d7d086) )
1230 ROM_LOAD("epr15032.bin", 0x200000, 0x200000, CRC(cb709f3d) SHA1(3962c8b5907d1f8f611f58ddac693cc47364a79c) )
1231
1232 ROM_REGION( 0x20000, REGION_GFX3, 0 ) /* FG tiles */
1233 ROM_END
1234
1235 ROM_START( titlef )
1236 ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* v60 code */
1237 ROM_LOAD32_WORD( "epr15388.37", 0x000000, 0x40000, CRC(db1eefbd) SHA1(7059a1d5c9364d836c1d922071a108cbde661e0a) )
1238 ROM_RELOAD( 0x080000, 0x040000 )
1239 ROM_LOAD32_WORD( "epr15389.40", 0x000002, 0x40000, CRC(da9f60a3) SHA1(87a7bea04e51e3c241871e83ff7322c6a07bd106) )
1240 ROM_RELOAD( 0x080002, 0x040000 )
1241
1242 ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
1243 ROM_LOAD("epr15384.31", 0x00000, 0x20000, CRC(0f7d208d) SHA1(5425120480f813210fae28951e8bfd5acb08ca53) )
1244 ROM_RELOAD( 0x10000, 0x20000 )
1245
1246 ROM_REGION( 0x400000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1247 ROM_LOAD16_BYTE( "mpr15381.3", 0x000000, 0x200000, CRC(162cc4d6) SHA1(2369d3d76ab5ef8f033aa45530ab957f0e5ff028) )
1248 ROM_LOAD16_BYTE( "mpr15382.11", 0x000001, 0x200000, CRC(fd03a130) SHA1(040c36383ef5d8298af714958cd5b0a4c7556ae7) )
1249
1250 ROM_REGION( 0x1000000, REGION_GFX2, 0 ) /* sprites */
1251 ROMX_LOAD( "mpr15379.14", 0x000000, 0x200000, CRC(e5c74b11) SHA1(67e4460efe5dcd88ffc12024b255efc843e6a8b5) , ROM_SKIP(6)|ROM_GROUPWORD )
1252 ROMX_LOAD( "mpr15375.15", 0x000002, 0x200000, CRC(046a9b50) SHA1(2b4c53f2a0264835cb7197daa9b3461c212541e8) , ROM_SKIP(6)|ROM_GROUPWORD )
1253 ROMX_LOAD( "mpr15371.10", 0x000004, 0x200000, CRC(999046c6) SHA1(37ce4e8aaf537b5366eacabaf36e4477b5624121) , ROM_SKIP(6)|ROM_GROUPWORD )
1254 ROMX_LOAD( "mpr15373.38", 0x000006, 0x200000, CRC(9b3294d9) SHA1(19542f14ce09753385a44098dfd1aaf331e7af0e) , ROM_SKIP(6)|ROM_GROUPWORD )
1255 ROMX_LOAD( "mpr15380.22", 0x800000, 0x200000, CRC(6ea0e58d) SHA1(1c4b761522157b0b9d086181ba6f6994879d8fdf) , ROM_SKIP(6)|ROM_GROUPWORD )
1256 ROMX_LOAD( "mpr15376.23", 0x800002, 0x200000, CRC(de3e05c5) SHA1(cac0d04ecd37e5836d246c0809bcfc11430df591) , ROM_SKIP(6)|ROM_GROUPWORD )
1257 ROMX_LOAD( "mpr15372.18", 0x800004, 0x200000, CRC(c187c36a) SHA1(bb55c2a768a43ef19a7847a4aa113523fee26c20) , ROM_SKIP(6)|ROM_GROUPWORD )
1258 ROMX_LOAD( "mpr15374.41", 0x800006, 0x200000, CRC(e026aab0) SHA1(75dfaef6d50c3d1d7f27aa5e44fcbc0ff2173c6f) , ROM_SKIP(6)|ROM_GROUPWORD )
1259
1260 ROM_REGION( 0x300000, REGION_SOUND1, 0 ) /* Sega PCM sound data */
1261 ROM_LOAD("mpr15385.1", 0x000000, 0x200000, CRC(5a9b0aa0) SHA1(d208aa165f9eea05e3b8c3f406ff44374e4f6887) )
1262
1263 ROM_REGION( 0x20000, REGION_GFX3, 0 ) /* FG tiles */
1264 ROM_END
1265
1266 /* boot, and are playable, some gfx problems*/
1267 GAMEX( 1992, orunners, 0, multi32, orunners, orunners, ROT0, "Sega", "Outrunners (US)", GAME_IMPERFECT_GRAPHICS )
1268 GAMEX( 1994, harddunk, 0, multi32, harddunk, harddunk, ROT0, "Sega", "Hard Dunk (World)", GAME_IMPERFECT_GRAPHICS )
1269 GAMEX( 1994, harddunj, harddunk, multi32, harddunk, harddunk, ROT0, "Sega", "Hard Dunk (Japan)", GAME_IMPERFECT_GRAPHICS )
1270 GAMEX( 1992, scross, 0, scross, scross, orunners, ROT0, "Sega", "Stadium Cross (World)", GAME_IMPERFECT_GRAPHICS )
1271 GAMEX( 1992, titlef, 0, multi32, titlef, titlef, ROT0, "Sega", "Title Fight (World)", GAME_IMPERFECT_GRAPHICS )
1272