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