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