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