1 /* System18 Hardware
2 **
3 ** MC68000 + Z80
4 ** 2xYM3438 + Custom PCM
5 **
6 ** Alien Storm
7 ** Bloxeed
8 ** Clutch Hitter
9 ** D.D. Crew
10 ** Laser Ghost
11 ** Michael Jackson's Moonwalker
12 ** Shadow Dancer
13 ** Search Wally
14 */
15
16 /*
17
18 Changes:
19 04/28/04 Charles MacDonald
20 - Added MSM5205 sample playback to shdancbl.
21
22 03/17/04
23 - Added Where's Wally? (wwally) It's encrypted and unplayable.
24 - Moved Ace Attacker to system16.c (it's a not a System 18 game)
25 - Fixed System 18 sample ROM banking. This doesn't help the current working games, but will support others when/if they are decrypted.
26 - Fixed RF5C68A clock (7.15 MHz -> 8.00 MHz).
27 - Fixed Z80 clock (8.192 MHz -> 8.00 MHz).
28 - Cleaned up shdancbl sound hardware a little.
29
30 03/12/04
31 - Added preliminary VDP emulation to fix shdancer tile banking and VDP memory tests in other games.
32 - Added I/O chip emulation, fixes blanked screen at end of shdancer memory test, coin meter/lockout implemented.
33 - Cleaned up shdancer,shdancrj,shdancbl drivers.
34 - Added Shadow Dancer (Rev.B) driver (shdancrb).
35 - Added sound emulation to shdancbl.
36
37 To do:
38 - moonwlkb VDP test says IC68 (315-5313) is bad, but the test code seems to print the 'bad' message always, and it
39 doesn't look like that VDP layer is supposed to cover the text (indicating success).
40 - astormbl writes to mirrored sprite RAM at $141000.
41 - moonwlkb writes to mirrored palette RAM at $841000.
42
43 shdancbl:
44 - Sampled sound needs to be implemented.
45 - ROM test fails. Maybe the original game code was not patched to fix this, rather than the ROMs really being bad.
46 - Supporting the screen blanking control at $E4001D causes some problems after coin-up.
47 - Player 1 inputs map to player 2.
48 - Misplaced tilemap horizontal scrolling in several locations:
49 Level map screen, bonus stage, train level, sewer level, etc.
50 - Bad sprites in some specific cases:
51 - Green shield-throwing man, animation when dog attacks enemy, fade-in when ninjas appear, etc.
52 - Missing "Shadow Dancer" logo on title screen if you insert a coin instead of watching the intro sequence.
53
54 I very carefully checked the sprite ROMs to make sure they are loaded correctly, and it seems that for the bad
55 sprites listed above, one of the even/odd pair is correct while the other is not. The correct data isn't present
56 in any of the ROMs I think. Maybe they need to be redumped, or it's an actual problem of the bootleg?
57
58 Other notes:
59 - The sys18_sound_info structure holds the offset to each ROM in the REGION_CPU2 space as well as a mask to be applied
60 to the 8K bank offset into each ROM. For an unused ROM, the mask should be set to zero.
61
62 */
63
64 #include "driver.h"
65 #include "vidhrdw/generic.h"
66 #include "cpu/z80/z80.h"
67 #include "system16.h"
68
69 /***************************************************************************/
70
71 bool moonwalker_playing = false;
72 bool moon_diddy = false;
73 int mj_current_music = 0;
74
75 const char *const moonwalker_samples_set_names[] =
76 {
77 "*moonwalk",
78 "bad-01",
79 "bad-02",
80 "smoothcriminal-01",
81 "smoothcriminal-02",
82 "beatit-01",
83 "beatit-02",
84 "thriller-01",
85 "thriller-02",
86 "billiejean-01",
87 "billiejean-02",
88 "title-01",
89 "title-02",
90 0
91 };
92
93 static struct Samplesinterface moonwalker_samples_set =
94 {
95 2, // 2 channels
96 100, // volume
97 moonwalker_samples_set_names
98 };
99
100
WRITE16_HANDLER(sys18_refreshenable_w)101 static WRITE16_HANDLER( sys18_refreshenable_w )
102 {
103 if(ACCESSING_LSB)
104 {
105 sys16_refreshenable = data & 0x02;
106 }
107 }
108
WRITE16_HANDLER(sys18_tilebank_w)109 static WRITE16_HANDLER( sys18_tilebank_w )
110 {
111 if(ACCESSING_LSB)
112 {
113 sys16_tile_bank0 = (data >> 0) & 0x0F;
114 sys16_tile_bank1 = (data >> 4) & 0x0F;
115 }
116 }
117
118 /***************************************************************************/
119
set_fg_page(int data)120 static void set_fg_page( int data ){
121 sys16_fg_page[0] = data>>12;
122 sys16_fg_page[1] = (data>>8)&0xf;
123 sys16_fg_page[2] = (data>>4)&0xf;
124 sys16_fg_page[3] = data&0xf;
125 }
126
set_bg_page(int data)127 static void set_bg_page( int data ){
128 sys16_bg_page[0] = data>>12;
129 sys16_bg_page[1] = (data>>8)&0xf;
130 sys16_bg_page[2] = (data>>4)&0xf;
131 sys16_bg_page[3] = data&0xf;
132 }
133
set_fg2_page(int data)134 static void set_fg2_page( int data ){
135 sys16_fg2_page[0] = data>>12;
136 sys16_fg2_page[1] = (data>>8)&0xf;
137 sys16_fg2_page[2] = (data>>4)&0xf;
138 sys16_fg2_page[3] = data&0xf;
139 }
140
set_bg2_page(int data)141 static void set_bg2_page( int data ){
142 sys16_bg2_page[0] = data>>12;
143 sys16_bg2_page[1] = (data>>8)&0xf;
144 sys16_bg2_page[2] = (data>>4)&0xf;
145 sys16_bg2_page[3] = data&0xf;
146 }
147
148 /***************************************************************************/
149 /*
150 Sound hardware for Shadow Dancer (Datsu bootleg)
151
152 Z80 memory map
153 0000-7FFF : ROM (fixed)
154 8000-BFFF : ROM (banked)
155 C000-C007 : ?
156 C400 : Sound command (r/o)
157 C800 : MSM5205 sample data output (w/o)
158 CC00-CC03 : YM3438 #1
159 D000-D003 : YM3438 #2
160 D400 : ROM bank control (w/o)
161 DF00-DFFF : ?
162 E000-FFFF : Work RAM
163
164 The unused memory locations and I/O port access seem to be remnants of the original code that were not patched out:
165
166 - Program accesses RF5C68A channel registes at $C000-$C007
167 - Program clears RF5C68A wave memory at $DF00-$DFFF
168 - Program writes to port $A0 to access sound ROM banking control latch
169 - Program reads port $C0 to access sound command
170
171 Interrupts
172
173 IRQ = Triggered when 68000 writes sound command. Z80 reads from $C400.
174 NMI = Triggered when second nibble of sample data has been output to the MSM5205.
175 Program copies sample data from ROM bank to the MSM5205 sample data buffer at $C800.
176
177 ROM banking seems correct.
178 It doesn't look like there's a way to reset the MSM5205, unless that's related to bit 7 of the
179 ROM bank control register.
180 MSM5205 clock speed hasn't been confirmed.
181 */
182 /***************************************************************************/
183
184 static int sample_buffer = 0;
185 static int sample_select = 0;
186
WRITE_HANDLER(shdancbl_msm5205_data_w)187 static WRITE_HANDLER( shdancbl_msm5205_data_w )
188 {
189 sample_buffer = data;
190 }
191
shdancbl_msm5205_callback(int data)192 static void shdancbl_msm5205_callback(int data)
193 {
194 MSM5205_data_w(0, sample_buffer & 0x0F);
195 sample_buffer >>= 4;
196 sample_select ^= 1;
197 if(sample_select == 0)
198 cpu_set_nmi_line(1, PULSE_LINE);
199 }
200
201 static struct MSM5205interface shdancbl_msm5205_interface =
202 {
203 1,
204 200000, /* 200KHz */
205 { shdancbl_msm5205_callback },
206 { MSM5205_S48_4B},
207 { 80 }
208 };
209
210 UINT8* shdancbl_soundbank_ptr = NULL; /* Pointer to currently selected portion of ROM */
211
WRITE16_HANDLER(sound_command_irq_w)212 static WRITE16_HANDLER( sound_command_irq_w ){
213 if( ACCESSING_LSB ){
214 soundlatch_w( 0,data&0xff );
215 cpu_set_irq_line( 1, 0, HOLD_LINE );
216 }
217 }
218
READ_HANDLER(shdancbl_soundbank_r)219 static READ_HANDLER( shdancbl_soundbank_r )
220 {
221 if(shdancbl_soundbank_ptr) return shdancbl_soundbank_ptr[offset & 0x3FFF];
222 return 0xFF;
223 }
224
WRITE_HANDLER(shdancbl_bankctrl_w)225 static WRITE_HANDLER( shdancbl_bankctrl_w )
226 {
227 UINT8 *mem = memory_region(REGION_CPU2);
228
229 switch(data)
230 {
231 case 0:
232 shdancbl_soundbank_ptr = &mem[0x18000]; /* IC45 8000-BFFF */
233 break;
234 case 1:
235 shdancbl_soundbank_ptr = &mem[0x1C000]; /* IC45 C000-FFFF */
236 break;
237 case 2:
238 shdancbl_soundbank_ptr = &mem[0x20000]; /* IC46 0000-3FFF */
239 break;
240 case 3:
241 shdancbl_soundbank_ptr = &mem[0x24000]; /* IC46 4000-7FFF */
242 break;
243 default:
244 shdancbl_soundbank_ptr = NULL;
245 log_cb(RETRO_LOG_DEBUG, LOGPRE "Invalid bank setting %02X (%04X)\n", data, activecpu_get_pc());
246 break;
247 }
248 }
249
MEMORY_READ_START(shdancbl_sound_readmem)250 static MEMORY_READ_START( shdancbl_sound_readmem )
251 { 0x0000, 0x7fff, MRA_ROM },
252 { 0x8000, 0xbfff, shdancbl_soundbank_r },
253 { 0xc400, 0xc400, soundlatch_r },
254 { 0xcc00, 0xcc00, YM2612_status_port_0_A_r },
255 { 0xcc01, 0xcc01, YM2612_status_port_0_B_r },
256 { 0xcc02, 0xcc02, YM2612_status_port_0_B_r },
257 { 0xcc03, 0xcc03, YM2612_status_port_0_B_r },
258 { 0xd000, 0xd000, YM2612_status_port_1_A_r },
259 { 0xd001, 0xd001, YM2612_status_port_1_B_r },
260 { 0xd002, 0xd002, YM2612_status_port_1_B_r },
261 { 0xd003, 0xd003, YM2612_status_port_1_B_r },
262 { 0xdf00, 0xdfff, MRA_NOP },
263 { 0xe000, 0xffff, MRA_RAM },
264 MEMORY_END
265
266 static MEMORY_WRITE_START( shdancbl_sound_writemem )
267 { 0x0000, 0x7fff, MWA_ROM },
268 { 0x8000, 0xbfff, MWA_NOP }, /* ROM bank */
269 { 0xc000, 0xc00f, MWA_NOP },
270 { 0xc800, 0xc800, shdancbl_msm5205_data_w },
271 { 0xcc00, 0xcc00, YM2612_control_port_0_A_w },
272 { 0xcc01, 0xcc01, YM2612_data_port_0_A_w },
273 { 0xcc02, 0xcc02, YM2612_control_port_0_B_w },
274 { 0xcc03, 0xcc03, YM2612_data_port_0_B_w },
275 { 0xd000, 0xd000, YM2612_control_port_1_A_w },
276 { 0xd001, 0xd001, YM2612_data_port_1_A_w },
277 { 0xd002, 0xd002, YM2612_control_port_1_B_w },
278 { 0xd003, 0xd003, YM2612_data_port_1_B_w },
279 { 0xd400, 0xd400, shdancbl_bankctrl_w },
280 { 0xdf00, 0xdfff, MWA_NOP },
281 { 0xe000, 0xffff, MWA_RAM },
282 MEMORY_END
283
284 static PORT_READ_START( shdancbl_sound_readport )
285 { 0xc0, 0xdf, MRA_NOP },
286 PORT_END
287
288 static PORT_WRITE_START( shdancbl_sound_writeport )
289 { 0xa0, 0xbf, MWA_NOP },
290 PORT_END
291
292 /***************************************************************************/
293
294 static UINT8 *sys18_SoundMemBank;
295
READ_HANDLER(system18_bank_r)296 static READ_HANDLER( system18_bank_r )
297 {
298 if(sys18_SoundMemBank)
299 return sys18_SoundMemBank[offset];
300 return 0xFF;
301 }
302
MEMORY_READ_START(sound_readmem_18)303 static MEMORY_READ_START( sound_readmem_18 )
304 { 0x0000, 0x9fff, MRA_ROM },
305 { 0xa000, 0xbfff, system18_bank_r },
306 /**** D/A register ****/
307 { 0xd000, 0xdfff, RF5C68_r },
308 { 0xe000, 0xffff, MRA_RAM },
309 MEMORY_END
310
311 static MEMORY_WRITE_START( sound_writemem_18 )
312 { 0x0000, 0xbfff, MWA_ROM },
313 /**** D/A register ****/
314 { 0xc000, 0xc008, RF5C68_reg_w },
315 { 0xd000, 0xdfff, RF5C68_w },
316 { 0xe000, 0xffff, MWA_RAM }, //??
317 MEMORY_END
318
319
320 static WRITE_HANDLER( sys18_soundbank_w )
321 {
322 UINT8 *mem = memory_region(REGION_CPU2);
323 int rom = (data >> 6) & 3;
324 int bank = (data & 0x3f);
325 int mask = sys18_sound_info[rom*2+0];
326 int offs = sys18_sound_info[rom*2+1];
327 if(mask) sys18_SoundMemBank = &mem[0x10000 + offs + ((bank & mask) << 13)];
328 else sys18_SoundMemBank = NULL;
329 }
330
331
PORT_READ_START(sound_readport_18)332 static PORT_READ_START( sound_readport_18 )
333 { 0x80, 0x80, YM2612_status_port_0_A_r },
334 // { 0x82, 0x82, YM2612_status_port_0_B_r },
335 // { 0x90, 0x90, YM2612_status_port_1_A_r },
336 // { 0x92, 0x92, YM2612_status_port_1_B_r },
337 { 0xc0, 0xc0, soundlatch_r },
338 PORT_END
339
340 static PORT_WRITE_START( sound_writeport_18 )
341 { 0x80, 0x80, YM2612_control_port_0_A_w },
342 { 0x81, 0x81, YM2612_data_port_0_A_w },
343 { 0x82, 0x82, YM2612_control_port_0_B_w },
344 { 0x83, 0x83, YM2612_data_port_0_B_w },
345 { 0x90, 0x90, YM2612_control_port_1_A_w },
346 { 0x91, 0x91, YM2612_data_port_1_A_w },
347 { 0x92, 0x92, YM2612_control_port_1_B_w },
348 { 0x93, 0x93, YM2612_data_port_1_B_w },
349 { 0xa0, 0xa0, sys18_soundbank_w },
350 PORT_END
351
352 static WRITE16_HANDLER( sound_command_nmi_w ){
353
354 if( ACCESSING_LSB ){
355 if(moonwalker_playing && options.use_samples) {
356 int a = 0;
357 int o_max_samples = 12;
358 int sa_left = 0;
359 int sa_right = 1;
360 int mj_fade = 30;
361 bool sa_loop = 1; // --> 1 == loop, 0 == do not loop.
362 bool sa_play_sample = false;
363 bool sa_play_original = false;
364 bool moonwalker_do_nothing = false;
365 bool moonwalker_stop_samples = false;
366 bool moonwalker_play_default = false;
367
368 switch (data) {
369 // Reset music. Title screen.
370 case 0x0:
371 moonwalker_stop_samples = true;
372 mj_current_music = 0;
373 moon_diddy = false;
374
375 break;
376
377 // Title screen stuff.
378 case 0x85:
379 if(mj_current_music != 85) {
380 mj_current_music = 85;
381 sa_loop = 0;
382 sa_play_sample = true;
383 sa_left = 10;
384 sa_right = 11;
385 }
386 else
387 moonwalker_do_nothing = true;
388
389 break;
390
391 // Title screen magic.
392 case 0x86:
393 if(mj_current_music == 85)
394 moonwalker_do_nothing = true;
395 else
396 sa_play_original = true;
397
398 break;
399
400 // Title screen magic.
401 case 0x87:
402 if(mj_current_music == 85)
403 moonwalker_do_nothing = true;
404 else
405 sa_play_original = true;
406
407 break;
408
409 // Stage 1 and Stage 5. Bad.
410 case 0x81:
411 if(mj_current_music != 81) {
412 mj_current_music = 81;
413 sa_play_sample = true;
414 sa_left = 0;
415 sa_right = 1;
416 }
417 else
418 moonwalker_do_nothing = true;
419
420 break;
421
422 // Stage 2. Smooth Criminal.
423 case 0x82:
424 if(mj_current_music != 82) {
425 mj_current_music = 82;
426 sa_play_sample = true;
427 sa_left = 2;
428 sa_right = 3;
429 }
430 else
431 moonwalker_do_nothing = true;
432 break;
433
434 // Stage 3. Beat It.
435 case 0x84:
436 if(mj_current_music != 83) {
437 mj_current_music = 83;
438 sa_play_sample = true;
439 sa_left = 4;
440 sa_right = 5;
441 }
442 else
443 moonwalker_do_nothing = true;
444 break;
445
446 // Stage 4. Thriller.
447 case 0x8A:
448 if(mj_current_music != 8) {
449 mj_current_music = 8;
450 sa_play_sample = true;
451 sa_left = 6;
452 sa_right = 7;
453 }
454 else
455 moonwalker_do_nothing = true;
456 break;
457
458 // Ending. Billie Jean.
459 case 0x89:
460 if(mj_current_music != 89) {
461 mj_current_music = 89;
462 sa_play_sample = true;
463 sa_left = 8;
464 sa_right = 9;
465 }
466 else
467 moonwalker_do_nothing = true;
468 break;
469
470 // First boss music
471 case 0x8B:
472 moonwalker_do_nothing = true;
473 break;
474
475 // Second boss music
476 case 0x83:
477 moonwalker_do_nothing = true;
478 break;
479
480 // Third boss music
481 case 0x8E:
482 moonwalker_do_nothing = true;
483 break;
484
485 // Special move music diddy.
486 case 0xFA:
487 moonwalker_play_default = true;
488 moon_diddy = true;
489
490 // While the special move is playing, lets adjust the level music volume lower temporary to 30%.
491 if(sample_playing(0) == 0 && sample_playing(1) == 1) {
492 sample_set_stereo_volume(1, mj_fade, mj_fade);
493 }
494 else if(sample_playing(0) == 1 && sample_playing(1) == 0) {
495 sample_set_stereo_volume(0, mj_fade, mj_fade);
496 }
497 else if(sample_playing(0) == 1 && sample_playing(1) == 1) {
498 sample_set_stereo_volume(0, mj_fade, 0);
499 sample_set_stereo_volume(1, 0, mj_fade);
500 }
501 break;
502
503 // Special move music diddy.
504 case 0xFB:
505 moonwalker_play_default = true;
506 moon_diddy = true;
507
508 // While the special move is playing, lets adjust the level music volume lower temporary to 30%.
509 if(sample_playing(0) == 0 && sample_playing(1) == 1) {
510 sample_set_stereo_volume(1, mj_fade, mj_fade);
511 }
512 else if(sample_playing(0) == 1 && sample_playing(1) == 0) {
513 sample_set_stereo_volume(0, mj_fade, mj_fade);
514 }
515 else if(sample_playing(0) == 1 && sample_playing(1) == 1) {
516 sample_set_stereo_volume(0, mj_fade, 0);
517 sample_set_stereo_volume(1, 0, mj_fade);
518 }
519 break;
520
521 // Special move music diddy.
522 case 0xF6:
523 moonwalker_play_default = true;
524 moon_diddy = true;
525
526 // While the special move is playing, lets adjust the level music volume lower temporary to 30%.
527 if(sample_playing(0) == 0 && sample_playing(1) == 1) {
528 sample_set_stereo_volume(1, mj_fade, mj_fade);
529 }
530 else if(sample_playing(0) == 1 && sample_playing(1) == 0) {
531 sample_set_stereo_volume(0, mj_fade, mj_fade);
532 }
533 else if(sample_playing(0) == 1 && sample_playing(1) == 1) {
534 sample_set_stereo_volume(0, mj_fade, 0);
535 sample_set_stereo_volume(1, 0, mj_fade);
536 }
537 break;
538
539 // Special move "owww" sound effect. This plays after the special move has always finished.
540 case 0xC3:
541 moonwalker_play_default = true;
542
543 if(moon_diddy == true) {
544 moon_diddy = false;
545
546 // The special move is finished, lets return the level music volume back to 100%.
547 if(sample_playing(0) == 0 && sample_playing(1) == 1) {
548 sample_set_stereo_volume(1, 100, 100);
549 }
550 else if(sample_playing(0) == 1 && sample_playing(1) == 0) {
551 sample_set_stereo_volume(0, 100, 100);
552 }
553 else if(sample_playing(0) == 1 && sample_playing(1) == 1) {
554 sample_set_stereo_volume(0, 100, 0);
555 sample_set_stereo_volume(1, 0, 100);
556 }
557 }
558 break;
559
560 default:
561 soundlatch_w( 0,data&0xff );
562 cpu_set_nmi_line(1, PULSE_LINE);
563
564 break;
565 }
566
567 if(sa_play_sample == true) {
568 a = 0;
569
570 for(a = 0; a <= o_max_samples; a++) {
571 sample_stop(a);
572 }
573
574 sample_start(0, sa_left, sa_loop);
575 sample_start(1, sa_right, sa_loop);
576
577 // Determine how we should mix these samples together.
578 if(sample_playing(0) == 0 && sample_playing(1) == 1) { // Right channel only. Lets make it play in both speakers.
579 sample_set_stereo_volume(1, 100, 100);
580 }
581 else if(sample_playing(0) == 1 && sample_playing(1) == 0) { // Left channel only. Lets make it play in both speakers.
582 sample_set_stereo_volume(0, 100, 100);
583 }
584 else if(sample_playing(0) == 1 && sample_playing(1) == 1) { // Both left and right channels. Lets make them play in there respective speakers.
585 sample_set_stereo_volume(0, 100, 0);
586 sample_set_stereo_volume(1, 0, 100);
587 }
588 else if(sample_playing(0) == 0 && sample_playing(1) == 0 && moonwalker_do_nothing == false) { // No sample playing, revert to the default sound.
589 sa_play_original = false;
590 mj_current_music = 0;
591 soundlatch_w( 0,data&0xff );
592 cpu_set_nmi_line(1, PULSE_LINE);
593 }
594
595 if(sa_play_original == true) {
596 mj_current_music = 0;
597 soundlatch_w( 0,data&0xff );
598 cpu_set_nmi_line(1, PULSE_LINE);
599 }
600 }
601 else if(moonwalker_do_nothing == true) {
602 // --> Do nothing.
603 }
604 else if(moonwalker_stop_samples == true) {
605 mj_current_music = 0;
606 a = 0;
607
608 for(a = 0; a <= o_max_samples; a++) {
609 sample_stop(a);
610 }
611
612 // Now play the default sound.
613 soundlatch_w( 0,data&0xff );
614 cpu_set_nmi_line(1, PULSE_LINE);
615 }
616 else if(moonwalker_play_default == true) {
617 mj_current_music = 0;
618 soundlatch_w( 0,data&0xff );
619 cpu_set_nmi_line(1, PULSE_LINE);
620 }
621 }
622 else {
623 soundlatch_w( 0,data&0xff );
624 cpu_set_nmi_line(1, PULSE_LINE);
625 }
626 }
627 }
628
629 /***************************************************************************/
630
631 /*
632 315-5313 Video Display Processor (VDP) emulation
633 */
634
635 struct {
636 UINT16 vram[0x8000], read_buffer;
637 UINT16 cram[0x40];
638 UINT16 vsram[0x40];
639 UINT8 reg[0x20];
640 int pending, code, addr, addr_latch;
641 } vdp;
642
WRITE16_HANDLER(vdp_w)643 static WRITE16_HANDLER( vdp_w )
644 {
645 switch(offset)
646 {
647 case 0: /* Data port */
648 case 1: /* Data port */
649 vdp.pending = 0;
650 switch(vdp.code & 0x0F)
651 {
652 case 1: /* VRAM */
653 vdp.vram[(vdp.addr >> 1) & 0x7FFF] = data;
654 break;
655 case 3: /* CRAM */
656 vdp.cram[(vdp.addr >> 1) & 0x3F] = data;
657 break;
658 case 5: /* VSRAM */
659 vdp.vsram[(vdp.addr >> 1) & 0x3F] = data;
660 break;
661 }
662 vdp.addr = (vdp.addr + vdp.reg[0x0F]) & 0xFFFF;
663 break;
664
665 case 2: /* Control port */
666 case 3: /* Control port */
667 if(vdp.pending == 0)
668 {
669 if((data & 0xC000) == 0x8000)
670 {
671 int d = (data >> 0) & 0xFF;
672 int r = (data >> 8) & 0x1F;
673 vdp.reg[r] = d;
674 }
675 else
676 {
677 vdp.pending = 1;
678 vdp.code = (vdp.code & 0x3C) | ((data >> 14) & 3);
679 vdp.addr = (vdp.addr_latch & 0xC000) | (data & 0x3FFF);
680 }
681 }
682 else
683 {
684 vdp.pending = 0;
685 vdp.code = (vdp.code & 0x03) | ((data >> 2) & 0x3C);
686 vdp.addr = (vdp.addr & 0x3FFF) | ((data & 3) << 14);
687 vdp.addr_latch = vdp.addr & 0xC000;
688
689 // Read-ahead for VRAM
690 if(vdp.code == 0)
691 {
692 vdp.read_buffer = vdp.vram[(vdp.addr >> 1) & 0x7FFF];
693 vdp.addr = (vdp.addr + vdp.reg[0x0F]) & 0xFFFF;
694 }
695
696 // Check for DMA request
697 if((vdp.reg[1] & 0x20) && (vdp.code & 0x20))
698 {
699 log_cb(RETRO_LOG_DEBUG, LOGPRE "vdp: DMA disabled in this system.\n");
700 }
701 }
702 break;
703
704 default: /* Unused */
705 log_cb(RETRO_LOG_DEBUG, LOGPRE "vdp: write %04X to %08X\n", data, offset);
706 break;
707 }
708 }
709
READ16_HANDLER(vdp_r)710 static READ16_HANDLER( vdp_r )
711 {
712 UINT16 temp = -1;
713
714 vdp.pending = 0;
715
716 switch(offset)
717 {
718 case 0: /* Data port */
719 case 1: /* Data port */
720 switch(vdp.code & 0x0F)
721 {
722 case 0: /* VRAM */
723 temp = vdp.read_buffer;
724 vdp.read_buffer = vdp.vram[(vdp.addr >> 1) & 0x7FFF];
725 break;
726
727 case 4: /* VSRAM */
728 temp = vdp.vsram[(vdp.addr >> 1) & 0x3F];
729 break;
730
731 case 8: /* CRAM */
732 temp = vdp.cram[(vdp.addr >> 1) & 0x3F];
733 break;
734 }
735 vdp.addr = (vdp.addr + vdp.reg[0x0F]) & 0xFFFF;
736 break;
737
738 case 2: /* Control port */
739 case 3: /* Control port */
740
741 /* VRAM write FIFO is always empty */
742 temp = 0x0200;
743
744 /* Having screen turned off forces V-Blank flag to be set */
745 if((vdp.reg[1] & 0x40) == 0)
746 temp |= 0x80;
747
748 break;
749 }
750
751 return temp;
752 }
753
754 /***************************************************************************/
755
756 /*
757 315-5296 I/O chip emulation
758 */
759
760 static int io_reg[0x10];
761
sys18_io_reset(void)762 void sys18_io_reset(void)
763 {
764 // All output latches are reset
765 io_reg[0x00] = 0x00;
766 io_reg[0x01] = 0x00;
767 io_reg[0x02] = 0x00;
768 io_reg[0x03] = 0x00;
769 io_reg[0x04] = 0x00;
770 io_reg[0x05] = 0x00;
771 io_reg[0x06] = 0x00;
772 io_reg[0x07] = 0x00;
773
774 // CNT2-0 pins reset
775 io_reg[0x0E] = 0x00;
776
777 // All ports are inputs
778 io_reg[0x0F] = 0x00;
779 }
780
READ16_HANDLER(sys18_io_r)781 static READ16_HANDLER( sys18_io_r )
782 {
783 if(ACCESSING_LSB)
784 {
785 switch(offset & 0x3000/2)
786 {
787 case 0x0000/2: /* I/O chip internal locations */
788 case 0x1000/2: /* I/O chip internal locations (mirror) */
789 switch(offset & 0x1F)
790 {
791 case 0x00: /* Port A - 1P controls */
792 if(io_reg[0x0F] & 0x01)
793 return io_reg[0x00];
794 else
795 return readinputport(0);
796 break;
797
798 case 0x01: /* Port B - 2P controls */
799 if(io_reg[0x0F] & 0x02)
800 return io_reg[0x01];
801 else
802 return readinputport(1);
803 break;
804
805 case 0x02: /* Port C - Bidirectional I/O port */
806 if(io_reg[0x0F] & 0x04)
807 return io_reg[0x02];
808 else
809 return -1;
810 break;
811
812 case 0x03: /* Port D - Miscellaneous outputs */
813 if(io_reg[0x0F] & 0x08)
814 return io_reg[0x03];
815 else
816 return -1;
817 break;
818
819 case 0x04: /* Port E - Service / Coin inputs */
820 if(io_reg[0x0F] & 0x10)
821 return io_reg[0x04];
822 else
823 return readinputport(2);
824 break;
825
826 case 0x05: /* Port F - DIP switch #1 */
827 if(io_reg[0x0F] & 0x20)
828 return io_reg[0x05];
829 else
830 return readinputport(3);
831 break;
832
833 case 0x06: /* Port G - DIP switch #2 */
834 if(io_reg[0x0F] & 0x40)
835 return io_reg[0x06];
836 else
837 return readinputport(4);
838 break;
839
840 case 0x07: /* Port H - Tile banking control */
841 if(io_reg[0x0F] & 0x80)
842 return io_reg[0x07];
843 else
844 return -1;
845 break;
846
847 case 0x08: /* Protection #1 */
848 return 'S';
849 case 0x09: /* Protection #2 */
850 return 'E';
851 case 0x0A: /* Protection #3 */
852 return 'G';
853 case 0x0B: /* Protection #4 */
854 return 'A';
855
856 case 0x0C: /* CNT2-0 pin output control (mirror) */
857 case 0x0E: /* CNT2-0 pin output control */
858 return io_reg[0x0E];
859
860 case 0x0D: /* Port direction control (mirror) */
861 case 0x0F: /* Port direction control */
862 return io_reg[0x0F];
863 }
864 return -1;
865
866 case 0x2000/2: /* Unused */
867 log_cb(RETRO_LOG_DEBUG, LOGPRE "read video control latch %06X (%06X)\n", offset, activecpu_get_pc());
868 return -1;
869
870 case 0x3000/2: /* Expansion connector */
871 log_cb(RETRO_LOG_DEBUG, LOGPRE "read expansion area %06X (%06X)\n", offset, activecpu_get_pc());
872 return -1;
873 }
874 }
875
876 return -1;
877 }
878
WRITE16_HANDLER(sys18_io_w)879 static WRITE16_HANDLER( sys18_io_w )
880 {
881 if(ACCESSING_LSB)
882 {
883 switch(offset & 0x3000/2)
884 {
885 case 0x0000/2: /* I/O chip internal locations */
886 case 0x1000/2: /* I/O chip internal locations (mirror) */
887 switch(offset & 0x1F)
888 {
889 case 0x00: /* Port A - 1P controls */
890 io_reg[0x00] = data;
891 break;
892
893 case 0x01: /* Port B - 2P controls */
894 io_reg[0x01] = data;
895 break;
896
897 case 0x02: /* Port C - Bidirectional I/O port */
898 io_reg[0x02] = data;
899 break;
900
901 case 0x03: /* Port D - Miscellaneous outputs */
902 io_reg[0x03] = data;
903 coin_lockout_w(1, data & 8);
904 coin_lockout_w(0, data & 4);
905 coin_counter_w(1, data & 2);
906 coin_counter_w(0, data & 1);
907 break;
908
909 case 0x04: /* Port E - Service / Coin inputs */
910 io_reg[0x04] = data;
911 break;
912
913 case 0x05: /* Port F - DIP switch #1 */
914 io_reg[0x05] = data;
915 break;
916
917 case 0x06: /* Port G - DIP switch #2 */
918 io_reg[0x06] = data;
919 break;
920
921 case 0x07: /* Port H - Tile banking control */
922 io_reg[0x07] = data;
923 sys16_tile_bank0 = (data >> 0) & 0x0F;
924 sys16_tile_bank1 = (data >> 4) & 0x0F;
925 break;
926
927 case 0x0E: /* CNT2-0 pin output control */
928 io_reg[0x0E] = data;
929 sys16_refreshenable = data & 0x02;
930 break;
931
932 case 0x0F: /* Port direction control */
933 io_reg[0x0F] = data;
934 break;
935 }
936 break;
937
938 case 0x2000/2: /* Video control latch */
939 log_cb(RETRO_LOG_DEBUG, LOGPRE "write video control latch %06X = %04X (%06X)\n", offset, data, activecpu_get_pc());
940 break;
941
942 case 0x3000/2: /* Expansion connector */
943 // log_cb(RETRO_LOG_DEBUG, LOGPRE "write expansion area %06X = %04X (%06X)\n", offset, data, activecpu_get_pc());
944 break;
945 }
946 }
947 }
948
949 /***************************************************************************/
950 /*
951 Shadow Dancer (Export)
952 */
953 /***************************************************************************/
954
MEMORY_READ16_START(shdancer_readmem)955 static MEMORY_READ16_START( shdancer_readmem )
956 { 0x000000, 0x07ffff, MRA16_ROM },
957 { 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
958 { 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
959 { 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
960 { 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
961 { 0xc00000, 0xc0ffff, vdp_r },
962 { 0xe40000, 0xe4ffff, sys18_io_r },
963 { 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
964 MEMORY_END
965
966
967 static MEMORY_WRITE16_START( shdancer_writemem )
968 { 0x000000, 0x07ffff, MWA16_ROM },
969 { 0x400000, 0x40ffff, SYS16_MWA16_TILERAM, &sys16_tileram },
970 { 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM, &sys16_textram },
971 { 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM, &sys16_spriteram },
972 { 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM, &paletteram16 },
973 { 0xc00000, 0xc0ffff, vdp_w },
974 { 0xe40000, 0xe4ffff, sys18_io_w },
975 { 0xfe0006, 0xfe0007, sound_command_nmi_w },
976 { 0xfe0020, 0xfe003f, MWA16_NOP }, // config regs
977 { 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM, &sys16_workingram },
978 MEMORY_END
979
980 /***************************************************************************/
981
982 static void shdancer_update_proc( void ){
983 sys16_fg_scrolly = sys16_textram[0x0e90/2];
984 sys16_bg_scrolly = sys16_textram[0x0e92/2];
985 sys16_fg_scrollx = sys16_textram[0x0e98/2];
986 sys16_bg_scrollx = sys16_textram[0x0e9a/2];
987
988 set_fg_page( sys16_textram[0x0e80/2] );
989 set_bg_page( sys16_textram[0x0e82/2] );
990
991 sys16_fg2_scrollx = sys16_textram[0x0e9c/2];
992 sys16_bg2_scrollx = sys16_textram[0x0e9e/2];
993 sys16_fg2_scrolly = sys16_textram[0x0e94/2];
994 sys16_bg2_scrolly = sys16_textram[0x0e96/2];
995
996 set_fg2_page( sys16_textram[0x0e84/2] );
997 set_bg2_page( sys16_textram[0x0e86/2] );
998
999 sys18_bg2_active=0;
1000 sys18_fg2_active=0;
1001
1002 if(sys16_fg2_scrollx | sys16_fg2_scrolly | sys16_textram[0x0e84/2]) sys18_fg2_active=1;
1003 if(sys16_bg2_scrollx | sys16_bg2_scrolly | sys16_textram[0x0e86/2]) sys18_bg2_active=1;
1004 }
1005
MACHINE_INIT(shdancer)1006 static MACHINE_INIT( shdancer ){
1007 sys16_update_proc = shdancer_update_proc;
1008
1009 sys18_io_reset();
1010 }
1011
READ16_HANDLER(shdancer_skip_r)1012 static READ16_HANDLER( shdancer_skip_r ){
1013 if (activecpu_get_pc()==0x2f76) {cpu_spinuntil_int(); return 0xffff;}
1014 return sys16_workingram[0];
1015 }
1016
DRIVER_INIT(shdancer)1017 static DRIVER_INIT( shdancer ){
1018 unsigned char *RAM = memory_region(REGION_CPU2);
1019 static const int shdancer_sound_info[] =
1020 {
1021 0x0f, 0x00000, // ROM #1 = 128K
1022 0x1f, 0x20000, // ROM #2 = 256K
1023 0x1f, 0x60000, // ROM #3 = 256K
1024 0x1f, 0xA0000 // ROM #4 = 256K
1025 };
1026
1027 machine_init_sys16_onetime();
1028 sys18_splittab_fg_x=&sys16_textram[0x0f80/2];
1029 sys18_splittab_bg_x=&sys16_textram[0x0fc0/2];
1030 sys16_MaxShadowColors=0;
1031 install_mem_read16_handler(0, 0xffc000, 0xffc001, shdancer_skip_r );
1032
1033 memcpy(sys18_sound_info, shdancer_sound_info, sizeof(sys18_sound_info));
1034 memcpy(RAM,&RAM[0x10000],0xa000);
1035 }
1036
1037 /***************************************************************************/
1038 /*
1039 Shadow Dancer (Japan)
1040 */
1041 /***************************************************************************/
1042
READ16_HANDLER(shdancrj_skip_r)1043 static READ16_HANDLER( shdancrj_skip_r ){
1044 if (activecpu_get_pc()==0x2f70) {cpu_spinuntil_int(); return 0xffff;}
1045 return sys16_workingram[0];
1046 }
1047
MACHINE_INIT(shdancrj)1048 static MACHINE_INIT( shdancrj ){
1049 // sys16_patch_code(0x6821, 0xdf); /* ? */
1050 sys16_update_proc = shdancer_update_proc;
1051 }
1052
DRIVER_INIT(shdancrj)1053 static DRIVER_INIT( shdancrj ){
1054 unsigned char *RAM = memory_region(REGION_CPU2);
1055 static const int shdancrj_sound_info[] =
1056 {
1057 0x0f, 0x00000, // ROM #1 = 128K
1058 0x1f, 0x20000, // ROM #2 = 256K
1059 0x1f, 0x60000, // ROM #3 = 256K
1060 0x1f, 0xA0000 // ROM #4 = 256K
1061 };
1062
1063 machine_init_sys16_onetime();
1064 sys18_splittab_fg_x=&sys16_textram[0x0f80/2];
1065 sys18_splittab_bg_x=&sys16_textram[0x0fc0/2];
1066 sys16_MaxShadowColors=0;
1067 install_mem_read16_handler(0, 0xffc000, 0xffc001, shdancrj_skip_r );
1068
1069 memcpy(sys18_sound_info, shdancrj_sound_info, sizeof(sys18_sound_info));
1070 memcpy(RAM,&RAM[0x10000],0xa000);
1071 }
1072
1073
1074 /***************************************************************************/
1075 /*
1076 Shadow Dancer (Export, Rev.B)
1077
1078 - Program code has more similarities with shdancrj than shdancer
1079 - Input test only shows 1P joystick (all other versions include 2P)
1080 - It does not display the warning screen and has English text in the attract sequence like shdancer
1081 - ROM board has a sticker with 'Rev.B' printed on it
1082 */
1083 /***************************************************************************/
1084
READ16_HANDLER(shdancrb_skip_r)1085 static READ16_HANDLER( shdancrb_skip_r ){
1086 if (activecpu_get_pc()==0x2f70) { cpu_spinuntil_int(); return 0xffff; }
1087 return sys16_workingram[0];
1088 }
1089
MACHINE_INIT(shdancrb)1090 static MACHINE_INIT( shdancrb ){
1091 sys16_update_proc = shdancer_update_proc;
1092 }
1093
DRIVER_INIT(shdancrb)1094 static DRIVER_INIT( shdancrb ){
1095 unsigned char *RAM = memory_region(REGION_CPU2);
1096 static const int shdancrb_sound_info[] =
1097 {
1098 0x0f, 0x00000, // ROM #1 = 128K
1099 0x1f, 0x20000, // ROM #2 = 256K
1100 0x1f, 0x60000, // ROM #3 = 256K
1101 0x1f, 0xA0000 // ROM #4 = 256K
1102 };
1103
1104 machine_init_sys16_onetime();
1105 sys18_splittab_fg_x=&sys16_textram[0x0f80/2];
1106 sys18_splittab_bg_x=&sys16_textram[0x0fc0/2];
1107 sys16_MaxShadowColors=0;
1108 install_mem_read16_handler(0, 0xffc000, 0xffc001, shdancrb_skip_r );
1109
1110 memcpy(sys18_sound_info, shdancrb_sound_info, sizeof(sys18_sound_info));
1111 memcpy(RAM,&RAM[0x10000],0xa000);
1112 }
1113
1114 /***************************************************************************/
1115 /*
1116 Shadow Dancer (Bootleg)
1117
1118 This seems to be a modified version of shdancer. It has no warning screen, displays English text during the
1119 attract sequence, and has a 2P input test. The 'Sega' copyright text was changed to 'Datsu', and their
1120 logo is missing.
1121
1122 Access to the configuration registers, I/O chip, and VDP are done even though it's likely none of this hardware
1123 exists in the bootleg. For example:
1124
1125 - Most I/O port access has been redirected to new addresses.
1126 - Z80 sound command has been redirected to a new address.
1127 - The tilebank routine which saves the bank value in VDP VRAM has a form of protection has been modified to store
1128 the tilebank value directly to $E4001F.
1129 - Implementing screen blanking control via $E4001D leaves the screen blanked at the wrong times (after coin-up).
1130
1131 This is probably due to unmodified parts of the original code accessing these components, which would be ignored
1132 on the bootleg hardware. Both the I/O chip and VDP are supported in this driver, just as I don't know for certain
1133 how much of either are present on the real board.
1134
1135 Bootleg specific addresses:
1136
1137 C40001 = DIP switch #1
1138 C40003 = DIP switch #2
1139 C40007 = Z80 sound command
1140 C41001 = Service input
1141 C41003 = Player 1 input
1142 C41005 = Player 2 input
1143 C44000 = Has 'clr.w' done after setting tile bank in $E4000F.
1144 C460xx = Extra video hardware controls
1145
1146 Here are the I/O chip addresses accessed:
1147
1148 E40001 = Player 1
1149 E40007 = Miscellaneous outputs (coin control, etc.)
1150 E4000F = Tile bank
1151 E4001D = CNT2-0 pin output state
1152 E4001F = I/O chip port direction
1153 */
1154 /***************************************************************************/
1155
MEMORY_READ16_START(shdancbl_readmem)1156 static MEMORY_READ16_START( shdancbl_readmem )
1157 { 0x000000, 0x07ffff, MRA16_ROM },
1158 { 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
1159 { 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
1160 { 0x440000, 0x4407ff, SYS16_MRA16_SPRITERAM },
1161 { 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
1162 { 0xc00000, 0xc0ffff, vdp_r },
1163 { 0xe40000, 0xe4ffff, sys18_io_r },
1164 { 0xc40000, 0xc40001, input_port_3_word_r }, // dip1
1165 { 0xc40002, 0xc40003, input_port_4_word_r }, // dip2
1166 { 0xc41002, 0xc41003, input_port_0_word_r }, // player1
1167 { 0xc41004, 0xc41005, input_port_1_word_r }, // player2
1168 { 0xc41000, 0xc41001, input_port_2_word_r }, // service
1169 { 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
1170 MEMORY_END
1171
1172 static MEMORY_WRITE16_START( shdancbl_writemem )
1173 { 0x000000, 0x07ffff, MWA16_ROM },
1174 { 0x400000, 0x40ffff, SYS16_MWA16_TILERAM, &sys16_tileram },
1175 { 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM, &sys16_textram },
1176 { 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM, &sys16_spriteram },
1177 { 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM, &paletteram16 },
1178 { 0xc00000, 0xc0ffff, vdp_w },
1179 { 0xe4001c, 0xe4001d, MWA16_NOP }, // to prevent access to screen blanking control below
1180 { 0xe40000, 0xe4ffff, sys18_io_w },
1181 { 0xc40006, 0xc40007, sound_command_irq_w },
1182 { 0xc44000, 0xc44001, MWA16_NOP }, // only used via clr.w after tilebank set
1183 { 0xc46000, 0xc46fff, MWA16_NOP },// bootleg specific video hardware
1184 { 0xfe0020, 0xfe003f, MWA16_NOP }, // config regs
1185 { 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM, &sys16_workingram },
1186 MEMORY_END
1187
1188 /***************************************************************************/
1189
1190 static void shdancbl_update_proc( void )
1191 {
1192 sys16_fg_scrollx = sys16_textram[0x0e98/2];
1193 sys16_bg_scrollx = sys16_textram[0x0e9a/2];
1194 sys16_fg_scrolly = sys16_textram[0x0e90/2];
1195 sys16_bg_scrolly = sys16_textram[0x0e92/2];
1196
1197 set_fg_page( sys16_textram[0x0e80/2] );
1198 set_bg_page( sys16_textram[0x0e82/2] );
1199
1200 sys16_fg2_scrollx = sys16_textram[0x0e9c/2];
1201 sys16_bg2_scrollx = sys16_textram[0x0e9e/2];
1202 sys16_fg2_scrolly = sys16_textram[0x0e94/2];
1203 sys16_bg2_scrolly = sys16_textram[0x0e96/2];
1204
1205 set_fg2_page( sys16_textram[0x0e84/2] );
1206 set_bg2_page( sys16_textram[0x0e82/2] );
1207
1208 sys18_bg2_active=0;
1209 sys18_fg2_active=0;
1210
1211 if(sys16_fg2_scrollx | sys16_fg2_scrolly | sys16_textram[0x0e84/2])
1212 sys18_fg2_active=1;
1213 if(sys16_bg2_scrollx | sys16_bg2_scrolly | sys16_textram[0x0e86/2])
1214 sys18_bg2_active=1;
1215 }
1216
MACHINE_INIT(shdancbl)1217 static MACHINE_INIT( shdancbl )
1218 {
1219 sys16_sprxoffset = -0xbc+0x77;
1220 sys16_update_proc = shdancbl_update_proc;
1221 }
1222
READ16_HANDLER(shdancbl_skip_r)1223 static READ16_HANDLER( shdancbl_skip_r ){
1224 if (activecpu_get_pc()==0x2f76) {cpu_spinuntil_int(); return 0xffff;}
1225 return sys16_workingram[0];
1226 }
1227
DRIVER_INIT(shdancbl)1228 static DRIVER_INIT( shdancbl )
1229 {
1230 int i;
1231 UINT8 *mem;
1232
1233 /* Invert tile ROM data*/
1234 mem = memory_region(REGION_GFX1);
1235 for(i = 0; i < 0xc0000; i++)
1236 mem[i] ^= 0xFF;
1237
1238 machine_init_sys16_onetime();
1239 install_mem_read16_handler(0, 0xffc000, 0xffc001, shdancbl_skip_r );
1240
1241 sys18_splittab_fg_x=&sys16_textram[0x0f80/2];
1242 sys18_splittab_bg_x=&sys16_textram[0x0fc0/2];
1243 sys16_MaxShadowColors=0;
1244
1245 /* Copy first 32K of IC45 to Z80 address space */
1246 mem = memory_region(REGION_CPU2);
1247 memcpy(mem, mem+0x10000, 0x8000);
1248 }
1249
1250 /***************************************************************************/
1251 /*
1252 Moonwalker (Bootleg)
1253 */
1254 /***************************************************************************/
1255
READ16_HANDLER(moonwlkb_skip_r)1256 static READ16_HANDLER( moonwlkb_skip_r ){
1257 if (activecpu_get_pc()==0x308a) {cpu_spinuntil_int(); return 0xffff;}
1258 return sys16_workingram[0x202c/2];
1259 }
1260
MEMORY_READ16_START(moonwalk_readmem)1261 static MEMORY_READ16_START( moonwalk_readmem )
1262 { 0x000000, 0x07ffff, MRA16_ROM },
1263 { 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
1264 { 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
1265 { 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
1266 { 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
1267 { 0xc00000, 0xc0ffff, vdp_r },
1268 { 0xc40000, 0xc40001, input_port_3_word_r }, // dip1
1269 { 0xc40002, 0xc40003, input_port_4_word_r }, // dip2
1270 { 0xc41002, 0xc41003, input_port_0_word_r },// player1
1271 { 0xc41004, 0xc41005, input_port_1_word_r }, // player2
1272 { 0xc41006, 0xc41007, input_port_5_word_r }, // player3
1273 { 0xc41008, 0xc41009, MRA16_NOP }, // figure this out, extra input for 3p?
1274 { 0xc41000, 0xc41001, input_port_2_word_r }, // service
1275 { 0xe40000, 0xe4ffff, SYS16_MRA16_EXTRAM2 },
1276 { 0xffe02c, 0xffe02d, moonwlkb_skip_r },
1277 { 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
1278 MEMORY_END
1279
1280 static MEMORY_WRITE16_START( moonwalk_writemem )
1281 { 0x000000, 0x07ffff, MWA16_ROM },
1282 { 0x400000, 0x40ffff, SYS16_MWA16_TILERAM, &sys16_tileram },
1283 { 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM, &sys16_textram },
1284 { 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM, &sys16_spriteram },
1285 { 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM, &paletteram16 },
1286 { 0xc00000, 0xc0ffff, vdp_w },
1287 { 0xc40006, 0xc40007, sound_command_nmi_w },
1288 { 0xc46600, 0xc46601, sys18_refreshenable_w },
1289 { 0xc46800, 0xc46801, sys18_tilebank_w },
1290 { 0xe40000, 0xe4ffff, SYS16_MWA16_EXTRAM2, &sys16_extraram2 },
1291 { 0xfe0020, 0xfe003f, MWA16_NOP }, // config regs
1292 { 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM, &sys16_workingram },
1293 MEMORY_END
1294
1295 /***************************************************************************/
1296
1297 static void moonwalk_update_proc( void ){
1298 sys16_fg_scrollx = sys16_textram[0x0e98/2];
1299 sys16_bg_scrollx = sys16_textram[0x0e9a/2];
1300 sys16_fg_scrolly = sys16_textram[0x0e90/2];
1301 sys16_bg_scrolly = sys16_textram[0x0e92/2];
1302
1303 set_fg_page( sys16_textram[0x0e80/2] );
1304 set_bg_page( sys16_textram[0x0e82/2] );
1305
1306 sys16_fg2_scrollx = sys16_textram[0x0e9c/2];
1307 sys16_bg2_scrollx = sys16_textram[0x0e9e/2];
1308 sys16_fg2_scrolly = sys16_textram[0x0e94/2];
1309 sys16_bg2_scrolly = sys16_textram[0x0e96/2];
1310
1311 set_fg2_page( sys16_textram[0x0e84/2] );
1312 set_bg2_page( sys16_textram[0x0e86/2] );
1313
1314 if(sys16_fg2_scrollx | sys16_fg2_scrolly | sys16_textram[0x0e84/2])
1315 sys18_fg2_active=1;
1316 else
1317 sys18_fg2_active=0;
1318 if(sys16_bg2_scrollx | sys16_bg2_scrolly | sys16_textram[0x0e86/2])
1319 sys18_bg2_active=1;
1320 else
1321 sys18_bg2_active=0;
1322 }
1323
MACHINE_INIT(moonwalk)1324 static MACHINE_INIT( moonwalk ){
1325 sys16_bg_priority_value=0x1000;
1326 sys16_sprxoffset = -0x238;
1327
1328 sys16_patch_code( 0x70116, 0x4e);
1329 sys16_patch_code( 0x70117, 0x71);
1330
1331 sys16_patch_code( 0x314a, 0x46);
1332 sys16_patch_code( 0x314b, 0x42);
1333
1334 sys16_patch_code( 0x311b, 0x3f);
1335
1336 sys16_patch_code( 0x70103, 0x00);
1337 sys16_patch_code( 0x70109, 0x00);
1338 sys16_patch_code( 0x07727, 0x00);
1339 sys16_patch_code( 0x07729, 0x00);
1340 sys16_patch_code( 0x0780d, 0x00);
1341 sys16_patch_code( 0x0780f, 0x00);
1342 sys16_patch_code( 0x07861, 0x00);
1343 sys16_patch_code( 0x07863, 0x00);
1344 sys16_patch_code( 0x07d47, 0x00);
1345 sys16_patch_code( 0x07863, 0x00);
1346 sys16_patch_code( 0x08533, 0x00);
1347 sys16_patch_code( 0x08535, 0x00);
1348 sys16_patch_code( 0x085bd, 0x00);
1349 sys16_patch_code( 0x085bf, 0x00);
1350 sys16_patch_code( 0x09a4b, 0x00);
1351 sys16_patch_code( 0x09a4d, 0x00);
1352 sys16_patch_code( 0x09b2f, 0x00);
1353 sys16_patch_code( 0x09b31, 0x00);
1354 sys16_patch_code( 0x0a05b, 0x00);
1355 sys16_patch_code( 0x0a05d, 0x00);
1356 sys16_patch_code( 0x0a23f, 0x00);
1357 sys16_patch_code( 0x0a241, 0x00);
1358 sys16_patch_code( 0x10159, 0x00);
1359 sys16_patch_code( 0x1015b, 0x00);
1360 sys16_patch_code( 0x109fb, 0x00);
1361 sys16_patch_code( 0x109fd, 0x00);
1362
1363 // * SEGA mark
1364 sys16_patch_code( 0x70212, 0x4e);
1365 sys16_patch_code( 0x70213, 0x71);
1366
1367 sys16_update_proc = moonwalk_update_proc;
1368 }
1369
DRIVER_INIT(moonwalk)1370 static DRIVER_INIT( moonwalk ){
1371 unsigned char *RAM= memory_region(REGION_CPU2);
1372 static const int moonwalk_sound_info[] =
1373 {
1374 0x0f, 0x00000, // ROM #1 = 128K
1375 0x1f, 0x20000, // ROM #2 = 256K
1376 0x1f, 0x60000, // ROM #3 = 256K
1377 0x1f, 0xA0000 // ROM #4 = 256K
1378 };
1379
1380 machine_init_sys16_onetime();
1381 sys18_splittab_fg_x=&sys16_textram[0x0f80/2];
1382 sys18_splittab_bg_x=&sys16_textram[0x0fc0/2];
1383
1384 memcpy(sys18_sound_info, moonwalk_sound_info, sizeof(sys18_sound_info));
1385 memcpy(RAM,&RAM[0x10000],0xa000);
1386 }
1387
1388 /***************************************************************************/
1389
READ16_HANDLER(astorm_skip_r)1390 static READ16_HANDLER( astorm_skip_r ){
1391 if (activecpu_get_pc()==0x3d4c) {cpu_spinuntil_int(); return 0xffff;}
1392 return sys16_workingram[0x2c2c/2];
1393 }
1394
MEMORY_READ16_START(astorm_readmem)1395 static MEMORY_READ16_START( astorm_readmem )
1396 { 0x000000, 0x07ffff, MRA16_ROM },
1397 { 0x100000, 0x10ffff, SYS16_MRA16_TILERAM },
1398 { 0x110000, 0x110fff, SYS16_MRA16_TEXTRAM },
1399 { 0x140000, 0x140fff, SYS16_MRA16_PALETTERAM },
1400 { 0x200000, 0x200fff, SYS16_MRA16_SPRITERAM },
1401 { 0xa00000, 0xa00001, input_port_3_word_r }, // dip1
1402 { 0xa00002, 0xa00003, input_port_4_word_r }, // dip2
1403 { 0xa01002, 0xa01003, input_port_0_word_r }, // player1
1404 { 0xa01004, 0xa01005, input_port_1_word_r }, // player2
1405 { 0xa01006, 0xa01007, input_port_5_word_r }, // player3
1406 { 0xa01000, 0xa01001, input_port_2_word_r }, // service
1407 { 0xc00000, 0xc0ffff, vdp_r },
1408 { 0xffec2c, 0xffec2d, astorm_skip_r },
1409 { 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
1410 MEMORY_END
1411
1412 static MEMORY_WRITE16_START( astorm_writemem )
1413 { 0x000000, 0x07ffff, MWA16_ROM },
1414 { 0x100000, 0x10ffff, SYS16_MWA16_TILERAM, &sys16_tileram },
1415 { 0x110000, 0x110fff, SYS16_MWA16_TEXTRAM, &sys16_textram },
1416 { 0x140000, 0x140fff, SYS16_MWA16_PALETTERAM, &paletteram16 },
1417 { 0x200000, 0x200fff, SYS16_MWA16_SPRITERAM, &sys16_spriteram },
1418 { 0xa00006, 0xa00007, sound_command_nmi_w },
1419 { 0xa0000e, 0xa0000f, sys18_tilebank_w },
1420 { 0xc00000, 0xc0ffff, vdp_w },
1421 { 0xc46600, 0xc46601, sys18_refreshenable_w },
1422 { 0xfe0020, 0xfe003f, MWA16_NOP },
1423 { 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM, &sys16_workingram },
1424 MEMORY_END
1425
1426 /***************************************************************************/
1427
1428 static void astorm_update_proc( void ){
1429 data16_t data;
1430 sys16_fg_scrollx = sys16_textram[0x0e98/2];
1431 sys16_bg_scrollx = sys16_textram[0x0e9a/2];
1432 sys16_fg_scrolly = sys16_textram[0x0e90/2];
1433 sys16_bg_scrolly = sys16_textram[0x0e92/2];
1434
1435 data = sys16_textram[0x0e80/2];
1436 sys16_fg_page[1] = data>>12;
1437 sys16_fg_page[3] = (data>>8)&0xf;
1438 sys16_fg_page[0] = (data>>4)&0xf;
1439 sys16_fg_page[2] = data&0xf;
1440
1441 data = sys16_textram[0x0e82/2];
1442 sys16_bg_page[1] = data>>12;
1443 sys16_bg_page[3] = (data>>8)&0xf;
1444 sys16_bg_page[0] = (data>>4)&0xf;
1445 sys16_bg_page[2] = data&0xf;
1446
1447 sys16_fg2_scrollx = sys16_textram[0x0e9c/2];
1448 sys16_bg2_scrollx = sys16_textram[0x0e9e/2];
1449 sys16_fg2_scrolly = sys16_textram[0x0e94/2];
1450 sys16_bg2_scrolly = sys16_textram[0x0e96/2];
1451
1452 data = sys16_textram[0x0e84/2];
1453 sys16_fg2_page[1] = data>>12;
1454 sys16_fg2_page[3] = (data>>8)&0xf;
1455 sys16_fg2_page[0] = (data>>4)&0xf;
1456 sys16_fg2_page[2] = data&0xf;
1457
1458 data = sys16_textram[0x0e86/2];
1459 sys16_bg2_page[1] = data>>12;
1460 sys16_bg2_page[3] = (data>>8)&0xf;
1461 sys16_bg2_page[0] = (data>>4)&0xf;
1462 sys16_bg2_page[2] = data&0xf;
1463
1464 // enable regs
1465 if(sys16_fg2_scrollx | sys16_fg2_scrolly | sys16_textram[0x0e84/2])
1466 sys18_fg2_active=1;
1467 else
1468 sys18_fg2_active=0;
1469 if(sys16_bg2_scrollx | sys16_bg2_scrolly | sys16_textram[0x0e86/2])
1470 sys18_bg2_active=1;
1471 else
1472 sys18_bg2_active=0;
1473 }
1474
MACHINE_INIT(astorm)1475 static MACHINE_INIT( astorm ){
1476 sys16_fgxoffset = sys16_bgxoffset = -9;
1477
1478 sys16_patch_code( 0x2D6E, 0x32 );
1479 sys16_patch_code( 0x2D6F, 0x3c );
1480 sys16_patch_code( 0x2D70, 0x80 );
1481 sys16_patch_code( 0x2D71, 0x00 );
1482 sys16_patch_code( 0x2D72, 0x33 );
1483 sys16_patch_code( 0x2D73, 0xc1 );
1484 sys16_patch_code( 0x2ea2, 0x30 );
1485 sys16_patch_code( 0x2ea3, 0x38 );
1486 sys16_patch_code( 0x2ea4, 0xec );
1487 sys16_patch_code( 0x2ea5, 0xf6 );
1488 sys16_patch_code( 0x2ea6, 0x30 );
1489 sys16_patch_code( 0x2ea7, 0x80 );
1490 sys16_patch_code( 0x2e5c, 0x30 );
1491 sys16_patch_code( 0x2e5d, 0x38 );
1492 sys16_patch_code( 0x2e5e, 0xec );
1493 sys16_patch_code( 0x2e5f, 0xe2 );
1494 sys16_patch_code( 0x2e60, 0xc0 );
1495 sys16_patch_code( 0x2e61, 0x7c );
1496
1497 sys16_patch_code( 0x4cd8, 0x02 );
1498 sys16_patch_code( 0x4cec, 0x03 );
1499 sys16_patch_code( 0x2dc6c, 0xe9 );
1500 sys16_patch_code( 0x2dc64, 0x10 );
1501 sys16_patch_code( 0x2dc65, 0x10 );
1502 sys16_patch_code( 0x3a100, 0x10 );
1503 sys16_patch_code( 0x3a101, 0x13 );
1504 sys16_patch_code( 0x3a102, 0x90 );
1505 sys16_patch_code( 0x3a103, 0x2b );
1506 sys16_patch_code( 0x3a104, 0x00 );
1507 sys16_patch_code( 0x3a105, 0x01 );
1508 sys16_patch_code( 0x3a106, 0x0c );
1509 sys16_patch_code( 0x3a107, 0x00 );
1510 sys16_patch_code( 0x3a108, 0x00 );
1511 sys16_patch_code( 0x3a109, 0x01 );
1512 sys16_patch_code( 0x3a10a, 0x66 );
1513 sys16_patch_code( 0x3a10b, 0x06 );
1514 sys16_patch_code( 0x3a10c, 0x42 );
1515 sys16_patch_code( 0x3a10d, 0x40 );
1516 sys16_patch_code( 0x3a10e, 0x54 );
1517 sys16_patch_code( 0x3a10f, 0x8b );
1518 sys16_patch_code( 0x3a110, 0x60 );
1519 sys16_patch_code( 0x3a111, 0x02 );
1520 sys16_patch_code( 0x3a112, 0x30 );
1521 sys16_patch_code( 0x3a113, 0x1b );
1522 sys16_patch_code( 0x3a114, 0x34 );
1523 sys16_patch_code( 0x3a115, 0xc0 );
1524 sys16_patch_code( 0x3a116, 0x34 );
1525 sys16_patch_code( 0x3a117, 0xdb );
1526 sys16_patch_code( 0x3a118, 0x24 );
1527 sys16_patch_code( 0x3a119, 0xdb );
1528 sys16_patch_code( 0x3a11a, 0x24 );
1529 sys16_patch_code( 0x3a11b, 0xdb );
1530 sys16_patch_code( 0x3a11c, 0x4e );
1531 sys16_patch_code( 0x3a11d, 0x75 );
1532 sys16_patch_code( 0xaf8e, 0x66 );
1533
1534 /* fix missing credit text */
1535 sys16_patch_code( 0x3f9a, 0xec );
1536 sys16_patch_code( 0x3f9b, 0x36 );
1537
1538 sys16_update_proc = astorm_update_proc;
1539 }
1540
DRIVER_INIT(astorm)1541 static DRIVER_INIT( astorm ){
1542 unsigned char *RAM= memory_region(REGION_CPU2);
1543 static const int astormbl_sound_info[] =
1544 {
1545 0x0f, 0x00000, // ROM #1 = 128K
1546 0x1f, 0x20000, // ROM #2 = 256K
1547 0x1f, 0x60000, // ROM #3 = 256K
1548 0x1f, 0xA0000 // ROM #4 = 256K
1549 };
1550
1551 machine_init_sys16_onetime();
1552 sys18_splittab_fg_x=&sys16_textram[0x0f80/2];
1553 sys18_splittab_bg_x=&sys16_textram[0x0fc0/2];
1554 sys16_MaxShadowColors = 0; // doesn't seem to use transparent shadows
1555
1556 memcpy(sys18_sound_info, astormbl_sound_info, sizeof(sys18_sound_info));
1557 memcpy(RAM,&RAM[0x10000],0xa000);
1558 }
1559
1560 /*****************************************************************************/
1561
1562 static MACHINE_DRIVER_START( system18 )
1563
1564 /* basic machine hardware */
1565 MDRV_CPU_ADD_TAG("main", M68000, 10000000)
1566 MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
1567
1568 MDRV_CPU_ADD_TAG("sound", Z80, 8000000)
1569 MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
1570 MDRV_CPU_MEMORY(sound_readmem_18,sound_writemem_18)
1571 MDRV_CPU_PORTS(sound_readport_18,sound_writeport_18)
1572
1573 MDRV_FRAMES_PER_SECOND(57.23) //dankcushions
1574 MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
1575
1576 /* video hardware */
1577 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
1578 MDRV_SCREEN_SIZE(40*8, 28*8)
1579 MDRV_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
1580 MDRV_GFXDECODE(sys16_gfxdecodeinfo)
1581 MDRV_PALETTE_LENGTH(2048*ShadowColorsMultiplier)
1582
1583 MDRV_VIDEO_START(system18)
1584 MDRV_VIDEO_UPDATE(system18)
1585
1586 /* sound hardware */
1587 MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
1588 MDRV_SOUND_ADD_TAG("3438", YM3438, sys18_ym3438_interface)
1589 MDRV_SOUND_ADD_TAG("5c68", RF5C68, sys18_rf5c68_interface)
1590 MACHINE_DRIVER_END
1591
1592 static MACHINE_DRIVER_START( astorm )
1593
1594 /* basic machine hardware */
1595 MDRV_IMPORT_FROM(system18)
1596 MDRV_CPU_MODIFY("main")
1597 MDRV_CPU_MEMORY(astorm_readmem,astorm_writemem)
1598
1599 MDRV_MACHINE_INIT(astorm)
1600 MACHINE_DRIVER_END
1601
1602
1603 static MACHINE_DRIVER_START( moonwalk )
1604
1605 /* basic machine hardware */
1606 MDRV_IMPORT_FROM(system18)
1607 MDRV_CPU_MODIFY("main")
1608 MDRV_CPU_MEMORY(moonwalk_readmem,moonwalk_writemem)
1609
1610 MDRV_MACHINE_INIT(moonwalk)
1611 MDRV_SOUND_ADD_TAG("OST Samples", SAMPLES, moonwalker_samples_set)
1612 moonwalker_playing = true;
1613 moon_diddy = false;
1614 MACHINE_DRIVER_END
1615
1616
1617 static MACHINE_DRIVER_START( shdancer )
1618
1619 /* basic machine hardware */
1620 MDRV_IMPORT_FROM(system18)
1621 MDRV_CPU_MODIFY("main")
1622 MDRV_CPU_MEMORY(shdancer_readmem,shdancer_writemem)
1623
1624 MDRV_MACHINE_INIT(shdancer)
1625 MACHINE_DRIVER_END
1626
1627
1628 static MACHINE_DRIVER_START( shdancbl )
1629
1630 /* basic machine hardware */
1631 MDRV_IMPORT_FROM(system18)
1632 MDRV_CPU_MODIFY("main")
1633 MDRV_CPU_MEMORY(shdancbl_readmem,shdancbl_writemem)
1634
1635 MDRV_CPU_MODIFY("sound")
1636 MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
1637 MDRV_CPU_MEMORY(shdancbl_sound_readmem,shdancbl_sound_writemem)
1638 MDRV_CPU_PORTS(shdancbl_sound_readport,shdancbl_sound_writeport)
1639 MDRV_SOUND_REMOVE("5c68")
1640 MDRV_SOUND_ADD_TAG("5205", MSM5205, shdancbl_msm5205_interface)
1641
1642 MDRV_MACHINE_INIT(shdancbl)
1643 MACHINE_DRIVER_END
1644
1645
1646 static MACHINE_DRIVER_START( shdancrj )
1647
1648 /* basic machine hardware */
1649 MDRV_IMPORT_FROM(shdancer)
1650
1651 MDRV_MACHINE_INIT(shdancrj)
1652 MACHINE_DRIVER_END
1653
1654 static MACHINE_DRIVER_START( shdancrb )
1655
1656 /* basic machine hardware */
1657 MDRV_IMPORT_FROM(shdancer)
1658
1659 MDRV_MACHINE_INIT(shdancrb)
1660 MACHINE_DRIVER_END
1661
1662
1663 /***************************************************************************/
1664
1665 INPUT_PORTS_START( astorm )
1666 PORT_START /* player 1 */
1667 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
1668 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
1669 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 )
1670 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1671 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
1672 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
1673 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
1674 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
1675 PORT_START /* player 2 */
1676 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
1677 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
1678 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
1679 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1680 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
1681 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
1682 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
1683 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
1684 PORT_START
1685 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
1686 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1687 PORT_BITX(0x04, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
1688 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 )
1689 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
1690 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
1691 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START3 )
1692 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
1693 SYS16_COINAGE
1694 PORT_START /* DSW1 */
1695 PORT_DIPNAME( 0x01, 0x01, "2 Credits to Start" )
1696 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
1697 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1698 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
1699 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
1700 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1701 PORT_DIPNAME( 0x1c, 0x1c, DEF_STR( Difficulty ) )
1702 PORT_DIPSETTING( 0x04, "Easiest" )
1703 PORT_DIPSETTING( 0x08, "Easier" )
1704 PORT_DIPSETTING( 0x0c, "Easy" )
1705 PORT_DIPSETTING( 0x1c, "Normal" )
1706 PORT_DIPSETTING( 0x10, "Hard" )
1707 PORT_DIPSETTING( 0x14, "Harder" )
1708 PORT_DIPSETTING( 0x18, "Hardest" )
1709 PORT_DIPSETTING( 0x00, "Special" )
1710 PORT_DIPNAME( 0x20, 0x20, "Coin Chutes" )
1711 PORT_DIPSETTING( 0x20, "3" )
1712 PORT_DIPSETTING( 0x00, "1" )
1713 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
1714 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
1715 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1716 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
1717 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
1718 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1719 PORT_START /* player 3 */
1720 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
1721 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
1722 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
1723 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1724 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER3 )
1725 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER3 )
1726 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
1727 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER3 )
1728 INPUT_PORTS_END
1729
1730 INPUT_PORTS_START( moonwalk )
1731 PORT_START /* player 1 */
1732 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
1733 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
1734 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 )
1735 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1736 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
1737 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
1738 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
1739 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
1740 PORT_START /* player 2 */
1741 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
1742 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
1743 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
1744 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1745 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
1746 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
1747 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
1748 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
1749 PORT_START /* service */
1750 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1751 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1752 PORT_BITX(0x04, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
1753 PORT_BITX(0x08, 0x08, IPT_TILT, "Test", KEYCODE_T, IP_JOY_NONE )
1754 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
1755 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
1756 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1757 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1758 SYS16_COINAGE
1759 PORT_START /* DSW1 */
1760 PORT_DIPNAME( 0x01, 0x01, "2 Credits to Start" )
1761 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
1762 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1763 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
1764 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
1765 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1766 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Lives ) )
1767 PORT_DIPSETTING( 0x04, "2" )
1768 PORT_DIPSETTING( 0x00, "3" )
1769 PORT_DIPNAME( 0x08, 0x08, "Player Vitality" )
1770 PORT_DIPSETTING( 0x08, "Low" )
1771 PORT_DIPSETTING( 0x00, "High" )
1772 PORT_DIPNAME( 0x10, 0x00, "Play Mode" )
1773 PORT_DIPSETTING( 0x10, "2 Players" )
1774 PORT_DIPSETTING( 0x00, "3 Players" )
1775 PORT_DIPNAME( 0x20, 0x20, "Coin Mode" )
1776 PORT_DIPSETTING( 0x20, "Common" )
1777 PORT_DIPSETTING( 0x00, "Individual" )
1778 PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
1779 PORT_DIPSETTING( 0x80, "Easy" )
1780 PORT_DIPSETTING( 0xc0, "Normal" )
1781 PORT_DIPSETTING( 0x40, "Hard" )
1782 PORT_DIPSETTING( 0x00, "Hardest" )
1783 PORT_START /* player 3 */
1784 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
1785 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
1786 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
1787 // PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1788 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START3 )
1789 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER3 )
1790 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER3 )
1791 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
1792 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER3 )
1793 INPUT_PORTS_END
1794
1795 INPUT_PORTS_START( shdancer )
1796 PORT_START /* player 1 */
1797 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
1798 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
1799 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 )
1800 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1801 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
1802 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
1803 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
1804 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
1805 PORT_START /* player 2 */
1806 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
1807 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
1808 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
1809 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1810 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
1811 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
1812 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
1813 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
1814 SYS16_SERVICE
1815 SYS16_COINAGE
1816 PORT_START /* DSW1 */
1817 PORT_DIPNAME( 0x01, 0x01, "2 Credits to Start" )
1818 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
1819 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1820 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
1821 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
1822 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1823 PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
1824 PORT_DIPSETTING( 0x00, "2" )
1825 PORT_DIPSETTING( 0x0c, "3" )
1826 PORT_DIPSETTING( 0x08, "4" )
1827 PORT_DIPSETTING( 0x04, "5" )
1828 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) )
1829 PORT_DIPSETTING( 0x20, "Easy" )
1830 PORT_DIPSETTING( 0x30, "Normal" )
1831 PORT_DIPSETTING( 0x10, "Hard" )
1832 PORT_DIPSETTING( 0x00, "Hardest" )
1833 PORT_DIPNAME( 0xc0, 0xc0, "Time Adjust" )
1834 PORT_DIPSETTING( 0x00, "2.20" )
1835 PORT_DIPSETTING( 0x40, "2.40" )
1836 PORT_DIPSETTING( 0xc0, "3.00" )
1837 PORT_DIPSETTING( 0x80, "3.30" )
1838 INPUT_PORTS_END
1839
1840 /*****************************************************************************/
1841
1842 // Alien Storm
1843 ROM_START( astorm )
1844 ROM_REGION( 0x080000, REGION_CPU1, 0 ) /* 68000 code */
1845 ROM_LOAD16_BYTE( "epr13085.bin", 0x000000, 0x40000, CRC(15f74e2d) SHA1(30d9d099ec18907edd3d20df312565c3bd5a80de) )
1846 ROM_LOAD16_BYTE( "epr13084.bin", 0x000001, 0x40000, CRC(9687b38f) SHA1(cdeb5b4f06ad4ad8ca579392c1ec901487b08e76) )
1847
1848 ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1849 ROM_LOAD( "epr13073.bin", 0x00000, 0x40000, CRC(df5d0a61) SHA1(79ad71de348f280bad847566c507b7a31f022292) )
1850 ROM_LOAD( "epr13074.bin", 0x40000, 0x40000, CRC(787afab8) SHA1(a119042bb2dad54e9733bfba4eaab0ac5fc0f9e7) )
1851 ROM_LOAD( "epr13075.bin", 0x80000, 0x40000, CRC(4e01b477) SHA1(4178ce4a87ea427c3b0195e64acef6cddfb3485f) )
1852
1853 ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* sprites */
1854 ROM_LOAD16_BYTE( "mpr13082.bin", 0x000001, 0x40000, CRC(a782b704) SHA1(ba15bdfbc267b8d86f03e5310ce60846ff846de3) )
1855 ROM_LOAD16_BYTE( "mpr13089.bin", 0x000000, 0x40000, CRC(2a4227f0) SHA1(47284dce8f896f8e8eace9c20302842cacb479c1) )
1856 ROM_LOAD16_BYTE( "mpr13081.bin", 0x080001, 0x40000, CRC(eb510228) SHA1(4cd387b160ec7050e1300ebe708853742169e643) )
1857 ROM_LOAD16_BYTE( "mpr13088.bin", 0x080000, 0x40000, CRC(3b6b4c55) SHA1(970495c54b3e1893ee8060f6ca1338c2cbbd1074) )
1858 ROM_LOAD16_BYTE( "mpr13080.bin", 0x100001, 0x40000, CRC(e668eefb) SHA1(d4a087a238b4d3ac2d23fe148d6a73018e348a89) )
1859 ROM_LOAD16_BYTE( "mpr13087.bin", 0x100000, 0x40000, CRC(2293427d) SHA1(4fd07763ff060afd594e3f64fa4750577f56c80e) )
1860 ROM_LOAD16_BYTE( "epr13079.bin", 0x180001, 0x40000, CRC(de9221ed) SHA1(5e2e434d1aa547be1e5652fc906d2e18c5122023) )
1861 ROM_LOAD16_BYTE( "epr13086.bin", 0x180000, 0x40000, CRC(8c9a71c4) SHA1(40b774765ac888792aad46b6351a24b7ef40d2dc) )
1862
1863 ROM_REGION( 0x100000, REGION_CPU2, 0 ) /* sound CPU */
1864 ROM_LOAD( "epr13083.bin", 0x10000, 0x20000, CRC(5df3af20) SHA1(e49105fcfd5bf37d14bd760f6adca5ce2412883d) )
1865 ROM_LOAD( "epr13076.bin", 0x30000, 0x40000, CRC(94e6c76e) SHA1(f99e58a9bf372c41af211bd9b9ea3ac5b924c6ed) )
1866 ROM_LOAD( "epr13077.bin", 0x70000, 0x40000, CRC(e2ec0d8d) SHA1(225b0d223b7282cba7710300a877fb4a2c6dbabb) )
1867 ROM_LOAD( "epr13078.bin", 0xb0000, 0x40000, CRC(15684dc5) SHA1(595051006de24f791dae937584e502ff2fa31d9c) )
1868 ROM_END
1869
1870 ROM_START( astorm2p )
1871 ROM_REGION( 0x080000, REGION_CPU1, 0 ) /* 68000 code */
1872 ROM_LOAD16_BYTE( "epr13182.bin", 0x000000, 0x40000, CRC(e31f2a1c) SHA1(690ee10c36e5bb6175470fb5564527e0e4a94d2c) )
1873 ROM_LOAD16_BYTE( "epr13181.bin", 0x000001, 0x40000, CRC(78cd3b26) SHA1(a81b807c5da625d8e4648ae80c41e4ca3870c0fa) )
1874
1875 ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1876 ROM_LOAD( "epr13073.bin", 0x00000, 0x40000, CRC(df5d0a61) SHA1(79ad71de348f280bad847566c507b7a31f022292) )
1877 ROM_LOAD( "epr13074.bin", 0x40000, 0x40000, CRC(787afab8) SHA1(a119042bb2dad54e9733bfba4eaab0ac5fc0f9e7) )
1878 ROM_LOAD( "epr13075.bin", 0x80000, 0x40000, CRC(4e01b477) SHA1(4178ce4a87ea427c3b0195e64acef6cddfb3485f) )
1879
1880 ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* sprites */
1881 ROM_LOAD16_BYTE( "mpr13082.bin", 0x000001, 0x40000, CRC(a782b704) SHA1(ba15bdfbc267b8d86f03e5310ce60846ff846de3) )
1882 ROM_LOAD16_BYTE( "mpr13089.bin", 0x000000, 0x40000, CRC(2a4227f0) SHA1(47284dce8f896f8e8eace9c20302842cacb479c1) )
1883 ROM_LOAD16_BYTE( "mpr13081.bin", 0x080001, 0x40000, CRC(eb510228) SHA1(4cd387b160ec7050e1300ebe708853742169e643) )
1884 ROM_LOAD16_BYTE( "mpr13088.bin", 0x080000, 0x40000, CRC(3b6b4c55) SHA1(970495c54b3e1893ee8060f6ca1338c2cbbd1074) )
1885 ROM_LOAD16_BYTE( "mpr13080.bin", 0x100001, 0x40000, CRC(e668eefb) SHA1(d4a087a238b4d3ac2d23fe148d6a73018e348a89) )
1886 ROM_LOAD16_BYTE( "mpr13087.bin", 0x100000, 0x40000, CRC(2293427d) SHA1(4fd07763ff060afd594e3f64fa4750577f56c80e) )
1887 ROM_LOAD16_BYTE( "epr13079.bin", 0x180001, 0x40000, CRC(de9221ed) SHA1(5e2e434d1aa547be1e5652fc906d2e18c5122023) )
1888 ROM_LOAD16_BYTE( "epr13086.bin", 0x180000, 0x40000, CRC(8c9a71c4) SHA1(40b774765ac888792aad46b6351a24b7ef40d2dc) )
1889
1890 ROM_REGION( 0x100000, REGION_CPU2, 0 ) /* sound CPU */
1891 ROM_LOAD( "ep13083a.bin", 0x10000, 0x20000, CRC(e7528e06) SHA1(1f4e618692c20aeb316d578c5ded12440eb072ab) )
1892 ROM_LOAD( "epr13076.bin", 0x30000, 0x40000, CRC(94e6c76e) SHA1(f99e58a9bf372c41af211bd9b9ea3ac5b924c6ed) )
1893 ROM_LOAD( "epr13077.bin", 0x70000, 0x40000, CRC(e2ec0d8d) SHA1(225b0d223b7282cba7710300a877fb4a2c6dbabb) )
1894 ROM_LOAD( "epr13078.bin", 0xb0000, 0x40000, CRC(15684dc5) SHA1(595051006de24f791dae937584e502ff2fa31d9c) )
1895 ROM_END
1896
1897 ROM_START( astormbl )
1898 ROM_REGION( 0x080000, REGION_CPU1, 0 ) /* 68000 code */
1899 ROM_LOAD16_BYTE( "astorm.a6", 0x000000, 0x40000, CRC(7682ed3e) SHA1(b857352ad9c66488e91f60989472638c483e4ae8) )
1900 ROM_LOAD16_BYTE( "astorm.a5", 0x000001, 0x40000, CRC(efe9711e) SHA1(496fd9e30941fde1658fab7292a669ef7964cecb) )
1901
1902 ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1903 ROM_LOAD( "epr13073.bin", 0x00000, 0x40000, CRC(df5d0a61) SHA1(79ad71de348f280bad847566c507b7a31f022292) )
1904 ROM_LOAD( "epr13074.bin", 0x40000, 0x40000, CRC(787afab8) SHA1(a119042bb2dad54e9733bfba4eaab0ac5fc0f9e7) )
1905 ROM_LOAD( "epr13075.bin", 0x80000, 0x40000, CRC(4e01b477) SHA1(4178ce4a87ea427c3b0195e64acef6cddfb3485f) )
1906
1907 ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* sprites */
1908 ROM_LOAD16_BYTE( "mpr13082.bin", 0x000001, 0x40000, CRC(a782b704) SHA1(ba15bdfbc267b8d86f03e5310ce60846ff846de3) )
1909 ROM_LOAD16_BYTE( "astorm.a11", 0x000000, 0x40000, CRC(7829c4f3) SHA1(3adb7aa7f70163d3848c98316e18b9783c41d663) )
1910 ROM_LOAD16_BYTE( "mpr13081.bin", 0x080001, 0x40000, CRC(eb510228) SHA1(4cd387b160ec7050e1300ebe708853742169e643) )
1911 ROM_LOAD16_BYTE( "mpr13088.bin", 0x080000, 0x40000, CRC(3b6b4c55) SHA1(970495c54b3e1893ee8060f6ca1338c2cbbd1074) )
1912 ROM_LOAD16_BYTE( "mpr13080.bin", 0x100001, 0x40000, CRC(e668eefb) SHA1(d4a087a238b4d3ac2d23fe148d6a73018e348a89) )
1913 ROM_LOAD16_BYTE( "mpr13087.bin", 0x100000, 0x40000, CRC(2293427d) SHA1(4fd07763ff060afd594e3f64fa4750577f56c80e) )
1914 ROM_LOAD16_BYTE( "epr13079.bin", 0x180001, 0x40000, CRC(de9221ed) SHA1(5e2e434d1aa547be1e5652fc906d2e18c5122023) )
1915 ROM_LOAD16_BYTE( "epr13086.bin", 0x180000, 0x40000, CRC(8c9a71c4) SHA1(40b774765ac888792aad46b6351a24b7ef40d2dc) )
1916
1917 ROM_REGION( 0x100000, REGION_CPU2, 0 ) /* sound CPU */
1918 ROM_LOAD( "epr13083.bin", 0x10000, 0x20000, CRC(5df3af20) SHA1(e49105fcfd5bf37d14bd760f6adca5ce2412883d) )
1919 ROM_LOAD( "epr13076.bin", 0x30000, 0x40000, CRC(94e6c76e) SHA1(f99e58a9bf372c41af211bd9b9ea3ac5b924c6ed) )
1920 ROM_LOAD( "epr13077.bin", 0x70000, 0x40000, CRC(e2ec0d8d) SHA1(225b0d223b7282cba7710300a877fb4a2c6dbabb) )
1921 ROM_LOAD( "epr13078.bin", 0xb0000, 0x40000, CRC(15684dc5) SHA1(595051006de24f791dae937584e502ff2fa31d9c) )
1922 ROM_END
1923
1924 // Bloxeed
1925 ROM_START( bloxeed )
1926 ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 code */
1927 ROM_LOAD16_BYTE( "rom-e.rom", 0x000000, 0x20000, CRC(a481581a) SHA1(5ce5a0a082622919d2fe0e7d52ec807b2e2c25a2) )
1928 ROM_LOAD16_BYTE( "rom-o.rom", 0x000001, 0x20000, CRC(dd1bc3bf) SHA1(c0d79862a349ea4dac103c17325633c5dd4a93d1) )
1929
1930 ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1931 ROM_LOAD( "scr0.rom", 0x00000, 0x10000, CRC(e024aa33) SHA1(d734be240cd05031aaadf9735c0b1b00e8e6d4cb) )
1932 ROM_LOAD( "scr1.rom", 0x10000, 0x10000, CRC(8041b814) SHA1(29fa49ba9a73eed07865a86ea774e2c6a60aed5b) )
1933 ROM_LOAD( "scr2.rom", 0x20000, 0x10000, CRC(de32285e) SHA1(8994dc128d6a23763e5fcfca1868b336d4aa0a21) )
1934
1935 ROM_REGION( 0x20000, REGION_GFX2, 0 ) /* sprites */
1936 ROM_LOAD16_BYTE( "obj0-e.rom", 0x00001, 0x10000, CRC(90d31a8c) SHA1(1747652a5109ce65add197cf06535f2463a99fdc) )
1937 ROM_LOAD16_BYTE( "obj0-o.rom", 0x00000, 0x10000, CRC(f0c0f49d) SHA1(7ecd591265165f3149241e2ceb5059faab88360f) )
1938
1939 ROM_REGION( 0x20000, REGION_CPU2, 0 ) /* sound CPU */
1940 ROM_LOAD( "sound0.rom", 0x00000, 0x20000, CRC(6f2fc63c) SHA1(3cce22c8f80013f05b5a2d36c42a61a81e4d6cbd) )
1941 ROM_END
1942
1943 // Clutch Hitter
1944 ROM_START( cltchitr )
1945 ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 code */
1946 ROM_LOAD16_BYTE( "epr13795.6a", 0x000000, 0x40000, CRC(b0b60b67) SHA1(ee3325ddb7461008f556c1696157a766225b9ef5) )
1947 ROM_LOAD16_BYTE( "epr13751.4a", 0x000001, 0x40000, CRC(c8d80233) SHA1(69cdbb989f580abbb006820347becf8d233fa773) )
1948 ROM_LOAD16_BYTE( "epr13786.7a", 0x080000, 0x40000, CRC(3095dac0) SHA1(20edce74b6f2a82a3865613e601a0e212615d0e4) )
1949 ROM_LOAD16_BYTE( "epr13784.5a", 0x080001, 0x40000, CRC(80c8180d) SHA1(80e72ab7d97714009fd31b3d50176af84b0dcdb7) )
1950
1951 ROM_REGION( 0x180000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1952 ROM_LOAD( "mpr13787.10a", 0x000000, 0x80000, CRC(f05c68c6) SHA1(b6a0535b6c734a0c89fdb6506c32ffe6ab3aa8cd) )
1953 ROM_LOAD( "mpr13788.11a", 0x080000, 0x80000, CRC(0106fea6) SHA1(e16e2a469ecbbc704021dee6264db30aa0898368) )
1954 ROM_LOAD( "mpr13789.12a", 0x100000, 0x80000, CRC(09ba8835) SHA1(72e83dd1793a7f4b2b881e71f262493e3d4992b3) )
1955
1956 ROM_REGION( 0x300000, REGION_GFX2, 0 ) /* sprites */
1957 ROM_LOAD16_BYTE( "mpr13773.1c", 0x000001, 0x80000, CRC(3fc600e5) SHA1(8bec4ecf6a4e4b38d13133960036a5a4800a668e) )
1958 ROM_LOAD16_BYTE( "mpr13774.2c", 0x000000, 0x80000, CRC(2411a824) SHA1(0e383ccc4e0830ffb395d5102e2950610c147007) )
1959 ROM_LOAD16_BYTE( "mpr13775.3c", 0x100001, 0x80000, CRC(cf527bf6) SHA1(1f9cf1f0e92709f0465dc97ebbdaa715a419f7a7) )
1960 ROM_LOAD16_BYTE( "mpr13779.10c", 0x100000, 0x80000, CRC(c707f416) SHA1(e6a9d89849f7f1c303a3ca29a629f81397945a2d) )
1961 ROM_LOAD16_BYTE( "mpr13780.11c", 0x200001, 0x80000, CRC(a4c341e0) SHA1(15a0b5a42b56465a7b7df98968cc2ed177ce6f59) )
1962 ROM_LOAD16_BYTE( "mpr13781.12c", 0x200000, 0x80000, CRC(f33b13af) SHA1(d3eb64dcf12d532454bf3cd6c86528c0f11ee316) )
1963
1964 ROM_REGION( 0x180000, REGION_CPU2, 0 ) /* sound CPU */
1965 ROM_LOAD( "epr13793.7c", 0x000000, 0x80000, CRC(a3d31944) SHA1(44d17aa0598eacfac4b12c8955fd1067ca09abbd) )
1966 ROM_LOAD( "epr13791.5c", 0x080000, 0x80000, CRC(35c16d80) SHA1(7ed04600748c5efb63e25f066daa163e9c0d8038) )
1967 ROM_LOAD( "epr13792.6c", 0x100000, 0x80000, CRC(808f9695) SHA1(d50677d20083ad56dbf0864db05f76f93a4e9eba) )
1968 ROM_END
1969
1970 // DD Crew
1971 ROM_START( ddcrew )
1972 ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 code */
1973 ROM_LOAD16_BYTE( "14153.6a", 0x000000, 0x40000, CRC(e01fae0c) SHA1(7166f955324f73e94d8ae6d2a5b2f4b497e62933) )
1974 ROM_LOAD16_BYTE( "14152.4a", 0x000001, 0x40000, CRC(69c7b571) SHA1(9fe4815a1cff0a46a754a6bdee12abaf7beb6501) )
1975 ROM_LOAD16_BYTE( "14141.7a", 0x080000, 0x40000, CRC(080a494b) SHA1(64522dccbf6ed856ab80aa185454183df87d7ae9) )
1976 ROM_LOAD16_BYTE( "14139.5a", 0x080001, 0x40000, CRC(06c31531) SHA1(d084cb72bf83578b34e959bb60a0695faf4161f8) )
1977
1978 ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1979 ROM_LOAD( "14127.1c", 0x00000, 0x40000, CRC(2228cd88) SHA1(5774bb6a401c3da05c5f3c9d3996b20bb3713cb2) )
1980 ROM_LOAD( "14128.2c", 0x40000, 0x40000, CRC(edba8e10) SHA1(25a2833ead4ca363802ddc2eb97c40976502921a) )
1981 ROM_LOAD( "14129.3c", 0x80000, 0x40000, CRC(e8ecc305) SHA1(a26d0c5c7826cd315f8b2c27e5a503a2a7b535c4) )
1982
1983 ROM_REGION( 0x400000, REGION_GFX2, 0 ) /* sprites */
1984 ROM_LOAD16_BYTE( "14134.10c", 0x000001, 0x80000, CRC(4fda6a4b) SHA1(a9e582e494ab967e8f3ccf4d5844bb8ef889928c) )
1985 ROM_LOAD16_BYTE( "14142.10a", 0x000000, 0x80000, CRC(3cbf1f2a) SHA1(80b6b006936740087786acd538e28aca85fa6894) )
1986 ROM_LOAD16_BYTE( "14135.11c", 0x100001, 0x80000, CRC(e9c74876) SHA1(aff9d071e77f01c6937188bf67be38fa898343e6) )
1987 ROM_LOAD16_BYTE( "14143.11a", 0x100000, 0x80000, CRC(59022c31) SHA1(5e1409fe0f29284dc6a3ffacf69b761aae09f132) )
1988 ROM_LOAD16_BYTE( "14136.12c", 0x200001, 0x80000, CRC(720d9858) SHA1(8ebcb8b3e9555ca48b28908d47dcbbd654398b6f) )
1989 ROM_LOAD16_BYTE( "14144.12a", 0x200000, 0x80000, CRC(7775fdd4) SHA1(a03cac039b400b651a4bf2167a8f2338f488ce26) )
1990 ROM_LOAD16_BYTE( "14137.13c", 0x300001, 0x80000, CRC(846c4265) SHA1(58d0c213d085fb4dee18b7aefb05087d9d522950) )
1991 ROM_LOAD16_BYTE( "14145.13a", 0x300000, 0x80000, CRC(0e76c797) SHA1(9a44dc948e84e5acac36e80105c2349ee78e6cfa) )
1992
1993 ROM_REGION( 0x1a0000, REGION_CPU2, 0 ) /* sound CPU */
1994 ROM_LOAD( "14133.7c", 0x000000, 0x20000, CRC(cff96665) SHA1(b4dc7f1a03415ebebdb99a82ae89328c345e7678) )
1995 ROM_LOAD( "14130.4c", 0x020000, 0x80000, CRC(948f34a1) SHA1(d4c6728d5eea06cee6ac15a34ec8cccb4cc4b982) )
1996 ROM_LOAD( "14131.5c", 0x0a0000, 0x80000, CRC(be5a7d0b) SHA1(c2c598b0cf711273fdd568f3401375e9772c1d61) )
1997 ROM_LOAD( "14132.6c", 0x120000, 0x80000, CRC(1fae0220) SHA1(8414c74318ea915816c6b67801ac7c8c3fc905f9) )
1998 ROM_END
1999
2000 // Laser Ghost
2001 ROM_START( lghost )
2002 ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 code */
2003 ROM_LOAD16_BYTE( "13429", 0x000000, 0x20000, CRC(0e0ccf26) SHA1(072c39771f4d8806c05499bad9a0e7f63709333e) )
2004 ROM_LOAD16_BYTE( "13437", 0x000001, 0x20000, CRC(38b4dc2f) SHA1(28071d4bc1e658e97f6a63ac07aea5e38cbced24) )
2005 ROM_LOAD16_BYTE( "13411", 0x040000, 0x20000, CRC(c3aeae07) SHA1(922f6c6cd2cb2c191be221434e7a1bbff81b57cb) )
2006 ROM_LOAD16_BYTE( "13413", 0x040001, 0x20000, CRC(75f43e21) SHA1(a8f65972604bf4ad886d90ac2afffccfc27ac769) )
2007
2008 ROM_REGION( 0x60000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2009 ROM_LOAD( "13414", 0x00000, 0x20000, CRC(82025f3b) SHA1(bc496ec3bea7eb61534b964f11f32c297b36bf10) )
2010 ROM_LOAD( "13415", 0x20000, 0x20000, CRC(a76852e9) SHA1(45b570e6b28678d98540a2b6c87f0fea1c98a471) )
2011 ROM_LOAD( "13416", 0x40000, 0x20000, CRC(e88db149) SHA1(a43a3682cbdcfd8dce22f2f0b6bdff8b3e26765e) )
2012
2013 ROM_REGION( 0x100000, REGION_GFX2, 0 ) /* sprites */
2014 ROM_LOAD16_BYTE( "13603", 0x00001, 0x20000, CRC(2e3cc07b) SHA1(520cd9a264860f8e9bbeeb19b203cceaa404fc4e) )
2015 ROM_LOAD16_BYTE( "13604", 0x00000, 0x20000, CRC(576388af) SHA1(699b9223d90ec69a56f3c7721315c0344d00696a) )
2016 ROM_LOAD16_BYTE( "13421", 0x40001, 0x20000, CRC(abee8771) SHA1(67cfbaefd3a5a45574bb127b5cdbd26a8537cde0) )
2017 ROM_LOAD16_BYTE( "13424", 0x40000, 0x20000, CRC(260ab077) SHA1(1d9ad0e80341f3993364e03dc0be5f4d0a2261af) )
2018 ROM_LOAD16_BYTE( "13422", 0x80001, 0x20000, CRC(36cef12c) SHA1(50d29ffd59f245a911b5116dbcac27d0ed467888) )
2019 ROM_LOAD16_BYTE( "13425", 0x80000, 0x20000, CRC(e0ff8807) SHA1(88b1d8d32662ba6d261a5a447418bdcd62ca7acb) )
2020 ROM_LOAD16_BYTE( "13423", 0xc0001, 0x20000, CRC(5b8e0053) SHA1(40b2b44f9956e36294194e3c26973b33556201a8) )
2021 ROM_LOAD16_BYTE( "13426", 0xc0000, 0x20000, CRC(c689853b) SHA1(3444c1a256531b4371bc79e93d37f6b0ff0ca2d9) )
2022
2023 ROM_REGION( 0x80000, REGION_CPU2, 0 ) /* sound CPU */
2024 ROM_LOAD( "13417", 0x00000, 0x20000, CRC(cd7beb49) SHA1(2435ce000f1eefdd06b27ea93e22fd82c0e999d2) )
2025 ROM_LOAD( "13420", 0x20000, 0x20000, CRC(03199cbb) SHA1(e6195ff31a2fd5a298669995d7f8a174c750fdc6) )
2026 ROM_LOAD( "13419", 0x40000, 0x20000, CRC(a918ef68) SHA1(1e0394e77b175ab3a552c3e18351427c6e8cc64b) )
2027 ROM_LOAD( "13418", 0x60000, 0x20000, CRC(4006c9f1) SHA1(e9cecfafdbcfdf716aa2ba911273b18550faea98) )
2028 ROM_END
2029
2030 ROM_START( moonwalk )
2031 ROM_REGION( 0x080000, REGION_CPU1, 0 ) /* 68000 code - custom cpu 317-0159 */
2032 ROM_LOAD16_BYTE( "epr13235.a6", 0x000000, 0x40000, CRC(6983e129) SHA1(a8dd430620ab8ce11df46aa208d762d47f510464) )
2033 ROM_LOAD16_BYTE( "epr13234.a5", 0x000001, 0x40000, CRC(c9fd20f2) SHA1(9476e6481e6d8f223acd52f543fa04f408d48dc3) )
2034
2035 ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2036 ROM_LOAD( "mpr13216.b1", 0x00000, 0x40000, CRC(862d2c03) SHA1(3c5446d702a639b62a602c6d687f9875d8450218) )
2037 ROM_LOAD( "mpr13217.b2", 0x40000, 0x40000, CRC(7d1ac3ec) SHA1(8495357304f1df135bba77ef3b96e79a883b8ff0) )
2038 ROM_LOAD( "mpr13218.b3", 0x80000, 0x40000, CRC(56d3393c) SHA1(50a2d065060692c9ecaa56046a781cb21d93e554) )
2039
2040 ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* sprites */
2041 ROM_LOAD16_BYTE( "mpr13224.b11", 0x000001, 0x40000, CRC(c59f107b) SHA1(10fa60fca6e34eda277c483bb1c0e81bb88c8a47) )
2042 ROM_LOAD16_BYTE( "mpr13231.a11", 0x000000, 0x40000, CRC(a5e96346) SHA1(a854f4dd5dc16975373255110fdb8ab3d121b1af) )
2043 ROM_LOAD16_BYTE( "mpr13223.b10", 0x080001, 0x40000, CRC(364f60ff) SHA1(9ac887ec0b2e32b504b7c6a5f3bb1ce3fe41a15a) )
2044 ROM_LOAD16_BYTE( "mpr13230.a10", 0x080000, 0x40000, CRC(9550091f) SHA1(bb6e898f7b540e130fd338c10f74609a7604cef4) )
2045 ROM_LOAD16_BYTE( "mpr13222.b9", 0x100001, 0x40000, CRC(523df3ed) SHA1(2e496125e75decd674c3a08404fbdb53791a965d) )
2046 ROM_LOAD16_BYTE( "mpr13229.a9", 0x100000, 0x40000, CRC(f40dc45d) SHA1(e9468cef428f52ecdf6837c6d9a9fea934e7676c) )
2047 ROM_LOAD16_BYTE( "epr13221.b8", 0x180001, 0x40000, CRC(9ae7546a) SHA1(5413b0131881b0b32bac8de51da9a299835014bb) )
2048 ROM_LOAD16_BYTE( "epr13228.a8", 0x180000, 0x40000, CRC(de3786be) SHA1(2279bb390aa3efab9aeee0a643e5cb6a4f5933b6) )
2049
2050 ROM_REGION( 0x100000, REGION_CPU2, 0 ) /* sound CPU */
2051 ROM_LOAD( "epr13225.a4", 0x10000, 0x20000, CRC(56c2e82b) SHA1(d5755a1bb6e889d274dc60e883d4d65f12fdc877) )
2052 ROM_LOAD( "mpr13219.b4", 0x30000, 0x40000, CRC(19e2061f) SHA1(2dcf1718a43dab4da53b4f67722664e70ddd2169) )
2053 ROM_LOAD( "mpr13220.b5", 0x70000, 0x40000, CRC(58d4d9ce) SHA1(725e73a656845b02702ef131b4c0aa2a73cdd02e) )
2054 ROM_LOAD( "mpr13249.b6", 0xb0000, 0x40000, CRC(623edc5d) SHA1(c32d9f818d40f311877fbe6532d9e95b6045c3c4) )
2055 ROM_END
2056
2057 ROM_START( moonwlka )
2058 ROM_REGION( 0x080000, REGION_CPU1, 0 ) /* 68000 code - custom cpu 317-0158 */
2059 ROM_LOAD16_BYTE( "epr13233", 0x000000, 0x40000, CRC(f3dac671) SHA1(cd9d372c7e272d2371bc1f9fb0167831c804423f) )
2060 ROM_LOAD16_BYTE( "epr13232", 0x000001, 0x40000, CRC(541d8bdf) SHA1(6a99153fddca246ba070e93c4bacd145f15f76bf) )
2061
2062 ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2063 ROM_LOAD( "mpr13216.b1", 0x00000, 0x40000, CRC(862d2c03) SHA1(3c5446d702a639b62a602c6d687f9875d8450218) )
2064 ROM_LOAD( "mpr13217.b2", 0x40000, 0x40000, CRC(7d1ac3ec) SHA1(8495357304f1df135bba77ef3b96e79a883b8ff0) )
2065 ROM_LOAD( "mpr13218.b3", 0x80000, 0x40000, CRC(56d3393c) SHA1(50a2d065060692c9ecaa56046a781cb21d93e554) )
2066
2067 ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* sprites */
2068 ROM_LOAD16_BYTE( "mpr13224.b11", 0x000001, 0x40000, CRC(c59f107b) SHA1(10fa60fca6e34eda277c483bb1c0e81bb88c8a47) )
2069 ROM_LOAD16_BYTE( "mpr13231.a11", 0x000000, 0x40000, CRC(a5e96346) SHA1(a854f4dd5dc16975373255110fdb8ab3d121b1af) )
2070 ROM_LOAD16_BYTE( "mpr13223.b10", 0x080001, 0x40000, CRC(364f60ff) SHA1(9ac887ec0b2e32b504b7c6a5f3bb1ce3fe41a15a) )
2071 ROM_LOAD16_BYTE( "mpr13230.a10", 0x080000, 0x40000, CRC(9550091f) SHA1(bb6e898f7b540e130fd338c10f74609a7604cef4) )
2072 ROM_LOAD16_BYTE( "mpr13222.b9", 0x100001, 0x40000, CRC(523df3ed) SHA1(2e496125e75decd674c3a08404fbdb53791a965d) )
2073 ROM_LOAD16_BYTE( "mpr13229.a9", 0x100000, 0x40000, CRC(f40dc45d) SHA1(e9468cef428f52ecdf6837c6d9a9fea934e7676c) )
2074 ROM_LOAD16_BYTE( "epr13221.b8", 0x180001, 0x40000, CRC(9ae7546a) SHA1(5413b0131881b0b32bac8de51da9a299835014bb) )
2075 ROM_LOAD16_BYTE( "epr13228.a8", 0x180000, 0x40000, CRC(de3786be) SHA1(2279bb390aa3efab9aeee0a643e5cb6a4f5933b6) )
2076
2077 ROM_REGION( 0x100000, REGION_CPU2, 0 ) /* sound CPU */
2078 ROM_LOAD( "epr13225.a4", 0x10000, 0x20000, CRC(56c2e82b) SHA1(d5755a1bb6e889d274dc60e883d4d65f12fdc877) )
2079 ROM_LOAD( "mpr13219.b4", 0x30000, 0x40000, CRC(19e2061f) SHA1(2dcf1718a43dab4da53b4f67722664e70ddd2169) )
2080 ROM_LOAD( "mpr13220.b5", 0x70000, 0x40000, CRC(58d4d9ce) SHA1(725e73a656845b02702ef131b4c0aa2a73cdd02e) )
2081 ROM_LOAD( "mpr13249.b6", 0xb0000, 0x40000, CRC(623edc5d) SHA1(c32d9f818d40f311877fbe6532d9e95b6045c3c4) )
2082 ROM_END
2083
2084 ROM_START( moonwlkb )
2085 ROM_REGION( 0x080000, REGION_CPU1, 0 ) /* 68000 code */
2086 ROM_LOAD16_BYTE( "moonwlkb.01", 0x000000, 0x10000, CRC(f49cdb16) SHA1(34b7e98d31c3b9db2f0f055d7b249b0e5e5cb746) )
2087 ROM_LOAD16_BYTE( "moonwlkb.05", 0x000001, 0x10000, CRC(c483f29f) SHA1(8fdfa764d8e49754844a9dc001400d439f9af9f0) )
2088 ROM_LOAD16_BYTE( "moonwlkb.02", 0x020000, 0x10000, CRC(0bde1896) SHA1(42731ae90d56918dc50c0dcb53d092dcfb957159) )
2089 ROM_LOAD16_BYTE( "moonwlkb.06", 0x020001, 0x10000, CRC(5b9fc688) SHA1(53d8143c3876548f63b392f0ea16c0e7c30a7917) )
2090 ROM_LOAD16_BYTE( "moonwlkb.03", 0x040000, 0x10000, CRC(0c5fe15c) SHA1(626e3f37f019448c3c96bf73b2d2b5fe4b3716c0) )
2091 ROM_LOAD16_BYTE( "moonwlkb.07", 0x040001, 0x10000, CRC(9e600704) SHA1(efd3d450b26f81dc2b74f44b4aaf906fa017e437) )
2092 ROM_LOAD16_BYTE( "moonwlkb.04", 0x060000, 0x10000, CRC(64692f79) SHA1(ad7f32997b78863e3aa3214018cdd24e3ec9c5cb) )
2093 ROM_LOAD16_BYTE( "moonwlkb.08", 0x060001, 0x10000, CRC(546ca530) SHA1(51f74878fdc221fee026e2e6a7ca96f290c8947f) )
2094
2095 ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2096 ROM_LOAD( "mpr13216.b1", 0x00000, 0x40000, CRC(862d2c03) SHA1(3c5446d702a639b62a602c6d687f9875d8450218) )
2097 ROM_LOAD( "mpr13217.b2", 0x40000, 0x40000, CRC(7d1ac3ec) SHA1(8495357304f1df135bba77ef3b96e79a883b8ff0) )
2098 ROM_LOAD( "mpr13218.b3", 0x80000, 0x40000, CRC(56d3393c) SHA1(50a2d065060692c9ecaa56046a781cb21d93e554) )
2099
2100 ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* sprites */
2101 ROM_LOAD16_BYTE( "mpr13224.b11", 0x000001, 0x40000, CRC(c59f107b) SHA1(10fa60fca6e34eda277c483bb1c0e81bb88c8a47) )
2102 ROM_LOAD16_BYTE( "mpr13231.a11", 0x000000, 0x40000, CRC(a5e96346) SHA1(a854f4dd5dc16975373255110fdb8ab3d121b1af) )
2103 ROM_LOAD16_BYTE( "mpr13223.b10", 0x080001, 0x40000, CRC(364f60ff) SHA1(9ac887ec0b2e32b504b7c6a5f3bb1ce3fe41a15a) )
2104 ROM_LOAD16_BYTE( "mpr13230.a10", 0x080000, 0x40000, CRC(9550091f) SHA1(bb6e898f7b540e130fd338c10f74609a7604cef4) )
2105 ROM_LOAD16_BYTE( "mpr13222.b9", 0x100001, 0x40000, CRC(523df3ed) SHA1(2e496125e75decd674c3a08404fbdb53791a965d) )
2106 ROM_LOAD16_BYTE( "mpr13229.a9", 0x100000, 0x40000, CRC(f40dc45d) SHA1(e9468cef428f52ecdf6837c6d9a9fea934e7676c) )
2107 ROM_LOAD16_BYTE( "epr13221.b8", 0x180001, 0x40000, CRC(9ae7546a) SHA1(5413b0131881b0b32bac8de51da9a299835014bb) )
2108 ROM_LOAD16_BYTE( "epr13228.a8", 0x180000, 0x40000, CRC(de3786be) SHA1(2279bb390aa3efab9aeee0a643e5cb6a4f5933b6) )
2109
2110 ROM_REGION( 0x100000, REGION_CPU2, 0 ) /* sound CPU */
2111 ROM_LOAD( "epr13225.a4", 0x10000, 0x20000, CRC(56c2e82b) SHA1(d5755a1bb6e889d274dc60e883d4d65f12fdc877) )
2112 ROM_LOAD( "mpr13219.b4", 0x30000, 0x40000, CRC(19e2061f) SHA1(2dcf1718a43dab4da53b4f67722664e70ddd2169) )
2113 ROM_LOAD( "mpr13220.b5", 0x70000, 0x40000, CRC(58d4d9ce) SHA1(725e73a656845b02702ef131b4c0aa2a73cdd02e) )
2114 ROM_LOAD( "mpr13249.b6", 0xb0000, 0x40000, CRC(623edc5d) SHA1(c32d9f818d40f311877fbe6532d9e95b6045c3c4) )
2115 ROM_END
2116
2117 // Shadow Dancer
2118 ROM_START( shdancer )
2119 ROM_REGION( 0x080000, REGION_CPU1, 0 ) /* 68000 code */
2120 ROM_LOAD16_BYTE( "shdancer.a6", 0x000000, 0x40000, CRC(3d5b3fa9) SHA1(370dd6e8ab9fb9e77eee9262d13fbdb4cf575abc) )
2121 ROM_LOAD16_BYTE( "shdancer.a5", 0x000001, 0x40000, CRC(2596004e) SHA1(1b993aa74e7559f7e99253fd2144db9449c04cce) )
2122
2123 ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2124 ROM_LOAD( "sd12712.bin", 0x00000, 0x40000, CRC(9bdabe3d) SHA1(4bb30fa2d4cdefe4a864cef7153b516bc5b02c42) )
2125 ROM_LOAD( "sd12713.bin", 0x40000, 0x40000, CRC(852d2b1c) SHA1(8e5bc83d45e48b621ea3016207f2028fe41701e6) )
2126 ROM_LOAD( "sd12714.bin", 0x80000, 0x40000, CRC(448226ce) SHA1(3060e4a43311069e2691d659c1e0c1a48edfeedb) )
2127
2128 ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* sprites */
2129 ROM_LOAD16_BYTE( "sd12719.bin", 0x000001, 0x40000, CRC(d6888534) SHA1(2201f1921a68cf39e5a94b487c90e48d032d630f) )
2130 ROM_LOAD16_BYTE( "sd12726.bin", 0x000000, 0x40000, CRC(ff344945) SHA1(2743778c42f53321f9691d60bbf94ea8baf1382f) )
2131 ROM_LOAD16_BYTE( "sd12718.bin", 0x080001, 0x40000, CRC(ba2efc0c) SHA1(459a1a280f870c94aefb70127ed007cb090ed203) )
2132 ROM_LOAD16_BYTE( "sd12725.bin", 0x080000, 0x40000, CRC(268a0c17) SHA1(2756054fa3c3aed30a1fce5e41acb0ceaebe90b5) )
2133 ROM_LOAD16_BYTE( "sd12717.bin", 0x100001, 0x40000, CRC(c81cc4f8) SHA1(22f364e85057ceef533e051c8d0755b9691c5ec4) )
2134 ROM_LOAD16_BYTE( "sd12724.bin", 0x100000, 0x40000, CRC(0f4903dc) SHA1(851bd60e877c9e39be23dc1fde91efc9da513c29) )
2135 ROM_LOAD16_BYTE( "sd12716.bin", 0x180001, 0x40000, CRC(a870e629) SHA1(29f6633240f9737ec19e16100decc7aa045b2060) )
2136 ROM_LOAD16_BYTE( "sd12723.bin", 0x180000, 0x40000, CRC(c606cf90) SHA1(cb53ae9a6da1eb31c584173d1fbbd1c8539fb54c) )
2137
2138 ROM_REGION( 0x70000, REGION_CPU2, 0 ) /* sound CPU */
2139 ROM_LOAD( "sd12720.bin", 0x10000, 0x20000, CRC(7a0d8de1) SHA1(eca5e2104e5b3e772d083a718171234f06ea8a55) )
2140 ROM_LOAD( "sd12715.bin", 0x30000, 0x40000, CRC(07051a52) SHA1(d48658497f4a34665d3e051f893ff057c38925ae) )
2141 ROM_END
2142
2143 ROM_START( shdancbl )
2144 ROM_REGION( 0x080000, REGION_CPU1, 0 ) /* 68000 code */
2145 ROM_LOAD16_BYTE( "ic39", 0x000000, 0x10000, CRC(adc1781c) SHA1(b2ca2831a48779df7533e6b2a406ee539e1f650c) )
2146 ROM_LOAD16_BYTE( "ic53", 0x000001, 0x10000, CRC(1c1ac463) SHA1(21075f7afae372daef197f04f5f12d14479a8140) )
2147 ROM_LOAD16_BYTE( "ic38", 0x020000, 0x10000, CRC(cd6e155b) SHA1(e37b53cc431533091d26b37be9b8e30494de5faf) )
2148 ROM_LOAD16_BYTE( "ic52", 0x020001, 0x10000, CRC(bb3c49a4) SHA1(ab01a6de1a6d338d30f9cfea7b3bf80dda67f215) )
2149 ROM_LOAD16_BYTE( "ic37", 0x040000, 0x10000, CRC(1bd8d5c3) SHA1(4d663362c059e112ac6c742d80200be98d50d175) )
2150 ROM_LOAD16_BYTE( "ic51", 0x040001, 0x10000, CRC(ce2e71b4) SHA1(3e251319cd4c8c63c66e6b92b2eef514d79dba8e) )
2151 ROM_LOAD16_BYTE( "ic36", 0x060000, 0x10000, CRC(bb861290) SHA1(62ea8eec74c6b1f5530ee86f97ad821daeac26ad) )
2152 ROM_LOAD16_BYTE( "ic50", 0x060001, 0x10000, CRC(7f7b82b1) SHA1(675020b57ce689b2767ff83773e2b828cda5aeed) )
2153
2154 ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2155 ROM_LOAD( "ic4", 0x00000, 0x20000, CRC(f0a016fe) SHA1(1426f3fbf50a04a8c5e998e071ca0e78d15f37a8) )
2156 ROM_LOAD( "ic18", 0x20000, 0x20000, CRC(f6bee053) SHA1(39ee5edfcc67bb4855217c7428254f3e8c862ba0) )
2157 ROM_LOAD( "ic3", 0x40000, 0x20000, CRC(e07e6b5d) SHA1(bdeb1193415049d0c9261ca261073bdd9e251b88) )
2158 ROM_LOAD( "ic17", 0x60000, 0x20000, CRC(f59deba1) SHA1(21188d22fe607281bb7da1e1f418a33d4a315695) )
2159 ROM_LOAD( "ic2", 0x80000, 0x20000, CRC(60095070) SHA1(913c2ee51fb6f838f3c6cbd27032bdf754fbadf1) )
2160 ROM_LOAD( "ic16", 0xa0000, 0x20000, CRC(0f0d5dd3) SHA1(76812e2f831256a8b6598257dd84a7f07443642e) )
2161
2162 ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* sprites */
2163
2164 // 12719
2165 ROM_LOAD16_BYTE( "ic73", 0x000001, 0x10000, CRC(59e77c96) SHA1(08da058529ac83352a4528d3792a21edda348f7a) )
2166 ROM_LOAD16_BYTE( "ic74", 0x020001, 0x10000, CRC(90ea5407) SHA1(4bdd93c86cb35822517433d491aa8be6857dd36c) )
2167 ROM_LOAD16_BYTE( "ic75", 0x040001, 0x10000, CRC(27d2fa61) SHA1(0ba3cd9448e54ce9fc9433f3edd28de9a4e451e9) )
2168 ROM_LOAD16_BYTE( "ic76", 0x060001, 0x10000, CRC(f36db688) SHA1(a527298ce9ca1d9f5aa7b9eac93985f34ca8119f) )
2169
2170 // 12726
2171 ROM_LOAD16_BYTE( "ic58", 0x000000, 0x10000, CRC(9cd5c8c7) SHA1(54c2d0a683bda37eb9a75f90f4ca5e620c09c4cf) )
2172 ROM_LOAD16_BYTE( "ic59", 0x020000, 0x10000, CRC(ff40e872) SHA1(bd2c4aac427d106a46318f4cb2eb05c34d3c70b6) )
2173 ROM_LOAD16_BYTE( "ic60", 0x040000, 0x10000, CRC(826d7245) SHA1(bb3394de058bd63b9939cd05f22c925e0cdc840a) )
2174 ROM_LOAD16_BYTE( "ic61", 0x060000, 0x10000, CRC(dcf8068b) SHA1(9c78de224df76fc90fb90f1bbd9b22dad0874f69) )
2175
2176 // 12718
2177 ROM_LOAD16_BYTE( "ic77", 0x080001, 0x10000, CRC(f93470b7) SHA1(1041afa43aa8d0589d6def9743721cdbda617f78) )
2178 ROM_LOAD16_BYTE( "ic78", 0x0A0001, 0x10000, CRC(4d523ea3) SHA1(053c30778017127dddeae0783af463aef17bcc9a) ) // corrupt? (bad sprite when dog attacts in attract mode)
2179 ROM_LOAD16_BYTE( "ic95", 0x0C0001, 0x10000, CRC(828b8294) SHA1(f2cdb882fb0709a909e6ef98f0315aceeb8bf283) )
2180 ROM_LOAD16_BYTE( "ic94", 0x0E0001, 0x10000, CRC(542b2d1e) SHA1(1ce91aea6c49e6e365a91c30ca3049682c2162da) )
2181
2182 // 12725
2183 ROM_LOAD16_BYTE( "ic62", 0x080000, 0x10000, CRC(50ca8065) SHA1(8c0d6ae34b9da6c376df387e8fc8b1068bcb4dcb) )
2184 ROM_LOAD16_BYTE( "ic63", 0x0A0000, 0x10000, CRC(d1866aa9) SHA1(524c82a12a1c484a246b8d49d9f05a774d008108) )
2185 ROM_LOAD16_BYTE( "ic90", 0x0C0000, 0x10000, CRC(3602b758) SHA1(d25b6c8420e07d0f2ac3e1d8717f14738466df16) )
2186 ROM_LOAD16_BYTE( "ic89", 0x0E0000, 0x10000, CRC(1ba4be93) SHA1(6f4fe2016e375be3df477436f5cde7508a24ecd1) )
2187
2188 // 12717
2189 ROM_LOAD16_BYTE( "ic79", 0x100001, 0x10000, CRC(f22548ee) SHA1(723cb7604784c6715817daa8c86c18c6bcd1388d) )
2190 ROM_LOAD16_BYTE( "ic80", 0x120001, 0x10000, CRC(6209f7f9) SHA1(09b33c99d972a62af8ef56dacfa6262f002aba0c) )
2191 ROM_LOAD16_BYTE( "ic81", 0x140001, 0x10000, CRC(34692f23) SHA1(56126a81ac279662e3e3423da5205f65a62c4600) )
2192 ROM_LOAD16_BYTE( "ic82", 0x160001, 0x10000, CRC(7ae40237) SHA1(fae97cfcfd3cd557da3330158831e4727c438745) )
2193
2194 // 12724
2195 ROM_LOAD16_BYTE( "ic64", 0x100000, 0x10000, CRC(7a8b7bcc) SHA1(00cbbbc4b3db48ca3ac65ff56b02c7d63a1b898a) )
2196 ROM_LOAD16_BYTE( "ic65", 0x120000, 0x10000, CRC(90ffca14) SHA1(00962e5309a79ce34c6f420036054bc607595dfe) )
2197 ROM_LOAD16_BYTE( "ic66", 0x140000, 0x10000, CRC(5d655517) SHA1(2a1c197dde62bd7946ca7b5f1c2833bdbc2e2e32) )
2198 ROM_LOAD16_BYTE( "ic67", 0x160000, 0x10000, CRC(0e5d0855) SHA1(3c15088f7fdda5c2bba9c89d244bbcff022f05fd) )
2199
2200 // 12716
2201 ROM_LOAD16_BYTE( "ic83", 0x180001, 0x10000, CRC(a9040a32) SHA1(7b0b375285f528b2833c50892b55b0d4c550506d) )
2202 ROM_LOAD16_BYTE( "ic84", 0x1A0001, 0x10000, CRC(d6810031) SHA1(a82857a9ac442fbe076cdafcf7390765391ed136) )
2203 ROM_LOAD16_BYTE( "ic92", 0x1C0001, 0x10000, CRC(b57d5cb5) SHA1(636f1a07a84d37cecbe388a2f585893c4611436c) )
2204 ROM_LOAD16_BYTE( "ic91", 0x1E0001, 0x10000, CRC(49def6c8) SHA1(d8b2cc1993f0808553f87bf56fdbe47374576c5a) )
2205
2206 // 12723
2207 ROM_LOAD16_BYTE( "ic68", 0x180000, 0x10000, CRC(8d684e53) SHA1(00e82ddaf875a7452ff978b7b7eb87a1a5a8fb64) )
2208 ROM_LOAD16_BYTE( "ic69", 0x1A0000, 0x10000, CRC(c47d32e2) SHA1(92b21f51abdd7950fb09d965b1d71b7bffac31ec) )
2209 ROM_LOAD16_BYTE( "ic88", 0x1C0000, 0x10000, CRC(9de140e1) SHA1(f1125e056a898a4fa519b49ae866c5c742e36bf7) )
2210 ROM_LOAD16_BYTE( "ic87", 0x1E0000, 0x10000, CRC(8172a991) SHA1(6d12b1533a19cb02613b473cc8ba73ece1f2a2fc) )
2211
2212 ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
2213 ROM_LOAD( "ic45", 0x10000, 0x10000, CRC(576b3a81) SHA1(b65356a3837ed3875634ab0cbcd61acce44f2bb9) )
2214 ROM_LOAD( "ic46", 0x20000, 0x10000, CRC(c84e8c84) SHA1(f57895bedb6152c30733e91e6f4795702a62ac3a) )
2215 ROM_END
2216
2217 ROM_START( shdancrj )
2218 ROM_REGION( 0x080000, REGION_CPU1, 0 ) /* 68000 code */
2219 ROM_LOAD16_BYTE( "sd12722b.bin", 0x000000, 0x40000, CRC(c00552a2) SHA1(74fddfe596bc00bc11c4a06e2103417e8fd334f6) )
2220 ROM_LOAD16_BYTE( "sd12721b.bin", 0x000001, 0x40000, CRC(653d351a) SHA1(1a03a154cb81a5a2f28c38aecdd6b5d107ea7ffa) )
2221
2222 ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2223 ROM_LOAD( "sd12712.bin", 0x00000, 0x40000, CRC(9bdabe3d) SHA1(4bb30fa2d4cdefe4a864cef7153b516bc5b02c42) )
2224 ROM_LOAD( "sd12713.bin", 0x40000, 0x40000, CRC(852d2b1c) SHA1(8e5bc83d45e48b621ea3016207f2028fe41701e6) )
2225 ROM_LOAD( "sd12714.bin", 0x80000, 0x40000, CRC(448226ce) SHA1(3060e4a43311069e2691d659c1e0c1a48edfeedb) )
2226
2227 ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* sprites */
2228 ROM_LOAD16_BYTE( "sd12719.bin", 0x000001, 0x40000, CRC(d6888534) SHA1(2201f1921a68cf39e5a94b487c90e48d032d630f) )
2229 ROM_LOAD16_BYTE( "sd12726.bin", 0x000000, 0x40000, CRC(ff344945) SHA1(2743778c42f53321f9691d60bbf94ea8baf1382f) )
2230 ROM_LOAD16_BYTE( "sd12718.bin", 0x080001, 0x40000, CRC(ba2efc0c) SHA1(459a1a280f870c94aefb70127ed007cb090ed203) )
2231 ROM_LOAD16_BYTE( "sd12725.bin", 0x080000, 0x40000, CRC(268a0c17) SHA1(2756054fa3c3aed30a1fce5e41acb0ceaebe90b5) )
2232 ROM_LOAD16_BYTE( "sd12717.bin", 0x100001, 0x40000, CRC(c81cc4f8) SHA1(22f364e85057ceef533e051c8d0755b9691c5ec4) )
2233 ROM_LOAD16_BYTE( "sd12724.bin", 0x100000, 0x40000, CRC(0f4903dc) SHA1(851bd60e877c9e39be23dc1fde91efc9da513c29) )
2234 ROM_LOAD16_BYTE( "sd12716.bin", 0x180001, 0x40000, CRC(a870e629) SHA1(29f6633240f9737ec19e16100decc7aa045b2060) )
2235 ROM_LOAD16_BYTE( "sd12723.bin", 0x180000, 0x40000, CRC(c606cf90) SHA1(cb53ae9a6da1eb31c584173d1fbbd1c8539fb54c) )
2236
2237 ROM_REGION( 0x70000, REGION_CPU2, 0 ) /* sound CPU */
2238 ROM_LOAD( "sd12720.bin", 0x10000, 0x20000, CRC(7a0d8de1) SHA1(eca5e2104e5b3e772d083a718171234f06ea8a55) )
2239 ROM_LOAD( "sd12715.bin", 0x30000, 0x40000, CRC(07051a52) SHA1(d48658497f4a34665d3e051f893ff057c38925ae) )
2240 ROM_END
2241
2242 ROM_START( shdancrb )
2243 ROM_REGION( 0x080000, REGION_CPU1, 0 ) /* 68000 code */
2244 ROM_LOAD16_BYTE( "epr12772b.bin", 0x000000, 0x40000, CRC(6868a4d4) SHA1(f0d142c81fe1eba4f5c59a0163e25c80ccfe85d7) )
2245 ROM_LOAD16_BYTE( "epr12771b.bin", 0x000001, 0x40000, CRC(04e30c84) SHA1(6c5705f7de6ee1bd754b51988cc7d1008f817c78) )
2246
2247 ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2248 ROM_LOAD( "sd12712.bin", 0x00000, 0x40000, CRC(9bdabe3d) SHA1(4bb30fa2d4cdefe4a864cef7153b516bc5b02c42) )
2249 ROM_LOAD( "sd12713.bin", 0x40000, 0x40000, CRC(852d2b1c) SHA1(8e5bc83d45e48b621ea3016207f2028fe41701e6) )
2250 ROM_LOAD( "sd12714.bin", 0x80000, 0x40000, CRC(448226ce) SHA1(3060e4a43311069e2691d659c1e0c1a48edfeedb) )
2251
2252 ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* sprites */
2253 ROM_LOAD16_BYTE( "sd12719.bin", 0x000001, 0x40000, CRC(d6888534) SHA1(2201f1921a68cf39e5a94b487c90e48d032d630f) )
2254 ROM_LOAD16_BYTE( "sd12726.bin", 0x000000, 0x40000, CRC(ff344945) SHA1(2743778c42f53321f9691d60bbf94ea8baf1382f) )
2255 ROM_LOAD16_BYTE( "sd12718.bin", 0x080001, 0x40000, CRC(ba2efc0c) SHA1(459a1a280f870c94aefb70127ed007cb090ed203) )
2256 ROM_LOAD16_BYTE( "sd12725.bin", 0x080000, 0x40000, CRC(268a0c17) SHA1(2756054fa3c3aed30a1fce5e41acb0ceaebe90b5) )
2257 ROM_LOAD16_BYTE( "sd12717.bin", 0x100001, 0x40000, CRC(c81cc4f8) SHA1(22f364e85057ceef533e051c8d0755b9691c5ec4) )
2258 ROM_LOAD16_BYTE( "sd12724.bin", 0x100000, 0x40000, CRC(0f4903dc) SHA1(851bd60e877c9e39be23dc1fde91efc9da513c29) )
2259 ROM_LOAD16_BYTE( "sd12716.bin", 0x180001, 0x40000, CRC(a870e629) SHA1(29f6633240f9737ec19e16100decc7aa045b2060) )
2260 ROM_LOAD16_BYTE( "sd12723.bin", 0x180000, 0x40000, CRC(c606cf90) SHA1(cb53ae9a6da1eb31c584173d1fbbd1c8539fb54c) )
2261
2262 ROM_REGION( 0x70000, REGION_CPU2, 0 ) /* sound CPU */
2263 ROM_LOAD( "sd12720.bin", 0x10000, 0x20000, CRC(7a0d8de1) SHA1(eca5e2104e5b3e772d083a718171234f06ea8a55) )
2264 ROM_LOAD( "sd12715.bin", 0x30000, 0x40000, CRC(07051a52) SHA1(d48658497f4a34665d3e051f893ff057c38925ae) )
2265 ROM_END
2266
2267
2268
2269 /*****************************************************************************/
2270
2271 GAMEX(1990, astorm, 0, astorm, astorm, astorm, ROT0, "Sega", "Alien Storm", GAME_NOT_WORKING )
2272 GAMEX(1990, astorm2p, astorm, astorm, astorm, astorm, ROT0, "Sega", "Alien Storm (2 Player)", GAME_NOT_WORKING )
2273 GAME( 1990, astormbl, astorm, astorm, astorm, astorm, ROT0, "bootleg", "Alien Storm (bootleg)" )
2274 GAMEX(1990, moonwalk, 0, moonwalk, moonwalk, moonwalk, ROT0, "Sega", "Michael Jackson's Moonwalker (Set 1)", GAME_NOT_WORKING )
2275 GAMEX(1990, moonwlka, moonwalk, moonwalk, moonwalk, moonwalk, ROT0, "Sega", "Michael Jackson's Moonwalker (Set 2)", GAME_NOT_WORKING )
2276 GAME( 1990, moonwlkb, moonwalk, moonwalk, moonwalk, moonwalk, ROT0, "bootleg", "Michael Jackson's Moonwalker (bootleg)" )
2277 GAME( 1989, shdancer, 0, shdancer, shdancer, shdancer, ROT0, "Sega", "Shadow Dancer (US)" )
2278 GAMEX( 1989, shdancbl, shdancer, shdancbl, shdancer, shdancbl, ROT0, "bootleg", "Shadow Dancer (bootleg)", GAME_IMPERFECT_GRAPHICS)
2279 GAME( 1989, shdancrj, shdancer, shdancrj, shdancer, shdancrj, ROT0, "Sega", "Shadow Dancer (Japan)" )
2280 GAME( 1989, shdancrb, shdancer, shdancrb, shdancer, shdancrb, ROT0, "Sega", "Shadow Dancer (Rev.B)" )
2281
2282 GAMEX(1990, bloxeed, 0, shdancer, shdancer, shdancer, ROT0, "Sega", "Bloxeed", GAME_NOT_WORKING )
2283 GAMEX(19??, cltchitr, 0, shdancer, shdancer, shdancer, ROT0, "Sega", "Clutch Hitter", GAME_NOT_WORKING )
2284 GAMEX(19??, ddcrew, 0, shdancer, shdancer, shdancer, ROT0, "Sega", "DD Crew", GAME_NOT_WORKING )
2285 GAMEX(19??, lghost, 0, shdancer, shdancer, shdancer, ROT0, "Sega", "Laser Ghost", GAME_NOT_WORKING )
2286