1 // license:BSD-3-Clause
2 // copyright-holders:Nicola Salmoria
3 /***************************************************************************
4
5 IREM M72 board
6
7 driver by Nicola Salmoria
8 protection information by Nao
9
10 board differences
11
12 M72 - 3 board stack, 2 known variants
13
14 M72-B-D (bottom) / M72-A-C (middle) / M72-ROM-C (top)
15
16 This is the original hardware used by R-type
17 Z80 program uploaded to RAM rather than having a ROM
18 each of the 2 tile layers uses it's own set of ROMs.
19 Flip bits are with the tile num, so 0x3fff max tiles
20 per layer
21
22 M72-B-D (bottom) / M72-A-C (middle) / M72-C-A (top)
23
24 This is used by all other M72 games, adds support
25 for an I8751 MCU and sample playback
26
27
28 M81 - 2 PCB Stack
29
30 M81-A-B (top board) (seen on Dragon Breed)
31 CPUs, program roms etc.
32
33 M81-B-B (bottom board) (seen on Dragon Breed)
34 supports
35 8 sprite ROMS
36 4 tile roms for FG layer (A0-A3)
37 (Jumper J3 also allows them to be used for BG)
38 4 tile roms for BG layer (B0-B3)
39
40 The Jumper at J3 seems to be an important difference
41 from M72, it allows both the FG and BG layers to
42 operate from a single set of ROMs.
43 W - use both sets of ROMs
44 S - use a single set of ROMs (A0-A3)
45
46
47 revised hardware, Z80 uses a ROM, no MCU, same video
48 system as M72 (some layer offsets - why?)
49
50
51 M82 - board made for Major Title, Z80 has a rom, no MCU
52 has an extra sprite layer, rowscroll, and a larger
53 tilemap. Tile data from both tile layers now comes
54 from a single set of ROMs, flip bits moved to 2nd
55 word meaning max of 0xffff tiles.
56
57 * Some games were converted to run on this board,
58 leaving the extra sprite HW unused.
59
60 M84 - 2 PCB stack
61 functionally same as M82 but without the extra sprite hw??
62
63 M84-A-A (bottom board) (most games)
64 supports
65 4 program roms
66 8 tile roms
67 1 snd prg, 1 voice rom
68 CPUs and some customs etc.
69
70 M84-D-B (bottom board) (found on lightning swords / kengo)
71 redesigned version of above but
72 for V35 CPU? (seems to lack the UPD71059C interrupt
73 controller which isn't needed when with the V35)
74
75 M84-C-A (top board) (listed as for Hammering Harry)
76 4 sprite roms (in a row)
77 6 larger chips with detail removed
78 etc.
79
80 M84-B-A (top board) (found on rytpe 2)
81 M84-B-B (top board) (lightning swords / kengo)
82 these both look very similar, if not the same
83
84 4 sprite roms (in a square)
85 various NANAO marked customs
86 KNA70H016(12) NANAO 0201
87 KNA65005 17 NANAO 9048KS
88 KNA71H010(15) NANAO 0X2002
89 KNA72H010(14) NANAO 0Z2001
90 KNA71H009(13) NANAO 122001
91 KNA70H015(11) NANAO 092002
92 KNA91H014 NANAO 0Z2001V
93 etc.
94
95
96
97 M85 - Pound for Pound uses this, possibly just M84 with
98 a modified sound section?
99 - most Jamma inputs not connected, trackball only
100
101
102 Year Board Protected?
103 R-Type 1987 M72 N
104 Battle Chopper / Mr. Heli 1987 M72 Y
105 Ninja Spirit 1988 M72 Y
106 Image Fight 1988 M72 Y
107 Legend of Hero Tonma 1989 M72 Y
108 X Multiply (World) 1989 M81-A-B + M81-B-B N
109 X Multiply (Japan) 1989 M72 Y
110 Dragon Breed 1989 M81-A-B + M81-B-B N
111 Dragon Breed (Japan?) 1989 M72 Y
112 R-Type II 1989 M84-A-A + M84-B-A N
113 Major Title 1990 M82-A-A + M82-B-A N
114 Hammerin' Harry (World ver) 1990 M81-A-B + M81-B-B N
115 Hammerin' H..(US)/ Daiku no Gensan 1990 M84-A-A + M84-C-A N
116 Daiku no Gensan 1990 M72 Y
117 Daiku no Gensan 1990 M82-A-A + M82-B-A N
118 Pound for Pound 1990 M85-A-B + M85-B N
119 Air Duel (World) 1990 M82-A-A + M82-B-A N
120 Air Duel (Japan) 1990 M72 Y
121 Cosmic Cop / 1991 M84-D-B + M84-B-B N
122 Gallop - Armed Police Unit 1991 M72 Y (sample playback only)
123 Ken-Go / Lightning Swords 1991 M84-D-B + M84-B-B Encrypted
124
125
126 Rtype / Rtype 2 are often misreported as being M82 games, this is mostly
127 due to the unofficial conversions that have become widespread, see:
128 http://www.paulswan.me/arcade/m82-m72.htm (Rtype on M82, extensive wiremods)
129 http://www.paulswan.me/arcade/m82-m84.htm (Rtype 2 on M82)
130 these are supported as 'rtypem82b' and 'rtype2m82b' although the former
131 still needs work because the wiremods change same of the behavior to be
132 more like an M72 PCB than an M82
133
134
135 TODO:
136 - m82_gfx_ctrl_w is unknown, it seems to be used to disable rowscroll,
137 and maybe other things
138
139 - Maybe there is a layer enable register, e.g. nspirit shows (for an instant)
140 incomplete screens with bad colors when you start a game.
141
142 - A lot of unknown I/O writes from the sound CPU in Pound for Pound.
143
144 - the sprite chip triggers IRQ1 when it has finished copying the sprite RAM to its
145 private buffer. This isn't implemented (all games have an empty IRQ1 handler).
146 The cpu board also has support for IRQ3 and IRQ4, coming from the external
147 connectors, but I don't think they are used by any game.
148
149 - excessive transmask difference between m72 games, this must be user selectable somehow;
150
151 IRQ controller
152 --------------
153 The IRQ controller is a UPD71059C
154
155 The initialization consists of one write to port 0x40 and multiple writes
156 (2 or 3) to port 0x42. The first value written to 0x42 is the IRQ vector base.
157 Cosmic Cop and Ken-Go have a V35 CPU with its own IRQ controller built in.
158
159 Game irqbase 0x40 0x42
160 ---- ------- ---- ----------
161 rtype 0x20 17 20 0F
162 bchopper " " "
163 nspirit " " "
164 loht " " "
165 rtype2 " " "
166 airduel " " "
167 gallop " " "
168 imgfight 0x20 17 20 0F 06
169 majtitle " " "
170 poundfor 0x20 17 20 0F 0A
171 xmultipl 0x08 13 08 0F FA
172 dbreed " " "
173 hharry " " "
174 cosmccop ---------------------
175 kengo ---------------------
176
177
178 2008-08
179 Dip locations verified for the following games:
180 - dbreed, hharry, loht (jpn), poundfor, rtype, rtype2 [manual]
181 - airduel, gallop, imgfight [dip listing]
182 The other locations have been added assuming that the layout is the same
183 on all m72 boards. However, it would be nice to have them confirmed for
184 other supported games as well.
185
186
187 ***************************************************************************/
188
189 #include "emu.h"
190 #include "includes/m72.h"
191 #include "includes/iremipt.h"
192
193 #include "cpu/nec/nec.h"
194 #include "cpu/nec/v25.h"
195 #include "cpu/z80/z80.h"
196 #include "machine/gen_latch.h"
197 #include "machine/irem_cpu.h"
198 #include "machine/rstbuf.h"
199 #include "sound/ym2151.h"
200 #include "speaker.h"
201
202
203 #define MASTER_CLOCK XTAL(32'000'000)
204 #define SOUND_CLOCK XTAL(3'579'545)
205
206
207
208 /***************************************************************************/
209
machine_start()210 void m72_state::machine_start()
211 {
212 m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(m72_state::scanline_interrupt),this));
213 }
214
MACHINE_START_MEMBER(m72_state,kengo)215 MACHINE_START_MEMBER(m72_state,kengo)
216 {
217 m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(m72_state::kengo_scanline_interrupt),this));
218 }
219
TIMER_CALLBACK_MEMBER(m72_state::synch_callback)220 TIMER_CALLBACK_MEMBER(m72_state::synch_callback)
221 {
222 //machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(8000000));
223 machine().scheduler().boost_interleave(attotime::from_hz(MASTER_CLOCK/4/12), attotime::from_seconds(25));
224 }
225
machine_reset()226 void m72_state::machine_reset()
227 {
228 m_mcu_sample_addr = 0;
229 //m_mcu_snd_cmd_latch = 0;
230
231 m_scanline_timer->adjust(m_screen->time_until_pos(0));
232 machine().scheduler().synchronize(timer_expired_delegate(FUNC(m72_state::synch_callback),this));
233
234 // Hold sound CPU in reset if main CPU has to upload the program into RAM
235 if (m_soundram.found())
236 m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
237 }
238
MACHINE_RESET_MEMBER(m72_state,kengo)239 MACHINE_RESET_MEMBER(m72_state,kengo)
240 {
241 m_scanline_timer->adjust(m_screen->time_until_pos(0));
242 }
243
TIMER_CALLBACK_MEMBER(m72_state::scanline_interrupt)244 TIMER_CALLBACK_MEMBER(m72_state::scanline_interrupt)
245 {
246 int scanline = param;
247
248 /* raster interrupt - visible area only? */
249 if (scanline < 256 && scanline == m_raster_irq_position - 128)
250 {
251 m_upd71059c->ir2_w(1);
252 }
253
254 /* VBLANK interrupt */
255 if (scanline == 256)
256 {
257 m_upd71059c->ir0_w(1);
258 m_upd71059c->ir2_w(0);
259 }
260 else
261 {
262 m_upd71059c->ir0_w(0);
263 }
264
265 /* adjust for next scanline */
266 if (++scanline >= m_screen->height())
267 scanline = 0;
268 m_scanline_timer->adjust(m_screen->time_until_pos(scanline), scanline);
269 }
270
TIMER_CALLBACK_MEMBER(m72_state::kengo_scanline_interrupt)271 TIMER_CALLBACK_MEMBER(m72_state::kengo_scanline_interrupt)
272 {
273 int scanline = param;
274
275 /* raster interrupt - visible area only? */
276 if (scanline < 256 && scanline == m_raster_irq_position - 128)
277 {
278 m_screen->update_partial(scanline);
279 m_maincpu->set_input_line(NEC_INPUT_LINE_INTP2, ASSERT_LINE);
280 }
281 else
282 m_maincpu->set_input_line(NEC_INPUT_LINE_INTP2, CLEAR_LINE);
283
284 /* VBLANK interrupt */
285 if (scanline == 256)
286 {
287 m_screen->update_partial(scanline);
288 m_maincpu->set_input_line(NEC_INPUT_LINE_INTP0, ASSERT_LINE);
289 }
290 else
291 m_maincpu->set_input_line(NEC_INPUT_LINE_INTP0, CLEAR_LINE);
292
293 /* adjust for next scanline */
294 if (++scanline >= m_screen->height())
295 scanline = 0;
296 m_scanline_timer->adjust(m_screen->time_until_pos(scanline), scanline);
297 }
298
299 /***************************************************************************
300
301 Protection emulation
302
303 The protection device does
304
305 * provide startup code
306 * provide checksums
307 * feed samples to the sound cpu
308
309 ***************************************************************************/
310
TIMER_CALLBACK_MEMBER(m72_state::delayed_ram16_w)311 TIMER_CALLBACK_MEMBER(m72_state::delayed_ram16_w)
312 {
313 const u16 val = param & 0xffff;
314 const u16 offset = (param >> 16) & 0x07ff;
315 const u16 mem_mask = (BIT(param, 28) ? 0xff00 : 0x0000) | (BIT(param, 27) ? 0x00ff : 0x0000);
316
317 logerror("MB8421/MB8431 left_w(0x%03x, 0x%04x, 0x%04x)\n", offset, val, mem_mask);
318 m_dpram->left_w(offset, val, mem_mask);
319 }
320
TIMER_CALLBACK_MEMBER(m72_state::delayed_ram8_w)321 TIMER_CALLBACK_MEMBER(m72_state::delayed_ram8_w)
322 {
323 const u8 val = param & 0xff;
324 const u16 offset = (param >> 9) & 0x07ff;
325
326 if (BIT(param, 8))
327 m_dpram->right_w(offset, val << 8, 0xff00);
328 else
329 m_dpram->right_w(offset, val, 0x00ff);
330 }
331
332
main_mcu_w(offs_t offset,u16 data,u16 mem_mask)333 void m72_state::main_mcu_w(offs_t offset, u16 data, u16 mem_mask)
334 {
335 machine().scheduler().synchronize(timer_expired_delegate(FUNC(m72_state::delayed_ram16_w), this), offset << 16 | data | (mem_mask & 0x0180) << 20);
336 }
337
mcu_data_w(offs_t offset,u8 data)338 void m72_state::mcu_data_w(offs_t offset, u8 data)
339 {
340 machine().scheduler().synchronize(timer_expired_delegate(FUNC(m72_state::delayed_ram8_w), this), offset << 8 | u32(data));
341 }
342
mcu_data_r(offs_t offset)343 u8 m72_state::mcu_data_r(offs_t offset)
344 {
345 return (m_dpram->right_r(offset >> 1) >> (BIT(offset, 0) ? 8 : 0)) & 0xff;
346 }
347
mcu_sample_r()348 u8 m72_state::mcu_sample_r()
349 {
350 const u8 sample = m_samples_region[m_mcu_sample_addr];
351 if (!machine().side_effects_disabled())
352 m_mcu_sample_addr++;
353 return sample;
354 }
355
mcu_low_w(u8 data)356 void m72_state::mcu_low_w(u8 data)
357 {
358 m_mcu_sample_addr = (m_mcu_sample_addr & 0xffe000) | (data<<5);
359 logerror("low: %02x %08x\n", data, m_mcu_sample_addr);
360 }
361
mcu_high_w(u8 data)362 void m72_state::mcu_high_w(u8 data)
363 {
364 m_mcu_sample_addr = (m_mcu_sample_addr & 0x1fff) | (data<<(8+5));
365 logerror("high: %02x %08x\n", data, m_mcu_sample_addr);
366 }
367
init_m72_8751()368 void m72_state::init_m72_8751()
369 {
370 save_item(NAME(m_mcu_sample_addr));
371
372 /* lohtb2 */
373 #if 0
374 /* running the mcu at twice the speed, the following
375 * timeouts have to be modified.
376 * At normal speed, the timing heavily depends on opcode
377 * prefetching on the V30.
378 */
379 {
380 u8 *rom=memregion("mcu")->base();
381
382 rom[0x12d+5] += 1; printf(" 5: %d\n", rom[0x12d+5]);
383 rom[0x12d+8] += 5; printf(" 8: %d\n", rom[0x12d+8]);
384 rom[0x12d+11] += 7; printf("11: %d\n", rom[0x12d+11]);
385 rom[0x12d+14] += 9; printf("14: %d\n", rom[0x12d+14]);
386 rom[0x12d+17] += 1; printf("17: %d\n", rom[0x12d+17]);
387 rom[0x12d+20] += 10; printf("20: %d\n", rom[0x12d+20]);
388 rom[0x12d+23] += 3; printf("23: %d\n", rom[0x12d+23]);
389 rom[0x12d+26] += 2; printf("26: %d\n", rom[0x12d+26]);
390 rom[0x12d+29] += 2; printf("29: %d\n", rom[0x12d+29]);
391 rom[0x12d+32] += 16; printf("32: %d\n", rom[0x12d+32]);
392 }
393 #endif
394 }
395
396
397 /***************************************************************************
398
399 Sample playback
400
401 In the later games, the sound CPU can program the start offset of the PCM
402 samples, but it seems the earlier games have them hardcoded somewhere (maybe
403 the protection MCU?).
404 So, here I provided some tables with the start offset precomputed.
405 They could be built automatically in most cases (00 marks the end of a
406 sample), but a couple of games (nspirit, loht) have holes in the numbering
407 so we would have to do them differently anyway.
408
409 Also, some games (dkgenm72, poundfor, airduel, gallop) have an empty NMI
410 handler, so the sample playback has to be handled entirely by external
411 hardware; we work around that by using (for all games, not just the ones
412 without a NMI handler) a NMI interrupt gen that mimics the behaviour of
413 the NMI handler in the other games.
414
415 ***************************************************************************/
416
417 #if 0
418 int m72_state::find_sample(int num)
419 {
420 int len = m_samples_region.length();
421 int addr = 0;
422
423 while (num--)
424 {
425 /* find end of sample */
426 while (addr < len && m_samples_region[addr]) addr++;
427
428 /* skip 0 filler between samples */
429 while (addr < len && !m_samples_region[addr]) addr++;
430 }
431
432 return addr;
433 }
434 #endif
435
INTERRUPT_GEN_MEMBER(m72_state::fake_nmi)436 INTERRUPT_GEN_MEMBER(m72_state::fake_nmi)
437 {
438 int sample = m_audio->sample_r();
439 if (sample)
440 m_audio->sample_w(sample);
441 }
442
443
bchopper_sample_trigger_w(offs_t offset,u16 data,u16 mem_mask)444 void m72_state::bchopper_sample_trigger_w(offs_t offset, u16 data, u16 mem_mask)
445 {
446 static const int a[6] = { 0x0000, 0x0010, 0x2510, 0x6510, 0x8510, 0x9310 };
447 if (ACCESSING_BITS_0_7 && (data & 0xff) < 6) m_audio->set_sample_start(a[data & 0xff]);
448 }
449
nspirit_sample_trigger_w(offs_t offset,u16 data,u16 mem_mask)450 void m72_state::nspirit_sample_trigger_w(offs_t offset, u16 data, u16 mem_mask)
451 {
452 static const int a[9] = { 0x0000, 0x0020, 0x2020, 0, 0x5720, 0, 0x7b60, 0x9b60, 0xc360 };
453 if (ACCESSING_BITS_0_7 && (data & 0xff) < 9) m_audio->set_sample_start(a[data & 0xff]);
454 }
455
loht_sample_trigger_w(offs_t offset,u16 data,u16 mem_mask)456 void m72_state::loht_sample_trigger_w(offs_t offset, u16 data, u16 mem_mask)
457 {
458 static const int a[7] = { 0x0000, 0x0020, 0, 0x2c40, 0x4320, 0x7120, 0xb200 };
459 if (ACCESSING_BITS_0_7 && (data & 0xff) < 7) m_audio->set_sample_start(a[data & 0xff]);
460 }
461
dbreedm72_sample_trigger_w(offs_t offset,u16 data,u16 mem_mask)462 void m72_state::dbreedm72_sample_trigger_w(offs_t offset, u16 data, u16 mem_mask)
463 {
464 static const int a[9] = { 0x00000, 0x00020, 0x02c40, 0x08160, 0x0c8c0, 0x0ffe0, 0x13000, 0x15820, 0x15f40 };
465 if (ACCESSING_BITS_0_7 && (data & 0xff) < 9) m_audio->set_sample_start(a[data & 0xff]);
466 }
467
airduelm72_sample_trigger_w(offs_t offset,u16 data,u16 mem_mask)468 void m72_state::airduelm72_sample_trigger_w(offs_t offset, u16 data, u16 mem_mask)
469 {
470 static const int a[16] = {
471 0x00000, 0x00020, 0x03ec0, 0x05640, 0x06dc0, 0x083a0, 0x0c000, 0x0eb60,
472 0x112e0, 0x13dc0, 0x16520, 0x16d60, 0x18ae0, 0x1a5a0, 0x1bf00, 0x1c340 };
473 if (ACCESSING_BITS_0_7 && (data & 0xff) < 16) m_audio->set_sample_start(a[data & 0xff]);
474 }
475
dkgenm72_sample_trigger_w(offs_t offset,u16 data,u16 mem_mask)476 void m72_state::dkgenm72_sample_trigger_w(offs_t offset, u16 data, u16 mem_mask)
477 {
478 static const int a[28] = {
479 0x00000, 0x00020, 0x01800, 0x02da0, 0x03be0, 0x05ae0, 0x06100, 0x06de0,
480 0x07260, 0x07a60, 0x08720, 0x0a5c0, 0x0c3c0, 0x0c7a0, 0x0e140, 0x0fb00,
481 0x10fa0, 0x10fc0, 0x10fe0, 0x11f40, 0x12b20, 0x130a0, 0x13c60, 0x14740,
482 0x153c0, 0x197e0, 0x1af40, 0x1c080 };
483
484 if (ACCESSING_BITS_0_7 && (data & 0xff) < 28) m_audio->set_sample_start(a[data & 0xff]);
485 }
486
gallop_sample_trigger_w(offs_t offset,u16 data,u16 mem_mask)487 void m72_state::gallop_sample_trigger_w(offs_t offset, u16 data, u16 mem_mask)
488 {
489 static const int a[31] = {
490 0x00000, 0x00020, 0x00040, 0x01360, 0x02580, 0x04f20, 0x06240, 0x076e0,
491 0x08660, 0x092a0, 0x09ba0, 0x0a560, 0x0cee0, 0x0de20, 0x0e620, 0x0f1c0,
492 0x10200, 0x10220, 0x10240, 0x11380, 0x12760, 0x12780, 0x127a0, 0x13c40,
493 0x140a0, 0x16760, 0x17e40, 0x18ee0, 0x19f60, 0x1bbc0, 0x1cee0 };
494
495 if (ACCESSING_BITS_0_7 && (data & 0xff) < 31) m_audio->set_sample_start(a[data & 0xff]);
496 }
497
498
499
500 /***************************************************************************
501
502 Protection simulation
503
504 Most of the games running on this board have an 8751 protection mcu.
505 It is not known how it works in detail, however it's pretty clear that it
506 shares RAM at b0000-b0fff.
507 On startup, the game writes a pattern to the whole RAM, then reads it back
508 expecting it to be INVERTED. If it isn't, it reports a RAM error.
509 If the RAM passes the test, the program increments every byte up to b0ffb,
510 then calls a subroutine at b0000, which has to be provided by the mcu.
511 It seems that this routine is not supposed to RET, but instead it should
512 jump directly to the game entry point. The routine should also write some
513 bytes here and there in RAM (different in every game); those bytes are
514 checked at various points during the game, causing a crash if they aren't
515 right.
516 Note that the program keeps incrementing b0ffe while the game is running,
517 maybe this is done to keep the 8751 alive. We don't bother with that.
518
519 Finally, to do the ROM test the program asks the mcu to provide the correct
520 values. This is done only in service, so doesn't seem to be much of a
521 protection. Here we have provided the correct crcs for the available dumps,
522 of course there is no guarantee that they are actually good.
523
524 All the protection routines below are entirely made up. They get the games
525 running, but they have not been derived from the real 8751 code.
526
527 ***************************************************************************/
528
529 #define CODE_LEN 96
530 #define CRC_LEN 18
531
532 /* Battle Chopper (World, M72 hardware) */
533 static const u8 bchopper_code[CODE_LEN] =
534 {
535 0x68,0x00,0xa0, // push 0a000h
536 0x1f, // pop ds
537 0xc6,0x06,0x38,0x38,0x53, // mov [3838h], byte 053h
538 0xc6,0x06,0x3a,0x38,0x41, // mov [383ah], byte 041h
539 0xc6,0x06,0x3c,0x38,0x4d, // mov [383ch], byte 04dh
540 0xc6,0x06,0x3e,0x38,0x4f, // mov [383eh], byte 04fh
541 0xc6,0x06,0x40,0x38,0x54, // mov [3840h], byte 054h
542 0xc6,0x06,0x42,0x38,0x4f, // mov [3842h], byte 04fh
543 0x68,0x00,0xb0, // push 0b000h
544 0x1f, // pop ds
545 0xc6,0x06,0x00,0x09,0x49^0xff, // mov [0900h], byte 049h
546 0xc6,0x06,0x00,0x0a,0x49^0xff, // mov [0a00h], byte 049h
547 0xc6,0x06,0x00,0x0b,0x49^0xff, // mov [0b00h], byte 049h
548 0xc6,0x06,0x00,0x00,0xcb^0xff, // mov [0000h], byte 0cbh ; retf : bypass protection check during the game
549 0x68,0x00,0xd0, // push 0d000h
550 0x1f, // pop ds
551 0xea,0x68,0x01,0x40,0x00 // jmp 0040:$0168
552 };
553 static const u8 bchopper_crc[CRC_LEN] = { 0x1a,0x12,0x5c,0x08, 0x84,0xb6,0x73,0xd1,
554 0x54,0x91,0x94,0xeb, 0x00,0x00 };
555
556 /* Ninja Spirit (World, M72 hardware) */
557 static const u8 nspirit_code[CODE_LEN] =
558 {
559 0x68,0x00,0xa0, // push 0a000h
560 0x1f, // pop ds
561 0xc6,0x06,0x38,0x38,0x4e, // mov [3838h], byte 04eh
562 0xc6,0x06,0x3a,0x38,0x49, // mov [383ah], byte 049h
563 0xc6,0x06,0x3c,0x38,0x4e, // mov [383ch], byte 04eh
564 0xc6,0x06,0x3e,0x38,0x44, // mov [383eh], byte 044h
565 0xc6,0x06,0x40,0x38,0x4f, // mov [3840h], byte 04fh
566 0xc6,0x06,0x42,0x38,0x55, // mov [3842h], byte 055h
567 0x68,0x00,0xb0, // push 0b000h
568 0x1f, // pop ds
569 0xc6,0x06,0x00,0x09,0x49^0xff, // mov [0900h], byte 049h
570 0xc6,0x06,0x00,0x0a,0x49^0xff, // mov [0a00h], byte 049h
571 0xc6,0x06,0x00,0x0b,0x49^0xff, // mov [0b00h], byte 049h
572 0x68,0x00,0xd0, // push 0d000h
573 0x1f, // pop ds
574 0xea,0x00,0x00,0x40,0x00 // jmp 0040:$0000
575 };
576 static const u8 nspirit_crc[CRC_LEN] = { 0xfe,0x94,0x6e,0x4e, 0xc8,0x33,0xa7,0x2d,
577 0xf2,0xa3,0xf9,0xe1, 0xa9,0x6c,0x02,0x95, 0x00,0x00 };
578
579 /* Dragon Breed (World, M72 hardware) */
580 static const u8 dbreedm72_code[CODE_LEN] =
581 {
582 0xea,0x6c,0x00,0x00,0x00 // jmp 0000:$006c
583 };
584 static const u8 dbreedm72_crc[CRC_LEN] = { 0xa4,0x96,0x5f,0xc0, 0xab,0x49,0x9f,0x19,
585 0x84,0xe6,0xd6,0xca, 0x00,0x00 };
586
587 /* Air Duel (World, M72 hardware) */
588 static const u8 airduelm72_code[CODE_LEN] =
589 {
590 0xea,0x4d,0x0b,0x00,0x00 // jmp 0000:$0b4d
591 };
592 static const u8 airduelm72_crc[CRC_LEN] = { 0x54,0x81,0xe6,0x8a, 0xc9,0x12,0xcc,0xea,
593 0x00,0x00 };
594
595 /*
596 // Actual MCU is dumped, information for Air Duel (Japan, M72 hardware) for reference:
597 static const u8 airduelm72_code[CODE_LEN] =
598 {
599 0x68,0x00,0xd0, // push 0d000h
600 0x1f, // pop ds
601 // the game checks for
602 // "This game can only be played in Japan..." message in the video text buffer
603 // the message is nowhere to be found in the ROMs, so has to be displayed by the mcu
604 0xc6,0x06,0xc0,0x1c,0x57, // mov [1cc0h], byte 057h
605 0xea,0x69,0x0b,0x00,0x00 // jmp 0000:$0b69
606 };
607 static const u8 airduelm72j_crc[CRC_LEN] = { 0x72,0x9c,0xca,0x85, 0xc9,0x12,0xcc,0xea,
608 0x00,0x00 };
609 */
610
611 /* Daiku no Gensan */
612 static const u8 dkgenm72_code[CODE_LEN] =
613 {
614 0xea,0x3d,0x00,0x00,0x10 // jmp 1000:$003d
615 };
616 static const u8 dkgenm72_crc[CRC_LEN] = { 0xc8,0xb4,0xdc,0xf8, 0xd3,0xba,0x48,0xed,
617 0x79,0x08,0x1c,0xb3, 0x00,0x00 };
618
619
620
copy_le(u16 * dest,const u8 * src,u8 bytes)621 void m72_state::copy_le(u16 *dest, const u8 *src, u8 bytes)
622 {
623 int i;
624
625 for (i = 0; i < bytes; i += 2)
626 dest[i/2] = src[i+0] | (src[i+1] << 8);
627 }
628
protection_r(offs_t offset,u16 mem_mask)629 u16 m72_state::protection_r(offs_t offset, u16 mem_mask)
630 {
631 if (ACCESSING_BITS_8_15)
632 copy_le(m_protection_ram.get(),m_protection_code,CODE_LEN);
633 return m_protection_ram[0xffa/2+offset];
634 }
635
protection_w(offs_t offset,u16 data,u16 mem_mask)636 void m72_state::protection_w(offs_t offset, u16 data, u16 mem_mask)
637 {
638 data ^= 0xffff;
639 COMBINE_DATA(&m_protection_ram[offset]);
640 data ^= 0xffff;
641
642 if (offset == 0x0fff/2 && ACCESSING_BITS_8_15 && (data >> 8) == 0)
643 copy_le(&m_protection_ram[0x0fe0],m_protection_crc,CRC_LEN);
644 }
645
install_protection_handler(const u8 * code,const u8 * crc)646 void m72_state::install_protection_handler(const u8 *code,const u8 *crc)
647 {
648 m_protection_ram = std::make_unique<u16[]>(0x1000/2);
649 m_protection_code = code;
650 m_protection_crc = crc;
651 m_maincpu->space(AS_PROGRAM).install_read_bank(0xb0000, 0xb0fff, "bank1");
652 m_maincpu->space(AS_PROGRAM).install_read_handler(0xb0ffa, 0xb0ffb, read16s_delegate(*this, FUNC(m72_state::protection_r)));
653 m_maincpu->space(AS_PROGRAM).install_write_handler(0xb0000, 0xb0fff, write16s_delegate(*this, FUNC(m72_state::protection_w)));
654 membank("bank1")->configure_entry(0, m_protection_ram.get());
655
656 save_pointer(NAME(m_protection_ram), 0x1000/2);
657 }
658
init_bchopper()659 void m72_state::init_bchopper()
660 {
661 install_protection_handler(bchopper_code,bchopper_crc);
662 m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16s_delegate(*this, FUNC(m72_state::bchopper_sample_trigger_w)));
663 }
664
init_nspirit()665 void m72_state::init_nspirit()
666 {
667 install_protection_handler(nspirit_code,nspirit_crc);
668 m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16s_delegate(*this, FUNC(m72_state::nspirit_sample_trigger_w)));
669 }
670
init_dbreedm72()671 void m72_state::init_dbreedm72()
672 {
673 install_protection_handler(dbreedm72_code,dbreedm72_crc);
674 m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16s_delegate(*this, FUNC(m72_state::dbreedm72_sample_trigger_w)));
675 }
676
init_airduelm72()677 void m72_state::init_airduelm72()
678 {
679 install_protection_handler(airduelm72_code,airduelm72_crc);
680 m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16s_delegate(*this, FUNC(m72_state::airduelm72_sample_trigger_w)));
681 }
682
init_dkgenm72()683 void m72_state::init_dkgenm72()
684 {
685 install_protection_handler(dkgenm72_code,dkgenm72_crc);
686 m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16s_delegate(*this, FUNC(m72_state::dkgenm72_sample_trigger_w)));
687 }
688
init_gallop()689 void m72_state::init_gallop()
690 {
691 m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16s_delegate(*this, FUNC(m72_state::gallop_sample_trigger_w)));
692 }
693
694
695 template<unsigned N>
palette_r(offs_t offset)696 u16 m72_state::palette_r(offs_t offset)
697 {
698 /* A9 isn't connected, so 0x200-0x3ff mirrors 0x000-0x1ff etc. */
699 offset &= ~0x100;
700
701 return m_paletteram[N][offset] | 0xffe0; /* only D0-D4 are connected */
702 }
703
changecolor(offs_t color,u8 r,u8 g,u8 b)704 inline void m72_state::changecolor(offs_t color, u8 r, u8 g, u8 b)
705 {
706 m_palette->set_pen_color(color,pal5bit(r),pal5bit(g),pal5bit(b));
707 }
708
709 template<unsigned N>
palette_w(offs_t offset,u16 data,u16 mem_mask)710 void m72_state::palette_w(offs_t offset, u16 data, u16 mem_mask)
711 {
712 /* A9 isn't connected, so 0x200-0x3ff mirrors 0x000-0x1ff etc. */
713 offset &= ~0x100;
714
715 COMBINE_DATA(&m_paletteram[N][offset]);
716 offset &= 0x0ff;
717 changecolor(offset + (N << 8),
718 m_paletteram[N][offset + 0x000],
719 m_paletteram[N][offset + 0x200],
720 m_paletteram[N][offset + 0x400]);
721 }
722
723 template<unsigned N>
scrollx_w(offs_t offset,u16 data,u16 mem_mask)724 void m72_state::scrollx_w(offs_t offset, u16 data, u16 mem_mask)
725 {
726 m_screen->update_partial(m_screen->vpos());
727 COMBINE_DATA(&m_scrollx[N]);
728 }
729
730 template<unsigned N>
scrolly_w(offs_t offset,u16 data,u16 mem_mask)731 void m72_state::scrolly_w(offs_t offset, u16 data, u16 mem_mask)
732 {
733 m_screen->update_partial(m_screen->vpos());
734 COMBINE_DATA(&m_scrolly[N]);
735 }
736
737
soundram_r(offs_t offset)738 u8 m72_state::soundram_r(offs_t offset)
739 {
740 return m_soundram[offset];
741 }
742
soundram_w(offs_t offset,u8 data)743 void m72_state::soundram_w(offs_t offset, u8 data)
744 {
745 m_soundram[offset] = data;
746 }
747
m72_cpu1_common_map(address_map & map)748 void m72_state::m72_cpu1_common_map(address_map &map)
749 {
750 map(0xc0000, 0xc03ff).ram().share("spriteram");
751 map(0xc8000, 0xc8bff).rw(FUNC(m72_state::palette_r<0>), FUNC(m72_state::palette_w<0>)).share("paletteram1");
752 map(0xcc000, 0xccbff).rw(FUNC(m72_state::palette_r<1>), FUNC(m72_state::palette_w<1>)).share("paletteram2");
753 map(0xd0000, 0xd3fff).ram().w(FUNC(m72_state::videoram1_w)).share("videoram1");
754 map(0xd8000, 0xdbfff).ram().w(FUNC(m72_state::videoram2_w)).share("videoram2");
755 map(0xe0000, 0xeffff).rw(FUNC(m72_state::soundram_r), FUNC(m72_state::soundram_w));
756 map(0xffff0, 0xfffff).rom();
757 }
758
m72_map(address_map & map)759 void m72_state::m72_map(address_map &map)
760 {
761 m72_cpu1_common_map(map);
762 map(0x00000, 0x7ffff).rom();
763 map(0xa0000, 0xa3fff).ram(); /* work RAM */
764 }
765
rtype_map(address_map & map)766 void m72_state::rtype_map(address_map &map)
767 {
768 m72_cpu1_common_map(map);
769 map(0x00000, 0x3ffff).rom();
770 map(0x40000, 0x43fff).ram(); /* work RAM */
771 }
772
m72_protected_map(address_map & map)773 void m72_state::m72_protected_map(address_map &map)
774 {
775 m72_map(map);
776 map(0xb0000, 0xb0fff).r(m_dpram, FUNC(mb8421_mb8431_16_device::left_r)).w(FUNC(m72_state::main_mcu_w));
777 }
778
xmultiplm72_map(address_map & map)779 void m72_state::xmultiplm72_map(address_map &map)
780 {
781 m72_cpu1_common_map(map);
782 map(0x00000, 0x7ffff).rom();
783 map(0x80000, 0x83fff).ram(); /* work RAM */
784 map(0xb0000, 0xb0fff).r(m_dpram, FUNC(mb8421_mb8431_16_device::left_r)).w(FUNC(m72_state::main_mcu_w));
785 }
786
dbreedwm72_map(address_map & map)787 void m72_state::dbreedwm72_map(address_map &map)
788 {
789 m72_cpu1_common_map(map);
790 map(0x00000, 0x7ffff).rom();
791 map(0x90000, 0x93fff).ram(); /* work RAM */
792 }
793
dbreedm72_map(address_map & map)794 void m72_state::dbreedm72_map(address_map &map)
795 {
796 m72_cpu1_common_map(map);
797 map(0x00000, 0x7ffff).rom();
798 map(0x90000, 0x93fff).ram(); /* work RAM */
799 map(0xb0000, 0xb0fff).r(m_dpram, FUNC(mb8421_mb8431_16_device::left_r)).w(FUNC(m72_state::main_mcu_w));
800 }
801
m81_cpu1_common_map(address_map & map)802 void m72_state::m81_cpu1_common_map(address_map &map)
803 {
804 map(0x00000, 0x7ffff).rom();
805 map(0xb0ffe, 0xb0fff).writeonly(); /* leftover from protection?? */
806 map(0xc0000, 0xc03ff).ram().share("spriteram");
807 map(0xc8000, 0xc8bff).rw(FUNC(m72_state::palette_r<0>), FUNC(m72_state::palette_w<0>)).share("paletteram1");
808 map(0xcc000, 0xccbff).rw(FUNC(m72_state::palette_r<1>), FUNC(m72_state::palette_w<1>)).share("paletteram2");
809 map(0xd0000, 0xd3fff).ram().w(FUNC(m72_state::videoram1_w)).share("videoram1");
810 map(0xd8000, 0xdbfff).ram().w(FUNC(m72_state::videoram2_w)).share("videoram2");
811 map(0xffff0, 0xfffff).rom();
812 }
813
xmultipl_map(address_map & map)814 void m72_state::xmultipl_map(address_map &map)
815 {
816 m81_cpu1_common_map(map);
817 map(0x9c000, 0x9ffff).ram(); /* work RAM */
818 }
819
dbreed_map(address_map & map)820 void m72_state::dbreed_map(address_map &map)
821 {
822 m81_cpu1_common_map(map);
823 map(0x88000, 0x8bfff).ram(); /* work RAM */
824 }
825
hharry_map(address_map & map)826 void m72_state::hharry_map(address_map &map)
827 {
828 m81_cpu1_common_map(map);
829 map(0xa0000, 0xa3fff).ram(); /* work RAM */
830 }
831
m84_cpu1_common_map(address_map & map)832 void m72_state::m84_cpu1_common_map(address_map &map)
833 {
834 map(0x00000, 0x7ffff).rom();
835 map(0xb0000, 0xb0001).w(FUNC(m72_state::irq_line_w));
836 map(0xb4000, 0xb4001).nopw(); /* ??? */
837 map(0xbc000, 0xbc000).w(FUNC(m72_state::dmaon_w));
838 map(0xb0ffe, 0xb0fff).writeonly(); /* leftover from protection?? */
839 map(0xc0000, 0xc03ff).ram().share("spriteram");
840 map(0xe0000, 0xe3fff).ram(); /* work RAM */
841 map(0xffff0, 0xfffff).rom();
842 }
843
rtype2_map(address_map & map)844 void m72_state::rtype2_map(address_map &map)
845 {
846 m84_cpu1_common_map(map);
847 map(0xd0000, 0xd3fff).ram().w(FUNC(m72_state::videoram1_w)).share("videoram1");
848 map(0xd4000, 0xd7fff).ram().w(FUNC(m72_state::videoram2_w)).share("videoram2");
849 map(0xc8000, 0xc8bff).rw(FUNC(m72_state::palette_r<0>), FUNC(m72_state::palette_w<0>)).share("paletteram1");
850 map(0xd8000, 0xd8bff).rw(FUNC(m72_state::palette_r<1>), FUNC(m72_state::palette_w<1>)).share("paletteram2");
851 }
852
hharryu_map(address_map & map)853 void m72_state::hharryu_map(address_map &map)
854 {
855 m84_cpu1_common_map(map);
856 map(0xd0000, 0xd3fff).ram().w(FUNC(m72_state::videoram1_w)).share("videoram1");
857 map(0xd4000, 0xd7fff).ram().w(FUNC(m72_state::videoram2_w)).share("videoram2");
858 map(0xa0000, 0xa0bff).rw(FUNC(m72_state::palette_r<0>), FUNC(m72_state::palette_w<0>)).share("paletteram1");
859 map(0xa8000, 0xa8bff).rw(FUNC(m72_state::palette_r<1>), FUNC(m72_state::palette_w<1>)).share("paletteram2");
860 }
861
kengo_map(address_map & map)862 void m72_state::kengo_map(address_map &map)
863 {
864 m84_cpu1_common_map(map);
865 map(0x80000, 0x83fff).ram().w(FUNC(m72_state::videoram1_w)).share("videoram1");
866 map(0x84000, 0x87fff).ram().w(FUNC(m72_state::videoram2_w)).share("videoram2");
867 map(0xa0000, 0xa0bff).rw(FUNC(m72_state::palette_r<0>), FUNC(m72_state::palette_w<0>)).share("paletteram1");
868 map(0xa8000, 0xa8bff).rw(FUNC(m72_state::palette_r<1>), FUNC(m72_state::palette_w<1>)).share("paletteram2");
869 }
870
871
m82_map(address_map & map)872 void m72_state::m82_map(address_map &map)
873 {
874 map(0x00000, 0x7ffff).rom();
875 map(0xa0000, 0xa03ff).ram().share("majtitle_rowscr");
876 map(0xa4000, 0xa4bff).rw(FUNC(m72_state::palette_r<1>), FUNC(m72_state::palette_w<1>)).share("paletteram2");
877 map(0xac000, 0xaffff).ram().w(FUNC(m72_state::videoram1_w)).share("videoram1");
878 map(0xb0000, 0xbffff).ram().w(FUNC(m72_state::videoram2_w)).share("videoram2"); /* larger than the other games */
879 map(0xc0000, 0xc03ff).ram().share("spriteram");
880 map(0xc8000, 0xc83ff).ram().share("spriteram2");
881 map(0xcc000, 0xccbff).rw(FUNC(m72_state::palette_r<0>), FUNC(m72_state::palette_w<0>)).share("paletteram1");
882 map(0xd0000, 0xd3fff).ram(); /* work RAM */
883 map(0xe0000, 0xe0001).w(FUNC(m72_state::irq_line_w));
884 map(0xe4000, 0xe4001).writeonly(); /* playfield enable? 1 during screen transitions, 0 otherwise */
885 map(0xec000, 0xec000).w(FUNC(m72_state::dmaon_w));
886 map(0xffff0, 0xfffff).rom();
887 }
888
lohtb_map(address_map & map)889 void m72_state::lohtb_map(address_map &map) // all to be checked
890 {
891 map(0x00000, 0x7ffff).rom();
892 map(0x80000, 0x803ff).ram().share("spriteram");
893 map(0xa0000, 0xa3fff).ram(); /* work RAM */
894 map(0xaa800, 0xaafff).ram();
895 map(0xc8000, 0xc8bff).rw(FUNC(m72_state::palette_r<0>), FUNC(m72_state::palette_w<0>)).share("paletteram1");
896 map(0xcc000, 0xccbff).rw(FUNC(m72_state::palette_r<1>), FUNC(m72_state::palette_w<1>)).share("paletteram2");
897 map(0xd0000, 0xd3fff).ram().w(FUNC(m72_state::videoram1_w)).share("videoram1");
898 map(0xd8000, 0xdbfff).ram().w(FUNC(m72_state::videoram2_w)).share("videoram2");
899 map(0xffff0, 0xfffff).rom();
900 }
901
m72_portmap(address_map & map)902 void m72_state::m72_portmap(address_map &map)
903 {
904 map(0x00, 0x01).portr("IN0");
905 map(0x02, 0x03).portr("IN1");
906 map(0x04, 0x05).portr("DSW");
907 map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
908 map(0x02, 0x02).w(FUNC(m72_state::port02_w)); /* coin counters, reset sound cpu, other stuff? */
909 map(0x04, 0x04).w(FUNC(m72_state::dmaon_w));
910 map(0x06, 0x07).w(FUNC(m72_state::irq_line_w));
911 map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
912 map(0x80, 0x81).w(FUNC(m72_state::scrolly_w<0>));
913 map(0x82, 0x83).w(FUNC(m72_state::scrollx_w<0>));
914 map(0x84, 0x85).w(FUNC(m72_state::scrolly_w<1>));
915 map(0x86, 0x87).w(FUNC(m72_state::scrollx_w<1>));
916 /* { 0xc0, 0xc0 trigger sample, filled by init_ function */
917 }
918
m72_protected_portmap(address_map & map)919 void m72_state::m72_protected_portmap(address_map &map)
920 {
921 m72_portmap(map);
922 map(0xc0, 0xc0).w("soundlatch2", FUNC(generic_latch_8_device::write));
923 }
924
m72_airduel_portmap(address_map & map)925 void m72_state::m72_airduel_portmap(address_map &map)
926 {
927 m72_portmap(map);
928 map(0xc0, 0xc0).w("mculatch", FUNC(generic_latch_8_device::write));
929 }
930
m84_portmap(address_map & map)931 void m72_state::m84_portmap(address_map &map)
932 {
933 map(0x00, 0x01).portr("IN0");
934 map(0x02, 0x03).portr("IN1");
935 map(0x04, 0x05).portr("DSW");
936 map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
937 map(0x02, 0x02).w(FUNC(m72_state::rtype2_port02_w));
938 map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
939 map(0x80, 0x81).w(FUNC(m72_state::scrolly_w<0>));
940 map(0x82, 0x83).w(FUNC(m72_state::scrollx_w<0>));
941 map(0x84, 0x85).w(FUNC(m72_state::scrolly_w<1>));
942 map(0x86, 0x87).w(FUNC(m72_state::scrollx_w<1>));
943 }
944
m84_v33_portmap(address_map & map)945 void m72_state::m84_v33_portmap(address_map &map)
946 {
947 map(0x00, 0x01).portr("IN0");
948 map(0x02, 0x03).portr("IN1");
949 map(0x04, 0x05).portr("DSW");
950 map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
951 map(0x02, 0x02).w(FUNC(m72_state::rtype2_port02_w));
952 map(0x80, 0x81).w(FUNC(m72_state::scrolly_w<0>));
953 map(0x82, 0x83).w(FUNC(m72_state::scrollx_w<0>));
954 map(0x84, 0x85).w(FUNC(m72_state::scrolly_w<1>));
955 map(0x86, 0x87).w(FUNC(m72_state::scrollx_w<1>));
956 // map(0x8c, 0x8f).nopw(); /* ??? */
957 }
958
959
poundfor_portmap(address_map & map)960 void m72_state::poundfor_portmap(address_map &map)
961 {
962 map(0x02, 0x03).portr("IN1");
963 map(0x04, 0x05).portr("DSW");
964 map(0x08, 0x0f).r("upd4701l", FUNC(upd4701_device::read_xy)).umask16(0x00ff);
965 map(0x08, 0x0f).r("upd4701h", FUNC(upd4701_device::read_xy)).umask16(0xff00);
966 map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
967 map(0x02, 0x02).w(FUNC(m72_state::poundfor_port02_w));
968 map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
969 map(0x80, 0x81).w(FUNC(m72_state::scrolly_w<0>));
970 map(0x82, 0x83).w(FUNC(m72_state::scrollx_w<0>));
971 map(0x84, 0x85).w(FUNC(m72_state::scrolly_w<1>));
972 map(0x86, 0x87).w(FUNC(m72_state::scrollx_w<1>));
973 }
974
m82_portmap(address_map & map)975 void m72_state::m82_portmap(address_map &map)
976 {
977 map(0x00, 0x01).portr("IN0");
978 map(0x02, 0x03).portr("IN1");
979 map(0x04, 0x05).portr("DSW");
980 map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
981 map(0x02, 0x02).w(FUNC(m72_state::rtype2_port02_w));
982 map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
983 map(0x80, 0x81).w(FUNC(m72_state::scrolly_w<0>));
984 map(0x82, 0x83).w(FUNC(m72_state::scrollx_w<0>));
985 map(0x84, 0x85).w(FUNC(m72_state::scrolly_w<1>));
986 map(0x86, 0x87).w(FUNC(m72_state::scrollx_w<1>));
987
988 // these ports control the tilemap sizes, rowscroll etc. that m82 has, exact bit usage not known (maybe one for each layer?)
989 map(0x8c, 0x8d).w(FUNC(m72_state::m82_tm_ctrl_w));
990 map(0x8e, 0x8f).w(FUNC(m72_state::m82_gfx_ctrl_w));
991 }
992
m81_portmap(address_map & map)993 void m72_state::m81_portmap(address_map &map)
994 {
995 map(0x00, 0x01).portr("IN0");
996 map(0x02, 0x03).portr("IN1");
997 map(0x04, 0x05).portr("DSW");
998 map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
999 map(0x02, 0x02).w(FUNC(m72_state::rtype2_port02_w)); /* coin counters, reset sound cpu, other stuff? */
1000 map(0x04, 0x04).w(FUNC(m72_state::dmaon_w));
1001 map(0x06, 0x07).w(FUNC(m72_state::irq_line_w));
1002 map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
1003 map(0x80, 0x81).w(FUNC(m72_state::scrolly_w<0>));
1004 map(0x82, 0x83).w(FUNC(m72_state::scrollx_w<0>));
1005 map(0x84, 0x85).w(FUNC(m72_state::scrolly_w<1>));
1006 map(0x86, 0x87).w(FUNC(m72_state::scrollx_w<1>));
1007 }
1008
lohtb_portmap(address_map & map)1009 void m72_state::lohtb_portmap(address_map &map)
1010 {
1011 map(0x20, 0x21).portr("IN0");
1012 map(0x22, 0x23).portr("IN1");
1013 map(0x24, 0x25).portr("DSW");
1014 //map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
1015 //map(0x02, 0x02).w(FUNC(m72_state::port02_w)); /* coin counters, reset sound cpu, other stuff? */
1016 //map(0x04, 0x04).w(FUNC(m72_state::dmaon_w));
1017 //map(0x06, 0x07).w(FUNC(m72_state::irq_line_w));
1018 //map(0x80, 0x81).w(FUNC(m72_state::scrolly_w<0>));
1019 //map(0x82, 0x83).w(FUNC(m72_state::scrollx_w<0>));
1020 //map(0x84, 0x85).w(FUNC(m72_state::scrolly_w<1>));
1021 //map(0x86, 0x87).w(FUNC(m72_state::scrollx_w<1>));
1022 }
1023
sound_ram_map(address_map & map)1024 void m72_state::sound_ram_map(address_map &map)
1025 {
1026 map(0x0000, 0xffff).ram().share("soundram");
1027 }
1028
sound_rom_map(address_map & map)1029 void m72_state::sound_rom_map(address_map &map)
1030 {
1031 map(0x0000, 0xefff).rom();
1032 map(0xf000, 0xffff).ram();
1033 }
1034
rtype_sound_portmap(address_map & map)1035 void m72_state::rtype_sound_portmap(address_map &map)
1036 {
1037 map.global_mask(0xff);
1038 map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
1039 map(0x02, 0x02).r("soundlatch", FUNC(generic_latch_8_device::read));
1040 map(0x06, 0x06).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w));
1041 }
1042
sound_portmap(address_map & map)1043 void m72_state::sound_portmap(address_map &map)
1044 {
1045 rtype_sound_portmap(map);
1046 map.global_mask(0xff);
1047 map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w));
1048 map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r));
1049 }
1050
sound_protected_portmap(address_map & map)1051 void m72_state::sound_protected_portmap(address_map &map)
1052 {
1053 rtype_sound_portmap(map);
1054 map.global_mask(0xff);
1055 map(0x82, 0x82).w("mculatch", FUNC(generic_latch_8_device::write));
1056 map(0x84, 0x84).r("soundlatch2", FUNC(generic_latch_8_device::read));
1057 }
1058
rtype2_sound_portmap(address_map & map)1059 void m72_state::rtype2_sound_portmap(address_map &map)
1060 {
1061 map.global_mask(0xff);
1062 map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
1063 map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read));
1064 map(0x80, 0x81).w(m_audio, FUNC(m72_audio_device::rtype2_sample_addr_w));
1065 map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w));
1066 map(0x83, 0x83).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w));
1067 map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r));
1068 // map(0x87, 0x87).nopw(); /* ??? */
1069 }
1070
poundfor_sound_portmap(address_map & map)1071 void m72_state::poundfor_sound_portmap(address_map &map)
1072 {
1073 map.global_mask(0xff);
1074 map(0x10, 0x13).w(m_audio, FUNC(m72_audio_device::poundfor_sample_addr_w));
1075 map(0x40, 0x41).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
1076 map(0x42, 0x42).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
1077 }
1078
i80c31_mem_map(address_map & map)1079 void m72_state::i80c31_mem_map(address_map &map)
1080 {
1081 map(0x0000, 0x1fff).rom().region("mcu", 0);
1082 }
1083
mcu_io_map(address_map & map)1084 void m72_state::mcu_io_map(address_map &map)
1085 {
1086 /* External access */
1087 map(0x0000, 0x0000).rw(FUNC(m72_state::mcu_sample_r), FUNC(m72_state::mcu_low_w));
1088 map(0x0001, 0x0001).w(FUNC(m72_state::mcu_high_w));
1089 map(0x0002, 0x0002).rw("mculatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
1090 /* shared at b0000 - b0fff on the main cpu */
1091 map(0xc000, 0xcfff).rw(FUNC(m72_state::mcu_data_r), FUNC(m72_state::mcu_data_w));
1092 }
1093
1094 #define COIN_MODE_1 \
1095 PORT_DIPNAME( 0x00f0, 0x00f0, DEF_STR( Coinage ) ) PORT_CONDITION("DSW", 0x0400, NOTEQUALS, 0x0000) PORT_DIPLOCATION("SW1:5,6,7,8") \
1096 PORT_DIPSETTING( 0x00a0, DEF_STR( 6C_1C ) ) \
1097 PORT_DIPSETTING( 0x00b0, DEF_STR( 5C_1C ) ) \
1098 PORT_DIPSETTING( 0x00c0, DEF_STR( 4C_1C ) ) \
1099 PORT_DIPSETTING( 0x00d0, DEF_STR( 3C_1C ) ) \
1100 PORT_DIPSETTING( 0x0010, DEF_STR( 8C_3C ) ) \
1101 PORT_DIPSETTING( 0x00e0, DEF_STR( 2C_1C ) ) \
1102 PORT_DIPSETTING( 0x0020, DEF_STR( 5C_3C ) ) \
1103 PORT_DIPSETTING( 0x0030, DEF_STR( 3C_2C ) ) \
1104 PORT_DIPSETTING( 0x00f0, DEF_STR( 1C_1C ) ) \
1105 PORT_DIPSETTING( 0x0040, DEF_STR( 2C_3C ) ) \
1106 PORT_DIPSETTING( 0x0090, DEF_STR( 1C_2C ) ) \
1107 PORT_DIPSETTING( 0x0080, DEF_STR( 1C_3C ) ) \
1108 PORT_DIPSETTING( 0x0070, DEF_STR( 1C_4C ) ) \
1109 PORT_DIPSETTING( 0x0060, DEF_STR( 1C_5C ) ) \
1110 PORT_DIPSETTING( 0x0050, DEF_STR( 1C_6C ) ) \
1111 PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
1112
1113 #define COIN_MODE_2_A \
1114 PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) ) PORT_CONDITION("DSW", 0x0400, EQUALS, 0x0000) PORT_DIPLOCATION("SW1:5,6") \
1115 PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) ) \
1116 PORT_DIPSETTING( 0x0010, DEF_STR( 3C_1C ) ) \
1117 PORT_DIPSETTING( 0x0020, DEF_STR( 2C_1C ) ) \
1118 PORT_DIPSETTING( 0x0030, DEF_STR( 1C_1C ) ) \
1119 PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) ) PORT_CONDITION("DSW", 0x0400, EQUALS, 0x0000) PORT_DIPLOCATION("SW1:7,8") \
1120 PORT_DIPSETTING( 0x00c0, DEF_STR( 1C_2C ) ) \
1121 PORT_DIPSETTING( 0x0080, DEF_STR( 1C_3C ) ) \
1122 PORT_DIPSETTING( 0x0040, DEF_STR( 1C_5C ) ) \
1123 PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) )
1124
1125 static INPUT_PORTS_START( common )
1126 PORT_START("IN0")
1127 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
1128 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
1129 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
1130 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
1131 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON4 )
1132 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 )
1133 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON2 )
1134 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON1 )
1135 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
1136 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
1137 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
1138 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
1139 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_COCKTAIL
1140 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
1141 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
1142 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
1143
1144 PORT_START("IN1")
1145 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
1146 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 )
1147 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN1 )
1148 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_COIN2 )
1149 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE1 )
1150 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SERVICE ) /* 0x20 is another test mode */
1151 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
1152 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_CUSTOM ) /* sprite DMA complete */
1153 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1154 INPUT_PORTS_END
1155
1156 static INPUT_PORTS_START( rtype )
1157 PORT_INCLUDE( common )
1158
1159 PORT_START("DSW")
1160 PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
1161 PORT_DIPSETTING( 0x0002, "2" )
1162 PORT_DIPSETTING( 0x0003, "3" )
1163 PORT_DIPSETTING( 0x0001, "4" )
1164 PORT_DIPSETTING( 0x0000, "5" )
1165 PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:3")
1166 PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
1167 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1168 PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4")
1169 PORT_DIPSETTING( 0x0000, "50K 150K 250K 400K 600K" )
1170 PORT_DIPSETTING( 0x0008, "100K 200K 350K 500K 700K" )
1171 /* Coin Mode 1 */
1172 COIN_MODE_1
1173 /* Coin Mode 2 */
1174 COIN_MODE_2_A
1175 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
1176 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
1177 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1178 PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:2")
1179 PORT_DIPSETTING( 0x0000, DEF_STR( Upright ) )
1180 PORT_DIPSETTING( 0x0200, DEF_STR( Cocktail ) )
1181 PORT_DIPNAME( 0x0400, 0x0400, "Coin Mode" ) PORT_DIPLOCATION("SW2:3")
1182 PORT_DIPSETTING( 0x0400, "Mode 1" )
1183 PORT_DIPSETTING( 0x0000, "Mode 2" )
1184 PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:4")
1185 PORT_DIPSETTING( 0x0800, DEF_STR( Normal ) )
1186 PORT_DIPSETTING( 0x0000, DEF_STR( Hard ) )
1187 PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:5")
1188 PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
1189 PORT_DIPSETTING( 0x1000, DEF_STR( Yes ) )
1190 /* In stop mode, press 2 to stop and 1 to restart */
1191 PORT_DIPNAME( 0x2000, 0x2000, "Stop Mode" ) PORT_DIPLOCATION("SW2:6")
1192 PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
1193 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1194 PORT_DIPNAME( 0x4000, 0x4000, "Invulnerability" ) PORT_DIPLOCATION("SW2:7")
1195 PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
1196 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1197 PORT_SERVICE_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW2:8")
1198 INPUT_PORTS_END
1199
1200 /* identical but Demo Sounds is inverted */
1201 static INPUT_PORTS_START( rtypep )
1202 PORT_INCLUDE( rtype )
1203
1204 PORT_MODIFY("DSW")
1205 PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:3")
1206 PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
1207 PORT_DIPSETTING( 0x0004, DEF_STR( On ) )
1208 INPUT_PORTS_END
1209
1210 static INPUT_PORTS_START( bchopper )
1211 PORT_INCLUDE( common )
1212
1213 PORT_START("DSW")
1214 PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
1215 PORT_DIPSETTING( 0x0000, "1" )
1216 PORT_DIPSETTING( 0x0002, "2" )
1217 PORT_DIPSETTING( 0x0003, "3" )
1218 PORT_DIPSETTING( 0x0001, "4" )
1219 PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:3")
1220 PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
1221 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1222 PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4")
1223 PORT_DIPSETTING( 0x0008, "80K 200K 350K" )
1224 PORT_DIPSETTING( 0x0000, "100K 250K 400K" )
1225 /* Coin Mode 1 */
1226 COIN_MODE_1
1227 /* Coin Mode 2 */
1228 COIN_MODE_2_A
1229 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
1230 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
1231 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1232 PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:2")
1233 PORT_DIPSETTING( 0x0000, DEF_STR( Upright ) )
1234 PORT_DIPSETTING( 0x0200, DEF_STR( Cocktail ) )
1235 PORT_DIPNAME( 0x0400, 0x0400, "Coin Mode" ) PORT_DIPLOCATION("SW2:3")
1236 PORT_DIPSETTING( 0x0400, "Mode 1" )
1237 PORT_DIPSETTING( 0x0000, "Mode 2" )
1238 PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:4")
1239 PORT_DIPSETTING( 0x0800, DEF_STR( Normal ) )
1240 PORT_DIPSETTING( 0x0000, DEF_STR( Hard ) )
1241 PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:5")
1242 PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
1243 PORT_DIPSETTING( 0x1000, DEF_STR( Yes ) )
1244 /* In stop mode, press 2 to stop and 1 to restart */
1245 PORT_DIPNAME( 0x2000, 0x2000, "Stop Mode" ) PORT_DIPLOCATION("SW2:6")
1246 PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
1247 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1248 PORT_DIPNAME( 0x4000, 0x4000, "Invulnerability" ) PORT_DIPLOCATION("SW2:7")
1249 PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
1250 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1251 PORT_SERVICE_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW2:8")
1252 INPUT_PORTS_END
1253
1254 static INPUT_PORTS_START( nspirit )
1255 PORT_INCLUDE( common )
1256
1257 PORT_START("DSW")
1258 PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
1259 PORT_DIPSETTING( 0x0002, "2" )
1260 PORT_DIPSETTING( 0x0003, "3" )
1261 PORT_DIPSETTING( 0x0001, "4" )
1262 PORT_DIPSETTING( 0x0000, "5" )
1263 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
1264 PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
1265 PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
1266 PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
1267 PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
1268 /* Coin Mode 1 */
1269 COIN_MODE_1
1270 /* Coin Mode 2 */
1271 COIN_MODE_2_A
1272 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
1273 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
1274 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1275 PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:2")
1276 PORT_DIPSETTING( 0x0000, DEF_STR( Upright ) )
1277 PORT_DIPSETTING( 0x0200, DEF_STR( Cocktail ) )
1278 PORT_DIPNAME( 0x0400, 0x0400, "Coin Mode" ) PORT_DIPLOCATION("SW2:3")
1279 PORT_DIPSETTING( 0x0400, "Mode 1" )
1280 PORT_DIPSETTING( 0x0000, "Mode 2" )
1281 PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:4")
1282 PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
1283 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1284 PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:5")
1285 PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
1286 PORT_DIPSETTING( 0x1000, DEF_STR( Yes ) )
1287 /* In stop mode, press 2 to stop and 1 to restart */
1288 PORT_DIPNAME( 0x2000, 0x2000, "Stop Mode" ) PORT_DIPLOCATION("SW2:6")
1289 PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
1290 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1291 PORT_DIPNAME( 0x4000, 0x4000, "Invulnerability" ) PORT_DIPLOCATION("SW2:7")
1292 PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
1293 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1294 PORT_SERVICE_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW2:8" )
1295 INPUT_PORTS_END
1296
1297 static INPUT_PORTS_START( imgfight )
1298 PORT_INCLUDE( common )
1299
1300 PORT_START("DSW")
1301 PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
1302 PORT_DIPSETTING( 0x0002, "2" )
1303 PORT_DIPSETTING( 0x0003, "3" )
1304 PORT_DIPSETTING( 0x0001, "4" )
1305 PORT_DIPSETTING( 0x0000, "5" )
1306 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
1307 PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
1308 PORT_DIPSETTING( 0x0008, DEF_STR( Hard ) )
1309 PORT_DIPSETTING( 0x0004, DEF_STR( Hardest ) )
1310 PORT_DIPSETTING( 0x0000, "Debug Mode 2 lap" ) /* Not used according to manual */
1311 /* Coin Mode 1 */
1312 COIN_MODE_1
1313 /* Coin Mode 2 */
1314 COIN_MODE_2_A
1315 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
1316 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
1317 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1318 PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:2")
1319 PORT_DIPSETTING( 0x0000, DEF_STR( Upright ) )
1320 PORT_DIPSETTING( 0x0200, DEF_STR( Cocktail ) )
1321 PORT_DIPNAME( 0x0400, 0x0400, "Coin Mode" ) PORT_DIPLOCATION("SW2:3")
1322 PORT_DIPSETTING( 0x0400, "Mode 1" )
1323 PORT_DIPSETTING( 0x0000, "Mode 2" )
1324 PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:4")
1325 PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
1326 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1327 PORT_DIPUNKNOWN_DIPLOC( 0x1000, 0x1000, "SW2:5" )
1328 /* In stop mode, press 2 to stop and 1 to restart */
1329 PORT_DIPNAME( 0x2000, 0x2000, "Stop Mode" ) PORT_DIPLOCATION("SW2:6")
1330 PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
1331 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1332 PORT_DIPUNUSED_DIPLOC( 0x4000, IP_ACTIVE_LOW, "SW2:7" )
1333 PORT_SERVICE_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW2:8" )
1334 INPUT_PORTS_END
1335
1336 static INPUT_PORTS_START( loht )
1337 PORT_INCLUDE( common )
1338
1339 PORT_START("DSW")
1340 PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
1341 PORT_DIPSETTING( 0x0000, "2" )
1342 PORT_DIPSETTING( 0x0003, "3" )
1343 PORT_DIPSETTING( 0x0002, "4" )
1344 PORT_DIPSETTING( 0x0001, "5" )
1345 PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:3")
1346 PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
1347 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1348 PORT_DIPUNUSED_DIPLOC( 0x0008, IP_ACTIVE_LOW, "SW1:4" )
1349 /* Coin Mode 1 */
1350 COIN_MODE_1
1351 /* Coin Mode 2 */
1352 COIN_MODE_2_A
1353 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
1354 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
1355 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1356 PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:2")
1357 PORT_DIPSETTING( 0x0000, DEF_STR( Upright ) )
1358 PORT_DIPSETTING( 0x0200, DEF_STR( Cocktail ) )
1359 PORT_DIPNAME( 0x0400, 0x0400, "Coin Mode" ) PORT_DIPLOCATION("SW2:3")
1360 PORT_DIPSETTING( 0x0400, "Mode 1" )
1361 PORT_DIPSETTING( 0x0000, "Mode 2" )
1362 PORT_DIPNAME( 0x1800, 0x1800, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:4,5")
1363 PORT_DIPSETTING( 0x0000, DEF_STR( Easy ) )
1364 PORT_DIPSETTING( 0x1800, DEF_STR( Normal ) )
1365 PORT_DIPSETTING( 0x1000, DEF_STR( Hard ) )
1366 PORT_DIPSETTING( 0x0800, DEF_STR( Hardest ) )
1367 /* In stop mode, press 2 to stop and 1 to restart */
1368 PORT_DIPNAME( 0x2000, 0x2000, "Stop Mode" ) PORT_DIPLOCATION("SW2:6")
1369 PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
1370 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1371 PORT_DIPNAME( 0x4000, 0x4000, "Invulnerability" ) PORT_DIPLOCATION("SW2:7")
1372 PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
1373 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1374 PORT_SERVICE_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW2:8" )
1375 INPUT_PORTS_END
1376
1377 static INPUT_PORTS_START( xmultipl )
1378 PORT_INCLUDE( common )
1379
1380 PORT_START("DSW")
1381 PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:1,2")
1382 PORT_DIPSETTING( 0x0002, DEF_STR( Very_Easy ) )
1383 PORT_DIPSETTING( 0x0001, DEF_STR( Easy ) )
1384 PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) )
1385 PORT_DIPSETTING( 0x0000, DEF_STR( Hard ) )
1386 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:3,4")
1387 PORT_DIPSETTING( 0x0008, "1" )
1388 PORT_DIPSETTING( 0x0004, "2" )
1389 PORT_DIPSETTING( 0x000c, "3" )
1390 PORT_DIPSETTING( 0x0000, "4" )
1391 /* Coin Mode 1 */
1392 COIN_MODE_1
1393 /* Coin Mode 2 */
1394 COIN_MODE_2_A
1395 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
1396 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
1397 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1398 PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:2")
1399 PORT_DIPSETTING( 0x0000, "Upright (single)" ) PORT_CONDITION("DSW", 0x1000, NOTEQUALS, 0x0000)
1400 PORT_DIPSETTING( 0x0200, DEF_STR( Cocktail ) ) PORT_CONDITION("DSW", 0x1000, NOTEQUALS, 0x0000)
1401 PORT_DIPSETTING( 0x0000, "Upright (double) On" ) PORT_CONDITION("DSW", 0x1000, EQUALS, 0x0000)
1402 PORT_DIPSETTING( 0x0200, "Upright (double) Off" ) PORT_CONDITION("DSW", 0x1000, EQUALS, 0x0000)
1403 PORT_DIPNAME( 0x0400, 0x0400, "Coin Mode" ) PORT_DIPLOCATION("SW2:3")
1404 PORT_DIPSETTING( 0x0400, "Mode 1" )
1405 PORT_DIPSETTING( 0x0000, "Mode 2" )
1406 PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:4")
1407 PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
1408 PORT_DIPSETTING( 0x0800, DEF_STR( On ) )
1409 PORT_DIPNAME( 0x1000, 0x1000, "Upright (double) Mode" ) PORT_DIPLOCATION("SW2:5")
1410 PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
1411 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1412 PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:6")
1413 PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
1414 PORT_DIPSETTING( 0x2000, DEF_STR( Yes ) )
1415 PORT_DIPUNUSED_DIPLOC( 0x4000, IP_ACTIVE_LOW, "SW2:7" )
1416 PORT_SERVICE_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW2:8" )
1417 INPUT_PORTS_END
1418
1419 static INPUT_PORTS_START( m81_xmultipl )
1420 PORT_INCLUDE( xmultipl )
1421 M81_B_B_JUMPER_J3_W
1422 INPUT_PORTS_END
1423
1424 static INPUT_PORTS_START( dbreed )
1425 PORT_INCLUDE( common )
1426
1427 PORT_START("DSW")
1428 PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
1429 PORT_DIPSETTING( 0x0002, "2" )
1430 PORT_DIPSETTING( 0x0003, "3" )
1431 PORT_DIPSETTING( 0x0001, "4" )
1432 PORT_DIPSETTING( 0x0000, "5" )
1433 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
1434 PORT_DIPSETTING( 0x0000, DEF_STR( Very_Easy ) )
1435 PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
1436 PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
1437 PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
1438 /* Coin Mode 1 */
1439 COIN_MODE_1
1440 /* Coin Mode 2 */
1441 COIN_MODE_2_A
1442 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
1443 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
1444 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1445 PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:2")
1446 PORT_DIPSETTING( 0x0000, DEF_STR( Upright ) )
1447 PORT_DIPSETTING( 0x0200, DEF_STR( Cocktail ) )
1448 PORT_DIPNAME( 0x0400, 0x0400, "Coin Mode" ) PORT_DIPLOCATION("SW2:3")
1449 PORT_DIPSETTING( 0x0400, "Mode 1" )
1450 PORT_DIPSETTING( 0x0000, "Mode 2" )
1451 PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:4")
1452 PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
1453 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1454 PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:5")
1455 PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
1456 PORT_DIPSETTING( 0x1000, DEF_STR( Yes ) )
1457 /* In stop mode, press 2 to stop and 1 to restart */
1458 PORT_DIPNAME( 0x2000, 0x2000, "Stop Mode" ) PORT_DIPLOCATION("SW2:6")
1459 PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
1460 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1461 PORT_DIPUNUSED_DIPLOC( 0x4000, IP_ACTIVE_LOW, "SW2:7" )
1462 PORT_SERVICE_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW2:8")
1463 INPUT_PORTS_END
1464
1465 static INPUT_PORTS_START( m81_dbreed )
1466 PORT_INCLUDE( dbreed )
1467 M81_B_B_JUMPER_J3_S
1468 INPUT_PORTS_END
1469
1470 static INPUT_PORTS_START( rtype2 )
1471 PORT_INCLUDE( common )
1472
1473 PORT_START("DSW")
1474 PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
1475 PORT_DIPSETTING( 0x0002, "2" )
1476 PORT_DIPSETTING( 0x0003, "3" )
1477 PORT_DIPSETTING( 0x0001, "4" )
1478 PORT_DIPSETTING( 0x0000, "5" )
1479 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
1480 PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
1481 PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
1482 PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
1483 PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
1484 /* Coin Mode 1 */
1485 COIN_MODE_1
1486 /* Coin Mode 2 */
1487 COIN_MODE_2_A
1488 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
1489 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
1490 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1491 PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
1492 PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
1493 PORT_DIPSETTING( 0x0200, DEF_STR( On ) )
1494 PORT_DIPNAME( 0x0400, 0x0400, "Coin Mode" ) PORT_DIPLOCATION("SW2:3")
1495 PORT_DIPSETTING( 0x0400, "Mode 1" )
1496 PORT_DIPSETTING( 0x0000, "Mode 2" )
1497 PORT_DIPNAME( 0x1800, 0x1000, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:4,5")
1498 PORT_DIPSETTING( 0x1000, DEF_STR( Upright ) )
1499 PORT_DIPSETTING( 0x0000, "Upright (2P)" )
1500 PORT_DIPSETTING( 0x1800, DEF_STR( Cocktail ) )
1501 /* In stop mode, press 2 to stop and 1 to restart */
1502 PORT_DIPNAME( 0x2000, 0x2000, "Stop Mode" ) PORT_DIPLOCATION("SW2:6")
1503 PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
1504 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1505 PORT_DIPUNUSED_DIPLOC( 0x4000, IP_ACTIVE_LOW, "SW2:7" ) /* Always OFF according to the manual */
1506 PORT_SERVICE_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW2:8")
1507 INPUT_PORTS_END
1508
1509 static INPUT_PORTS_START( hharry )
1510 PORT_INCLUDE( common )
1511
1512 PORT_START("DSW")
1513 PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
1514 PORT_DIPSETTING( 0x0002, "2" )
1515 PORT_DIPSETTING( 0x0003, "3" )
1516 PORT_DIPSETTING( 0x0001, "4" )
1517 PORT_DIPSETTING( 0x0000, "5" )
1518 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
1519 PORT_DIPSETTING( 0x0000, DEF_STR( Very_Easy ) )
1520 PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
1521 PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
1522 PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
1523 PORT_DIPNAME( 0x0010, 0x0010, "Continue Limit" ) PORT_DIPLOCATION("SW1:5")
1524 PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
1525 PORT_DIPSETTING( 0x0010, DEF_STR( Yes ) )
1526 PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW1:6")
1527 PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
1528 PORT_DIPSETTING( 0x0020, DEF_STR( Yes ) )
1529 PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
1530 PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
1531 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1532 PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "SW1:8" )
1533 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
1534 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
1535 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1536 PORT_DIPNAME( 0x0600, 0x0400, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:2,3")
1537 PORT_DIPSETTING( 0x0400, DEF_STR( Upright ) )
1538 PORT_DIPSETTING( 0x0000, "Upright (2P)" )
1539 PORT_DIPSETTING( 0x0600, DEF_STR( Cocktail ) )
1540 PORT_DIPNAME( 0x0800, 0x0800, "Coin Mode" ) PORT_DIPLOCATION("SW2:4")
1541 PORT_DIPSETTING( 0x0800, "Mode 1" )
1542 PORT_DIPSETTING( 0x0000, "Mode 2" )
1543 /* Coin Mode 1 */
1544 IREM_COIN_MODE_1_NEW_HIGH
1545 /* Coin mode 2 */
1546 IREM_COIN_MODE_2_HIGH
1547 INPUT_PORTS_END
1548
1549 static INPUT_PORTS_START( m81_hharry )
1550 PORT_INCLUDE( hharry )
1551 M81_B_B_JUMPER_J3_S
1552 INPUT_PORTS_END
1553
1554 static INPUT_PORTS_START( poundfor )
1555 PORT_START("IN0") // not read directly
1556 PORT_BIT( 0x9f9f, IP_ACTIVE_LOW, IPT_UNUSED )
1557 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_WRITE_LINE_DEVICE_MEMBER("upd4701l", upd4701_device, right_w)
1558 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_WRITE_LINE_DEVICE_MEMBER("upd4701l", upd4701_device, left_w)
1559 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_WRITE_LINE_DEVICE_MEMBER("upd4701h", upd4701_device, right_w)
1560 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_WRITE_LINE_DEVICE_MEMBER("upd4701h", upd4701_device, left_w)
1561
1562 PORT_START("IN1")
1563 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
1564 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 )
1565 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN1 )
1566 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_COIN2 )
1567 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE1 )
1568 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SERVICE ) /* 0x0020 is another test mode */
1569 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
1570 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_CUSTOM ) /* sprite DMA complete */
1571 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1572
1573 PORT_START("DSW")
1574 PORT_DIPNAME( 0x0003, 0x0003, "Round Time" ) PORT_DIPLOCATION("SW1:1,2")
1575 PORT_DIPSETTING( 0x0002, "60" )
1576 PORT_DIPSETTING( 0x0003, "90" )
1577 PORT_DIPSETTING( 0x0001, "120" )
1578 PORT_DIPSETTING( 0x0000, "150" )
1579 PORT_DIPNAME( 0x0004, 0x0004, "Matches/Credit (2P)" ) PORT_DIPLOCATION("SW1:3")
1580 PORT_DIPSETTING( 0x0004, "1" )
1581 PORT_DIPSETTING( 0x0000, "2" )
1582 PORT_DIPNAME( 0x0008, 0x0008, "Rounds/Match" ) PORT_DIPLOCATION("SW1:4")
1583 PORT_DIPSETTING( 0x0008, "2" )
1584 PORT_DIPSETTING( 0x0000, "3" )
1585 PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:5")
1586 PORT_DIPSETTING( 0x0010, DEF_STR( Normal ) )
1587 PORT_DIPSETTING( 0x0000, DEF_STR( Hard ) )
1588 PORT_DIPNAME( 0x0020, 0x0020, "Trackball Size" ) PORT_DIPLOCATION("SW1:6")
1589 PORT_DIPSETTING( 0x0020, "Small" )
1590 PORT_DIPSETTING( 0x0000, "Large" )
1591 PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
1592 PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
1593 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1594 PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "SW1:8")
1595 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
1596 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
1597 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1598 PORT_DIPNAME( 0x0600, 0x0400, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:2,3")
1599 PORT_DIPSETTING( 0x0400, DEF_STR( Upright ) )
1600 PORT_DIPSETTING( 0x0200, "Upright (2P)" )
1601 PORT_DIPSETTING( 0x0600, DEF_STR( Cocktail ) )
1602 PORT_DIPNAME( 0x0800, 0x0800, "Coin Mode" ) PORT_DIPLOCATION("SW2:4")
1603 PORT_DIPSETTING( 0x0800, "Mode 1" )
1604 PORT_DIPSETTING( 0x0000, "Mode 2" )
1605 /* Coin Mode 1 */
1606 PORT_DIPNAME( 0xf000, 0xf000, DEF_STR( Coinage ) ) PORT_CONDITION("DSW", 0x0800, NOTEQUALS, 0x0000) PORT_DIPLOCATION("SW2:5,6,7,8")
1607 PORT_DIPSETTING( 0xa000, DEF_STR( 6C_1C ) )
1608 PORT_DIPSETTING( 0xb000, DEF_STR( 5C_1C ) )
1609 PORT_DIPSETTING( 0xc000, DEF_STR( 4C_1C ) )
1610 PORT_DIPSETTING( 0xd000, DEF_STR( 3C_1C ) )
1611 PORT_DIPSETTING( 0xe000, DEF_STR( 2C_1C ) )
1612 PORT_DIPSETTING( 0x3000, DEF_STR( 3C_2C ) )
1613 PORT_DIPSETTING( 0x2000, DEF_STR( 4C_3C ) )
1614 PORT_DIPSETTING( 0xf000, DEF_STR( 1C_1C ) )
1615 PORT_DIPSETTING( 0x1000, "1 Coin/1 Credit, 1 Coin/Continue" )
1616 PORT_DIPSETTING( 0x4000, DEF_STR( 2C_3C ) )
1617 PORT_DIPSETTING( 0x9000, DEF_STR( 1C_2C ) )
1618 PORT_DIPSETTING( 0x8000, DEF_STR( 1C_3C ) )
1619 PORT_DIPSETTING( 0x7000, DEF_STR( 1C_4C ) )
1620 PORT_DIPSETTING( 0x6000, DEF_STR( 1C_5C ) )
1621 PORT_DIPSETTING( 0x5000, DEF_STR( 1C_6C ) )
1622 PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
1623 /* Coin Mode 2 */
1624 IREM_COIN_MODE_2_HIGH
1625
1626 PORT_START("TRACK0_X")
1627 PORT_BIT( 0x0fff, 0x0000, IPT_TRACKBALL_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(30) PORT_RESET PORT_PLAYER(1)
1628
1629 PORT_START("TRACK0_Y")
1630 PORT_BIT( 0x0fff, 0x0000, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(30) PORT_REVERSE PORT_RESET PORT_PLAYER(1)
1631
1632 PORT_START("TRACK1_X")
1633 PORT_BIT( 0x0fff, 0x0000, IPT_TRACKBALL_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(30) PORT_REVERSE PORT_RESET PORT_PLAYER(2)
1634
1635 PORT_START("TRACK1_Y")
1636 PORT_BIT( 0x0fff, 0x0000, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(30) PORT_RESET PORT_PLAYER(2)
1637 INPUT_PORTS_END
1638
1639 static INPUT_PORTS_START( airduel )
1640 PORT_INCLUDE( common )
1641
1642 PORT_START("DSW")
1643 PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
1644 PORT_DIPSETTING( 0x0002, "2" )
1645 PORT_DIPSETTING( 0x0003, "3" )
1646 PORT_DIPSETTING( 0x0001, "4" )
1647 PORT_DIPSETTING( 0x0000, "5" )
1648 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
1649 PORT_DIPSETTING( 0x0000, DEF_STR( Very_Easy ) )
1650 PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
1651 PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
1652 PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
1653 PORT_DIPUNUSED_DIPLOC( 0x0010, IP_ACTIVE_LOW, "SW1:5" ) /* Manual says not used, must be OFF */
1654 PORT_DIPUNUSED_DIPLOC( 0x0020, IP_ACTIVE_LOW, "SW1:6" ) /* Manual says not used, must be OFF */
1655 PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
1656 PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
1657 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1658 PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "SW1:8" )
1659 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
1660 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
1661 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1662 PORT_DIPUNUSED_DIPLOC( 0x0200, IP_ACTIVE_LOW, "SW1:2" ) /* Manual says not used, must be OFF */
1663 PORT_DIPUNUSED_DIPLOC( 0x0400, IP_ACTIVE_LOW, "SW1:3" ) /* Manual says not used, must be OFF */
1664 PORT_DIPNAME( 0x0800, 0x0800, "Coin Mode" ) PORT_DIPLOCATION("SW2:4")
1665 PORT_DIPSETTING( 0x0800, "Mode 1" )
1666 PORT_DIPSETTING( 0x0000, "Mode 2" )
1667 /* Coin Mode 1 */
1668 PORT_DIPNAME( 0xf000, 0xf000, DEF_STR( Coinage ) ) PORT_CONDITION("DSW", 0x0800, NOTEQUALS, 0x0000) PORT_DIPLOCATION("SW2:5,6,7,8")
1669 PORT_DIPSETTING( 0xa000, DEF_STR( 6C_1C ) )
1670 PORT_DIPSETTING( 0xb000, DEF_STR( 5C_1C ) )
1671 PORT_DIPSETTING( 0xc000, DEF_STR( 4C_1C ) )
1672 PORT_DIPSETTING( 0xd000, DEF_STR( 3C_1C ) )
1673 // PORT_DIPSETTING( 0x1000, DEF_STR( Free-Play ) ) /* another free play */
1674 PORT_DIPSETTING( 0xe000, DEF_STR( 2C_1C ) )
1675 PORT_DIPSETTING( 0x3000, DEF_STR( 3C_2C ) )
1676 PORT_DIPSETTING( 0x2000, DEF_STR( 4C_3C ) )
1677 PORT_DIPSETTING( 0xf000, DEF_STR( 1C_1C ) )
1678 PORT_DIPSETTING( 0x4000, DEF_STR( 2C_3C ) )
1679 PORT_DIPSETTING( 0x9000, DEF_STR( 1C_2C ) )
1680 PORT_DIPSETTING( 0x8000, DEF_STR( 1C_3C ) )
1681 PORT_DIPSETTING( 0x7000, DEF_STR( 1C_4C ) )
1682 PORT_DIPSETTING( 0x6000, DEF_STR( 1C_5C ) )
1683 PORT_DIPSETTING( 0x5000, DEF_STR( 1C_6C ) )
1684 PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
1685 /* Coin Mode 2 */
1686 IREM_COIN_MODE_2_HIGH
1687 INPUT_PORTS_END
1688
1689 static INPUT_PORTS_START( gallop )
1690 PORT_INCLUDE( common )
1691
1692 PORT_START("DSW")
1693 PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
1694 PORT_DIPSETTING( 0x0002, "2" )
1695 PORT_DIPSETTING( 0x0003, "3" )
1696 PORT_DIPSETTING( 0x0001, "4" )
1697 PORT_DIPSETTING( 0x0000, "5" )
1698 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
1699 PORT_DIPSETTING( 0x0000, DEF_STR( Very_Easy ) )
1700 PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
1701 PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
1702 PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
1703 PORT_DIPUNUSED_DIPLOC( 0x0010, IP_ACTIVE_LOW, "SW1:5" )
1704 PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW1:6")
1705 PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
1706 PORT_DIPSETTING( 0x0020, DEF_STR( Yes ) )
1707 PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
1708 PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
1709 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1710 PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "SW1:8" )
1711 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
1712 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
1713 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1714 PORT_DIPNAME( 0x0600, 0x0000, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:2,3")
1715 PORT_DIPSETTING( 0x0000, DEF_STR( Upright ) )
1716 PORT_DIPSETTING( 0x0200, "Upright (2P)" )
1717 PORT_DIPSETTING( 0x0600, DEF_STR( Cocktail ) )
1718 PORT_DIPNAME( 0x0800, 0x0800, "Coin Mode" ) PORT_DIPLOCATION("SW2:4")
1719 PORT_DIPSETTING( 0x0800, "Mode 1" )
1720 PORT_DIPSETTING( 0x0000, "Mode 2" )
1721 /* Coin Mode 1 */
1722 IREM_COIN_MODE_1_NEW_HIGH
1723 /* Coin mode 2 */
1724 IREM_COIN_MODE_2_HIGH
1725 INPUT_PORTS_END
1726
1727 static INPUT_PORTS_START( kengo )
1728 PORT_INCLUDE( common )
1729
1730 PORT_START("DSW")
1731 PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
1732 PORT_DIPSETTING( 0x0002, "2" )
1733 PORT_DIPSETTING( 0x0003, "3" )
1734 PORT_DIPSETTING( 0x0001, "4" )
1735 PORT_DIPSETTING( 0x0000, "5" )
1736 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:3,4")
1737 PORT_DIPSETTING( 0x0000, DEF_STR( Very_Easy ) )
1738 PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
1739 PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
1740 PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
1741 PORT_DIPUNKNOWN_DIPLOC( 0x0010, 0x0010, "SW1:5" )
1742 PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW1:6")
1743 PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
1744 PORT_DIPSETTING( 0x0020, DEF_STR( Yes ) )
1745 PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
1746 PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
1747 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1748 PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "SW1:8" )
1749 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
1750 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
1751 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1752 PORT_DIPUNKNOWN_DIPLOC( 0x0200, 0x0200, "SW2:2" )
1753 PORT_DIPUNKNOWN_DIPLOC( 0x0400, 0x0400, "SW2:3" )
1754 PORT_DIPNAME( 0x0800, 0x0800, "Coin Mode" ) PORT_DIPLOCATION("SW2:4")
1755 PORT_DIPSETTING( 0x0800, "Mode 1" )
1756 PORT_DIPSETTING( 0x0000, "Mode 2" )
1757 /* Coin Mode 1 */
1758 IREM_COIN_MODE_1_NEW_HIGH
1759 /* Coin mode 2 */
1760 IREM_COIN_MODE_2_HIGH
1761 INPUT_PORTS_END
1762
1763
1764
1765 static const gfx_layout tilelayout =
1766 {
1767 8,8, /* 8*8 characters */
1768 RGN_FRAC(1,4), /* NUM characters */
1769 4, /* 4 bits per pixel */
1770 { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
1771 { STEP8(0,1) },
1772 { STEP8(0,8) },
1773 8*8 /* every char takes 8 consecutive bytes */
1774 };
1775
1776 static const gfx_layout spritelayout =
1777 {
1778 16,16, /* 16*16 sprites */
1779 RGN_FRAC(1,4), /* NUM characters */
1780 4, /* 4 bits per pixel */
1781 { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
1782 { STEP8(0,1), STEP8(16*8,1) },
1783 { STEP16(0,8) },
1784 32*8 /* every sprite takes 32 consecutive bytes */
1785 };
1786
1787 static GFXDECODE_START( gfx_m72 )
1788 GFXDECODE_ENTRY( "sprites", 0, spritelayout, 0, 16 )
1789 GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 256, 16 )
1790 GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 256, 16 )
1791 GFXDECODE_END
1792
GFXDECODE_START(gfx_rtype2)1793 static GFXDECODE_START( gfx_rtype2 )
1794 GFXDECODE_ENTRY( "sprites", 0, spritelayout, 0, 16 )
1795 GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 256, 16 )
1796 GFXDECODE_END
1797
1798 static GFXDECODE_START( gfx_majtitle )
1799 GFXDECODE_ENTRY( "sprites", 0, spritelayout, 0, 16 )
1800 GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 256, 16 )
1801 GFXDECODE_ENTRY( "sprites2", 0, spritelayout, 0, 16 )
1802 GFXDECODE_END
1803
1804
1805 void m72_state::m72_audio_chips(machine_config &config)
1806 {
1807 /* sound hardware */
1808 SPEAKER(config, "speaker").front_center();
1809
1810 generic_latch_8_device &soundlatch(GENERIC_LATCH_8(config, "soundlatch"));
1811 soundlatch.data_pending_callback().set("soundirq", FUNC(rst_neg_buffer_device::rst18_w));
1812 soundlatch.set_separate_acknowledge(true);
1813
1814 RST_NEG_BUFFER(config, "soundirq", 0).int_callback().set_inputline(m_soundcpu, 0);
1815
1816 m_soundcpu->set_irq_acknowledge_callback("soundirq", FUNC(rst_neg_buffer_device::inta_cb));
1817
1818 IREM_M72_AUDIO(config, m_audio);
1819 m_audio->set_device_rom_tag("samples");
1820 m_audio->set_dac_tag("dac");
1821
1822 ym2151_device &ymsnd(YM2151(config, "ymsnd", SOUND_CLOCK));
1823 ymsnd.irq_handler().set("soundirq", FUNC(rst_neg_buffer_device::rst28_w));
1824 ymsnd.add_route(ALL_OUTPUTS, "speaker", 1.0);
1825
1826 DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.3); // unknown DAC
1827 }
1828
m72_base(machine_config & config)1829 void m72_state::m72_base(machine_config &config)
1830 {
1831 /* basic machine hardware */
1832 V30(config, m_maincpu, MASTER_CLOCK/2/2); /* 16 MHz external freq (8MHz internal) */
1833 m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::m72_map);
1834 m_maincpu->set_addrmap(AS_IO, &m72_state::m72_portmap);
1835 m_maincpu->set_irq_acknowledge_callback("upd71059c", FUNC(pic8259_device::inta_cb));
1836
1837 Z80(config, m_soundcpu, SOUND_CLOCK);
1838 m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_ram_map);
1839 m_soundcpu->set_addrmap(AS_IO, &m72_state::sound_portmap);
1840
1841 PIC8259(config, m_upd71059c, 0);
1842 m_upd71059c->out_int_callback().set_inputline(m_maincpu, 0);
1843
1844 /* video hardware */
1845 BUFFERED_SPRITERAM16(config, m_spriteram);
1846
1847 GFXDECODE(config, m_gfxdecode, m_palette, gfx_m72);
1848 PALETTE(config, m_palette).set_entries(512);
1849
1850 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
1851 m_screen->set_raw(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256);
1852 m_screen->set_screen_update(FUNC(m72_state::screen_update));
1853 m_screen->set_palette(m_palette);
1854
1855 MCFG_VIDEO_START_OVERRIDE(m72_state,m72)
1856
1857 m72_audio_chips(config);
1858 }
1859
m72(machine_config & config)1860 void m72_state::m72(machine_config &config)
1861 {
1862 m72_base(config);
1863 /* Sample rate verified (Gallop : https://youtu.be/aozd0dbPzOw) */
1864 m_soundcpu->set_periodic_int(FUNC(m72_state::fake_nmi), attotime::from_hz(MASTER_CLOCK/8/512));
1865 /* IRQs are generated by main Z80 and YM2151 */
1866 }
1867
m72_8751(machine_config & config)1868 void m72_state::m72_8751(machine_config &config)
1869 {
1870 m72_base(config);
1871 m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::m72_protected_map);
1872 m_maincpu->set_addrmap(AS_IO, &m72_state::m72_protected_portmap);
1873
1874 m_soundcpu->set_addrmap(AS_IO, &m72_state::sound_protected_portmap);
1875
1876 MB8421_MB8431_16BIT(config, m_dpram);
1877 //m_dpram->intl_callback().set(m_upd71059c, FUNC(pic8259_device::ir3_w)); // not actually used?
1878 m_dpram->intr_callback().set_inputline("mcu", MCS51_INT0_LINE);
1879
1880 generic_latch_8_device &mculatch(GENERIC_LATCH_8(config, "mculatch"));
1881 mculatch.data_pending_callback().set_inputline(m_mcu, MCS51_INT1_LINE);
1882 mculatch.set_separate_acknowledge(true);
1883
1884 GENERIC_LATCH_8(config, "soundlatch2").data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI);
1885
1886 i8751_device &mcu(I8751(config, m_mcu, XTAL(8'000'000))); /* Uses its own XTAL */
1887 mcu.set_addrmap(AS_IO, &m72_state::mcu_io_map);
1888 mcu.port_out_cb<1>().set(m_dac, FUNC(dac_byte_interface::write));
1889 }
1890
m72_airduel(machine_config & config)1891 void m72_state::m72_airduel(machine_config &config)
1892 {
1893 m72_8751(config);
1894 m_maincpu->set_addrmap(AS_IO, &m72_state::m72_airduel_portmap);
1895 }
1896
imgfightb(machine_config & config)1897 void m72_state::imgfightb(machine_config &config)
1898 {
1899 m72_8751(config);
1900 i80c31_device &mcu(I80C31(config.replace(), m_mcu, XTAL(7'200'000)));
1901 mcu.set_addrmap(AS_PROGRAM, &m72_state::i80c31_mem_map);
1902 mcu.set_addrmap(AS_IO, &m72_state::mcu_io_map);
1903
1904 // TODO: uses 6116 type RAM instead of MB8421 and MB8431
1905 }
1906
rtype(machine_config & config)1907 void m72_state::rtype(machine_config &config)
1908 {
1909 m72_base(config);
1910 m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::rtype_map);
1911 m_soundcpu->set_addrmap(AS_IO, &m72_state::rtype_sound_portmap);
1912
1913 config.device_remove("m72");
1914 config.device_remove("dac");
1915 }
1916
m72_xmultipl(machine_config & config)1917 void m72_state::m72_xmultipl(machine_config &config)
1918 {
1919 m72_8751(config);
1920 m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::xmultiplm72_map);
1921
1922 /* Sample rate verified (Gallop : https://youtu.be/aozd0dbPzOw) */
1923 m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(MASTER_CLOCK/8/512));
1924 /* IRQs are generated by main Z80 and YM2151 */
1925 }
1926
m72_dbreedw(machine_config & config)1927 void m72_state::m72_dbreedw(machine_config &config)
1928 {
1929 m72_base(config);
1930 m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::dbreedwm72_map);
1931
1932 /* Sample rate verified (Gallop : https://youtu.be/aozd0dbPzOw) */
1933 m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(MASTER_CLOCK/8/512));
1934 /* IRQs are generated by main Z80 and YM2151 */
1935 }
1936
m72_dbreed(machine_config & config)1937 void m72_state::m72_dbreed(machine_config &config)
1938 {
1939 m72_8751(config);
1940 m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::dbreedm72_map);
1941
1942 /* Sample rate verified (Gallop : https://youtu.be/aozd0dbPzOw) */
1943 m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(MASTER_CLOCK/8/512));
1944 /* IRQs are generated by main Z80 and YM2151 */
1945 }
1946
1947
1948
1949
1950 /****************************************** M81 ***********************************************/
1951
1952 // M81 is closest to M72
m81_hharry(machine_config & config)1953 void m72_state::m81_hharry(machine_config &config)
1954 {
1955 m72_base(config);
1956 m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::hharry_map);
1957 m_maincpu->set_addrmap(AS_IO, &m72_state::m81_portmap);
1958
1959 m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map);
1960 m_soundcpu->set_addrmap(AS_IO, &m72_state::rtype2_sound_portmap);
1961 m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(MASTER_CLOCK/8/512));
1962
1963 MCFG_VIDEO_START_OVERRIDE(m72_state,hharry)
1964
1965 m_screen->set_screen_update(FUNC(m72_state::screen_update_m81));
1966 }
1967
m81_xmultipl(machine_config & config)1968 void m72_state::m81_xmultipl(machine_config &config)
1969 {
1970 m81_hharry(config);
1971 /* basic machine hardware */
1972 m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::xmultipl_map);
1973
1974 MCFG_VIDEO_START_OVERRIDE(m72_state,xmultipl) // different offsets
1975 }
1976
m81_dbreed(machine_config & config)1977 void m72_state::m81_dbreed(machine_config &config)
1978 {
1979 m81_xmultipl(config);
1980 m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::dbreed_map);
1981 }
1982
1983 /****************************************** M84 ***********************************************/
1984
1985 // M84
rtype2(machine_config & config)1986 void m72_state::rtype2(machine_config &config)
1987 {
1988 /* basic machine hardware */
1989 V30(config, m_maincpu, MASTER_CLOCK/2/2); /* 16 MHz external freq (8MHz internal) */
1990 m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::rtype2_map);
1991 m_maincpu->set_addrmap(AS_IO, &m72_state::m84_portmap);
1992 m_maincpu->set_irq_acknowledge_callback("upd71059c", FUNC(pic8259_device::inta_cb));
1993
1994 Z80(config, m_soundcpu, SOUND_CLOCK);
1995 m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map);
1996 m_soundcpu->set_addrmap(AS_IO, &m72_state::rtype2_sound_portmap);
1997 m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(MASTER_CLOCK/8/512)); /* verified (https://youtu.be/lUszf9Ong7U) */
1998 /* IRQs are generated by main Z80 and YM2151 */
1999
2000 PIC8259(config, m_upd71059c, 0);
2001 m_upd71059c->out_int_callback().set_inputline(m_maincpu, 0);
2002
2003 /* video hardware */
2004 BUFFERED_SPRITERAM16(config, m_spriteram);
2005
2006 GFXDECODE(config, m_gfxdecode, m_palette, gfx_rtype2);
2007 PALETTE(config, m_palette).set_entries(512);
2008
2009 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
2010 m_screen->set_raw(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256);
2011 m_screen->set_screen_update(FUNC(m72_state::screen_update));
2012 m_screen->set_palette(m_palette);
2013
2014 MCFG_VIDEO_START_OVERRIDE(m72_state,rtype2)
2015
2016 m72_audio_chips(config);
2017 }
2018
2019 // not m72, different video system (less tiles regions?) (M84? M82?)
hharryu(machine_config & config)2020 void m72_state::hharryu(machine_config &config)
2021 {
2022 rtype2(config);
2023 /* basic machine hardware */
2024 m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::hharryu_map);
2025
2026 MCFG_VIDEO_START_OVERRIDE(m72_state,hharryu)
2027 }
2028
2029
2030 // M84
2031
cosmccop(machine_config & config)2032 void m72_state::cosmccop(machine_config &config)
2033 {
2034 /* basic machine hardware */
2035 V35(config, m_maincpu, MASTER_CLOCK/2);
2036 m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::kengo_map);
2037 m_maincpu->set_addrmap(AS_IO, &m72_state::m84_v33_portmap);
2038
2039 Z80(config, m_soundcpu, SOUND_CLOCK);
2040 m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map);
2041 m_soundcpu->set_addrmap(AS_IO, &m72_state::rtype2_sound_portmap);
2042 m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(MASTER_CLOCK/8/512)); /* verified (https://youtu.be/Sol2Yq2S5hQ) */
2043 /* IRQs are generated by main Z80 and YM2151 */
2044
2045 MCFG_MACHINE_START_OVERRIDE(m72_state,kengo)
2046 MCFG_MACHINE_RESET_OVERRIDE(m72_state,kengo)
2047
2048 // upd71059c isn't needed because the V35 has its own IRQ controller
2049
2050 /* video hardware */
2051 BUFFERED_SPRITERAM16(config, m_spriteram);
2052
2053 GFXDECODE(config, m_gfxdecode, m_palette, gfx_rtype2);
2054 PALETTE(config, m_palette).set_entries(512);
2055
2056 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
2057 m_screen->set_raw(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256);
2058 m_screen->set_screen_update(FUNC(m72_state::screen_update));
2059 m_screen->set_palette(m_palette);
2060
2061 MCFG_VIDEO_START_OVERRIDE(m72_state,hharryu)
2062
2063 m72_audio_chips(config);
2064 }
2065
kengo(machine_config & config)2066 void m72_state::kengo(machine_config &config)
2067 {
2068 cosmccop(config);
2069 subdevice<v35_device>("maincpu")->set_decryption_table(gunforce_decryption_table);
2070 }
2071
imgfight(machine_config & config)2072 void m72_state::imgfight(machine_config &config)
2073 {
2074 m72_8751(config);
2075 MCFG_VIDEO_START_OVERRIDE(m72_state,imgfight)
2076 }
2077
nspiritj(machine_config & config)2078 void m72_state::nspiritj(machine_config &config)
2079 {
2080 m72_8751(config);
2081 MCFG_VIDEO_START_OVERRIDE(m72_state,nspiritj)
2082 }
2083
mrheli(machine_config & config)2084 void m72_state::mrheli(machine_config &config)
2085 {
2086 m72_8751(config);
2087 MCFG_VIDEO_START_OVERRIDE(m72_state,mrheli)
2088 }
2089
2090 /****************************************** M82 ***********************************************/
2091
2092 /* Major Title uses
2093
2094 M82-A-A as the top board
2095 M82-B-A and as the bottom board
2096
2097 */
m82(machine_config & config)2098 void m72_state::m82(machine_config &config)
2099 {
2100 /* basic machine hardware */
2101 V30(config, m_maincpu, MASTER_CLOCK/2/2); /* 16 MHz external freq (8MHz internal) */
2102 m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::m82_map);
2103 m_maincpu->set_addrmap(AS_IO, &m72_state::m82_portmap);
2104 m_maincpu->set_irq_acknowledge_callback("upd71059c", FUNC(pic8259_device::inta_cb));
2105
2106 Z80(config, m_soundcpu, SOUND_CLOCK);
2107 m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map);
2108 m_soundcpu->set_addrmap(AS_IO, &m72_state::rtype2_sound_portmap);
2109 m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(MASTER_CLOCK/8/512)); /* verified (https://youtu.be/lLQDPe-8Ha0) */
2110 /* IRQs are generated by main Z80 and YM2151 */
2111
2112 PIC8259(config, m_upd71059c, 0);
2113 m_upd71059c->out_int_callback().set_inputline(m_maincpu, 0);
2114
2115 /* video hardware */
2116 BUFFERED_SPRITERAM16(config, m_spriteram);
2117
2118 GFXDECODE(config, m_gfxdecode, m_palette, gfx_majtitle);
2119 PALETTE(config, m_palette).set_entries(512);
2120
2121 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
2122 m_screen->set_raw(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256);
2123 m_screen->set_screen_update(FUNC(m72_state::screen_update_m82));
2124 m_screen->set_palette(m_palette);
2125
2126 MCFG_VIDEO_START_OVERRIDE(m72_state,m82)
2127
2128 m72_audio_chips(config);
2129 }
2130
2131
2132 /* Pound for Pound uses
2133 M85-A-B / M85-B
2134 */
2135
poundfor(machine_config & config)2136 void m72_state::poundfor(machine_config &config)
2137 {
2138 /* basic machine hardware */
2139 V30(config, m_maincpu, MASTER_CLOCK/2/2); /* 16 MHz external freq (8MHz internal) */
2140 m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::rtype2_map);
2141 m_maincpu->set_addrmap(AS_IO, &m72_state::poundfor_portmap);
2142 m_maincpu->set_irq_acknowledge_callback("upd71059c", FUNC(pic8259_device::inta_cb));
2143
2144 Z80(config, m_soundcpu, SOUND_CLOCK);
2145 m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map);
2146 m_soundcpu->set_addrmap(AS_IO, &m72_state::poundfor_sound_portmap);
2147 m_soundcpu->set_periodic_int(FUNC(m72_state::fake_nmi), attotime::from_hz(MASTER_CLOCK/8/512)); /* clocked by V1? (Vigilante) */
2148 /* IRQs are generated by main Z80 and YM2151 */
2149
2150 PIC8259(config, m_upd71059c, 0);
2151 m_upd71059c->out_int_callback().set_inputline(m_maincpu, 0);
2152
2153 UPD4701A(config, m_upd4701[0]);
2154 m_upd4701[0]->set_portx_tag("TRACK0_X");
2155 m_upd4701[0]->set_porty_tag("TRACK0_Y");
2156
2157 UPD4701A(config, m_upd4701[1]);
2158 m_upd4701[1]->set_portx_tag("TRACK1_X");
2159 m_upd4701[1]->set_porty_tag("TRACK1_Y");
2160
2161 /* video hardware */
2162 BUFFERED_SPRITERAM16(config, m_spriteram);
2163
2164 GFXDECODE(config, m_gfxdecode, m_palette, gfx_rtype2);
2165 PALETTE(config, m_palette).set_entries(512);
2166
2167 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
2168 m_screen->set_raw(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256);
2169 m_screen->set_screen_update(FUNC(m72_state::screen_update));
2170 m_screen->set_palette(m_palette);
2171
2172 MCFG_VIDEO_START_OVERRIDE(m72_state,poundfor)
2173
2174 m72_audio_chips(config);
2175 }
2176
lohtb(machine_config & config)2177 void m72_state::lohtb(machine_config &config) // almost all to be verified
2178 {
2179 /* basic machine hardware */
2180 V30(config, m_maincpu, MASTER_CLOCK/2/2); /* 16 MHz external freq (8MHz internal) */
2181 m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::lohtb_map);
2182 m_maincpu->set_addrmap(AS_IO, &m72_state::lohtb_portmap);
2183
2184 Z80(config, m_soundcpu, SOUND_CLOCK);
2185 m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map);
2186 m_soundcpu->set_addrmap(AS_IO, &m72_state::sound_portmap);
2187
2188 MCFG_MACHINE_START_OVERRIDE(m72_state,kengo)
2189 MCFG_MACHINE_RESET_OVERRIDE(m72_state,kengo)
2190
2191 /* video hardware */
2192 BUFFERED_SPRITERAM16(config, m_spriteram);
2193
2194 GFXDECODE(config, m_gfxdecode, m_palette, gfx_m72);
2195 PALETTE(config, m_palette).set_entries(512);
2196
2197 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
2198 m_screen->set_raw(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256);
2199 m_screen->set_screen_update(FUNC(m72_state::screen_update));
2200 m_screen->set_palette(m_palette);
2201 m_screen->screen_vblank().set_inputline(m_maincpu, 0);
2202
2203 MCFG_VIDEO_START_OVERRIDE(m72_state,m72)
2204
2205 m72_audio_chips(config);
2206 }
2207
2208 /***************************************************************************
2209
2210 Game driver(s)
2211
2212 ***************************************************************************/
2213
2214 ROM_START( rtype )
2215 ROM_REGION( 0x100000, "maincpu", 0 ) // Roms located on the M72-ROM-C rom board
2216 ROM_LOAD16_BYTE( "rt_r-h0-b.1b", 0x00001, 0x10000, CRC(591c7754) SHA1(0b9d5474bc5963224923126cf84d74a39b8270cc) )
2217 ROM_LOAD16_BYTE( "rt_r-l0-b.3b", 0x00000, 0x10000, CRC(a1928df0) SHA1(3001c1b87cd1d441ba1226fb5b9dd6268458c0e8) )
2218 ROM_LOAD16_BYTE( "rt_r-h1-b.1c", 0x20001, 0x10000, CRC(a9d71eca) SHA1(008d1dc289df2ae2ba8f93d319c2b2c108cb9b89) )
2219 ROM_RELOAD( 0xe0001, 0x10000 )
2220 ROM_LOAD16_BYTE( "rt_r-l1-b.3c", 0x20000, 0x10000, CRC(0df3573d) SHA1(0144c846fd0bdb3e4d790f6cb7bb64829e931b76) )
2221 ROM_RELOAD( 0xe0000, 0x10000 )
2222
2223 ROM_REGION( 0x80000, "sprites", 0 ) // Roms located on the M72-ROM-C rom board
2224 ROM_LOAD( "rt_r-00.1h", 0x00000, 0x10000, CRC(dad53bc0) SHA1(1e3bc498861946278a0b1fe24259f5d224e265d7) ) // sprites
2225 ROM_LOAD( "rt_r-01.1j", 0x10000, 0x08000, CRC(5e441e7f) SHA1(6741eb7f2d9d985b5a89eefc73ea44c3e38de6f7) )
2226 ROM_RELOAD( 0x18000, 0x08000 )
2227 ROM_LOAD( "rt_r-10.1k", 0x20000, 0x10000, CRC(d6a66298) SHA1(d2873d05aa3b257e7699c188880ac3daad672fa5) )
2228 ROM_LOAD( "rt_r-11.1l", 0x30000, 0x08000, CRC(791df4f8) SHA1(5239a97222212ac9c019177771cb2b5096b7bc17) )
2229 ROM_RELOAD( 0x38000, 0x08000 )
2230 ROM_LOAD( "rt_r-20.3h", 0x40000, 0x10000, CRC(fc247c8a) SHA1(01cf0a60f47fa5e2ed430a3f075e69e6cb762a48) )
2231 ROM_LOAD( "rt_r-21.3j", 0x50000, 0x08000, CRC(ed793841) SHA1(7e55a9a11fcd989db39bce6be48821b747c7d97f) )
2232 ROM_RELOAD( 0x58000, 0x08000 )
2233 ROM_LOAD( "rt_r-30.3k", 0x60000, 0x10000, CRC(eb02a1cb) SHA1(60a394ab53afdcbbf9e88083b8dbe8c897170d77) )
2234 ROM_LOAD( "rt_r-31.3l", 0x70000, 0x08000, CRC(8558355d) SHA1(b5467d1f22f6e5f90c5d8a8ac2d55974f287d589) )
2235 ROM_RELOAD( 0x78000, 0x08000 )
2236
2237 ROM_REGION( 0x20000, "gfx2", 0 ) // Roms located on the M72-B-D rom board
2238 ROM_LOAD( "rt_b-a0.3c", 0x00000, 0x08000, CRC(4e212fb0) SHA1(687061ecade2ebd0bd1343c9c4a831791853f79c) ) // tiles #1
2239 ROM_LOAD( "rt_b-a1.3d", 0x08000, 0x08000, CRC(8a65bdff) SHA1(130bf6af521f13247a739a95eab4bdaa24b2ac10) )
2240 ROM_LOAD( "rt_b-a2.3a", 0x10000, 0x08000, CRC(5a4ae5b9) SHA1(95c3b64f50e6f673b2bf9b40642c152da5009d25) )
2241 ROM_LOAD( "rt_b-a3.3e", 0x18000, 0x08000, CRC(73327606) SHA1(9529ecdedd30e2a0400fb1083117992cc18b5158) )
2242
2243 ROM_REGION( 0x20000, "gfx3", 0 ) // Roms located on the M72-B-D rom board
2244 ROM_LOAD( "rt_b-b0.3j", 0x00000, 0x08000, CRC(a7b17491) SHA1(5b390770e56ba2d35e108534d7eda8dca996fdf7) ) // tiles #2
2245 ROM_LOAD( "rt_b-b1.3k", 0x08000, 0x08000, CRC(b9709686) SHA1(700905a3e9661e0874939f54da2909e1396ce596) )
2246 ROM_LOAD( "rt_b-b2.3h", 0x10000, 0x08000, CRC(433b229a) SHA1(14222eaa3e67e5a7f80eafcf22bac4eb2d485a9a) )
2247 ROM_LOAD( "rt_b-b3.3f", 0x18000, 0x08000, CRC(ad89b072) SHA1(e2683d0e7415f3abd147e518bf6c87e44744cd4f) )
2248 ROM_END
2249
2250 ROM_START( rtypej )
2251 ROM_REGION( 0x100000, "maincpu", 0 ) // Roms located on the M72-ROM-C rom board
2252 ROM_LOAD16_BYTE( "rt_r-h0-.1b", 0x00001, 0x10000, CRC(c2940df2) SHA1(cbccd205ef81a0e39990a34d46e3f7d52b62e385) )
2253 ROM_LOAD16_BYTE( "rt_r-l0-.3b", 0x00000, 0x10000, CRC(858cc0f6) SHA1(7a256fe3aa3a96e161dd485a90b18c421b61458b) )
2254 ROM_LOAD16_BYTE( "rt_r-h1-.1c", 0x20001, 0x10000, CRC(5bcededa) SHA1(4ada3fd207fa57751f8e3d885bc91b374e27035d) )
2255 ROM_RELOAD( 0xe0001, 0x10000 )
2256 ROM_LOAD16_BYTE( "rt_r-l1-.3c", 0x20000, 0x10000, CRC(4821141c) SHA1(df6cf04c3ecd04b6f27a96871848904575414dae) )
2257 ROM_RELOAD( 0xe0000, 0x10000 )
2258
2259 ROM_REGION( 0x80000, "sprites", 0 ) // Roms located on the M72-ROM-C rom board
2260 ROM_LOAD( "rt_r-00.1h", 0x00000, 0x10000, CRC(dad53bc0) SHA1(1e3bc498861946278a0b1fe24259f5d224e265d7) ) // sprites
2261 ROM_LOAD( "rt_r-01.1j", 0x10000, 0x08000, CRC(5e441e7f) SHA1(6741eb7f2d9d985b5a89eefc73ea44c3e38de6f7) )
2262 ROM_RELOAD( 0x18000, 0x08000 )
2263 ROM_LOAD( "rt_r-10.1k", 0x20000, 0x10000, CRC(d6a66298) SHA1(d2873d05aa3b257e7699c188880ac3daad672fa5) )
2264 ROM_LOAD( "rt_r-11.1l", 0x30000, 0x08000, CRC(791df4f8) SHA1(5239a97222212ac9c019177771cb2b5096b7bc17) )
2265 ROM_RELOAD( 0x38000, 0x08000 )
2266 ROM_LOAD( "rt_r-20.3h", 0x40000, 0x10000, CRC(fc247c8a) SHA1(01cf0a60f47fa5e2ed430a3f075e69e6cb762a48) )
2267 ROM_LOAD( "rt_r-21.3j", 0x50000, 0x08000, CRC(ed793841) SHA1(7e55a9a11fcd989db39bce6be48821b747c7d97f) )
2268 ROM_RELOAD( 0x58000, 0x08000 )
2269 ROM_LOAD( "rt_r-30.3k", 0x60000, 0x10000, CRC(eb02a1cb) SHA1(60a394ab53afdcbbf9e88083b8dbe8c897170d77) )
2270 ROM_LOAD( "rt_r-31.3l", 0x70000, 0x08000, CRC(8558355d) SHA1(b5467d1f22f6e5f90c5d8a8ac2d55974f287d589) )
2271 ROM_RELOAD( 0x78000, 0x08000 )
2272
2273 ROM_REGION( 0x20000, "gfx2", 0 ) // Roms located on the M72-B-D rom board
2274 ROM_LOAD( "rt_b-a0.3c", 0x00000, 0x08000, CRC(4e212fb0) SHA1(687061ecade2ebd0bd1343c9c4a831791853f79c) ) // tiles #1
2275 ROM_LOAD( "rt_b-a1.3d", 0x08000, 0x08000, CRC(8a65bdff) SHA1(130bf6af521f13247a739a95eab4bdaa24b2ac10) )
2276 ROM_LOAD( "rt_b-a2.3a", 0x10000, 0x08000, CRC(5a4ae5b9) SHA1(95c3b64f50e6f673b2bf9b40642c152da5009d25) )
2277 ROM_LOAD( "rt_b-a3.3e", 0x18000, 0x08000, CRC(73327606) SHA1(9529ecdedd30e2a0400fb1083117992cc18b5158) )
2278
2279 ROM_REGION( 0x20000, "gfx3", 0 ) // Roms located on the M72-B-D rom board
2280 ROM_LOAD( "rt_b-b0.3j", 0x00000, 0x08000, CRC(a7b17491) SHA1(5b390770e56ba2d35e108534d7eda8dca996fdf7) ) // tiles #2
2281 ROM_LOAD( "rt_b-b1.3k", 0x08000, 0x08000, CRC(b9709686) SHA1(700905a3e9661e0874939f54da2909e1396ce596) )
2282 ROM_LOAD( "rt_b-b2.3h", 0x10000, 0x08000, CRC(433b229a) SHA1(14222eaa3e67e5a7f80eafcf22bac4eb2d485a9a) )
2283 ROM_LOAD( "rt_b-b3.3f", 0x18000, 0x08000, CRC(ad89b072) SHA1(e2683d0e7415f3abd147e518bf6c87e44744cd4f) )
2284 ROM_END
2285
2286 ROM_START( rtypejp )
2287 ROM_REGION( 0x100000, "maincpu", 0 ) // Roms located on the M72-ROM-C rom board
2288 ROM_LOAD16_BYTE( "db_b1.bin", 0x00001, 0x10000, CRC(c1865141) SHA1(3302b6529aa903d81eb2196d745eb4f7f8316857) )
2289 ROM_LOAD16_BYTE( "db_a1.bin", 0x00000, 0x10000, CRC(5ad2bd90) SHA1(0937dbbdf0cbce2e81cecf4d770bbd8c6bd82801) )
2290 ROM_LOAD16_BYTE( "db_b2.bin", 0x20001, 0x10000, CRC(b4f6407e) SHA1(4a00d8e104c580900b4feb318dd162b77b71d0a5) )
2291 ROM_RELOAD( 0xe0001, 0x10000 )
2292 ROM_LOAD16_BYTE( "db_a2.bin", 0x20000, 0x10000, CRC(6098d86f) SHA1(c6c9c1c2c30d5f190c40e000004bd21606efb8b0) )
2293 ROM_RELOAD( 0xe0000, 0x10000 )
2294
2295 ROM_REGION( 0x80000, "sprites", 0 ) // Roms located on the M72-ROM-C rom board
2296 ROM_LOAD( "rt_r-00.1h", 0x00000, 0x10000, CRC(dad53bc0) SHA1(1e3bc498861946278a0b1fe24259f5d224e265d7) ) // sprites
2297 ROM_LOAD( "rt_r-01.1j", 0x10000, 0x08000, CRC(5e441e7f) SHA1(6741eb7f2d9d985b5a89eefc73ea44c3e38de6f7) )
2298 ROM_RELOAD( 0x18000, 0x08000 )
2299 ROM_LOAD( "rt_r-10.1k", 0x20000, 0x10000, CRC(d6a66298) SHA1(d2873d05aa3b257e7699c188880ac3daad672fa5) )
2300 ROM_LOAD( "rt_r-11.1l", 0x30000, 0x08000, CRC(791df4f8) SHA1(5239a97222212ac9c019177771cb2b5096b7bc17) )
2301 ROM_RELOAD( 0x38000, 0x08000 )
2302 ROM_LOAD( "rt_r-20.3h", 0x40000, 0x10000, CRC(fc247c8a) SHA1(01cf0a60f47fa5e2ed430a3f075e69e6cb762a48) )
2303 ROM_LOAD( "rt_r-21.3j", 0x50000, 0x08000, CRC(ed793841) SHA1(7e55a9a11fcd989db39bce6be48821b747c7d97f) )
2304 ROM_RELOAD( 0x58000, 0x08000 )
2305 ROM_LOAD( "rt_r-30.3k", 0x60000, 0x10000, CRC(eb02a1cb) SHA1(60a394ab53afdcbbf9e88083b8dbe8c897170d77) )
2306 ROM_LOAD( "rt_r-31.3l", 0x70000, 0x08000, CRC(8558355d) SHA1(b5467d1f22f6e5f90c5d8a8ac2d55974f287d589) )
2307 ROM_RELOAD( 0x78000, 0x08000 )
2308
2309 ROM_REGION( 0x20000, "gfx2", 0 ) // Roms located on the M72-B-D rom board
2310 ROM_LOAD( "rt_b-a0.3c", 0x00000, 0x08000, CRC(4e212fb0) SHA1(687061ecade2ebd0bd1343c9c4a831791853f79c) ) // tiles #1
2311 ROM_LOAD( "rt_b-a1.3d", 0x08000, 0x08000, CRC(8a65bdff) SHA1(130bf6af521f13247a739a95eab4bdaa24b2ac10) )
2312 ROM_LOAD( "rt_b-a2.3a", 0x10000, 0x08000, CRC(5a4ae5b9) SHA1(95c3b64f50e6f673b2bf9b40642c152da5009d25) )
2313 ROM_LOAD( "rt_b-a3.3e", 0x18000, 0x08000, CRC(73327606) SHA1(9529ecdedd30e2a0400fb1083117992cc18b5158) )
2314
2315 ROM_REGION( 0x20000, "gfx3", 0 ) // Roms located on the M72-B-D rom board
2316 ROM_LOAD( "rt_b-b0.3j", 0x00000, 0x08000, CRC(a7b17491) SHA1(5b390770e56ba2d35e108534d7eda8dca996fdf7) ) // tiles #2
2317 ROM_LOAD( "rt_b-b1.3k", 0x08000, 0x08000, CRC(b9709686) SHA1(700905a3e9661e0874939f54da2909e1396ce596) )
2318 ROM_LOAD( "rt_b-b2.3h", 0x10000, 0x08000, CRC(433b229a) SHA1(14222eaa3e67e5a7f80eafcf22bac4eb2d485a9a) )
2319 ROM_LOAD( "rt_b-b3.3f", 0x18000, 0x08000, CRC(ad89b072) SHA1(e2683d0e7415f3abd147e518bf6c87e44744cd4f) )
2320 ROM_END
2321
2322 ROM_START( rtypeu )
2323 ROM_REGION( 0x100000, "maincpu", 0 ) // Roms located on the M72-ROM-C rom board
2324 ROM_LOAD16_BYTE( "rt_r-h0-a.1b", 0x00001, 0x10000, CRC(36008a4e) SHA1(832006cb14a34e1671e305cc8ae606c3c6185a6a) )
2325 ROM_LOAD16_BYTE( "rt_r-l0-a.3b", 0x00000, 0x10000, CRC(4aaa668e) SHA1(87059460b59f43f2ca8cd959d76f721facd9de96) )
2326 ROM_LOAD16_BYTE( "rt_r-h1-a.1c", 0x20001, 0x10000, CRC(7ebb2a53) SHA1(1466df19888c3374847eb77f702060647e49d6ad) )
2327 ROM_RELOAD( 0xe0001, 0x10000 )
2328 ROM_LOAD16_BYTE( "rt_r-l1-a.3c", 0x20000, 0x10000, CRC(c28b103b) SHA1(f294a23c3917b97812eb4c7f3a99253fd0cbb7ea) )
2329 ROM_RELOAD( 0xe0000, 0x10000 )
2330
2331 ROM_REGION( 0x80000, "sprites", 0 ) // Roms located on the M72-ROM-C rom board
2332 ROM_LOAD( "rt_r-00.1h", 0x00000, 0x10000, CRC(dad53bc0) SHA1(1e3bc498861946278a0b1fe24259f5d224e265d7) ) // sprites
2333 ROM_LOAD( "rt_r-01.1j", 0x10000, 0x08000, CRC(5e441e7f) SHA1(6741eb7f2d9d985b5a89eefc73ea44c3e38de6f7) )
2334 ROM_RELOAD( 0x18000, 0x08000 )
2335 ROM_LOAD( "rt_r-10.1k", 0x20000, 0x10000, CRC(d6a66298) SHA1(d2873d05aa3b257e7699c188880ac3daad672fa5) )
2336 ROM_LOAD( "rt_r-11.1l", 0x30000, 0x08000, CRC(791df4f8) SHA1(5239a97222212ac9c019177771cb2b5096b7bc17) )
2337 ROM_RELOAD( 0x38000, 0x08000 )
2338 ROM_LOAD( "rt_r-20.3h", 0x40000, 0x10000, CRC(fc247c8a) SHA1(01cf0a60f47fa5e2ed430a3f075e69e6cb762a48) )
2339 ROM_LOAD( "rt_r-21.3j", 0x50000, 0x08000, CRC(ed793841) SHA1(7e55a9a11fcd989db39bce6be48821b747c7d97f) )
2340 ROM_RELOAD( 0x58000, 0x08000 )
2341 ROM_LOAD( "rt_r-30.3k", 0x60000, 0x10000, CRC(eb02a1cb) SHA1(60a394ab53afdcbbf9e88083b8dbe8c897170d77) )
2342 ROM_LOAD( "rt_r-31.3l", 0x70000, 0x08000, CRC(8558355d) SHA1(b5467d1f22f6e5f90c5d8a8ac2d55974f287d589) )
2343 ROM_RELOAD( 0x78000, 0x08000 )
2344
2345 ROM_REGION( 0x20000, "gfx2", 0 ) // Roms located on the M72-B-D rom board
2346 ROM_LOAD( "rt_b-a0.3c", 0x00000, 0x08000, CRC(4e212fb0) SHA1(687061ecade2ebd0bd1343c9c4a831791853f79c) ) // tiles #1
2347 ROM_LOAD( "rt_b-a1.3d", 0x08000, 0x08000, CRC(8a65bdff) SHA1(130bf6af521f13247a739a95eab4bdaa24b2ac10) )
2348 ROM_LOAD( "rt_b-a2.3a", 0x10000, 0x08000, CRC(5a4ae5b9) SHA1(95c3b64f50e6f673b2bf9b40642c152da5009d25) )
2349 ROM_LOAD( "rt_b-a3.3e", 0x18000, 0x08000, CRC(73327606) SHA1(9529ecdedd30e2a0400fb1083117992cc18b5158) )
2350
2351 ROM_REGION( 0x20000, "gfx3", 0 ) // Roms located on the M72-B-D rom board
2352 ROM_LOAD( "rt_b-b0.3j", 0x00000, 0x08000, CRC(a7b17491) SHA1(5b390770e56ba2d35e108534d7eda8dca996fdf7) ) // tiles #2
2353 ROM_LOAD( "rt_b-b1.3k", 0x08000, 0x08000, CRC(b9709686) SHA1(700905a3e9661e0874939f54da2909e1396ce596) )
2354 ROM_LOAD( "rt_b-b2.3h", 0x10000, 0x08000, CRC(433b229a) SHA1(14222eaa3e67e5a7f80eafcf22bac4eb2d485a9a) )
2355 ROM_LOAD( "rt_b-b3.3f", 0x18000, 0x08000, CRC(ad89b072) SHA1(e2683d0e7415f3abd147e518bf6c87e44744cd4f) )
2356
2357 ROM_REGION( 0x0200, "proms", 0 ) // Located on M72-A-C CPU/Sound board
2358 ROM_LOAD( "m72_a-8l-.ic66", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10
2359 ROM_LOAD( "m72_a-9l-.ic75", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10
2360
2361 ROM_REGION( 0x0003, "plds", 0 )
2362 // Located on M72-ROM-C rom board
2363 ROM_LOAD( "m72_r-3a-.bin", 0x0000, 0x0001, NO_DUMP ) // PAL16L8 at 3A
2364 // Located on M72-A-C CPU/Sound board
2365 ROM_LOAD( "m72_a-3d-.bin", 0x0000, 0x0001, NO_DUMP ) // PAL16L8 at IC11
2366 ROM_LOAD( "m72_a-4d-.bin", 0x0000, 0x0001, NO_DUMP ) // PAL16L8 at IC19
2367 ROM_END
2368
2369 ROM_START( rtypeb )
2370 ROM_REGION( 0x100000, "maincpu", 0 ) // Roms located on the M72-ROM-C rom board
2371 ROM_LOAD16_BYTE( "7.512", 0x00001, 0x10000, CRC(eacc8024) SHA1(6bcf1d4ea182b7341eac736d2a5d5f70deec0758) )
2372 ROM_LOAD16_BYTE( "1.512", 0x00000, 0x10000, CRC(2e5fe27b) SHA1(a3364be5ab9c67aaa2152baf39ea12c571eca3cc) )
2373 ROM_LOAD16_BYTE( "8.512", 0x20001, 0x10000, CRC(22cc4950) SHA1(ada5cffc13c38391a334411632237166a6be4938) )
2374 ROM_RELOAD( 0xe0001, 0x10000 )
2375 ROM_LOAD16_BYTE( "2.512", 0x20000, 0x10000, CRC(ada7b90e) SHA1(c9d2caed95b95d1c1718a10766bc88b2f8f51619) )
2376 ROM_RELOAD( 0xe0000, 0x10000 )
2377
2378 ROM_REGION( 0x80000, "sprites", 0 ) // Roms located on the M72-ROM-C rom board
2379 ROM_LOAD( "rt_r-00.1h", 0x00000, 0x10000, CRC(dad53bc0) SHA1(1e3bc498861946278a0b1fe24259f5d224e265d7) ) // sprites
2380 ROM_LOAD( "rt_r-01.1j", 0x10000, 0x08000, CRC(5e441e7f) SHA1(6741eb7f2d9d985b5a89eefc73ea44c3e38de6f7) )
2381 ROM_RELOAD( 0x18000, 0x08000 )
2382 ROM_LOAD( "rt_r-10.1k", 0x20000, 0x10000, CRC(d6a66298) SHA1(d2873d05aa3b257e7699c188880ac3daad672fa5) )
2383 ROM_LOAD( "rt_r-11.1l", 0x30000, 0x08000, CRC(791df4f8) SHA1(5239a97222212ac9c019177771cb2b5096b7bc17) )
2384 ROM_RELOAD( 0x38000, 0x08000 )
2385 ROM_LOAD( "rt_r-20.3h", 0x40000, 0x10000, CRC(fc247c8a) SHA1(01cf0a60f47fa5e2ed430a3f075e69e6cb762a48) )
2386 ROM_LOAD( "rt_r-21.3j", 0x50000, 0x08000, CRC(ed793841) SHA1(7e55a9a11fcd989db39bce6be48821b747c7d97f) )
2387 ROM_RELOAD( 0x58000, 0x08000 )
2388 ROM_LOAD( "rt_r-30.3k", 0x60000, 0x10000, CRC(eb02a1cb) SHA1(60a394ab53afdcbbf9e88083b8dbe8c897170d77) )
2389 ROM_LOAD( "rt_r-31.3l", 0x70000, 0x08000, CRC(8558355d) SHA1(b5467d1f22f6e5f90c5d8a8ac2d55974f287d589) )
2390 ROM_RELOAD( 0x78000, 0x08000 )
2391
2392 ROM_REGION( 0x20000, "gfx2", 0 ) // Roms located on the M72-B-D rom board
2393 ROM_LOAD( "rt_b-a0.3c", 0x00000, 0x08000, CRC(4e212fb0) SHA1(687061ecade2ebd0bd1343c9c4a831791853f79c) ) // tiles #1
2394 ROM_LOAD( "rt_b-a1.3d", 0x08000, 0x08000, CRC(8a65bdff) SHA1(130bf6af521f13247a739a95eab4bdaa24b2ac10) )
2395 ROM_LOAD( "rt_b-a2.3a", 0x10000, 0x08000, CRC(5a4ae5b9) SHA1(95c3b64f50e6f673b2bf9b40642c152da5009d25) )
2396 ROM_LOAD( "rt_b-a3.3e", 0x18000, 0x08000, CRC(73327606) SHA1(9529ecdedd30e2a0400fb1083117992cc18b5158) )
2397
2398 ROM_REGION( 0x20000, "gfx3", 0 ) // Roms located on the M72-B-D rom board
2399 ROM_LOAD( "rt_b-b0.3j", 0x00000, 0x08000, CRC(a7b17491) SHA1(5b390770e56ba2d35e108534d7eda8dca996fdf7) ) // tiles #2
2400 ROM_LOAD( "rt_b-b1.3k", 0x08000, 0x08000, CRC(b9709686) SHA1(700905a3e9661e0874939f54da2909e1396ce596) )
2401 ROM_LOAD( "rt_b-b2.3h", 0x10000, 0x08000, CRC(433b229a) SHA1(14222eaa3e67e5a7f80eafcf22bac4eb2d485a9a) )
2402 ROM_LOAD( "rt_b-b3.3f", 0x18000, 0x08000, CRC(ad89b072) SHA1(e2683d0e7415f3abd147e518bf6c87e44744cd4f) )
2403 ROM_END
2404
2405
2406 ROM_START( bchopper )
2407 ROM_REGION( 0x100000, "maincpu", 0 )
2408 ROM_LOAD16_BYTE( "mh_c-h0-b.ic40", 0x00001, 0x10000, CRC(f2feab16) SHA1(03ee874658e0f59957f8425e1ebf9c938737cc19) )
2409 ROM_LOAD16_BYTE( "mh_c-l0-b.ic37", 0x00000, 0x10000, CRC(9f887096) SHA1(4f41ef29580fc026ea91d110ec6b2e6af83dbd9a) )
2410 ROM_LOAD16_BYTE( "mh_c-h1-b.ic41", 0x20001, 0x10000, CRC(a995d64f) SHA1(43eb2eb11e6875298a6ef2b18f0f5e587f1bba16) )
2411 ROM_LOAD16_BYTE( "mh_c-l1-b.ic36", 0x20000, 0x10000, CRC(41dda999) SHA1(4d07a399aaf16bc37b5488e3e4bb60e78811a099) )
2412 ROM_LOAD16_BYTE( "mh_c-h3-b.ic43", 0x60001, 0x10000, CRC(ab9451ca) SHA1(ec0e0ad592d8b21bb4e6927a452e3b7964cda015) )
2413 ROM_RELOAD( 0xe0001, 0x10000 )
2414 ROM_LOAD16_BYTE( "mh_c-l3-b.ic34", 0x60000, 0x10000, CRC(11562221) SHA1(a2f136a487fb6f30350e8d1e26c0729eb0686c7d) )
2415 ROM_RELOAD( 0xe0000, 0x10000 )
2416
2417 ROM_REGION( 0x10000, "mcu", 0 ) // i8751 microcontroller
2418 ROM_LOAD( "mh_c-pr-b.ic1", 0x00000, 0x10000, NO_DUMP ) // i8751 MCU labeled MH C-PR-B - read protected
2419
2420 ROM_REGION( 0x080000, "sprites", 0 )
2421 ROM_LOAD( "mh_c-00-a.ic53", 0x00000, 0x10000, CRC(f6e6e660) SHA1(e066e5ed37719cf2b6fd36e0117f11325bb06f9c) ) // sprites
2422 ROM_LOAD( "mh_c-01-b.ic52", 0x10000, 0x10000, CRC(708cdd37) SHA1(24f3fcd381422f0d75410c2af7a56744e3b4a699) )
2423 ROM_LOAD( "mh_c-10-a.ic51", 0x20000, 0x10000, CRC(292c8520) SHA1(c552090d295ee1c1ca611b0cddee356e509e2045) )
2424 ROM_LOAD( "mh_c-11-b.ic50", 0x30000, 0x10000, CRC(20904cf3) SHA1(71fe505f2da53c2eb445b7b758d257d6af42e6f1) )
2425 ROM_LOAD( "mh_c-20-a.ic49", 0x40000, 0x10000, CRC(1ab50c23) SHA1(43e2f11e5bbf157c47764e04e372f40ed68bab59) )
2426 ROM_LOAD( "mh_c-21-b.ic48", 0x50000, 0x10000, CRC(c823d34c) SHA1(47383214b6a60e0b1b70208b00c291f8ffed36bc) )
2427 ROM_LOAD( "mh_c-30-a.ic47", 0x60000, 0x10000, CRC(11f6c56b) SHA1(39a2a674698b044c84fea65ae41a9e003a50b639) )
2428 ROM_LOAD( "mh_c-31-b.ic46", 0x70000, 0x10000, CRC(23134ec5) SHA1(43453f8a13b51310e04729dc828d391ca9c04da2) )
2429
2430 ROM_REGION( 0x040000, "gfx2", 0 )
2431 ROM_LOAD( "mh_b-a0-b.ic21", 0x00000, 0x10000, CRC(e46ed7bf) SHA1(75abb5f40629f7c40a610a44e068b6c4e3a5126e) ) // tiles #1
2432 ROM_LOAD( "mh_b-a1-b.ic22", 0x10000, 0x10000, CRC(590605ff) SHA1(fbb5c0cebd28b08d4ce39db4055d6343620e0f1c) )
2433 ROM_LOAD( "mh_b-a2-b.ic20", 0x20000, 0x10000, CRC(f8158226) SHA1(bb3a8686cd89bb8265b6b9e03682cc0bf6533793) )
2434 ROM_LOAD( "mh_b-a3-b.ic23", 0x30000, 0x10000, CRC(0f07b9b7) SHA1(63dbec17097f07eb39299372b736fbbc1b11b65e) )
2435
2436 ROM_REGION( 0x040000, "gfx3", 0 )
2437 ROM_LOAD( "mh_b-b0-.ic26", 0x00000, 0x10000, CRC(b5b95776) SHA1(4685b56071b916ce712c45f24da8068dd7e40ed1) ) // tiles #2
2438 ROM_LOAD( "mh_b-b1-.ic27", 0x10000, 0x10000, CRC(74ca16ee) SHA1(7984bc9a0b46e1b4a8ecac7528d57606305aad73) )
2439 ROM_LOAD( "mh_b-b2-.ic25", 0x20000, 0x10000, CRC(b82cca04) SHA1(c12b95be311205181b01d15021bcf9f01ed3e0a3) )
2440 ROM_LOAD( "mh_b-b3-.ic24", 0x30000, 0x10000, CRC(a7afc920) SHA1(92c75463ada39184e731b82ef2883ae6f1f67482) )
2441
2442 ROM_REGION( 0x10000, "samples", 0 ) // samples
2443 ROM_LOAD( "mh_c-v0-b.ic44", 0x00000, 0x10000, CRC(d0c27e58) SHA1(fec76217cc0c04c723989c3ec127a2bd33d64c60) )
2444 ROM_END
2445
2446 ROM_START( mrheli )
2447 ROM_REGION( 0x100000, "maincpu", 0 )
2448 ROM_LOAD16_BYTE( "mh_c-h0-.ic40", 0x00001, 0x10000, CRC(e2ca5646) SHA1(9f4fe2f0a45233325bd9336cabb925a1f625453b) )
2449 ROM_LOAD16_BYTE( "mh_c-l0-.ic37", 0x00000, 0x10000, CRC(643e23cd) SHA1(66998a6dfc7ef538540986b61d2414a5ef250d0d) )
2450 ROM_LOAD16_BYTE( "mh_c-h1-.ic41", 0x20001, 0x10000, CRC(8974e84d) SHA1(39e05c80e805dde45f2fc5fc429b75f9b599089c) )
2451 ROM_LOAD16_BYTE( "mh_c-l1-.ic36", 0x20000, 0x10000, CRC(5f8bda69) SHA1(48629d617bd48c9de9c6a567fb203258a56fdbbd) )
2452 ROM_LOAD16_BYTE( "mh_c-h3-.ic43", 0x60001, 0x10000, CRC(143f596e) SHA1(f9d444eebcd53dac925d14b7a2858803b7fd9ce2) )
2453 ROM_RELOAD( 0xe0001, 0x10000 )
2454 ROM_LOAD16_BYTE( "mh_c-l3-.ic34", 0x60000, 0x10000, CRC(c0982536) SHA1(45399f8d0577c6e2a277a69303954ce5d2de7c07) )
2455 ROM_RELOAD( 0xe0000, 0x10000 )
2456
2457 ROM_REGION( 0x10000, "mcu", 0 ) // i8751 microcontroller
2458 ROM_LOAD( "mh_c-pr-.ic1", 0x00000, 0x1000, CRC(897dc4ee) SHA1(05a24bf76e8fa9ca96ba9376cbf44d299df04138) ) // i8751 MCU labeled MH C-PR-
2459
2460 ROM_REGION( 0x080000, "sprites", 0 )
2461 ROM_LOAD( "mh_c-00.ic53", 0x00000, 0x20000, CRC(dec4e121) SHA1(92169b523f1600e994e016dc1959a52958e1d89d) ) // sprites
2462 ROM_LOAD( "mh_c-10.ic51", 0x20000, 0x20000, CRC(7aaa151e) SHA1(efd980bb2eed7084354b7a4aa2f733cd2f876741) )
2463 ROM_LOAD( "mh_c-20.ic49", 0x40000, 0x20000, CRC(eae0de74) SHA1(3a2469c0eeb18131f989807afb50228f57ccea30) )
2464 ROM_LOAD( "mh_c-30.ic47", 0x60000, 0x20000, CRC(01d5052f) SHA1(5d5e70913bb7af48193c70209595f27a64fa6cac) )
2465
2466 ROM_REGION( 0x040000, "gfx2", 0 )
2467 ROM_LOAD( "mh_b-a0.ic21", 0x00000, 0x10000, CRC(6a0db256) SHA1(fa3a2dc03da5bbe06a9c9b3d4ed4fddb47c469ac) ) // tiles #1
2468 ROM_LOAD( "mh_b-a1.ic22", 0x10000, 0x10000, CRC(14ec9795) SHA1(4842e076115efe9daf00dab8f61516d28c19baae) )
2469 ROM_LOAD( "mh_b-a2.ic20", 0x20000, 0x10000, CRC(dfcb510e) SHA1(2387cde4ec0bae176486e1f7541103fd557fe255) )
2470 ROM_LOAD( "mh_b-a3.ic23", 0x30000, 0x10000, CRC(957e329b) SHA1(9d48a0b84915e1cef0b0311a3581991dc83ee199) )
2471
2472 ROM_REGION( 0x040000, "gfx3", 0 )
2473 ROM_LOAD( "mh_b-b0-.ic26", 0x00000, 0x10000, CRC(b5b95776) SHA1(4685b56071b916ce712c45f24da8068dd7e40ed1) ) // tiles #2
2474 ROM_LOAD( "mh_b-b1-.ic27", 0x10000, 0x10000, CRC(74ca16ee) SHA1(7984bc9a0b46e1b4a8ecac7528d57606305aad73) )
2475 ROM_LOAD( "mh_b-b2-.ic25", 0x20000, 0x10000, CRC(b82cca04) SHA1(c12b95be311205181b01d15021bcf9f01ed3e0a3) )
2476 ROM_LOAD( "mh_b-b3-.ic24", 0x30000, 0x10000, CRC(a7afc920) SHA1(92c75463ada39184e731b82ef2883ae6f1f67482) )
2477
2478 ROM_REGION( 0x10000, "samples", 0 ) // samples
2479 ROM_LOAD( "mh_c-v0-b.ic44", 0x00000, 0x10000, CRC(d0c27e58) SHA1(fec76217cc0c04c723989c3ec127a2bd33d64c60) )
2480 ROM_END
2481
2482 /*
2483
2484 Ninja Spirit
2485 Irem, 1988
2486
2487 This game runs on Irem M72 hardware.
2488
2489
2490 Top Board
2491 ---------
2492
2493 M72-C
2494 |-------------------------------|
2495 | 8MHz J3 NIN_C-L3.6A J4 J5 |
2496 | J1 NIN_C-L2.6B NIN-V0.7A|
2497 |8751 J2 NIN_C-L1.6C J12 |
2498 | NIN_C-L0.6D J6 |
2499 | NIN-R30.7D|
2500 | NIN_C-3F.3F |
2501 | 4364 NIN-R20.7F|
2502 | 4364 J8 J9|
2503 | J10 |
2504 | LM358 NIN_C-H0.H6 |
2505 | NIN_C-H1.J6 |
2506 |----| MB8431 J11 |
2507 | CN3 CN4 |
2508 | MB8421 NIN-R10.7J|
2509 | NIN_C-H2.6L NIN-R00.7M
2510 | NIN_C-H3.6M J7 |
2511 |--------------------------|
2512 Notes:
2513 NIN_C-3F.3F - Ti TBP16L8 PAL
2514 All other NIN_C* - 27C512 EPROM
2515 NIN-R* - 28-pin 1Mb maskROM
2516 J1 - Jumper set to A
2517 J2 - Jumper set to A
2518 J3 - Jumper set to A
2519 J4 - Jumper set to A
2520 J5 - Jumper set to B
2521 J6 - Jumper set to A
2522 J7 - Jumper set to A
2523 J8 - Open
2524 J9 - Jumper set to A
2525 J10 - Jumper set to A
2526 J11 - Jumper set to B
2527 J12 - Jumper set to A
2528 8751 - MCU with label 'NIN C-PR' at location 1C. Clock input 8MHz
2529 4364 - 8kb x8-bit SRAM
2530 MB8431 - Fujitsu 2k x 8-bit CMOS Dual-Port SRAM
2531 MB8421 - Fujitsu 2k x 8-bit CMOS Dual-Port SRAM
2532 LM358 - Low power dual operational amplifier IC
2533
2534
2535 Middle Board
2536 ------------
2537
2538 M72-A-C
2539 |-----------------------------------------------------------|
2540 |M51516L YM2151 |
2541 |VOL Y3014B 3.579545KHz |--|
2542 | 43256 | |
2543 | CN3 | |
2544 | M72_A-3D.3D M72_A-4D.4D D780 43256 | |
2545 | | |
2546 | | |
2547 |J DSW1(8) | |
2548 |A 2016 | |
2549 |M DSW2(8) D71011 D71088 |--|
2550 |M 2016 |
2551 |A V30 D71059 |--|
2552 | 2018 KNA70H016(12) | |
2553 | M72_A-8L.8L | |
2554 | 2018 M72_A-9L.9L| |
2555 | 2018 | |
2556 | KNA71H010(14) 2018 KNA70H015(11)| |
2557 | 2018 | |
2558 | CN4 2018 32MHz | |
2559 | KNA71H009(13) |--|
2560 |KNA71H010(15) KNA65005(17) KNA91H014 |
2561 |-----------------------------------------------------------|
2562 Notes:
2563 KNA* - NANAO custom chips
2564 M72*.*L - Bipolar PROMs type TBP24S10 (==82S129)
2565 M72*.*D - Ti TBP16L8 PALs
2566 2016 - 2kb x8-bit SRAM
2567 2018 - 2kb x8-bit SRAM
2568 43256 - 32kb x8-bit SRAM
2569 CN3/CN4 - Joining connectors for top board
2570
2571
2572 Bottom Board
2573 ------------
2574
2575 M72-B-D
2576 |-----------------------------------------------------------|
2577 | |
2578 | NIN_B-A2.4B |--|
2579 | | |
2580 | KNA6034201 J2 | |
2581 | NIN_B-A0.4C J3 | |
2582 | | |
2583 | | |
2584 | NIN_B-A1.4D 4364 | |
2585 | | |
2586 | NIN_B-A3.4E 4364 |--|
2587 | |
2588 | B3.4F 4364 |--|
2589 | | |
2590 | B2.4H 4364 | |
2591 | | |
2592 | KNA6034201 B0.4J | |
2593 | | |
2594 | J4 | |
2595 | B1.4K J5 | |
2596 | KNA91H014 |--|
2597 | |
2598 |-----------------------------------------------------------|
2599 Notes:
2600 KNA* - NANAO custom chips
2601 NIN* - 27C512 EPROMs
2602 B* - 512kb mask ROMs (no labels, just B and a number)
2603 4364 - 8kb x8-bit SRAM
2604 J* - 3-pin jumpers. All set to the B position
2605 */
2606
2607 ROM_START( nspirit )
2608 ROM_REGION( 0x100000, "maincpu", 0 )
2609 ROM_LOAD16_BYTE( "nin_c-h0-b.6h", 0x00001, 0x10000, CRC(035692fa) SHA1(d5ab54488344bf405063737ed55d68ff1e64b55f) )
2610 ROM_LOAD16_BYTE( "nin_c-l0-b.6d", 0x00000, 0x10000, CRC(9a405898) SHA1(b28d71c1a6410720a37e6b6518b3cc66d4c32972) )
2611 ROM_LOAD16_BYTE( "nin_c-h1.6j", 0x20001, 0x10000, CRC(cbc10586) SHA1(9b1935ea9ebb21fe42ee3a57d6c10f1e8516f23c) )
2612 ROM_LOAD16_BYTE( "nin_c-l1.6c", 0x20000, 0x10000, CRC(b75c9a4d) SHA1(03c28896cbe0c9f778c259d59d2e69796902daa8) )
2613 ROM_LOAD16_BYTE( "nin_c-h2.6l", 0x40001, 0x10000, CRC(8ad818fa) SHA1(dd25e79b656b7fc6c31d1f8971fd0916295ccdb0) )
2614 ROM_LOAD16_BYTE( "nin_c-l2.6b", 0x40000, 0x10000, CRC(c52ca78c) SHA1(2b40cce5a1f5c588b49634e7fd4bc28c9160fe43) )
2615 ROM_LOAD16_BYTE( "nin_c-h3-b.6m", 0x60001, 0x10000, CRC(501104ef) SHA1(e44e060c072affd359e52bf6606b1dd565368d44) )
2616 ROM_RELOAD( 0xe0001, 0x10000 )
2617 ROM_LOAD16_BYTE( "nin_c-l3-b.6a", 0x60000, 0x10000, CRC(fd7408b8) SHA1(3cbe72835a561c50265a047f0f5cd62db48378fd) )
2618 ROM_RELOAD( 0xe0000, 0x10000 )
2619
2620 ROM_REGION( 0x10000, "mcu", 0 ) // i8751 microcontroller
2621 ROM_LOAD( "nin_c-pr-b.ic1", 0x00000, 0x01000, NO_DUMP ) // i8751 MCU labeled NIN C-PR-B - read protected
2622
2623 ROM_REGION( 0x080000, "sprites", 0 )
2624 ROM_LOAD( "nin-r00.7m", 0x00000, 0x20000, CRC(5f61d30b) SHA1(7754697e43f6117fa604f50885b76014b1dc5760) ) // sprites
2625 ROM_LOAD( "nin-r10.7j", 0x20000, 0x20000, CRC(0caad107) SHA1(c4eff00327313e05ac8f7c6dbee3a0de1c83fadd) )
2626 ROM_LOAD( "nin-r20.7f", 0x40000, 0x20000, CRC(ef3617d3) SHA1(16c175cf45559aacdea6e4002dd8a87f16817cfb) )
2627 ROM_LOAD( "nin-r30.7d", 0x60000, 0x20000, CRC(175d2a24) SHA1(d1887efd4d8e74c38c53dbbc541ca8d17f29eb59) )
2628
2629 ROM_REGION( 0x040000, "gfx2", 0 )
2630 ROM_LOAD( "nin_b-a0.4c", 0x00000, 0x10000, CRC(63f8f658) SHA1(82c02d0f7a2d95dfd8d300c46312d511524775ce) ) // tiles #1
2631 ROM_LOAD( "nin_b-a1.4d", 0x10000, 0x10000, CRC(75eb8306) SHA1(2abc359a0bb2863759a68ed60e730761b9751829) )
2632 ROM_LOAD( "nin_b-a2.4b", 0x20000, 0x10000, CRC(df532172) SHA1(58b5a79a57e71405b3e1abd41d54cf6a4d12873a) )
2633 ROM_LOAD( "nin_b-a3.4e", 0x30000, 0x10000, CRC(4dedd64c) SHA1(8a5c73a024d95e6fe3ab70daafcd5b235418ad36) )
2634
2635 ROM_REGION( 0x040000, "gfx3", 0 )
2636 ROM_LOAD( "b0.4j", 0x00000, 0x10000, CRC(1b0e08a6) SHA1(892686594970c264babbe8673c258929a5e480f6) ) // tiles #2
2637 ROM_LOAD( "b1.4k", 0x10000, 0x10000, CRC(728727f0) SHA1(2f594c77a847ebee71c9da8a644f83ea2a1313d7) )
2638 ROM_LOAD( "b2.4h", 0x20000, 0x10000, CRC(f87efd75) SHA1(16474c7ab57b4fbb5cb50799ea6a2326c66706b5) )
2639 ROM_LOAD( "b3.4f", 0x30000, 0x10000, CRC(98856cb4) SHA1(aa4fbae972d2e827c75650a71ab4ef73a33cd018) )
2640
2641 ROM_REGION( 0x10000, "samples", 0 ) // samples
2642 ROM_LOAD( "nin-v0.7a", 0x00000, 0x10000, CRC(a32e8caf) SHA1(63d56ad3a63fb089056e4a170159120287594ea8) )
2643
2644 ROM_REGION( 0x0200, "proms", 0 ) // Located on M72-A-C CPU/Sound board
2645 ROM_LOAD( "m72_a-8l.8l", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10
2646 ROM_LOAD( "m72_a-9l.9l", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10
2647
2648 ROM_REGION( 0x0300, "plds", 0 )
2649 // Located on M72-ROM-C rom board
2650 ROM_LOAD( "nin_c-3f.3f", 0x0000, 0x0100, CRC(5402fc07) SHA1(fa4284710b31be62ab99b0e1d60844db9a8d843e) ) // TBP16L8
2651 // Located on M72-A-C CPU/Sound board
2652 ROM_LOAD( "m72_a-3d.3d", 0x0100, 0x0100, CRC(de85dac3) SHA1(af83b0325f28fbb1bcc424c1b58ff0f4b49f6b67) ) // TBP16L8
2653 ROM_LOAD( "m72_a-4d.4d", 0x0200, 0x0100, CRC(59676de1) SHA1(fcf35f5463c14a4b06d58684c47ea9de5216d1da) ) // TBP16L8
2654 ROM_END
2655
2656 ROM_START( nspiritj )
2657 ROM_REGION( 0x100000, "maincpu", 0 )
2658 ROM_LOAD16_BYTE( "nin_c-h0.6h", 0x00001, 0x10000, CRC(8603fab2) SHA1(2c5bc97b6c9648156969b4a9f139081dca19fa24) )
2659 ROM_LOAD16_BYTE( "nin_c-l0.6d", 0x00000, 0x10000, CRC(e520fa35) SHA1(05f7e5a1a5ada95809ffd941080fb2c2b54363b7) )
2660 ROM_LOAD16_BYTE( "nin_c-h1.6j", 0x20001, 0x10000, CRC(cbc10586) SHA1(9b1935ea9ebb21fe42ee3a57d6c10f1e8516f23c) )
2661 ROM_LOAD16_BYTE( "nin_c-l1.6c", 0x20000, 0x10000, CRC(b75c9a4d) SHA1(03c28896cbe0c9f778c259d59d2e69796902daa8) )
2662 ROM_LOAD16_BYTE( "nin_c-h2.6l", 0x40001, 0x10000, CRC(8ad818fa) SHA1(dd25e79b656b7fc6c31d1f8971fd0916295ccdb0) )
2663 ROM_LOAD16_BYTE( "nin_c-l2.6b", 0x40000, 0x10000, CRC(c52ca78c) SHA1(2b40cce5a1f5c588b49634e7fd4bc28c9160fe43) )
2664 ROM_LOAD16_BYTE( "nin_c-h3.6m", 0x60001, 0x10000, CRC(95b63a61) SHA1(bd5ec35fffe6d4898e6712eb6add7c51077b58d2) )
2665 ROM_RELOAD( 0xe0001, 0x10000 )
2666 ROM_LOAD16_BYTE( "nin_c-l3.6a", 0x60000, 0x10000, CRC(e754a87a) SHA1(9951d972ed13a0415c827beff122bc7ddb078447) )
2667 ROM_RELOAD( 0xe0000, 0x10000 )
2668
2669 ROM_REGION( 0x10000, "mcu", 0 ) // i8751 microcontroller
2670 ROM_LOAD( "nin_c-pr-.ic1", 0x00000, 0x01000, CRC(802d440a) SHA1(45b844b831aa6d5d002e3960e17fb5a058b02a29) ) // i8751 MCU labeled NIN C-PR-
2671
2672 ROM_REGION( 0x080000, "sprites", 0 )
2673 ROM_LOAD( "nin-r00.7m", 0x00000, 0x20000, CRC(5f61d30b) SHA1(7754697e43f6117fa604f50885b76014b1dc5760) ) // sprites
2674 ROM_LOAD( "nin-r10.7j", 0x20000, 0x20000, CRC(0caad107) SHA1(c4eff00327313e05ac8f7c6dbee3a0de1c83fadd) )
2675 ROM_LOAD( "nin-r20.7f", 0x40000, 0x20000, CRC(ef3617d3) SHA1(16c175cf45559aacdea6e4002dd8a87f16817cfb) )
2676 ROM_LOAD( "nin-r30.7d", 0x60000, 0x20000, CRC(175d2a24) SHA1(d1887efd4d8e74c38c53dbbc541ca8d17f29eb59) )
2677
2678 ROM_REGION( 0x040000, "gfx2", 0 )
2679 ROM_LOAD( "nin_b-a0.4c", 0x00000, 0x10000, CRC(63f8f658) SHA1(82c02d0f7a2d95dfd8d300c46312d511524775ce) ) // tiles #1
2680 ROM_LOAD( "nin_b-a1.4d", 0x10000, 0x10000, CRC(75eb8306) SHA1(2abc359a0bb2863759a68ed60e730761b9751829) )
2681 ROM_LOAD( "nin_b-a2.4b", 0x20000, 0x10000, CRC(df532172) SHA1(58b5a79a57e71405b3e1abd41d54cf6a4d12873a) )
2682 ROM_LOAD( "nin_b-a3.4e", 0x30000, 0x10000, CRC(4dedd64c) SHA1(8a5c73a024d95e6fe3ab70daafcd5b235418ad36) )
2683
2684 ROM_REGION( 0x040000, "gfx3", 0 )
2685 ROM_LOAD( "b0.4j", 0x00000, 0x10000, CRC(1b0e08a6) SHA1(892686594970c264babbe8673c258929a5e480f6) ) // tiles #2
2686 ROM_LOAD( "b1.4k", 0x10000, 0x10000, CRC(728727f0) SHA1(2f594c77a847ebee71c9da8a644f83ea2a1313d7) )
2687 ROM_LOAD( "b2.4h", 0x20000, 0x10000, CRC(f87efd75) SHA1(16474c7ab57b4fbb5cb50799ea6a2326c66706b5) )
2688 ROM_LOAD( "b3.4f", 0x30000, 0x10000, CRC(98856cb4) SHA1(aa4fbae972d2e827c75650a71ab4ef73a33cd018) )
2689
2690 ROM_REGION( 0x10000, "samples", 0 ) // samples
2691 ROM_LOAD( "nin-v0.7a", 0x00000, 0x10000, CRC(a32e8caf) SHA1(63d56ad3a63fb089056e4a170159120287594ea8) )
2692 ROM_END
2693
2694
2695 ROM_START( imgfight )
2696 ROM_REGION( 0x100000, "maincpu", 0 )
2697 ROM_LOAD16_BYTE( "if-c-h0-a.ic40", 0x00001, 0x10000, CRC(f5c94464) SHA1(5964a00d21ebb358eecc0f10f6221fb684f284df) )
2698 ROM_LOAD16_BYTE( "if-c-l0-a.ic37", 0x00000, 0x10000, CRC(87c534fe) SHA1(10c231a2b3046a711a1fdcc6c1631a7378295f2f) )
2699 ROM_LOAD16_BYTE( "if-c-h3.ic43", 0x40001, 0x20000, CRC(ea030541) SHA1(ee4c12773ecced2d755443ce0ca78fb2b2c04805) )
2700 ROM_RELOAD( 0xc0001, 0x20000 )
2701 ROM_LOAD16_BYTE( "if-c-l3.ic34", 0x40000, 0x20000, CRC(c66ae348) SHA1(eca5096ebd5bffc6e68f3fc9969cda9679bd921f) )
2702 ROM_RELOAD( 0xc0000, 0x20000 )
2703
2704 ROM_REGION( 0x10000, "mcu", 0 ) // i8751 microcontroller
2705 ROM_LOAD( "if_c-pr-a.ic1", 0x00000, 0x01000, CRC(55f10458) SHA1(d520ec2b075c94d76d97e0105644ff96384b378c) ) // i8751 MCU labeled IF C-PR-A
2706
2707 ROM_REGION( 0x080000, "sprites", 0 )
2708 ROM_LOAD( "if-c-00.ic53", 0x00000, 0x20000, CRC(745e6638) SHA1(43fb1f9da4190fea67eee3aee8caf4219becc21b) ) // sprites
2709 ROM_LOAD( "if-c-10.ic51", 0x20000, 0x20000, CRC(b7108449) SHA1(1f41ebe7164fab86958caaf6749b99425e682657) )
2710 ROM_LOAD( "if-c-20.ic49", 0x40000, 0x20000, CRC(aef33cba) SHA1(2d8a8458207d0c790c81b1285366463c8540d190) )
2711 ROM_LOAD( "if-c-30.ic47", 0x60000, 0x20000, CRC(1f98e695) SHA1(5fddcfb17523f8e96f4b85f0cb15d837b81f2bd4) )
2712
2713 ROM_REGION( 0x040000, "gfx2", 0 )
2714 ROM_LOAD( "if-a-a0.ic21", 0x00000, 0x10000, CRC(34ee2d77) SHA1(38826e0318aa8da893fa4c93f217288c015df606) ) // tiles #1
2715 ROM_LOAD( "if-a-a1.ic22", 0x10000, 0x10000, CRC(6bd2845b) SHA1(149cf14f919590da88b9a8e254690da010709862) )
2716 ROM_LOAD( "if-a-a2.ic20", 0x20000, 0x10000, CRC(090d50e5) SHA1(4f2a7c76320b3f8dafae90a246187e034fe7562b) )
2717 ROM_LOAD( "if-a-a3.ic23", 0x30000, 0x10000, CRC(3a8e3083) SHA1(8a75d556790b6bea41ead1a5f95589dd293bdf4e) )
2718
2719 ROM_REGION( 0x040000, "gfx3", 0 )
2720 ROM_LOAD( "if-a-b0.ic26", 0x00000, 0x10000, CRC(b425c829) SHA1(0ccd487dba00bb7cb0ff5d1c67f8fee3e68df5d8) ) // tiles #2
2721 ROM_LOAD( "if-a-b1.ic27", 0x10000, 0x10000, CRC(e9bfe23e) SHA1(f97a68dbdce7e06d07faab19acf7625cdc8eeaa8) )
2722 ROM_LOAD( "if-a-b2.ic25", 0x20000, 0x10000, CRC(256e50f2) SHA1(9e9fda4f1f1449548942c0da4478f61fe0d263d1) )
2723 ROM_LOAD( "if-a-b3.ic24", 0x30000, 0x10000, CRC(4c682785) SHA1(f61f1227e0ad629fdfca106306b17a9f6a9959e3) )
2724
2725 ROM_REGION( 0x20000, "samples", 0 ) // samples
2726 ROM_LOAD( "if-c-v0.ic44", 0x00000, 0x10000, CRC(cb64a194) SHA1(940fad6b9147bccc8290e112f5973f8ea062b52f) )
2727 ROM_LOAD( "if-c-v1.ic45", 0x10000, 0x10000, CRC(45b68bf5) SHA1(2fb28793019ca85b3b6d7c4c31eedff1d71f2d83) )
2728 ROM_END
2729
2730 ROM_START( imgfightj )
2731 ROM_REGION( 0x100000, "maincpu", 0 )
2732 ROM_LOAD16_BYTE( "if-c-h0.ic40", 0x00001, 0x10000, CRC(592d2d80) SHA1(d54916a9bfe4b65a972b62202af706135e73518d) )
2733 ROM_LOAD16_BYTE( "if-c-l0.ic37", 0x00000, 0x10000, CRC(61f89056) SHA1(3e0724dbc2b00a30193ea6cfac8b4331055d4fd4) )
2734 ROM_LOAD16_BYTE( "if-c-h3.ic43", 0x40001, 0x20000, CRC(ea030541) SHA1(ee4c12773ecced2d755443ce0ca78fb2b2c04805) )
2735 ROM_RELOAD( 0xc0001, 0x20000 )
2736 ROM_LOAD16_BYTE( "if-c-l3.ic34", 0x40000, 0x20000, CRC(c66ae348) SHA1(eca5096ebd5bffc6e68f3fc9969cda9679bd921f) )
2737 ROM_RELOAD( 0xc0000, 0x20000 )
2738
2739 ROM_REGION( 0x10000, "mcu", 0 ) // i8751 microcontroller
2740 ROM_LOAD( "if_c-pr-.ic1", 0x00000, 0x01000, CRC(ef0d5098) SHA1(068b73937588e16a318a094dfe2fb1293b1a1711) ) // i8751 MCU labeled IF C-PR-
2741
2742 ROM_REGION( 0x080000, "sprites", 0 )
2743 ROM_LOAD( "if-c-00.ic53", 0x00000, 0x20000, CRC(745e6638) SHA1(43fb1f9da4190fea67eee3aee8caf4219becc21b) ) // sprites
2744 ROM_LOAD( "if-c-10.ic51", 0x20000, 0x20000, CRC(b7108449) SHA1(1f41ebe7164fab86958caaf6749b99425e682657) )
2745 ROM_LOAD( "if-c-20.ic49", 0x40000, 0x20000, CRC(aef33cba) SHA1(2d8a8458207d0c790c81b1285366463c8540d190) )
2746 ROM_LOAD( "if-c-30.ic47", 0x60000, 0x20000, CRC(1f98e695) SHA1(5fddcfb17523f8e96f4b85f0cb15d837b81f2bd4) )
2747
2748 ROM_REGION( 0x040000, "gfx2", 0 )
2749 ROM_LOAD( "if-a-a0.ic21", 0x00000, 0x10000, CRC(34ee2d77) SHA1(38826e0318aa8da893fa4c93f217288c015df606) ) // tiles #1
2750 ROM_LOAD( "if-a-a1.ic22", 0x10000, 0x10000, CRC(6bd2845b) SHA1(149cf14f919590da88b9a8e254690da010709862) )
2751 ROM_LOAD( "if-a-a2.ic20", 0x20000, 0x10000, CRC(090d50e5) SHA1(4f2a7c76320b3f8dafae90a246187e034fe7562b) )
2752 ROM_LOAD( "if-a-a3.ic23", 0x30000, 0x10000, CRC(3a8e3083) SHA1(8a75d556790b6bea41ead1a5f95589dd293bdf4e) )
2753
2754 ROM_REGION( 0x040000, "gfx3", 0 )
2755 ROM_LOAD( "if-a-b0.ic26", 0x00000, 0x10000, CRC(b425c829) SHA1(0ccd487dba00bb7cb0ff5d1c67f8fee3e68df5d8) ) // tiles #2
2756 ROM_LOAD( "if-a-b1.ic27", 0x10000, 0x10000, CRC(e9bfe23e) SHA1(f97a68dbdce7e06d07faab19acf7625cdc8eeaa8) )
2757 ROM_LOAD( "if-a-b2.ic25", 0x20000, 0x10000, CRC(256e50f2) SHA1(9e9fda4f1f1449548942c0da4478f61fe0d263d1) )
2758 ROM_LOAD( "if-a-b3.ic24", 0x30000, 0x10000, CRC(4c682785) SHA1(f61f1227e0ad629fdfca106306b17a9f6a9959e3) )
2759
2760 ROM_REGION( 0x20000, "samples", 0 ) // samples
2761 ROM_LOAD( "if-c-v0.ic44", 0x00000, 0x10000, CRC(cb64a194) SHA1(940fad6b9147bccc8290e112f5973f8ea062b52f) )
2762 ROM_LOAD( "if-c-v1.ic45", 0x10000, 0x10000, CRC(45b68bf5) SHA1(2fb28793019ca85b3b6d7c4c31eedff1d71f2d83) )
2763 ROM_END
2764
2765 ROM_START( imgfightb ) // mostly identical to imgfightj content-wise, it's a 4 PCB stack bootleg with flying wires
2766 ROM_REGION( 0x100000, "maincpu", 0 ) // identical, but ic111.9e
2767 ROM_LOAD16_BYTE( "ic108.9b", 0x00001, 0x10000, CRC(592d2d80) SHA1(d54916a9bfe4b65a972b62202af706135e73518d) )
2768 ROM_LOAD16_BYTE( "ic89.7b", 0x00000, 0x10000, CRC(61f89056) SHA1(3e0724dbc2b00a30193ea6cfac8b4331055d4fd4) )
2769 ROM_LOAD16_BYTE( "ic111.9e", 0x40001, 0x10000, CRC(da50622e) SHA1(32c75b6270d401a6825632c66f3026cae7b5b81f) ) // slight difference: 99.998474%: 0x1116 from 0x09 to 0x0d
2770 ROM_RELOAD( 0xc0001, 0x10000 )
2771 ROM_LOAD16_BYTE( "ic110.9d", 0x60001, 0x10000, CRC(0e0aefcd) SHA1(f5056a2d0612d912aff1e0eccb1182de7ae16990) )
2772 ROM_RELOAD( 0xe0001, 0x10000 )
2773 ROM_LOAD16_BYTE( "ic92.7e", 0x40000, 0x10000, CRC(38fce272) SHA1(4fe4d0838d21f3022b440a32ec69b25e936e62dd) )
2774 ROM_RELOAD( 0xc0000, 0x10000 )
2775 ROM_LOAD16_BYTE( "ic91.7d", 0x60000, 0x10000, CRC(d69c0722) SHA1(ef18e7b7057f19caaa61d0b8c07d2d0c6e0a555e) )
2776 ROM_RELOAD( 0xe0000, 0x10000 )
2777
2778 ROM_REGION( 0x10000, "mcu", 0 )
2779 ROM_LOAD( "25.ic27.2l", 0x00000, 0x2000, CRC(d83359a2) SHA1(2d486bf4a873abfe591e0d9383f9e230f47bc42a) ) // i80c31 instead of i8751, contents identical to imgfightj MCU, with second half padded with 0xff
2780
2781 ROM_REGION( 0x080000, "sprites", 0 ) // half size ROMs, but identical content
2782 ROM_LOAD( "ic96.7k", 0x00000, 0x10000, CRC(d4febb03) SHA1(6fe53b198bdcef1708ff134c64af9c064e274e1b) ) // sprites
2783 ROM_LOAD( "ic97.7l", 0x10000, 0x10000, CRC(973d7bbc) SHA1(409242ddc7eb90564a15b222641e53d11ab1e04a) )
2784 ROM_LOAD( "ic115.9k", 0x20000, 0x10000, CRC(2328880b) SHA1(a35c77a7d04614dbfbca4c79bb3e729115129ee4) )
2785 ROM_LOAD( "ic116.9l", 0x30000, 0x10000, CRC(6da001ea) SHA1(473ed89b77809b3b76bfa9f5ca4008c9534cdbb4) )
2786 ROM_LOAD( "ic94.7h", 0x40000, 0x10000, CRC(92bc7fda) SHA1(521d4a29e06eb8790fdeeba968f99a389f50a24e) )
2787 ROM_LOAD( "ic95.7j", 0x50000, 0x10000, CRC(e63a5918) SHA1(fd3374866f922cef72c0678aa751ad1e6f95a12a) )
2788 ROM_LOAD( "ic113.9h", 0x60000, 0x10000, CRC(27caec8e) SHA1(cc1943ba9548715425e799f418750cd70c3f88da) )
2789 ROM_LOAD( "ic114.9j", 0x70000, 0x10000, CRC(1933eb65) SHA1(4c24cfd059c11875f53b57cc020fbdbac903bd4a) )
2790
2791 ROM_REGION( 0x040000, "gfx2", 0 ) // identical
2792 ROM_LOAD( "ic30.3d", 0x00000, 0x10000, CRC(34ee2d77) SHA1(38826e0318aa8da893fa4c93f217288c015df606) ) // tiles #1
2793 ROM_LOAD( "ic31.3e", 0x10000, 0x10000, CRC(6bd2845b) SHA1(149cf14f919590da88b9a8e254690da010709862) )
2794 ROM_LOAD( "ic29.3c", 0x20000, 0x10000, CRC(090d50e5) SHA1(4f2a7c76320b3f8dafae90a246187e034fe7562b) )
2795 ROM_LOAD( "ic32.3f", 0x30000, 0x10000, CRC(3a8e3083) SHA1(8a75d556790b6bea41ead1a5f95589dd293bdf4e) )
2796
2797 ROM_REGION( 0x040000, "gfx3", 0 ) // identical
2798 ROM_LOAD( "ic35.3k", 0x00000, 0x10000, CRC(b425c829) SHA1(0ccd487dba00bb7cb0ff5d1c67f8fee3e68df5d8) ) // tiles #2
2799 ROM_LOAD( "ic36.3l", 0x10000, 0x10000, CRC(e9bfe23e) SHA1(f97a68dbdce7e06d07faab19acf7625cdc8eeaa8) )
2800 ROM_LOAD( "ic34.3j", 0x20000, 0x10000, CRC(256e50f2) SHA1(9e9fda4f1f1449548942c0da4478f61fe0d263d1) )
2801 ROM_LOAD( "ic33.3h", 0x30000, 0x10000, CRC(4c682785) SHA1(f61f1227e0ad629fdfca106306b17a9f6a9959e3) )
2802
2803 ROM_REGION( 0x20000, "samples", 0 ) // samples, identical
2804 ROM_LOAD( "ic28.lower.2n", 0x00000, 0x10000, CRC(cb64a194) SHA1(940fad6b9147bccc8290e112f5973f8ea062b52f) )
2805 ROM_LOAD( "ic28.upper.2n", 0x10000, 0x10000, CRC(45b68bf5) SHA1(2fb28793019ca85b3b6d7c4c31eedff1d71f2d83) )
2806 ROM_END
2807
2808
2809 ROM_START( loht )
2810 ROM_REGION( 0x100000, "maincpu", 0 )
2811 ROM_LOAD16_BYTE( "tom_c-h0-b.ic40", 0x00001, 0x20000, CRC(a63204b6) SHA1(d217bc70650a1a1bbe0cf536ec3bb678f670718d) )
2812 ROM_LOAD16_BYTE( "tom_c-l0-b.ic37", 0x00000, 0x20000, CRC(e788002f) SHA1(35f509976b342fd47e645453381faa3d86645876) )
2813 ROM_LOAD16_BYTE( "tom_c-h3-.ic43", 0x40001, 0x20000, CRC(714778b5) SHA1(e2eaa35d6b5fa5df5163fe0d7b45fa66667f9947) )
2814 ROM_RELOAD( 0xc0001, 0x20000 )
2815 ROM_LOAD16_BYTE( "tom_c-l3-.ic34", 0x40000, 0x20000, CRC(2f049b03) SHA1(21047cb10912b1fc23795673af3ea7de249328b7) )
2816 ROM_RELOAD( 0xc0000, 0x20000 )
2817
2818 ROM_REGION( 0x10000, "mcu", 0 ) // i8751 microcontroller
2819 ROM_LOAD( "tom_c-pr-b.ic1", 0x00000, 0x01000, CRC(9c9545f1) SHA1(ca800ce7467efb877d0fff4c47d72478a991e2a9) ) // i8751 MCU labeled TOM C-PR-B
2820
2821 ROM_REGION( 0x080000, "sprites", 0 )
2822 ROM_LOAD( "tom_m53.ic53", 0x00000, 0x20000, CRC(0b83265f) SHA1(b31918d6442b79c9fe4f20410189788b050a994e) ) // sprites
2823 ROM_LOAD( "tom_m51.ic51", 0x20000, 0x20000, CRC(8ec5f6f3) SHA1(210f2753f5eeb06396758d21ab1778d459add247) )
2824 ROM_LOAD( "tom_m49.ic49", 0x40000, 0x20000, CRC(a41d3bfd) SHA1(536fb7c0321dbbc1a8b73e9647fba9c53a253fcc) )
2825 ROM_LOAD( "tom_m47.ic47", 0x60000, 0x20000, CRC(9d81a25b) SHA1(a354537c2fbba85f06485aa8487d7583a7133357) )
2826
2827 ROM_REGION( 0x040000, "gfx2", 0 )
2828 ROM_LOAD( "tom_m21.ic21", 0x00000, 0x10000, CRC(3ca3e771) SHA1(be052e01c5429ee89057c9d408794f2c7744047c) ) // tiles #1
2829 ROM_LOAD( "tom_m22.ic22", 0x10000, 0x10000, CRC(7a05ee2f) SHA1(7d1ca5db9a5a85610129e3bc6c640ade036fe7f9) )
2830 ROM_LOAD( "tom_m20.ic20", 0x20000, 0x10000, CRC(79aa2335) SHA1(6b70c79d800a7b755aa7c9a368c4ea74029aaa1e) )
2831 ROM_LOAD( "tom_m23.ic23", 0x30000, 0x10000, CRC(789e8b24) SHA1(e957cd25c3c155ca295ab1aea03d610f91562cfb) )
2832
2833 ROM_REGION( 0x040000, "gfx3", 0 )
2834 ROM_LOAD( "tom_m26.ic26", 0x00000, 0x10000, CRC(44626bf6) SHA1(571ef74d42d30a272ff0fb33f830652b4a4bad29) ) // tiles #2
2835 ROM_LOAD( "tom_m27.ic27", 0x10000, 0x10000, CRC(464952cf) SHA1(6b99360b6ba1ed5a72c257f51291f9f7a1ddf363) )
2836 ROM_LOAD( "tom_m25.ic25", 0x20000, 0x10000, CRC(3db9b2c7) SHA1(02a318ffc459c494b7f40827eff5f89b41ac0426) )
2837 ROM_LOAD( "tom_m24.ic24", 0x30000, 0x10000, CRC(f01fe899) SHA1(c5ab967b7af55a757638bcdc9975f4b15064022d) )
2838
2839 ROM_REGION( 0x10000, "samples", 0 ) // samples
2840 ROM_LOAD( "tom_m44.ic44", 0x00000, 0x10000, CRC(3ed51d1f) SHA1(84f3aa17d640df91387e5f1f5b5971cf8dcd4e17) )
2841 ROM_END
2842
2843 /*
2844
2845 Legend of Hero TONMA
2846 (c)1989 Irem
2847
2848 M72 System
2849 Horizontal Freq. = 15.625KHz
2850 H.Period = 64.0us
2851 H.Blank = 16.0us
2852 H.Sync Pulse = 5.0us
2853 Vertical Freq. = 55.02Hz
2854 V.Period = 18.176ms
2855 V.Blank = 1.792ms
2856 V.Sync Pulse = 384us
2857
2858 ROMs:
2859 on M72-C mainboard
2860 set jumper pins
2861 J1:A
2862 J2:A
2863 J3:A
2864 J4:A
2865 J5:B
2866 J6:A
2867 J7:A
2868 J9:A
2869 J10:A
2870 J11:B
2871 J12:A
2872
2873 TOM_C-H0- (M5M27C101K, main programs)
2874 TOM_C-L0-
2875 TOM_C-H3-
2876 TOM_C-H0-
2877
2878 R200 (28pin 1Mbit mask, read as 531000)
2879 R210
2880 R220
2881 R230
2882
2883 082 - Samples
2884
2885 TOM_C-PR- (i8751H, read protected, not dumped) <-- Since decapped, deprotected and read
2886 TOM_C-3F- (PAL, read protected, not dumped)
2887
2888
2889 on M72-B-B or M72-B-C or M72-B-D
2890 set jumper pins (J2, J3, J4, J5) to "B"
2891 R2A0.A0 (27C512)
2892 R2A1.A1
2893 R2A2.A2
2894 R2A3.A3
2895
2896 078.B0
2897 079.B1
2898 080.B2
2899 081.B3
2900
2901 */
2902
2903 ROM_START( lohtj )
2904 ROM_REGION( 0x100000, "maincpu", 0 )
2905 ROM_LOAD16_BYTE( "tom_c-h0-", 0x00001, 0x20000, CRC(2a752998) SHA1(a88c3c75a1106665c94ddd0945bfaa7696a21b75) )
2906 ROM_LOAD16_BYTE( "tom_c-l0-", 0x00000, 0x20000, CRC(a224d928) SHA1(c4744f6ca19ce60b0c03415be979f2a824235a1c) )
2907 ROM_LOAD16_BYTE( "tom_c-h3-", 0x40001, 0x20000, CRC(714778b5) SHA1(e2eaa35d6b5fa5df5163fe0d7b45fa66667f9947) )
2908 ROM_RELOAD( 0xc0001, 0x20000 )
2909 ROM_LOAD16_BYTE( "tom_c-l3-", 0x40000, 0x20000, CRC(2f049b03) SHA1(21047cb10912b1fc23795673af3ea7de249328b7) )
2910 ROM_RELOAD( 0xc0000, 0x20000 )
2911
2912 ROM_REGION( 0x10000, "mcu", 0 ) // i8751 microcontroller
2913 ROM_LOAD( "tom_c-pr-.ic1", 0x00000, 0x01000, CRC(9fa9b496) SHA1(b529bcd7bf123894e11f2a8df8826932122e375a) ) // i8751 MCU labeled TOM C-PR-
2914
2915 ROM_REGION( 0x080000, "sprites", 0 )
2916 ROM_LOAD( "r200", 0x00000, 0x20000, CRC(0b83265f) SHA1(b31918d6442b79c9fe4f20410189788b050a994e) ) // sprites
2917 ROM_LOAD( "r210", 0x20000, 0x20000, CRC(8ec5f6f3) SHA1(210f2753f5eeb06396758d21ab1778d459add247) )
2918 ROM_LOAD( "r220", 0x40000, 0x20000, CRC(a41d3bfd) SHA1(536fb7c0321dbbc1a8b73e9647fba9c53a253fcc) )
2919 ROM_LOAD( "r230", 0x60000, 0x20000, CRC(9d81a25b) SHA1(a354537c2fbba85f06485aa8487d7583a7133357) )
2920
2921 ROM_REGION( 0x040000, "gfx2", 0 )
2922 ROM_LOAD( "r2a0.a0", 0x00000, 0x10000, CRC(3ca3e771) SHA1(be052e01c5429ee89057c9d408794f2c7744047c) ) // tiles #1
2923 ROM_LOAD( "r2a1.a1", 0x10000, 0x10000, CRC(7a05ee2f) SHA1(7d1ca5db9a5a85610129e3bc6c640ade036fe7f9) )
2924 ROM_LOAD( "r2a2.a2", 0x20000, 0x10000, CRC(79aa2335) SHA1(6b70c79d800a7b755aa7c9a368c4ea74029aaa1e) )
2925 ROM_LOAD( "r2a3.a3", 0x30000, 0x10000, CRC(789e8b24) SHA1(e957cd25c3c155ca295ab1aea03d610f91562cfb) )
2926
2927 ROM_REGION( 0x040000, "gfx3", 0 )
2928 ROM_LOAD( "078.b0", 0x00000, 0x10000, CRC(44626bf6) SHA1(571ef74d42d30a272ff0fb33f830652b4a4bad29) ) // tiles #2
2929 ROM_LOAD( "079.b1", 0x10000, 0x10000, CRC(464952cf) SHA1(6b99360b6ba1ed5a72c257f51291f9f7a1ddf363) )
2930 ROM_LOAD( "080.b2", 0x20000, 0x10000, CRC(3db9b2c7) SHA1(02a318ffc459c494b7f40827eff5f89b41ac0426) )
2931 ROM_LOAD( "081.b3", 0x30000, 0x10000, CRC(f01fe899) SHA1(c5ab967b7af55a757638bcdc9975f4b15064022d) )
2932
2933 ROM_REGION( 0x10000, "samples", 0 ) // samples
2934 ROM_LOAD( "082", 0x00000, 0x10000, CRC(3ed51d1f) SHA1(84f3aa17d640df91387e5f1f5b5971cf8dcd4e17) )
2935 ROM_END
2936
2937 /*
2938 nec v30
2939 z80 (sharp LH0080B z80b-cpu)
2940 2x YM2203C
2941
2942 Crystals: 16MHz near the v30 and 28MHz near the z80 and ym2203c
2943 */
2944
2945 ROM_START( lohtb )
2946 ROM_REGION( 0x100000, "maincpu", 0 )
2947 ROM_LOAD16_BYTE( "lohtb03.b", 0x00001, 0x20000, CRC(8b845a70) SHA1(902c623310cd77b25592496745f9c6121149b516) )
2948 ROM_LOAD16_BYTE( "lohtb05.d", 0x00000, 0x20000, CRC(e90f7623) SHA1(e6e2f66a39286b2d7c03fc267beb2024913fb4ca) )
2949 ROM_LOAD16_BYTE( "lohtb02.a", 0x40001, 0x20000, CRC(714778b5) SHA1(e2eaa35d6b5fa5df5163fe0d7b45fa66667f9947) )
2950 ROM_RELOAD( 0xc0001, 0x20000 )
2951 ROM_LOAD16_BYTE( "lohtb04.c", 0x40000, 0x20000, CRC(2f049b03) SHA1(21047cb10912b1fc23795673af3ea7de249328b7) )
2952 ROM_RELOAD( 0xc0000, 0x20000 )
2953
2954 ROM_REGION( 0x10000, "soundcpu", 0 ) // Sound CPU program (Z80) + Samples
2955 ROM_LOAD( "lohtb01.02", 0x00000, 0x10000, CRC(e4bd8f03) SHA1(69fe41a978db92daa912cb345c2c7bafd2a6eb93) )
2956
2957 ROM_REGION( 0x080000, "sprites", 0 ) // Sprites
2958 ROM_LOAD( "lohtb14.11", 0x00000, 0x10000, CRC(df5ac5ee) SHA1(5b45417ada402047d97dfb6cee6545686ad26e37) )
2959 ROM_LOAD( "lohtb15.12", 0x20000, 0x10000, CRC(45220b01) SHA1(83715cf155f91c82067d69f14b3b01ed77777b7d) )
2960 ROM_LOAD( "lohtb16.13", 0x40000, 0x10000, CRC(25b85cfc) SHA1(c7a9962165379193dc6553ed1f977795a79e0f78) )
2961 ROM_LOAD( "lohtb17.14", 0x60000, 0x10000, CRC(763fa4ec) SHA1(2d72b1b41f24ae299fde23869942c0b6bbb82363) )
2962 ROM_LOAD( "lohtb18.15", 0x10000, 0x10000, CRC(d7ecf849) SHA1(ab86a88eae21e054d4e8a740a60c7c6c198232d4) )
2963 ROM_LOAD( "lohtb19.16", 0x30000, 0x10000, CRC(35d1a808) SHA1(9378ff000104ecfb842b3b884197be82c43a01b4) )
2964 ROM_LOAD( "lohtb20.17", 0x50000, 0x10000, CRC(464d8579) SHA1(b5981f4865ee5439f0e330091927e6d97d29933f) )
2965 ROM_LOAD( "lohtb21.18", 0x70000, 0x10000, CRC(a73568c7) SHA1(8fe1867256708cc1ed76d1bed5566b1852b47c40) )
2966
2967 ROM_REGION( 0x040000, "gfx2", ROMREGION_INVERT ) // tiles #1
2968 ROM_LOAD( "lohtb13.10", 0x00000, 0x10000, CRC(359f17d4) SHA1(2875ba48395e7faa1a58404475be936dcca45ed1) )
2969 ROM_LOAD( "lohtb11.08", 0x10000, 0x10000, CRC(73391e8a) SHA1(53ca89b8a10895f817ecdb9fa5eef462edb94ae6) )
2970 ROM_LOAD( "lohtb09.06", 0x20000, 0x10000, CRC(7096d390) SHA1(f4a16bf8aef7a1a65619ab022cbdb67d2f191888) )
2971 ROM_LOAD( "lohtb07.04", 0x30000, 0x10000, CRC(71a27b81) SHA1(d8fe72d15bbcd5b170d1123d8f4c58874cefdca3) )
2972
2973 ROM_REGION( 0x040000, "gfx3", ROMREGION_INVERT ) // tiles #2
2974 ROM_LOAD( "lohtb12.09", 0x00000, 0x10000, CRC(4d5e9b53) SHA1(3e3977bab7a66ed0171afcd555d181960e338749) )
2975 ROM_LOAD( "lohtb10.07", 0x10000, 0x10000, CRC(4f75a26a) SHA1(79c09a1ad3a6f9cfbd07cb527bbd89d2478ce582) )
2976 ROM_LOAD( "lohtb08.05", 0x20000, 0x10000, CRC(34854262) SHA1(37436c12579fb41d22a1596b495f065959c14a26) )
2977 ROM_LOAD( "lohtb06.03", 0x30000, 0x10000, CRC(f923183c) SHA1(a6b578191864aefa81e0cad3ba12a2ca491c91cf) )
2978
2979 ROM_REGION( 0x10000, "samples", ROMREGION_ERASEFF ) // -- no sample roms on bootleg, included with z80 code
2980
2981 ROM_REGION( 0x0117, "plds", 0 )
2982 ROM_LOAD( "gal16v8-25qp.ic3", 0x0000, 0x0117, CRC(6acdfafb) SHA1(2ffd6f5a846e49fd2a8c7c7dfc9cf015406a44df) )
2983 ROM_END
2984
2985 ROM_START( lohtb2 )
2986 ROM_REGION( 0x100000, "maincpu", 0 )
2987 ROM_LOAD16_BYTE( "loht-a2.bin", 0x00001, 0x10000, CRC(ccc90e54) SHA1(860da001d9b0782adc25cfc3b453383225253d9e) )
2988 ROM_LOAD16_BYTE( "loht-a3.bin", 0x20001, 0x10000, CRC(ff8a98de) SHA1(ccb8275241bea81abc01dc36e62557712c1b5a8c) )
2989 ROM_LOAD16_BYTE( "loht-a10.bin", 0x00000, 0x10000, CRC(3aa06730) SHA1(483b135f8ee0fc54b1953c7c28e909a88aa2fa2e) )
2990 ROM_LOAD16_BYTE( "loht-a11.bin", 0x20000, 0x10000, CRC(eab1d7bc) SHA1(ec50fe89f05ae46e91b9f2f3d4e4383aa764e71d) )
2991
2992 ROM_LOAD16_BYTE( "loht-a5.bin", 0x40001, 0x10000, CRC(79e007ec) SHA1(b2e4cc4a47f5f127ba9a1a00eaaf067464314ea0) )
2993 ROM_RELOAD( 0xc0001, 0x10000 )
2994 ROM_LOAD16_BYTE( "loht-a4.bin", 0x60001, 0x10000, CRC(254ea4d5) SHA1(07277bbe2ea6678f0de1f28e40be794880b3faff) )
2995 ROM_RELOAD( 0xe0001, 0x10000 )
2996 ROM_LOAD16_BYTE( "loht-a13.bin", 0x40000, 0x10000, CRC(b951346e) SHA1(82fa3c4a09a86b74b98c31aaea5c0629ddff83a0) )
2997 ROM_RELOAD( 0xc0000, 0x10000 )
2998 ROM_LOAD16_BYTE( "loht-a12.bin", 0x60000, 0x10000, CRC(cfb0390d) SHA1(4acc61a51a7ae681bd8d835e2644b44c4d6d7bcb) )
2999 ROM_RELOAD( 0xe0000, 0x10000 )
3000
3001 ROM_REGION( 0x10000, "mcu", 0 ) // MCU running in external mode on daughtercard. Same data as lohtj just padded with 0xff
3002 ROM_LOAD( "loht-a26.bin", 0x00000, 0x02000, CRC(ac901e17) SHA1(70a73288d594c78ad2aca78ce55a699cb040bede) )
3003
3004 ROM_REGION( 0x080000, "sprites", 0 )
3005 ROM_LOAD( "loht-a16.bin", 0x00000, 0x10000, CRC(df5ac5ee) SHA1(5b45417ada402047d97dfb6cee6545686ad26e37) )
3006 ROM_LOAD( "loht-a17.bin", 0x10000, 0x10000, CRC(d7ecf849) SHA1(ab86a88eae21e054d4e8a740a60c7c6c198232d4) )
3007 ROM_LOAD( "loht-a8.bin", 0x20000, 0x10000, CRC(45220b01) SHA1(83715cf155f91c82067d69f14b3b01ed77777b7d) )
3008 ROM_LOAD( "loht-a9.bin", 0x30000, 0x10000, CRC(4af9bb3c) SHA1(04f66caae5b3ae985451002293ad8f609a8d9377) )
3009 ROM_LOAD( "loht-a14.bin", 0x40000, 0x10000, CRC(25b85cfc) SHA1(c7a9962165379193dc6553ed1f977795a79e0f78) )
3010 ROM_LOAD( "loht-a15.bin", 0x50000, 0x10000, CRC(464d8579) SHA1(b5981f4865ee5439f0e330091927e6d97d29933f) )
3011 ROM_LOAD( "loht-a6.bin", 0x60000, 0x10000, CRC(763fa4ec) SHA1(2d72b1b41f24ae299fde23869942c0b6bbb82363) )
3012 ROM_LOAD( "loht-a7.bin", 0x70000, 0x10000, CRC(a73568c7) SHA1(8fe1867256708cc1ed76d1bed5566b1852b47c40) )
3013
3014 ROM_REGION( 0x040000, "gfx2", 0 )
3015 ROM_LOAD( "loht-a19.bin", 0x00000, 0x10000, CRC(3ca3e771) SHA1(be052e01c5429ee89057c9d408794f2c7744047c) ) // tiles #1
3016 // ROM_LOAD( "loht-a20.bin", 0x10000, 0x10000, BAD_DUMP CRC(db2e3d77) SHA1(3f0758f74490b084321d8b2da29525dd1f19da09) )
3017 ROM_LOAD( "loht-a20.bin", 0x10000, 0x10000, CRC(7a05ee2f) SHA1(7d1ca5db9a5a85610129e3bc6c640ade036fe7f9) )
3018 ROM_LOAD( "loht-a18.bin", 0x20000, 0x10000, CRC(79aa2335) SHA1(6b70c79d800a7b755aa7c9a368c4ea74029aaa1e) )
3019 ROM_LOAD( "loht-a21.bin", 0x30000, 0x10000, CRC(789e8b24) SHA1(e957cd25c3c155ca295ab1aea03d610f91562cfb) )
3020
3021 ROM_REGION( 0x040000, "gfx3", 0 )
3022 ROM_LOAD( "loht-a24.bin", 0x00000, 0x10000, CRC(44626bf6) SHA1(571ef74d42d30a272ff0fb33f830652b4a4bad29) ) // tiles #2
3023 ROM_LOAD( "loht-a25.bin", 0x10000, 0x10000, CRC(464952cf) SHA1(6b99360b6ba1ed5a72c257f51291f9f7a1ddf363) )
3024 ROM_LOAD( "loht-a23.bin", 0x20000, 0x10000, CRC(3db9b2c7) SHA1(02a318ffc459c494b7f40827eff5f89b41ac0426) )
3025 ROM_LOAD( "loht-a22.bin", 0x30000, 0x10000, CRC(f01fe899) SHA1(c5ab967b7af55a757638bcdc9975f4b15064022d) )
3026
3027 ROM_REGION( 0x10000, "samples", 0 ) // samples
3028 ROM_LOAD( "loht-a1.bin", 0x00000, 0x10000, CRC(3ed51d1f) SHA1(84f3aa17d640df91387e5f1f5b5971cf8dcd4e17) )
3029 ROM_END
3030
3031 ROM_START( lohtb3 ) // extremely similar to the original. Copyright changed to 1997 and 'IRGM BORP.'
3032 ROM_REGION( 0x100000, "maincpu", 0 )
3033 ROM_LOAD16_BYTE( "9.9", 0x00001, 0x20000, CRC(f1e4ebb7) SHA1(976ec822f57f36bc097deb5d3d86e7c2c1b247ed) )
3034 ROM_LOAD16_BYTE( "1.1", 0x00000, 0x20000, CRC(b9384e93) SHA1(5b882ecd68fdf7a6307af0e1aca2ab1782911227) )
3035
3036 ROM_LOAD16_BYTE( "i-10.10", 0x40001, 0x10000, CRC(79e007ec) SHA1(b2e4cc4a47f5f127ba9a1a00eaaf067464314ea0) )
3037 ROM_RELOAD( 0xc0001, 0x10000 )
3038 ROM_LOAD16_BYTE( "i-11.11", 0x60001, 0x10000, CRC(254ea4d5) SHA1(07277bbe2ea6678f0de1f28e40be794880b3faff) )
3039 ROM_RELOAD( 0xe0001, 0x10000 )
3040 ROM_LOAD16_BYTE( "i-2.2", 0x40000, 0x10000, CRC(b951346e) SHA1(82fa3c4a09a86b74b98c31aaea5c0629ddff83a0) )
3041 ROM_RELOAD( 0xc0000, 0x10000 )
3042 ROM_LOAD16_BYTE( "i-3.3", 0x60000, 0x10000, CRC(cfb0390d) SHA1(4acc61a51a7ae681bd8d835e2644b44c4d6d7bcb) )
3043 ROM_RELOAD( 0xe0000, 0x10000 )
3044
3045 ROM_REGION( 0x10000, "mcu", 0 ) // i8751 microcontroller
3046 ROM_LOAD( "c8751h.bin", 0x00000, 0x01000, CRC(9c9545f1) SHA1(ca800ce7467efb877d0fff4c47d72478a991e2a9) ) // unprotected?? == tom_c-pr-b.ic1 from loht (World) set
3047
3048 ROM_REGION( 0x080000, "sprites", 0 )
3049 ROM_LOAD( "i-8.8", 0x00000, 0x10000, CRC(df5ac5ee) SHA1(5b45417ada402047d97dfb6cee6545686ad26e37) )
3050 ROM_LOAD( "i-7.7", 0x10000, 0x10000, CRC(d7ecf849) SHA1(ab86a88eae21e054d4e8a740a60c7c6c198232d4) )
3051 ROM_LOAD( "i-15.15", 0x20000, 0x10000, CRC(45220b01) SHA1(83715cf155f91c82067d69f14b3b01ed77777b7d) )
3052 ROM_LOAD( "i-14.14", 0x30000, 0x10000, CRC(35d1a808) SHA1(9378ff000104ecfb842b3b884197be82c43a01b4) )
3053 ROM_LOAD( "i-6.6", 0x40000, 0x10000, CRC(25b85cfc) SHA1(c7a9962165379193dc6553ed1f977795a79e0f78) )
3054 ROM_LOAD( "i-5.5", 0x50000, 0x10000, CRC(464d8579) SHA1(b5981f4865ee5439f0e330091927e6d97d29933f) )
3055 ROM_LOAD( "i-13.13", 0x60000, 0x10000, CRC(763fa4ec) SHA1(2d72b1b41f24ae299fde23869942c0b6bbb82363) )
3056 ROM_LOAD( "i-12.12", 0x70000, 0x10000, CRC(a73568c7) SHA1(8fe1867256708cc1ed76d1bed5566b1852b47c40) )
3057
3058 ROM_REGION( 0x040000, "gfx2", 0 )
3059 ROM_LOAD( "i-20.20", 0x00000, 0x10000, CRC(3ca3e771) SHA1(be052e01c5429ee89057c9d408794f2c7744047c) ) // tiles #1
3060 ROM_LOAD( "r-21.21", 0x10000, 0x10000, CRC(7a05ee2f) SHA1(7d1ca5db9a5a85610129e3bc6c640ade036fe7f9) )
3061 ROM_LOAD( "i-19.19", 0x20000, 0x10000, CRC(79aa2335) SHA1(6b70c79d800a7b755aa7c9a368c4ea74029aaa1e) )
3062 ROM_LOAD( "i-22.22", 0x30000, 0x10000, CRC(789e8b24) SHA1(e957cd25c3c155ca295ab1aea03d610f91562cfb) )
3063
3064 ROM_REGION( 0x040000, "gfx3", 0 )
3065 ROM_LOAD( "r-25.25", 0x00000, 0x10000, CRC(44626bf6) SHA1(571ef74d42d30a272ff0fb33f830652b4a4bad29) ) // tiles #2
3066 ROM_LOAD( "r-26.26", 0x10000, 0x10000, CRC(464952cf) SHA1(6b99360b6ba1ed5a72c257f51291f9f7a1ddf363) )
3067 ROM_LOAD( "r-24.24", 0x20000, 0x10000, CRC(3db9b2c7) SHA1(02a318ffc459c494b7f40827eff5f89b41ac0426) )
3068 ROM_LOAD( "i-23.23", 0x30000, 0x10000, CRC(2e2a085d) SHA1(ed2eed6c30d44b176bd99eb386482b2a19e3b9cb) )
3069
3070 ROM_REGION( 0x10000, "samples", 0 ) // samples
3071 ROM_LOAD( "i-4.4", 0x00000, 0x10000, CRC(3ed51d1f) SHA1(84f3aa17d640df91387e5f1f5b5971cf8dcd4e17) )
3072 ROM_END
3073
3074 /* Legend of Hero Tonma for Ervisa Modular System
3075
3076 ROM Board (51)
3077 ___________________________________________________________
3078 | ________________ ________________ |
3079 | | | | | |
3080 | | LG 506 | | LG 508 | |
3081 | |_______________| |_______________| |
3082 | :::::::: ________________ ________________ |
3083 | | | | | |
3084 | __ | LG 505 | | LG 507 | |
3085 | | | |_______________| |_______________| |
3086 | | | __________ ________________ ________________ |
3087 | | | |_GAL16V8| | | | | |
3088 | | | | EMPTY | | EMPTY | |
3089 | | | |_______________| |_______________| |
3090 | | | __________ ________________ ________________ |
3091 | | | |_GAL16V8| | | | | |
3092 | | | | EMPTY | | EMPTY | |
3093 | | | |_______________| |_______________| |
3094 | | | _________ ________________ ________________ |
3095 | | | |74LS138N | | | | |
3096 | | | | EMPTY | | EMPTY | |
3097 | | | |_______________| |_______________| |
3098 | | |________________ ________________ |
3099 | |_|| | | | |
3100 | | LG 502 | | LG 504 | |
3101 | |_______________| |_______________| |
3102 | ________________ ________________ |
3103 | | | | | |
3104 | | LG 501 | | LG 503 | |
3105 | |_______________| |_______________| |
3106 | ________________ ________________ |
3107 | | | | | MODULAR |
3108 | | EMPTY | | EMPTY | SYSTEM 2 |
3109 | |_______________| |_______________| |
3110 | ________________ ________________ |
3111 | | | | | |
3112 | | EMPTY | | EMPTY | |
3113 | |_______________| |_______________| |
3114 | ________________ ________________ |
3115 | | | | | |
3116 | | EMPTY | | EMPTY | |
3117 | |_______________| |_______________| |
3118 | ________________ ________________ |
3119 | | | | | |
3120 | | EMPTY | | EMPTY | |
3121 | |_______________| |_______________| |
3122 |__________________________________________________________|
3123
3124 ROM Board (8)
3125 __________________________________________________________________________________
3126 | :::::::: <- Jumpers |
3127 | ________________ ________________ ________________ ________________ |
3128 | _______ | | | | | | | ||
3129 | 74LS175N | EMPTY | | EMPTY | | EMPTY | | EMPTY ||
3130 | |_______________| |_______________| |_______________| |_______________||
3131 | _______ ________________ ________________ ________________ ________________ |
3132 | 74LS175N | | | | | | | ||
3133 | | EMPTY | | EMPTY | | EMPTY | | EMPTY ||
3134 | _______ |_______________| |_______________| |_______________| |_______________||
3135 | 74LS175N ________________ ________________ ________________ ________________ |
3136 | | | | | | | | ||
3137 | _______ | EMPTY | | EMPTY | | EMPTY | | EMPTY ||
3138 | 74LS175N |_______________| |_______________| |_______________| |_______________||
3139 | ________________ ________________ ________________ ________________ |
3140 | _______ | | | | | | | ||
3141 | 74LS175N | EMPTY | | EMPTY | | EMPTY | | EMPTY ||
3142 | |_______________| |_______________| |_______________| |_______________||
3143 | ________________ ________________ ________________ ________________ |
3144 | _______ | | | | | | | ||
3145 | 74LS175N | EMPTY | | EMPTY | | EMPTY | | EMPTY ||
3146 | |_______________| |_______________| |_______________| |_______________||
3147 | ________________ ________________ ________________ ________________ |
3148 | _______ | | | | | | | ||
3149 | 74LS175N | LG 802 | | LG 804 | | LG 806 | | LG 808 ||
3150 | |_______________| |_______________| |_______________| |_______________||
3151 | _______ ________________ ________________ ________________ ________________ |
3152 | 74LS175N | | | | | | | ||
3153 | | LG 801 | | LG 803 | | LG 805 | | LG 807 ||
3154 | |_______________| |_______________| |_______________| |_______________||
3155 | _____________________________ _______ _________________________________ |
3156 |__| |____74LS138N_| |__|
3157 |____________________________| |________________________________|
3158
3159 CPU Board (6) Board 21/1
3160 _____________________________________________ ______________________________________________
3161 | _______________ __|_ | |
3162 | | | | | | |
3163 | | KM62245AP-10 | | | | ________ _______ ________ |
3164 | |______________| _______ | | | |_EMPTY_| |_EMPTY_| |_EMPTY_| |
3165 | _______ ________________ 74LS138N | | | |
3166 | 74LS367AN | | | | | |
3167 | | LG 606 | | | | |
3168 | |_______________| | | | ________ _______ ________ |
3169 | ________________ _______ | | | |74S74N_| |74LS393N |74LS393N |
3170 | _______ | | 74LS245N | | | |
3171 | 74LS367AN | LG 605 | | | | |
3172 | |_______________| | | | |
3173 | ________________ | | | |
3174 | _______ | | _______ | | | 74LS7273N |82S129_| |82S129_| |
3175 | 74LS138N | LG 604 | 74LS374P | | | 209 204 |
3176 | |_______________| | | | |
3177 | _______________ | | | |
3178 | | | _______ |___| | ________ _______ ________ |
3179 | _______ | KM62245AP-10 | 74LS245N | | 74LS74AN XTAL 74LS367AN |
3180 | GAL16V8 |______________| | | 28.00000 MHz |
3181 | 686 ________________ | | |
3182 | _______ | | _______ | | ________ _______ ________ |
3183 | 74LS174AN | LG 603 | 74LS374P | | 74LS732B1 74LS368AN AM2148-55DC __|_
3184 | |_______________| | | | |
3185 | _______ ________________ | | | |
3186 | GAL16V8 | | | | ________ _______ ________ | |
3187 | 8638 | LG 602 | _______ | | 74LS157N 74S112AN AM2148-55DC | |
3188 | _______ |_______________| 74LS138N | | | |
3189 | GAL16V8 ________________ | | | |
3190 | 8600 | | | | ________ _______ ________ | |
3191 | _______ | LG 601 | | | 74LS148N 74LS368AN AM2148-55DC | |
3192 | 74LS373N |_______________| _______ | | | |
3193 |___________________________ 74LS32N | | | |
3194 ||_________________ _______ | | | ________ _______ ________ ________ | |
3195 ||| |74LS737N| _______ | | 74LS298P 74LS298P 74LS298P 74LS174N | |
3196 ||| NEC V30 |_______ | 74LS20N | | | |
3197 |||________________|74LS737N| | | | |
3198 ||__________________________| | | ________ _______ ________ ________ | |
3199 | _______ ______ _______ _______ | | 74LS245N 74LS245N |74LS08P 74LS174N | |
3200 | |74S74N XTAL 74LS368AN 74LS132N | | |___|
3201 |__________20.000MHz_________________________| |_____________________________________________|
3202
3203 Board 5 Sound Board 1/3
3204 _____________________________________________ ______________________________________________
3205 | | | |
3206 | __________ ________ ________ ________ | | ________ ________ ________ |
3207 | |TO SUB 51| 74LS299N 74LS169N UM2149-1 | | 74LS107AN |74LS3Z_| |_EMPTY_| |
3208 | |_________| ________ ________ ________ | | |
3209 | 74LS169J 74LS169N UM2149-1 | | ________ __________________ |
3210 | | | 74LS368AB1 | | |
3211 | __________ ________ ________ ________ | | | EMPTY | |
3212 | |TO SUB 51| 74LS158N 74LS169N |82S129N <- 502 | ________ |_________________| |
3213 | |_________| ________ ________ ________ | | 74LS74AN __________________ |
3214 | 74LS299N 74LS169N 74LS244N | | | Z8400BB1 | |
3215 | | | ________ | Z80 B CPU | ________ |
3216 | __________ ________ ________ ________ | | 74HCT157E |_________________| |CA324E_| |
3217 | |TO SUB 51| 74LS299N 74LS169N 74LS244N | | ________________ |
3218 | |_________| ________ ________ ________ | | ________ | | __ |
3219 | |74LS20N UM2149-1 74LS298P | 105->N82S123N | LG 1 | |D||
3220 | | | ________ |_______________| |I||
3221 | __________ ________ ________ ________ | | 74HCT157E ________________ |P|| SOUND SUB
3222 | |TO SUB 51| 74LS299N UM2149-1 74LS298P | | __________ | | _____ _____ |S|| _________________
3223 | |_________| | | | || SRM2064C-15 |Y3014B Y3014B|-|| | ______ |
3224 | ________ ________ ________ ________ __ | | | SOUND ||_______________| |D|| | LM358N ___ |
3225 | 74LS273P |74LS00N 74LS86B1 74LS244N | || | | SUB | |I|| | .......... | | |
3226 | | || | | | |P|| | |OKI |
3227 _|_ ________ ________ ________ ________ |T|| __|_|_________|__________________ |S|| | .......... |M5205
3228 | | 74LS08B1 74LS158N 74LS74AN |74LS20N |O|| | | | YAMAHA | |_|| | ________ |__| |
3229 | | | || | | | YM2203C | | | 74LS377B1 |
3230 | | ________ ________ ________ ________ |S|| | | |_________________| | |_________________|
3231 IC64->PAL16R6A 74LS393N 74LS368AN 74LS377N |U|| | | |
3232 | | |B|| | | _______ ________ |
3233 | | ________ ________ ________ ________ | || | | |EMPTY_| 74LS74AN |
3234 | | 74LS138N 74LS283N AM2148-55DC EMPTY |5|| | | |
3235 | | |1|| | | |
3236 | | ________ ________ ________ ________ | || | | __________________ _____ |
3237 | | 74LS175P 74LS283N AM2148-55DC 74LS273P || | | _______ | YAMAHA | TDA2003 |
3238 | | | || | | |EMPTY| | YM2203C | |
3239 | | ________ ________ ________ ________ |_|| | | |_________________| |
3240 | | 74LS298P 74LS157N 74LS157N 74LS273P | | | |
3241 | | | | | |
3242 | | ________ ________ ________ ________ | | | |
3243 | | 74LS158N 74LS169N 74LS169N 74LS245P | | | |
3244 |__| | |___| __________________________ |
3245 |____________________________________________| |__________| |_|_|_|_|_|_|_|_|_|_|_| |________|
3246 PRE-JAMMA
3247 Board 7/4
3248 __________________________________________________________
3249 | _________ _________ __________ _________ _________ __|_
3250 | 74LS163AP| 74LS163AP||_GAL20V8_| |74S174N_| |74S189N_|| |
3251 | 7636 | |
3252 | _________ _________ _________ _________ _________ | |
3253 | |74LS157N| |74LS288N| |74LS273P| 74LS290B1| |74S189N_|| |
3254 | | |
3255 | _________ _________ _________ _________ _________ | |
3256 | |74LS393N| 74LS283N_|74HCTLS373N 74LS298B1| |74S189N_|| |
3257 | | |
3258 | _________ __________ _____________ _________ | |
3259 | |74LS157N| |_GAL16V8_| |KM62256AP-10| |74S174N_| | |
3260 | 7536 |____________| _________ | |
3261 | _________ __________ _____________ |74S174N_| | |
3262 | |74LS283N| |74LS245P_| |KM62256AP-10| __________ | |
3263 | _________ __________ |____________| |74LS245P_| | |
3264 | |74LS20B1| |74LS245P_| | |
3265 | _________ __________ __________ _________ | |
3266 | |74LS20B1| |74LS374N_| |74LS273P_| |74LS74AP| | |
3267 | _________ __________ __________ _________ |___|
3268 | |74LS04N_| |_GAL16V8_| |74LS374N_| |74LS157N| |
3269 | 7336 |
3270 | _________ __________ __________ _________ |
3271 | |74LS00N_| |_GAL16V8_| |74LS273P_| 74LS367AN __|_
3272 | 7236 | |
3273 | _________ __________ __________ _________ | |
3274 | |74LS08B1| |74LS273P_| |74LS374N_| |GAL16V8_| | |
3275 | 7436 | |
3276 | _________ __________ __________ _________ | |
3277 | |74LS74AP| |74LS273P_| 74LS367AB1| 74HCTLS373N | |
3278 | | |
3279 | _________ __________ __________ _________ | |
3280 | |74LS32P_| |74LS374N_| 74LS367AB1| GAL20V8-25LP | |
3281 | 7136 | |
3282 | _________ _________ _________ _________ _________ | |
3283 | 74LS139AN |_74S74N_| |74LS157N| |74LS20B1| 74HCTLS373N |
3284 | _________ _________ _________ _________ _________ | |
3285 | |74LS32N_| |74LS157N|74HCTLS597N 74HCTLS597N 74HCTLS597N |
3286 | _________ _________ _________ _________ _________ | |
3287 | |74LS748P| |74LS86N_|74HCTLS597N 74HCTLS597N 74HCTLS597N |
3288 | _________ _________ _________ _________ _________ | |
3289 | |74LS748P| |74LS86N_|74HCTLS597N 74HCTLS597N 74HCTLS597N |
3290 | _________ _________ _________ _________ | |
3291 | |74LS377N|74HCTLS597N 74HCTLS597N 74HCTLS597N |
3292 | _________ _________ _________ _________ |___|
3293 | |74LS273P| |74LS169N| |74LS169N| |74LS169N| |
3294 |_________________________________________________________|
3295
3296 */
3297 ROM_START( loht_ms ) // really similar to lohtb, even if it runs on 'Modular Hardware'
3298 ROM_REGION( 0x100000, "maincpu", 0 )
3299 ROM_LOAD16_BYTE( "6_lg_604.ic17", 0x00001, 0x10000, CRC(7e84b6ce) SHA1(a9a54f045917a191b6d6bbe061fc7a3344efb3bb) )
3300 ROM_LOAD16_BYTE( "6_lg_605.ic20", 0x20001, 0x10000, CRC(abdcd211) SHA1(6ad79c4ef14d908032e4dbded7696a66fe5d31da) )
3301 ROM_LOAD16_BYTE( "6_lg_601.ic8", 0x00000, 0x10000, CRC(7e080cb8) SHA1(598bcd8ecebe1922735b61cc1305e8839d9d054e) )
3302 ROM_LOAD16_BYTE( "6_lg_602.ic11", 0x20000, 0x10000, CRC(150d1178) SHA1(71df3c9a49eb74cf40790e9b4cf7c6260fbd07d6) )
3303 ROM_LOAD16_BYTE( "6_lg_606.ic26", 0x40001, 0x20000, CRC(714778b5) SHA1(e2eaa35d6b5fa5df5163fe0d7b45fa66667f9947) )
3304 ROM_RELOAD( 0xc0001, 0x20000 )
3305 ROM_LOAD16_BYTE( "6_lg_603.ic25", 0x40000, 0x20000, CRC(2f049b03) SHA1(21047cb10912b1fc23795673af3ea7de249328b7) )
3306 ROM_RELOAD( 0xc0000, 0x20000 )
3307
3308 ROM_REGION( 0x10000, "soundcpu", 0 ) // Sound CPU program (Z80) + Samples
3309 ROM_LOAD( "1_lg_1.ic12", 0x00000, 0x10000, CRC(7aa26b54) SHA1(01df7ea6443bbc775d5592edc32816853c857189) )
3310
3311 ROM_REGION( 0x080000, "sprites", 0 ) // Sprites
3312 ROM_LOAD( "5_lg_501.ic5", 0x00000, 0x10000, CRC(df5ac5ee) SHA1(5b45417ada402047d97dfb6cee6545686ad26e37) )
3313 ROM_LOAD( "5_lg_503.ic14", 0x20000, 0x10000, CRC(45220b01) SHA1(83715cf155f91c82067d69f14b3b01ed77777b7d) )
3314 ROM_LOAD( "5_lg_505.ic20", 0x40000, 0x10000, CRC(25b85cfc) SHA1(c7a9962165379193dc6553ed1f977795a79e0f78) )
3315 ROM_LOAD( "5_lg_507.ic26", 0x60000, 0x10000, CRC(763fa4ec) SHA1(2d72b1b41f24ae299fde23869942c0b6bbb82363) )
3316 ROM_LOAD( "5_lg_502.ic6", 0x10000, 0x10000, CRC(d7ecf849) SHA1(ab86a88eae21e054d4e8a740a60c7c6c198232d4) )
3317 ROM_LOAD( "5_lg_504.ic15", 0x30000, 0x10000, CRC(35d1a808) SHA1(9378ff000104ecfb842b3b884197be82c43a01b4) )
3318 ROM_LOAD( "5_lg_506.ic21", 0x50000, 0x10000, CRC(464d8579) SHA1(b5981f4865ee5439f0e330091927e6d97d29933f) )
3319 ROM_LOAD( "5_lg_508.ic27", 0x70000, 0x10000, CRC(a73568c7) SHA1(8fe1867256708cc1ed76d1bed5566b1852b47c40) )
3320
3321 ROM_REGION( 0x040000, "gfx2", ROMREGION_INVERT ) // tiles #1
3322 ROM_LOAD( "8_lg_801.ic15", 0x00000, 0x10000, CRC(359f17d4) SHA1(2875ba48395e7faa1a58404475be936dcca45ed1) )
3323 ROM_LOAD( "8_lg_803.ic22", 0x10000, 0x10000, CRC(73391e8a) SHA1(53ca89b8a10895f817ecdb9fa5eef462edb94ae6) )
3324 ROM_LOAD( "8_lg_805.ic30", 0x20000, 0x10000, CRC(7096d390) SHA1(f4a16bf8aef7a1a65619ab022cbdb67d2f191888) )
3325 ROM_LOAD( "8_lg_807.ic37", 0x30000, 0x10000, CRC(1c113901) SHA1(3d4ce2ac6cdad0e1b0a21ffb062f9c92700adcf4) )
3326
3327 ROM_REGION( 0x040000, "gfx3", ROMREGION_INVERT ) // tiles #2
3328 ROM_LOAD( "8_lg_802.ic14", 0x00000, 0x10000, CRC(4d5e9b53) SHA1(3e3977bab7a66ed0171afcd555d181960e338749) )
3329 ROM_LOAD( "8_lg_804.ic21", 0x10000, 0x10000, CRC(4f75a26a) SHA1(79c09a1ad3a6f9cfbd07cb527bbd89d2478ce582) )
3330 ROM_LOAD( "8_lg_806.ic29", 0x20000, 0x10000, CRC(34854262) SHA1(37436c12579fb41d22a1596b495f065959c14a26) )
3331 ROM_LOAD( "8_lg_808.ic36", 0x30000, 0x10000, CRC(f923183c) SHA1(a6b578191864aefa81e0cad3ba12a2ca491c91cf) )
3332
3333 ROM_REGION( 0x10000, "samples", ROMREGION_ERASEFF ) // -- no sample roms on bootleg, included with z80 code
3334
3335 ROM_REGION( 0x320, "prom", ROMREGION_ERASEFF )
3336 ROM_LOAD( "51_502_82s129n.ic10", 0x000, 0x100, CRC(15085e44) SHA1(646e7100fcb112594023cf02be036bd3d42cc13c) )
3337 ROM_LOAD( "21_204_82s129an.ic4", 0x100, 0x100, CRC(74470450) SHA1(40b0e0991090733f8190ad7efcb500bd109c2a7e) )
3338 ROM_LOAD( "21_209_82s129an.ic12", 0x200, 0x100, CRC(7922a7ab) SHA1(e7ec2b1fc61bd7d2cf921bfc50d975f91b938e8a) )
3339 ROM_LOAD( "1_105_82s123n.ic20", 0x300, 0x020, CRC(14d72781) SHA1(372dc021d8aaf4aa6fd46e69a3d8f1c68113426f) )
3340
3341 ROM_REGION( 0x104, "plds", ROMREGION_ERASEFF )
3342 ROM_LOAD( "51_p0503_pal16r6.ic46", 0x000, 0x104, CRC(07eb86d2) SHA1(482eb325df5bc60353bac85412cf45429cd03c6d) )
3343 // these were read protected
3344 ROM_LOAD( "5_5136_gal16v8-25lp.ic9", 0x0, 0x1, NO_DUMP )
3345 ROM_LOAD( "5_5236_gal16v8-25lp.ic8", 0x0, 0x1, NO_DUMP )
3346 ROM_LOAD( "6_686_gal16v8.ic13", 0x0, 0x1, NO_DUMP )
3347 ROM_LOAD( "6_8638_gal16v8.ic7", 0x0, 0x1, NO_DUMP )
3348 ROM_LOAD( "6_subcpu_8600_gal16v8.ic3", 0x0, 0x1, NO_DUMP )
3349 ROM_LOAD( "7_7136_gal20v8-25lp.ic7", 0x0, 0x1, NO_DUMP )
3350 ROM_LOAD( "7_7236_gal20v8-25lp.ic54", 0x0, 0x1, NO_DUMP )
3351 ROM_LOAD( "7_7336_gal16v8.ic55", 0x0, 0x1, NO_DUMP )
3352 ROM_LOAD( "7_7436_gal16v8.ic9", 0x0, 0x1, NO_DUMP )
3353 ROM_LOAD( "7_7536_gal16v8.ic59", 0x0, 0x1, NO_DUMP )
3354 ROM_LOAD( "7_7636_gal20v8-25lp.ic44", 0x0, 0x1, NO_DUMP )
3355 ROM_END
3356
3357
3358 ROM_START( xmultiplm72 )
3359 ROM_REGION( 0x100000, "maincpu", 0 )
3360 ROM_LOAD16_BYTE( "xm_c-h3-.ic43", 0x00001, 0x20000, CRC(20685021) SHA1(92f4216320bf525045223b9454fb5bb224c536d8) )
3361 ROM_LOAD16_BYTE( "xm_c-l3-.ic34", 0x00000, 0x20000, CRC(93fdd200) SHA1(dd4244ba0ce6c621136b0648374179da44363c01) )
3362 ROM_LOAD16_BYTE( "xm_c-h0-.ic40", 0x40001, 0x10000, CRC(9438dd8a) SHA1(dc85789c47d31a96300b4236dc43f065e1b01e4a) )
3363 ROM_RELOAD( 0xe0001, 0x10000 )
3364 ROM_LOAD16_BYTE( "xm_c-l0-.ic37", 0x40000, 0x10000, CRC(06a9e213) SHA1(9831c110814642703d6e71d49848d854095b7d3a) )
3365 ROM_RELOAD( 0xe0000, 0x10000 )
3366
3367 ROM_REGION( 0x10000, "mcu", 0 ) // i8751 microcontroller
3368 ROM_LOAD( "xm_c-pr-.ic1", 0x00000, 0x01000, CRC(c8ceb3cd) SHA1(e5d20a3a9d7f0919604543c97643a03434d80130) ) // i8751 MCU labeled XM C-PR-
3369
3370 ROM_REGION( 0x100000, "sprites", 0 )
3371 ROM_LOAD( "t44.00.ic53", 0x00000, 0x20000, CRC(db45186e) SHA1(8c8edeb4b7e6b0516f2597823dc27eba9c5d9528) ) // sprites
3372 ROM_LOAD( "t45.01.ic52", 0x20000, 0x20000, CRC(4d0764d4) SHA1(4942333336a110b033f16ac1afa06ffef7b2dad6) )
3373 ROM_LOAD( "t46.10.ic51", 0x40000, 0x20000, CRC(f0c465a4) SHA1(69c107c860d4e8736431fd86b6821b70a8367eb3) )
3374 ROM_LOAD( "t47.11.ic50", 0x60000, 0x20000, CRC(1263b24b) SHA1(0445a5381df3a868bed6967c8e5de7169e4be6a3) )
3375 ROM_LOAD( "t48.20.ic49", 0x80000, 0x20000, CRC(4129944f) SHA1(988b072032d1667c3ac0731fada32fb6978505dc) )
3376 ROM_LOAD( "t49.21.ic48", 0xa0000, 0x20000, CRC(2346e6f9) SHA1(b3de017dd0353e04d279f57e151c47f5fcc70e9c) )
3377 ROM_LOAD( "t50.30.ic47", 0xc0000, 0x20000, CRC(e322543e) SHA1(b4c3a7f202d81485d5f0a7b7668ee89fc1edb215) )
3378 ROM_LOAD( "t51.31.ic46", 0xe0000, 0x20000, CRC(229bf7b1) SHA1(ae42c7efbb6278dd3fa56842361138391f2d49ca) )
3379
3380 ROM_REGION( 0x080000, "gfx2", 0 )
3381 ROM_LOAD( "t53.a0", 0x00000, 0x20000, CRC(1a082494) SHA1(63a3a84a262833d2cafab41e35df8f10a5e317b1) ) // tiles #1
3382 ROM_LOAD( "t54.a1", 0x20000, 0x20000, CRC(076c16c5) SHA1(4be858806b916953d59aceee550e721eaf3996a6) )
3383 ROM_LOAD( "t55.a2", 0x40000, 0x20000, CRC(25d877a5) SHA1(48c948bf714c432f534c098123c8f50d5561756f) )
3384 ROM_LOAD( "t56.a3", 0x60000, 0x20000, CRC(5b1213f5) SHA1(87782aa0bd04d4378c4ba78b63028ae2709da2f1) )
3385
3386 ROM_REGION( 0x080000, "gfx3", 0 )
3387 ROM_LOAD( "t57.b0", 0x00000, 0x20000, CRC(0a84e0c7) SHA1(67ad181a7d2c431cb4bf45955e09754549a03576) ) // tiles #2
3388 ROM_LOAD( "t58.b1", 0x20000, 0x20000, CRC(a874121d) SHA1(1351d5901d55059c6472a4588a2e560396903861) )
3389 ROM_LOAD( "t59.b2", 0x40000, 0x20000, CRC(69deb990) SHA1(1eed3183efbe576376661b45152a0a21240ecfc8) )
3390 ROM_LOAD( "t60.b3", 0x60000, 0x20000, CRC(14c69f99) SHA1(4bea72f8bd421ef3ca559363f7473ce2e7038699) )
3391
3392 ROM_REGION( 0x20000, "samples", 0 ) // samples
3393 ROM_LOAD( "t52.v0.ic44", 0x00000, 0x20000, CRC(2db1bd80) SHA1(657006d0642ec7fb949bb52821d78fe51a599415) )
3394 ROM_END
3395
3396
3397 ROM_START( dbreedm72 )
3398 ROM_REGION( 0x100000, "maincpu", 0 )
3399 ROM_LOAD16_BYTE( "db_c-h3-b.ic43", 0x00001, 0x20000, CRC(4bf3063c) SHA1(3f970c9ece2ac700738e217e0b31b3aba2848ab2) ) // need to verify label, with MCU DB C-PR- below shows ROM NG 1 2
3400 ROM_LOAD16_BYTE( "db_c-l3-b.ic34", 0x00000, 0x20000, CRC(e4b89b79) SHA1(c312925940633e60fb5d0f05044c6e73e4f7fd54) ) // need to verify label
3401 ROM_LOAD16_BYTE( "db_c-h0.ic40", 0x60001, 0x10000, CRC(5aa79fb2) SHA1(b7b862699ddccf90cf18d3822703078668aa1dc7) )
3402 ROM_RELOAD( 0xe0001, 0x10000 )
3403 ROM_LOAD16_BYTE( "db_c-l0.ic37", 0x60000, 0x10000, CRC(ed0f5e06) SHA1(9030840b15e83c18d59c884ed08c93c05fa70c5b) )
3404 ROM_RELOAD( 0xe0000, 0x10000 )
3405
3406 ROM_REGION( 0x10000, "mcu", 0 ) // i8751 microcontroller
3407 ROM_LOAD( "db_c-pr-b.ic1", 0x00000, 0x01000, NO_DUMP ) // Requires different currently undumped MCU code - i8751 MCU labeled DB C-PR-B??
3408
3409 ROM_REGION( 0x080000, "sprites", 0 )
3410 ROM_LOAD( "db_k800m.00", 0x00000, 0x20000, CRC(c027a8cf) SHA1(534dc416b8f5587168c7f644d3f9438c8a190491) ) // sprites
3411 ROM_LOAD( "db_k801m.10", 0x20000, 0x20000, CRC(093faf33) SHA1(2704f644cdce87daf975984f143b1d55ba731c3f) )
3412 ROM_LOAD( "db_k802m.20", 0x40000, 0x20000, CRC(055b4c59) SHA1(71315dd7476612f138cb64b905648791d44eb7da) )
3413 ROM_LOAD( "db_k803m.30", 0x60000, 0x20000, CRC(8ed63922) SHA1(51daa8a23e637f6b4394598ff4a1d26f65b59c8b) )
3414
3415 ROM_REGION( 0x080000, "gfx2", 0 ) // same roms are duplicated at a0-a3 and b0-b3, confirmed
3416 ROM_LOAD( "db_k804m.a0", 0x00000, 0x20000, CRC(4c83e92e) SHA1(6dade027435c48ab48bd4516d16a9961d4dd6fad) ) // tiles #1
3417 ROM_LOAD( "db_k805m.a1", 0x20000, 0x20000, CRC(835ef268) SHA1(89d0bb15201440dffad3ef745970f95505d7ab03) )
3418 ROM_LOAD( "db_k806m.a2", 0x40000, 0x20000, CRC(5117f114) SHA1(a401a3e638209b32d4101a5c2e2a8b4612eaa21b) )
3419 ROM_LOAD( "db_k807m.a3", 0x60000, 0x20000, CRC(8eb0c978) SHA1(7fc55bbe4d0923db88492bb7160a89de34e11cd6) )
3420
3421 ROM_REGION( 0x080000, "gfx3", 0 )
3422 ROM_LOAD( "db_k804m.b0", 0x00000, 0x20000, CRC(4c83e92e) SHA1(6dade027435c48ab48bd4516d16a9961d4dd6fad) ) // tiles #2
3423 ROM_LOAD( "db_k805m.b1", 0x20000, 0x20000, CRC(835ef268) SHA1(89d0bb15201440dffad3ef745970f95505d7ab03) )
3424 ROM_LOAD( "db_k806m.b2", 0x40000, 0x20000, CRC(5117f114) SHA1(a401a3e638209b32d4101a5c2e2a8b4612eaa21b) )
3425 ROM_LOAD( "db_k807m.b3", 0x60000, 0x20000, CRC(8eb0c978) SHA1(7fc55bbe4d0923db88492bb7160a89de34e11cd6) )
3426
3427 ROM_REGION( 0x20000, "samples", 0 ) // samples
3428 ROM_LOAD( "db_c-v0.ic44", 0x00000, 0x20000, CRC(312f7282) SHA1(742d56980b4618180e9a0e02051c5aec4d5cdae4) )
3429 ROM_END
3430
3431 ROM_START( dbreedjm72 )
3432 ROM_REGION( 0x100000, "maincpu", 0 )
3433 ROM_LOAD16_BYTE( "db_c-h3.ic43", 0x00001, 0x20000, CRC(43425d67) SHA1(a87339bf299f7e84b9a181f3827278f64a6a29ea) )
3434 ROM_LOAD16_BYTE( "db_c-l3.ic34", 0x00000, 0x20000, CRC(9c1abc85) SHA1(6c73fbec12a7795e327381d886a87bca09a7dff0) )
3435 ROM_LOAD16_BYTE( "db_c-h0.ic40", 0x60001, 0x10000, CRC(5aa79fb2) SHA1(b7b862699ddccf90cf18d3822703078668aa1dc7) )
3436 ROM_RELOAD( 0xe0001, 0x10000 )
3437 ROM_LOAD16_BYTE( "db_c-l0.ic37", 0x60000, 0x10000, CRC(ed0f5e06) SHA1(9030840b15e83c18d59c884ed08c93c05fa70c5b) )
3438 ROM_RELOAD( 0xe0000, 0x10000 )
3439
3440 ROM_REGION( 0x10000, "mcu", 0 ) // i8751 microcontroller
3441 ROM_LOAD( "db_c-pr-.ic1", 0x00000, 0x01000, CRC(8bf2910c) SHA1(65842c928626077f613e0ab56074e83301a64a2e) ) // i8751 MCU labeled DB C-PR-
3442
3443 ROM_REGION( 0x080000, "sprites", 0 )
3444 ROM_LOAD( "db_k800m.00", 0x00000, 0x20000, CRC(c027a8cf) SHA1(534dc416b8f5587168c7f644d3f9438c8a190491) ) // sprites
3445 ROM_LOAD( "db_k801m.10", 0x20000, 0x20000, CRC(093faf33) SHA1(2704f644cdce87daf975984f143b1d55ba731c3f) )
3446 ROM_LOAD( "db_k802m.20", 0x40000, 0x20000, CRC(055b4c59) SHA1(71315dd7476612f138cb64b905648791d44eb7da) )
3447 ROM_LOAD( "db_k803m.30", 0x60000, 0x20000, CRC(8ed63922) SHA1(51daa8a23e637f6b4394598ff4a1d26f65b59c8b) )
3448
3449 ROM_REGION( 0x080000, "gfx2", 0 ) // same roms are duplicated at a0-a3 and b0-b3, confirmed
3450 ROM_LOAD( "db_k804m.a0", 0x00000, 0x20000, CRC(4c83e92e) SHA1(6dade027435c48ab48bd4516d16a9961d4dd6fad) ) // tiles #1
3451 ROM_LOAD( "db_k805m.a1", 0x20000, 0x20000, CRC(835ef268) SHA1(89d0bb15201440dffad3ef745970f95505d7ab03) )
3452 ROM_LOAD( "db_k806m.a2", 0x40000, 0x20000, CRC(5117f114) SHA1(a401a3e638209b32d4101a5c2e2a8b4612eaa21b) )
3453 ROM_LOAD( "db_k807m.a3", 0x60000, 0x20000, CRC(8eb0c978) SHA1(7fc55bbe4d0923db88492bb7160a89de34e11cd6) )
3454
3455 ROM_REGION( 0x080000, "gfx3", 0 )
3456 ROM_LOAD( "db_k804m.b0", 0x00000, 0x20000, CRC(4c83e92e) SHA1(6dade027435c48ab48bd4516d16a9961d4dd6fad) ) // tiles #2
3457 ROM_LOAD( "db_k805m.b1", 0x20000, 0x20000, CRC(835ef268) SHA1(89d0bb15201440dffad3ef745970f95505d7ab03) )
3458 ROM_LOAD( "db_k806m.b2", 0x40000, 0x20000, CRC(5117f114) SHA1(a401a3e638209b32d4101a5c2e2a8b4612eaa21b) )
3459 ROM_LOAD( "db_k807m.b3", 0x60000, 0x20000, CRC(8eb0c978) SHA1(7fc55bbe4d0923db88492bb7160a89de34e11cd6) )
3460
3461 ROM_REGION( 0x20000, "samples", 0 ) // samples
3462 ROM_LOAD( "db_c-v0.ic44", 0x00000, 0x20000, CRC(312f7282) SHA1(742d56980b4618180e9a0e02051c5aec4d5cdae4) )
3463 ROM_END
3464
3465
3466 ROM_START( dkgensanm72 )
3467 ROM_REGION( 0x100000, "maincpu", 0 )
3468 ROM_LOAD16_BYTE( "ge72-h0.bin", 0x00001, 0x20000, CRC(a0ad992c) SHA1(6de4105d8454c4e4e62762fdd7e22829acc2442b) )
3469 ROM_LOAD16_BYTE( "ge72-l0.bin", 0x00000, 0x20000, CRC(996396f0) SHA1(1a2501ba46bcbc607f772765e8614bc442154a18) )
3470 ROM_LOAD16_BYTE( "ge72-h3.bin", 0x60001, 0x10000, CRC(d8b86005) SHA1(dd626cfe50a823066c54cc24d9fdaaf03d61d1e7) )
3471 ROM_RELOAD( 0xe0001, 0x10000 )
3472 ROM_LOAD16_BYTE( "ge72-l3.bin", 0x60000, 0x10000, CRC(23d303a5) SHA1(b62010f34d71afb590deae458493454f9af38f7c) )
3473 ROM_RELOAD( 0xe0000, 0x10000 )
3474
3475 ROM_REGION( 0x10000, "mcu", 0 ) // i8751 microcontroller
3476 ROM_LOAD( "dkgenm72_i8751.ic1", 0x00000, 0x10000, NO_DUMP ) // read protected
3477
3478 ROM_REGION( 0x080000, "sprites", 0 )
3479 ROM_LOAD( "hh_00.rom", 0x00000, 0x20000, CRC(ec5127ef) SHA1(014ac8ad7b19cd9b475b72a0f42a4991119501c4) ) // sprites
3480 ROM_LOAD( "hh_10.rom", 0x20000, 0x20000, CRC(def65294) SHA1(23f5d99fa9f604fde37cb52113bff233d9be1d25) )
3481 ROM_LOAD( "hh_20.rom", 0x40000, 0x20000, CRC(bb0d6ad4) SHA1(4ab617fadfc32efad90ed7f0555513f167b0c43a) )
3482 ROM_LOAD( "hh_30.rom", 0x60000, 0x20000, CRC(4351044e) SHA1(0d3ce3f4f1473fd997e70de91e7b5b5a5ec60ad4) )
3483
3484 ROM_REGION( 0x040000, "gfx2", 0 )
3485 ROM_LOAD( "ge72b-a0.bin", 0x00000, 0x10000, CRC(f5f56b2a) SHA1(4ef6602052fa70e765d6d7747e672b7108b44f59) ) // tiles #1
3486 ROM_LOAD( "ge72-a1.bin", 0x10000, 0x10000, CRC(d194ea08) SHA1(0270897049cd256472df42f3dda856ee707535cd) )
3487 ROM_LOAD( "ge72-a2.bin", 0x20000, 0x10000, CRC(2b06bcc3) SHA1(36378a4a69f3c3da96d2dc8df48916af8de50009) )
3488 ROM_LOAD( "ge72-a3.bin", 0x30000, 0x10000, CRC(94b96bfa) SHA1(33c1e9045e7a984097f3fe4954b20d954cffbafa) )
3489
3490 ROM_REGION( 0x040000, "gfx3", 0 )
3491 ROM_LOAD( "ge72-b0.bin", 0x00000, 0x10000, CRC(208796b3) SHA1(38b90732c8d5c77ee84053364a8a7e3daaaabe66) ) // tiles #2
3492 ROM_LOAD( "ge72-b1.bin", 0x10000, 0x10000, CRC(b4a7f490) SHA1(851b40650fc8920b49f43f9cc6f19e845a25e945) )
3493 ROM_LOAD( "ge72b-b2.bin", 0x20000, 0x10000, CRC(34fe8f7f) SHA1(fbf8839b26be55ad83ad4db538ba3e196c1ab945) )
3494 ROM_LOAD( "ge72b-b3.bin", 0x30000, 0x10000, CRC(4b0e92f4) SHA1(16ad9220ca6708028cea18c1c4b57e2b6eb425b4) )
3495
3496 ROM_REGION( 0x20000, "samples", 0 ) // samples
3497 ROM_LOAD( "gen-vo.bin", 0x00000, 0x20000, CRC(d8595c66) SHA1(97920c9947fbac609fb901415e5471c6e4ca066c) )
3498 ROM_END
3499
3500
3501 ROM_START( airduelm72 )
3502 ROM_REGION( 0x100000, "maincpu", 0 )
3503 ROM_LOAD16_BYTE( "ad-c-h0-c.ic40", 0x00001, 0x20000, CRC(6467ed0f) SHA1(3b6db463168edec0e42247e4d913d9d7615061c1) )
3504 ROM_LOAD16_BYTE( "ad-c-l0-c.ic37", 0x00000, 0x20000, CRC(b90c4ffd) SHA1(c95998244c52e95f6612013c23051b293423946f) )
3505 ROM_LOAD16_BYTE( "ad-c-h3.ic43", 0x40001, 0x20000, CRC(9f7cfca3) SHA1(becf827aa7749c54f1c435ea224e1fd9c8b3f5f9) )
3506 ROM_RELOAD( 0xc0001, 0x20000 )
3507 ROM_LOAD16_BYTE( "ad-c-l3.ic34", 0x40000, 0x20000, CRC(9dd343f7) SHA1(9f499936b6d3807aa5b5c18e9811c73c9a2c99f9) )
3508 ROM_RELOAD( 0xc0000, 0x20000 )
3509
3510 ROM_REGION( 0x1000, "mcu", 0 ) // i8751 microcontroller
3511 ROM_LOAD( "ad_c-pr-c.ic1", 0x00000, 0x01000, NO_DUMP ) // i8751 MCU labeled AD C-PR-C
3512
3513 ROM_REGION( 0x080000, "sprites", 0 )
3514 ROM_LOAD( "ad-00.ic53", 0x00000, 0x20000, CRC(2f0d599b) SHA1(a966f806b5e25bb98cc63c46c49e0e676a62afcf) )
3515 ROM_LOAD( "ad-10.ic51", 0x20000, 0x20000, CRC(9865856b) SHA1(b18a06899ae29d45e2351594df544220f3f4485a) )
3516 ROM_LOAD( "ad-20.ic49", 0x40000, 0x20000, CRC(d392aef2) SHA1(0f639a07066cadddc3884eb490885a8745571567) )
3517 ROM_LOAD( "ad-30.ic47", 0x60000, 0x20000, CRC(923240c3) SHA1(f587a83329087a715a3e42110f74f104e8c8ef1f) )
3518
3519 ROM_REGION( 0x080000, "gfx2", 0 )
3520 ROM_LOAD( "ad-a0.ic21", 0x00000, 0x20000, CRC(ce134b47) SHA1(841358cc222c81b8a91edc262f355310d50b4dbb) ) // tiles #1
3521 ROM_LOAD( "ad-a1.ic22", 0x20000, 0x20000, CRC(097fd853) SHA1(8e08f4f4a747c899bb8e21b347635e26af9edc2d) )
3522 ROM_LOAD( "ad-a2.ic20", 0x40000, 0x20000, CRC(6a94c1b9) SHA1(55174acbac54236e5fc1b80d120cd6da9fe5524c) )
3523 ROM_LOAD( "ad-a3.ic23", 0x60000, 0x20000, CRC(6637c349) SHA1(27cb7c89ab73292b43f8ae3c0d803a01ef3d3936) )
3524
3525 ROM_REGION( 0x080000, "gfx3", 0 )
3526 ROM_LOAD( "ad-b0.ic26", 0x00000, 0x20000, CRC(ce134b47) SHA1(841358cc222c81b8a91edc262f355310d50b4dbb) ) // tiles #2
3527 ROM_LOAD( "ad-b1.ic27", 0x20000, 0x20000, CRC(097fd853) SHA1(8e08f4f4a747c899bb8e21b347635e26af9edc2d) )
3528 ROM_LOAD( "ad-b2.ic25", 0x40000, 0x20000, CRC(6a94c1b9) SHA1(55174acbac54236e5fc1b80d120cd6da9fe5524c) )
3529 ROM_LOAD( "ad-b3.ic24", 0x60000, 0x20000, CRC(6637c349) SHA1(27cb7c89ab73292b43f8ae3c0d803a01ef3d3936) )
3530
3531 ROM_REGION( 0x20000, "samples", 0 )
3532 ROM_LOAD( "ad-v0.ic44", 0x00000, 0x20000, CRC(339f474d) SHA1(a81bb52598a0e31b2ed6a538755237c5d14d1844) )
3533
3534 ROM_REGION( 0x104, "pals", 0 )
3535 ROM_LOAD( "ad-c-3f.ic13", 0x000, 0x104, NO_DUMP ) // unknown type of PAL
3536 ROM_END
3537
3538
3539 ROM_START( airdueljm72 )
3540 ROM_REGION( 0x100000, "maincpu", 0 )
3541 ROM_LOAD16_BYTE( "ad-c-h0.ic40", 0x00001, 0x20000, CRC(12140276) SHA1(f218c5f2e6795b6295dea064817d7d6b1a7762b6) )
3542 ROM_LOAD16_BYTE( "ad-c-l0.ic37", 0x00000, 0x20000, CRC(4ac0b91d) SHA1(97e2f633181cd5c25927fd0e2988af2acdb3f388) )
3543 ROM_LOAD16_BYTE( "ad-c-h3.ic43", 0x40001, 0x20000, CRC(9f7cfca3) SHA1(becf827aa7749c54f1c435ea224e1fd9c8b3f5f9) )
3544 ROM_RELOAD( 0xc0001, 0x20000 )
3545 ROM_LOAD16_BYTE( "ad-c-l3.ic34", 0x40000, 0x20000, CRC(9dd343f7) SHA1(9f499936b6d3807aa5b5c18e9811c73c9a2c99f9) )
3546 ROM_RELOAD( 0xc0000, 0x20000 )
3547
3548 ROM_REGION( 0x1000, "mcu", 0 ) // i8751 microcontroller
3549 ROM_LOAD( "ad_c-pr-.ic1", 0x00000, 0x01000, CRC(45584e52) SHA1(647826f1bec9b39ae971ecb58d921d363ee4cf45) ) // i8751 MCU labeled AD C-PR-
3550
3551 ROM_REGION( 0x080000, "sprites", 0 )
3552 ROM_LOAD( "ad-00.ic53", 0x00000, 0x20000, CRC(2f0d599b) SHA1(a966f806b5e25bb98cc63c46c49e0e676a62afcf) )
3553 ROM_LOAD( "ad-10.ic51", 0x20000, 0x20000, CRC(9865856b) SHA1(b18a06899ae29d45e2351594df544220f3f4485a) )
3554 ROM_LOAD( "ad-20.ic49", 0x40000, 0x20000, CRC(d392aef2) SHA1(0f639a07066cadddc3884eb490885a8745571567) )
3555 ROM_LOAD( "ad-30.ic47", 0x60000, 0x20000, CRC(923240c3) SHA1(f587a83329087a715a3e42110f74f104e8c8ef1f) )
3556
3557 ROM_REGION( 0x080000, "gfx2", 0 )
3558 ROM_LOAD( "ad-a0.ic21", 0x00000, 0x20000, CRC(ce134b47) SHA1(841358cc222c81b8a91edc262f355310d50b4dbb) ) // tiles #1
3559 ROM_LOAD( "ad-a1.ic22", 0x20000, 0x20000, CRC(097fd853) SHA1(8e08f4f4a747c899bb8e21b347635e26af9edc2d) )
3560 ROM_LOAD( "ad-a2.ic20", 0x40000, 0x20000, CRC(6a94c1b9) SHA1(55174acbac54236e5fc1b80d120cd6da9fe5524c) )
3561 ROM_LOAD( "ad-a3.ic23", 0x60000, 0x20000, CRC(6637c349) SHA1(27cb7c89ab73292b43f8ae3c0d803a01ef3d3936) )
3562
3563 ROM_REGION( 0x080000, "gfx3", 0 )
3564 ROM_LOAD( "ad-b0.ic26", 0x00000, 0x20000, CRC(ce134b47) SHA1(841358cc222c81b8a91edc262f355310d50b4dbb) ) // tiles #2
3565 ROM_LOAD( "ad-b1.ic27", 0x20000, 0x20000, CRC(097fd853) SHA1(8e08f4f4a747c899bb8e21b347635e26af9edc2d) )
3566 ROM_LOAD( "ad-b2.ic25", 0x40000, 0x20000, CRC(6a94c1b9) SHA1(55174acbac54236e5fc1b80d120cd6da9fe5524c) )
3567 ROM_LOAD( "ad-b3.ic24", 0x60000, 0x20000, CRC(6637c349) SHA1(27cb7c89ab73292b43f8ae3c0d803a01ef3d3936) )
3568
3569 ROM_REGION( 0x20000, "samples", 0 )
3570 ROM_LOAD( "ad-v0.ic44", 0x00000, 0x20000, CRC(339f474d) SHA1(a81bb52598a0e31b2ed6a538755237c5d14d1844) )
3571
3572 ROM_REGION( 0x104, "pals", 0 )
3573 ROM_LOAD( "ad-c-3f.ic13", 0x000, 0x104, NO_DUMP ) // unknown type of PAL
3574 ROM_END
3575
3576
3577 ROM_START( gallop )
3578 ROM_REGION( 0x100000, "maincpu", 0 )
3579 ROM_LOAD16_BYTE( "cc-c-h0.ic40", 0x00001, 0x20000, CRC(2217dcd0) SHA1(9485b6c3eec99e720439e69dcbe0e55798bbff1c) )
3580 ROM_LOAD16_BYTE( "cc-c-l0.ic37", 0x00000, 0x20000, CRC(ff39d7fb) SHA1(fad95f76050fce04464268b5edff6622b2cb798f) )
3581 ROM_LOAD16_BYTE( "cc-c-h3.ic43", 0x40001, 0x20000, CRC(9b2bbab9) SHA1(255d4dda55be667f5f1f4324e9e66111738e79b3) )
3582 ROM_RELOAD( 0xc0001, 0x20000 )
3583 ROM_LOAD16_BYTE( "cc-c-l3.ic34", 0x40000, 0x20000, CRC(acd3278e) SHA1(83d7ddfbdb4bc9548a179b728351a21b3b0ac134) )
3584 ROM_RELOAD( 0xc0000, 0x20000 )
3585
3586 ROM_REGION( 0x10000, "mcu", 0 ) // i8751 microcontroller
3587 ROM_LOAD( "cc_c-pr-.ic1", 0x00000, 0x10000, NO_DUMP ) // read protected (only used for sample triggering, not supplying code / warning screens)
3588
3589 ROM_REGION( 0x080000, "sprites", 0 ) // sprites - same data as the cosmccop set
3590 ROM_LOAD( "cc-c-00.ic53", 0x00000, 0x20000, CRC(9d99deaa) SHA1(acf16bea0f482306107d2a305c568406b6c21e9a) ) // == cc-c-00.bin
3591 ROM_LOAD( "cc-c-10.ic51", 0x20000, 0x20000, CRC(7eb083ed) SHA1(31fa7d532fd46e861c3d19d5b08661653f685a49) ) // == cc-c-10.bin
3592 ROM_LOAD( "cc-c-20.ic49", 0x40000, 0x20000, CRC(9421489e) SHA1(e43d042bf8b4ebed93558d74ec479ec60a01ca5c) ) // == cc-c-20.bin
3593 ROM_LOAD( "cc-c-30.ic47", 0x60000, 0x20000, CRC(920ec735) SHA1(2d0949b43dddce7317c45910d6e4868ddf010806) ) // == cc-c-30.bin
3594
3595 ROM_REGION( 0x040000, "gfx2", 0 ) // tiles #1 - same data as the cosmccop set split between the 2 tile banks
3596 ROM_LOAD( "cc-b-a0.ic21", 0x00000, 0x10000, CRC(a33472bd) SHA1(962047fe3dd1fb996285ecef615a8ebdb529adef) ) // == cc-d-g00.bin [1/2]
3597 ROM_LOAD( "cc-b-a1.ic22", 0x10000, 0x10000, CRC(118b1f2d) SHA1(7413ccc67a8aa9dae156e6ee122b1ca5beeb9a76) ) // == cc-d-g10.bin [1/2]
3598 ROM_LOAD( "cc-b-a2.ic20", 0x20000, 0x10000, CRC(83cebf48) SHA1(12847827ecbf6b493eb9dbddd0a469729d87a451) ) // == cc-d-g20.bin [1/2]
3599 ROM_LOAD( "cc-b-a3.ic23", 0x30000, 0x10000, CRC(572903fc) SHA1(03305301bcf939e97044e746594736b1ca1d7c0a) ) // == cc-d-g30.bin [1/2]
3600
3601 ROM_REGION( 0x040000, "gfx3", 0 ) // tiles #2 - same data as the cosmccop set split between the 2 tile banks
3602 ROM_LOAD( "cc-b-b0.ic26", 0x00000, 0x10000, CRC(0df5b439) SHA1(0775cf92139a111542c8b5f940da0f7f43020982) ) // == cc-d-g00.bin [2/2]
3603 ROM_LOAD( "cc-b-b1.ic27", 0x10000, 0x10000, CRC(010b778f) SHA1(cc5bfeb0fbe0ed2fe513458c5785ec0ce5b02f53) ) // == cc-d-g10.bin [2/2]
3604 ROM_LOAD( "cc-b-b2.ic25", 0x20000, 0x10000, CRC(bda9f6fb) SHA1(a6b655ae5bff0568c1fb56ee8a3874fc6524052c) ) // == cc-d-g20.bin [2/2]
3605 ROM_LOAD( "cc-b-b3.ic24", 0x30000, 0x10000, CRC(d361ba3f) SHA1(7348fdae03e997e05187a2726eb221edb92553df) ) // == cc-d-g30.bin [2/2]
3606
3607 ROM_REGION( 0x20000, "samples", 0 ) // samples - same data as the cosmccop set
3608 ROM_LOAD( "cc-c-v0.ic44", 0x00000, 0x20000, CRC(6247bade) SHA1(4bc9f86acd09908c74b1ab0e7817c4ff1cad6f0b) ) // == cc-c-v0.bin
3609 ROM_END
3610
3611
3612 /*****************************
3613 M81 sets
3614 ******************************/
3615
3616 ROM_START( xmultipl )
3617 ROM_REGION( 0x100000, "maincpu", 0 )
3618 ROM_LOAD16_BYTE( "xm-a-h1-.ic58", 0x00001, 0x20000, CRC(449048cf) SHA1(871b588177fb018937d143f76eda18aa53b0f6c4) )
3619 ROM_LOAD16_BYTE( "xm-a-l1-.ic67", 0x00000, 0x20000, CRC(26ce39b0) SHA1(18ae2e8c2c826c6ecfa66f7af5afdeeac3936543) )
3620 ROM_LOAD16_BYTE( "xm-a-h0-.ic59", 0x40001, 0x10000, CRC(509bc970) SHA1(44bb4ecedf8f127792e9a8da70b3a42c8ff30ad2) )
3621 ROM_RELOAD( 0xe0001, 0x10000 )
3622 ROM_LOAD16_BYTE( "xm-a-l0-.ic68", 0x40000, 0x10000, CRC(490a9ebc) SHA1(55d9d3a4f82f120faabca78c2e47922831f62a5d) )
3623 ROM_RELOAD( 0xe0000, 0x10000 )
3624
3625 ROM_REGION( 0x10000, "soundcpu", 0 )
3626 ROM_LOAD( "xm-a-sp-.ic14", 0x00000, 0x10000, CRC(006eef56) SHA1(917b26b200fa4c1692d4c7ca0ea0f7897e3e3b7b) )
3627
3628 ROM_REGION( 0x100000, "sprites", 0 )
3629 ROM_LOAD( "t44.00", 0x00000, 0x20000, CRC(db45186e) SHA1(8c8edeb4b7e6b0516f2597823dc27eba9c5d9528) ) // sprites
3630 ROM_LOAD( "t45.01", 0x20000, 0x20000, CRC(4d0764d4) SHA1(4942333336a110b033f16ac1afa06ffef7b2dad6) )
3631 ROM_LOAD( "t46.10", 0x40000, 0x20000, CRC(f0c465a4) SHA1(69c107c860d4e8736431fd86b6821b70a8367eb3) )
3632 ROM_LOAD( "t47.11", 0x60000, 0x20000, CRC(1263b24b) SHA1(0445a5381df3a868bed6967c8e5de7169e4be6a3) )
3633 ROM_LOAD( "t48.20", 0x80000, 0x20000, CRC(4129944f) SHA1(988b072032d1667c3ac0731fada32fb6978505dc) )
3634 ROM_LOAD( "t49.21", 0xa0000, 0x20000, CRC(2346e6f9) SHA1(b3de017dd0353e04d279f57e151c47f5fcc70e9c) )
3635 ROM_LOAD( "t50.30", 0xc0000, 0x20000, CRC(e322543e) SHA1(b4c3a7f202d81485d5f0a7b7668ee89fc1edb215) )
3636 ROM_LOAD( "t51.31", 0xe0000, 0x20000, CRC(229bf7b1) SHA1(ae42c7efbb6278dd3fa56842361138391f2d49ca) )
3637
3638 ROM_REGION( 0x080000, "gfx2", 0 )
3639 ROM_LOAD( "t53.a0", 0x00000, 0x20000, CRC(1a082494) SHA1(63a3a84a262833d2cafab41e35df8f10a5e317b1) ) // tiles #1
3640 ROM_LOAD( "t54.a1", 0x20000, 0x20000, CRC(076c16c5) SHA1(4be858806b916953d59aceee550e721eaf3996a6) )
3641 ROM_LOAD( "t55.a2", 0x40000, 0x20000, CRC(25d877a5) SHA1(48c948bf714c432f534c098123c8f50d5561756f) )
3642 ROM_LOAD( "t56.a3", 0x60000, 0x20000, CRC(5b1213f5) SHA1(87782aa0bd04d4378c4ba78b63028ae2709da2f1) )
3643
3644 ROM_REGION( 0x080000, "gfx3", 0 )
3645 // b0-b3 are populated, Jumper J3 on the M81-B-B board is set to 'W' meaning use the ROMs from the b0-b3 positions
3646 ROM_LOAD( "t57.b0", 0x00000, 0x20000, CRC(0a84e0c7) SHA1(67ad181a7d2c431cb4bf45955e09754549a03576) ) // tiles #2
3647 ROM_LOAD( "t58.b1", 0x20000, 0x20000, CRC(a874121d) SHA1(1351d5901d55059c6472a4588a2e560396903861) )
3648 ROM_LOAD( "t59.b2", 0x40000, 0x20000, CRC(69deb990) SHA1(1eed3183efbe576376661b45152a0a21240ecfc8) )
3649 ROM_LOAD( "t60.b3", 0x60000, 0x20000, CRC(14c69f99) SHA1(4bea72f8bd421ef3ca559363f7473ce2e7038699) )
3650
3651 ROM_REGION( 0x20000, "samples", 0 ) // samples
3652 ROM_LOAD( "t52.v0", 0x00000, 0x20000, CRC(2db1bd80) SHA1(657006d0642ec7fb949bb52821d78fe51a599415) )
3653
3654 ROM_REGION( 0x0200, "proms", 0 ) /* proms */
3655 ROM_LOAD( "m81_a-9l-.ic72", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) )
3656 ROM_LOAD( "m81_a-9p-.ic74", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) )
3657 ROM_END
3658
3659
3660 ROM_START( hharry )
3661 ROM_REGION( 0x100000, "maincpu", 0 )
3662 ROM_LOAD16_BYTE( "a-h0-v.rom", 0x00001, 0x20000, CRC(c52802a5) SHA1(7180189c886aebe8d3e7fd38922916cecfddae32) )
3663 ROM_LOAD16_BYTE( "a-l0-v.rom", 0x00000, 0x20000, CRC(f463074c) SHA1(aca86345610e65848c276ab278092d35ba215916) )
3664 ROM_LOAD16_BYTE( "a-h1-0.rom", 0x60001, 0x10000, CRC(3ae21335) SHA1(780d7a0c5bebe4b914ea5b3741e30630f8c29a4f) )
3665 ROM_RELOAD( 0xe0001, 0x10000 )
3666 ROM_LOAD16_BYTE( "a-l1-0.rom", 0x60000, 0x10000, CRC(bc6ac5f9) SHA1(c6afba4967a8055f6b63827697425eac743f5a75) )
3667 ROM_RELOAD( 0xe0000, 0x10000 )
3668
3669 ROM_REGION( 0x10000, "soundcpu", 0 )
3670 ROM_LOAD( "a-sp-0.rom", 0x00000, 0x10000, CRC(80e210e7) SHA1(66cff58fb37c52e1d8e0567e13b774253e862585) )
3671
3672 ROM_REGION( 0x080000, "sprites", 0 )
3673 ROM_LOAD( "hh_00.rom", 0x00000, 0x20000, CRC(ec5127ef) SHA1(014ac8ad7b19cd9b475b72a0f42a4991119501c4) ) // sprites
3674 ROM_LOAD( "hh_10.rom", 0x20000, 0x20000, CRC(def65294) SHA1(23f5d99fa9f604fde37cb52113bff233d9be1d25) )
3675 ROM_LOAD( "hh_20.rom", 0x40000, 0x20000, CRC(bb0d6ad4) SHA1(4ab617fadfc32efad90ed7f0555513f167b0c43a) )
3676 ROM_LOAD( "hh_30.rom", 0x60000, 0x20000, CRC(4351044e) SHA1(0d3ce3f4f1473fd997e70de91e7b5b5a5ec60ad4) )
3677
3678 ROM_REGION( 0x080000, "gfx2", ROMREGION_ERASEFF )
3679 ROM_LOAD( "hh_a0.rom", 0x00000, 0x20000, CRC(c577ba5f) SHA1(c882e58cf64deca8eee6f14f3df43ecc932488fc) ) // tiles
3680 ROM_LOAD( "hh_a1.rom", 0x20000, 0x20000, CRC(429d12ab) SHA1(ccba25eab981fc4e664f76e06a2964066f2ae2e8) )
3681 ROM_LOAD( "hh_a2.rom", 0x40000, 0x20000, CRC(b5b163b0) SHA1(82a708fea4953a7c4dcd1d4a1b07f302221ba30b) )
3682 ROM_LOAD( "hh_a3.rom", 0x60000, 0x20000, CRC(8ef566a1) SHA1(3afb020a7317efe89c18b2a7773894ce28499d49) )
3683
3684 ROM_REGION( 0x080000, "gfx3", ROMREGION_ERASEFF )
3685 // b0-b3 are unpopulated, Jumper J3 on the M81-B-B board is set to 'S' meaning use the ROMs from the a0-a3 positions
3686
3687 ROM_REGION( 0x20000, "samples", 0 ) // samples
3688 ROM_LOAD( "a-v0-0.rom", 0x00000, 0x20000, CRC(faaacaff) SHA1(ea3a3920255c07aa9c0a7e0191eae257a9f7f558) )
3689 ROM_END
3690
3691
3692 ROM_START( dbreed )
3693 ROM_REGION( 0x100000, "maincpu", 0 )
3694 ROM_LOAD16_BYTE( "db-a-h0-.59", 0x00001, 0x10000, CRC(e1177267) SHA1(f226f34ce85305870e659dd4f519bee30936af9a) )
3695 ROM_CONTINUE( 0x60001, 0x10000 )
3696 ROM_RELOAD( 0xc0001, 0x20000 )
3697 ROM_LOAD16_BYTE( "db-a-l0-.68", 0x00000, 0x10000, CRC(d82b167e) SHA1(f9ccb152feb31971230f61371a906bd900ef34e8) )
3698 ROM_CONTINUE( 0x60000, 0x10000 )
3699 ROM_RELOAD( 0xc0000, 0x20000 )
3700
3701 ROM_REGION( 0x10000, "soundcpu", 0 )
3702 ROM_LOAD( "db-a-sp-.14", 0x00000, 0x10000, CRC(54a61560) SHA1(e5fccfcedcadbab1667900f98370043c1907dd89) )
3703
3704 ROM_REGION( 0x080000, "sprites", 0 )
3705 ROM_LOAD( "db_k800m.00", 0x00000, 0x20000, CRC(c027a8cf) SHA1(534dc416b8f5587168c7f644d3f9438c8a190491) ) // sprites
3706 ROM_LOAD( "db_k801m.10", 0x20000, 0x20000, CRC(093faf33) SHA1(2704f644cdce87daf975984f143b1d55ba731c3f) )
3707 ROM_LOAD( "db_k802m.20", 0x40000, 0x20000, CRC(055b4c59) SHA1(71315dd7476612f138cb64b905648791d44eb7da) )
3708 ROM_LOAD( "db_k803m.30", 0x60000, 0x20000, CRC(8ed63922) SHA1(51daa8a23e637f6b4394598ff4a1d26f65b59c8b) )
3709
3710 ROM_REGION( 0x080000, "gfx2", ROMREGION_ERASEFF )
3711 ROM_LOAD( "db_k804m.a0", 0x00000, 0x20000, CRC(4c83e92e) SHA1(6dade027435c48ab48bd4516d16a9961d4dd6fad) ) // tiles
3712 ROM_LOAD( "db_k805m.a1", 0x20000, 0x20000, CRC(835ef268) SHA1(89d0bb15201440dffad3ef745970f95505d7ab03) )
3713 ROM_LOAD( "db_k806m.a2", 0x40000, 0x20000, CRC(5117f114) SHA1(a401a3e638209b32d4101a5c2e2a8b4612eaa21b) )
3714 ROM_LOAD( "db_k807m.a3", 0x60000, 0x20000, CRC(8eb0c978) SHA1(7fc55bbe4d0923db88492bb7160a89de34e11cd6) )
3715
3716 ROM_REGION( 0x080000, "gfx3", ROMREGION_ERASEFF )
3717 // b0-b3 are unpopulated, Jumper J3 on the M81-B-B board is set to 'S' meaning use the ROMs from the a0-a3 positions
3718
3719 ROM_REGION( 0x20000, "samples", 0 ) // samples
3720 ROM_LOAD( "db_a-v0.rom", 0x00000, 0x20000, CRC(312f7282) SHA1(742d56980b4618180e9a0e02051c5aec4d5cdae4) )
3721 ROM_END
3722
3723
3724 /*****************************
3725 M82 sets
3726 ******************************/
3727
3728 ROM_START( majtitle )
3729 ROM_REGION( 0x100000, "maincpu", 0 )
3730 ROM_LOAD16_BYTE( "mt_h0-a.bin", 0x00001, 0x20000, CRC(36aadb67) SHA1(11cb9f190431ef7b68bcad691191c810b00452be) )
3731 ROM_LOAD16_BYTE( "mt_l0-a.bin", 0x00000, 0x20000, CRC(2e1b6242) SHA1(a1d36c1bad7eb874e6b37a372d0ff95452b09315) )
3732 ROM_LOAD16_BYTE( "mt_h1-a.bin", 0x40001, 0x20000, CRC(e1402a22) SHA1(97ecf3cf5438dd3aad65554b672a4e401917dc34) )
3733 ROM_RELOAD( 0xc0001, 0x20000 )
3734 ROM_LOAD16_BYTE( "mt_l1-a.bin", 0x40000, 0x20000, CRC(0efa409a) SHA1(2b4fd62705398c7ac1647f6ea821f722b4f7496f) )
3735 ROM_RELOAD( 0xc0000, 0x20000 )
3736
3737 ROM_REGION( 0x10000, "soundcpu", 0 )
3738 ROM_LOAD( "mt_sp.bin", 0x00000, 0x10000, CRC(e44260a9) SHA1(a2512033c8cca9a8064eae1ada721202edf06e8e) )
3739
3740 ROM_REGION( 0x100000, "sprites", 0 )
3741 ROM_LOAD( "mt_n0.bin", 0x00000, 0x40000, CRC(5618cddc) SHA1(16d34b431ab9b72067fa669d694e635c88aeb261) ) // sprites #1
3742 ROM_LOAD( "mt_n1.bin", 0x40000, 0x40000, CRC(483b873b) SHA1(654efd67b2102521e8c46cd57cefa2cc64cf4fd3) )
3743 ROM_LOAD( "mt_n2.bin", 0x80000, 0x40000, CRC(4f5d665b) SHA1(f539d0f5c738ffabfac16121706abe3bb3b2a1fa) )
3744 ROM_LOAD( "mt_n3.bin", 0xc0000, 0x40000, CRC(83571549) SHA1(ce0b89aa4b3e3e1cf6ec6136f956577267cdd9d3) )
3745
3746 ROM_REGION( 0x080000, "gfx2", 0 )
3747 ROM_LOAD( "mt_c0.bin", 0x00000, 0x20000, CRC(780e7a02) SHA1(9776ecb8b5d86636061f8360464001a63bec0842) ) // tiles
3748 ROM_LOAD( "mt_c1.bin", 0x20000, 0x20000, CRC(45ad1381) SHA1(de281398dcd1c547bde9fa86f8ca409dd8d4aa6c) )
3749 ROM_LOAD( "mt_c2.bin", 0x40000, 0x20000, CRC(5df5856d) SHA1(f16163f672de6701b411315c9956ddb74c8464ce) )
3750 ROM_LOAD( "mt_c3.bin", 0x60000, 0x20000, CRC(f5316cc8) SHA1(123892d4a7e8d98582ea736afe659afdba8c5f87) )
3751
3752 ROM_REGION( 0x080000, "sprites2", 0 )
3753 ROM_LOAD( "mt_f0.bin", 0x00000, 0x20000, CRC(2d5e05d5) SHA1(18bdc9c561dbf0f91642161ca985d2154bd58b5d) ) // sprites #2
3754 ROM_LOAD( "mt_f1.bin", 0x20000, 0x20000, CRC(c68cd65f) SHA1(8999b558b4af0f453ada9e4ef705163df96844e6) )
3755 ROM_LOAD( "mt_f2.bin", 0x40000, 0x20000, CRC(a71feb2d) SHA1(47e366b422772bed08ee4d1c338970687d6c3b4c) )
3756 ROM_LOAD( "mt_f3.bin", 0x60000, 0x20000, CRC(179f7562) SHA1(6d28b199daffc62e8fa9009878ac0bb976ccbb2a) )
3757
3758 ROM_REGION( 0x20000, "samples", 0 ) // samples
3759 ROM_LOAD( "mt_vo.bin", 0x00000, 0x20000, CRC(eb24bb2c) SHA1(9fca04fba0249e8213dd164eb6829e1a5acbee65) )
3760 ROM_END
3761
3762 ROM_START( majtitlej )
3763 ROM_REGION( 0x100000, "maincpu", 0 )
3764 ROM_LOAD16_BYTE( "mt_h0.bin", 0x00001, 0x20000, CRC(b9682c70) SHA1(b979c0a630397f2a2eb73709cf12c5262c973782) )
3765 ROM_LOAD16_BYTE( "mt_l0.bin", 0x00000, 0x20000, CRC(702c9fd6) SHA1(84a5e9e64f4bf235d115f5648b4a108f710ade1d) )
3766 ROM_LOAD16_BYTE( "mt_h1.bin", 0x40001, 0x20000, CRC(d9e97c30) SHA1(97f59b614eeeced0a414f8a1693590525a58f788) )
3767 ROM_RELOAD( 0xc0001, 0x20000 )
3768 ROM_LOAD16_BYTE( "mt_l1.bin", 0x40000, 0x20000, CRC(8dbd91b5) SHA1(2bd01f3fba0fa1ca4b6f8ff57e7dc4434c42ce48) )
3769 ROM_RELOAD( 0xc0000, 0x20000 )
3770
3771 ROM_REGION( 0x10000, "soundcpu", 0 )
3772 ROM_LOAD( "mt_sp.bin", 0x00000, 0x10000, CRC(e44260a9) SHA1(a2512033c8cca9a8064eae1ada721202edf06e8e) )
3773
3774 ROM_REGION( 0x100000, "sprites", 0 )
3775 ROM_LOAD( "mt_n0.bin", 0x00000, 0x40000, CRC(5618cddc) SHA1(16d34b431ab9b72067fa669d694e635c88aeb261) ) // sprites #1
3776 ROM_LOAD( "mt_n1.bin", 0x40000, 0x40000, CRC(483b873b) SHA1(654efd67b2102521e8c46cd57cefa2cc64cf4fd3) )
3777 ROM_LOAD( "mt_n2.bin", 0x80000, 0x40000, CRC(4f5d665b) SHA1(f539d0f5c738ffabfac16121706abe3bb3b2a1fa) )
3778 ROM_LOAD( "mt_n3.bin", 0xc0000, 0x40000, CRC(83571549) SHA1(ce0b89aa4b3e3e1cf6ec6136f956577267cdd9d3) )
3779
3780 ROM_REGION( 0x080000, "gfx2", 0 )
3781 ROM_LOAD( "mt_c0.bin", 0x00000, 0x20000, CRC(780e7a02) SHA1(9776ecb8b5d86636061f8360464001a63bec0842) ) // tiles
3782 ROM_LOAD( "mt_c1.bin", 0x20000, 0x20000, CRC(45ad1381) SHA1(de281398dcd1c547bde9fa86f8ca409dd8d4aa6c) )
3783 ROM_LOAD( "mt_c2.bin", 0x40000, 0x20000, CRC(5df5856d) SHA1(f16163f672de6701b411315c9956ddb74c8464ce) )
3784 ROM_LOAD( "mt_c3.bin", 0x60000, 0x20000, CRC(f5316cc8) SHA1(123892d4a7e8d98582ea736afe659afdba8c5f87) )
3785
3786 ROM_REGION( 0x080000, "sprites2", 0 )
3787 ROM_LOAD( "mt_f0.bin", 0x00000, 0x20000, CRC(2d5e05d5) SHA1(18bdc9c561dbf0f91642161ca985d2154bd58b5d) ) // sprites #2
3788 ROM_LOAD( "mt_f1.bin", 0x20000, 0x20000, CRC(c68cd65f) SHA1(8999b558b4af0f453ada9e4ef705163df96844e6) )
3789 ROM_LOAD( "mt_f2.bin", 0x40000, 0x20000, CRC(a71feb2d) SHA1(47e366b422772bed08ee4d1c338970687d6c3b4c) )
3790 ROM_LOAD( "mt_f3.bin", 0x60000, 0x20000, CRC(179f7562) SHA1(6d28b199daffc62e8fa9009878ac0bb976ccbb2a) )
3791
3792 ROM_REGION( 0x20000, "samples", 0 ) // samples
3793 ROM_LOAD( "mt_vo.bin", 0x00000, 0x20000, CRC(eb24bb2c) SHA1(9fca04fba0249e8213dd164eb6829e1a5acbee65) )
3794 ROM_END
3795
3796
3797 ROM_START( airduel )
3798 ROM_REGION( 0x100000, "maincpu", 0 )
3799 ROM_LOAD16_BYTE( "ad_=m82=_a-h0-d.ic52", 0x00001, 0x20000, CRC(dbecc726) SHA1(526e9fdf0ca3af3eae462524df71af8e6bfa85d0) )
3800 ROM_LOAD16_BYTE( "ad_=m82=_a-l0-d.ic60", 0x00000, 0x20000, CRC(6a9fcf59) SHA1(a2ae64d290137036c350f84c38054cf6681473a5) )
3801 ROM_LOAD16_BYTE( "ad_=m82=_a-h1-d.ic51", 0x40001, 0x20000, CRC(bafc152a) SHA1(e20fa8b832ebfb7a4407fc162f28388858686d61) )
3802 ROM_RELOAD( 0xc0001, 0x20000 )
3803 ROM_LOAD16_BYTE( "ad_=m82=_a-l1-d.ic59", 0x40000, 0x20000, CRC(9e2b1ae7) SHA1(838ccffb760b464d7d7e108e033a09e6295e5fc8) )
3804 ROM_RELOAD( 0xc0000, 0x20000 )
3805
3806 ROM_REGION( 0x10000, "soundcpu", 0 )
3807 ROM_LOAD( "ad_=m82=_a-sp-d.ic15", 0x00000, 0x10000, CRC(16a858a3) SHA1(51dbac5b37ecb30b46072f5a300a29dc7f7b8542) )
3808
3809 ROM_REGION( 0x080000, "sprites", 0 )
3810 ROM_LOAD( "ad_=m82=_b-n0-d.ic44", 0x00000, 0x20000, CRC(2f0d599b) SHA1(a966f806b5e25bb98cc63c46c49e0e676a62afcf) ) // sprites
3811 ROM_LOAD( "ad_=m82=_b-n1-d.ic45", 0x20000, 0x20000, CRC(9865856b) SHA1(b18a06899ae29d45e2351594df544220f3f4485a) )
3812 ROM_LOAD( "ad_=m82=_b-n2-d.ic46", 0x40000, 0x20000, CRC(d392aef2) SHA1(0f639a07066cadddc3884eb490885a8745571567) )
3813 ROM_LOAD( "ad_=m82=_b-n3-d.ic36", 0x60000, 0x20000, CRC(923240c3) SHA1(f587a83329087a715a3e42110f74f104e8c8ef1f) )
3814
3815 ROM_REGION( 0x080000, "gfx2", 0 )
3816 ROM_LOAD( "ad_=m82=_a-c0-d.ic49", 0x00000, 0x20000, CRC(ce134b47) SHA1(841358cc222c81b8a91edc262f355310d50b4dbb) ) // tiles
3817 ROM_LOAD( "ad_=m82=_a-c1-d.ic48", 0x20000, 0x20000, CRC(097fd853) SHA1(8e08f4f4a747c899bb8e21b347635e26af9edc2d) )
3818 ROM_LOAD( "ad_=m82=_a-c2-d.ic57", 0x40000, 0x20000, CRC(6a94c1b9) SHA1(55174acbac54236e5fc1b80d120cd6da9fe5524c) )
3819 ROM_LOAD( "ad_=m82=_a-c3-d.ic56", 0x60000, 0x20000, CRC(6637c349) SHA1(27cb7c89ab73292b43f8ae3c0d803a01ef3d3936) )
3820
3821 ROM_REGION( 0x080000, "sprites2", 0 ) // still had these leftover from Major Title, probably needed to avoid displaying garbage?
3822 ROM_LOAD( "mt_f0.ic38", 0x00000, 0x20000, CRC(2d5e05d5) SHA1(18bdc9c561dbf0f91642161ca985d2154bd58b5d) ) // sprites #2
3823 ROM_LOAD( "mt_f1.ic39", 0x20000, 0x20000, CRC(c68cd65f) SHA1(8999b558b4af0f453ada9e4ef705163df96844e6) )
3824 ROM_LOAD( "mt_f2.ic40", 0x40000, 0x20000, CRC(a71feb2d) SHA1(47e366b422772bed08ee4d1c338970687d6c3b4c) )
3825 ROM_LOAD( "mt_f3.ic41", 0x60000, 0x20000, CRC(179f7562) SHA1(6d28b199daffc62e8fa9009878ac0bb976ccbb2a) )
3826
3827 ROM_REGION( 0x20000, "samples", 0 ) // samples
3828 ROM_LOAD( "ad_=m82=_a-v0-d.ic12", 0x00000, 0x20000, CRC(339f474d) SHA1(a81bb52598a0e31b2ed6a538755237c5d14d1844) )
3829 ROM_END
3830
3831 ROM_START( airduelu )
3832 ROM_REGION( 0x100000, "maincpu", 0 )
3833 ROM_LOAD16_BYTE( "r10-m82a-h0.ic52", 0x00001, 0x20000, CRC(17f19965) SHA1(51f84903eba9b0daa6f91f3578e6fdb9b286ef1c) )
3834 ROM_LOAD16_BYTE( "r10-m82a-l0.ic60", 0x00000, 0x20000, CRC(f8b54d6c) SHA1(9796daa6728736258b45e3cf8ead6d6c6481f36b) )
3835 ROM_LOAD16_BYTE( "r10-m82-h1.ic51", 0x40001, 0x20000, CRC(bafc152a) SHA1(e20fa8b832ebfb7a4407fc162f28388858686d61) )
3836 ROM_RELOAD( 0xc0001, 0x20000 )
3837 ROM_LOAD16_BYTE( "r10-m82-l1.ic59", 0x40000, 0x20000, CRC(9e2b1ae7) SHA1(838ccffb760b464d7d7e108e033a09e6295e5fc8) )
3838 ROM_RELOAD( 0xc0000, 0x20000 )
3839
3840 ROM_REGION( 0x10000, "soundcpu", 0 )
3841 ROM_LOAD( "r10-bgm.ic15", 0x00000, 0x10000, CRC(16a858a3) SHA1(51dbac5b37ecb30b46072f5a300a29dc7f7b8542) )
3842
3843 ROM_REGION( 0x080000, "sprites", 0 )
3844 ROM_LOAD( "r10-obj0.ic44", 0x00000, 0x20000, CRC(2f0d599b) SHA1(a966f806b5e25bb98cc63c46c49e0e676a62afcf) ) // sprites
3845 ROM_LOAD( "r10-obj1.ic45", 0x20000, 0x20000, CRC(9865856b) SHA1(b18a06899ae29d45e2351594df544220f3f4485a) )
3846 ROM_LOAD( "r10-obj2.ic46", 0x40000, 0x20000, CRC(d392aef2) SHA1(0f639a07066cadddc3884eb490885a8745571567) )
3847 ROM_LOAD( "r10-obj3.ic36", 0x60000, 0x20000, CRC(923240c3) SHA1(f587a83329087a715a3e42110f74f104e8c8ef1f) )
3848
3849 ROM_REGION( 0x080000, "gfx2", 0 )
3850 ROM_LOAD( "r10-chr0.ic49", 0x00000, 0x20000, CRC(ce134b47) SHA1(841358cc222c81b8a91edc262f355310d50b4dbb) ) // tiles
3851 ROM_LOAD( "r10-chr1.ic48", 0x20000, 0x20000, CRC(097fd853) SHA1(8e08f4f4a747c899bb8e21b347635e26af9edc2d) )
3852 ROM_LOAD( "r10-chr2.ic57", 0x40000, 0x20000, CRC(6a94c1b9) SHA1(55174acbac54236e5fc1b80d120cd6da9fe5524c) )
3853 ROM_LOAD( "r10-chr3.ic56", 0x60000, 0x20000, CRC(6637c349) SHA1(27cb7c89ab73292b43f8ae3c0d803a01ef3d3936) )
3854
3855 ROM_REGION( 0x080000, "sprites2", 0 ) // leftover from Major Title (mask roms, soldered on pcb)
3856 ROM_LOAD( "mt_f0.ic38", 0x00000, 0x20000, CRC(2d5e05d5) SHA1(18bdc9c561dbf0f91642161ca985d2154bd58b5d) ) // sprites #2
3857 ROM_LOAD( "mt_f1.ic39", 0x20000, 0x20000, CRC(c68cd65f) SHA1(8999b558b4af0f453ada9e4ef705163df96844e6) )
3858 ROM_LOAD( "mt_f2.ic40", 0x40000, 0x20000, CRC(a71feb2d) SHA1(47e366b422772bed08ee4d1c338970687d6c3b4c) )
3859 ROM_LOAD( "mt_f3.ic41", 0x60000, 0x20000, CRC(179f7562) SHA1(6d28b199daffc62e8fa9009878ac0bb976ccbb2a) )
3860
3861 ROM_REGION( 0x20000, "samples", 0 ) // samples
3862 ROM_LOAD( "r10-voice.ic12", 0x00000, 0x20000, CRC(339f474d) SHA1(a81bb52598a0e31b2ed6a538755237c5d14d1844) )
3863 ROM_END
3864
3865
3866 ROM_START( rtypem82b )
3867 ROM_REGION( 0x100000, "maincpu", 0 )
3868 ROM_LOAD16_BYTE( "rt_h0.bin", 0x00001, 0x20000, CRC(5fa5068b) SHA1(b33891d2e0ca7e52226c1318ad657ac6bc7d6df4) )
3869 ROM_LOAD16_BYTE( "rt_l0.bin", 0x00000, 0x20000, CRC(aee6fae8) SHA1(22645da3bfeb3a7517bdbf0829fd9d689ddc5368) )
3870 ROM_LOAD16_BYTE( "rt_h1.bin", 0x40001, 0x20000, CRC(76389df4) SHA1(20004dd1d058589bdd8ea93a66a6cdf93382c7cc) )
3871 ROM_RELOAD( 0xc0001, 0x20000 )
3872 ROM_LOAD16_BYTE( "rt_l1.bin", 0x40000, 0x20000, CRC(6af66a05) SHA1(3c686b4559e4e223e3b03533fe2b2fc4758f4e02) )
3873 ROM_RELOAD( 0xc0000, 0x20000 )
3874
3875 ROM_REGION( 0x10000, "soundcpu", 0 )
3876 ROM_LOAD( "rt_sp.bin", 0x00000, 0x10000, CRC(24fded65) SHA1(34e085ebfc6415a60b7440ac53c8ae7130b5e9d4) )
3877
3878 ROM_REGION( 0x80000, "sprites", 0 )
3879 ROM_LOAD( "rt_n0.bin", 0x00000, 0x20000, CRC(236e93ad) SHA1(a168c2f007a7469d8c1d834dc5247d99d13fd36d) ) // sprites #1
3880 ROM_LOAD( "rt_n1.bin", 0x20000, 0x20000, CRC(94e0da50) SHA1(0e8aef07b2a4a60bb6faa9ea3d02869d30dff84c) )
3881 ROM_LOAD( "rt_n2.bin", 0x40000, 0x20000, CRC(6310dd0e) SHA1(4e4a50ef64cdfddea10d415a4b2d2490c1364074) )
3882 ROM_LOAD( "rt_n3.bin", 0x60000, 0x20000, CRC(dd9674fb) SHA1(925bbd64015ec9109a74ce80747bea2bfdb0cde6) )
3883
3884 ROM_REGION( 0x100000, "gfx2", 0 )
3885 ROM_LOAD( "rt_c0.bin", 0x00000, 0x40000, CRC(c2511272) SHA1(138dd131f827215f13ba0761cacc0f383b5e5a48) ) // tiles
3886 ROM_LOAD( "rt_c1.bin", 0x40000, 0x40000, CRC(6da33dae) SHA1(2b5f686c5c8e45a896ab115818066d03af767cb5) )
3887 ROM_LOAD( "rt_c2.bin", 0x80000, 0x40000, CRC(29322d6e) SHA1(b553d46f1270dcc4754800e65c21b5e418994fcd) )
3888 ROM_LOAD( "rt_c3.bin", 0xc0000, 0x40000, CRC(0ab3a8db) SHA1(7f4f5c18b5df0f5fdcb471db4e87c1be393aca92) )
3889
3890 ROM_REGION( 0x080000, "sprites2", 0 ) // leftover from Major Title
3891 ROM_LOAD( "mt_f0.bin", 0x00000, 0x20000, CRC(2d5e05d5) SHA1(18bdc9c561dbf0f91642161ca985d2154bd58b5d) ) // sprites #2
3892 ROM_LOAD( "mt_f1.bin", 0x20000, 0x20000, CRC(c68cd65f) SHA1(8999b558b4af0f453ada9e4ef705163df96844e6) )
3893 ROM_LOAD( "mt_f2.bin", 0x40000, 0x20000, CRC(a71feb2d) SHA1(47e366b422772bed08ee4d1c338970687d6c3b4c) )
3894 ROM_LOAD( "mt_f3.bin", 0x60000, 0x20000, CRC(179f7562) SHA1(6d28b199daffc62e8fa9009878ac0bb976ccbb2a) )
3895
3896 ROM_REGION( 0x20000, "samples", 0 ) // samples - leftover from Major Title
3897 ROM_LOAD( "mt_vo.bin", 0x00000, 0x20000, CRC(eb24bb2c) SHA1(9fca04fba0249e8213dd164eb6829e1a5acbee65) )
3898 ROM_END
3899
3900 ROM_START( rtype2m82b )
3901 ROM_REGION( 0x100000, "maincpu", 0 )
3902 ROM_LOAD16_BYTE( "rt2_h0.bin", 0x00001, 0x20000, CRC(47639a78) SHA1(d7dd851fed96d46c850e5c8f24d9d1a081f6b297) )
3903 ROM_LOAD16_BYTE( "rt2_l0.bin", 0x00000, 0x20000, CRC(a1661cdf) SHA1(d209328d678fc2fc405bd20f5134bd85b4cd4802) )
3904 ROM_LOAD16_BYTE( "rt2_h1.bin", 0x40001, 0x20000, CRC(4b79840c) SHA1(6cf8c8cf4bcf5e2acdaa05b8dca2f2a969edc2c5) )
3905 ROM_RELOAD( 0xc0001, 0x20000 )
3906 ROM_LOAD16_BYTE( "rt2_l1.bin", 0x40000, 0x20000, CRC(6ab3ae42) SHA1(d3d7c35e1583b55cc668aa011471c3bf04a541af) )
3907 ROM_RELOAD( 0xc0000, 0x20000 )
3908
3909 ROM_REGION( 0x10000, "soundcpu", 0 )
3910 ROM_LOAD( "rt2_sp.bin", 0x00000, 0x10000, CRC(73ffecb4) SHA1(4795bf0d6263060c3d3759b659bdb189a4087600) )
3911
3912 ROM_REGION( 0x80000, "sprites", 0 )
3913 ROM_LOAD( "rt2_n0.bin", 0x00000, 0x20000, CRC(2cd8f913) SHA1(a53752b35da95b420dd29a09176d265d292b3938) ) // sprites #1
3914 ROM_LOAD( "rt2_n1.bin", 0x20000, 0x20000, CRC(5033066d) SHA1(e125127f0610c63f9e59a585db547be5d49ed863) )
3915 ROM_LOAD( "rt2_n2.bin", 0x40000, 0x20000, CRC(ec3a0450) SHA1(632bdd397f1bc67f6970faf7d09ab8d911e105fe) )
3916 ROM_LOAD( "rt2_n3.bin", 0x60000, 0x20000, CRC(db6176fc) SHA1(1eaf72af0322490c98461aded202288e387caac1) )
3917
3918 ROM_REGION( 0x100000, "gfx2", 0 )
3919 ROM_LOAD( "rt2_c0.bin", 0x00000, 0x40000, CRC(f5bad5f2) SHA1(dc86b93f62e8947e3551f07e393e740e5dc43f5e) ) // tiles
3920 ROM_LOAD( "rt2_c1.bin", 0x40000, 0x40000, CRC(71451778) SHA1(52ca7aa8522b988a19556313041450c767dad054) )
3921 ROM_LOAD( "rt2_c2.bin", 0x80000, 0x40000, CRC(c6b0c352) SHA1(eec4fa88c27815960106881e7ccb23e62556bf1c) )
3922 ROM_LOAD( "rt2_c3.bin", 0xc0000, 0x40000, CRC(6d530a32) SHA1(4e4100e5e5d88e65fb5494474d3692ecd8f44343) )
3923
3924 ROM_REGION( 0x080000, "sprites2", 0 ) // leftover from Major Title
3925 ROM_LOAD( "mt_f0.bin", 0x00000, 0x20000, CRC(2d5e05d5) SHA1(18bdc9c561dbf0f91642161ca985d2154bd58b5d) ) // sprites #2
3926 ROM_LOAD( "mt_f1.bin", 0x20000, 0x20000, CRC(c68cd65f) SHA1(8999b558b4af0f453ada9e4ef705163df96844e6) )
3927 ROM_LOAD( "mt_f2.bin", 0x40000, 0x20000, CRC(a71feb2d) SHA1(47e366b422772bed08ee4d1c338970687d6c3b4c) )
3928 ROM_LOAD( "mt_f3.bin", 0x60000, 0x20000, CRC(179f7562) SHA1(6d28b199daffc62e8fa9009878ac0bb976ccbb2a) )
3929
3930 ROM_REGION( 0x20000, "samples", 0 ) // samples
3931 ROM_LOAD( "rt2_vo.bin", 0x00000, 0x20000, CRC(637172d5) SHA1(9dd0dc409306287238826bf301e2a7a12d6cd9ce) )
3932 ROM_END
3933
3934
3935 ROM_START( dkgensanm82 )
3936 ROM_REGION( 0x100000, "maincpu", 0 )
3937 ROM_LOAD16_BYTE( "gen_=m84=_a-h0-d.ic52", 0x00001, 0x20000, CRC(a1ca8855) SHA1(19b0ec1a03af114aa4f02630ace67c277ebce60f) )
3938 ROM_LOAD16_BYTE( "gen_=m84=_a-l0-d.ic60", 0x00000, 0x20000, CRC(247117b0) SHA1(e7674b9d0ae80afb52b47094f95ed5c250c7e303) )
3939 ROM_LOAD16_BYTE( "gen_=m84=_a-h1-d.ic51", 0x60001, 0x10000, CRC(54e5b73c) SHA1(5664f6e0a931b1c139e82dc98fcc9e38acd14616) )
3940 ROM_RELOAD( 0xe0001, 0x10000 )
3941 ROM_LOAD16_BYTE( "gen_=m84=_a-l1-d.ic59", 0x60000, 0x10000, CRC(894f8a9f) SHA1(57a0885c52a094def03b129a450cc891e6c075c6) )
3942 ROM_RELOAD( 0xe0000, 0x10000 )
3943
3944 ROM_REGION( 0x10000, "soundcpu", 0 )
3945 ROM_LOAD( "gen_=m84=_a-sp-d.ic15", 0x00000, 0x10000, CRC(e83cfc2c) SHA1(3193bdd06a9712fc499e6fc90a33140463ef59fe) )
3946
3947 ROM_REGION( 0x080000, "sprites", 0 )
3948 ROM_LOAD( "gen_=m72=_c-l0-b.ic44", 0x00000, 0x20000, CRC(ec5127ef) SHA1(014ac8ad7b19cd9b475b72a0f42a4991119501c4) ) // sprites
3949 ROM_LOAD( "gen_=m72=_c-l3-b.ic45", 0x20000, 0x20000, CRC(def65294) SHA1(23f5d99fa9f604fde37cb52113bff233d9be1d25) )
3950 ROM_LOAD( "gen_=m72=_c-h0-b.ic46", 0x40000, 0x20000, CRC(bb0d6ad4) SHA1(4ab617fadfc32efad90ed7f0555513f167b0c43a) )
3951 ROM_LOAD( "gen_=m72=_c-h3-b.ic36", 0x60000, 0x20000, CRC(4351044e) SHA1(0d3ce3f4f1473fd997e70de91e7b5b5a5ec60ad4) )
3952
3953 ROM_REGION( 0x080000, "gfx2", 0 )
3954 ROM_LOAD( "gen_=m81=_a-l0-a.ic49", 0x00000, 0x20000, CRC(c577ba5f) SHA1(c882e58cf64deca8eee6f14f3df43ecc932488fc) ) // tiles
3955 ROM_LOAD( "gen_=m81=_a-l1-a.ic48", 0x20000, 0x20000, CRC(429d12ab) SHA1(ccba25eab981fc4e664f76e06a2964066f2ae2e8) )
3956 ROM_LOAD( "gen_=m81=_a-h0-a.ic57", 0x40000, 0x20000, CRC(b5b163b0) SHA1(82a708fea4953a7c4dcd1d4a1b07f302221ba30b) )
3957 ROM_LOAD( "gen_=m81=_a-h1-a.ic56", 0x60000, 0x20000, CRC(8ef566a1) SHA1(3afb020a7317efe89c18b2a7773894ce28499d49) )
3958
3959 ROM_REGION( 0x080000, "sprites2", 0 ) // leftover from Major Title (mask roms, soldered on pcb)
3960 ROM_LOAD( "mt_f0.ic38", 0x00000, 0x20000, CRC(2d5e05d5) SHA1(18bdc9c561dbf0f91642161ca985d2154bd58b5d) ) // sprites #2
3961 ROM_LOAD( "mt_f1.ic39", 0x20000, 0x20000, CRC(c68cd65f) SHA1(8999b558b4af0f453ada9e4ef705163df96844e6) )
3962 ROM_LOAD( "mt_f2.ic40", 0x40000, 0x20000, CRC(a71feb2d) SHA1(47e366b422772bed08ee4d1c338970687d6c3b4c) )
3963 ROM_LOAD( "mt_f3.ic41", 0x60000, 0x20000, CRC(179f7562) SHA1(6d28b199daffc62e8fa9009878ac0bb976ccbb2a) )
3964
3965 ROM_REGION( 0x20000, "samples", 0 ) // samples
3966 ROM_LOAD( "gen_=m84=_a-v0-d.ic12", 0x00000, 0x20000, CRC(d8595c66) SHA1(97920c9947fbac609fb901415e5471c6e4ca066c) )
3967 ROM_END
3968
3969
3970 /*****************************
3971 M84 sets
3972 ******************************/
3973
3974 ROM_START( rtype2 )
3975 ROM_REGION( 0x100000, "maincpu", 0 )
3976 ROM_LOAD16_BYTE( "rt2-a-h0-d.54", 0x00001, 0x20000, CRC(d8ece6f4) SHA1(f7bb246fe8b75af24716d419bb3c6e7d9cd0971e) )
3977 ROM_LOAD16_BYTE( "rt2-a-l0-d.60", 0x00000, 0x20000, CRC(32cfb2e4) SHA1(d4b44a40e2933040eddb2b09de7bfe28d76c5f25) )
3978 ROM_LOAD16_BYTE( "rt2-a-h1-d.53", 0x40001, 0x20000, CRC(4f6e9b15) SHA1(ef733c2615951f54691877ad3e84d08107723324) )
3979 ROM_RELOAD( 0xc0001, 0x20000 )
3980 ROM_LOAD16_BYTE( "rt2-a-l1-d.59", 0x40000, 0x20000, CRC(0fd123bf) SHA1(1133163f6716e9a4bbb437b3a471477d0bd97051) )
3981 ROM_RELOAD( 0xc0000, 0x20000 )
3982
3983 ROM_REGION( 0x10000, "soundcpu", 0 )
3984 ROM_LOAD( "ic17.4f", 0x00000, 0x10000, CRC(73ffecb4) SHA1(4795bf0d6263060c3d3759b659bdb189a4087600) )
3985
3986 ROM_REGION( 0x080000, "sprites", 0 )
3987 ROM_LOAD( "ic31.6l", 0x00000, 0x20000, CRC(2cd8f913) SHA1(a53752b35da95b420dd29a09176d265d292b3938) ) // sprites
3988 ROM_LOAD( "ic21.4l", 0x20000, 0x20000, CRC(5033066d) SHA1(e125127f0610c63f9e59a585db547be5d49ed863) )
3989 ROM_LOAD( "ic32.6m", 0x40000, 0x20000, CRC(ec3a0450) SHA1(632bdd397f1bc67f6970faf7d09ab8d911e105fe) )
3990 ROM_LOAD( "ic22.4m", 0x60000, 0x20000, CRC(db6176fc) SHA1(1eaf72af0322490c98461aded202288e387caac1) )
3991
3992 ROM_REGION( 0x100000, "gfx2", 0 )
3993 ROM_LOAD( "ic50.7s", 0x00000, 0x20000, CRC(f3f8736e) SHA1(37872b30459ad05b2981d4ac84983f3b52d0d2d6) ) // tiles
3994 ROM_LOAD( "ic51.7u", 0x20000, 0x20000, CRC(b4c543af) SHA1(56042eba711160fc701021c8787414dcaddcdecb) )
3995 ROM_LOAD( "ic56.8s", 0x40000, 0x20000, CRC(4cb80d66) SHA1(31c5496c14b277e428a2f22195fe1742d6a577d4) )
3996 ROM_LOAD( "ic57.8u", 0x60000, 0x20000, CRC(bee128e0) SHA1(b149dae5f8f67a329d6df033fadf50ad75c0a57a) )
3997 ROM_LOAD( "ic65.9r", 0x80000, 0x20000, CRC(2dc9c71a) SHA1(124e89c17f3af034d5a387ff3eab906d289c27f7) )
3998 ROM_LOAD( "ic66.9u", 0xa0000, 0x20000, CRC(7533c428) SHA1(ba435cfb6c3c49fcc4d716dcecf8f17545b8eec6) )
3999 ROM_LOAD( "ic63.9m", 0xc0000, 0x20000, CRC(a6ad67f2) SHA1(b005b037ce8b3c932089982ecfbccdc922278fe3) )
4000 ROM_LOAD( "ic64.9p", 0xe0000, 0x20000, CRC(3686d555) SHA1(d03754d9b8a6a3bfd4a85eeddacc35a36af197bd) )
4001
4002 ROM_REGION( 0x20000, "samples", 0 ) // samples
4003 ROM_LOAD( "ic14.4c", 0x00000, 0x20000, CRC(637172d5) SHA1(9dd0dc409306287238826bf301e2a7a12d6cd9ce) )
4004 ROM_END
4005
4006 ROM_START( rtype2j )
4007 ROM_REGION( 0x100000, "maincpu", 0 )
4008 ROM_LOAD16_BYTE( "rt2-a-h0.54", 0x00001, 0x20000, CRC(7857ccf6) SHA1(9f6774a8128ee2dbb5b6c42289095275337bc73e) )
4009 ROM_LOAD16_BYTE( "rt2-a-l0.60", 0x00000, 0x20000, CRC(cb22cd6e) SHA1(a877cffbac9f55bca8932b12540a4686ba975684) )
4010 ROM_LOAD16_BYTE( "rt2-a-h1.53", 0x40001, 0x20000, CRC(49e75d28) SHA1(956bafaaa6711a8a13f2bffe43e8d05d51d8a3c9) )
4011 ROM_RELOAD( 0xc0001, 0x20000 )
4012 ROM_LOAD16_BYTE( "rt2-a-l1.59", 0x40000, 0x20000, CRC(12ec1676) SHA1(10cee9a87dd954444b0e64fad7f15a5ae529890d) )
4013 ROM_RELOAD( 0xc0000, 0x20000 )
4014
4015 ROM_REGION( 0x10000, "soundcpu", 0 )
4016 ROM_LOAD( "ic17.4f", 0x00000, 0x10000, CRC(73ffecb4) SHA1(4795bf0d6263060c3d3759b659bdb189a4087600) )
4017
4018 ROM_REGION( 0x080000, "sprites", 0 )
4019 ROM_LOAD( "ic31.6l", 0x00000, 0x20000, CRC(2cd8f913) SHA1(a53752b35da95b420dd29a09176d265d292b3938) ) // sprites
4020 ROM_LOAD( "ic21.4l", 0x20000, 0x20000, CRC(5033066d) SHA1(e125127f0610c63f9e59a585db547be5d49ed863) )
4021 ROM_LOAD( "ic32.6m", 0x40000, 0x20000, CRC(ec3a0450) SHA1(632bdd397f1bc67f6970faf7d09ab8d911e105fe) )
4022 ROM_LOAD( "ic22.4m", 0x60000, 0x20000, CRC(db6176fc) SHA1(1eaf72af0322490c98461aded202288e387caac1) )
4023
4024 ROM_REGION( 0x100000, "gfx2", 0 )
4025 ROM_LOAD( "ic50.7s", 0x00000, 0x20000, CRC(f3f8736e) SHA1(37872b30459ad05b2981d4ac84983f3b52d0d2d6) ) // tiles
4026 ROM_LOAD( "ic51.7u", 0x20000, 0x20000, CRC(b4c543af) SHA1(56042eba711160fc701021c8787414dcaddcdecb) )
4027 ROM_LOAD( "ic56.8s", 0x40000, 0x20000, CRC(4cb80d66) SHA1(31c5496c14b277e428a2f22195fe1742d6a577d4) )
4028 ROM_LOAD( "ic57.8u", 0x60000, 0x20000, CRC(bee128e0) SHA1(b149dae5f8f67a329d6df033fadf50ad75c0a57a) )
4029 ROM_LOAD( "ic65.9r", 0x80000, 0x20000, CRC(2dc9c71a) SHA1(124e89c17f3af034d5a387ff3eab906d289c27f7) )
4030 ROM_LOAD( "ic66.9u", 0xa0000, 0x20000, CRC(7533c428) SHA1(ba435cfb6c3c49fcc4d716dcecf8f17545b8eec6) )
4031 ROM_LOAD( "ic63.9m", 0xc0000, 0x20000, CRC(a6ad67f2) SHA1(b005b037ce8b3c932089982ecfbccdc922278fe3) )
4032 ROM_LOAD( "ic64.9p", 0xe0000, 0x20000, CRC(3686d555) SHA1(d03754d9b8a6a3bfd4a85eeddacc35a36af197bd) )
4033
4034 ROM_REGION( 0x20000, "samples", 0 ) // samples
4035 ROM_LOAD( "ic14.4c", 0x00000, 0x20000, CRC(637172d5) SHA1(9dd0dc409306287238826bf301e2a7a12d6cd9ce) )
4036
4037 ROM_REGION( 0x0200, "proms", 0 ) // located on M84-B-A
4038 ROM_LOAD( "rt2_b-4n-.bin", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) )
4039 ROM_LOAD( "rt2_b-4p-.bin", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) )
4040
4041 // stuff below isn't used but loaded because it was on the board ..
4042 ROM_REGION( 0x0800, "plds", 0 )
4043 ROM_LOAD( "rt2-a-2h-.5", 0x0000, 0x0104, NO_DUMP ) // TIBPAL-16L8-25
4044 ROM_LOAD( "rt2-a-5l-.33", 0x0200, 0x0104, NO_DUMP ) // TIBPAL-16L8-25
4045 ROM_LOAD( "rt2-a-7d-.45", 0x0400, 0x0104, CRC(53c1e087) SHA1(b214ba4e7cc3d582ee85616923f38fd4873dacb1) ) // TIBPAL-16L8-25
4046 ROM_LOAD( "rt2-b-3a-.9", 0x0600, 0x0104, NO_DUMP ) // TIBPAL-16L8-25
4047 ROM_END
4048
4049 ROM_START( rtype2jc )
4050 ROM_REGION( 0x100000, "maincpu", 0 )
4051 ROM_LOAD16_BYTE( "rt2-a-h0-c.54", 0x00001, 0x20000, CRC(ef9a9990) SHA1(fdf8fb7cb2b16f3cc58592da5c696ccff85f87e0) )
4052 ROM_LOAD16_BYTE( "rt2-a-l0-c.60", 0x00000, 0x20000, CRC(d8b9da64) SHA1(ce19fc95d0adefa57c2161d7b0d756ecf799c707) )
4053 ROM_LOAD16_BYTE( "rt2-a-h1-c.53", 0x40001, 0x20000, CRC(1b1870f4) SHA1(9a98b146980a87d088b7157da7a64c99902ddd54) )
4054 ROM_RELOAD( 0xc0001, 0x20000 )
4055 ROM_LOAD16_BYTE( "rt2-a-l1-c.59", 0x40000, 0x20000, CRC(60fdff35) SHA1(9c89682deebfa88864b5af9cf0f05944d5c2212f) )
4056 ROM_RELOAD( 0xc0000, 0x20000 )
4057
4058 ROM_REGION( 0x10000, "soundcpu", 0 )
4059 ROM_LOAD( "ic17.4f", 0x00000, 0x10000, CRC(73ffecb4) SHA1(4795bf0d6263060c3d3759b659bdb189a4087600) )
4060
4061 ROM_REGION( 0x080000, "sprites", 0 )
4062 ROM_LOAD( "ic31.6l", 0x00000, 0x20000, CRC(2cd8f913) SHA1(a53752b35da95b420dd29a09176d265d292b3938) ) // sprites
4063 ROM_LOAD( "ic21.4l", 0x20000, 0x20000, CRC(5033066d) SHA1(e125127f0610c63f9e59a585db547be5d49ed863) )
4064 ROM_LOAD( "ic32.6m", 0x40000, 0x20000, CRC(ec3a0450) SHA1(632bdd397f1bc67f6970faf7d09ab8d911e105fe) )
4065 ROM_LOAD( "ic22.4m", 0x60000, 0x20000, CRC(db6176fc) SHA1(1eaf72af0322490c98461aded202288e387caac1) )
4066
4067 ROM_REGION( 0x100000, "gfx2", 0 )
4068 ROM_LOAD( "ic50.7s", 0x00000, 0x20000, CRC(f3f8736e) SHA1(37872b30459ad05b2981d4ac84983f3b52d0d2d6) ) // tiles
4069 ROM_LOAD( "ic51.7u", 0x20000, 0x20000, CRC(b4c543af) SHA1(56042eba711160fc701021c8787414dcaddcdecb) )
4070 ROM_LOAD( "ic56.8s", 0x40000, 0x20000, CRC(4cb80d66) SHA1(31c5496c14b277e428a2f22195fe1742d6a577d4) )
4071 ROM_LOAD( "ic57.8u", 0x60000, 0x20000, CRC(bee128e0) SHA1(b149dae5f8f67a329d6df033fadf50ad75c0a57a) )
4072 ROM_LOAD( "ic65.9r", 0x80000, 0x20000, CRC(2dc9c71a) SHA1(124e89c17f3af034d5a387ff3eab906d289c27f7) )
4073 ROM_LOAD( "ic66.9u", 0xa0000, 0x20000, CRC(7533c428) SHA1(ba435cfb6c3c49fcc4d716dcecf8f17545b8eec6) )
4074 ROM_LOAD( "ic63.9m", 0xc0000, 0x20000, CRC(a6ad67f2) SHA1(b005b037ce8b3c932089982ecfbccdc922278fe3) )
4075 ROM_LOAD( "ic64.9p", 0xe0000, 0x20000, CRC(3686d555) SHA1(d03754d9b8a6a3bfd4a85eeddacc35a36af197bd) )
4076
4077 ROM_REGION( 0x20000, "samples", 0 ) // samples
4078 ROM_LOAD( "ic14.4c", 0x00000, 0x20000, CRC(637172d5) SHA1(9dd0dc409306287238826bf301e2a7a12d6cd9ce) )
4079 ROM_END
4080
4081
4082 ROM_START( hharryu )
4083 ROM_REGION( 0x100000, "maincpu", 0 )
4084 ROM_LOAD16_BYTE( "a-ho-u.8d", 0x00001, 0x20000, CRC(ede7f755) SHA1(adcec83d6b936ab1a14d039792b9375e9f803a08) )
4085 ROM_LOAD16_BYTE( "a-lo-u.9d", 0x00000, 0x20000, CRC(df0726ae) SHA1(7ef163d2e8c14a14328d4365705bb31540bdc7cb) )
4086 ROM_LOAD16_BYTE( "a-h1-f.8b", 0x60001, 0x10000, CRC(31b741c5) SHA1(46c1c4cea09477cc4989f3e06e08851d02743e62) )
4087 ROM_RELOAD( 0xe0001, 0x10000 )
4088 ROM_LOAD16_BYTE( "a-l1-f.9b", 0x60000, 0x10000, CRC(b23e966c) SHA1(f506f6d1f4f7874070e91d1df8f141cca031ce29) )
4089 ROM_RELOAD( 0xe0000, 0x10000 )
4090
4091 ROM_REGION( 0x10000, "soundcpu", 0 )
4092 ROM_LOAD( "a-sp-0.rom", 0x00000, 0x10000, CRC(80e210e7) SHA1(66cff58fb37c52e1d8e0567e13b774253e862585) )
4093
4094 ROM_REGION( 0x080000, "sprites", 0 )
4095 ROM_LOAD( "hh_00.rom", 0x00000, 0x20000, CRC(ec5127ef) SHA1(014ac8ad7b19cd9b475b72a0f42a4991119501c4) ) // sprites
4096 ROM_LOAD( "hh_10.rom", 0x20000, 0x20000, CRC(def65294) SHA1(23f5d99fa9f604fde37cb52113bff233d9be1d25) )
4097 ROM_LOAD( "hh_20.rom", 0x40000, 0x20000, CRC(bb0d6ad4) SHA1(4ab617fadfc32efad90ed7f0555513f167b0c43a) )
4098 ROM_LOAD( "hh_30.rom", 0x60000, 0x20000, CRC(4351044e) SHA1(0d3ce3f4f1473fd997e70de91e7b5b5a5ec60ad4) )
4099
4100 ROM_REGION( 0x080000, "gfx2", 0 )
4101 ROM_LOAD( "hh_a0.rom", 0x00000, 0x20000, CRC(c577ba5f) SHA1(c882e58cf64deca8eee6f14f3df43ecc932488fc) ) // tiles
4102 ROM_LOAD( "hh_a1.rom", 0x20000, 0x20000, CRC(429d12ab) SHA1(ccba25eab981fc4e664f76e06a2964066f2ae2e8) )
4103 ROM_LOAD( "hh_a2.rom", 0x40000, 0x20000, CRC(b5b163b0) SHA1(82a708fea4953a7c4dcd1d4a1b07f302221ba30b) )
4104 ROM_LOAD( "hh_a3.rom", 0x60000, 0x20000, CRC(8ef566a1) SHA1(3afb020a7317efe89c18b2a7773894ce28499d49) )
4105
4106 ROM_REGION( 0x20000, "samples", 0 ) // samples
4107 ROM_LOAD( "a-v0-0.rom", 0x00000, 0x20000, CRC(faaacaff) SHA1(ea3a3920255c07aa9c0a7e0191eae257a9f7f558) )
4108 ROM_END
4109
4110 ROM_START( dkgensan )
4111 ROM_REGION( 0x100000, "maincpu", 0 )
4112 ROM_LOAD16_BYTE( "gen-a-h0.bin", 0x00001, 0x20000, CRC(07a45f6d) SHA1(8ffbd395aad244747d9f87062d2b062f41a4829c) )
4113 ROM_LOAD16_BYTE( "gen-a-l0.bin", 0x00000, 0x20000, CRC(46478fea) SHA1(fd4ff544588535333c1b98fbc08446ef49b11212) )
4114 ROM_LOAD16_BYTE( "gen-a-h1.bin", 0x60001, 0x10000, CRC(54e5b73c) SHA1(5664f6e0a931b1c139e82dc98fcc9e38acd14616) )
4115 ROM_RELOAD( 0xe0001, 0x10000 )
4116 ROM_LOAD16_BYTE( "gen-a-l1.bin", 0x60000, 0x10000, CRC(894f8a9f) SHA1(57a0885c52a094def03b129a450cc891e6c075c6) )
4117 ROM_RELOAD( 0xe0000, 0x10000 )
4118
4119 ROM_REGION( 0x10000, "soundcpu", 0 )
4120 ROM_LOAD( "gen-a-sp.bin", 0x00000, 0x10000, CRC(e83cfc2c) SHA1(3193bdd06a9712fc499e6fc90a33140463ef59fe) )
4121
4122 ROM_REGION( 0x080000, "sprites", 0 )
4123 ROM_LOAD( "hh_00.rom", 0x00000, 0x20000, CRC(ec5127ef) SHA1(014ac8ad7b19cd9b475b72a0f42a4991119501c4) ) // sprites
4124 ROM_LOAD( "hh_10.rom", 0x20000, 0x20000, CRC(def65294) SHA1(23f5d99fa9f604fde37cb52113bff233d9be1d25) )
4125 ROM_LOAD( "hh_20.rom", 0x40000, 0x20000, CRC(bb0d6ad4) SHA1(4ab617fadfc32efad90ed7f0555513f167b0c43a) )
4126 ROM_LOAD( "hh_30.rom", 0x60000, 0x20000, CRC(4351044e) SHA1(0d3ce3f4f1473fd997e70de91e7b5b5a5ec60ad4) )
4127
4128 ROM_REGION( 0x080000, "gfx2", 0 )
4129 ROM_LOAD( "hh_a0.rom", 0x00000, 0x20000, CRC(c577ba5f) SHA1(c882e58cf64deca8eee6f14f3df43ecc932488fc) ) // tiles
4130 ROM_LOAD( "hh_a1.rom", 0x20000, 0x20000, CRC(429d12ab) SHA1(ccba25eab981fc4e664f76e06a2964066f2ae2e8) )
4131 ROM_LOAD( "hh_a2.rom", 0x40000, 0x20000, CRC(b5b163b0) SHA1(82a708fea4953a7c4dcd1d4a1b07f302221ba30b) )
4132 ROM_LOAD( "hh_a3.rom", 0x60000, 0x20000, CRC(8ef566a1) SHA1(3afb020a7317efe89c18b2a7773894ce28499d49) )
4133
4134 ROM_REGION( 0x20000, "samples", 0 ) // samples
4135 ROM_LOAD( "gen-vo.bin", 0x00000, 0x20000, CRC(d8595c66) SHA1(97920c9947fbac609fb901415e5471c6e4ca066c) )
4136 ROM_END
4137
4138 ROM_START( hharryb )
4139 ROM_REGION( 0x100000, "maincpu", 0 )
4140 ROM_LOAD16_BYTE( "4-a-27c010a.bin", 0x00001, 0x20000, CRC(755c0874) SHA1(28ea0f7d700cc0119d8cb5693d0bcfef3da78c95) )
4141 ROM_LOAD16_BYTE( "6-a-27c010a.bin", 0x00000, 0x20000, CRC(f10fb55c) SHA1(1bb0d56a29ca34b003c57faa9693b96413718608) )
4142 ROM_LOAD16_BYTE( "3-a-27c512.bin", 0x60001, 0x10000, CRC(31b741c5) SHA1(46c1c4cea09477cc4989f3e06e08851d02743e62) )
4143 ROM_RELOAD( 0xe0001, 0x10000 )
4144 ROM_LOAD16_BYTE( "5-a-27c512.bin", 0x60000, 0x10000, CRC(b23e966c) SHA1(f506f6d1f4f7874070e91d1df8f141cca031ce29) )
4145 ROM_RELOAD( 0xe0000, 0x10000 )
4146
4147 ROM_REGION( 0x10000, "soundcpu", 0 )
4148 ROM_LOAD( "2-a-27c512.bin", 0x00000, 0x10000, CRC(80e210e7) SHA1(66cff58fb37c52e1d8e0567e13b774253e862585) )
4149
4150 ROM_REGION( 0x080000, "sprites", 0 )
4151 ROM_LOAD( "17-c-27c010a.bin", 0x00000, 0x20000, CRC(ec5127ef) SHA1(014ac8ad7b19cd9b475b72a0f42a4991119501c4) )
4152 ROM_LOAD( "16-c-27c010a.bin", 0x20000, 0x20000, CRC(def65294) SHA1(23f5d99fa9f604fde37cb52113bff233d9be1d25) )
4153 ROM_LOAD( "14-c-27c010a.bin", 0x40000, 0x20000, CRC(bb0d6ad4) SHA1(4ab617fadfc32efad90ed7f0555513f167b0c43a) )
4154 ROM_LOAD( "15-c-27c010a.bin", 0x60000, 0x20000, CRC(4351044e) SHA1(0d3ce3f4f1473fd997e70de91e7b5b5a5ec60ad4) )
4155
4156 ROM_REGION( 0x080000, "gfx2", 0 )
4157 ROM_LOAD( "13-b-27c010a.bin", 0x00000, 0x20000, CRC(c577ba5f) SHA1(c882e58cf64deca8eee6f14f3df43ecc932488fc) ) // tiles
4158 ROM_LOAD( "11-b-27c010a.bin", 0x20000, 0x20000, CRC(429d12ab) SHA1(ccba25eab981fc4e664f76e06a2964066f2ae2e8) )
4159 ROM_LOAD( "9-b-27c010a.bin", 0x40000, 0x20000, CRC(b5b163b0) SHA1(82a708fea4953a7c4dcd1d4a1b07f302221ba30b) )
4160 ROM_LOAD( "7-b-27c010a.bin", 0x60000, 0x20000, CRC(8ef566a1) SHA1(3afb020a7317efe89c18b2a7773894ce28499d49) )
4161
4162 ROM_REGION( 0x20000, "samples", 0 )
4163 ROM_LOAD( "1-a-27c010a.bin", 0x00000, 0x20000, CRC(faaacaff) SHA1(ea3a3920255c07aa9c0a7e0191eae257a9f7f558) )
4164
4165 ROM_REGION( 0x200, "proms", 0 )
4166 ROM_LOAD( "19-c-82s129.bin", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) )
4167 ROM_LOAD( "18-c-82s129.bin", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) )
4168
4169 ROM_REGION( 0x104, "plds", 0 )
4170 ROM_LOAD( "a-pal16l8.bin", 0x000, 0x104, CRC(1358c513) SHA1(7c8f44e4d63867d54e16fc29d168a27be5f4babf) )
4171 ROM_END
4172
4173
4174 ROM_START( cosmccop )
4175 ROM_REGION( 0x100000, "maincpu", 0 )
4176 ROM_LOAD16_BYTE( "cc-d-h0b.bin", 0x00001, 0x40000, CRC(38958b01) SHA1(7d7e217742e33a1fe096adf5bbc93d63ddcfb375) )
4177 ROM_RELOAD( 0x80001, 0x40000 )
4178 ROM_LOAD16_BYTE( "cc-d-l0b.bin", 0x00000, 0x40000, CRC(eff87f70) SHA1(61f49b8738cf31546d4182680b761705274b01bf) )
4179 ROM_RELOAD( 0x80000, 0x40000 )
4180
4181 ROM_REGION( 0x10000, "soundcpu", 0 )
4182 ROM_LOAD( "cc-d-sp.bin", 0x00000, 0x10000, CRC(3e3ace60) SHA1(d89b1b84de2887598bb7bcb17b1df1ec8d1862a9) )
4183
4184 ROM_REGION( 0x080000, "sprites", 0 ) // sprites - same data as the gallop set
4185 ROM_LOAD( "cc-c-00.bin", 0x00000, 0x20000, CRC(9d99deaa) SHA1(acf16bea0f482306107d2a305c568406b6c21e9a) ) // == cc-c-00.ic53
4186 ROM_LOAD( "cc-c-10.bin", 0x20000, 0x20000, CRC(7eb083ed) SHA1(31fa7d532fd46e861c3d19d5b08661653f685a49) ) // == cc-c-10.ic51
4187 ROM_LOAD( "cc-c-20.bin", 0x40000, 0x20000, CRC(9421489e) SHA1(e43d042bf8b4ebed93558d74ec479ec60a01ca5c) ) // == cc-c-20.ic49
4188 ROM_LOAD( "cc-c-30.bin", 0x60000, 0x20000, CRC(920ec735) SHA1(2d0949b43dddce7317c45910d6e4868ddf010806) ) // == cc-c-30.ic47
4189
4190 ROM_REGION( 0x080000, "gfx2", 0 ) // tiles - same data, different format as the gallop set
4191 ROM_LOAD( "cc-d-g00.bin", 0x00000, 0x20000, CRC(e7f3d772) SHA1(c7f0bc42e8dde7bae334c7974c3d0ddba3856144) ) // == cc-b-a0.ic21 + cc-b-b0.ic26
4192 ROM_LOAD( "cc-d-g10.bin", 0x20000, 0x20000, CRC(418b4e4c) SHA1(1191f12741ee7a360240f706534c9c83be8d5c2d) ) // == cc-b-a1.ic22 + cc-b-b1.ic27
4193 ROM_LOAD( "cc-d-g20.bin", 0x40000, 0x20000, CRC(a4b558eb) SHA1(0babf725de0065dbeca73fa170bd33565305d129) ) // == cc-b-a2.ic20 + cc-b-b2.ic25
4194 ROM_LOAD( "cc-d-g30.bin", 0x60000, 0x20000, CRC(f64a3166) SHA1(1661db2a37c76e6b4552e48c04966dbbccab8926) ) // == cc-b-a3.ic23 + cc-b-b3.ic24
4195
4196 ROM_REGION( 0x20000, "samples", 0 ) // samples - same data as the gallop set
4197 ROM_LOAD( "cc-c-v0.bin", 0x00000, 0x20000, CRC(6247bade) SHA1(4bc9f86acd09908c74b1ab0e7817c4ff1cad6f0b) ) // == cc-c-v0.ic44
4198 ROM_END
4199
4200
4201 ROM_START( ltswords )
4202 ROM_REGION( 0x100000, "maincpu", 0 )
4203 ROM_LOAD16_BYTE( "h0.ic55", 0x00001, 0x20000, CRC(22f342b2) SHA1(8a0954eed7ad5a231a0e3884da28556c0f64f7f6) )
4204 ROM_RELOAD( 0xc0001, 0x20000 )
4205 ROM_LOAD16_BYTE( "l0.ic61", 0x00000, 0x20000, CRC(0210d592) SHA1(8500dd6da56c007878287d468b3ebc1686e59ef7) )
4206 ROM_RELOAD( 0xc0000, 0x20000 )
4207
4208 ROM_REGION( 0x10000, "soundcpu", 0 )
4209 ROM_LOAD( "ken_d-sp.rom", 0x00000, 0x10000, CRC(233ca1cf) SHA1(4ebb6162773bd586a10016ccd77998a9b880f474) )
4210
4211 ROM_REGION( 0x080000, "sprites", 0 )
4212 ROM_LOAD( "ken_m31.rom", 0x00000, 0x20000, CRC(e00b95a6) SHA1(6efcd8d58f8ebe3a42c60a0aa790b42c0e132777) ) // sprites
4213 ROM_LOAD( "ken_m21.rom", 0x20000, 0x20000, CRC(d7722f87) SHA1(8606a53b8630934d2b5dfc986bd92ac4142f67e2) )
4214 ROM_LOAD( "ken_m32.rom", 0x40000, 0x20000, CRC(30a844c4) SHA1(72b2caba3ee7a229ca56f004516dea8d3f0a7ba6) )
4215 ROM_LOAD( "ken_m22.rom", 0x60000, 0x20000, CRC(a00dac85) SHA1(0c1ed852795046926f62843f6b256cbeecf9ebcf) )
4216
4217 ROM_REGION( 0x080000, "gfx2", 0 )
4218 ROM_LOAD( "ken_m51.rom", 0x00000, 0x20000, CRC(1646cf4f) SHA1(d240cb2bad3e766128e8e40aa7b1bf4f3b9a5559) ) // tiles
4219 ROM_LOAD( "ken_m57.rom", 0x20000, 0x20000, CRC(a9f88d90) SHA1(c8d4a96fe55fed4b7499550f3c74b03d10306757) )
4220 ROM_LOAD( "ken_m66.rom", 0x40000, 0x20000, CRC(e9d17645) SHA1(fbe18d6691686a1c458d4a91169c9850698b5ca7) )
4221 ROM_LOAD( "ken_m64.rom", 0x60000, 0x20000, CRC(df46709b) SHA1(e7c2cd752e765bf7b8ff24637305d61031ce0baa) )
4222
4223 ROM_REGION( 0x20000, "samples", 0 ) // samples
4224 ROM_LOAD( "ken_m14.rom", 0x00000, 0x20000, CRC(6651e9b7) SHA1(c42009f986c9a9f35732d5cd717d548536469b1c) )
4225 ROM_END
4226
4227 ROM_START( kengo )
4228 ROM_REGION( 0x100000, "maincpu", 0 )
4229 ROM_LOAD16_BYTE( "ken_d-h0.rom", 0x00001, 0x20000, CRC(f4ddeea5) SHA1(bcf016e40886e11c171f2f50de39ac0d8cabcdd1) )
4230 ROM_RELOAD( 0xc0001, 0x20000 )
4231 ROM_LOAD16_BYTE( "ken_d-l0.rom", 0x00000, 0x20000, CRC(04dc0f81) SHA1(b296529f0bc26d53b344449dfa5a08eca70f30d8) )
4232 ROM_RELOAD( 0xc0000, 0x20000 )
4233
4234 ROM_REGION( 0x10000, "soundcpu", 0 )
4235 ROM_LOAD( "ken_d-sp.rom", 0x00000, 0x10000, CRC(233ca1cf) SHA1(4ebb6162773bd586a10016ccd77998a9b880f474) )
4236
4237 ROM_REGION( 0x080000, "sprites", 0 )
4238 ROM_LOAD( "ken_m31.rom", 0x00000, 0x20000, CRC(e00b95a6) SHA1(6efcd8d58f8ebe3a42c60a0aa790b42c0e132777) ) // sprites
4239 ROM_LOAD( "ken_m21.rom", 0x20000, 0x20000, CRC(d7722f87) SHA1(8606a53b8630934d2b5dfc986bd92ac4142f67e2) )
4240 ROM_LOAD( "ken_m32.rom", 0x40000, 0x20000, CRC(30a844c4) SHA1(72b2caba3ee7a229ca56f004516dea8d3f0a7ba6) )
4241 ROM_LOAD( "ken_m22.rom", 0x60000, 0x20000, CRC(a00dac85) SHA1(0c1ed852795046926f62843f6b256cbeecf9ebcf) )
4242
4243 ROM_REGION( 0x080000, "gfx2", 0 )
4244 ROM_LOAD( "ken_m51.rom", 0x00000, 0x20000, CRC(1646cf4f) SHA1(d240cb2bad3e766128e8e40aa7b1bf4f3b9a5559) ) // tiles
4245 ROM_LOAD( "ken_m57.rom", 0x20000, 0x20000, CRC(a9f88d90) SHA1(c8d4a96fe55fed4b7499550f3c74b03d10306757) )
4246 ROM_LOAD( "ken_m66.rom", 0x40000, 0x20000, CRC(e9d17645) SHA1(fbe18d6691686a1c458d4a91169c9850698b5ca7) )
4247 ROM_LOAD( "ken_m64.rom", 0x60000, 0x20000, CRC(df46709b) SHA1(e7c2cd752e765bf7b8ff24637305d61031ce0baa) )
4248
4249 ROM_REGION( 0x20000, "samples", 0 ) // samples
4250 ROM_LOAD( "ken_m14.rom", 0x00000, 0x20000, CRC(6651e9b7) SHA1(c42009f986c9a9f35732d5cd717d548536469b1c) )
4251 ROM_END
4252
4253 ROM_START( kengoa )
4254 ROM_REGION( 0x100000, "maincpu", 0 )
4255 ROM_LOAD16_BYTE( "ken-d-h0-.ic55", 0x00001, 0x20000, CRC(ed3da88c) SHA1(536824eb3347eade2d3aad927e83eae51ee852b3) ) // shows 'for use in Japan' message, kengo set above doesn't
4256 ROM_RELOAD( 0xc0001, 0x20000 )
4257 ROM_LOAD16_BYTE( "ken-d-l0-.ic61", 0x00000, 0x20000, CRC(92c57d8e) SHA1(eb078a7b261e13cfb0a920b5115beee917b8d89c) )
4258 ROM_RELOAD( 0xc0000, 0x20000 )
4259
4260 ROM_REGION( 0x10000, "soundcpu", 0 )
4261 ROM_LOAD( "ken_d-sp.rom", 0x00000, 0x10000, CRC(233ca1cf) SHA1(4ebb6162773bd586a10016ccd77998a9b880f474) )
4262
4263 ROM_REGION( 0x080000, "sprites", 0 )
4264 ROM_LOAD( "ken_m31.rom", 0x00000, 0x20000, CRC(e00b95a6) SHA1(6efcd8d58f8ebe3a42c60a0aa790b42c0e132777) ) // sprites
4265 ROM_LOAD( "ken_m21.rom", 0x20000, 0x20000, CRC(d7722f87) SHA1(8606a53b8630934d2b5dfc986bd92ac4142f67e2) )
4266 ROM_LOAD( "ken_m32.rom", 0x40000, 0x20000, CRC(30a844c4) SHA1(72b2caba3ee7a229ca56f004516dea8d3f0a7ba6) )
4267 ROM_LOAD( "ken_m22.rom", 0x60000, 0x20000, CRC(a00dac85) SHA1(0c1ed852795046926f62843f6b256cbeecf9ebcf) )
4268
4269 ROM_REGION( 0x080000, "gfx2", 0 )
4270 ROM_LOAD( "ken_m51.rom", 0x00000, 0x20000, CRC(1646cf4f) SHA1(d240cb2bad3e766128e8e40aa7b1bf4f3b9a5559) ) // tiles
4271 ROM_LOAD( "ken_m57.rom", 0x20000, 0x20000, CRC(a9f88d90) SHA1(c8d4a96fe55fed4b7499550f3c74b03d10306757) )
4272 ROM_LOAD( "ken_m66.rom", 0x40000, 0x20000, CRC(e9d17645) SHA1(fbe18d6691686a1c458d4a91169c9850698b5ca7) )
4273 ROM_LOAD( "ken_m64.rom", 0x60000, 0x20000, CRC(df46709b) SHA1(e7c2cd752e765bf7b8ff24637305d61031ce0baa) )
4274
4275 ROM_REGION( 0x20000, "samples", 0 ) // samples
4276 ROM_LOAD( "ken_m14.rom", 0x00000, 0x20000, CRC(6651e9b7) SHA1(c42009f986c9a9f35732d5cd717d548536469b1c) )
4277
4278 ROM_REGION( 0x0200, "proms", 0 ) /* located on M84-B-B */
4279 ROM_LOAD( "ken_b-4n-.ic23", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) )
4280 ROM_LOAD( "ken_b-4p-.ic24", 0x0100, 0x0100, CRC(526f10ca) SHA1(e0ecd4db0720a4a37489e4d725843a2fbf266ebf) ) // differs from rtype 2 / ninja spirit
4281 ROM_END
4282
4283
4284 /*****************************
4285 M85 sets
4286 ******************************/
4287
4288 ROM_START( poundfor )
4289 ROM_REGION( 0x100000, "maincpu", 0 )
4290 ROM_LOAD16_BYTE( "ppa-h0-b.9e", 0x00001, 0x20000, CRC(50d4a2d8) SHA1(7fd62c6613cb58b512c6c3670fa66a5b9906e6a1) )
4291 ROM_LOAD16_BYTE( "ppa-l0-b.9d", 0x00000, 0x20000, CRC(bd997942) SHA1(da484afe3b79e09e323c768a0b2165e6283971a7) )
4292 ROM_LOAD16_BYTE( "ppa-h1.9f", 0x40001, 0x20000, CRC(f6c82f48) SHA1(b38a2f9f0f6439b2cf453fec87ca11d959777ee6) )
4293 ROM_RELOAD( 0xc0001, 0x20000 )
4294 ROM_LOAD16_BYTE( "ppa-l1.9c", 0x40000, 0x20000, CRC(5b07b087) SHA1(04a2403eb8c443cb92b880edc612542acdbcafa4) )
4295 ROM_RELOAD( 0xc0000, 0x20000 )
4296
4297 ROM_REGION( 0x10000, "soundcpu", 0 )
4298 ROM_LOAD( "ppa-sp.4j", 0x00000, 0x10000, CRC(3f458a5b) SHA1(d73740b2a548bf8a895909da0841f18d9ed32668) )
4299
4300 ROM_REGION( 0x100000, "sprites", 0 )
4301 ROM_LOAD( "ppb-n0.bin", 0x00000, 0x40000, CRC(951a41f8) SHA1(59b64f63ea2452c2b42ff7ebf1ff6fc4e7879ce3) ) // sprites
4302 ROM_LOAD( "ppb-n1.bin", 0x40000, 0x40000, CRC(c609b7f2) SHA1(1da3550c7e4d2a26d75d143934680d9177ba5c35) )
4303 ROM_LOAD( "ppb-n2.bin", 0x80000, 0x40000, CRC(318c0b5f) SHA1(1d4cd17dc2f8fc4e523eaf679f21d83e1bfade4e) )
4304 ROM_LOAD( "ppb-n3.bin", 0xc0000, 0x40000, CRC(93dc9490) SHA1(3df4d57a7bf19443f5aa6a416bcee968f81d9059) )
4305
4306 ROM_REGION( 0x080000, "gfx2", 0 )
4307 ROM_LOAD( "ppa-g00.bin", 0x00000, 0x20000, CRC(8a88a174) SHA1(d360b9014aec31960538ee488894496248a820dc) ) // tiles
4308 ROM_LOAD( "ppa-g10.bin", 0x20000, 0x20000, CRC(e48a66ac) SHA1(49b33db6a922d6f1d1417e28714a67431b7c0217) )
4309 ROM_LOAD( "ppa-g20.bin", 0x40000, 0x20000, CRC(12b93e79) SHA1(f3d2b76a30874827c8998c1d13a55a3990b699b7) )
4310 ROM_LOAD( "ppa-g30.bin", 0x60000, 0x20000, CRC(faa39aee) SHA1(9cc1a468b304437766c04189054d3b8f7ff1f958) )
4311
4312 ROM_REGION( 0x40000, "samples", 0 ) // samples
4313 ROM_LOAD( "ppa-v0.bin", 0x00000, 0x40000, CRC(03321664) SHA1(51f2b2b712385c1cd55fd069829efac01838d603) )
4314 ROM_END
4315
4316 ROM_START( poundforj )
4317 ROM_REGION( 0x100000, "maincpu", 0 )
4318 ROM_LOAD16_BYTE( "ppa-h0-.9e", 0x00001, 0x20000, CRC(f0165e3b) SHA1(a0482b34c0d05d8f48d1b16f2bc2d5d9ec465dc8) )
4319 ROM_LOAD16_BYTE( "ppa-l0-.9d", 0x00000, 0x20000, CRC(f954f99f) SHA1(6e7a9718dc63e595403bfc0f1ceae4a71dc75133) )
4320 ROM_LOAD16_BYTE( "ppa-h1.9f", 0x40001, 0x20000, CRC(f6c82f48) SHA1(b38a2f9f0f6439b2cf453fec87ca11d959777ee6) )
4321 ROM_RELOAD( 0xc0001, 0x20000 )
4322 ROM_LOAD16_BYTE( "ppa-l1.9c", 0x40000, 0x20000, CRC(5b07b087) SHA1(04a2403eb8c443cb92b880edc612542acdbcafa4) )
4323 ROM_RELOAD( 0xc0000, 0x20000 )
4324
4325 ROM_REGION( 0x10000, "soundcpu", 0 )
4326 ROM_LOAD( "ppa-sp.4j", 0x00000, 0x10000, CRC(3f458a5b) SHA1(d73740b2a548bf8a895909da0841f18d9ed32668) )
4327
4328 ROM_REGION( 0x100000, "sprites", 0 )
4329 ROM_LOAD( "ppb-n0.bin", 0x00000, 0x40000, CRC(951a41f8) SHA1(59b64f63ea2452c2b42ff7ebf1ff6fc4e7879ce3) ) // sprites
4330 ROM_LOAD( "ppb-n1.bin", 0x40000, 0x40000, CRC(c609b7f2) SHA1(1da3550c7e4d2a26d75d143934680d9177ba5c35) )
4331 ROM_LOAD( "ppb-n2.bin", 0x80000, 0x40000, CRC(318c0b5f) SHA1(1d4cd17dc2f8fc4e523eaf679f21d83e1bfade4e) )
4332 ROM_LOAD( "ppb-n3.bin", 0xc0000, 0x40000, CRC(93dc9490) SHA1(3df4d57a7bf19443f5aa6a416bcee968f81d9059) )
4333
4334 ROM_REGION( 0x080000, "gfx2", 0 )
4335 ROM_LOAD( "ppa-g00.bin", 0x00000, 0x20000, CRC(8a88a174) SHA1(d360b9014aec31960538ee488894496248a820dc) ) // tiles
4336 ROM_LOAD( "ppa-g10.bin", 0x20000, 0x20000, CRC(e48a66ac) SHA1(49b33db6a922d6f1d1417e28714a67431b7c0217) )
4337 ROM_LOAD( "ppa-g20.bin", 0x40000, 0x20000, CRC(12b93e79) SHA1(f3d2b76a30874827c8998c1d13a55a3990b699b7) )
4338 ROM_LOAD( "ppa-g30.bin", 0x60000, 0x20000, CRC(faa39aee) SHA1(9cc1a468b304437766c04189054d3b8f7ff1f958) )
4339
4340 ROM_REGION( 0x40000, "samples", 0 ) // samples
4341 ROM_LOAD( "ppa-v0.bin", 0x00000, 0x40000, CRC(03321664) SHA1(51f2b2b712385c1cd55fd069829efac01838d603) )
4342 ROM_END
4343
4344 ROM_START( poundforu )
4345 ROM_REGION( 0x100000, "maincpu", 0 )
4346 ROM_LOAD16_BYTE( "ppa-ho-a.9e", 0x00001, 0x20000, CRC(ff4c83a4) SHA1(1b7791c784bf7c4774e3200b76d65ab0bf0ff93b) )
4347 ROM_LOAD16_BYTE( "ppa-lo-a.9d", 0x00000, 0x20000, CRC(3374ce8f) SHA1(7455f8339aeed0ef3d0567baa804b62ca3615283) )
4348 ROM_LOAD16_BYTE( "ppa-h1.9f", 0x40001, 0x20000, CRC(f6c82f48) SHA1(b38a2f9f0f6439b2cf453fec87ca11d959777ee6) )
4349 ROM_RELOAD( 0xc0001, 0x20000 )
4350 ROM_LOAD16_BYTE( "ppa-l1.9c", 0x40000, 0x20000, CRC(5b07b087) SHA1(04a2403eb8c443cb92b880edc612542acdbcafa4) )
4351 ROM_RELOAD( 0xc0000, 0x20000 )
4352
4353 ROM_REGION( 0x10000, "soundcpu", 0 )
4354 ROM_LOAD( "ppa-sp.4j", 0x00000, 0x10000, CRC(3f458a5b) SHA1(d73740b2a548bf8a895909da0841f18d9ed32668) )
4355
4356 ROM_REGION( 0x100000, "sprites", 0 )
4357 ROM_LOAD( "ppb-n0.bin", 0x00000, 0x40000, CRC(951a41f8) SHA1(59b64f63ea2452c2b42ff7ebf1ff6fc4e7879ce3) ) // sprites
4358 ROM_LOAD( "ppb-n1.bin", 0x40000, 0x40000, CRC(c609b7f2) SHA1(1da3550c7e4d2a26d75d143934680d9177ba5c35) )
4359 ROM_LOAD( "ppb-n2.bin", 0x80000, 0x40000, CRC(318c0b5f) SHA1(1d4cd17dc2f8fc4e523eaf679f21d83e1bfade4e) )
4360 ROM_LOAD( "ppb-n3.bin", 0xc0000, 0x40000, CRC(93dc9490) SHA1(3df4d57a7bf19443f5aa6a416bcee968f81d9059) )
4361
4362 ROM_REGION( 0x080000, "gfx2", 0 )
4363 ROM_LOAD( "ppa-g00.bin", 0x00000, 0x20000, CRC(8a88a174) SHA1(d360b9014aec31960538ee488894496248a820dc) ) // tiles
4364 ROM_LOAD( "ppa-g10.bin", 0x20000, 0x20000, CRC(e48a66ac) SHA1(49b33db6a922d6f1d1417e28714a67431b7c0217) )
4365 ROM_LOAD( "ppa-g20.bin", 0x40000, 0x20000, CRC(12b93e79) SHA1(f3d2b76a30874827c8998c1d13a55a3990b699b7) )
4366 ROM_LOAD( "ppa-g30.bin", 0x60000, 0x20000, CRC(faa39aee) SHA1(9cc1a468b304437766c04189054d3b8f7ff1f958) )
4367
4368 ROM_REGION( 0x40000, "samples", 0 ) // samples
4369 ROM_LOAD( "ppa-v0.bin", 0x00000, 0x40000, CRC(03321664) SHA1(51f2b2b712385c1cd55fd069829efac01838d603) )
4370 ROM_END
4371
4372 // in the case of the i8751 protected games the World and Japan sets should be using different MCU roms.
4373 // the MCU roms provide checksum information needed for the sets, so using the wrong ROM will result in
4374 // the program roms failing their tests. This is why we still have simulation code for many games
4375 // despite having Japanese version MCU roms for several of them. See notes next to the sets
4376
4377 /* M72 */
4378 GAME( 1987, rtype, 0, rtype, rtype, m72_state, empty_init, ROT0, "Irem", "R-Type (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4379 GAME( 1987, rtypej, rtype, rtype, rtype, m72_state, empty_init, ROT0, "Irem", "R-Type (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4380 GAME( 1987, rtypejp, rtype, rtype, rtypep, m72_state, empty_init, ROT0, "Irem", "R-Type (Japan prototype)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4381 GAME( 1987, rtypeu, rtype, rtype, rtype, m72_state, empty_init, ROT0, "Irem (Nintendo of America license)", "R-Type (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4382 GAME( 1987, rtypeb, rtype, rtype, rtype, m72_state, empty_init, ROT0, "bootleg", "R-Type (World bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4383
4384 GAME( 1987, bchopper, 0, m72, bchopper, m72_state, init_bchopper, ROT0, "Irem", "Battle Chopper (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // missing i8751 MCU code
4385 GAME( 1987, mrheli, bchopper, mrheli, bchopper, m72_state, init_m72_8751, ROT0, "Irem", "Mr. HELI no Daibouken (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4386
4387 GAME( 1988, nspirit, 0, m72, nspirit, m72_state, init_nspirit, ROT0, "Irem", "Ninja Spirit (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // missing i8751 MCU code
4388 GAME( 1988, nspiritj, nspirit, nspiritj, nspirit, m72_state, init_m72_8751, ROT0, "Irem", "Saigo no Nindou (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4389
4390 GAME( 1988, imgfight, 0, imgfight, imgfight, m72_state, init_m72_8751, ROT270, "Irem", "Image Fight (World)", MACHINE_SUPPORTS_SAVE )
4391 GAME( 1988, imgfightj, imgfight, imgfight, imgfight, m72_state, init_m72_8751, ROT270, "Irem", "Image Fight (Japan)", MACHINE_SUPPORTS_SAVE )
4392 GAME( 1988, imgfightb, imgfight, imgfightb, imgfight, m72_state, init_m72_8751, ROT270, "Irem", "Image Fight (Japan, bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // uses an 80c31 MCU, which isn't hooked up correctly yet. Gives 'RAM NG 7' error
4393
4394 GAME( 1989, loht, 0, m72_8751, loht, m72_state, init_m72_8751, ROT0, "Irem", "Legend of Hero Tonma (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4395 GAME( 1989, lohtj, loht, m72_8751, loht, m72_state, init_m72_8751, ROT0, "Irem", "Legend of Hero Tonma (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4396 GAME( 1989, lohtb2, loht, m72_8751, loht, m72_state, init_m72_8751, ROT0, "bootleg", "Legend of Hero Tonma (Japan, bootleg with i8751)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // works like above, mcu code is the same as the real code, probably just an alt revision on a bootleg board
4397 GAME( 1997, lohtb3, loht, m72_8751, loht, m72_state, init_m72_8751, ROT0, "bootleg", "Legend of Hero Tonma (World, bootleg with i8751)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4398
4399 GAME( 1989, xmultiplm72, xmultipl, m72_xmultipl, xmultipl, m72_state, init_m72_8751, ROT0, "Irem", "X Multiply (Japan, M72 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4400
4401 GAME( 1989, dbreedm72, dbreed, m72_dbreedw, dbreed, m72_state, init_dbreedm72, ROT0, "Irem", "Dragon Breed (World, M72 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // missing i8751 MCU code
4402 GAME( 1989, dbreedjm72, dbreed, m72_dbreed, dbreed, m72_state, init_m72_8751, ROT0, "Irem", "Dragon Breed (Japan, M72 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4403
4404 GAME( 1991, gallop, cosmccop, m72, gallop, m72_state, init_gallop, ROT0, "Irem", "Gallop - Armed Police Unit (Japan, M72 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // missing i8751 MCU code
4405
4406 GAME( 1990, airduelm72, airduel, m72, airduel, m72_state, init_airduelm72, ROT270, "Irem", "Air Duel (World, M72 hardware)", MACHINE_SUPPORTS_SAVE ) // missing i8751 MCU code
4407 GAME( 1990, airdueljm72, airduel, m72_airduel, airduel, m72_state, init_m72_8751, ROT270, "Irem", "Air Duel (Japan, M72 hardware)", MACHINE_SUPPORTS_SAVE )
4408
4409 GAME( 1990, dkgensanm72, hharry, m72, hharry, m72_state, init_dkgenm72, ROT0, "Irem", "Daiku no Gensan (Japan, M72 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // missing i8751 MCU code
4410
4411 /* M81 */
4412 GAME( 1989, xmultipl, 0, m81_xmultipl, m81_xmultipl, m72_state, empty_init, ROT0, "Irem", "X Multiply (World, M81 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4413 GAME( 1989, dbreed, 0, m81_dbreed, m81_dbreed, m72_state, empty_init, ROT0, "Irem", "Dragon Breed (World, M81 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4414 GAME( 1990, hharry, 0, m81_hharry, m81_hharry, m72_state, empty_init, ROT0, "Irem", "Hammerin' Harry (World, M81 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4415
4416 /* M82 */
4417 GAME( 1990, majtitle, 0, m82, rtype2, m72_state, empty_init, ROT0, "Irem", "Major Title (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // M82-A-A + M82-B-A
4418 GAME( 1990, majtitlej, majtitle, m82, rtype2, m72_state, empty_init, ROT0, "Irem", "Major Title (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // ^
4419
4420 GAME( 1990, airduel, 0, m82, airduel, m72_state, empty_init, ROT270, "Irem", "Air Duel (World, M82 hardware)", MACHINE_SUPPORTS_SAVE ) // Major Title conversion
4421 GAME( 1990, airduelu, airduel, m82, airduel, m72_state, empty_init, ROT270, "Irem America", "Air Duel (US location test, M82 hardware)", MACHINE_SUPPORTS_SAVE ) // ^
4422
4423 GAME( 1990, dkgensanm82, hharry, hharryu, hharry, m72_state, empty_init, ROT0, "Irem", "Daiku no Gensan (Japan, M82 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // ^
4424
4425 GAME( 2009, rtypem82b, rtype, m82, rtype, m72_state, empty_init, ROT0, "bootleg", "R-Type (Japan, bootleg M82 conversion)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // unofficial conversion of Major Title, extensive wiremods, made in 2009 by Paul Swan
4426 GAME( 1997, rtype2m82b, rtype2, m82, rtype2, m72_state, empty_init, ROT0, "bootleg", "R-Type II (Japan, bootleg M82 conversion)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // made in 1997 by Chris Hardy
4427
4428 /* M84 */
4429 GAME( 1990, hharryu, hharry, hharryu, hharry, m72_state, empty_init, ROT0, "Irem America", "Hammerin' Harry (US, M84 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4430 GAME( 1990, dkgensan, hharry, hharryu, hharry, m72_state, empty_init, ROT0, "Irem", "Daiku no Gensan (Japan, M84 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4431 GAME( 1990, hharryb, hharry, hharryu, hharry, m72_state, empty_init, ROT0, "bootleg", "Hammerin' Harry (World, M84 hardware bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4432
4433 GAME( 1989, rtype2, 0, rtype2, rtype2, m72_state, empty_init, ROT0, "Irem", "R-Type II (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4434 GAME( 1989, rtype2j, rtype2, rtype2, rtype2, m72_state, empty_init, ROT0, "Irem", "R-Type II (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4435 GAME( 1989, rtype2jc, rtype2, rtype2, rtype2, m72_state, empty_init, ROT0, "Irem", "R-Type II (Japan, revision C)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4436
4437 GAME( 1991, cosmccop, 0, cosmccop, gallop, m72_state, empty_init, ROT0, "Irem", "Cosmic Cop (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4438
4439 GAME( 1991, ltswords, 0, kengo, kengo, m72_state, empty_init, ROT0, "Irem", "Lightning Swords", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4440 GAME( 1991, kengo, ltswords, kengo, kengo, m72_state, empty_init, ROT0, "Irem", "Ken-Go (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4441 GAME( 1991, kengoa, ltswords, kengo, kengo, m72_state, empty_init, ROT0, "Irem", "Ken-Go (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // has 'for use in Japan' message, above set doesn't
4442
4443 /* M85 */
4444 GAME( 1990, poundfor, 0, poundfor, poundfor, m72_state, empty_init, ROT270, "Irem", "Pound for Pound (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // M85-A-B / M85-B
4445 GAME( 1990, poundforj, poundfor, poundfor, poundfor, m72_state, empty_init, ROT270, "Irem", "Pound for Pound (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // ^
4446 GAME( 1990, poundforu, poundfor, poundfor, poundfor, m72_state, empty_init, ROT270, "Irem America", "Pound for Pound (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // ^
4447
4448 /* bootlegs, unique hw */
4449 GAME( 1989, lohtb, loht, lohtb, loht, m72_state, empty_init, ROT0, "bootleg", "Legend of Hero Tonma (unprotected bootleg)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4450 GAME( 1989, loht_ms, loht, lohtb, loht, m72_state, empty_init, ROT0, "bootleg (Gaelco / Ervisa)", "Legend of Hero Tonma (Gaelco bootleg, Modular System)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
4451