1 // license:BSD-3-Clause
2 // copyright-holders:Philip Bennett,Carlos A. Lozano, Rob Rosenbrock, Phil Stroffolino, Ernesto Corvi, David Haywood, R. Belmont
3 /***************************************************************************
4 
5 Double Dragon     (c) 1987 Technos Japan
6 Double Dragon II  (c) 1988 Technos Japan
7 
8 Driver by Carlos A. Lozano, Rob Rosenbrock, Phil Stroffolino, Ernesto Corvi
9 Toffy / Super Toffy added by David Haywood
10 Thanks to Bryan McPhail for spotting the Toffy program rom encryption
11 Toffy / Super Toffy sound hooked up by R. Belmont.
12 
13 
14 Modifications by Phil Bennett Sep 2013:
15 
16 Cleanups based on Double Dragon schematics.
17 Fixed sub CPU interrupt handling and common RAM access.
18 Removed now-unnecessary workarounds.
19 
20 Modifications by Bryan McPhail, June-November 2003:
21 
22 Correct video & interrupt timing derived from Xain schematics and confirmed on real DD board.
23 Corrected interrupt handling, especially to MCU (but one semi-hack remains).
24 TStrike now boots but sprites don't appear (I had them working at one point, can't remember what broke them again).
25 Dangerous Dungeons fixed.
26 World version of Double Dragon added (actually same roms as the bootleg, but confirmed from real board)
27 Removed stereo audio flag (still on Toffy - does it have it?)
28 
29 todo:
30 
31 banking in Toffy / Super toffy
32 
33 -- Read Me --
34 
35 Super Toffy - Unico 1994
36 
37 Main cpu:   MC6809EP
38 Sound cpu:  MC6809P
39 Sound:      YM2151
40 Clocks:     12 MHz, 3.579MHz
41 
42 Graphics custom: MDE-2001
43 
44 -- --
45 
46 Does this make Super Toffy the sequel to a rip-off / bootleg of a
47 conversion kit which could be applied to a bootleg double dragon :-p?
48 
49 
50 2008-08
51 Dip locations verified with manual for ddragon & ddragon2
52 
53 ***************************************************************************/
54 
55 #include "emu.h"
56 #include "includes/ddragon.h"
57 
58 #include "cpu/m6809/hd6309.h"
59 #include "cpu/m6800/m6801.h"
60 #include "cpu/m6809/m6809.h"
61 #include "cpu/z80/z80.h"
62 #include "sound/2203intf.h"
63 #include "sound/okim6295.h"
64 #include "sound/ym2151.h"
65 
66 #include "speaker.h"
67 
68 
69 #define MAIN_CLOCK      XTAL(12'000'000)
70 #define SOUND_CLOCK     XTAL(3'579'545)
71 #define MCU_CLOCK       MAIN_CLOCK / 3
72 #define PIXEL_CLOCK     MAIN_CLOCK / 2
73 
74 
75 /*************************************
76  *
77  *  Video timing
78  *
79  *************************************/
80 
81 /*
82     Vertical timing counts as follows:
83 
84         08,09,0A,0B,...,FC,FD,FE,FF,E8,E9,EA,EB,...,FC,FD,FE,FF,
85         08,09,....
86 
87     Thus, it counts from 08 to FF, then resets to E8 and counts to FF again.
88     This gives (256 - 8) + (256 - 232) = 248 + 24 = 272 total scanlines.
89 
90     VBLK is signalled starting when the counter hits F8, and continues through
91     the reset to E8 and through until the next reset to 08 again.
92 
93     Since MAME's video timing is 0-based, we need to convert this.
94 */
95 
scanline_to_vcount(int scanline)96 int ddragon_state::scanline_to_vcount( int scanline )
97 {
98 	int vcount = scanline + 8;
99 	if (vcount < 0x100)
100 		return vcount;
101 	else
102 		return (vcount - 0x18) | 0x100;
103 }
104 
TIMER_DEVICE_CALLBACK_MEMBER(ddragon_state::ddragon_scanline)105 TIMER_DEVICE_CALLBACK_MEMBER(ddragon_state::ddragon_scanline)
106 {
107 	int scanline = param;
108 	int screen_height = m_screen->height();
109 	int vcount_old = scanline_to_vcount((scanline == 0) ? screen_height - 1 : scanline - 1);
110 	int vcount = scanline_to_vcount(scanline);
111 
112 	/* update to the current point */
113 	if (scanline > 0)
114 		m_screen->update_partial(scanline - 1);
115 
116 	/* on the rising edge of VBLK (vcount == F8), signal an NMI */
117 	if (vcount == 0xf8)
118 		m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
119 
120 	/* set 1ms signal on rising edge of vcount & 8 */
121 	if (!(vcount_old & 8) && (vcount & 8))
122 		m_maincpu->set_input_line(M6809_FIRQ_LINE, ASSERT_LINE);
123 }
124 
125 
126 
127 /*************************************
128  *
129  *  System setup and intialization
130  *
131  *************************************/
132 
MACHINE_START_MEMBER(ddragon_state,ddragon)133 MACHINE_START_MEMBER(ddragon_state,ddragon)
134 {
135 	/* configure banks */
136 	if (m_mainbank)
137 		m_mainbank->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x4000);
138 
139 	/* register for save states */
140 	save_item(NAME(m_scrollx_hi));
141 	save_item(NAME(m_scrolly_hi));
142 	save_item(NAME(m_adpcm_pos));
143 	save_item(NAME(m_adpcm_end));
144 	save_item(NAME(m_adpcm_idle));
145 	save_item(NAME(m_adpcm_data));
146 	save_item(NAME(m_ddragon_sub_port));
147 }
148 
149 
MACHINE_RESET_MEMBER(ddragon_state,ddragon)150 MACHINE_RESET_MEMBER(ddragon_state,ddragon)
151 {
152 	m_scrollx_hi = 0;
153 	m_scrolly_hi = 0;
154 	m_ddragon_sub_port = 0;
155 	m_adpcm_pos[0] = m_adpcm_pos[1] = 0;
156 	m_adpcm_end[0] = m_adpcm_end[1] = 0;
157 	m_adpcm_idle[0] = m_adpcm_idle[1] = true;
158 	m_adpcm_data[0] = m_adpcm_data[1] = -1;
159 }
160 
161 
162 
163 /*************************************
164  *
165  *  Bank switching
166  *
167  *************************************/
168 
ddragon_bankswitch_w(uint8_t data)169 void ddragon_state::ddragon_bankswitch_w(uint8_t data)
170 {
171 	/*
172 	    76543210
173 	    .......x    X-scroll D9 (H9BT)
174 	    ......x.    Y-scroll D9 (V9BT)
175 	    .....x..    /Screen flip (*1P/2P)
176 	    ....x...    /Sub CPU reset (*RESET)
177 	    ...x....    /Sub CPU halt (*HALT)
178 	    xxx.....    ROM bank (*BANK)
179 	*/
180 	m_scrollx_hi = data & 0x01;
181 	m_scrolly_hi = (data & 0x02) >> 1;
182 	flip_screen_set(~data & 0x04);
183 
184 	m_subcpu->set_input_line(INPUT_LINE_RESET, data & 0x08 ? CLEAR_LINE : ASSERT_LINE);
185 	m_subcpu->set_input_line(INPUT_LINE_HALT, data & 0x10 ? ASSERT_LINE : CLEAR_LINE);
186 	m_mainbank->set_entry((data & 0xe0) >> 5);
187 }
188 
189 
toffy_bankswitch_w(uint8_t data)190 void toffy_state::toffy_bankswitch_w(uint8_t data)
191 {
192 	m_scrollx_hi = data & 0x01;
193 	m_scrolly_hi = (data & 0x02) >> 1;
194 
195 //  flip_screen_set(machine(), ~data & 0x04);
196 
197 	/* I don't know ... */
198 	m_mainbank->set_entry((data & 0x20) >> 5);
199 }
200 
201 
darktowr_mcu_bank_r(offs_t offset)202 uint8_t darktowr_state::darktowr_mcu_bank_r(offs_t offset)
203 {
204 	// logerror("BankRead %05x %08x\n",m_maincpu->pc(),offset);
205 
206 	/* Horrible hack - the alternate TStrike set is mismatched against the MCU,
207 	so just hack around the protection here.  (The hacks are 'right' as I have
208 	the original source code & notes to this version of TStrike to examine).
209 	*/
210 	if (!strcmp(machine().system().name, "tstrike"))
211 	{
212 		/* Static protection checks at boot-up */
213 		if (m_maincpu->pc() == 0x9ace)
214 			return 0;
215 		if (m_maincpu->pc() == 0x9ae4)
216 			return 0x63;
217 
218 		/* Just return whatever the code is expecting */
219 		return m_rambase[0xbe1];
220 	}
221 
222 	if (offset == 0x1401 || offset == 1)
223 		return m_mcu_port_a_out;
224 
225 	logerror("Unmapped mcu bank read %04x\n",offset);
226 	return 0xff;
227 }
228 
229 
darktowr_mcu_bank_w(offs_t offset,uint8_t data)230 void darktowr_state::darktowr_mcu_bank_w(offs_t offset, uint8_t data)
231 {
232 	logerror("BankWrite %05x %08x %08x\n", m_maincpu->pc(), offset, data);
233 
234 	if (offset == 0x1400 || offset == 0)
235 	{
236 		uint8_t const value(bitswap<8>(data, 0, 1, 2, 3, 4, 5, 6, 7));
237 		m_mcu->pb_w(value);
238 		logerror("MCU PORT 1 -> %04x (from %04x)\n", value, data);
239 	}
240 }
241 
242 
darktowr_bankswitch_w(uint8_t data)243 void darktowr_state::darktowr_bankswitch_w(uint8_t data)
244 {
245 	m_scrollx_hi = (data & 0x01);
246 	m_scrolly_hi = ((data & 0x02) >> 1);
247 
248 //  flip_screen_set(machine(), ~data & 0x04);
249 
250 	m_subcpu->set_input_line(INPUT_LINE_RESET, data & 0x08 ? CLEAR_LINE : ASSERT_LINE);
251 	m_subcpu->set_input_line(INPUT_LINE_HALT, data & 0x10 ? ASSERT_LINE : CLEAR_LINE);
252 
253 	m_darktowr_bank->set_bank((data & 0xe0) >> 5);
254 }
255 
256 
257 
258 /*************************************
259  *
260  *  Interrupt control
261  *
262  *************************************/
263 
ddragon_interrupt_ack(offs_t offset,uint8_t data)264 void ddragon_state::ddragon_interrupt_ack(offs_t offset, uint8_t data)
265 {
266 	switch (offset)
267 	{
268 		case 0: /* 380b - NMI ack */
269 			m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
270 			break;
271 
272 		case 1: /* 380c - FIRQ ack */
273 			m_maincpu->set_input_line(M6809_FIRQ_LINE, CLEAR_LINE);
274 			break;
275 
276 		case 2: /* 380d - IRQ ack */
277 			m_maincpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE);
278 			break;
279 
280 		case 3: /* 380e - SND IRQ and latch */
281 			m_soundlatch->write(data);
282 			break;
283 
284 		case 4: /* 380f - MCU IRQ */
285 			if (m_subcpu)
286 				m_subcpu->set_input_line(m_sprite_irq, ASSERT_LINE);
287 			break;
288 	}
289 }
290 
291 
ddragon_interrupt_r(offs_t offset)292 uint8_t ddragon_state::ddragon_interrupt_r(offs_t offset)
293 {
294 	ddragon_interrupt_ack(offset, 0xff);
295 	return 0xff;
296 }
297 
298 
ddragon_interrupt_w(offs_t offset,uint8_t data)299 void ddragon_state::ddragon_interrupt_w(offs_t offset, uint8_t data)
300 {
301 	ddragon_interrupt_ack(offset, data);
302 }
303 
304 
ddragon2_sub_irq_ack_w(uint8_t data)305 void ddragon_state::ddragon2_sub_irq_ack_w(uint8_t data)
306 {
307 	m_subcpu->set_input_line(m_sprite_irq, CLEAR_LINE);
308 }
309 
310 
ddragon2_sub_irq_w(uint8_t data)311 void ddragon_state::ddragon2_sub_irq_w(uint8_t data)
312 {
313 	m_maincpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
314 }
315 
316 
ddragonba_port_w(uint8_t data)317 void ddragon_state::ddragonba_port_w(uint8_t data)
318 {
319 	if ((data & 0x8) == 0)
320 		m_subcpu->set_input_line(m_sprite_irq, CLEAR_LINE);
321 
322 	if (!(m_ddragon_sub_port & 0x10) && (data & 0x10))
323 		m_maincpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
324 
325 	m_ddragon_sub_port = data;
326 }
327 
328 
329 
330 /*************************************
331  *
332  *  MCU handlers
333  *
334  *************************************/
335 
READ_LINE_MEMBER(ddragon_state::subcpu_bus_free_r)336 READ_LINE_MEMBER(ddragon_state::subcpu_bus_free_r)
337 {
338 	// Corresponds to BA (Bus Available) on the HD63701
339 	if (m_subcpu)
340 		return m_subcpu->suspended(SUSPEND_REASON_RESET | SUSPEND_REASON_HALT);
341 	else
342 		return 0;
343 }
344 
345 
mcu_port_a_w(offs_t offset,uint8_t data)346 void darktowr_state::mcu_port_a_w(offs_t offset, uint8_t data)
347 {
348 	logerror("%s: McuWrite %08x %08x\n", machine().describe_context(), offset, data);
349 	m_mcu_port_a_out = data;
350 }
351 
352 
sub_port6_w(uint8_t data)353 void ddragon_state::sub_port6_w(uint8_t data)
354 {
355 	// Port 6
356 	if ((data & 0x1) == 0)
357 		m_subcpu->set_input_line(m_sprite_irq, CLEAR_LINE);
358 
359 	if (!(m_ddragon_sub_port & 0x2) && (data & 0x2))
360 		m_maincpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
361 
362 	m_ddragon_sub_port = data;
363 }
364 
365 
366 
367 /*************************************
368  *
369  *  Sprite RAM hacks
370  *
371  *************************************/
372 
ddragon_comram_r(offs_t offset)373 uint8_t ddragon_state::ddragon_comram_r(offs_t offset)
374 {
375 	// Access to shared RAM is prevented when the sub CPU is active
376 	if (!m_subcpu->suspended(SUSPEND_REASON_RESET | SUSPEND_REASON_HALT))
377 		return 0xff;
378 
379 	return m_comram[offset];
380 }
381 
382 
ddragon_comram_w(offs_t offset,uint8_t data)383 void ddragon_state::ddragon_comram_w(offs_t offset, uint8_t data)
384 {
385 	if (!m_subcpu->suspended(SUSPEND_REASON_RESET | SUSPEND_REASON_HALT))
386 		return;
387 
388 	m_comram[offset] = data;
389 }
390 
391 
392 
393 /*************************************
394  *
395  *  ADPCM sound
396  *
397  *************************************/
398 
dd_adpcm_w(offs_t offset,uint8_t data)399 void ddragon_state::dd_adpcm_w(offs_t offset, uint8_t data)
400 {
401 	int chip = offset & 1;
402 
403 	switch (offset >> 1)
404 	{
405 		case 3:
406 			m_adpcm_idle[chip] = true;
407 			m_adpcm[chip]->reset_w(1);
408 			break;
409 
410 		case 2:
411 			m_adpcm_pos[chip] = (data & 0x7f) << 9;
412 			break;
413 
414 		case 1:
415 			m_adpcm_end[chip] = (data & 0x7f) << 9;
416 			break;
417 
418 		case 0:
419 			m_adpcm_idle[chip] = false;
420 			m_adpcm[chip]->reset_w(0);
421 			break;
422 	}
423 }
424 
dd_adpcm_int(int chip)425 void ddragon_state::dd_adpcm_int( int chip )
426 {
427 	if (m_adpcm_pos[chip] >= m_adpcm_end[chip] || m_adpcm_pos[chip] >= m_adpcm_rom[chip].length())
428 	{
429 		m_adpcm_idle[chip] = true;
430 		m_adpcm[chip]->reset_w(1);
431 	}
432 	else if (m_adpcm_data[chip] != -1)
433 	{
434 		m_adpcm[chip]->data_w(m_adpcm_data[chip] & 0x0f);
435 		m_adpcm_data[chip] = -1;
436 	}
437 	else
438 	{
439 		m_adpcm_data[chip] = m_adpcm_rom[chip][m_adpcm_pos[chip]++];
440 		m_adpcm[chip]->data_w(m_adpcm_data[chip] >> 4);
441 	}
442 }
443 
WRITE_LINE_MEMBER(ddragon_state::dd_adpcm_int_1)444 WRITE_LINE_MEMBER(ddragon_state::dd_adpcm_int_1)
445 {
446 	dd_adpcm_int(0);
447 }
448 
WRITE_LINE_MEMBER(ddragon_state::dd_adpcm_int_2)449 WRITE_LINE_MEMBER(ddragon_state::dd_adpcm_int_2)
450 {
451 	dd_adpcm_int(1);
452 }
453 
454 
dd_adpcm_status_r()455 uint8_t ddragon_state::dd_adpcm_status_r()
456 {
457 	return (m_adpcm_idle[0] ? 1 : 0) | (m_adpcm_idle[1] ? 2 : 0);
458 }
459 
460 
461 
462 /*************************************
463  *
464  *  Main CPU memory maps
465  *
466  *************************************/
467 
ddragon_base_map(address_map & map)468 void ddragon_state::ddragon_base_map(address_map &map)
469 {
470 	map(0x0000, 0x0fff).ram().share("rambase");
471 	map(0x1000, 0x11ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
472 	map(0x1200, 0x13ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
473 	map(0x1800, 0x1fff).ram().w(FUNC(ddragon_state::ddragon_fgvideoram_w)).share("fgvideoram");
474 	map(0x2000, 0x21ff).rw(FUNC(ddragon_state::ddragon_comram_r), FUNC(ddragon_state::ddragon_comram_w)).share("comram").mirror(0x0600);
475 	map(0x2800, 0x2fff).ram().share("spriteram");
476 	map(0x3000, 0x37ff).ram().w(FUNC(ddragon_state::ddragon_bgvideoram_w)).share("bgvideoram");
477 	map(0x3800, 0x3800).portr("P1");
478 	map(0x3801, 0x3801).portr("P2");
479 	map(0x3802, 0x3802).portr("EXTRA");
480 	map(0x3803, 0x3803).portr("DSW0");
481 	map(0x3804, 0x3804).portr("DSW1");
482 	map(0x3809, 0x3809).writeonly().share("scrollx_lo");
483 	map(0x380a, 0x380a).writeonly().share("scrolly_lo");
484 	map(0x380b, 0x380f).rw(FUNC(ddragon_state::ddragon_interrupt_r), FUNC(ddragon_state::ddragon_interrupt_w));
485 	map(0x8000, 0xffff).rom();
486 }
487 
ddragon_map(address_map & map)488 void ddragon_state::ddragon_map(address_map &map)
489 {
490 	ddragon_base_map(map);
491 	map(0x3808, 0x3808).w(FUNC(ddragon_state::ddragon_bankswitch_w));
492 	map(0x4000, 0x7fff).bankr("mainbank");
493 }
494 
toffy_map(address_map & map)495 void toffy_state::toffy_map(address_map &map)
496 {
497 	ddragon_base_map(map);
498 	map(0x3808, 0x3808).w(FUNC(toffy_state::toffy_bankswitch_w));
499 	map(0x4000, 0x7fff).bankr("mainbank");
500 }
501 
darktowr_map(address_map & map)502 void darktowr_state::darktowr_map(address_map &map)
503 {
504 	ddragon_base_map(map);
505 	map(0x3808, 0x3808).w(FUNC(darktowr_state::darktowr_bankswitch_w));
506 	map(0x4000, 0x7fff).m(m_darktowr_bank, FUNC(address_map_bank_device::amap8));
507 }
508 
darktowr_banked_map(address_map & map)509 void darktowr_state::darktowr_banked_map(address_map &map)
510 {
511 	map(0x00000, 0x0ffff).rom().region("maincpu", 0x10000);
512 	map(0x10000, 0x13fff).rw(FUNC(darktowr_state::darktowr_mcu_bank_r), FUNC(darktowr_state::darktowr_mcu_bank_w));
513 	map(0x14000, 0x1ffff).rom().region("maincpu", 0x24000); // TODO : ROM? empty at most of darktowr_state games
514 }
515 
dd2_map(address_map & map)516 void ddragon_state::dd2_map(address_map &map)
517 {
518 	map(0x0000, 0x17ff).ram();
519 	map(0x1800, 0x1fff).ram().w(FUNC(ddragon_state::ddragon_fgvideoram_w)).share("fgvideoram");
520 	map(0x2000, 0x21ff).rw(FUNC(ddragon_state::ddragon_comram_r), FUNC(ddragon_state::ddragon_comram_w)).share("comram").mirror(0x0600);
521 	map(0x2800, 0x2fff).ram().share("spriteram");
522 	map(0x3000, 0x37ff).ram().w(FUNC(ddragon_state::ddragon_bgvideoram_w)).share("bgvideoram");
523 	map(0x3800, 0x3800).portr("P1");
524 	map(0x3801, 0x3801).portr("P2");
525 	map(0x3802, 0x3802).portr("EXTRA");
526 	map(0x3803, 0x3803).portr("DSW0");
527 	map(0x3804, 0x3804).portr("DSW1");
528 	map(0x3808, 0x3808).w(FUNC(ddragon_state::ddragon_bankswitch_w));
529 	map(0x3809, 0x3809).writeonly().share("scrollx_lo");
530 	map(0x380a, 0x380a).writeonly().share("scrolly_lo");
531 	map(0x380b, 0x380f).rw(FUNC(ddragon_state::ddragon_interrupt_r), FUNC(ddragon_state::ddragon_interrupt_w));
532 	map(0x3c00, 0x3dff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
533 	map(0x3e00, 0x3fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
534 	map(0x4000, 0x7fff).bankr("mainbank");
535 	map(0x8000, 0xffff).rom();
536 }
537 
538 
539 /*************************************
540  *
541  *  Sub CPU memory maps
542  *
543  *************************************/
544 
sub_map(address_map & map)545 void ddragon_state::sub_map(address_map &map)
546 {
547 	map(0x0000, 0x001f).m(m_subcpu, FUNC(hd63701y0_cpu_device::hd6301y_io));
548 	map(0x0040, 0x013f).ram();
549 	map(0x8000, 0x81ff).ram().share("comram");
550 	map(0xc000, 0xffff).rom().region("sub", 0);
551 }
552 
sub_6309_map(address_map & map)553 void ddragon_state::sub_6309_map(address_map &map)
554 {
555 	map(0x0005, 0x0005).nopw();
556 	map(0x0016, 0x0016).nopw();
557 	map(0x0017, 0x0017).w(FUNC(ddragon_state::sub_port6_w));
558 	map(0x0020, 0x0fff).ram();
559 	map(0x8000, 0x81ff).ram().share("comram");
560 	map(0xc000, 0xffff).rom();
561 }
562 
sub_6809_map(address_map & map)563 void ddragon_state::sub_6809_map(address_map &map) // TODO: everything
564 {
565 	map(0x8000, 0xffff).rom().region("sub", 0);
566 }
567 
ddragonba_sub_map(address_map & map)568 void ddragon_state::ddragonba_sub_map(address_map &map)
569 {
570 	map(0x0100, 0x0fff).ram();
571 	map(0x8000, 0x81ff).ram().share("comram");
572 	map(0xc000, 0xffff).rom();
573 }
574 
dd2_sub_map(address_map & map)575 void ddragon_state::dd2_sub_map(address_map &map)
576 {
577 	map(0x0000, 0xbfff).rom();
578 	map(0xc000, 0xc3ff).ram().share("comram");
579 	map(0xd000, 0xd000).w(FUNC(ddragon_state::ddragon2_sub_irq_ack_w));
580 	map(0xe000, 0xe000).w(FUNC(ddragon_state::ddragon2_sub_irq_w));
581 }
582 
583 
584 /*************************************
585  *
586  *  Sound CPU memory maps
587  *
588  *************************************/
589 
sound_map(address_map & map)590 void ddragon_state::sound_map(address_map &map)
591 {
592 	map(0x0000, 0x0fff).ram();
593 	map(0x1000, 0x1000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
594 	map(0x1800, 0x1800).r(FUNC(ddragon_state::dd_adpcm_status_r));
595 	map(0x2800, 0x2801).rw("fmsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
596 	map(0x3800, 0x3807).w(FUNC(ddragon_state::dd_adpcm_w));
597 	map(0x8000, 0xffff).rom();
598 }
599 
ddragon6809_sound_map(address_map & map)600 void ddragon_state::ddragon6809_sound_map(address_map &map) // TODO: everything
601 {
602 	// 2x YM2203, 2xMSM5205
603 	map(0x8000, 0xffff).rom();
604 }
605 
dd2_sound_map(address_map & map)606 void ddragon_state::dd2_sound_map(address_map &map)
607 {
608 	map(0x0000, 0x7fff).rom();
609 	map(0x8000, 0x87ff).ram();
610 	map(0x8800, 0x8801).rw("fmsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
611 	map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
612 	map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
613 }
614 
615 
616 /*************************************
617  *
618  *  Input ports
619  *
620  *************************************/
621 
622 static INPUT_PORTS_START( ddragon )
623 	PORT_START("P1")
624 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
625 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
626 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
627 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
628 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
629 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
630 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
631 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
632 
633 	PORT_START("P2")
634 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
635 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
636 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
637 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
638 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
639 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
640 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
641 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
642 
643 	PORT_START("DSW0")
644 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3")
645 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
646 	PORT_DIPSETTING(    0x01, DEF_STR( 3C_1C ) )
647 	PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
648 	PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) )
649 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
650 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_3C ) )
651 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
652 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_5C ) )
653 	PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:4,5,6")
654 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
655 	PORT_DIPSETTING(    0x08, DEF_STR( 3C_1C ) )
656 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
657 	PORT_DIPSETTING(    0x38, DEF_STR( 1C_1C ) )
658 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_2C ) )
659 	PORT_DIPSETTING(    0x28, DEF_STR( 1C_3C ) )
660 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_4C ) )
661 	PORT_DIPSETTING(    0x18, DEF_STR( 1C_5C ) )
662 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:7")
663 	PORT_DIPSETTING(    0x40, DEF_STR( Upright ) )
664 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
665 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:8")
666 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
667 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
668 
669 	PORT_START("DSW1")
670 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
671 	PORT_DIPSETTING(    0x01, DEF_STR( Easy ) )
672 	PORT_DIPSETTING(    0x03, DEF_STR( Medium ) )
673 	PORT_DIPSETTING(    0x02, DEF_STR( Hard ) )
674 	PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
675 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:3")
676 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
677 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
678 	PORT_DIPUNUSED_DIPLOC( 0x08, IP_ACTIVE_LOW, "SW2:4" )
679 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:5,6")
680 	PORT_DIPSETTING(    0x10, "20k" )
681 	PORT_DIPSETTING(    0x00, "40k" )
682 	PORT_DIPSETTING(    0x30, "30k and every 60k" )
683 	PORT_DIPSETTING(    0x20, "40k and every 80k" )
684 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:7,8")
685 	PORT_DIPSETTING(    0xc0, "2" )
686 	PORT_DIPSETTING(    0x80, "3" )
687 	PORT_DIPSETTING(    0x40, "4" )
688 	PORT_DIPSETTING(    0x00, "Infinite (Cheat)")
689 
690 	PORT_START("EXTRA")
691 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
692 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 )
693 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
694 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
695 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(ddragon_state, subcpu_bus_free_r)
696 	PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED )
697 INPUT_PORTS_END
698 
699 
700 static INPUT_PORTS_START( ddragon2 )
701 	PORT_INCLUDE(ddragon)
702 
703 	PORT_MODIFY("DSW1")
704 	PORT_DIPNAME( 0x03, 0x02, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
705 	PORT_DIPSETTING(    0x01, DEF_STR( Easy ) )
706 	PORT_DIPSETTING(    0x03, DEF_STR( Medium ) )
707 	PORT_DIPSETTING(    0x02, DEF_STR( Hard ) )
708 	PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
709 	PORT_DIPNAME( 0x08, 0x00, "Hurricane Kick" ) PORT_DIPLOCATION("SW2:4")
710 	PORT_DIPSETTING(    0x00, DEF_STR( Easy ) )
711 	PORT_DIPSETTING(    0x08, DEF_STR( Normal ) )
712 	PORT_DIPNAME( 0x30, 0x10, "Timer" ) PORT_DIPLOCATION("SW2:5,6")
713 	PORT_DIPSETTING(    0x00, "60" )
714 	PORT_DIPSETTING(    0x10, "65" )
715 	PORT_DIPSETTING(    0x30, "70" )
716 	PORT_DIPSETTING(    0x20, "80" )
717 	PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:7,8")
718 	PORT_DIPSETTING(    0xc0, "1" )
719 	PORT_DIPSETTING(    0x80, "2" )
720 	PORT_DIPSETTING(    0x40, "3" )
721 	PORT_DIPSETTING(    0x00, "4" )
722 INPUT_PORTS_END
723 
724 
725 static INPUT_PORTS_START( tstrike )
726 	PORT_INCLUDE(ddragon)
727 
728 	PORT_MODIFY("DSW1")
729 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
730 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
731 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
732 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
733 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
734 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
735 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
736 	PORT_DIPSETTING(    0x0c, DEF_STR( Easy ) )
737 	PORT_DIPSETTING(    0x08, DEF_STR( Normal ) )
738 	PORT_DIPSETTING(    0x04, DEF_STR( Hard ) )
739 	PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
740 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
741 	PORT_DIPSETTING(    0x30, "1" )
742 	PORT_DIPSETTING(    0x20, "2" )
743 	PORT_DIPSETTING(    0x10, "3" )
744 	PORT_DIPSETTING(    0x00, "4" )
745 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Bonus_Life ) )
746 	PORT_DIPSETTING(    0xc0, "100k and 200k" )
747 	PORT_DIPSETTING(    0x80, "200k and 300k" )
748 	PORT_DIPSETTING(    0x40, "300k and 400k" )
749 	PORT_DIPSETTING(    0x00, "400k and 500k" )
750 INPUT_PORTS_END
751 
752 
753 static INPUT_PORTS_START( ddungeon )
754 	PORT_INCLUDE(ddragon)
755 
756 	// Dangerous Dungeons installation guide recommends 4-way joystick "for maximum profits"
757 	PORT_MODIFY("P1")
758 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
759 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
760 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
761 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
762 
763 	PORT_MODIFY("P2")
764 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2)
765 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2)
766 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2)
767 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2)
768 
769 	PORT_MODIFY("DSW0")
770 	PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_A ) )
771 	PORT_DIPSETTING(    0x03, DEF_STR( 4C_1C ) )
772 	PORT_DIPSETTING(    0x02, DEF_STR( 3C_1C ) )
773 	PORT_DIPSETTING(    0x07, DEF_STR( 4C_2C ) )
774 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
775 	PORT_DIPSETTING(    0x06, DEF_STR( 3C_2C ) )
776 	PORT_DIPSETTING(    0x0b, DEF_STR( 4C_3C ) )
777 	PORT_DIPSETTING(    0x0f, DEF_STR( 4C_4C ) )
778 	PORT_DIPSETTING(    0x0a, DEF_STR( 3C_3C ) )
779 	PORT_DIPSETTING(    0x05, DEF_STR( 2C_2C ) )
780 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
781 	PORT_DIPSETTING(    0x0e, DEF_STR( 3C_4C ) )
782 	PORT_DIPSETTING(    0x09, DEF_STR( 2C_3C ) )
783 	PORT_DIPSETTING(    0x0d, DEF_STR( 2C_4C ) )
784 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
785 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_3C ) )
786 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_4C ) )
787 	PORT_DIPNAME( 0xf0, 0x00, DEF_STR( Coin_B ) )
788 	PORT_DIPSETTING(    0x30, DEF_STR( 4C_1C ) )
789 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
790 	PORT_DIPSETTING(    0x70, DEF_STR( 4C_2C ) )
791 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
792 	PORT_DIPSETTING(    0x60, DEF_STR( 3C_2C ) )
793 	PORT_DIPSETTING(    0xb0, DEF_STR( 4C_3C ) )
794 	PORT_DIPSETTING(    0xf0, DEF_STR( 4C_4C ) )
795 	PORT_DIPSETTING(    0xa0, DEF_STR( 3C_3C ) )
796 	PORT_DIPSETTING(    0x50, DEF_STR( 2C_2C ) )
797 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
798 	PORT_DIPSETTING(    0xe0, DEF_STR( 3C_4C ) )
799 	PORT_DIPSETTING(    0x90, DEF_STR( 2C_3C ) )
800 	PORT_DIPSETTING(    0xd0, DEF_STR( 2C_4C ) )
801 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_2C ) )
802 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) )
803 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_4C ) )
804 
805 	PORT_MODIFY("DSW1")
806 	PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) )
807 	PORT_DIPSETTING(    0x00, "1" )
808 	PORT_DIPSETTING(    0x01, "2" )
809 	PORT_DIPSETTING(    0x02, "3" )
810 	PORT_DIPSETTING(    0x03, "4" )
811 	PORT_DIPUNUSED( 0x04, IP_ACTIVE_LOW )
812 	PORT_DIPUNUSED( 0x08, IP_ACTIVE_LOW )
813 	PORT_DIPNAME( 0xf0, 0x90, DEF_STR( Difficulty ) )
814 	PORT_DIPSETTING(    0xf0, DEF_STR( Easy ) )
815 	PORT_DIPSETTING(    0x90, DEF_STR( Medium ) )
816 	PORT_DIPSETTING(    0x70, DEF_STR( Hard ) )
817 	PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
818 INPUT_PORTS_END
819 
820 
821 static INPUT_PORTS_START( darktowr )
822 	PORT_INCLUDE(ddungeon)
823 
824 	PORT_MODIFY("DSW1")
825 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
826 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
827 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
828 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
829 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
830 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
831 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
832 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
833 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
834 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
835 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
836 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
837 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
838 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
839 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
840 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
841 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
842 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
843 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
844 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
845 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
846 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
847 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
848 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
849 INPUT_PORTS_END
850 
851 
852 static INPUT_PORTS_START( toffy )
853 	PORT_INCLUDE(ddungeon)
854 
855 	PORT_MODIFY("DSW0")
856 	PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_A ) )
857 	PORT_DIPSETTING(    0x03, DEF_STR( 4C_1C ) )
858 	PORT_DIPSETTING(    0x02, DEF_STR( 3C_1C ) )
859 	PORT_DIPSETTING(    0x07, DEF_STR( 4C_2C ) )
860 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
861 	PORT_DIPSETTING(    0x06, DEF_STR( 3C_2C ) )
862 	PORT_DIPSETTING(    0x05, DEF_STR( 2C_2C ) )
863 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
864 	PORT_DIPSETTING(    0x0b, DEF_STR( 4C_5C ) )
865 	PORT_DIPSETTING(    0x0f, "4 Coin/6 Credits" )
866 	PORT_DIPSETTING(    0x0a, "3 Coin/5 Credits" )
867 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
868 	PORT_DIPSETTING(    0x0e, "3 Coin/6 Credits" )
869 	PORT_DIPSETTING(    0x09, DEF_STR( 2C_5C ) )
870 	PORT_DIPSETTING(    0x0d, DEF_STR( 2C_6C ) )
871 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_5C ) )
872 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_6C ) )
873 	PORT_DIPNAME( 0xf0, 0x00, DEF_STR( Coin_B ) )
874 	PORT_DIPSETTING(    0x30, DEF_STR( 4C_1C ) )
875 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
876 	PORT_DIPSETTING(    0x70, DEF_STR( 4C_2C ) )
877 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
878 	PORT_DIPSETTING(    0x60, DEF_STR( 3C_2C ) )
879 	PORT_DIPSETTING(    0x50, DEF_STR( 2C_2C ) )
880 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
881 	PORT_DIPSETTING(    0xb0, DEF_STR( 4C_5C ) )
882 	PORT_DIPSETTING(    0xf0, "4 Coin/6 Credits" )
883 	PORT_DIPSETTING(    0xa0, "3 Coin/5 Credits" )
884 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_2C ) )
885 	PORT_DIPSETTING(    0xe0, "3 Coin/6 Credits" )
886 	PORT_DIPSETTING(    0x90, DEF_STR( 2C_5C ) )
887 	PORT_DIPSETTING(    0xd0, DEF_STR( 2C_6C ) )
888 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_5C ) )
889 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_6C ) )
890 
891 	PORT_MODIFY("DSW1")
892 	PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) )
893 	PORT_DIPSETTING(    0x00, "2" )
894 	PORT_DIPSETTING(    0x01, "3" )
895 	PORT_DIPSETTING(    0x02, "4" )
896 	PORT_DIPSETTING(    0x03, "5" )
897 	PORT_DIPUNUSED( 0x04, IP_ACTIVE_HIGH )
898 	PORT_DIPNAME( 0x18, 0x08, DEF_STR( Bonus_Life ) )
899 	PORT_DIPSETTING(    0x10, "30k, 50k and 100k" )
900 	PORT_DIPSETTING(    0x08, "50k and 100k" )
901 	PORT_DIPSETTING(    0x18, "100k and 200k" )
902 	PORT_DIPSETTING(    0x00, DEF_STR( None ) )
903 	PORT_DIPUNUSED( 0x20, IP_ACTIVE_HIGH )
904 	PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Difficulty ) )
905 	PORT_DIPSETTING(    0xc0, DEF_STR( Easy ) )
906 	PORT_DIPSETTING(    0x80, DEF_STR( Normal ) )
907 	PORT_DIPSETTING(    0x40, DEF_STR( Hard ) )
908 	PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
909 INPUT_PORTS_END
910 
911 
912 
913 /*************************************
914  *
915  *  Graphics layouts
916  *
917  *************************************/
918 
919 
920 static const gfx_layout char_layout =
921 {
922 	8,8,
923 	RGN_FRAC(1,1),
924 	4,
925 	{ STEP4(0,2) },
926 	{ 1, 0, 8*8+1, 8*8+0, 16*8+1, 16*8+0, 24*8+1, 24*8+0 },
927 	{ STEP8(0,8) },
928 	32*8
929 };
930 
931 static const gfx_layout tile_layout =
932 {
933 	16,16,
934 	RGN_FRAC(1,2),
935 	4,
936 	{ RGN_FRAC(1,2)+0, RGN_FRAC(1,2)+4, 0, 4 },
937 	{ 3, 2, 1, 0, 16*8+3, 16*8+2, 16*8+1, 16*8+0,
938 			32*8+3, 32*8+2, 32*8+1, 32*8+0, 48*8+3, 48*8+2, 48*8+1, 48*8+0 },
939 	{ STEP16(0,8) },
940 	64*8
941 };
942 
943 
944 static GFXDECODE_START( gfx_ddragon )
945 	GFXDECODE_ENTRY( "gfx1", 0, char_layout,   0, 8 )   /* colors   0-127 */
946 	GFXDECODE_ENTRY( "gfx2", 0, tile_layout, 128, 8 )   /* colors 128-255 */
947 	GFXDECODE_ENTRY( "gfx3", 0, tile_layout, 256, 8 )   /* colors 256-383 */
948 GFXDECODE_END
949 
950 /*************************************
951  *
952  *  Machine drivers
953  *
954  *************************************/
955 
ddragon(machine_config & config)956 void ddragon_state::ddragon(machine_config &config)
957 {
958 	/* basic machine hardware */
959 	HD6309E(config, m_maincpu, MAIN_CLOCK / 4); /* HD63C09EP, 3 MHz */
960 	m_maincpu->set_addrmap(AS_PROGRAM, &ddragon_state::ddragon_map);
961 	TIMER(config, "scantimer").configure_scanline(FUNC(ddragon_state::ddragon_scanline), "screen", 0, 1);
962 
963 	hd63701y0_cpu_device &subcpu(HD63701Y0(config, m_subcpu, MAIN_CLOCK / 2));  /* HD63701YOP, 6 MHz / 4 internally */
964 	subcpu.set_addrmap(AS_PROGRAM, &ddragon_state::sub_map);
965 	subcpu.out_p6_cb().set(FUNC(ddragon_state::sub_port6_w));
966 
967 	MC6809(config, m_soundcpu, MAIN_CLOCK / 2); /* HD68A09P, 6 MHz / 4 internally */
968 	m_soundcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sound_map);
969 
970 	config.set_maximum_quantum(attotime::from_hz(60000)); /* heavy interleaving to sync up sprite<->main CPUs */
971 
972 	MCFG_MACHINE_START_OVERRIDE(ddragon_state,ddragon)
973 	MCFG_MACHINE_RESET_OVERRIDE(ddragon_state,ddragon)
974 
975 	/* video hardware */
976 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_ddragon);
977 	PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 512);
978 
979 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
980 	m_screen->set_raw(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240);
981 	m_screen->set_screen_update(FUNC(ddragon_state::screen_update_ddragon));
982 	m_screen->set_palette(m_palette);
983 
984 	MCFG_VIDEO_START_OVERRIDE(ddragon_state,ddragon)
985 
986 	/* sound hardware */
987 	SPEAKER(config, "mono").front_center();
988 
989 	GENERIC_LATCH_8(config, m_soundlatch);
990 	m_soundlatch->data_pending_callback().set_inputline(m_soundcpu, M6809_IRQ_LINE);
991 
992 	ym2151_device &fmsnd(YM2151(config, "fmsnd", SOUND_CLOCK));
993 	fmsnd.irq_handler().set_inputline(m_soundcpu, M6809_FIRQ_LINE);
994 	fmsnd.add_route(0, "mono", 0.60);
995 	fmsnd.add_route(1, "mono", 0.60);
996 
997 	MSM5205(config, m_adpcm[0], MAIN_CLOCK / 32);
998 	m_adpcm[0]->vck_legacy_callback().set(FUNC(ddragon_state::dd_adpcm_int_1));   /* interrupt function */
999 	m_adpcm[0]->set_prescaler_selector(msm5205_device::S48_4B);  /* 8kHz */
1000 	m_adpcm[0]->add_route(ALL_OUTPUTS, "mono", 0.50);
1001 
1002 	MSM5205(config, m_adpcm[1], MAIN_CLOCK / 32);
1003 	m_adpcm[1]->vck_legacy_callback().set(FUNC(ddragon_state::dd_adpcm_int_2));   /* interrupt function */
1004 	m_adpcm[1]->set_prescaler_selector(msm5205_device::S48_4B);  /* 8kHz */
1005 	m_adpcm[1]->add_route(ALL_OUTPUTS, "mono", 0.50);
1006 }
1007 
ddragonb(machine_config & config)1008 void ddragon_state::ddragonb(machine_config &config)
1009 {
1010 	ddragon(config);
1011 
1012 	/* basic machine hardware */
1013 	HD6309E(config.replace(), m_subcpu, MAIN_CLOCK / 8);  /* 1.5MHz; labeled "ENC EL1200AR" on one PCB */
1014 	m_subcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sub_6309_map);
1015 }
1016 
ddragonba(machine_config & config)1017 void ddragon_state::ddragonba(machine_config &config)
1018 {
1019 	ddragon(config);
1020 
1021 	/* basic machine hardware */
1022 	m6803_cpu_device &sub(M6803(config.replace(), "sub", MAIN_CLOCK / 2));  // 6MHz / 4 internally
1023 	sub.set_addrmap(AS_PROGRAM, &ddragon_state::ddragonba_sub_map);
1024 	sub.out_p2_cb().set(FUNC(ddragon_state::ddragonba_port_w));
1025 }
1026 
1027 
1028 /*
1029 3x EF68B09EP (main)
1030 2x YM2203C (sound)
1031 2x OKI M5202 (sound)
1032 2x Y3014B (sound)
1033 2x LM324N (sound)
1034 1x TDA2003 (sound)
1035 1x oscillator 20.000 near sound section
1036 1x oscillator 24.575 (24.000 on another PCB) near main and sub CPU
1037 1x orange resonator CSB445E (CSB500E on another PCB)
1038 */
ddragon6809(machine_config & config)1039 void ddragon_state::ddragon6809(machine_config &config)
1040 {
1041 	/* basic machine hardware */
1042 	MC6809E(config, m_maincpu, 24_MHz_XTAL / 16); // divisor not verified
1043 	m_maincpu->set_addrmap(AS_PROGRAM, &ddragon_state::ddragon_map);
1044 	TIMER(config, "scantimer").configure_scanline(FUNC(ddragon_state::ddragon_scanline), "screen", 0, 1);
1045 
1046 	MC6809E(config, m_subcpu, 24_MHz_XTAL / 16); // divisor not verified
1047 	m_subcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sub_6809_map);
1048 
1049 	MC6809E(config, m_soundcpu, 20_MHz_XTAL / 12); // divisor not verified
1050 	m_soundcpu->set_addrmap(AS_PROGRAM, &ddragon_state::ddragon6809_sound_map);
1051 
1052 	config.set_maximum_quantum(attotime::from_hz(60000)); /* heavy interleaving to sync up sprite<->main CPUs */
1053 
1054 	MCFG_MACHINE_START_OVERRIDE(ddragon_state,ddragon)
1055 	MCFG_MACHINE_RESET_OVERRIDE(ddragon_state,ddragon)
1056 
1057 	/* video hardware */
1058 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_ddragon);
1059 	PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 512);
1060 
1061 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
1062 	m_screen->set_raw(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240);
1063 	m_screen->set_screen_update(FUNC(ddragon_state::screen_update_ddragon));
1064 	m_screen->set_palette(m_palette);
1065 
1066 	MCFG_VIDEO_START_OVERRIDE(ddragon_state,ddragon)
1067 
1068 	/* sound hardware */
1069 	SPEAKER(config, "mono").front_center();
1070 
1071 	GENERIC_LATCH_8(config, m_soundlatch);
1072 	m_soundlatch->data_pending_callback().set_inputline(m_soundcpu, M6809_IRQ_LINE);
1073 
1074 	ym2203_device &ym1(YM2203(config, "ym1", 20_MHz_XTAL / 6)); // divisor not verified
1075 	ym1.add_route(ALL_OUTPUTS, "mono", 0.60);
1076 
1077 	ym2203_device &ym2(YM2203(config, "ym2", 20_MHz_XTAL / 6)); // divisor not verified
1078 	ym2.add_route(ALL_OUTPUTS, "mono", 0.60);
1079 
1080 	MSM5205(config, m_adpcm[0], 500_kHz_XTAL);
1081 	m_adpcm[0]->vck_legacy_callback().set(FUNC(ddragon_state::dd_adpcm_int_1));   /* interrupt function */
1082 	m_adpcm[0]->set_prescaler_selector(msm5205_device::S48_4B);  /* 8kHz */
1083 	m_adpcm[0]->add_route(ALL_OUTPUTS, "mono", 0.50);
1084 
1085 	MSM5205(config, m_adpcm[1], 500_kHz_XTAL);
1086 	m_adpcm[1]->vck_legacy_callback().set(FUNC(ddragon_state::dd_adpcm_int_2));   /* interrupt function */
1087 	m_adpcm[1]->set_prescaler_selector(msm5205_device::S48_4B);  /* 8kHz */
1088 	m_adpcm[1]->add_route(ALL_OUTPUTS, "mono", 0.50);
1089 }
1090 
ddragon2(machine_config & config)1091 void ddragon_state::ddragon2(machine_config &config)
1092 {
1093 	/* basic machine hardware */
1094 	HD6309E(config, m_maincpu, MAIN_CLOCK / 4); /* HD63C09EP, 3 MHz */
1095 	m_maincpu->set_addrmap(AS_PROGRAM, &ddragon_state::dd2_map);
1096 	TIMER(config, "scantimer").configure_scanline(FUNC(ddragon_state::ddragon_scanline), "screen", 0, 1);
1097 
1098 	Z80(config, m_subcpu, MAIN_CLOCK / 3);      /* 4 MHz */
1099 	m_subcpu->set_addrmap(AS_PROGRAM, &ddragon_state::dd2_sub_map);
1100 
1101 	Z80(config, m_soundcpu, 3579545);
1102 	m_soundcpu->set_addrmap(AS_PROGRAM, &ddragon_state::dd2_sound_map);
1103 
1104 	config.set_maximum_quantum(attotime::from_hz(60000)); /* heavy interleaving to sync up sprite<->main CPUs */
1105 
1106 	MCFG_MACHINE_START_OVERRIDE(ddragon_state,ddragon)
1107 	MCFG_MACHINE_RESET_OVERRIDE(ddragon_state,ddragon)
1108 
1109 	/* video hardware */
1110 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_ddragon);
1111 	PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 512);
1112 
1113 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
1114 	m_screen->set_raw(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240);
1115 	m_screen->set_screen_update(FUNC(ddragon_state::screen_update_ddragon));
1116 	m_screen->set_palette(m_palette);
1117 
1118 	MCFG_VIDEO_START_OVERRIDE(ddragon_state,ddragon)
1119 
1120 	/* sound hardware */
1121 	SPEAKER(config, "mono").front_center();
1122 
1123 	GENERIC_LATCH_8(config, m_soundlatch);
1124 	m_soundlatch->data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI);
1125 
1126 	ym2151_device &fmsnd(YM2151(config, "fmsnd", SOUND_CLOCK));
1127 	fmsnd.irq_handler().set_inputline(m_soundcpu, 0);
1128 	fmsnd.add_route(0, "mono", 0.60);
1129 	fmsnd.add_route(1, "mono", 0.60);
1130 
1131 	okim6295_device &oki(OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 verified on bootleg PCB by Jose Tejada
1132 	oki.add_route(ALL_OUTPUTS, "mono", 0.20);
1133 }
1134 
darktowr(machine_config & config)1135 void darktowr_state::darktowr(machine_config &config)
1136 {
1137 	ddragon(config);
1138 
1139 	/* basic machine hardware */
1140 	m_maincpu->set_addrmap(AS_PROGRAM, &darktowr_state::darktowr_map);
1141 
1142 	M68705P3(config, m_mcu, XTAL(4'000'000));
1143 	m_mcu->porta_w().set(FUNC(darktowr_state::mcu_port_a_w));
1144 
1145 	ADDRESS_MAP_BANK(config, "darktowr_bank").set_map(&darktowr_state::darktowr_banked_map).set_options(ENDIANNESS_BIG, 8, 17, 0x4000);
1146 }
1147 
toffy(machine_config & config)1148 void toffy_state::toffy(machine_config &config)
1149 {
1150 	ddragon(config);
1151 
1152 	/* basic machine hardware */
1153 	m_maincpu->set_addrmap(AS_PROGRAM, &toffy_state::toffy_map);
1154 
1155 	config.device_remove("sub");
1156 
1157 	/* sound hardware */
1158 	config.device_remove("adpcm1");
1159 	config.device_remove("adpcm2");
1160 }
1161 
1162 /*************************************
1163  *
1164  *  ROM definitions
1165  *
1166  *************************************/
1167 
1168 ROM_START( ddragon )
1169 	ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
1170 	ROM_LOAD( "21j-1-5.26",   0x08000, 0x08000, CRC(42045dfd) SHA1(0983705ea3bb87c4c239692f400e02f15c243479) )
1171 	ROM_LOAD( "21j-2-3.25",   0x10000, 0x08000, CRC(5779705e) SHA1(4b8f22225d10f5414253ce0383bbebd6f720f3af) ) /* banked at 0x4000-0x8000 */
1172 	ROM_LOAD( "21j-3.24",     0x18000, 0x08000, CRC(3bdea613) SHA1(d9038c80646a6ce3ea61da222873237b0383680e) ) /* banked at 0x4000-0x8000 */
1173 	ROM_LOAD( "21j-4-1.23",   0x20000, 0x08000, CRC(728f87b9) SHA1(d7442be24d41bb9fc021587ef44ae5b830e4503d) ) /* banked at 0x4000-0x8000 */
1174 
1175 	ROM_REGION( 0x4000, "sub", 0 ) /* sprite cpu */
CRC(f5232d03)1176 	ROM_LOAD( "21jm-0.ic55",    0x0000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
1177 
1178 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
1179 	ROM_LOAD( "21j-0-1",      0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
1180 
1181 	ROM_REGION( 0x08000, "gfx1", 0 )
1182 	ROM_LOAD( "21j-5",        0x00000, 0x08000, CRC(7a8b8db4) SHA1(8368182234f9d4d763d4714fd7567a9e31b7ebeb) )  /* chars */
1183 
1184 	ROM_REGION( 0x80000, "gfx2", 0 )
1185 	ROM_LOAD( "21j-a",        0x00000, 0x10000, CRC(574face3) SHA1(481fe574cb79d0159a65ff7486cbc945d50538c5) )  /* sprites */
1186 	ROM_LOAD( "21j-b",        0x10000, 0x10000, CRC(40507a76) SHA1(74581a4b6f48100bddf20f319903af2fe36f39fa) )
1187 	ROM_LOAD( "21j-c",        0x20000, 0x10000, CRC(bb0bc76f) SHA1(37b2225e0593335f636c1e5fded9b21fdeab2f5a) )
1188 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) )
1189 	ROM_LOAD( "21j-e",        0x40000, 0x10000, CRC(a0a0c261) SHA1(25c534d82bd237386d447d72feee8d9541a5ded4) )
1190 	ROM_LOAD( "21j-f",        0x50000, 0x10000, CRC(6ba152f6) SHA1(a301ff809be0e1471f4ff8305b30c2fa4aa57fae) )
1191 	ROM_LOAD( "21j-g",        0x60000, 0x10000, CRC(3220a0b6) SHA1(24a16ea509e9aff82b9ddd14935d61bb71acff84) )
1192 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) )
1193 
1194 	ROM_REGION( 0x40000, "gfx3", 0 )
1195 	ROM_LOAD( "21j-8",        0x00000, 0x10000, CRC(7c435887) SHA1(ecb76f2148fa9773426f05aac208eb3ac02747db) )  /* tiles */
1196 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) )
1197 	ROM_LOAD( "21j-i",        0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
1198 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
1199 
1200 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
1201 	ROM_LOAD( "21j-6",        0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
1202 
1203 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
1204 	ROM_LOAD( "21j-7",        0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
1205 
1206 	ROM_REGION( 0x0300, "proms", 0 )
1207 	ROM_LOAD( "21j-k-0",      0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )    /* Layer priority */
1208 	ROM_LOAD( "21j-l-0",      0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* unknown */
1209 ROM_END
1210 
1211 ROM_START( ddragonw )
1212 	ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
1213 	ROM_LOAD( "21j-1.26",     0x08000, 0x08000, CRC(ae714964) SHA1(072522b97ca4edd099c6b48d7634354dc7088c53) )
1214 	ROM_LOAD( "21j-2-3.25",   0x10000, 0x08000, CRC(5779705e) SHA1(4b8f22225d10f5414253ce0383bbebd6f720f3af) ) /* banked at 0x4000-0x8000 */
1215 	ROM_LOAD( "21a-3.24",     0x18000, 0x08000, CRC(dbf24897) SHA1(1504faaf07c541330cd43b72dc6846911dfd85a3) ) /* banked at 0x4000-0x8000 */
1216 	ROM_LOAD( "21j-4.23",     0x20000, 0x08000, CRC(6c9f46fa) SHA1(df251a4aea69b2328f7a543bf085b9c35933e2c1) ) /* banked at 0x4000-0x8000 */
1217 
1218 	ROM_REGION( 0x4000, "sub", 0 ) /* sprite cpu */
1219 	ROM_LOAD( "21jm-0.ic55",    0x0000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
1220 
1221 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
1222 	ROM_LOAD( "21j-0-1",      0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
1223 
1224 	ROM_REGION( 0x08000, "gfx1", 0 )
1225 	ROM_LOAD( "21j-5",        0x00000, 0x08000, CRC(7a8b8db4) SHA1(8368182234f9d4d763d4714fd7567a9e31b7ebeb) )  /* chars */
1226 
1227 	ROM_REGION( 0x80000, "gfx2", 0 )
1228 	ROM_LOAD( "21j-a",        0x00000, 0x10000, CRC(574face3) SHA1(481fe574cb79d0159a65ff7486cbc945d50538c5) )  /* sprites */
1229 	ROM_LOAD( "21j-b",        0x10000, 0x10000, CRC(40507a76) SHA1(74581a4b6f48100bddf20f319903af2fe36f39fa) )
1230 	ROM_LOAD( "21j-c",        0x20000, 0x10000, CRC(bb0bc76f) SHA1(37b2225e0593335f636c1e5fded9b21fdeab2f5a) )
1231 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) )
1232 	ROM_LOAD( "21j-e",        0x40000, 0x10000, CRC(a0a0c261) SHA1(25c534d82bd237386d447d72feee8d9541a5ded4) )
1233 	ROM_LOAD( "21j-f",        0x50000, 0x10000, CRC(6ba152f6) SHA1(a301ff809be0e1471f4ff8305b30c2fa4aa57fae) )
1234 	ROM_LOAD( "21j-g",        0x60000, 0x10000, CRC(3220a0b6) SHA1(24a16ea509e9aff82b9ddd14935d61bb71acff84) )
1235 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) )
1236 
1237 	ROM_REGION( 0x40000, "gfx3", 0 )
1238 	ROM_LOAD( "21j-8",        0x00000, 0x10000, CRC(7c435887) SHA1(ecb76f2148fa9773426f05aac208eb3ac02747db) )  /* tiles */
1239 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) )
1240 	ROM_LOAD( "21j-i",        0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
1241 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
1242 
1243 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
1244 	ROM_LOAD( "21j-6",        0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
1245 
1246 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
1247 	ROM_LOAD( "21j-7",        0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
1248 
1249 	ROM_REGION( 0x0300, "proms", 0 )
1250 	ROM_LOAD( "21j-k-0.101",  0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )    /* layer priorities */
1251 	ROM_LOAD( "21j-l-0.16",   0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing */
1252 ROM_END
1253 
1254 ROM_START( ddragonw1 )
1255 	ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
1256 	ROM_LOAD( "e1-1.26",       0x08000, 0x08000, CRC(4b951643) SHA1(efb1f9ef2e46597d76123c9770854c1d83639eb2) )
1257 	ROM_LOAD( "21a-2-4.25",    0x10000, 0x08000, CRC(5cd67657) SHA1(96bc7a5354a76524bd43a4d7eb8b0053a89e39c4) ) /* banked at 0x4000-0x8000 */
1258 	ROM_LOAD( "21a-3.24",      0x18000, 0x08000, CRC(dbf24897) SHA1(1504faaf07c541330cd43b72dc6846911dfd85a3) ) /* banked at 0x4000-0x8000 */
1259 	ROM_LOAD( "e4-1.23",       0x20000, 0x08000, CRC(b1e26935) SHA1(dfff666fd5e9dc4dfb2a1d891eced88730cbaf30) ) /* banked at 0x4000-0x8000 */
1260 
1261 	ROM_REGION( 0x4000, "sub", 0 ) /* sprite cpu */
1262 	ROM_LOAD( "21jm-0.ic55",    0x0000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
1263 
1264 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
1265 	ROM_LOAD( "21j-0-1",      0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
1266 
1267 	ROM_REGION( 0x08000, "gfx1", 0 )
1268 	ROM_LOAD( "21j-5",        0x00000, 0x08000, CRC(7a8b8db4) SHA1(8368182234f9d4d763d4714fd7567a9e31b7ebeb) )  /* chars */
1269 
1270 	ROM_REGION( 0x80000, "gfx2", 0 )
1271 	ROM_LOAD( "21j-a",        0x00000, 0x10000, CRC(574face3) SHA1(481fe574cb79d0159a65ff7486cbc945d50538c5) )  /* sprites */
1272 	ROM_LOAD( "21j-b",        0x10000, 0x10000, CRC(40507a76) SHA1(74581a4b6f48100bddf20f319903af2fe36f39fa) )
1273 	ROM_LOAD( "21j-c",        0x20000, 0x10000, CRC(bb0bc76f) SHA1(37b2225e0593335f636c1e5fded9b21fdeab2f5a) )
1274 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) )
1275 	ROM_LOAD( "21j-e",        0x40000, 0x10000, CRC(a0a0c261) SHA1(25c534d82bd237386d447d72feee8d9541a5ded4) )
1276 	ROM_LOAD( "21j-f",        0x50000, 0x10000, CRC(6ba152f6) SHA1(a301ff809be0e1471f4ff8305b30c2fa4aa57fae) )
1277 	ROM_LOAD( "21j-g",        0x60000, 0x10000, CRC(3220a0b6) SHA1(24a16ea509e9aff82b9ddd14935d61bb71acff84) )
1278 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) )
1279 
1280 	ROM_REGION( 0x40000, "gfx3", 0 )
1281 	ROM_LOAD( "21j-8",        0x00000, 0x10000, CRC(7c435887) SHA1(ecb76f2148fa9773426f05aac208eb3ac02747db) )  /* tiles */
1282 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) )
1283 	ROM_LOAD( "21j-i",        0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
1284 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
1285 
1286 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
1287 	ROM_LOAD( "21j-6",        0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
1288 
1289 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
1290 	ROM_LOAD( "21j-7",        0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
1291 
1292 	ROM_REGION( 0x0300, "proms", 0 )
1293 	ROM_LOAD( "21j-k-0.101",  0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )    /* layer priorities */
1294 	ROM_LOAD( "21j-l-0.16",   0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing */
1295 ROM_END
1296 
1297 ROM_START( ddragonu )
1298 	ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
1299 	ROM_LOAD( "21a-1-5.26",   0x08000, 0x08000, CRC(e24a6e11) SHA1(9dd97dd712d5c896f91fd80df58be9b8a2b198ee) )
1300 	ROM_LOAD( "21j-2-3.25",   0x10000, 0x08000, CRC(5779705e) SHA1(4b8f22225d10f5414253ce0383bbebd6f720f3af) ) /* banked at 0x4000-0x8000 */
1301 	ROM_LOAD( "21a-3.24",     0x18000, 0x08000, CRC(dbf24897) SHA1(1504faaf07c541330cd43b72dc6846911dfd85a3) ) /* banked at 0x4000-0x8000 */
1302 	ROM_LOAD( "21a-4.23",     0x20000, 0x08000, CRC(6ea16072) SHA1(0b3b84a0d54f7a3aba411586009babbfee653f9a) ) /* banked at 0x4000-0x8000 */
1303 
1304 	ROM_REGION( 0x4000, "sub", 0 ) /* sprite cpu */
1305 	ROM_LOAD( "21jm-0.ic55",    0x0000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
1306 
1307 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
1308 	ROM_LOAD( "21j-0-1",      0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
1309 
1310 	ROM_REGION( 0x08000, "gfx1", 0 )
1311 	ROM_LOAD( "21j-5",        0x00000, 0x08000, CRC(7a8b8db4) SHA1(8368182234f9d4d763d4714fd7567a9e31b7ebeb) )  /* chars */
1312 
1313 	ROM_REGION( 0x80000, "gfx2", 0 )
1314 	ROM_LOAD( "21j-a",        0x00000, 0x10000, CRC(574face3) SHA1(481fe574cb79d0159a65ff7486cbc945d50538c5) )  /* sprites */
1315 	ROM_LOAD( "21j-b",        0x10000, 0x10000, CRC(40507a76) SHA1(74581a4b6f48100bddf20f319903af2fe36f39fa) )
1316 	ROM_LOAD( "21j-c",        0x20000, 0x10000, CRC(bb0bc76f) SHA1(37b2225e0593335f636c1e5fded9b21fdeab2f5a) )
1317 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) )
1318 	ROM_LOAD( "21j-e",        0x40000, 0x10000, CRC(a0a0c261) SHA1(25c534d82bd237386d447d72feee8d9541a5ded4) )
1319 	ROM_LOAD( "21j-f",        0x50000, 0x10000, CRC(6ba152f6) SHA1(a301ff809be0e1471f4ff8305b30c2fa4aa57fae) )
1320 	ROM_LOAD( "21j-g",        0x60000, 0x10000, CRC(3220a0b6) SHA1(24a16ea509e9aff82b9ddd14935d61bb71acff84) )
1321 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) )
1322 
1323 	ROM_REGION( 0x40000, "gfx3", 0 )
1324 	ROM_LOAD( "21j-8",        0x00000, 0x10000, CRC(7c435887) SHA1(ecb76f2148fa9773426f05aac208eb3ac02747db) )  /* tiles */
1325 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) )
1326 	ROM_LOAD( "21j-i",        0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
1327 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
1328 
1329 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
1330 	ROM_LOAD( "21j-6",        0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
1331 
1332 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
1333 	ROM_LOAD( "21j-7",        0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
1334 
1335 	ROM_REGION( 0x0300, "proms", 0 )
1336 	ROM_LOAD( "21j-k-0.101",  0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )    /* layer priorities */
1337 	ROM_LOAD( "21j-l-0.16",   0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing */
1338 ROM_END
1339 
1340 ROM_START( ddragonua )
1341 	ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
1342 	ROM_LOAD( "21a-1",     0x08000, 0x08000, CRC(1d625008) SHA1(84cc19a55e7c91fca1943d9624d93e0347ed4150) )
1343 	ROM_LOAD( "21a-2_4",   0x10000, 0x08000, CRC(5cd67657) SHA1(96bc7a5354a76524bd43a4d7eb8b0053a89e39c4) ) /* banked at 0x4000-0x8000 */
1344 	ROM_LOAD( "21a-3",     0x18000, 0x08000, CRC(dbf24897) SHA1(1504faaf07c541330cd43b72dc6846911dfd85a3) ) /* banked at 0x4000-0x8000 */
1345 	ROM_LOAD( "21a-4_2",   0x20000, 0x08000, CRC(9b019598) SHA1(59f3aa15389f53c4646d21a39634cb1502e66ff6) ) /* banked at 0x4000-0x8000 */
1346 
1347 	ROM_REGION( 0x4000, "sub", 0 ) /* sprite cpu */
1348 	ROM_LOAD( "21jm-0.ic55",    0x0000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
1349 
1350 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
1351 	ROM_LOAD( "21j-0-1",      0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
1352 
1353 	ROM_REGION( 0x08000, "gfx1", 0 )
1354 	ROM_LOAD( "21j-5",        0x00000, 0x08000, CRC(7a8b8db4) SHA1(8368182234f9d4d763d4714fd7567a9e31b7ebeb) )  /* chars */
1355 
1356 	ROM_REGION( 0x80000, "gfx2", 0 )
1357 	ROM_LOAD( "21j-a",        0x00000, 0x10000, CRC(574face3) SHA1(481fe574cb79d0159a65ff7486cbc945d50538c5) )  /* sprites */
1358 	ROM_LOAD( "21j-b",        0x10000, 0x10000, CRC(40507a76) SHA1(74581a4b6f48100bddf20f319903af2fe36f39fa) )
1359 	ROM_LOAD( "21j-c",        0x20000, 0x10000, CRC(bb0bc76f) SHA1(37b2225e0593335f636c1e5fded9b21fdeab2f5a) )
1360 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) )
1361 	ROM_LOAD( "21j-e",        0x40000, 0x10000, CRC(a0a0c261) SHA1(25c534d82bd237386d447d72feee8d9541a5ded4) )
1362 	ROM_LOAD( "21j-f",        0x50000, 0x10000, CRC(6ba152f6) SHA1(a301ff809be0e1471f4ff8305b30c2fa4aa57fae) )
1363 	ROM_LOAD( "21j-g",        0x60000, 0x10000, CRC(3220a0b6) SHA1(24a16ea509e9aff82b9ddd14935d61bb71acff84) )
1364 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) )
1365 
1366 	ROM_REGION( 0x40000, "gfx3", 0 )
1367 	ROM_LOAD( "21j-8",        0x00000, 0x10000, CRC(7c435887) SHA1(ecb76f2148fa9773426f05aac208eb3ac02747db) )  /* tiles */
1368 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) )
1369 	ROM_LOAD( "21j-i",        0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
1370 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
1371 
1372 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
1373 	ROM_LOAD( "21j-6",        0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
1374 
1375 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
1376 	ROM_LOAD( "21j-7",        0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
1377 
1378 	ROM_REGION( 0x0300, "proms", 0 )
1379 	ROM_LOAD( "21j-k-0.101",  0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )    /* layer priorities */
1380 	ROM_LOAD( "21j-l-0.16",   0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing */
1381 ROM_END
1382 
1383 
1384 ROM_START( ddragonub )
1385 	ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
1386 	ROM_LOAD( "21a-1_6.bin",0x08000,0x08000, CRC(f354b0e1) SHA1(f2fe5d6102564691a0054d2b8dd98673fdc8a348) )
1387 	ROM_LOAD( "21a-2_4",   0x10000, 0x08000, CRC(5cd67657) SHA1(96bc7a5354a76524bd43a4d7eb8b0053a89e39c4) ) /* banked at 0x4000-0x8000 */
1388 	ROM_LOAD( "21a-3",     0x18000, 0x08000, CRC(dbf24897) SHA1(1504faaf07c541330cd43b72dc6846911dfd85a3) ) /* banked at 0x4000-0x8000 */
1389 	ROM_LOAD( "21a-4_2",   0x20000, 0x08000, CRC(9b019598) SHA1(59f3aa15389f53c4646d21a39634cb1502e66ff6) ) /* banked at 0x4000-0x8000 */
1390 
1391 	ROM_REGION( 0x4000, "sub", 0 ) /* sprite cpu */
1392 	ROM_LOAD( "21jm-0.ic55",    0x0000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
1393 
1394 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
1395 	ROM_LOAD( "21j-0-1",      0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
1396 
1397 	ROM_REGION( 0x08000, "gfx1", 0 )
1398 	ROM_LOAD( "21j-5",        0x00000, 0x08000, CRC(7a8b8db4) SHA1(8368182234f9d4d763d4714fd7567a9e31b7ebeb) )  /* chars */
1399 
1400 	ROM_REGION( 0x80000, "gfx2", 0 )
1401 	ROM_LOAD( "21j-a",        0x00000, 0x10000, CRC(574face3) SHA1(481fe574cb79d0159a65ff7486cbc945d50538c5) )  /* sprites */
1402 	ROM_LOAD( "21j-b",        0x10000, 0x10000, CRC(40507a76) SHA1(74581a4b6f48100bddf20f319903af2fe36f39fa) )
1403 	ROM_LOAD( "21j-c",        0x20000, 0x10000, CRC(bb0bc76f) SHA1(37b2225e0593335f636c1e5fded9b21fdeab2f5a) )
1404 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) )
1405 	ROM_LOAD( "21j-e",        0x40000, 0x10000, CRC(a0a0c261) SHA1(25c534d82bd237386d447d72feee8d9541a5ded4) )
1406 	ROM_LOAD( "21j-f",        0x50000, 0x10000, CRC(6ba152f6) SHA1(a301ff809be0e1471f4ff8305b30c2fa4aa57fae) )
1407 	ROM_LOAD( "21j-g",        0x60000, 0x10000, CRC(3220a0b6) SHA1(24a16ea509e9aff82b9ddd14935d61bb71acff84) )
1408 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) )
1409 
1410 	ROM_REGION( 0x40000, "gfx3", 0 )
1411 	ROM_LOAD( "21j-8",        0x00000, 0x10000, CRC(7c435887) SHA1(ecb76f2148fa9773426f05aac208eb3ac02747db) )  /* tiles */
1412 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) )
1413 	ROM_LOAD( "21j-i",        0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
1414 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
1415 
1416 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
1417 	ROM_LOAD( "21j-6",        0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
1418 
1419 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
1420 	ROM_LOAD( "21j-7",        0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
1421 
1422 	ROM_REGION( 0x0300, "proms", 0 )
1423 	ROM_LOAD( "21j-k-0.101",  0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )    /* layer priorities */
1424 	ROM_LOAD( "21j-l-0.16",   0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing */
1425 ROM_END
1426 
1427 
1428 ROM_START( ddragonb ) /* Same program roms as the World set */
1429 	ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
1430 	ROM_LOAD( "21j-1.26",     0x08000, 0x08000, CRC(ae714964) SHA1(072522b97ca4edd099c6b48d7634354dc7088c53) )
1431 	ROM_LOAD( "21j-2-3.25",   0x10000, 0x08000, CRC(5779705e) SHA1(4b8f22225d10f5414253ce0383bbebd6f720f3af) ) /* banked at 0x4000-0x8000 */
1432 	ROM_LOAD( "21a-3.24",     0x18000, 0x08000, CRC(dbf24897) SHA1(1504faaf07c541330cd43b72dc6846911dfd85a3) ) /* banked at 0x4000-0x8000 */
1433 	ROM_LOAD( "21j-4.23",     0x20000, 0x08000, CRC(6c9f46fa) SHA1(df251a4aea69b2328f7a543bf085b9c35933e2c1) ) /* banked at 0x4000-0x8000 */
1434 
1435 	ROM_REGION( 0x10000, "sub", 0 ) /* sprite cpu */
1436 	ROM_LOAD( "ic38",         0x0c000, 0x04000, CRC(6a6a0325) SHA1(98a940a9f23ce9154ff94f7f2ce29efe9a92f71b) ) /* HD6903 instead of HD63701 */
1437 
1438 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
1439 	ROM_LOAD( "21j-0-1",      0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
1440 
1441 	ROM_REGION( 0x08000, "gfx1", 0 )
1442 	ROM_LOAD( "21j-5",        0x00000, 0x08000, CRC(7a8b8db4) SHA1(8368182234f9d4d763d4714fd7567a9e31b7ebeb) )  /* chars */
1443 
1444 	ROM_REGION( 0x80000, "gfx2", 0 )
1445 	ROM_LOAD( "21j-a",        0x00000, 0x10000, CRC(574face3) SHA1(481fe574cb79d0159a65ff7486cbc945d50538c5) )  /* sprites */
1446 	ROM_LOAD( "21j-b",        0x10000, 0x10000, CRC(40507a76) SHA1(74581a4b6f48100bddf20f319903af2fe36f39fa) )
1447 	ROM_LOAD( "21j-c",        0x20000, 0x10000, CRC(bb0bc76f) SHA1(37b2225e0593335f636c1e5fded9b21fdeab2f5a) )
1448 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) )
1449 	ROM_LOAD( "21j-e",        0x40000, 0x10000, CRC(a0a0c261) SHA1(25c534d82bd237386d447d72feee8d9541a5ded4) )
1450 	ROM_LOAD( "21j-f",        0x50000, 0x10000, CRC(6ba152f6) SHA1(a301ff809be0e1471f4ff8305b30c2fa4aa57fae) )
1451 	ROM_LOAD( "21j-g",        0x60000, 0x10000, CRC(3220a0b6) SHA1(24a16ea509e9aff82b9ddd14935d61bb71acff84) )
1452 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) )
1453 
1454 	ROM_REGION( 0x40000, "gfx3", 0 )
1455 	ROM_LOAD( "21j-8",        0x00000, 0x10000, CRC(7c435887) SHA1(ecb76f2148fa9773426f05aac208eb3ac02747db) )  /* tiles */
1456 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) )
1457 	ROM_LOAD( "21j-i",        0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
1458 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
1459 
1460 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
1461 	ROM_LOAD( "21j-6",        0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
1462 
1463 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
1464 	ROM_LOAD( "21j-7",        0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
1465 
1466 	ROM_REGION( 0x0300, "proms", 0 )
1467 	ROM_LOAD( "21j-k-0.101",  0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )    /* layer priorities */
1468 	ROM_LOAD( "21j-l-0.16",   0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing */
1469 ROM_END
1470 
1471 ROM_START( ddragonba )
1472 	ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
1473 	ROM_LOAD( "5.bin",     0x08000, 0x08000, CRC(ae714964) SHA1(072522b97ca4edd099c6b48d7634354dc7088c53) )
1474 	ROM_LOAD( "4.bin",     0x10000, 0x08000, CRC(48045762) SHA1(ca39eea71ca76627a98210ce9cc61457a58f16b9) ) /* banked at 0x4000-0x8000 */
1475 	ROM_CONTINUE(0x20000,0x8000) /* banked at 0x4000-0x8000 */
1476 	ROM_LOAD( "3.bin",     0x18000, 0x08000, CRC(dbf24897) SHA1(1504faaf07c541330cd43b72dc6846911dfd85a3) ) /* banked at 0x4000-0x8000 */
1477 
1478 	ROM_REGION( 0x10000, "sub", 0 ) /* sprite cpu */
1479 	ROM_LOAD( "2_32.bin",         0x0c000, 0x04000, CRC(67875473) SHA1(66405cb22d41d353335f037ce5aee69e4c6f05c4) ) /* 6803 instead of HD63701 */
1480 
1481 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
1482 	ROM_LOAD( "6.bin",      0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
1483 
1484 	ROM_REGION( 0x08000, "gfx1", 0 )
1485 	ROM_LOAD( "1.bin",        0x00000, 0x08000, CRC(7a8b8db4) SHA1(8368182234f9d4d763d4714fd7567a9e31b7ebeb) )  /* chars */
1486 
1487 	ROM_REGION( 0x80000, "gfx2", 0 )
1488 	ROM_LOAD( "21j-a",        0x00000, 0x10000, CRC(574face3) SHA1(481fe574cb79d0159a65ff7486cbc945d50538c5) )  /* sprites */
1489 	ROM_LOAD( "21j-b",        0x10000, 0x10000, CRC(40507a76) SHA1(74581a4b6f48100bddf20f319903af2fe36f39fa) )
1490 	ROM_LOAD( "21j-c",        0x20000, 0x10000, CRC(bb0bc76f) SHA1(37b2225e0593335f636c1e5fded9b21fdeab2f5a) )
1491 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) )
1492 	ROM_LOAD( "21j-e",        0x40000, 0x10000, CRC(a0a0c261) SHA1(25c534d82bd237386d447d72feee8d9541a5ded4) )
1493 	ROM_LOAD( "21j-f",        0x50000, 0x10000, CRC(6ba152f6) SHA1(a301ff809be0e1471f4ff8305b30c2fa4aa57fae) )
1494 	ROM_LOAD( "21j-g",        0x60000, 0x10000, CRC(3220a0b6) SHA1(24a16ea509e9aff82b9ddd14935d61bb71acff84) )
1495 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) )
1496 
1497 	ROM_REGION( 0x40000, "gfx3", 0 )
1498 	ROM_LOAD( "21j-8",        0x00000, 0x10000, CRC(7c435887) SHA1(ecb76f2148fa9773426f05aac208eb3ac02747db) )  /* tiles */
1499 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) )
1500 	ROM_LOAD( "21j-i",        0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
1501 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
1502 
1503 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
1504 	ROM_LOAD( "8.bin",        0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
1505 
1506 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
1507 	ROM_LOAD( "7.bin",        0x00000, 0x10000, CRC(f9311f72) SHA1(aa554ef020e04dc896e5495bcddc64e489d0ffff) )
1508 
1509 	ROM_REGION( 0x0300, "proms", 0 )
1510 	ROM_LOAD( "21j-k-0.101",  0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )    /* layer priorities */
1511 	ROM_LOAD( "21j-l-0.16",   0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing */
1512 ROM_END
1513 
1514 ROM_START( ddragonb2 )
1515 	ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
1516 	ROM_LOAD( "b2_4.bin",     0x08000, 0x08000, CRC(668dfa19) SHA1(9b2ff1b66eeba0989e4ed850b7df1f5719ba5572) )
1517 	ROM_LOAD( "b2_5.bin",     0x10000, 0x08000, CRC(5779705e) SHA1(4b8f22225d10f5414253ce0383bbebd6f720f3af) ) /* banked at 0x4000-0x8000 */
1518 	ROM_LOAD( "b2_6.bin",     0x18000, 0x08000, CRC(3bdea613) SHA1(d9038c80646a6ce3ea61da222873237b0383680e) ) /* banked at 0x4000-0x8000 */
1519 	ROM_LOAD( "b2_7.bin",     0x20000, 0x08000, CRC(728f87b9) SHA1(d7442be24d41bb9fc021587ef44ae5b830e4503d) ) /* banked at 0x4000-0x8000 */
1520 
1521 	ROM_REGION( 0x4000, "sub", 0 ) /* sprite cpu */
1522 	ROM_LOAD( "63701.bin",    0x0000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) )
1523 
1524 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
1525 	ROM_LOAD( "b2_3.bin",     0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
1526 
1527 	ROM_REGION( 0x08000, "gfx1", 0 )
1528 	ROM_LOAD( "b2_8.bin",     0x00000, 0x08000, CRC(7a8b8db4) SHA1(8368182234f9d4d763d4714fd7567a9e31b7ebeb) )  /* chars */
1529 
1530 	ROM_REGION( 0x80000, "gfx2", 0 )
1531 	ROM_LOAD( "11.bin",       0x00000, 0x10000, CRC(574face3) SHA1(481fe574cb79d0159a65ff7486cbc945d50538c5) )  /* sprites */
1532 	ROM_LOAD( "12.bin",       0x10000, 0x10000, CRC(40507a76) SHA1(74581a4b6f48100bddf20f319903af2fe36f39fa) )
1533 	ROM_LOAD( "13.bin",       0x20000, 0x10000, CRC(c8b91e17) SHA1(0ce6f6ef68ecc7309a2923f7e756d5e2bf5c7a4a) )
1534 	ROM_LOAD( "14.bin",       0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) )
1535 	ROM_LOAD( "15.bin",       0x40000, 0x10000, CRC(a0a0c261) SHA1(25c534d82bd237386d447d72feee8d9541a5ded4) )
1536 	ROM_LOAD( "16.bin",       0x50000, 0x10000, CRC(6ba152f6) SHA1(a301ff809be0e1471f4ff8305b30c2fa4aa57fae) )
1537 	ROM_LOAD( "17.bin",       0x60000, 0x10000, CRC(3220a0b6) SHA1(24a16ea509e9aff82b9ddd14935d61bb71acff84) )
1538 	ROM_LOAD( "18.bin",       0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) )
1539 
1540 	ROM_REGION( 0x40000, "gfx3", 0 )
1541 	ROM_LOAD( "9.bin",        0x00000, 0x10000, CRC(7c435887) SHA1(ecb76f2148fa9773426f05aac208eb3ac02747db) )  /* tiles */
1542 	ROM_LOAD( "10.bin",       0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) )
1543 	ROM_LOAD( "19.bin",       0x20000, 0x10000, CRC(22d65df2) SHA1(2f286a24ea7af438b39126a4ed0c515745981416) )
1544 	ROM_LOAD( "20.bin",       0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
1545 
1546 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
1547 	ROM_LOAD( "b2_1.bin",     0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
1548 
1549 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
1550 	ROM_LOAD( "2.bin",        0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
1551 
1552 	ROM_REGION( 0x0300, "proms", 0 )
1553 	ROM_LOAD( "21j-k-0.101",  0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )    /* layer priorities */
1554 	ROM_LOAD( "21j-l-0.16",   0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing */
1555 ROM_END
1556 
1557 /* this is a well known italian bootleg of Double Dragon it can be identified by the following gameplay trait
1558  -- The Boss of level 4 is coloured like level 1 and 5 instead of green, and is invulnerable to rocks attack.
1559 
1560  in terms of code the game code has been heavily modified, banking writes appear to have been removed, and
1561  the graphic roms are all scrambled.  The game also runs on 3x M6809 rather than the original CPUs.
1562 
1563  */
1564 ROM_START( ddragon6809 )
1565 	ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
1566 	ROM_LOAD( "6809_20.bin",   0x08000, 0x08000, CRC(67e3b4f1) SHA1(4945d76b0694299f2f4739ebfba98da6d96fe4cb) )
1567 	ROM_LOAD( "6809_19.bin",   0x10000, 0x08000, CRC(090e2baf) SHA1(29b775c59c7a4d30a33e3d10e736cd1a83baf3bb) ) /* banked at 0x4000-0x8000 */
1568 	ROM_LOAD( "6809_18.bin",   0x18000, 0x08000, CRC(154d50c4) SHA1(4ffdd29406b6c6b552344f820f83715b1c7727d1) ) /* banked at 0x4000-0x8000 */
1569 	ROM_LOAD( "6809_17.bin",   0x20000, 0x08000, CRC(6489d637) SHA1(fd17fd870e9386a3e3bdd56c8d731c73d8c70b88) ) /* banked at 0x4000-0x8000 */
1570 
1571 	ROM_REGION( 0x8000, "sub", 0 ) /* sprite cpu */
1572 	ROM_LOAD( "21.bin",      0x00000, 0x08000, CRC(4437fc51) SHA1(fffcf2bec50d0b79861904b4abc607206b7794e6) )
1573 
1574 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
1575 	ROM_LOAD( "6809_16.bin",   0x08000, 0x08000, CRC(f4c72690) SHA1(c70d032355acf3f7f6586b6e57a94f80e099bf1a) )
1576 
1577 	/* all the gfx roms are scrambled on this set */
1578 	ROM_REGION( 0x08000, "gfx1", ROMREGION_ERASEFF )
1579 
1580 	ROM_REGION( 0x08000, "chars", 0 )
1581 	ROM_LOAD( "6809_13.bin",   0x00000, 0x08000, CRC(b5a54537) SHA1(a6157cde4f9738565008d11a4a6d8576ae3abfef) ) /* chars */
1582 
1583 	ROM_REGION( 0x80000, "gfx2", 0 )
1584 	ROM_LOAD( "22.bin",        0x00000, 0x08000, CRC(fe08ef61) SHA1(50404936934dc61f3553add4d4b918529b3b5ef3) )
1585 	ROM_LOAD( "23.bin",        0x08000, 0x08000, CRC(988bea93) SHA1(053ebb5a71dfdb68ae88ef49d8409a99f8c6926d) )
1586 	ROM_LOAD( "24.bin",        0x10000, 0x08000, CRC(437501fc) SHA1(e7758e0fb226ae46eb398bd95f5e95c90b6adb93) )
1587 	ROM_LOAD( "25.bin",        0x18000, 0x08000, CRC(d302f69b) SHA1(64d4d8ae38457ee6b361b5157ec0557f9a7639a8) )
1588 	ROM_LOAD( "26.bin",        0x20000, 0x08000, CRC(8ece953e) SHA1(12a43e1ed1a99b04299941a9506228490649b181) )
1589 	ROM_LOAD( "27.bin",        0x28000, 0x08000, CRC(15cd16cb) SHA1(ab2068ebba14da256e8f2600f34dca0e048a1de9) )
1590 	ROM_LOAD( "28.bin",        0x30000, 0x08000, CRC(51b8a217) SHA1(60c067cd7272f856e29cdb64312535236656891a) )
1591 	ROM_LOAD( "29.bin",        0x38000, 0x08000, CRC(e4ec2394) SHA1(43376ce2a07c1fc3053f7ac9b750e944d289105b) )
1592 	ROM_LOAD( "6809_1.bin",    0x40000, 0x08000, CRC(2485a71d) SHA1(3e987a2f3e9a59da5fdc7bb779a43736ca67aac7) )
1593 	ROM_LOAD( "6809_2.bin",    0x48000, 0x08000, CRC(6940120d) SHA1(bbe94f095ef983f54658c936f916ba6a72a84ead) )
1594 	ROM_LOAD( "6809_3.bin",    0x50000, 0x08000, CRC(c67aac12) SHA1(aab535507e3889bf1bdc2f4fe4828a70a350ba63) )
1595 	ROM_LOAD( "6809_4.bin",    0x58000, 0x08000, CRC(941dcd08) SHA1(266dee264f28affe8c3f57fe569929817ae16508) )
1596 	ROM_LOAD( "6809_5.bin",    0x60000, 0x08000, CRC(42d36bc3) SHA1(080cbc3ffda8ab26dc65a8e9eaf948c509d064b3) )
1597 	ROM_LOAD( "6809_6.bin",    0x68000, 0x08000, CRC(d5d19a8d) SHA1(c4b044dd12d6468c0ad114644f01813d4fe9a673) )
1598 	ROM_LOAD( "6809_7.bin",    0x70000, 0x08000, CRC(d4e350cd) SHA1(78ed2baa8c52b766f998091e7ce9e1a2941352e7) )
1599 	ROM_LOAD( "6809_8.bin",    0x78000, 0x08000, CRC(204fdb7d) SHA1(f75b1bc6f65e7a33927cd451267fcd7e2aa44f7e) )
1600 
1601 	ROM_REGION( 0x40000, "gfx3", 0 )
1602 	ROM_LOAD( "6809_9.bin",    0x00000, 0x10000, CRC(736eff0f) SHA1(ae2ec2d5c8ab1db579a08256d874426dc5d889c6) )
1603 	ROM_LOAD( "6809_10.bin",   0x10000, 0x10000, CRC(a670d088) SHA1(27e7b49645753dd039f104c3e0a7e6513a98710d) )
1604 	ROM_LOAD( "6809_11.bin",   0x20000, 0x10000, CRC(4171b70d) SHA1(dc300c9bca6481417e97ad03c973e47389f261c1) )
1605 	ROM_LOAD( "6809_12.bin",   0x30000, 0x10000, CRC(5f6a6d6f) SHA1(7d546a226cda81c28e7ccfb4c5daebc65072198d) )
1606 
1607 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples  */
1608 	ROM_LOAD( "6809_14.bin",   0x00000, 0x08000, CRC(678f8657) SHA1(2652fdc6719d2c889ca87802f6e2cefae59fc2eb) )
1609 
1610 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
1611 	ROM_LOAD( "6809_15.bin",   0x00000, 0x08000, CRC(10f21dea) SHA1(739cf649f91490384297a81a2cc9855acb58a1c0) )
1612 ROM_END
1613 
1614 /*
1615 CPU
1616 
1617 3x EF68B09EP (main)
1618 2x YM2203C (sound)
1619 2x OKI M5202 (sound)
1620 2x Y3014B (sound)
1621 2x LM324N (sound)
1622 1x TDA2003 (sound)
1623 1x oscillator 20.000
1624 1x oscillator 24.575 (24.000 on another PCB)
1625 1x orange resonator CSB445E (CSB500E on another PCB)
1626 
1627 ROMs
1628 
1629 12x 27C512 (1-12)
1630 9x 27256 (13-21)
1631 2x AM27S21PC
1632 1x N82S123N
1633 1x AM27S29PC
1634 1x PAL16r4
1635 1x PAL16R6
1636 
1637 Note
1638 
1639 1x JAMMA edge connector
1640 1x trimmer (volume)
1641 2x 8x2 switches dip
1642 
1643 */
1644 
1645 ROM_START( ddragon6809a )
1646 	ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
1647 	ROM_LOAD( "20.7f",   0x08000, 0x08000, CRC(c804819f) SHA1(cc570a90b7bef1c6263f5e1fd96ed377c508fe2b) )
1648 	ROM_LOAD( "19.7g",   0x10000, 0x08000, CRC(de08db4d) SHA1(e63b90c3bb3af01d2855de9a996b51068bed7b52) ) /* banked at 0x4000-0x8000 */
1649 	ROM_LOAD( "18.7h",   0x18000, 0x08000, CRC(154d50c4) SHA1(4ffdd29406b6c6b552344f820f83715b1c7727d1) ) /* banked at 0x4000-0x8000 */
1650 	ROM_LOAD( "17.7j",   0x20000, 0x08000, CRC(4052f37a) SHA1(9444a30ce32a2d35c601324d79c0ba602be4f288) ) /* banked at 0x4000-0x8000 */
1651 
1652 	ROM_REGION( 0x8000, "sub", 0 ) /* sprite cpu */
1653 	ROM_LOAD( "21.7d",   0x00000, 0x8000, CRC(4437fc51) SHA1(fffcf2bec50d0b79861904b4abc607206b7794e6) )
1654 
1655 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
1656 	ROM_LOAD( "16.7n",   0x08000, 0x08000, CRC(f4c72690) SHA1(c70d032355acf3f7f6586b6e57a94f80e099bf1a) )
1657 
1658 	/* all the gfx roms are scrambled on this set */
1659 	ROM_REGION( 0x08000, "gfx1", ROMREGION_ERASEFF )
1660 
1661 	ROM_REGION( 0x08000, "chars", 0 )
1662 	ROM_LOAD( "13.5f",   0x00000, 0x08000, CRC(b5a54537) SHA1(a6157cde4f9738565008d11a4a6d8576ae3abfef) )   /* chars */
1663 
1664 	ROM_REGION( 0x80000, "gfx2", 0 )
1665 	ROM_LOAD( "1.1t",         0x00000, 0x10000, CRC(5e810a6d) SHA1(5eba3e982b271bc284ca333429cd0b3759c9c8d1) )
1666 	ROM_LOAD( "2.1r",         0x10000, 0x10000, CRC(7300b785) SHA1(6d3b72bd7208e2bd790517a753c9d5192c88d20f) )
1667 	ROM_LOAD( "3.1q",         0x20000, 0x10000, CRC(19405de8) SHA1(ac1aa40478b92af5ccdde89812be78b7c9f7d20d) )
1668 	ROM_LOAD( "4.1p",         0x30000, 0x10000, CRC(4b10defd) SHA1(fb43eba7c8a7f77f0fdd6253d51b40b0e64598f5) )
1669 	ROM_LOAD( "5.1n",         0x40000, 0x10000, CRC(5b1bb493) SHA1(dd947d7d381af5952acece4b2cefc9fc4847ec68) )
1670 	ROM_LOAD( "6.1m",         0x50000, 0x10000, CRC(e8a2d2e7) SHA1(abc871e57a5280728b9f90625fb91011b848a4d8) )
1671 	ROM_LOAD( "7.1l",         0x60000, 0x10000, CRC(8010fcca) SHA1(9401c41088776beea91c32aaff8eb2fbe92b5e37) )
1672 	ROM_LOAD( "8.1j",         0x70000, 0x10000, CRC(bfa4da27) SHA1(68a649aec43e18dc79b4690c1dff2e2a6fc0065a) )
1673 
1674 	ROM_REGION( 0x40000, "gfx3", 0 )
1675 	ROM_LOAD( "9.2e",         0x00000, 0x10000, CRC(736eff0f) SHA1(ae2ec2d5c8ab1db579a08256d874426dc5d889c6) )
1676 	ROM_LOAD( "10.2d",        0x10000, 0x10000, CRC(a670d088) SHA1(27e7b49645753dd039f104c3e0a7e6513a98710d) )
1677 	ROM_LOAD( "11.2b",        0x20000, 0x10000, CRC(4171b70d) SHA1(dc300c9bca6481417e97ad03c973e47389f261c1) )
1678 	ROM_LOAD( "12.2a",        0x30000, 0x10000, CRC(5f6a6d6f) SHA1(7d546a226cda81c28e7ccfb4c5daebc65072198d) )
1679 
1680 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples (yes these really are smaller than the original game..)  */
1681 	ROM_LOAD( "14.7q",        0x00000, 0x08000, CRC(678f8657) SHA1(2652fdc6719d2c889ca87802f6e2cefae59fc2eb) )
1682 
1683 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
1684 	ROM_LOAD( "15.7o",        0x00000, 0x08000, CRC(10f21dea) SHA1(739cf649f91490384297a81a2cc9855acb58a1c0) )
1685 
1686 	ROM_REGION( 0x20000, "user1", 0 ) /* PROMs */
1687 	ROM_LOAD( "27s21.5o",        0x00000, 0x100, CRC(673f68c3) SHA1(9381453e8f868d80b6069264509a339e20e2b6b1) )
1688 	ROM_LOAD( "27s21.5p",        0x00000, 0x100, CRC(2dc270f2) SHA1(9f124ab2c98680bcc249218ee0de09ba49c09a84) )
1689 	ROM_LOAD( "27s29.6g",        0x00000, 0x200, CRC(095fb461) SHA1(7fd213fd8b8bbe30334523ccf06d4606c67b472e) )
1690 	ROM_LOAD( "82s129.4h",       0x00000, 0x100, CRC(7683cadd) SHA1(ff6fecf273c1d8812814cacc72fb71642ec32b6d) )
1691 
1692 	ROM_REGION( 0x20000, "user2", 0 ) /* PALs */
1693 	ROM_LOAD( "pal16r4.8g",        0x00000, 0x104, CRC(5b0263fd) SHA1(ddca425f82f5eb06b56f2ab116fb9a9b192e1097) )
1694 	ROM_LOAD( "pal16r6.2f",        0x00000, 0x104, CRC(bd76fb53) SHA1(2d0634e8edb3289a103719466465e9777606086e) )
1695 ROM_END
1696 
1697 
1698 ROM_START( ddragon2 )
1699 	ROM_REGION( 0x30000, "maincpu", 0 )
1700 	ROM_LOAD( "26a9-04.bin",  0x08000, 0x8000, CRC(f2cfc649) SHA1(d3f1e0bae02472914a940222e4f600170a91736d) )
1701 	ROM_LOAD( "26aa-03.bin",  0x10000, 0x8000, CRC(44dd5d4b) SHA1(427c4e419668b41545928cfc96435c010ecdc88b) )
1702 	ROM_LOAD( "26ab-0.bin",   0x18000, 0x8000, CRC(49ddddcd) SHA1(91dc53718d04718b313f23d86e241027c89d1a03) )
1703 	ROM_LOAD( "26ac-0e.63",   0x20000, 0x8000, CRC(57acad2c) SHA1(938e2a78af38ecd7e9e08fb10acc1940f7585f5e) )
1704 
1705 	ROM_REGION( 0x10000, "sub", 0 ) /* sprite CPU 64kb (Upper 16kb = 0) */
1706 	ROM_LOAD( "26ae-0.bin",   0x00000, 0x10000, CRC(ea437867) SHA1(cd910203af0565f981b9bdef51ea6e9c33ee82d3) )
1707 
1708 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* music CPU, 64kb */
1709 	ROM_LOAD( "26ad-0.bin",   0x00000, 0x8000, CRC(75e36cd6) SHA1(f24805f4f6925b3ac508e66a6fc25c275b05f3b9) )
1710 
1711 	ROM_REGION( 0x10000, "gfx1", 0 )
1712 	ROM_LOAD( "26a8-0e.19",   0x00000, 0x10000, CRC(4e80cd36) SHA1(dcae0709f27f32effb359f6b943f61b102749f2a) )  /* chars */
1713 
1714 	ROM_REGION( 0xc0000, "gfx2", 0 )
1715 	ROM_LOAD( "26j0-0.bin",   0x00000, 0x20000, CRC(db309c84) SHA1(ee095e4a3bc86737539784945decb1f63da47b9b) )  /* sprites */
1716 	ROM_LOAD( "26j1-0.bin",   0x20000, 0x20000, CRC(c3081e0c) SHA1(c4a9ae151aae21073a2c79c5ac088c72d4f3d9db) )
1717 	ROM_LOAD( "26af-0.bin",   0x40000, 0x20000, CRC(3a615aad) SHA1(ec90a35224a177d00327de6fd1a299df38abd790) )
1718 	ROM_LOAD( "26j2-0.bin",   0x60000, 0x20000, CRC(589564ae) SHA1(1e6e0ef623545615e8409b6d3ba586a71e2612b6) )
1719 	ROM_LOAD( "26j3-0.bin",   0x80000, 0x20000, CRC(daf040d6) SHA1(ab0fd5482625dbe64f0f0b0baff5dcde05309b81) )
1720 	ROM_LOAD( "26a10-0.bin",  0xa0000, 0x20000, CRC(6d16d889) SHA1(3bc62b3e7f4ddc3200a9cf8469239662da80c854) )
1721 
1722 	ROM_REGION( 0x40000, "gfx3", 0 )
1723 	ROM_LOAD( "26j4-0.bin",   0x00000, 0x20000, CRC(a8c93e76) SHA1(54d64f052971e7fa0d21c5ce12f87b0fa2b648d6) )  /* tiles */
1724 	ROM_LOAD( "26j5-0.bin",   0x20000, 0x20000, CRC(ee555237) SHA1(f9698f3e57f933a43e508f60667c860dee034d05) )
1725 
1726 	ROM_REGION( 0x40000, "oki", 0 ) /* adpcm samples */
1727 	ROM_LOAD( "26j6-0.bin",   0x00000, 0x20000, CRC(a84b2a29) SHA1(9cb529e4939c16a0a42f45dd5547c76c2f86f07b) )
1728 	ROM_LOAD( "26j7-0.bin",   0x20000, 0x20000, CRC(bc6a48d5) SHA1(04c434f8cd42a8f82a263548183569396f9b684d) )
1729 
1730 	ROM_REGION( 0x0200, "proms", 0 )
1731 	ROM_LOAD( "21j-k-0",      0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )    /* Layer priority (same as ddragon) */
1732 	ROM_LOAD( "prom.16",      0x0000, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing (same as ddragon)  */
1733 ROM_END
1734 
1735 
1736 ROM_START( ddragon2j )
1737 	ROM_REGION( 0x30000, "maincpu", 0 )
1738 	ROM_LOAD( "26a9-0_j.ic38", 0x08000, 0x8000, CRC(5e4fcdff) SHA1(78bf79a0b4f248c3355fef40448c76eb028f9163) )
1739 	ROM_LOAD( "26aa-0_j.ic52", 0x10000, 0x8000, CRC(bfb4ee04) SHA1(3692bbdef7d5b7cc3eb76362945b91b4a0f6ad4b) )
1740 	ROM_LOAD( "26ab-0.ic53",   0x18000, 0x8000, CRC(49ddddcd) SHA1(91dc53718d04718b313f23d86e241027c89d1a03) )
1741 	ROM_LOAD( "26ac-0_j.ic63", 0x20000, 0x8000, CRC(165858c7) SHA1(a00953df924cff9e79d28061849070f5401014d7) )
1742 
1743 	ROM_REGION( 0x10000, "sub", 0 ) /* sprite CPU 64kb (Upper 16kb = 0) */
1744 	ROM_LOAD( "26ae-0.ic37",   0x00000, 0x10000, CRC(ea437867) SHA1(cd910203af0565f981b9bdef51ea6e9c33ee82d3) )
1745 
1746 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* music CPU, 64kb */
1747 	ROM_LOAD( "26ad-0.ic41",   0x00000, 0x8000, CRC(3788af3b) SHA1(7f8833b01522553c767c470a9c27d24e638f37b9) ) // why is this different, label was the same
1748 
1749 	ROM_REGION( 0x10000, "gfx1", 0 )
1750 	ROM_LOAD( "26a8-0e.19",   0x00000, 0x10000, CRC(4e80cd36) SHA1(dcae0709f27f32effb359f6b943f61b102749f2a) )  /* chars */
1751 
1752 	ROM_REGION( 0xc0000, "gfx2", 0 )
1753 	ROM_LOAD( "26j0-0.bin",   0x00000, 0x20000, CRC(db309c84) SHA1(ee095e4a3bc86737539784945decb1f63da47b9b) )  /* sprites */
1754 	ROM_LOAD( "26j1-0.bin",   0x20000, 0x20000, CRC(c3081e0c) SHA1(c4a9ae151aae21073a2c79c5ac088c72d4f3d9db) )
1755 	ROM_LOAD( "26af-0.bin",   0x40000, 0x20000, CRC(3a615aad) SHA1(ec90a35224a177d00327de6fd1a299df38abd790) )
1756 	ROM_LOAD( "26j2-0.bin",   0x60000, 0x20000, CRC(589564ae) SHA1(1e6e0ef623545615e8409b6d3ba586a71e2612b6) )
1757 	ROM_LOAD( "26j3-0.bin",   0x80000, 0x20000, CRC(daf040d6) SHA1(ab0fd5482625dbe64f0f0b0baff5dcde05309b81) )
1758 	ROM_LOAD( "26a10-0.bin",  0xa0000, 0x20000, CRC(6d16d889) SHA1(3bc62b3e7f4ddc3200a9cf8469239662da80c854) )
1759 
1760 	ROM_REGION( 0x40000, "gfx3", 0 )
1761 	ROM_LOAD( "26j4-0.bin",   0x00000, 0x20000, CRC(a8c93e76) SHA1(54d64f052971e7fa0d21c5ce12f87b0fa2b648d6) )  /* tiles */
1762 	ROM_LOAD( "26j5-0.bin",   0x20000, 0x20000, CRC(ee555237) SHA1(f9698f3e57f933a43e508f60667c860dee034d05) )
1763 
1764 	ROM_REGION( 0x40000, "oki", 0 ) /* adpcm samples */
1765 	ROM_LOAD( "26j6-0.bin",   0x00000, 0x20000, CRC(a84b2a29) SHA1(9cb529e4939c16a0a42f45dd5547c76c2f86f07b) )
1766 	ROM_LOAD( "26j7-0.bin",   0x20000, 0x20000, CRC(bc6a48d5) SHA1(04c434f8cd42a8f82a263548183569396f9b684d) )
1767 
1768 	ROM_REGION( 0x0200, "proms", 0 )
1769 	ROM_LOAD( "prom.16",      0x0000, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing (same as ddragon) */
1770 ROM_END
1771 
1772 ROM_START( ddragon2u )
1773 	ROM_REGION( 0x30000, "maincpu", 0 )
1774 	ROM_LOAD( "26a9-04.bin",  0x08000, 0x8000, CRC(f2cfc649) SHA1(d3f1e0bae02472914a940222e4f600170a91736d) )
1775 	ROM_LOAD( "26aa-03.bin",  0x10000, 0x8000, CRC(44dd5d4b) SHA1(427c4e419668b41545928cfc96435c010ecdc88b) )
1776 	ROM_LOAD( "26ab-0.bin",   0x18000, 0x8000, CRC(49ddddcd) SHA1(91dc53718d04718b313f23d86e241027c89d1a03) )
1777 	ROM_LOAD( "26ac-02.bin",  0x20000, 0x8000, CRC(097eaf26) SHA1(60504abd30fec44c45197cdf3832c87d05ef577d) )
1778 
1779 	ROM_REGION( 0x10000, "sub", 0 ) /* sprite CPU 64kb (Upper 16kb = 0) */
1780 	ROM_LOAD( "26ae-0.bin",   0x00000, 0x10000, CRC(ea437867) SHA1(cd910203af0565f981b9bdef51ea6e9c33ee82d3) )
1781 
1782 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* music CPU, 64kb */
1783 	ROM_LOAD( "26ad-0.bin",   0x00000, 0x8000, CRC(75e36cd6) SHA1(f24805f4f6925b3ac508e66a6fc25c275b05f3b9) )
1784 
1785 	ROM_REGION( 0x10000, "gfx1", 0 )
1786 	ROM_LOAD( "26a8-0.bin",   0x00000, 0x10000, CRC(3ad1049c) SHA1(11d9544a56f8e6a84beb307a5c8a9ff8afc55c66) )  /* chars */
1787 
1788 	ROM_REGION( 0xc0000, "gfx2", 0 )
1789 	ROM_LOAD( "26j0-0.bin",   0x00000, 0x20000, CRC(db309c84) SHA1(ee095e4a3bc86737539784945decb1f63da47b9b) )  /* sprites */
1790 	ROM_LOAD( "26j1-0.bin",   0x20000, 0x20000, CRC(c3081e0c) SHA1(c4a9ae151aae21073a2c79c5ac088c72d4f3d9db) )
1791 	ROM_LOAD( "26af-0.bin",   0x40000, 0x20000, CRC(3a615aad) SHA1(ec90a35224a177d00327de6fd1a299df38abd790) )
1792 	ROM_LOAD( "26j2-0.bin",   0x60000, 0x20000, CRC(589564ae) SHA1(1e6e0ef623545615e8409b6d3ba586a71e2612b6) )
1793 	ROM_LOAD( "26j3-0.bin",   0x80000, 0x20000, CRC(daf040d6) SHA1(ab0fd5482625dbe64f0f0b0baff5dcde05309b81) )
1794 	ROM_LOAD( "26a10-0.bin",  0xa0000, 0x20000, CRC(6d16d889) SHA1(3bc62b3e7f4ddc3200a9cf8469239662da80c854) )
1795 
1796 	ROM_REGION( 0x40000, "gfx3", 0 )
1797 	ROM_LOAD( "26j4-0.bin",   0x00000, 0x20000, CRC(a8c93e76) SHA1(54d64f052971e7fa0d21c5ce12f87b0fa2b648d6) )  /* tiles */
1798 	ROM_LOAD( "26j5-0.bin",   0x20000, 0x20000, CRC(ee555237) SHA1(f9698f3e57f933a43e508f60667c860dee034d05) )
1799 
1800 	ROM_REGION( 0x40000, "oki", 0 ) /* adpcm samples */
1801 	ROM_LOAD( "26j6-0.bin",   0x00000, 0x20000, CRC(a84b2a29) SHA1(9cb529e4939c16a0a42f45dd5547c76c2f86f07b) )
1802 	ROM_LOAD( "26j7-0.bin",   0x20000, 0x20000, CRC(bc6a48d5) SHA1(04c434f8cd42a8f82a263548183569396f9b684d) )
1803 
1804 	ROM_REGION( 0x0200, "proms", 0 )
1805 	ROM_LOAD( "prom.16",      0x0000, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing (same as ddragon) */
1806 ROM_END
1807 
1808 ROM_START( ddragon2b )
1809 	ROM_REGION( 0x30000, "maincpu", 0 )
1810 	ROM_LOAD( "3",   0x08000, 0x8000, CRC(5cc38bad) SHA1(8ebbb998cce48b5baa4a738c2d4c2e481e2637fb) )
1811 	ROM_LOAD( "4",   0x10000, 0x8000, CRC(78750947) SHA1(6b8349c3cd27c37a4329cea213b6ff0167c4edee) )
1812 	ROM_LOAD( "5",   0x18000, 0x8000, CRC(49ddddcd) SHA1(91dc53718d04718b313f23d86e241027c89d1a03) )
1813 	ROM_LOAD( "6",   0x20000, 0x8000, CRC(097eaf26) SHA1(60504abd30fec44c45197cdf3832c87d05ef577d) )
1814 
1815 	ROM_REGION( 0x10000, "sub", 0 ) /* sprite CPU 64kb (Upper 16kb = 0) */
1816 	ROM_LOAD( "2",   0x00000, 0x10000, CRC(ea437867) SHA1(cd910203af0565f981b9bdef51ea6e9c33ee82d3) )
1817 
1818 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* music CPU, 64kb */
1819 	ROM_LOAD( "11",   0x00000, 0x8000, CRC(75e36cd6) SHA1(f24805f4f6925b3ac508e66a6fc25c275b05f3b9) )
1820 
1821 	ROM_REGION( 0x10000, "gfx1", 0 )
1822 	ROM_LOAD( "1",   0x00000, 0x10000, CRC(3ad1049c) SHA1(11d9544a56f8e6a84beb307a5c8a9ff8afc55c66) )  /* chars */
1823 
1824 	ROM_REGION( 0xc0000, "gfx2", 0 )
1825 	ROM_LOAD( "27",   0x00000, 0x10000, CRC(fe42df5d) SHA1(aab801346c2db04263cb61c97c6e086387675586) )  /* sprites */
1826 	ROM_LOAD( "26",   0x10000, 0x10000, CRC(42f582c6) SHA1(bb269f677321f706043aa33a12bd3ddda4c32e55) )
1827 	ROM_LOAD( "23",   0x20000, 0x10000, CRC(e157319f) SHA1(8b898fa20329b12293e7cb7ffc2e1b17304f826f) )
1828 	ROM_LOAD( "22",   0x30000, 0x10000, CRC(82e952c9) SHA1(d340262c11f3c0ef3640c487e6a78745a2fe97d4) )
1829 	ROM_LOAD( "25",   0x40000, 0x10000, CRC(4a4a085d) SHA1(80786c6fda135af1f9e9d8191879ab27baf36167) )
1830 	ROM_LOAD( "24",   0x50000, 0x10000, CRC(c9d52536) SHA1(54f9236c4d22e3fd79d66c3f45b134f1fc9a1d32) )
1831 	ROM_LOAD( "21",   0x60000, 0x10000, CRC(32ab0897) SHA1(f992dc3876621896b6e1fd6518f576b48d54a631) )
1832 	ROM_LOAD( "20",   0x70000, 0x10000, CRC(a68e168f) SHA1(6ae596c097d7d435b767207012de1d23316d86d4) )
1833 	ROM_LOAD( "17",   0x80000, 0x10000, CRC(882f99b1) SHA1(2fbb9171a2c9ddab177efe1e89e96426643d382b) )
1834 	ROM_LOAD( "16",   0x90000, 0x10000, CRC(e2fe3eca) SHA1(bfd2e91261b9a002a99998486a2b606d4ee2e59b) )
1835 	ROM_LOAD( "18",   0xa0000, 0x10000, CRC(0e1c6c63) SHA1(506e43161992c41d9b77c1df11228117f0587cbd) )
1836 	ROM_LOAD( "19",   0xb0000, 0x10000, CRC(0e21eae0) SHA1(0cde9cdc6dbe2015e7f38b391c78cf3f16658e5c) )
1837 
1838 	ROM_REGION( 0x40000, "gfx3", 0 )
1839 	ROM_LOAD( "15",   0x00000, 0x10000, CRC(3c3f16f6) SHA1(2fccbf1dd072c59b5923631fc1c6d40f7ea63996))
1840 	ROM_LOAD( "13",   0x10000, 0x10000, CRC(7c21be72) SHA1(9935c983d0f7613ee192758ddcd8d8592e8bf78a) )
1841 	ROM_LOAD( "14",   0x20000, 0x10000, CRC(e92f91f4) SHA1(4351b2b117c1104dcdb6f48531ddad385691c945) )
1842 	ROM_LOAD( "12",   0x30000, 0x10000, CRC(6896e2f7) SHA1(d230d2406ae451f59d1d0783b1d670a0d3e28d8c) )
1843 
1844 	ROM_REGION( 0x40000, "oki", 0 ) /* adpcm samples */
1845 	ROM_LOAD( "7",   0x00000, 0x10000, CRC(6d9e3f0f) SHA1(5c3e7fb2e46939dd3c540b9e1af9591dbfd15b19) )
1846 	ROM_LOAD( "9",   0x10000, 0x10000, CRC(0c15dec9) SHA1(b0a6bb13216f4321b5fc01a649ea84d2d1d51088) )
1847 	ROM_LOAD( "8",   0x20000, 0x10000, CRC(151b22b4) SHA1(3b0470df9b719dd76115d8c549010ec92e28d0d0) )
1848 	ROM_LOAD( "10",  0x30000, 0x10000, CRC(ae2fc028) SHA1(94fea9088b7b412706b6aaf7aac856709649fb63) )
1849 
1850 	ROM_REGION( 0x0200, "proms", 0 ) // wasn't in this set, is it still present?
1851 	ROM_LOAD( "prom.16",      0x0000, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing (same as ddragon) */
1852 ROM_END
1853 
1854 ROM_START( tstrike )
1855 	ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
1856 	ROM_LOAD( "prog.rom",        0x08000, 0x08000, CRC(bf011a00) SHA1(09a55042a219dd37cb9e7feeab092ebfb903ddde) )
1857 	ROM_LOAD( "tstrike.25",      0x10000, 0x08000, CRC(b6a0c2f3) SHA1(3434689ca217f5af268058ad34c277db672d389c) ) /* banked at 0x4000-0x8000 */
1858 	ROM_LOAD( "tstrike.24",      0x18000, 0x08000, CRC(363816fa) SHA1(65c1ccbb950e09230196b49dc7312a13a34f3f79) ) /* banked at 0x4000-0x8000 */
1859 	/* IC23 is replaced with a daughterboard containing a 68705 MCU */
1860 
1861 	ROM_REGION( 0x10000, "sub", 0 ) /* sprite cpu */
1862 	ROM_LOAD( "63701.bin",    0xc000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) )
1863 
1864 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
1865 	ROM_LOAD( "tstrike.30",      0x08000, 0x08000, CRC(3f3f04a1) SHA1(45d2b4542ec783c1c4122616606be6c160f76c06) )
1866 
1867 	ROM_REGION( 0x0800, "mcu", 0 )  /* 2k for the microcontroller */
1868 	ROM_LOAD( "68705prt.mcu",   0x00000, 0x0800, CRC(34cbb2d3) SHA1(8e0c3b13c636012d88753d547c639b1a8af85680) )
1869 
1870 	ROM_REGION( 0x08000, "gfx1", 0 )
1871 	ROM_LOAD( "alpha.rom",        0x00000, 0x08000, CRC(3a7c3185) SHA1(1ccaa6a1f46d66feda49fdea337b8eb32f14c7b5) )  /* chars */
1872 
1873 	ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
1874 	ROM_LOAD( "tstrike.117",  0x00000, 0x10000, CRC(f7122c0d) SHA1(2b6b359585d9df966c1fc0041fb972aac9b1ab93) )
1875 	ROM_LOAD( "21j-b",        0x10000, 0x10000, CRC(40507a76) SHA1(74581a4b6f48100bddf20f319903af2fe36f39fa) ) /* from ddragon (116) */
1876 	ROM_LOAD( "tstrike.115",  0x20000, 0x10000, CRC(a13c7b62) SHA1(d929d8db7eb2b949cd3bd77238611ecc54b2e885) )
1877 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) ) /* from ddragon (114) */
1878 	ROM_LOAD( "tstrike.113",  0x40000, 0x10000, CRC(5ad60938) SHA1(a0af9b227157d87fa6d4ea88b34227a97baff20e) )
1879 	ROM_LOAD( "21j-f",        0x50000, 0x10000, CRC(6ba152f6) SHA1(a301ff809be0e1471f4ff8305b30c2fa4aa57fae) ) /* from ddragon (112) */
1880 	ROM_LOAD( "tstrike.111",  0x60000, 0x10000, CRC(7b9c87ad) SHA1(429049f84b2084bb074e380dca63b75150e7e69f) )
1881 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) ) /* from ddragon (110) */
1882 
1883 	ROM_REGION( 0x40000, "gfx3", 0 )    /* tiles */
1884 	ROM_LOAD( "tstrike.78",   0x00000, 0x10000, CRC(88284aec) SHA1(f07bc5f84f2b2f976c911541c8f1ff2558f569ca) )
1885 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) ) /* from ddragon (77) */
1886 	ROM_LOAD( "tstrike.109",  0x20000, 0x10000, CRC(8c2cd0bb) SHA1(364a708484c7750f38162d463104216bbd555b86) )
1887 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) ) /* from ddragon (108) */
1888 
1889 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
1890 	ROM_LOAD( "tstrike.94",        0x00000, 0x10000, CRC(8a2c09fc) SHA1(f59a43c3fa814b169a51744f9604d36ae63c190f) ) /* first+second half identical */
1891 
1892 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
1893 	ROM_LOAD( "tstrike.95",        0x00000, 0x08000, CRC(1812eecb) SHA1(9b7d526f30a86682cdf088600b25ea5a56b112ef) )
1894 
1895 	ROM_REGION( 0x0300, "proms", 0 )
1896 	ROM_LOAD( "21j-k-0.101",  0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )    /* layer priorities */
1897 	ROM_LOAD( "21j-l-0.16",   0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing */
1898 ROM_END
1899 
1900 ROM_START( tstrikea )
1901 	ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
1902 	ROM_LOAD( "tstrike.26",      0x08000, 0x08000, CRC(871b10bc) SHA1(c824775cf72c039612fda76c4a518cd89e4c8657) )
1903 	ROM_LOAD( "tstrike.25",      0x10000, 0x08000, CRC(b6a0c2f3) SHA1(3434689ca217f5af268058ad34c277db672d389c) ) /* banked at 0x4000-0x8000 */
1904 	ROM_LOAD( "tstrike.24",      0x18000, 0x08000, CRC(363816fa) SHA1(65c1ccbb950e09230196b49dc7312a13a34f3f79) ) /* banked at 0x4000-0x8000 */
1905 	/* IC23 is replaced with a daughterboard containing a 68705 MCU */
1906 
1907 	ROM_REGION( 0x10000, "sub", 0 ) /* sprite cpu */
1908 	ROM_LOAD( "63701.bin",    0xc000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) )
1909 
1910 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
1911 	ROM_LOAD( "tstrike.30",      0x08000, 0x08000, CRC(3f3f04a1) SHA1(45d2b4542ec783c1c4122616606be6c160f76c06) )
1912 
1913 	ROM_REGION( 0x0800, "mcu", 0 )  /* 2k for the microcontroller */
1914 	ROM_LOAD( "68705prt.mcu",   0x00000, 0x0800, CRC(34cbb2d3) SHA1(8e0c3b13c636012d88753d547c639b1a8af85680) )
1915 
1916 	ROM_REGION( 0x08000, "gfx1", 0 )
1917 	ROM_LOAD( "tstrike.20",        0x00000, 0x08000, CRC(b6b8bfa0) SHA1(ce50f8eb1a84873ef3df621d971a6b087473d6c2) ) /* chars */
1918 
1919 	ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
1920 	ROM_LOAD( "tstrike.117",  0x00000, 0x10000, CRC(f7122c0d) SHA1(2b6b359585d9df966c1fc0041fb972aac9b1ab93) )
1921 	ROM_LOAD( "21j-b",        0x10000, 0x10000, CRC(40507a76) SHA1(74581a4b6f48100bddf20f319903af2fe36f39fa) ) /* from ddragon (116) */
1922 	ROM_LOAD( "tstrike.115",  0x20000, 0x10000, CRC(a13c7b62) SHA1(d929d8db7eb2b949cd3bd77238611ecc54b2e885) )
1923 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) ) /* from ddragon (114) */
1924 	ROM_LOAD( "tstrike.113",  0x40000, 0x10000, CRC(5ad60938) SHA1(a0af9b227157d87fa6d4ea88b34227a97baff20e) )
1925 	ROM_LOAD( "21j-f",        0x50000, 0x10000, CRC(6ba152f6) SHA1(a301ff809be0e1471f4ff8305b30c2fa4aa57fae) ) /* from ddragon (112) */
1926 	ROM_LOAD( "tstrike.111",  0x60000, 0x10000, CRC(7b9c87ad) SHA1(429049f84b2084bb074e380dca63b75150e7e69f) )
1927 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) ) /* from ddragon (110) */
1928 
1929 	ROM_REGION( 0x40000, "gfx3", 0 )    /* tiles */
1930 	ROM_LOAD( "tstrike.78",   0x00000, 0x10000, CRC(88284aec) SHA1(f07bc5f84f2b2f976c911541c8f1ff2558f569ca) )
1931 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) ) /* from ddragon (77) */
1932 	ROM_LOAD( "tstrike.109",  0x20000, 0x10000, CRC(8c2cd0bb) SHA1(364a708484c7750f38162d463104216bbd555b86) )
1933 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) ) /* from ddragon (108) */
1934 
1935 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
1936 	ROM_LOAD( "tstrike.94",        0x00000, 0x10000, CRC(8a2c09fc) SHA1(f59a43c3fa814b169a51744f9604d36ae63c190f) ) /* first+second half identical */
1937 
1938 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
1939 	ROM_LOAD( "tstrike.95",        0x00000, 0x08000, CRC(1812eecb) SHA1(9b7d526f30a86682cdf088600b25ea5a56b112ef) )
1940 
1941 	ROM_REGION( 0x0300, "proms", 0 )
1942 	ROM_LOAD( "21j-k-0.101",  0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )    /* layer priorities */
1943 	ROM_LOAD( "21j-l-0.16",   0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing */
1944 ROM_END
1945 
1946 
1947 ROM_START( ddungeon )
1948 	ROM_REGION( 0x30000, "maincpu", 0 ) /* Main CPU? */
1949 	ROM_LOAD( "dd25.25",    0x10000, 0x8000,  CRC(922e719c) SHA1(d1c73f56913cd368158abc613d7bbab669509742) )
1950 	ROM_LOAD( "dd26.26",    0x08000, 0x8000,  CRC(a6e7f608) SHA1(83b9301c39bfdc1e50a37f2bdc4d4f65a1111bee) )
1951 	/* IC23 is replaced with a daughterboard containing a 68705 MCU */
1952 
1953 	ROM_REGION( 0x10000, "sub", 0 ) /* sprite cpu */
1954 	ROM_LOAD( "63701.bin",  0xc000,  0x4000,  CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) )
1955 
1956 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
1957 	ROM_LOAD( "dd30.30",    0x08000, 0x08000, CRC(ef1af99a) SHA1(7ced695b81ca9efbb7b28b78013e112edac85672) )
1958 
1959 	ROM_REGION( 0x0800, "mcu", 0 )  /* 2k for the microcontroller */
1960 	ROM_LOAD( "dd_mcu.bin", 0x00000, 0x0800,  CRC(34cbb2d3) SHA1(8e0c3b13c636012d88753d547c639b1a8af85680) )
1961 
1962 	ROM_REGION( 0x10000, "gfx1", 0 ) /* GFX? */
1963 	ROM_LOAD( "dd20.20",    0x00000, 0x08000, CRC(d976b78d) SHA1(e1cd47032a0f91d812c3925d1f1267a9972bf48e) )
1964 
1965 	ROM_REGION( 0x20000, "gfx2", 0 ) /* GFX */
1966 	ROM_LOAD( "dd117.117",  0x00000, 0x08000, CRC(e912ca81) SHA1(8c274400170f46f84042f4f9cffba8d2fe9fbc10) )
1967 	ROM_LOAD( "dd113.113",  0x10000, 0x08000, CRC(43264ad8) SHA1(74f031d6179390bc4fa99f4929a6886db8c2b510) )
1968 
1969 	ROM_REGION( 0x20000, "gfx3", 0 ) /* GFX */
1970 	ROM_LOAD( "dd78.78",    0x00000, 0x08000, CRC(3deacae9) SHA1(6663f054ed3eed50c5cacfa5d22d465dfb179964) )
1971 	ROM_LOAD( "dd109.109",  0x10000, 0x08000, CRC(5a2f31eb) SHA1(1b85533443e148adb2a9c2c09c43cbf2c35c86bc) )
1972 
1973 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
1974 	ROM_LOAD( "21j-6",      0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) ) /* at IC95 */
1975 
1976 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
1977 	ROM_LOAD( "21j-7",      0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) ) /* at IC94 */
1978 
1979 	ROM_REGION( 0x0300, "proms", 0 )
1980 	ROM_LOAD( "21j-k-0.101",  0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )    /* layer priorities */
1981 	ROM_LOAD( "21j-l-0.16",   0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing */
1982 ROM_END
1983 
1984 /* the only differences with this set are 2x graphic roms, and the sound program.
1985    this version uses the sound program from double dragon, and as this configuration has been found on at least
1986    4 boards it's likely that the updated sound rom in the parent set was only shipped with the 'game room'
1987    version of the game */
1988 ROM_START( ddungeone )
1989 	ROM_REGION( 0x30000, "maincpu", 0 ) /* Main CPU? */
1990 	ROM_LOAD( "dd25.25",    0x10000, 0x8000,  CRC(922e719c) SHA1(d1c73f56913cd368158abc613d7bbab669509742) ) /* 3 on this board */
1991 	ROM_LOAD( "dd26.26",    0x08000, 0x8000,  CRC(a6e7f608) SHA1(83b9301c39bfdc1e50a37f2bdc4d4f65a1111bee) ) /* 2 on this board */
1992 	/* IC23 is replaced with a daughterboard containing a 68705 MCU */
1993 
1994 	ROM_REGION( 0x10000, "sub", 0 ) /* sprite cpu */
1995 	ROM_LOAD( "63701.bin",  0xc000,  0x4000,  CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) )
1996 
1997 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
1998 	ROM_LOAD( "21j-0-1",      0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) ) /* from ddragon */
1999 
2000 	ROM_REGION( 0x0800, "mcu", 0 )  /* 2k for the microcontroller */
2001 	ROM_LOAD( "dd_mcu.bin", 0x00000, 0x0800,  CRC(34cbb2d3) SHA1(8e0c3b13c636012d88753d547c639b1a8af85680) )
2002 
2003 	ROM_REGION( 0x10000, "gfx1", 0 ) /* GFX? */
2004 	ROM_LOAD( "dd6.bin",    0x00000, 0x08000, CRC(057588ca) SHA1(d4a5dd3ea8cf455b54657473d4d52ab5e838ae15) )
2005 
2006 	ROM_REGION( 0x20000, "gfx2", 0 ) /* GFX */
2007 	ROM_LOAD( "dd-7r.bin",  0x00000, 0x08000, CRC(50d6ab5d) SHA1(4c9cbd72d38b631ea2ca231045ef3f3e11cc7c07) )
2008 	ROM_LOAD( "dd113.113",  0x10000, 0x08000, CRC(43264ad8) SHA1(74f031d6179390bc4fa99f4929a6886db8c2b510) ) /* 7K on this board */
2009 
2010 	ROM_REGION( 0x20000, "gfx3", 0 ) /* GFX */
2011 	ROM_LOAD( "dd78.78",    0x00000, 0x08000, CRC(3deacae9) SHA1(6663f054ed3eed50c5cacfa5d22d465dfb179964) ) /* 6B on this board */
2012 	ROM_LOAD( "dd109.109",  0x10000, 0x08000, CRC(5a2f31eb) SHA1(1b85533443e148adb2a9c2c09c43cbf2c35c86bc) ) /* 7C on this board */
2013 
2014 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
2015 	ROM_LOAD( "21j-6",      0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
2016 
2017 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
2018 	ROM_LOAD( "21j-7",      0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
2019 
2020 	ROM_REGION( 0x0300, "proms", 0 )
2021 	ROM_LOAD( "21j-k-0.101",  0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )    /* layer priorities */
2022 	ROM_LOAD( "21j-l-0.16",   0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing */
2023 ROM_END
2024 
2025 
2026 ROM_START( darktowr )
2027 	ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
2028 	ROM_LOAD( "dt.26",         0x08000, 0x08000, CRC(8134a472) SHA1(7d42d2ed8d09855241d98ed94bce140a314c2f66) )
2029 	ROM_LOAD( "21j-2-3.25",    0x10000, 0x08000, CRC(5779705e) SHA1(4b8f22225d10f5414253ce0383bbebd6f720f3af) ) /* from ddragon */
2030 	ROM_LOAD( "dt.24",         0x18000, 0x08000, CRC(523a5413) SHA1(71c04287e4f2e792c98abdeb97fe70abd0d5e918) ) /* banked at 0x4000-0x8000 */
2031 	/* IC23 is replaced with a daughterboard containing a 68705 MCU */
2032 
2033 	ROM_REGION( 0x10000, "sub", 0 ) /* sprite cpu */
2034 	ROM_LOAD( "63701.bin",    0xc000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) )
2035 
2036 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
2037 	ROM_LOAD( "21j-0-1",      0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) ) /* from ddragon */
2038 
2039 	ROM_REGION( 0x0800, "mcu", 0 )  /* 2k for the microcontroller */
2040 	ROM_LOAD( "68705prt.mcu",   0x00000, 0x0800, CRC(34cbb2d3) SHA1(8e0c3b13c636012d88753d547c639b1a8af85680) )
2041 
2042 	ROM_REGION( 0x08000, "gfx1", 0 ) /* chars */
2043 	ROM_LOAD( "dt.20",        0x00000, 0x08000, CRC(860b0298) SHA1(087e4e6511c5bed74ffbfd077ece55a756b13253) )
2044 
2045 	ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */
2046 	ROM_LOAD( "dt.117",       0x00000, 0x10000, CRC(750dd0fa) SHA1(d95b95a54c7ed87a27edb8660810dd89efa10c9f) )
2047 	ROM_LOAD( "dt.116",       0x10000, 0x10000, CRC(22cfa87b) SHA1(0008a41f307be96be91f491bdeaa1fa450dd0fdf) )
2048 	ROM_LOAD( "dt.115",       0x20000, 0x10000, CRC(8a9f1c34) SHA1(1f07f424b2ab14a051f2c84b3d89fc5d35c5f20b) )
2049 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) ) /* from ddragon */
2050 	ROM_LOAD( "dt.113",       0x40000, 0x10000, CRC(7b4bbf9c) SHA1(d0caa3c38e059d3ee48e3e801da36f67457ed542) )
2051 	ROM_LOAD( "dt.112",       0x50000, 0x10000, CRC(df3709d4) SHA1(9cca44be97260e730786db8244a0d655c86537aa) )
2052 	ROM_LOAD( "dt.111",       0x60000, 0x10000, CRC(59032154) SHA1(637372e4619472a958f4971b50a6fe0985bffc8b) )
2053 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) ) /* from ddragon */
2054 
2055 	ROM_REGION( 0x40000, "gfx3", 0 ) /* tiles */
2056 	ROM_LOAD( "dt.78",        0x00000, 0x10000, CRC(72c15604) SHA1(202b46a2445eea5877e986a871bb0a6b76b88a6f) )
2057 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) ) /* from ddragon */
2058 	ROM_LOAD( "dt.109",       0x20000, 0x10000, CRC(15bdcb62) SHA1(75382a3805dc333b196e119d28b5c3f320bd9f2a) )
2059 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) ) /* from ddragon */
2060 
2061 	ROM_REGION( 0x10000, "adpcm1", 0 ) /* adpcm samples */
2062 	ROM_LOAD( "21j-6",        0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) ) /* from ddragon */
2063 
2064 	ROM_REGION( 0x10000, "adpcm2", 0 ) /* adpcm samples */
2065 	ROM_LOAD( "21j-7",        0x00000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) ) /* from ddragon */
2066 
2067 	ROM_REGION( 0x0300, "proms", 0 )
2068 	ROM_LOAD( "21j-k-0.101",  0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )    /* layer priorities */
2069 	ROM_LOAD( "21j-l-0.16",   0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )    /* sprite timing */
2070 ROM_END
2071 
2072 
2073 ROM_START( toffy )
2074 	ROM_REGION( 0x30000, "maincpu", 0 ) /* Main CPU */
2075 	ROM_LOAD( "2-27512.rom", 0x00000, 0x10000, CRC(244709dd) SHA1(b2db51b910f1a031b94fb50e684351f657a465dc) )
2076 	ROM_RELOAD( 0x10000, 0x10000 )
2077 
2078 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* Sound CPU */
2079 	ROM_LOAD( "u142.1", 0x00000, 0x10000, CRC(541bd7f0) SHA1(3f0097f5877eae50651f94d46d7dd9127037eb6e) )
2080 
2081 	ROM_REGION( 0x10000, "gfx1", 0 ) /* GFX */
2082 	ROM_LOAD( "7-27512.rom", 0x000, 0x10000, CRC(f9e8ec64) SHA1(36891cd8f28800e03fe0eac84b2484a70011eabb) )
2083 
2084 	ROM_REGION( 0x20000, "gfx3", 0 ) /* GFX */
2085 	/* the same as 'Dangerous Dungeons' once decrypted */
2086 	ROM_LOAD( "4-27512.rom", 0x00000, 0x10000, CRC(94b5ef6f) SHA1(32967f6cfc6a077c31923318891ed508f83e67f6) )
2087 	ROM_LOAD( "3-27512.rom", 0x10000, 0x10000, CRC(a7a053a3) SHA1(98625fe73a409c8d51136931a5f707a0bf75b66a) )
2088 
2089 	ROM_REGION( 0x20000, "gfx2", 0 ) /* GFX */
2090 	ROM_LOAD( "6-27512.rom", 0x00000, 0x10000, CRC(2ba7ca47) SHA1(ad709fc871f1f1a7d4b0fdf0f516c53fd4c8b685) )
2091 	ROM_LOAD( "5-27512.rom", 0x10000, 0x10000, CRC(4f91eec6) SHA1(18a5f98dfba33837b73d032a6153eeb03263684b) )
2092 ROM_END
2093 
2094 ROM_START( stoffy )
2095 	ROM_REGION( 0x30000, "maincpu", 0 ) /* Main CPU */
2096 	ROM_LOAD( "2.u70", 0x00000, 0x10000, CRC(6203aeb5) SHA1(e57aa520e8096df01461b235f77557c267571a57) )
2097 	ROM_RELOAD( 0x10000, 0x10000 )
2098 
2099 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* Sound CPU */
2100 	ROM_LOAD( "1.u142", 0x00000, 0x10000, CRC(541bd7f0) SHA1(3f0097f5877eae50651f94d46d7dd9127037eb6e) ) // same as 'toffy'
2101 
2102 	ROM_REGION( 0x10000, "gfx1", 0 ) /* GFX */
2103 	ROM_LOAD( "7.u35", 0x00000, 0x10000, CRC(1cf13736) SHA1(bff5b99ea20af32f1fc7f28f4f0b397ec987c7ca) )
2104 
2105 	ROM_REGION( 0x20000, "gfx3", 0 ) /* GFX */
2106 	ROM_LOAD( "4.u78", 0x00000, 0x10000, CRC(2066c3c7) SHA1(6778e654c0953a7e4ff18cbd326e9d3f8218a3b2) ) // 0
2107 	ROM_LOAD( "3.u77", 0x10000, 0x10000, CRC(3625f813) SHA1(b44830896c69cd5c618c4740ccf471f31dfa34c1) ) // 0
2108 
2109 	ROM_REGION( 0x20000, "gfx2", 0 ) /* GFX */
2110 	ROM_LOAD( "6.u80", 0x00000, 0x10000, CRC(ff190865) SHA1(245e69651d0161fcb416bba8f743602b4ee83139) ) // 1
2111 	ROM_LOAD( "5.u79", 0x10000, 0x10000, CRC(333d5b8a) SHA1(d3573db87e2318c144ee9ace6c975a70fc96f4c4) ) // 1
2112 ROM_END
2113 
2114 ROM_START( stoffyu )
2115 	ROM_REGION( 0x30000, "maincpu", 0 ) /* Main CPU */
2116 	ROM_LOAD( "u70.2", 0x00000, 0x10000, CRC(3c156610) SHA1(d7fdbc595bdc77c452da39da8b20774db0952e33) )
2117 	ROM_RELOAD( 0x10000, 0x10000 )
2118 
2119 	ROM_REGION( 0x10000, "soundcpu", 0 ) /* Sound CPU */
2120 	ROM_LOAD( "1.u142", 0x00000, 0x10000, CRC(541bd7f0) SHA1(3f0097f5877eae50651f94d46d7dd9127037eb6e) ) // same as 'toffy'
2121 
2122 	ROM_REGION( 0x10000, "gfx1", 0 ) /* GFX */
2123 	ROM_LOAD( "u35.7", 0x00000, 0x10000, CRC(83735d25) SHA1(d82c046db0112d7d2877339652b2111f12513a4f) )
2124 
2125 	ROM_REGION( 0x20000, "gfx3", 0 ) /* GFX */
2126 	ROM_LOAD( "u78.4", 0x00000, 0x10000, CRC(9743a74d) SHA1(876696c5e88e58e6e44671c33a4c140be02a941e) ) // 0
2127 	ROM_LOAD( "u77.3", 0x10000, 0x10000, CRC(f267109a) SHA1(679d2147c79636796dda850345c04ad8a9daa6af) ) // 0
2128 
2129 	ROM_REGION( 0x20000, "gfx2", 0 ) /* GFX */
2130 	ROM_LOAD( "6.u80", 0x00000, 0x10000, CRC(ff190865) SHA1(245e69651d0161fcb416bba8f743602b4ee83139) ) // 1
2131 	ROM_LOAD( "5.u79", 0x10000, 0x10000, CRC(333d5b8a) SHA1(d3573db87e2318c144ee9ace6c975a70fc96f4c4) ) // 1
2132 ROM_END
2133 
2134 
2135 
2136 /*************************************
2137  *
2138  *  Driver-specific initialization
2139  *
2140  *************************************/
2141 
2142 void ddragon_state::init_ddragon()
2143 {
2144 	m_sprite_irq = INPUT_LINE_NMI;
2145 	m_technos_video_hw = 0;
2146 }
2147 
2148 
init_ddragon2()2149 void ddragon_state::init_ddragon2()
2150 {
2151 	m_sprite_irq = INPUT_LINE_NMI;
2152 	m_technos_video_hw = 2;
2153 }
2154 
2155 
init_darktowr()2156 void darktowr_state::init_darktowr()
2157 {
2158 	save_item(NAME(m_mcu_port_a_out));
2159 
2160 	m_sprite_irq = INPUT_LINE_NMI;
2161 	m_technos_video_hw = 0;
2162 	m_mcu_port_a_out = 0xff;
2163 }
2164 
2165 
init_toffy()2166 void toffy_state::init_toffy()
2167 {
2168 	m_technos_video_hw = 0;
2169 
2170 	/* the program rom has a simple bitswap encryption */
2171 	uint8_t *rom = memregion("maincpu")->base();
2172 	int length = memregion("maincpu")->bytes();
2173 	for (int i = 0; i < length; i++)
2174 		rom[i] = bitswap<8>(rom[i], 6,7,5,4,3,2,1,0);
2175 
2176 	/* and the fg gfx ... */
2177 	rom = memregion("gfx1")->base();
2178 	length = memregion("gfx1")->bytes();
2179 	for (int i = 0; i < length; i++)
2180 		rom[i] = bitswap<8>(rom[i], 7,6,5,3,4,2,1,0);
2181 
2182 	/* and the sprites gfx */
2183 	rom = memregion("gfx2")->base();
2184 	length = memregion("gfx2")->bytes();
2185 	for (int i = 0; i < length; i++)
2186 		rom[i] = bitswap<8>(rom[i], 7,6,5,4,3,2,0,1);
2187 
2188 	/* and the bg gfx */
2189 	rom = memregion("gfx3")->base();
2190 	length = memregion("gfx3")->bytes();
2191 	for (int i = 0; i < length / 2; i++)
2192 	{
2193 		rom[i + 0*length/2] = bitswap<8>(rom[i + 0*length/2], 7,6,1,4,3,2,5,0);
2194 		rom[i + 1*length/2] = bitswap<8>(rom[i + 1*length/2], 7,6,2,4,3,5,1,0);
2195 	}
2196 
2197 	/* should the sound rom be bitswapped too? */
2198 }
2199 
init_ddragon6809()2200 void ddragon_state::init_ddragon6809()
2201 {
2202 	uint8_t *src = memregion("chars")->base();
2203 	uint8_t *dst = memregion("gfx1")->base();
2204 
2205 	for (int i = 0; i < 0x8000; i++)
2206 	{
2207 		switch (i & 0x18)
2208 		{
2209 			case 0x00: dst[i] = src[(i & ~0x18) | 0x18]; break;
2210 			case 0x08: dst[i] = src[(i & ~0x18) | 0x00]; break;
2211 			case 0x10: dst[i] = src[(i & ~0x18) | 0x08]; break;
2212 			case 0x18: dst[i] = src[(i & ~0x18) | 0x10]; break;
2213 		}
2214 	}
2215 
2216 	m_sprite_irq = INPUT_LINE_NMI;
2217 	m_technos_video_hw = 0;
2218 }
2219 
2220 
2221 
2222 /*************************************
2223  *
2224  *  Game drivers
2225  *
2226  *************************************/
2227 
2228 GAME( 1987, ddragon,      0,        ddragon,     ddragon,  ddragon_state,  init_ddragon,     ROT0, "Technos Japan",                         "Double Dragon (Japan)",                       MACHINE_SUPPORTS_SAVE )
2229 GAME( 1987, ddragonw,     ddragon,  ddragon,     ddragon,  ddragon_state,  init_ddragon,     ROT0, "Technos Japan (Taito license)",         "Double Dragon (World set 1)",                 MACHINE_SUPPORTS_SAVE )
2230 GAME( 1987, ddragonw1,    ddragon,  ddragon,     ddragon,  ddragon_state,  init_ddragon,     ROT0, "Technos Japan (Taito license)",         "Double Dragon (World set 2)",                 MACHINE_SUPPORTS_SAVE )
2231 GAME( 1987, ddragonu,     ddragon,  ddragon,     ddragon,  ddragon_state,  init_ddragon,     ROT0, "Technos Japan (Taito America license)", "Double Dragon (US set 1)",                    MACHINE_SUPPORTS_SAVE )
2232 GAME( 1987, ddragonua,    ddragon,  ddragon,     ddragon,  ddragon_state,  init_ddragon,     ROT0, "Technos Japan (Taito America license)", "Double Dragon (US set 2)",                    MACHINE_SUPPORTS_SAVE )
2233 GAME( 1987, ddragonub,    ddragon,  ddragon,     ddragon,  ddragon_state,  init_ddragon,     ROT0, "Technos Japan (Taito America license)", "Double Dragon (US set 3)",                    MACHINE_SUPPORTS_SAVE )
2234 GAME( 1987, ddragonb2,    ddragon,  ddragon,     ddragon,  ddragon_state,  init_ddragon,     ROT0, "bootleg",                               "Double Dragon (bootleg)",                     MACHINE_SUPPORTS_SAVE )
2235 GAME( 1987, ddragonb,     ddragon,  ddragonb,    ddragon,  ddragon_state,  init_ddragon,     ROT0, "bootleg",                               "Double Dragon (bootleg with HD6309)",         MACHINE_SUPPORTS_SAVE ) // according to dump notes
2236 GAME( 1987, ddragonba,    ddragon,  ddragonba,   ddragon,  ddragon_state,  init_ddragon,     ROT0, "bootleg",                               "Double Dragon (bootleg with MC6803)",         MACHINE_SUPPORTS_SAVE )
2237 GAME( 1987, ddragon6809,  ddragon,  ddragon6809, ddragon,  ddragon_state,  init_ddragon6809, ROT0, "bootleg",                               "Double Dragon (bootleg with 3xM6809, set 1)", MACHINE_NOT_WORKING )
2238 GAME( 1987, ddragon6809a, ddragon,  ddragon6809, ddragon,  ddragon_state,  init_ddragon6809, ROT0, "bootleg",                               "Double Dragon (bootleg with 3xM6809, set 2)", MACHINE_NOT_WORKING )
2239 
2240 GAME( 1988, ddragon2,     0,        ddragon2,    ddragon2, ddragon_state,  init_ddragon2,    ROT0, "Technos Japan", "Double Dragon II - The Revenge (World)",       MACHINE_SUPPORTS_SAVE )
2241 GAME( 1988, ddragon2u,    ddragon2, ddragon2,    ddragon2, ddragon_state,  init_ddragon2,    ROT0, "Technos Japan", "Double Dragon II - The Revenge (US)",          MACHINE_SUPPORTS_SAVE )
2242 GAME( 1988, ddragon2j,    ddragon2, ddragon2,    ddragon2, ddragon_state,  init_ddragon2,    ROT0, "Technos Japan", "Double Dragon II - The Revenge (Japan)",       MACHINE_SUPPORTS_SAVE )
2243 GAME( 1988, ddragon2b,    ddragon2, ddragon2,    ddragon2, ddragon_state,  init_ddragon2,    ROT0, "bootleg",       "Double Dragon II - The Revenge (US, bootleg)", MACHINE_SUPPORTS_SAVE )
2244 
2245 /* these were conversions of double dragon */
2246 GAME( 1991, tstrike,      0,        darktowr,    tstrike,  darktowr_state, init_darktowr,    ROT0, "East Coast Coin Company", "Thunder Strike (set 1)",        MACHINE_SUPPORTS_SAVE ) // same manufacturer as The Game Room?
2247 GAME( 1991, tstrikea,     tstrike,  darktowr,    tstrike,  darktowr_state, init_darktowr,    ROT0, "The Game Room",           "Thunder Strike (set 2, older)", MACHINE_SUPPORTS_SAVE )
2248 GAME( 1992, ddungeon,     0,        darktowr,    ddungeon, darktowr_state, init_darktowr,    ROT0, "The Game Room",           "Dangerous Dungeons (set 1)",    MACHINE_SUPPORTS_SAVE )
2249 GAME( 1992, ddungeone,    ddungeon, darktowr,    ddungeon, darktowr_state, init_darktowr,    ROT0, "East Coast Coin Company", "Dangerous Dungeons (set 2)",    MACHINE_SUPPORTS_SAVE )
2250 GAME( 1992, darktowr,     0,        darktowr,    darktowr, darktowr_state, init_darktowr,    ROT0, "The Game Room",           "Dark Tower",                    MACHINE_SUPPORTS_SAVE )
2251 
2252 /* these run on their own board, but are basically the same game. Toffy even has 'dangerous dungeons' text in it */
2253 GAME( 1993, toffy,        0,         toffy,      toffy,    toffy_state,    init_toffy,       ROT0, "Midas",                   "Toffy",                         MACHINE_SUPPORTS_SAVE )
2254 
2255 GAME( 1994, stoffy,       0,         toffy,      toffy,    toffy_state,    init_toffy,       ROT0, "Midas",                   "Super Toffy",                   MACHINE_SUPPORTS_SAVE )
2256 GAME( 1994, stoffyu,      stoffy,    toffy,      toffy,    toffy_state,    init_toffy,       ROT0, "Midas (Unico license)",   "Super Toffy (Unico license)",   MACHINE_SUPPORTS_SAVE )
2257