1 // license:BSD-3-Clause
2 // copyright-holders:Bryan McPhail
3 /***************************************************************************
4
5 Data East 32 bit ARM based games:
6
7 Captain America
8 Dragon Gun
9 Fighter's History
10 Locked 'n Loaded
11 Night Slashers
12 Tattoo Assassins
13
14
15 Emulation by Bryan McPhail, mish@tendril.co.uk. Thank you to Tim,
16 Avedis and Stiletto for many things including work on Fighter's
17 History protection and tracking down Tattoo Assassins!
18
19 Captain America & Fighter's History - reset with both start buttons
20 held down for test mode. Reset with player 1 start held in Fighter's
21 History for 'Pattern Editor'.
22
23 For version information:
24 Captain America - Reset with Player 1 start held
25 Fighter's History - Reset with Player 1 button 1 & 2 held
26 Night Slashers - Reset with Player 1 & 2 start held
27 Locked 'n Loaded - Reset with Player 1 & 2 start held
28
29 Tattoo Assassins is a prototype, it is thought only 25 test units
30 were manufactured and distributed to test arcades before the game
31 was recalled. TA is the only game developed by Data East Pinball
32 in USA, rather than Data East Corporation in Japan.
33
34 Tattoo Assassins uses DE Pinball soundboard 520-5077-00 R
35
36
37 TODO:
38
39 Tattoo Assassins & Night slashers use an less emulated chip (Ace/Jack) for
40 special blending effects. It's exact effect is unclear.
41
42 Video backgrounds(intel DVI) in Dragongun?
43
44 Locked 'n Loaded (parent set) is a slightly different hardware
45 revision: board # DE-0420-1 where the US set is DE-0359-2.
46 The sound is _not_ hooked up correctly for this set.
47
48 Z80 Sound cpu version games : Music tempo is unverified (it has external timer / IRQ controller?).
49
50
51
52 Locked 'n Loaded (US)
53 Data East Corporation (c) 1994
54
55 DE-0359-2 PCB Layout - Same PCB as used for Dragon Gun, see comment below:
56
57 ------------------------------------------------------------
58 | 32.220MHz 28.000MHz 8M-7 8M-3 |
59 | MBM-05 MBM-03 |
60 | NH06-0 HuC6280A 8M-5 8M-1 |
61 | YM2151 MBM-04 MBM-02 |
62 --+ |
63 --+ MBM-07 |
64 | MAR-07 74 |
65 | M6295 M6295 MBM-06 MBM-01 NH05-0 |
66 | M6295 MBM-00 NH04-0 |
67 | 74 |
68 |J |
69 |A |
70 |M |
71 |M 2M-5 2M-4 |
72 |A 113 NH03-0 NH01-0 |
73 | 101 2M-7 2M-6 |
74 --+ NH02-0 NH00-0 |
75 --+ DSW1 146 |
76 |A 93C45 |
77 |U +-------------------------+
78 |X | DE-0406-1 |
79 --| ADC0808CCN | AUX PCB with |
80 --------------------------------| Gun Connectors |
81 --------------------------+
82
83 2M-4 through 2M-7 are empty sockets for additional program ROMs (used by dragon Gun)
84 Odd numbered 8M are empty sockets
85 AUX edge connector is a 48 pin type similar to those used on Namco System 11, 12, etc
86
87
88 DE-0360-4 ROM board Layout:
89
90 ------------------------------------------------------------
91 | CN2 TC524256BZ-10 TC524256BZ-10 MAR-17|
92 | TC524256BZ-10 TC524256BZ-10 MAR-18|
93 | HM65256BLSP-10 TC524256BZ-10 TC524256BZ-10 MAR-19|
94 | 16 of these chips TC524256BZ-10 TC524256BZ-10 MAR-20|
95 | in this area MAR-21|
96 | Intel i750 MAR-22|
97 | 187 23.000MHz MAR-23|
98 |MBM-08 MAR-24|
99 |MBM-09 20.0000MHz MAR-25|
100 |MBM-10 145 MAR-26|
101 |MBM-11 186 MAR-27|
102 |MBM-12 MAR-28|
103 |MBM-13 |
104 |MBM-14 PAL16L8BCN Intel i750 |
105 |MBM-15 PAL16L8BCN |
106 | CN1 25.000MHz PAL16L8BCN |
107 ------------------------------------------------------------
108
109 CN1 = Triple row 32 pin connector
110 CN2 = Dual row 32 pin connector
111
112 Locked 'n Loaded appears to be a conversion of Dragon Gun (c) 1993 as
113 there are 12 surface mounted GFX roms and 1 surface mounted sample rom
114 left over from the conversion. The roms labeled "MAR-xx" are those
115 from Dragon Gun.
116
117
118
119 Night Slashers
120 Data East, 1993
121
122 PCB Layout
123 ----------
124
125 DE-0397-0 DEC-22VO
126 |-----------------------------------------------------|
127 | TA8205AH Z80 |-----| HBM-07 |
128 | 6164 YM2151 | 52 | |
129 | LX02 | | HBM-09 HBM-06 |
130 | YM3012 32MHz |-----| |
131 | JP1 HBM-11 93C45 HBM-05 |
132 |CN2 HBM-10 |-----| |
133 | M6295(1) | 52 | HBM-04 |
134 | M6295(2) | | |
135 | |-----| |-----| |-----| |-----| HBM-03 |
136 |J | 104 | | 153 | | 52 | |
137 |A | | | | |-----| | | HBM-02 |
138 |M |-----| |-----| | 153 | |-----| |
139 |M | | 28.322MHz|
140 |A |-----| |
141 | |-----| PAL |
142 | | 99 | PROM |-----| 6164 HBM-01 |
143 | | | | 74 | 6164 |
144 | |-----| | | HBM-00 |
145 | |-----| |-----| |-----| |
146 | | 153 | | 200 | |-----| 6164 |
147 | | | | | | 141 | 6164 |
148 | |-----| |-----| | | PAL |
149 |TEST_SW |-----| PAL |-----| |
150 | | 156 | |
151 | LH52250 LH52250 LX-01 | | |
152 | CN3 LH52250 LH52250 LX-00 |-----| |
153 |-----------------------------------------------------|
154 Notes:
155 The CPU is chip 156. It's an encrypted ARM-based CPU. The CPU is running at 7.0805MHz [28.322/4]
156
157 Z80B - Goldstar Z8400B, running at 3.5555MHz [32/9]
158 YM2151 - Yamaha YM2151 sound chip, running at 3.5555MHz [32/9]
159 OKI M6295 - Oki M6295 PCM Sample chip, (1) running at 1.000MHz [32/32]. Sample rate = 1000000 / 132
160 (2) running at 2.000MHz [32/16]. Sample rate = 2000000 / 132
161 6164 - UM6164BK-20 8K x8 SRAM
162 LH52250 - Sharp LH52250 32K x8 SRAM
163 93C45 - 128bytes x8 Serial EEPROM
164 PALs - PAL 16L8ACN (x 2, near program ROMs, one at 3D labelled 'VM-00', one at 4D labelled 'VM-01')
165 PAL 16l8ACN (near chip 99, located at 8J, labelled 'VM-02')
166 HSync - 15.86kHz
167 VSync - 58Hz
168 Custom ICs-
169 DE # Package Type Additional #'s (for reference of scratched-off chips on other PCB's)
170 ------------------------------------------------------------------------------------------------------
171 156 (CPU) 100 Pin PQFP 932EV 301801
172 141 160 Pin PQFP 24220F008
173 74 160 Pin PQFP 24220F009
174 99 208 Pin PQFP L7A0967
175 52 (x3) 128 Pin PQFP 9322EV 298251 VC5259-0001
176 153 (x3) 144 Pin PQFP L7A0888 9328
177 104 100 Pin PQFP L7A0717 9148
178 200 100 Pin PQFP JAPAN 9320PD027 (chip is darker black)
179
180 Other - There's a small push button near the JAMMA connector to access test mode.
181 All settings are via an on-board menu.
182
183 All pinouts conform to standard JAMMA pinout. Joystick is 8-way with 3 buttons used.
184
185 JP1: 1-2 Sound Output in MONO
186 2-3 Sound Output in STEREO
187
188 CN2: 4 Pin connector (use when JP1 = 2-3)
189 Pin # Signal
190 1 L-Speaker +
191 2 L-Speaker -
192 3 R-Speaker -
193 4 R-Speaker +
194
195 CN3: 15 Pin connector (Player 3)
196 Pin # Signal
197 1 COIN SW3
198 2 3P PUSH 3
199 3 3P LEFT
200 4 3P RIGHT
201 5 3P UP
202 6 3P DOWN
203 7 3P PUSH 1
204 8 3P PUSH 2
205 9-13 NOT USED
206 14-15 GND
207
208
209 ROMs - MAINPRG1.1F HN27C4096 \
210 MAINPRG2.2F HN27C4096 / Main Program (no ROM stickers attached, DE ROM code unknown)
211
212 Japanese Version
213 LX01-.2F HN27C4096 \
214 LX00-.1F HN27C4096 / Main Program (Japan version)
215
216 MBH-00.8C 42 pin 16M MASK (read as 27C160) \
217 MBH-01.9C 42 pin 16M MASK (read as 27C160) |
218 MBH-02.14C 42 pin 16M MASK (read as 27C160) |
219 MBH-03.15C 40 pin 4M MASK (read as MX27C4100) |
220 MBH-04.16C 42 pin 16M MASK (read as 27C160) |
221 MBH-05.17C 40 pin 4M MASK (read as MX27C4100) | GFX
222 MBH-06.18C 32 pin 8M MASK (read as 27C080) |
223 MBH-07.19C 32 pin 2M MASK (read as 27C020) |
224 MBH-08.16E 40 pin 4M MASK (read as MX27C2100) |
225 MBH-09.18E 40 pin 4M MASK (read as MX27C2100) /
226
227 MBH-10.14L 32 pin 4M MASK (read as 27C040) \
228 MBH-11.16L 32 pin 4M MASK (read as 27C040) / Sound (Samples)
229
230 LX02-.17L 27C512 Sound Program
231
232 PROM.9J Fujitsu MB7124 compatible with 82S147 Labelled 'LN-00'
233
234 Night Slashers
235 Data East, 1993
236
237 DE-0395-1 DEC-22VO
238 |-----------------------------------------------------|
239 | TA8205AH 6164 |-----| 2M-16M* MBH-07|
240 | 02- HuC6280A | 52 | MBH-09 MBH-06|
241 | YM2151 | | 2M-16M* MBH-05|
242 | YM3012 32.220MHz |-----| MBH-08 MBH-04|
243 | JP1 MBH-11 93C45 |-----| MBH-03|
244 |CN2 MBH-10 | 52 | MBH-02|
245 | M6295(1) | | |
246 | M6295(2) |-----| |
247 | |-----| |-----| |
248 |J | 104 | |-----| |-----| | 52 | |
249 |A | | | 153 | | 113 | | | |
250 |M |-----| | | | | |-----| |
251 |M |-----| |-----| 28MHz |
252 |A |-----| |
253 | | 99 | VM-02 |
254 | | | LN-00 |-----| 6164 MBH-01 |
255 | |-----| | 74 | 6164 |
256 | | | MBH-00 |
257 | |-----| |-----| |-----| |
258 | | 113 | | 200 | |-----| 6164 |
259 | | | | | | 141 | 6164 |
260 | |-----| |-----| | | VE-01A |
261 |TEST_SW |-----| VE-00 |-----| |
262 | | 156 | |
263 | CN4 LH52250 LH52250 01- | | |
264 | CN3 LH52250 LH52250 00- |-----| |
265 |-----------------------------------------------------|
266
267 NOTE: Program EPROMs did NOT have regional letter codes, just 00, 01 & 02
268
269 Same PCB as shown below for Fighter's History, but populated with more
270 chips as needed. It is worth noting that Night Slashers uses the encryption
271 features of the 156 chip where as Fighter's History does not.
272
273 *****************************************************************************************************
274
275 Fighter's History
276 Data East, 1993
277
278 PCB Layout
279 ----------
280
281 DE-0395-1 DEC-22VO
282 |-----------------------------------------------------|
283 | TA8205AH 6164 MBF-05 2M-8M*|
284 | LE02 HuC6280A MBF-04 8M*|
285 | YM2151 52* MBF-03 4M-16M*|
286 | YM3012 32.220MHz MBF-02 16M*|
287 | JP1 MBF-07 93C45 4M-16M*|
288 |CN2 MBF-06 16M*|
289 | M6295(1) 52* |
290 | M6295(2) |
291 | |-----| |-----| |
292 |J | 75 | 113/153* | 52 | |
293 |A | | |-----| | | |
294 |M |-----| | 113 | |-----| |
295 |M | | 28MHz |
296 |A |-----| |
297 | PAL* |
298 | 99* KT-00 |-----| 6164 MBF-01 |
299 | | 74 | 6164 |
300 | | | MBF-00 |
301 | |-----| |-----| |-----| |
302 | | 113 | | 200 | |-----| 6164 |
303 | | | | | | 56 | 6164 |
304 | |-----| |-----| | | VE-01A |
305 |TEST_SW |-----| VE-00 |-----| |
306 | | 156 | |
307 | CN4 LH52250 LH52250 LE01 | | |
308 | CN3* LH52250 LH52250 LE00 |-----| |
309 |-----------------------------------------------------|
310
311
312 Very similar to the DE-0396-0 described below with the notable exceptions:
313 The sound area reworked to use the HuC6280A instead of a standard Z80
314 Uses the larger 113 instead of the 153 chips, however both PCBs have
315 solder pads in the same locations for either chip.
316 Uses the 56 instead of the 141
317
318
319 DE-0396-0 DEC-22VO
320 |-----------------------------------------------------|
321 | TA8205AH Z80 MBF-05 2M-8M*|
322 | 6164 YM2151 MBF-04 8M*|
323 | LJ02 52* MBF-03 4M-16M*|
324 | YM3012 32.220MHz MBF-02 16M*|
325 | JP1 MBF-07 93C45 4M-16M*|
326 |CN2 MBF-06 16M*|
327 | M6295(1) 52* |
328 | M6295(2) |
329 | |-----| |-----| |
330 |J | 75 | 113/153* | 52 | |
331 |A | | |-----| | | |
332 |M |-----| | 153 | |-----| |
333 |M | | 28MHz |
334 |A |-----| |
335 | PAL* |
336 | 99* KT-00 |-----| 6164 MBF-01 |
337 | | 74 | 6164 |
338 | | | MBF-00 |
339 | |-----| |-----| |-----| |
340 | | 153 | | 200 | |-----| 6164 |
341 | | | | | | 141 | 6164 |
342 | |-----| |-----| | | VE-01A |
343 |TEST_SW |-----| VE-00 |-----| |
344 | | 156 | |
345 | CN4 LH52250 LH52250 LJ01-3 | | |
346 | CN3* LH52250 LH52250 LJ00-3 |-----| |
347 |-----------------------------------------------------|
348
349 This PCB is very close to the DE-397-0 listed above
350
351 Custom ICs-
352 DE # Package Type Additional #'s (for reference of scratched-off chips on other PCB's)
353 ------------------------------------------------------------------------------------------------------
354 156 (CPU) 100 Pin PQFP 9321EV 301811 (Doesn't use encryption functions of the 156)
355 141 160 Pin PQFP 24220F008
356 74 160 Pin PQFP 24220F009
357 52 128 Pin PQFP 9313EV 211771 VC5259-0001
358 153 (x2) 144 Pin PQFP L7A0888 9312
359 75 100 Pin PQFP L7A0680 9143
360 200 100 Pin PQFP JAPAN 9315PP002 (chip is darker black)
361
362 NOTE: There are several unpopulated locations (denoted by *) for additional rom chips
363 or more custom ICs.
364
365 ***************************************************************************/
366
367 #include "emu.h"
368 #include "includes/deco32.h"
369
370 #include "cpu/arm/arm.h"
371 #include "cpu/m6809/m6809.h"
372 #include "cpu/z80/z80.h"
373 #include "machine/decocrpt.h"
374 #include "machine/deco156.h"
375 #include "machine/input_merger.h"
376 #include "speaker.h"
377
378 #include <algorithm>
379
380
381 //**************************************************************************
382 // ADDRESS MAPS
383 //**************************************************************************
384
captaven_map(address_map & map)385 void captaven_state::captaven_map(address_map &map)
386 {
387 map(0x000000, 0x0fffff).rom();
388 map(0x100000, 0x100007).r(FUNC(captaven_state::_71_r));
389 map(0x100000, 0x100003).w(FUNC(captaven_state::buffer_spriteram_w<0>));
390 map(0x108000, 0x108003).nopw(); /* ? */
391 map(0x110000, 0x111fff).rw(FUNC(captaven_state::spriteram_r<0>), FUNC(captaven_state::spriteram_w<0>));
392 map(0x120000, 0x127fff).ram(); /* Main RAM */
393 map(0x128000, 0x12ffff).rw(FUNC(captaven_state::ioprot_r), FUNC(captaven_state::ioprot_w)).umask32(0x0000ffff);
394 map(0x130000, 0x131fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
395 map(0x148000, 0x14800f).m(m_deco_irq, FUNC(deco_irq_device::map)).umask32(0x000000ff);
396 map(0x160000, 0x167fff).ram(); /* Extra work RAM */
397 map(0x168000, 0x168000).lr8(NAME([this] () { return m_io_dsw[0]->read(); }));
398 map(0x168001, 0x168001).lr8(NAME([this] () { return m_io_dsw[1]->read(); }));
399 map(0x168002, 0x168002).lr8(NAME([this] () { return m_io_dsw[2]->read(); }));
400 map(0x168003, 0x168003).r(FUNC(captaven_state::captaven_soundcpu_status_r));
401 map(0x178000, 0x178003).w(FUNC(captaven_state::pri_w));
402 map(0x180000, 0x18001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
403 map(0x190000, 0x191fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
404 map(0x192000, 0x193fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); /* Mirror address - bug in program code */
405 map(0x194000, 0x195fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
406 map(0x1a0000, 0x1a3fff).ram().w(FUNC(captaven_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32");
407 map(0x1a4000, 0x1a5fff).ram().w(FUNC(captaven_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32");
408 map(0x1c0000, 0x1c001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
409 map(0x1d0000, 0x1d1fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
410 map(0x1d4000, 0x1d5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); // unused
411 map(0x1e0000, 0x1e3fff).ram().w(FUNC(captaven_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32");
412 map(0x1e4000, 0x1e5fff).ram().w(FUNC(captaven_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32"); // unused
413 }
414
fghthist_map(address_map & map)415 void fghthist_state::fghthist_map(address_map &map)
416 {
417 map.unmap_value_high();
418 // map(0x000000, 0x001fff).rom().w(FUNC(fghthist_state::pf1_data_w)); // wtf??
419 map(0x000000, 0x0fffff).rom();
420 map(0x100000, 0x11ffff).ram();
421 map(0x120020, 0x120021).lr16(NAME([this] () { return m_io_in[0]->read(); }));
422 map(0x120024, 0x120025).lr16(NAME([this] () { return m_io_in[1]->read(); }));
423 map(0x120028, 0x120028).r(FUNC(fghthist_state::eeprom_r));
424 map(0x12002c, 0x12002c).w(FUNC(fghthist_state::eeprom_w));
425 map(0x12002d, 0x12002d).w(FUNC(fghthist_state::volume_w));
426 map(0x1201fc, 0x1201fc).w(m_soundlatch, FUNC(generic_latch_8_device::write));
427 map(0x140000, 0x140003).w(FUNC(fghthist_state::vblank_ack_w));
428 map(0x168000, 0x169fff).ram().w(FUNC(fghthist_state::buffered_palette_w)).share("paletteram");
429 map(0x16c008, 0x16c00b).w(FUNC(fghthist_state::palette_dma_w));
430 map(0x16c010, 0x16c013).r(FUNC(fghthist_state::unk_status_r));
431 map(0x178000, 0x179fff).rw(FUNC(fghthist_state::spriteram_r<0>), FUNC(fghthist_state::spriteram_w<0>));
432 map(0x17c010, 0x17c013).w(FUNC(fghthist_state::buffer_spriteram_w<0>));
433 map(0x17c020, 0x17c023).r(FUNC(fghthist_state::unk_status_r));
434 map(0x182000, 0x183fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
435 map(0x184000, 0x185fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
436 map(0x192000, 0x193fff).ram().w(FUNC(fghthist_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32");
437 map(0x194000, 0x195fff).ram().w(FUNC(fghthist_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32");
438 map(0x1a0000, 0x1a001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
439 map(0x1c2000, 0x1c3fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
440 map(0x1c4000, 0x1c5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
441 map(0x1d2000, 0x1d3fff).ram().w(FUNC(fghthist_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32");
442 map(0x1d4000, 0x1d5fff).ram().w(FUNC(fghthist_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32");
443 map(0x1e0000, 0x1e001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
444 map(0x200000, 0x207fff).rw(FUNC(fghthist_state::ioprot_r), FUNC(fghthist_state::ioprot_w)).umask32(0xffff0000).share("prot32ram"); // only maps on 16-bits
445 map(0x208800, 0x208803).nopw(); /* ? */
446 }
447
fghthsta_memmap(address_map & map)448 void fghthist_state::fghthsta_memmap(address_map &map)
449 {
450 map(0x000000, 0x0fffff).rom();
451 map(0x100000, 0x11ffff).ram();
452 map(0x140000, 0x140003).w(FUNC(fghthist_state::vblank_ack_w));
453 map(0x150000, 0x150000).w(FUNC(fghthist_state::eeprom_w));
454 map(0x150001, 0x150001).w(FUNC(fghthist_state::volume_w));
455 map(0x168000, 0x169fff).ram().w(FUNC(fghthist_state::buffered_palette_w)).share("paletteram");
456 map(0x16c008, 0x16c00b).w(FUNC(fghthist_state::palette_dma_w));
457 map(0x16c010, 0x16c013).r(FUNC(fghthist_state::unk_status_r));
458 map(0x178000, 0x179fff).rw(FUNC(fghthist_state::spriteram_r<0>), FUNC(fghthist_state::spriteram_w<0>));
459 map(0x17c010, 0x17c013).w(FUNC(fghthist_state::buffer_spriteram_w<0>));
460 map(0x17c020, 0x17c023).r(FUNC(fghthist_state::unk_status_r));
461 map(0x182000, 0x183fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
462 map(0x184000, 0x185fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
463 map(0x192000, 0x193fff).ram().w(FUNC(fghthist_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32");
464 map(0x194000, 0x195fff).ram().w(FUNC(fghthist_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32");
465 map(0x1a0000, 0x1a001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
466 map(0x1c2000, 0x1c3fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
467 map(0x1c4000, 0x1c5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
468 map(0x1d2000, 0x1d3fff).ram().w(FUNC(fghthist_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32");
469 map(0x1d4000, 0x1d5fff).ram().w(FUNC(fghthist_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32");
470 map(0x1e0000, 0x1e001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
471 map(0x200000, 0x207fff).rw(FUNC(fghthist_state::ioprot_r), FUNC(fghthist_state::ioprot_w)).umask32(0xffff0000).share("prot32ram"); // only maps on 16-bits
472 }
473
474 // the video drawing (especially sprite) code on this is too slow to cope with proper partial updates
475 // raster effects appear to need some work on it anyway?
dragngun_map(address_map & map)476 void dragngun_state::dragngun_map(address_map &map)
477 {
478 map(0x0000000, 0x00fffff).rom().region("maincpu", 0x000000);
479 map(0x0100000, 0x011ffff).ram();
480 map(0x0120000, 0x0127fff).rw(FUNC(dragngun_state::ioprot_r), FUNC(dragngun_state::ioprot_w)).umask32(0x0000ffff);
481 // map(0x01204c0, 0x01204c3).w(FUNC(dragngun_state::sound_w));
482 map(0x0128000, 0x012800f).m(m_deco_irq, FUNC(deco_irq_device::map)).umask32(0x000000ff);
483 map(0x0130000, 0x0131fff).ram().w(FUNC(dragngun_state::buffered_palette_w)).share("paletteram");
484 map(0x0138000, 0x0138003).noprw(); /* Palette dma complete in bit 0x8? ack? return 0 else tight loop */
485 map(0x0138008, 0x013800b).w(FUNC(dragngun_state::palette_dma_w));
486 // map(0x0150000, 0x0150003).nopw(); // Unknown; Masking related?
487 // map(0x0160000, 0x0160003).w(FUNC(dragngun_state::pri_w)); // priority
488 map(0x0170100, 0x0170103).nopw();
489 map(0x0170038, 0x017003b).nopw();
490 map(0x017002C, 0x017002f).nopw();
491 map(0x0170224, 0x0170227).nopw();
492 map(0x0180000, 0x018001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
493 map(0x0190000, 0x0191fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
494 map(0x0194000, 0x0195fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
495 map(0x01a0000, 0x01a3fff).ram().w(FUNC(dragngun_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32");
496 map(0x01a4000, 0x01a5fff).ram().w(FUNC(dragngun_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32");
497 map(0x01c0000, 0x01c001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
498 map(0x01d0000, 0x01d1fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
499 map(0x01d4000, 0x01d5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); // unused
500 map(0x01e0000, 0x01e3fff).ram().w(FUNC(dragngun_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32");
501 map(0x01e4000, 0x01e5fff).ram().w(FUNC(dragngun_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32"); // unused
502 map(0x0204800, 0x0204fff).ram(); // ace? 0x10 byte increments only // 13f ff stuff
503 map(0x0208000, 0x0208fff).ram().share("lay0");
504 map(0x020c000, 0x020cfff).ram().share("lay1");
505 map(0x0210000, 0x0217fff).ram().share("look0");
506 map(0x0218000, 0x021ffff).ram().share("look1");
507 map(0x0220000, 0x0221fff).ram().share("spriteram"); /* Main spriteram */
508 map(0x0228000, 0x02283ff).ram(); //0x10 byte increments only
509 map(0x0230000, 0x0230003).w(FUNC(dragngun_state::spriteram_dma_w));
510 map(0x0300000, 0x03fffff).rom().region("maincpu", 0x100000);
511 map(0x0400000, 0x0400000).rw("oki3", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
512 map(0x0410000, 0x0410003).w(FUNC(dragngun_state::volume_w));
513 map(0x0418000, 0x0418003).w(FUNC(dragngun_state::speaker_switch_w));
514 map(0x0420000, 0x0420000).rw(FUNC(dragngun_state::eeprom_r), FUNC(dragngun_state::eeprom_w));
515 map(0x0430000, 0x043001f).w(FUNC(dragngun_state::lightgun_w));
516 map(0x0438000, 0x0438003).r(FUNC(dragngun_state::lightgun_r));
517 map(0x0440000, 0x0440003).portr("IN2");
518 map(0x0500000, 0x0500003).w(FUNC(dragngun_state::sprite_control_w));
519 // this is clearly the dvi video related area
520 map(0x1000000, 0x1000007).r(FUNC(dragngun_state::unk_video_r));
521 map(0x1000100, 0x1007fff).ram();
522 map(0x10b0000, 0x10b01ff).ram();
523 map(0x1400000, 0x1ffffff).rom().region("dvi", 0x00000); // reads from here during boss battles when the videos should be displayed at the offsets where the DVI headers are // as a result it ends up writing what looks like pointers to the frame data in the ram area above
524 }
525
lockloadu_map(address_map & map)526 void dragngun_state::lockloadu_map(address_map &map)
527 {
528 dragngun_map(map);
529 map(0x0170000, 0x0170007).r(FUNC(dragngun_state::lockload_gun_mirror_r)); /* Not on Dragongun */
530 }
531
lockload_map(address_map & map)532 void dragngun_state::lockload_map(address_map &map)
533 {
534 map(0x000000, 0x0fffff).rom().region("maincpu", 0x000000);
535 map(0x100000, 0x11ffff).ram();
536 map(0x120000, 0x127fff).rw(FUNC(dragngun_state::ioprot_r), FUNC(dragngun_state::ioprot_w)).umask32(0x0000ffff);
537 map(0x128000, 0x12800f).m(m_deco_irq, FUNC(deco_irq_device::map)).umask32(0x000000ff);
538 map(0x130000, 0x131fff).ram().w(FUNC(dragngun_state::buffered_palette_w)).share("paletteram");
539 map(0x138000, 0x138003).readonly().nopw(); //palette dma complete in bit 0x8? ack? return 0 else tight loop
540 map(0x138008, 0x13800b).w(FUNC(dragngun_state::palette_dma_w));
541 map(0x170000, 0x170007).r(FUNC(dragngun_state::lockload_gun_mirror_r)); /* Not on Dragongun */
542 map(0x178008, 0x17800f).w(FUNC(dragngun_state::gun_irq_ack_w)); /* Gun read ACK's */
543 map(0x180000, 0x18001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
544 map(0x190000, 0x191fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
545 map(0x194000, 0x195fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
546 map(0x1a0000, 0x1a3fff).ram().w(FUNC(dragngun_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32");
547 map(0x1a4000, 0x1a5fff).ram().w(FUNC(dragngun_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32");
548 map(0x1c0000, 0x1c001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
549 map(0x1d0000, 0x1d1fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
550 map(0x1d4000, 0x1d5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); // unused
551 map(0x1e0000, 0x1e3fff).ram().w(FUNC(dragngun_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32");
552 map(0x1e4000, 0x1e5fff).ram().w(FUNC(dragngun_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32"); // unused
553 map(0x204800, 0x204fff).ram(); //0x10 byte increments only
554 map(0x208000, 0x208fff).ram().share("lay0");
555 map(0x20c000, 0x20cfff).ram().share("lay1");
556 map(0x210000, 0x217fff).ram().share("look0");
557 map(0x218000, 0x21ffff).ram().share("look1");
558 map(0x220000, 0x221fff).ram().share("spriteram"); /* Main spriteram */
559 map(0x228000, 0x2283ff).ram(); //0x10 byte increments only
560 map(0x230000, 0x230003).w(FUNC(dragngun_state::spriteram_dma_w));
561 map(0x300000, 0x3fffff).rom().region("maincpu", 0x100000);
562 map(0x410000, 0x410003).w(FUNC(dragngun_state::volume_w));
563 map(0x420000, 0x420000).rw(FUNC(dragngun_state::eeprom_r), FUNC(dragngun_state::eeprom_w));
564 map(0x440000, 0x440003).portr("IN2");
565 map(0x500000, 0x500003).w(FUNC(dragngun_state::sprite_control_w));
566 }
567
tattass_map(address_map & map)568 void nslasher_state::tattass_map(address_map &map)
569 {
570 map(0x000000, 0x0f7fff).rom();
571 map(0x0f8000, 0x0fffff).rom().nopw();
572 map(0x100000, 0x11ffff).ram();
573 map(0x120000, 0x120003).noprw(); /* ACIA (unused) */
574 map(0x130000, 0x130003).nopw(); /* Coin port (unused?) */
575 map(0x140000, 0x140003).w(FUNC(nslasher_state::vblank_ack_w));
576 map(0x150000, 0x150003).w(FUNC(nslasher_state::tattass_control_w)); /* Volume port/Eprom/Priority */
577 map(0x162000, 0x162fff).ram(); /* 'Jack' RAM!? */
578 map(0x163000, 0x16309f).rw(m_deco_ace, FUNC(deco_ace_device::ace_r), FUNC(deco_ace_device::ace_w)).umask32(0x0000ffff); /* 'Ace' RAM */
579 map(0x164000, 0x164000).w(FUNC(nslasher_state::tilemap_color_bank_w));
580 map(0x164004, 0x164004).w(FUNC(nslasher_state::sprite1_color_bank_w));
581 map(0x164008, 0x164008).w(FUNC(nslasher_state::sprite2_color_bank_w));
582 map(0x16400c, 0x16400f).nopw();
583 map(0x168000, 0x169fff).rw(m_deco_ace, FUNC(deco_ace_device::buffered_palette_r), FUNC(deco_ace_device::buffered_palette_w));
584 map(0x16c000, 0x16c003).nopw();
585 map(0x16c008, 0x16c00b).w(m_deco_ace, FUNC(deco_ace_device::palette_dma_w));
586 map(0x170000, 0x171fff).rw(FUNC(nslasher_state::spriteram_r<0>), FUNC(nslasher_state::spriteram_w<0>));
587 map(0x174000, 0x174003).nopw(); /* Sprite DMA mode (2) */
588 map(0x174010, 0x174013).w(FUNC(nslasher_state::buffer_spriteram_w<0>));
589 map(0x174018, 0x17401b).nopw(); /* Sprite 'CPU' (unused) */
590 map(0x178000, 0x179fff).rw(FUNC(nslasher_state::spriteram_r<1>), FUNC(nslasher_state::spriteram_w<1>));
591 map(0x17c000, 0x17c003).nopw(); /* Sprite DMA mode (2) */
592 map(0x17c010, 0x17c013).w(FUNC(nslasher_state::buffer_spriteram_w<1>));
593 map(0x17c018, 0x17c01b).nopw(); /* Sprite 'CPU' (unused) */
594 map(0x182000, 0x183fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
595 map(0x184000, 0x185fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
596 map(0x192000, 0x193fff).ram().w(FUNC(nslasher_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32");
597 map(0x194000, 0x195fff).ram().w(FUNC(nslasher_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32");
598 map(0x1a0000, 0x1a001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
599 map(0x1c2000, 0x1c3fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
600 map(0x1c4000, 0x1c5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
601 map(0x1d2000, 0x1d3fff).ram().w(FUNC(nslasher_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32");
602 map(0x1d4000, 0x1d5fff).ram().w(FUNC(nslasher_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32");
603 map(0x1e0000, 0x1e001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
604 map(0x200000, 0x207fff).rw(FUNC(nslasher_state::ioprot_r), FUNC(nslasher_state::ioprot_w)).umask32(0xffff0000);
605 map(0x200000, 0x207fff).r(FUNC(nslasher_state::nslasher_debug_r)).umask32(0x0000ffff);
606 }
607
nslasher_map(address_map & map)608 void nslasher_state::nslasher_map(address_map &map)
609 {
610 map(0x000000, 0x0fffff).rom();
611 map(0x100000, 0x11ffff).ram();
612 map(0x120000, 0x1200ff).noprw(); /* ACIA (unused) */
613 map(0x140000, 0x140003).w(FUNC(nslasher_state::vblank_ack_w));
614 map(0x150000, 0x150000).w(FUNC(nslasher_state::eeprom_w));
615 map(0x150001, 0x150001).w(FUNC(nslasher_state::volume_w));
616 map(0x163000, 0x16309f).rw(m_deco_ace, FUNC(deco_ace_device::ace_r), FUNC(deco_ace_device::ace_w)).umask32(0x0000ffff); /* 'Ace' RAM */
617 map(0x164000, 0x164000).w(FUNC(nslasher_state::tilemap_color_bank_w));
618 map(0x164004, 0x164004).w(FUNC(nslasher_state::sprite1_color_bank_w));
619 map(0x164008, 0x164008).w(FUNC(nslasher_state::sprite2_color_bank_w));
620 map(0x16400c, 0x16400f).nopw();
621 map(0x168000, 0x169fff).rw(m_deco_ace, FUNC(deco_ace_device::buffered_palette_r), FUNC(deco_ace_device::buffered_palette_w));
622 map(0x16c000, 0x16c003).nopw();
623 map(0x16c008, 0x16c00b).w(m_deco_ace, FUNC(deco_ace_device::palette_dma_w));
624 map(0x170000, 0x171fff).rw(FUNC(nslasher_state::spriteram_r<0>), FUNC(nslasher_state::spriteram_w<0>));
625 map(0x174000, 0x174003).nopw(); /* Sprite DMA mode (2) */
626 map(0x174010, 0x174013).w(FUNC(nslasher_state::buffer_spriteram_w<0>));
627 map(0x174018, 0x17401b).nopw(); /* Sprite 'CPU' (unused) */
628 map(0x178000, 0x179fff).rw(FUNC(nslasher_state::spriteram_r<1>), FUNC(nslasher_state::spriteram_w<1>));
629 map(0x17c000, 0x17c003).nopw(); /* Sprite DMA mode (2) */
630 map(0x17c010, 0x17c013).w(FUNC(nslasher_state::buffer_spriteram_w<1>));
631 map(0x17c018, 0x17c01b).nopw(); /* Sprite 'CPU' (unused) */
632 map(0x182000, 0x183fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
633 map(0x184000, 0x185fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
634 map(0x192000, 0x193fff).ram().w(FUNC(nslasher_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32");
635 map(0x194000, 0x195fff).ram().w(FUNC(nslasher_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32");
636 map(0x1a0000, 0x1a001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
637 map(0x1c2000, 0x1c3fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
638 map(0x1c4000, 0x1c5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
639 map(0x1d2000, 0x1d3fff).ram().w(FUNC(nslasher_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32");
640 map(0x1d4000, 0x1d5fff).ram().w(FUNC(nslasher_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32");
641 map(0x1e0000, 0x1e001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
642 map(0x200000, 0x207fff).rw(FUNC(nslasher_state::ioprot_r), FUNC(nslasher_state::ioprot_w)).umask32(0xffff0000);
643 map(0x200000, 0x207fff).r(FUNC(nslasher_state::nslasher_debug_r)).umask32(0x0000ffff); // seems to be debug switches / code activated by this?
644 }
645
646 // H6280 based sound
h6280_sound_map(address_map & map)647 void deco32_state::h6280_sound_map(address_map &map)
648 {
649 map(0x000000, 0x00ffff).rom();
650 map(0x110000, 0x110001).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
651 map(0x120000, 0x120001).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
652 map(0x130000, 0x130001).rw(m_oki[1], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
653 map(0x140000, 0x140000).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r));
654 map(0x1f0000, 0x1f1fff).ram();
655 }
656
h6280_sound_custom_latch_map(address_map & map)657 void deco32_state::h6280_sound_custom_latch_map(address_map &map)
658 {
659 h6280_sound_map(map);
660 map(0x140000, 0x140000).r("soundlatch", FUNC(generic_latch_8_device::read));
661 }
662
663 // Z80 based sound
z80_sound_map(address_map & map)664 void deco32_state::z80_sound_map(address_map &map)
665 {
666 map(0x0000, 0x7fff).rom();
667 map(0x8000, 0x87ff).ram();
668 map(0xa000, 0xa001).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
669 map(0xb000, 0xb000).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
670 map(0xc000, 0xc000).rw(m_oki[1], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
671 map(0xd000, 0xd000).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r));
672 }
673
z80_sound_io(address_map & map)674 void deco32_state::z80_sound_io(address_map &map)
675 {
676 map(0x0000, 0xffff).rom().region("audiocpu", 0);
677 }
678
679 // lockload needs hi bits of OKI2 bankswitching
lockload_sound_map(address_map & map)680 void dragngun_state::lockload_sound_map(address_map &map)
681 {
682 z80_sound_map(map);
683 map(0xe000, 0xe000).w(FUNC(dragngun_state::lockload_okibank_hi_w));
684 }
685
lockloadu_sound_map(address_map & map)686 void dragngun_state::lockloadu_sound_map(address_map &map)
687 {
688 h6280_sound_map(map);
689 map(0x150000, 0x150000).w(FUNC(dragngun_state::lockload_okibank_hi_w));
690 }
691
692
693 //**************************************************************************
694 // PROTECTION
695 //**************************************************************************
696
ioprot_r(offs_t offset)697 u16 deco32_state::ioprot_r(offs_t offset)
698 {
699 offs_t real_address = 0 + (offset * 2);
700 offs_t deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
701 u8 cs = 0;
702
703 return m_ioprot->read_data(deco146_addr, cs);
704 }
705
ioprot_w(offs_t offset,u16 data,u16 mem_mask)706 void deco32_state::ioprot_w(offs_t offset, u16 data, u16 mem_mask)
707 {
708 offs_t real_address = 0 + (offset * 2);
709 offs_t deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
710 u8 cs = 0;
711
712 m_ioprot->write_data( deco146_addr, data, mem_mask, cs );
713 }
714
715
716 //**************************************************************************
717 // SOUND
718 //**************************************************************************
719
volume_w(u8 data)720 void deco32_state::volume_w(u8 data)
721 {
722 // TODO: assume linear with a 0.0-1.0 dB scale for now
723 const u8 raw_vol = 0xff - data;
724 float vol_output = ((float)raw_vol) / 255.0f;
725
726 m_ym2151->set_output_gain(ALL_OUTPUTS, vol_output);
727 m_oki[0]->set_output_gain(ALL_OUTPUTS, vol_output);
728 m_oki[1]->set_output_gain(ALL_OUTPUTS, vol_output);
729 }
730
captaven_soundcpu_status_r()731 u8 captaven_state::captaven_soundcpu_status_r()
732 {
733 // 7------- sound cpu status (0 = busy)
734 // -6543210 unknown
735
736 return 0xff;
737 }
738
volume_w(u32 data)739 void dragngun_state::volume_w(u32 data)
740 {
741 m_vol_main->ce_w(BIT(data, 2));
742 m_vol_main->clk_w(BIT(data, 1));
743 m_vol_main->di_w(BIT(data, 0));
744
745 if (m_vol_gun.found())
746 {
747 m_vol_gun->ce_w(BIT(data, 2));
748 m_vol_gun->clk_w(BIT(data, 1));
749 m_vol_gun->di_w(BIT(data, 0));
750 }
751 }
752
speaker_switch_w(u32 data)753 void dragngun_state::speaker_switch_w(u32 data)
754 {
755 // TODO: This should switch the oki3 output between the gun speaker and the standard speakers
756 m_gun_speaker_disabled = bool(BIT(data, 0));
757
758 logerror("Gun speaker: %s\n", m_gun_speaker_disabled ? "Disabled" : "Enabled");
759 }
760
LC7535_VOLUME_CHANGED(dragngun_state::volume_main_changed)761 LC7535_VOLUME_CHANGED( dragngun_state::volume_main_changed )
762 {
763 // TODO: Support loudness
764 logerror("Main speaker volume: left = %d dB, right %d dB, loudness = %s\n", attenuation_left, attenuation_right, loudness ? "on" :"off");
765
766 // convert to 0.0 - 1.0
767 float gain_l = m_vol_main->normalize(attenuation_left);
768 float gain_r = m_vol_main->normalize(attenuation_right);
769
770 m_ym2151->set_output_gain(0, gain_l);
771 m_ym2151->set_output_gain(1, gain_r); // left and right are always set to the same value
772 m_oki[0]->set_output_gain(ALL_OUTPUTS, gain_l);
773 m_oki[1]->set_output_gain(ALL_OUTPUTS, gain_l);
774
775 if (m_oki[2].found() && m_gun_speaker_disabled)
776 m_oki[2]->set_output_gain(ALL_OUTPUTS, gain_l);
777 }
778
LC7535_VOLUME_CHANGED(dragngun_state::volume_gun_changed)779 LC7535_VOLUME_CHANGED( dragngun_state::volume_gun_changed )
780 {
781 logerror("Gun speaker volume: left = %d dB, right %d dB, loudness = %s\n", attenuation_left, attenuation_right, loudness ? "on" :"off");
782
783 if (m_oki[2].found() && !m_gun_speaker_disabled)
784 m_oki[2]->set_output_gain(ALL_OUTPUTS, m_vol_gun->normalize(attenuation_left));
785 }
786
WRITE_LINE_MEMBER(nslasher_state::tattass_sound_irq_w)787 WRITE_LINE_MEMBER( nslasher_state::tattass_sound_irq_w )
788 {
789 if (state)
790 {
791 u8 data = m_ioprot->soundlatch_r();
792 // Swap bits 0 and 3 to correct for design error from BSMT schematic
793 data = bitswap<8>(data, 7, 6, 5, 4, 0, 2, 1, 3);
794 m_decobsmt->bsmt_comms_w(data);
795 }
796 }
797
sound_bankswitch_w(u8 data)798 void deco32_state::sound_bankswitch_w(u8 data)
799 {
800 m_oki[0]->set_rom_bank((data >> 0) & 1);
801 m_oki[1]->set_rom_bank((data >> 1) & 1);
802 }
803
lockload_okibank_lo_w(u8 data)804 void dragngun_state::lockload_okibank_lo_w(u8 data)
805 {
806 m_oki2_bank = (m_oki2_bank & 2) | ((data >> 1) & 1);
807 logerror("Load OKI2 Bank Low bits: %02x, Current : %02x\n",(data >> 1) & 1, m_oki2_bank);
808 m_oki[0]->set_rom_bank((data >> 0) & 1);
809 m_oki[1]->set_rom_bank(m_oki2_bank);
810 }
811
lockload_okibank_hi_w(u8 data)812 void dragngun_state::lockload_okibank_hi_w(u8 data)
813 {
814 m_oki2_bank = (m_oki2_bank & 1) | ((data & 1) << 1); // TODO : Actually value unverified
815 logerror("Load OKI2 Bank Hi bits: %02x, Current : %02x\n",((data & 1) << 1), m_oki2_bank);
816 m_oki[1]->set_rom_bank(m_oki2_bank);
817 }
818
819
820 //**************************************************************************
821 // VIDEO
822 //**************************************************************************
823
vblank_ack_w(u32 data)824 void deco32_state::vblank_ack_w(u32 data)
825 {
826 m_maincpu->set_input_line(ARM_IRQ_LINE, CLEAR_LINE);
827 }
828
829 template<int Chip>
spriteram_r(offs_t offset)830 u32 deco32_state::spriteram_r(offs_t offset)
831 {
832 return m_spriteram16[Chip][offset] ^ 0xffff0000;
833 }
834
835 template<int Chip>
spriteram_w(offs_t offset,u32 data,u32 mem_mask)836 void deco32_state::spriteram_w(offs_t offset, u32 data, u32 mem_mask)
837 {
838 data &= 0x0000ffff;
839 mem_mask &= 0x0000ffff;
840 COMBINE_DATA(&m_spriteram16[Chip][offset]);
841 }
842
843 template<int Chip>
buffer_spriteram_w(u32 data)844 void deco32_state::buffer_spriteram_w(u32 data)
845 {
846 std::copy(&m_spriteram16[Chip][0], &m_spriteram16[Chip][0x2000/4], &m_spriteram16_buffered[Chip][0]);
847 }
848
849 // tattass tests these as 32-bit ram, even if only 16-bits are hooked up to the tilemap chip - does it mirror parts of the dword?
pf_rowscroll_w(offs_t offset,u32 data,u32 mem_mask)850 template <int TileMap> void deco32_state::pf_rowscroll_w(offs_t offset, u32 data, u32 mem_mask) { COMBINE_DATA(&m_pf_rowscroll32[TileMap][offset]); data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&m_pf_rowscroll[TileMap][offset]); }
851
unk_video_r()852 u32 dragngun_state::unk_video_r()
853 {
854 return machine().rand();
855 }
856
DECOSPR_PRIORITY_CB_MEMBER(captaven_state::captaven_pri_callback)857 DECOSPR_PRIORITY_CB_MEMBER( captaven_state::captaven_pri_callback )
858 {
859 if ((pri & 0x60) == 0x00)
860 {
861 return 0; // above everything
862 }
863 else if ((pri & 0x60) == 0x20)
864 {
865 return 0xfff0; // above the 2nd playfield
866 }
867 else if ((pri & 0x60) == 0x40)
868 {
869 return 0xfffc; // above the 1st playfield
870 }
871 else
872 {
873 return 0xfffe; // under everything
874 }
875 }
876
DECOSPR_PRIORITY_CB_MEMBER(fghthist_state::fghthist_pri_callback)877 DECOSPR_PRIORITY_CB_MEMBER( fghthist_state::fghthist_pri_callback )
878 {
879 u32 mask = GFX_PMASK_8; // under the text layer
880 if (extpri)
881 mask |= GFX_PMASK_4; // under the uppermost playfield
882
883 return mask;
884 }
885
tile_callback(u32 & tile,u32 & colour,int layer,bool is_8x8)886 void captaven_state::tile_callback(u32 &tile, u32 &colour, int layer, bool is_8x8)
887 {
888 // Captain America operates this chip in 8bpp mode.
889 // In 8bpp mode you appear to only get 1 layer, not 2, but you also
890 // have an extra 2 tile bits, and 2 less colour bits.
891 if (layer == 0)
892 {
893 tile |= ((colour & 0x3) << 12);
894 colour >>= 2;
895 }
896 }
897
DECO16IC_BANK_CB_MEMBER(captaven_state::bank_callback)898 DECO16IC_BANK_CB_MEMBER( captaven_state::bank_callback )
899 {
900 return (bank & 0x20) << 9;
901 }
902
DECO16IC_BANK_CB_MEMBER(fghthist_state::bank_callback)903 DECO16IC_BANK_CB_MEMBER( fghthist_state::bank_callback )
904 {
905 bank = (bank & 0x10) | ((bank & 0x40) >> 1) | ((bank & 0x20) << 1);
906
907 return bank << 8;
908 }
909
DECO16IC_BANK_CB_MEMBER(dragngun_state::bank_1_callback)910 DECO16IC_BANK_CB_MEMBER( dragngun_state::bank_1_callback )
911 {
912 return (bank & ~0xf) << 8;
913 }
914
DECO16IC_BANK_CB_MEMBER(dragngun_state::bank_2_callback)915 DECO16IC_BANK_CB_MEMBER( dragngun_state::bank_2_callback )
916 {
917 return (bank & ~0x1f) << 7;
918 }
919
DECO16IC_BANK_CB_MEMBER(nslasher_state::bank_callback)920 DECO16IC_BANK_CB_MEMBER( nslasher_state::bank_callback )
921 {
922 return (bank & ~0xf) << 8;
923 }
924
mix_callback(u16 p,u16 p2)925 u16 nslasher_state::mix_callback(u16 p, u16 p2)
926 {
927 return ((p & 0x70f) + (((p & 0x30) | (p2 & 0x0f)) << 4)) & 0x7ff;
928 }
929
930
931 //**************************************************************************
932 // INPUTS
933 //**************************************************************************
934
935 // TODO: probably clears both player 1 and player 2
gun_irq_ack_w(u32 data)936 void dragngun_state::gun_irq_ack_w(u32 data)
937 {
938 m_deco_irq->lightgun_irq_ack_w(data);
939 }
940
941 // TODO: improve this, Y axis not understood at all
lockload_gun_mirror_r(offs_t offset)942 u32 dragngun_state::lockload_gun_mirror_r(offs_t offset)
943 {
944 //logerror("%08x:Read gun %d\n",m_maincpu->pc(),offset);
945
946 switch (offset)
947 {
948 case 0:
949 return ((m_io_inputs->read() & 0x30) << 5) | (m_io_light_x[0]->read()) | 0xffff800;
950
951 case 1:
952 return ((m_io_inputs->read() & 0x3000) >> 3) | (m_io_light_x[1]->read()) | 0xffff800;
953 }
954
955 return ~0;
956 }
957
lightgun_r()958 u32 dragngun_state::lightgun_r()
959 {
960 /* Ports 0-3 are read, but seem unused */
961 switch (m_lightgun_port)
962 {
963 case 4: return m_io_light_x[0]->read();
964 case 5: return m_io_light_x[1]->read();
965 case 6: return m_io_light_y[0]->read();
966 case 7: return m_io_light_y[1]->read();
967 }
968
969 // logerror("Illegal lightgun port %d read \n",m_lightgun_port);
970 return 0;
971 }
972
lightgun_w(offs_t offset,u32 data)973 void dragngun_state::lightgun_w(offs_t offset, u32 data)
974 {
975 // logerror("Lightgun port %d\n",m_lightgun_port);
976 m_lightgun_port = offset;
977 }
978
INPUT_CHANGED_MEMBER(dragngun_state::lockload_gun_trigger)979 INPUT_CHANGED_MEMBER( dragngun_state::lockload_gun_trigger )
980 {
981 switch (param)
982 {
983 case 0: m_deco_irq->lightgun1_trigger_w(!newval); break;
984 case 1: m_deco_irq->lightgun2_trigger_w(!newval); break;
985 }
986 }
987
988
989 //**************************************************************************
990 // EEPROM
991 //**************************************************************************
992
eeprom_r()993 u8 deco32_state::eeprom_r()
994 {
995 return 0xfe | m_eeprom->do_read();
996 }
997
eeprom_w(u8 data)998 void deco32_state::eeprom_w(u8 data)
999 {
1000 // 7------- unknown
1001 // -6------ eeprom cs
1002 // --5----- eeprom clk
1003 // ---4---- eeprom di
1004 // ----3--- unknown
1005 // -----2-- color fading effect mode (0 = without obj1, 1 = with obj1)
1006 // ------1- bg2/3 joint mode (8bpp) (not used by fghthist?)
1007 // -------0 layer priority
1008
1009 m_eeprom->clk_write(BIT(data, 5) ? ASSERT_LINE : CLEAR_LINE);
1010 m_eeprom->di_write(BIT(data, 4));
1011 m_eeprom->cs_write(BIT(data, 6) ? ASSERT_LINE : CLEAR_LINE);
1012
1013 pri_w(data & 0x07);
1014 }
1015
eeprom_w(u8 data)1016 void dragngun_state::eeprom_w(u8 data)
1017 {
1018 // 76543--- unknown
1019 // -----2-- eeprom cs
1020 // ------1- eeprom clk
1021 // -------0 eeprom di
1022
1023 m_eeprom->clk_write(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE);
1024 m_eeprom->di_write(BIT(data, 0));
1025 m_eeprom->cs_write(BIT(data, 2) ? ASSERT_LINE : CLEAR_LINE);
1026 }
1027
tattass_control_w(offs_t offset,u32 data,u32 mem_mask)1028 void nslasher_state::tattass_control_w(offs_t offset, u32 data, u32 mem_mask)
1029 {
1030 /* Eprom in low byte */
1031 if (ACCESSING_BITS_0_7)
1032 { /* Byte write to low byte only (different from word writing including low byte) */
1033 /*
1034 The Tattoo Assassins eprom seems strange... It's 1024 bytes in size, and 8 bit
1035 in width, but offers a 'multiple read' mode where a bit stream can be read
1036 starting at any byte boundary.
1037
1038 Multiple read mode:
1039 Write 110aa000 [Read command, top two bits of address, 4 zeroes]
1040 Write 00000000 [8 zeroes]
1041 Write aaaaaaaa [Bottom 8 bits of address]
1042
1043 Then bits are read back per clock, for as many bits as needed (NOT limited to byte
1044 boundaries).
1045
1046 Write mode:
1047 Write 000aa000 [Write command, top two bits of address, 4 zeroes]
1048 Write 00000000 [8 zeroes]
1049 Write aaaaaaaa [Bottom 8 bits of address]
1050 Write dddddddd [8 data bits]
1051
1052 */
1053 if ((BIT(data, 6)) == 0)
1054 {
1055 if (m_buf_ptr)
1056 {
1057 logerror("Eprom reset (bit count %d): ", m_read_bit_count);
1058 for (int i = 0; i < m_buf_ptr; i++)
1059 logerror("%s", BIT(m_buffer, m_buf_ptr - 1 - i) ? "1" : "0");
1060 logerror("\n");
1061
1062 }
1063 m_buf_ptr = 0;
1064 m_pending_command = 0;
1065 m_read_bit_count = 0;
1066 }
1067
1068 /* Eprom has been clocked */
1069 if (m_last_clock == 0 && BIT(data, 5) && BIT(data, 6))
1070 {
1071 if (m_buf_ptr >= 32)
1072 {
1073 logerror("Eprom overflow!");
1074 m_buf_ptr = 0;
1075 }
1076
1077 /* Handle pending read */
1078 if (m_pending_command == 1)
1079 {
1080 const int d = m_read_bit_count >> 3;
1081 const int m = 7 - (m_read_bit_count & 0x7);
1082 const int a = (m_byte_addr + d) & 0x3ff;
1083 const int b = m_eeprom->internal_read(a);
1084
1085 m_tattass_eprom_bit = (b >> m) & 1;
1086
1087 m_read_bit_count++;
1088 m_last_clock = BIT(data, 5);
1089 return;
1090 }
1091
1092 /* Handle pending write */
1093 if (m_pending_command == 2)
1094 {
1095 m_buffer = (m_buffer << 1) | BIT(data, 4);
1096
1097 m_buf_ptr++;
1098 if (m_buf_ptr == 32)
1099 {
1100 m_eeprom->internal_write(m_byte_addr, m_buffer & 0xff);
1101 }
1102 m_last_clock = BIT(data, 5);
1103 return;
1104 }
1105
1106 m_buffer = (m_buffer << 1) | BIT(data, 4);
1107
1108 m_buf_ptr++;
1109 if (m_buf_ptr == 24)
1110 {
1111 /* Decode addr */
1112 m_byte_addr = ((m_buffer & 0x180000) >> 11) | (m_buffer & 0x0000ff);
1113
1114 /* Check for read command */
1115 if ((m_buffer & 0xc00000) == 0xc00000)
1116 {
1117 m_tattass_eprom_bit = (m_eeprom->internal_read(m_byte_addr) >> 7) & 1;
1118 m_read_bit_count = 1;
1119 m_pending_command = 1;
1120 }
1121
1122 /* Check for write command */
1123 else if ((m_buffer & 0xc00000) == 0x0)
1124 {
1125 m_pending_command = 2;
1126 }
1127 else
1128 {
1129 logerror("Detected unknown eprom command\n");
1130 }
1131 }
1132 }
1133 else
1134 {
1135 if (!(BIT(data, 6)))
1136 {
1137 logerror("Cs set low\n");
1138 m_buf_ptr = 0;
1139 }
1140 }
1141
1142 m_last_clock = BIT(data, 5);
1143 }
1144
1145 /* Volume in high byte */
1146 if (ACCESSING_BITS_8_15)
1147 {
1148 //TODO: volume attenuation == ((data >> 8) & 0xff);
1149 // TODO: is it really there?
1150 }
1151
1152 /* Playfield control - Only written in full word memory accesses */
1153 pri_w(data & 0x7); /* Bit 0 - layer priority toggle, Bit 1 - BG2/3 Joint mode (8bpp), Bit 2 - color fading effect mode (with/without OBJ1)? */
1154
1155 /* Sound board reset control */
1156 if (BIT(data, 7))
1157 m_decobsmt->bsmt_reset_line(CLEAR_LINE);
1158 else
1159 m_decobsmt->bsmt_reset_line(ASSERT_LINE);
1160
1161 /* bit 0x4 fade cancel? */
1162 /* bit 0x8 ?? */
1163 /* Bit 0x100 ?? */
1164 //logerror("%08x: %08x data\n",data,mem_mask);
1165 }
1166
port_b_tattass()1167 u16 nslasher_state::port_b_tattass()
1168 {
1169 return m_tattass_eprom_bit;
1170 }
1171
1172
1173 //**************************************************************************
1174 // MACHINE
1175 //**************************************************************************
1176
unk_status_r()1177 u32 fghthist_state::unk_status_r()
1178 {
1179 // bit 3 needs to be 0
1180 return 0xfffffff7;
1181 }
1182
nslasher_debug_r()1183 u16 nslasher_state::nslasher_debug_r()
1184 {
1185 return 0xffff;
1186 }
1187
_71_r()1188 u32 captaven_state::_71_r()
1189 {
1190 /* Bit 0x80 goes high when sprite DMA is complete, and low
1191 while it's in progress, we don't bother to emulate it */
1192 return 0xffffffff;
1193 }
1194
init_captaven()1195 void captaven_state::init_captaven()
1196 {
1197 deco56_decrypt_gfx(machine(), "gfx1");
1198 deco56_decrypt_gfx(machine(), "gfx2");
1199 }
1200
1201 extern void process_dvi_data(device_t *device,u8* dvi_data, int offset, int regionsize);
1202
dragngun_init_common()1203 void dragngun_state::dragngun_init_common()
1204 {
1205 const u8 *SRC_RAM = memregion("gfx1")->base();
1206 u8 *DST_RAM = memregion("gfx2")->base();
1207
1208 deco74_decrypt_gfx(machine(), "gfx1");
1209 deco74_decrypt_gfx(machine(), "gfx2");
1210 deco74_decrypt_gfx(machine(), "gfx3");
1211
1212 std::copy(&SRC_RAM[0x00000], &SRC_RAM[0x10000], &DST_RAM[0x080000]);
1213 std::copy(&SRC_RAM[0x10000], &SRC_RAM[0x20000], &DST_RAM[0x110000]);
1214
1215 #if 0
1216 {
1217 u8 *ROM = memregion("dvi")->base();
1218
1219 FILE *fp;
1220 char filename[256];
1221 sprintf(filename,"video.dvi");
1222 fp=fopen(filename, "w+b");
1223 if (fp)
1224 {
1225 fwrite(ROM, 0xc00000, 1, fp);
1226 fclose(fp);
1227 }
1228 }
1229 #endif
1230
1231 save_item(NAME(m_lightgun_port));
1232
1233 // there are DVI headers at 0x000000, 0x580000, 0x800000, 0xB10000, 0xB80000
1234 // process_dvi_data(this,memregion("dvi")->base(),0x000000, 0x1000000);
1235 // process_dvi_data(this,memregion("dvi")->base(),0x580000, 0x1000000);
1236 // process_dvi_data(this,memregion("dvi")->base(),0x800000, 0x1000000);
1237 // process_dvi_data(this,memregion("dvi")->base(),0xB10000, 0x1000000);
1238 // process_dvi_data(this,memregion("dvi")->base(),0xB80000, 0x1000000);
1239 }
1240
init_dragngun()1241 void dragngun_state::init_dragngun()
1242 {
1243 dragngun_init_common();
1244
1245 u32 *ROM = (u32 *)memregion("maincpu")->base();
1246 ROM[0x01b32c/4] = 0xe1a00000; // bl $ee000: NOP test switch lock
1247 }
1248
init_dragngunj()1249 void dragngun_state::init_dragngunj()
1250 {
1251 dragngun_init_common();
1252
1253 u32 *ROM = (u32 *)memregion("maincpu")->base();
1254 ROM[0x01a1b4/4] = 0xe1a00000; // bl $ee000: NOP test switch lock
1255 }
1256
init_fghthist()1257 void fghthist_state::init_fghthist()
1258 {
1259 deco56_decrypt_gfx(machine(), "gfx1");
1260 deco74_decrypt_gfx(machine(), "gfx2");
1261 }
1262
init_lockload()1263 void dragngun_state::init_lockload()
1264 {
1265 // u32 *ROM = (u32 *)memregion("maincpu")->base();
1266
1267 deco74_decrypt_gfx(machine(), "gfx1");
1268 deco74_decrypt_gfx(machine(), "gfx2");
1269 deco74_decrypt_gfx(machine(), "gfx3");
1270
1271 // ROM[0x1fe3c0/4] = 0xe1a00000;// NOP test switch lock
1272 // ROM[0x1fe3cc/4] = 0xe1a00000;// NOP test switch lock
1273 // ROM[0x1fe40c/4] = 0xe1a00000;// NOP test switch lock
1274
1275 save_item(NAME(m_oki2_bank));
1276 }
1277
init_tattass()1278 void nslasher_state::init_tattass()
1279 {
1280 u8 *RAM = memregion("gfx1")->base();
1281 std::vector<u8> tmp(0x80000);
1282
1283 /* Reorder bitplanes to make decoding easier */
1284 std::copy(&RAM[0x080000], &RAM[0x100000], tmp.begin());
1285 std::copy(&RAM[0x100000], &RAM[0x180000], &RAM[0x080000]);
1286 std::copy(tmp.begin(), tmp.end(), &RAM[0x100000]);
1287
1288 RAM = memregion("gfx2")->base();
1289 std::copy(&RAM[0x080000], &RAM[0x100000], tmp.begin());
1290 std::copy(&RAM[0x100000], &RAM[0x180000], &RAM[0x080000]);
1291 std::copy(tmp.begin(), tmp.end(), &RAM[0x100000]);
1292
1293 deco56_decrypt_gfx(machine(), "gfx1"); /* 141 */
1294 deco56_decrypt_gfx(machine(), "gfx2"); /* 141 */
1295
1296 save_item(NAME(m_tattass_eprom_bit));
1297 save_item(NAME(m_last_clock));
1298 save_item(NAME(m_buffer));
1299 save_item(NAME(m_buf_ptr));
1300 save_item(NAME(m_pending_command));
1301 save_item(NAME(m_read_bit_count));
1302 save_item(NAME(m_byte_addr));
1303 }
1304
init_nslasher()1305 void nslasher_state::init_nslasher()
1306 {
1307 u8 *RAM = memregion("gfx1")->base();
1308 std::vector<u8> tmp(0x80000);
1309
1310 /* Reorder bitplanes to make decoding easier */
1311 std::copy(&RAM[0x080000], &RAM[0x100000], tmp.begin());
1312 std::copy(&RAM[0x100000], &RAM[0x180000], &RAM[0x080000]);
1313 std::copy(tmp.begin(), tmp.end(), &RAM[0x100000]);
1314
1315 RAM = memregion("gfx2")->base();
1316 std::copy(&RAM[0x080000], &RAM[0x100000], tmp.begin());
1317 std::copy(&RAM[0x100000], &RAM[0x180000], &RAM[0x080000]);
1318 std::copy(tmp.begin(), tmp.end(), &RAM[0x100000]);
1319
1320 deco56_decrypt_gfx(machine(), "gfx1"); /* 141 */
1321 deco74_decrypt_gfx(machine(), "gfx2");
1322
1323 deco156_decrypt(machine());
1324
1325 /* The board for Night Slashers is very close to the Fighter's History and
1326 Tattoo Assassins boards, but has an encrypted ARM cpu. */
1327 }
1328
1329
1330 //**************************************************************************
1331 // INPUT DEFINITIONS
1332 //**************************************************************************
1333
1334 /* Notes (2002.02.05) :
1335
1336 When the "Continue Coin" Dip Switch is set to "2 Start/1 Continue",
1337 the "Coinage" Dip Switches have no effect.
1338
1339 START, BUTTON1 and COIN effects :
1340
1341 2 players, common coin slots
1342
1343 STARTn starts a game for player n. It adds 100 energy points each time it is pressed
1344 (provided there are still some credits, and energy is <= 900).
1345
1346 BUTTON1n selects the character for player n.
1347
1348 COIN1n adds credit(s)/coin(s).
1349
1350 2 players, individual coin slots
1351
1352 NO STARTn button !
1353
1354 BUTTON1n starts a game for player n. It also adds 100 energy points for each credit
1355 inserted for the player. It then selects the character for player n.
1356
1357 COIN1n adds 100 energy points (based on "Coinage") for player n when ingame if energy
1358 <= 900, else adds credit(s)/coin(s) for player n.
1359
1360 4 players, common coin slots
1361
1362 NO STARTn button !
1363
1364 BUTTON1n starts a game for player n. It gives 100 energy points. It then selects the
1365 character for player n.
1366
1367 4 players, individual coin slots
1368
1369 NO STARTn button !
1370
1371 BUTTON1n starts a game for player n. It also adds 100 energy points for each credit
1372 inserted for the player. It then selects the character for player n.
1373
1374 COIN1n adds 100 energy points (based on "Coinage") for player n when ingame if energy
1375 <= 900, else adds credit(s)/coin(s) for player n.
1376
1377 */
1378
1379 static INPUT_PORTS_START( captaven )
1380 PORT_START("IN0")
1381 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY
1382 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY
1383 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY
1384 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY
1385 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
1386 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
1387 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
1388 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
1389 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY
1390 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY
1391 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY
1392 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
1393 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1394 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1395 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
1396 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
1397
1398 PORT_START("IN1")
1399 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(3) PORT_8WAY
1400 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(3) PORT_8WAY
1401 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3) PORT_8WAY
1402 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(3) PORT_8WAY
1403 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
1404 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
1405 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
1406 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_SERVICE1 )
1407 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(4) PORT_8WAY
1408 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(4) PORT_8WAY
1409 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(4) PORT_8WAY
1410 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(4) PORT_8WAY
1411 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
1412 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
1413 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
1414 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
1415
1416 PORT_START("SYSTEM")
1417 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
1418 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
1419 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )
1420 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_COIN4 )
1421
1422 PORT_START("DSW1")
1423 PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DSW1:1,2,3")
1424 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
1425 PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
1426 PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
1427 PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )
1428 PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
1429 PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) )
1430 PORT_DIPSETTING( 0x03, DEF_STR( 1C_5C ) )
1431 PORT_DIPSETTING( 0x02, DEF_STR( 1C_6C ) )
1432 PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DSW1:4,5,6")
1433 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
1434 PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) )
1435 PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) )
1436 PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) )
1437 PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) )
1438 PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) )
1439 PORT_DIPSETTING( 0x18, DEF_STR( 1C_5C ) )
1440 PORT_DIPSETTING( 0x10, DEF_STR( 1C_6C ) )
1441 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSW1:7")
1442 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
1443 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1444 PORT_DIPNAME( 0x80, 0x80, "Continue Coin" ) PORT_DIPLOCATION("DSW1:8")
1445 PORT_DIPSETTING( 0x80, "1 Start/1 Continue" )
1446 PORT_DIPSETTING( 0x00, "2 Start/1 Continue" )
1447
1448 PORT_START("DSW2")
1449 PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("DSW2:1,2")
1450 PORT_DIPSETTING( 0x01, "1" )
1451 PORT_DIPSETTING( 0x00, "2" )
1452 PORT_DIPSETTING( 0x03, "3" )
1453 PORT_DIPSETTING( 0x02, "4" )
1454 PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSW2:3,4")
1455 PORT_DIPSETTING( 0x08, DEF_STR( Easy ) )
1456 PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) )
1457 PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
1458 PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
1459 PORT_DIPNAME( 0x10, 0x10, "Coin Slots" ) PORT_DIPLOCATION("DSW2:5")
1460 PORT_DIPSETTING( 0x10, "Common" )
1461 PORT_DIPSETTING( 0x00, "Individual" )
1462 PORT_DIPNAME( 0x20, 0x20, "Play Mode" ) PORT_DIPLOCATION("DSW2:6")
1463 PORT_DIPSETTING( 0x20, "2 Player" )
1464 PORT_DIPSETTING( 0x00, "4 Player" )
1465 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("DSW2:7")
1466 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1467 PORT_DIPSETTING( 0x40, DEF_STR( On ) )
1468 PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSW2:8")
1469 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
1470 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1471
1472 // This one isn't documented in the manual
1473 PORT_START("DSW3")
1474 PORT_DIPUNKNOWN_DIPLOC(0x01, IP_ACTIVE_LOW, "DSW3:1")
1475 PORT_DIPUNKNOWN_DIPLOC(0x02, IP_ACTIVE_LOW, "DSW3:2")
1476 PORT_DIPUNKNOWN_DIPLOC(0x04, IP_ACTIVE_LOW, "DSW3:3")
1477 PORT_DIPUNKNOWN_DIPLOC(0x08, IP_ACTIVE_LOW, "DSW3:4")
1478 PORT_DIPNAME( 0x10, 0x10, "Reset") PORT_DIPLOCATION("DSW3:5")
1479 PORT_DIPSETTING( 0x10, DEF_STR( Off ))
1480 PORT_DIPSETTING( 0x00, DEF_STR( On ))
1481 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Free_Play )) PORT_DIPLOCATION("DSW3:6")
1482 PORT_DIPSETTING( 0x20, DEF_STR( Off ))
1483 PORT_DIPSETTING( 0x00, DEF_STR( On ))
1484 PORT_DIPNAME( 0x40, 0x40, "Stage Select") PORT_DIPLOCATION("DSW3:7")
1485 PORT_DIPSETTING( 0x40, DEF_STR( Off ))
1486 PORT_DIPSETTING( 0x00, DEF_STR( On ))
1487 PORT_DIPNAME( 0x80, 0x80, "Debug Mode") PORT_DIPLOCATION("DSW3:8")
1488 PORT_DIPSETTING( 0x80, DEF_STR( Off ))
1489 PORT_DIPSETTING( 0x00, DEF_STR( On ))
1490 INPUT_PORTS_END
1491
1492 static INPUT_PORTS_START( fghthist )
1493 PORT_START("IN0")
1494 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY
1495 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY
1496 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY
1497 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY
1498 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
1499 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
1500 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
1501 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
1502 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY
1503 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY
1504 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY
1505 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
1506 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1507 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1508 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
1509 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
1510
1511 PORT_START("IN1")
1512 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
1513 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
1514 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
1515 PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW )
1516 PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
1517 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1518 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1519 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
1520 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
1521 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1)
1522 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1)
1523 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
1524 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
1525 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2)
1526 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2)
1527 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1528 INPUT_PORTS_END
1529
1530 static INPUT_PORTS_START( dragngun )
1531 PORT_START("INPUTS")
1532 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNUSED )
1533 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNUSED )
1534 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNUSED )
1535 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED )
1536 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
1537 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
1538 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
1539 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
1540 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
1541 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED )
1542 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED )
1543 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
1544 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1545 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1546 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
1547 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
1548
1549 PORT_START("SYSTEM")
1550 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
1551 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
1552 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
1553 PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
1554
1555 PORT_START("DSW")
1556 PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED ) /* Would be a dipswitch, but only 1 present on board */
1557 PORT_DIPNAME( 0x0100, 0x0000, "Reset" ) /* Behaves like Reset */
1558 PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
1559 PORT_DIPSETTING( 0x0100, DEF_STR( On ) )
1560 PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
1561 PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
1562 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1563 PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
1564 PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
1565 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1566 PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
1567 PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
1568 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1569 PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
1570 PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
1571 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1572 PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
1573 PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
1574 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1575 PORT_DIPNAME( 0x4000, 0x4000, "Stage Select" )
1576 PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
1577 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1578 PORT_DIPNAME( 0x8000, 0x8000, "Debug Mode" )
1579 PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
1580 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1581
1582 PORT_START("IN2")
1583 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") // is this actually vblank?
1584 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
1585 PORT_SERVICE( 0x0004, IP_ACTIVE_LOW )
1586 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) //check //test BUTTON F2
1587 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
1588 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1589 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1590 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
1591
1592 PORT_START("LIGHT0_X")
1593 PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_SENSITIVITY(20) PORT_KEYDELTA(25) PORT_PLAYER(1)
1594
1595 PORT_START("LIGHT1_X")
1596 PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_SENSITIVITY(20) PORT_KEYDELTA(25) PORT_PLAYER(2)
1597
1598 PORT_START("LIGHT0_Y")
1599 PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_SENSITIVITY(20) PORT_KEYDELTA(25) PORT_PLAYER(1)
1600
1601 PORT_START("LIGHT1_Y")
1602 PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_SENSITIVITY(20) PORT_KEYDELTA(25) PORT_PLAYER(2)
1603 INPUT_PORTS_END
1604
1605 static INPUT_PORTS_START( lockload )
1606 PORT_START("INPUTS")
1607 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNUSED )
1608 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNUSED )
1609 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNUSED )
1610 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED )
1611 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Fire") PORT_CHANGED_MEMBER(DEVICE_SELF, dragngun_state, lockload_gun_trigger, 0)
1612 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Reload")
1613 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
1614 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
1615 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
1616 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED )
1617 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED )
1618 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
1619 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Fire") PORT_CHANGED_MEMBER(DEVICE_SELF, dragngun_state, lockload_gun_trigger, 1)
1620 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Reload")
1621 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
1622 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
1623
1624 PORT_START("SYSTEM")
1625 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
1626 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
1627 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
1628 PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
1629
1630 PORT_START("DSW")
1631 PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED ) /* Would be a dipswitch, but only 1 present on board */
1632 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Free_Play ) )
1633 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
1634 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1635 PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
1636 PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
1637 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1638 PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
1639 PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
1640 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1641 PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
1642 PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
1643 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1644 PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
1645 PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
1646 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1647 PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
1648 PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
1649 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1650 PORT_DIPNAME( 0x4000, 0x0000, "Reset" )
1651 PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
1652 PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
1653 PORT_DIPNAME( 0x8000, 0x8000, "Debug Mode" )
1654 PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
1655 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1656
1657 PORT_START("IN2")
1658 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
1659 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNUSED )
1660 PORT_SERVICE( 0x0004, IP_ACTIVE_LOW )
1661 PORT_BIT( 0x00f8, IP_ACTIVE_LOW, IPT_UNUSED ) //check //test BUTTON F2
1662
1663 PORT_START("LIGHT0_X")
1664 PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(20) PORT_KEYDELTA(25) PORT_PLAYER(1)
1665
1666 PORT_START("LIGHT0_Y")
1667 PORT_BIT( 0xff, 49, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(20) PORT_KEYDELTA(25) PORT_PLAYER(1) PORT_MINMAX(16,82)
1668
1669 PORT_START("LIGHT1_X")
1670 PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(20) PORT_KEYDELTA(25) PORT_PLAYER(2)
1671
1672 PORT_START("LIGHT1_Y")
1673 PORT_BIT( 0xff, 49, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(20) PORT_KEYDELTA(25) PORT_PLAYER(2) PORT_MINMAX(16,82)
1674 INPUT_PORTS_END
1675
1676 static INPUT_PORTS_START( tattass )
1677 PORT_START("IN0")
1678 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY
1679 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY
1680 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY
1681 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY
1682 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
1683 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
1684 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
1685 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
1686 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY
1687 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY
1688 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY
1689 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
1690 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1691 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1692 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
1693 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
1694
1695 PORT_START("IN1")
1696 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
1697 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
1698 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
1699 PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW )
1700 PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
1701 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED ) /* 'soundmask' */
1702 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
1703 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
1704 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
1705 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1)
1706 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1)
1707 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
1708 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
1709 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2)
1710 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2)
1711 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
1712 INPUT_PORTS_END
1713
1714 static INPUT_PORTS_START( nslasher )
1715 PORT_START("IN0")
1716 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY
1717 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY
1718 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY
1719 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY
1720 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
1721 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
1722 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
1723 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
1724 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY
1725 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY
1726 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY
1727 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
1728 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1729 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1730 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
1731 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
1732
1733 PORT_START("IN1")
1734 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
1735 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
1736 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
1737 PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW )
1738 PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
1739 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED ) /* 'soundmask' */
1740 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
1741 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
1742 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(3) PORT_8WAY
1743 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(3) PORT_8WAY
1744 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3) PORT_8WAY
1745 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(3) PORT_8WAY
1746 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
1747 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
1748 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
1749 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START3 )
1750 INPUT_PORTS_END
1751
1752
1753 //**************************************************************************
1754 // GFXDECODE LAYOUTS
1755 //**************************************************************************
1756
1757 static const gfx_layout charlayout =
1758 {
1759 8,8,
1760 RGN_FRAC(1,2),
1761 4,
1762 { RGN_FRAC(1,2)+8, RGN_FRAC(1,2), 8, 0 },
1763 { STEP8(0,1) },
1764 { STEP8(0,8*2) },
1765 16*8 /* every char takes 8 consecutive bytes */
1766 };
1767
1768 static const gfx_layout tilelayout =
1769 {
1770 16,16,
1771 RGN_FRAC(1,2),
1772 4,
1773 { RGN_FRAC(1,2)+8, RGN_FRAC(1,2), 8, 0 },
1774 { STEP8(16*8*2,1), STEP8(0,1) },
1775 { STEP16(0,8*2) },
1776 64*8
1777 };
1778
1779 static const gfx_layout tilelayout_8bpp =
1780 {
1781 16,16,
1782 RGN_FRAC(1,4),
1783 8,
1784 { RGN_FRAC(3,4)+8, RGN_FRAC(3,4)+0, RGN_FRAC(2,4)+8, RGN_FRAC(2,4)+0, RGN_FRAC(1,4)+8, RGN_FRAC(1,4)+0, 8, 0 },
1785 { STEP8(16*8*2,1), STEP8(0,1) },
1786 { STEP16(0,8*2) },
1787 64*8
1788 };
1789
1790 static const gfx_layout tilelayout_5bpp =
1791 {
1792 16,16,
1793 RGN_FRAC(1,1),
1794 5,
1795 { 8*0, 8*1, 8*2, 8*3, 8*4 },
1796 { STEP8(16*8*5,1), STEP8(0,1) },
1797 { STEP16(0,8*5) },
1798 16*16*5
1799 };
1800
1801 static const gfx_layout spritelayout4 =
1802 {
1803 16,16,
1804 RGN_FRAC(1,1),
1805 4,
1806 { STEP4(0,1) },
1807 { STEP16(0,8) },
1808 { STEP16(0,16*8) },
1809 16*16*8
1810 };
1811
1812 static const gfx_layout spritelayout5 =
1813 {
1814 16,16,
1815 RGN_FRAC(1,1),
1816 4,
1817 { STEP4(4,1) },
1818 { STEP16(0,8) },
1819 { STEP16(0,16*8) },
1820 16*16*8
1821 };
1822
1823 static GFXDECODE_START( gfx_captaven )
1824 GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 128 ) /* Characters 8x8 */
1825 GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 128 ) /* Tiles 16x16 */
1826 GFXDECODE_ENTRY( "gfx2", 0, tilelayout_8bpp, 0, 8 ) /* Tiles 16x16 */
1827 GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 0, 32 ) /* Sprites 16x16 */
1828 GFXDECODE_END
1829
GFXDECODE_START(gfx_fghthist)1830 static GFXDECODE_START( gfx_fghthist )
1831 GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 128 ) /* Characters 8x8 */
1832 GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 128 ) /* Tiles 16x16 */
1833 GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 128 ) /* Tiles 16x16 */
1834 GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 1024, 32 ) /* Sprites 16x16 */
1835 GFXDECODE_END
1836
1837 static GFXDECODE_START( gfx_dragngun )
1838 GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 ) /* Characters 8x8 */
1839 GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 64 ) /* Tiles 16x16 */
1840 GFXDECODE_ENTRY( "gfx3", 0, tilelayout_8bpp, 0, 8 ) /* Tiles 16x16 */
1841 GFXDECODE_ENTRY( "gfx4", 0, spritelayout4, 0, 32 ) /* Sprites 16x16 */
1842 GFXDECODE_ENTRY( "gfx4", 0, spritelayout5, 0, 32 ) /* Sprites 16x16 */
1843 GFXDECODE_END
1844
1845 static GFXDECODE_START( gfx_nslasher )
1846 GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0x800, 128 ) /* Characters 8x8 */
1847 GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 128 ) /* Tiles 16x16 */
1848 GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 128 ) /* Tiles 16x16 */
1849 GFXDECODE_ENTRY( "gfx3", 0, tilelayout_5bpp, 0, 16 ) /* Sprites 16x16 */
1850 GFXDECODE_ENTRY( "gfx4", 0, tilelayout, 0, 16 ) /* Sprites 16x16 */
1851 GFXDECODE_END
1852
1853
1854 //**************************************************************************
1855 // MACHINE DEFINITIONS
1856 //**************************************************************************
1857
1858 void captaven_state::captaven(machine_config &config)
1859 {
1860 /* basic machine hardware */
1861 ARM(config, m_maincpu, XTAL(28'000'000)/4); /* verified on pcb (Data East 101 custom)*/
1862 m_maincpu->set_addrmap(AS_PROGRAM, &captaven_state::captaven_map);
1863
1864 h6280_device &audiocpu(H6280(config, m_audiocpu, XTAL(32'220'000)/4/3)); /* pin 10 is 32mhz/4, pin 14 is High so internal divisor is 3 (verified on pcb) */
1865 audiocpu.set_addrmap(AS_PROGRAM, &captaven_state::h6280_sound_map);
1866 audiocpu.add_route(ALL_OUTPUTS, "lspeaker", 0); // internal sound unused
1867 audiocpu.add_route(ALL_OUTPUTS, "rspeaker", 0);
1868
1869 INPUT_MERGER_ANY_HIGH(config, "irq_merger").output_handler().set_inputline(m_maincpu, ARM_IRQ_LINE);
1870
1871 DECO_IRQ(config, m_deco_irq, 0);
1872 m_deco_irq->set_screen_tag(m_screen);
1873 m_deco_irq->raster2_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<0>));
1874 m_deco_irq->vblank_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<1>));
1875
1876 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
1877 m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248);
1878 m_screen->set_screen_update(FUNC(captaven_state::screen_update));
1879 m_screen->set_palette(m_palette);
1880
1881 GFXDECODE(config, m_gfxdecode, m_palette, gfx_captaven);
1882 PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 2048);
1883
1884 DECO16IC(config, m_deco_tilegen[0], 0);
1885 m_deco_tilegen[0]->set_pf1_size(DECO_64x32);
1886 m_deco_tilegen[0]->set_pf2_size(DECO_64x32);
1887 m_deco_tilegen[0]->set_pf1_col_bank(0x20);
1888 m_deco_tilegen[0]->set_pf2_col_bank(0x30);
1889 m_deco_tilegen[0]->set_pf1_col_mask(0x0f);
1890 m_deco_tilegen[0]->set_pf2_col_mask(0x0f);
1891 m_deco_tilegen[0]->set_pf12_8x8_bank(0);
1892 m_deco_tilegen[0]->set_pf12_16x16_bank(1);
1893 m_deco_tilegen[0]->set_gfxdecode_tag(m_gfxdecode);
1894
1895 DECO16IC(config, m_deco_tilegen[1], 0); // pf3 is in 8bpp mode, pf4 is not used
1896 m_deco_tilegen[1]->set_pf1_size(DECO_32x32);
1897 m_deco_tilegen[1]->set_pf2_size(DECO_32x32);
1898 m_deco_tilegen[1]->set_pf1_col_bank(0x04);
1899 m_deco_tilegen[1]->set_pf2_col_bank(0x00);
1900 m_deco_tilegen[1]->set_pf1_col_mask(0x03);
1901 m_deco_tilegen[1]->set_pf2_col_mask(0x00);
1902 m_deco_tilegen[1]->set_tile_callback(FUNC(captaven_state::tile_callback));
1903 m_deco_tilegen[1]->set_bank1_callback(FUNC(captaven_state::bank_callback));
1904 // no bank2 callback
1905 m_deco_tilegen[1]->set_pf12_8x8_bank(0);
1906 m_deco_tilegen[1]->set_pf12_16x16_bank(2);
1907 m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode);
1908
1909 DECO_SPRITE(config, m_sprgen[0], 0);
1910 m_sprgen[0]->set_gfx_region(3);
1911 m_sprgen[0]->set_pri_callback(FUNC(captaven_state::captaven_pri_callback));
1912 m_sprgen[0]->set_gfxdecode_tag(m_gfxdecode);
1913
1914 DECO146PROT(config, m_ioprot, 0);
1915 m_ioprot->port_a_cb().set_ioport("IN0");
1916 m_ioprot->port_b_cb().set_ioport("SYSTEM");
1917 m_ioprot->port_c_cb().set_ioport("IN1");
1918 m_ioprot->soundlatch_irq_cb().set_inputline(m_audiocpu, 0);
1919
1920 /* sound hardware */
1921 SPEAKER(config, "lspeaker").front_left();
1922 SPEAKER(config, "rspeaker").front_right();
1923
1924 YM2151(config, m_ym2151, XTAL(32'220'000)/9); /* verified on pcb */
1925 m_ym2151->irq_handler().set_inputline(m_audiocpu, 1);
1926 m_ym2151->port_write_handler().set(FUNC(deco32_state::sound_bankswitch_w));
1927 m_ym2151->add_route(0, "lspeaker", 0.42);
1928 m_ym2151->add_route(1, "rspeaker", 0.42);
1929
1930 OKIM6295(config, m_oki[0], XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH); /* verified on pcb; pin 7 is floating to 2.5V (left unconnected), so I presume High */
1931 m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
1932 m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
1933
1934 OKIM6295(config, m_oki[1], XTAL(32'220'000)/16, okim6295_device::PIN7_HIGH); /* verified on pcb; pin 7 is floating to 2.5V (left unconnected), so I presume High */
1935 m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.35);
1936 m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.35);
1937 }
1938
1939 // DE-0380-2
fghthist(machine_config & config)1940 void fghthist_state::fghthist(machine_config &config)
1941 {
1942 ARM(config, m_maincpu, XTAL(28'000'000) / 4);
1943 m_maincpu->set_addrmap(AS_PROGRAM, &fghthist_state::fghthist_map);
1944 m_maincpu->set_vblank_int("screen", FUNC(deco32_state::irq0_line_assert));
1945
1946 h6280_device &audiocpu(H6280(config, m_audiocpu, XTAL(32'220'000) / 8));
1947 audiocpu.set_addrmap(AS_PROGRAM, &fghthist_state::h6280_sound_custom_latch_map);
1948 audiocpu.add_route(ALL_OUTPUTS, "lspeaker", 0); // internal sound unused
1949 audiocpu.add_route(ALL_OUTPUTS, "rspeaker", 0);
1950
1951 EEPROM_93C46_16BIT(config, m_eeprom);
1952
1953 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
1954 m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248);
1955 m_screen->set_screen_update(FUNC(fghthist_state::screen_update));
1956
1957 GFXDECODE(config, m_gfxdecode, m_palette, gfx_fghthist);
1958 PALETTE(config, m_palette).set_entries(2048);
1959
1960 DECO16IC(config, m_deco_tilegen[0], 0);
1961 m_deco_tilegen[0]->set_pf1_size(DECO_64x32);
1962 m_deco_tilegen[0]->set_pf2_size(DECO_64x32);
1963 m_deco_tilegen[0]->set_pf1_col_bank(0x00);
1964 m_deco_tilegen[0]->set_pf2_col_bank(0x10);
1965 m_deco_tilegen[0]->set_pf1_col_mask(0x0f);
1966 m_deco_tilegen[0]->set_pf2_col_mask(0x0f);
1967 m_deco_tilegen[0]->set_bank1_callback(FUNC(fghthist_state::bank_callback));
1968 m_deco_tilegen[0]->set_bank2_callback(FUNC(fghthist_state::bank_callback));
1969 m_deco_tilegen[0]->set_pf12_8x8_bank(0);
1970 m_deco_tilegen[0]->set_pf12_16x16_bank(1);
1971 m_deco_tilegen[0]->set_gfxdecode_tag(m_gfxdecode);
1972
1973 DECO16IC(config, m_deco_tilegen[1], 0);
1974 m_deco_tilegen[1]->set_pf1_size(DECO_64x32);
1975 m_deco_tilegen[1]->set_pf2_size(DECO_64x32);
1976 m_deco_tilegen[1]->set_pf1_col_bank(0x20);
1977 m_deco_tilegen[1]->set_pf2_col_bank(0x30);
1978 m_deco_tilegen[1]->set_pf1_col_mask(0x0f);
1979 m_deco_tilegen[1]->set_pf2_col_mask(0x0f);
1980 m_deco_tilegen[1]->set_bank1_callback(FUNC(fghthist_state::bank_callback));
1981 m_deco_tilegen[1]->set_bank2_callback(FUNC(fghthist_state::bank_callback));
1982 m_deco_tilegen[1]->set_pf12_8x8_bank(0);
1983 m_deco_tilegen[1]->set_pf12_16x16_bank(2);
1984 m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode);
1985
1986 DECO_SPRITE(config, m_sprgen[0], 0);
1987 m_sprgen[0]->set_gfx_region(3);
1988 m_sprgen[0]->set_pri_callback(FUNC(fghthist_state::fghthist_pri_callback));
1989 m_sprgen[0]->set_gfxdecode_tag(m_gfxdecode);
1990
1991 DECO146PROT(config, m_ioprot, 0);
1992 m_ioprot->port_a_cb().set_ioport("IN0");
1993 m_ioprot->port_b_cb().set("eeprom", FUNC(eeprom_serial_93cxx_device::do_read)).lshift(0);
1994 m_ioprot->port_c_cb().set_ioport("IN1");
1995 m_ioprot->set_interface_scramble_interleave();
1996 m_ioprot->set_use_magic_read_address_xor(true);
1997
1998 /* sound hardware */
1999 SPEAKER(config, "lspeaker").front_left();
2000 SPEAKER(config, "rspeaker").front_right();
2001
2002 GENERIC_LATCH_8(config, m_soundlatch);
2003 m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
2004
2005 YM2151(config, m_ym2151, 32220000/9);
2006 m_ym2151->irq_handler().set_inputline(m_audiocpu, 1);
2007 m_ym2151->port_write_handler().set(FUNC(deco32_state::sound_bankswitch_w));
2008 m_ym2151->add_route(0, "lspeaker", 0.42);
2009 m_ym2151->add_route(1, "rspeaker", 0.42);
2010
2011 OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH);
2012 m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
2013 m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
2014
2015 OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH);
2016 m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.35);
2017 m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.35);
2018 }
2019
2020 // DE-0395-1
fghthsta(machine_config & config)2021 void fghthist_state::fghthsta(machine_config &config)
2022 {
2023 fghthist(config);
2024 m_maincpu->set_addrmap(AS_PROGRAM, &fghthist_state::fghthsta_memmap);
2025 m_audiocpu->set_addrmap(AS_PROGRAM, &fghthist_state::h6280_sound_map);
2026
2027 config.device_remove("soundlatch");
2028
2029 m_ioprot->soundlatch_irq_cb().set_inputline(m_audiocpu, 0);
2030 }
2031
2032 // DE-0396-0
fghthistu(machine_config & config)2033 void fghthist_state::fghthistu(machine_config &config)
2034 {
2035 fghthsta(config);
2036
2037 Z80(config.replace(), m_audiocpu, XTAL(32'220'000) / 9);
2038 m_audiocpu->set_addrmap(AS_PROGRAM, &fghthist_state::z80_sound_map);
2039 m_audiocpu->set_addrmap(AS_IO, &fghthist_state::z80_sound_io);
2040
2041 INPUT_MERGER_ANY_HIGH(config, "sound_irq_merger").output_handler().set_inputline(m_audiocpu, INPUT_LINE_IRQ0);
2042
2043 m_ioprot->soundlatch_irq_cb().set("sound_irq_merger", FUNC(input_merger_any_high_device::in_w<0>));
2044
2045 m_ym2151->irq_handler().set("sound_irq_merger", FUNC(input_merger_any_high_device::in_w<1>));
2046 m_ym2151->reset_routes();
2047 m_ym2151->add_route(0, "lspeaker", 0.40);
2048 m_ym2151->add_route(1, "rspeaker", 0.40);
2049 }
2050
2051 // DE-0359-2 + Bottom board DE-0360-4
dragngun(machine_config & config)2052 void dragngun_state::dragngun(machine_config &config)
2053 {
2054 /* basic machine hardware */
2055 ARM(config, m_maincpu, XTAL(28'000'000) / 4);
2056 m_maincpu->set_addrmap(AS_PROGRAM, &dragngun_state::dragngun_map);
2057
2058 h6280_device &audiocpu(H6280(config, m_audiocpu, 32220000/8));
2059 audiocpu.set_addrmap(AS_PROGRAM, &dragngun_state::h6280_sound_map);
2060 audiocpu.add_route(ALL_OUTPUTS, "lspeaker", 0); // internal sound unused
2061 audiocpu.add_route(ALL_OUTPUTS, "rspeaker", 0);
2062
2063 INPUT_MERGER_ANY_HIGH(config, "irq_merger").output_handler().set_inputline("maincpu", ARM_IRQ_LINE);
2064
2065 DECO_IRQ(config, m_deco_irq, 0);
2066 m_deco_irq->set_screen_tag(m_screen);
2067 m_deco_irq->raster2_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<0>));
2068 m_deco_irq->vblank_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<1>));
2069
2070 EEPROM_93C46_16BIT(config, m_eeprom);
2071
2072 /* video hardware */
2073 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
2074 m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248);
2075 m_screen->set_screen_update(FUNC(dragngun_state::screen_update));
2076 //m_screen->set_palette(m_palette);
2077
2078 BUFFERED_SPRITERAM32(config, m_spriteram);
2079
2080 DECO16IC(config, m_deco_tilegen[0], 0);
2081 m_deco_tilegen[0]->set_pf1_size(DECO_64x32);
2082 m_deco_tilegen[0]->set_pf2_size(DECO_64x32);
2083 m_deco_tilegen[0]->set_pf1_col_bank(0x20);
2084 m_deco_tilegen[0]->set_pf2_col_bank(0x30);
2085 m_deco_tilegen[0]->set_pf1_col_mask(0x0f);
2086 m_deco_tilegen[0]->set_pf2_col_mask(0x0f);
2087 m_deco_tilegen[0]->set_bank1_callback(FUNC(dragngun_state::bank_1_callback));
2088 m_deco_tilegen[0]->set_bank2_callback(FUNC(dragngun_state::bank_1_callback));
2089 m_deco_tilegen[0]->set_pf12_8x8_bank(0);
2090 m_deco_tilegen[0]->set_pf12_16x16_bank(1);
2091 m_deco_tilegen[0]->set_gfxdecode_tag(m_gfxdecode);
2092
2093 DECO16IC(config, m_deco_tilegen[1], 0);
2094 m_deco_tilegen[1]->set_pf1_size(DECO_64x32);
2095 m_deco_tilegen[1]->set_pf2_size(DECO_64x32);
2096 m_deco_tilegen[1]->set_pf1_col_bank(0x04);
2097 m_deco_tilegen[1]->set_pf2_col_bank(0x04);
2098 m_deco_tilegen[1]->set_pf1_col_mask(0x03);
2099 m_deco_tilegen[1]->set_pf2_col_mask(0x03);
2100 m_deco_tilegen[1]->set_bank1_callback(FUNC(dragngun_state::bank_2_callback));
2101 // no bank2 callback
2102 m_deco_tilegen[1]->set_pf12_8x8_bank(0);
2103 m_deco_tilegen[1]->set_pf12_16x16_bank(2);
2104 m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode);
2105
2106 DECO_ZOOMSPR(config, m_sprgenzoom, 0);
2107 m_sprgenzoom->set_gfxdecode(m_gfxdecode);
2108
2109 GFXDECODE(config, m_gfxdecode, m_palette, gfx_dragngun);
2110 PALETTE(config, m_palette).set_entries(2048);
2111
2112 DECO146PROT(config, m_ioprot, 0);
2113 m_ioprot->port_a_cb().set_ioport("INPUTS");
2114 m_ioprot->port_b_cb().set_ioport("SYSTEM");
2115 m_ioprot->port_c_cb().set_ioport("DSW");
2116 m_ioprot->soundlatch_irq_cb().set_inputline(m_audiocpu, 0);
2117 m_ioprot->set_interface_scramble_reverse();
2118
2119 /* sound hardware */
2120 SPEAKER(config, "lspeaker").front_left();
2121 SPEAKER(config, "rspeaker").front_right();
2122
2123 YM2151(config, m_ym2151, 32220000/9);
2124 m_ym2151->irq_handler().set_inputline(m_audiocpu, 1);
2125 m_ym2151->port_write_handler().set(FUNC(deco32_state::sound_bankswitch_w));
2126 m_ym2151->add_route(0, "lspeaker", 0.42);
2127 m_ym2151->add_route(1, "rspeaker", 0.42);
2128
2129 OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH);
2130 m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
2131 m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
2132
2133 OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH);
2134 m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.35);
2135 m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.35);
2136
2137 SPEAKER(config, "gun_speaker").front_center();
2138
2139 OKIM6295(config, m_oki[2], 32220000/32, okim6295_device::PIN7_HIGH);
2140 m_oki[2]->add_route(ALL_OUTPUTS, "gun_speaker", 1.0);
2141
2142 LC7535(config, m_vol_main);
2143 m_vol_main->select().set_constant(1);
2144 m_vol_main->set_volume_callback(FUNC(dragngun_state::volume_main_changed));
2145
2146 LC7535(config, m_vol_gun);
2147 m_vol_gun->select().set_constant(0);
2148 m_vol_gun->set_volume_callback(FUNC(dragngun_state::volume_gun_changed));
2149 }
2150
lockloadu(machine_config & config)2151 void dragngun_state::lockloadu(machine_config &config)
2152 {
2153 dragngun(config);
2154 m_maincpu->set_addrmap(AS_PROGRAM, &dragngun_state::lockloadu_map);
2155 m_audiocpu->set_addrmap(AS_PROGRAM, &dragngun_state::lockloadu_sound_map);
2156
2157 m_deco_irq->lightgun_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<2>));
2158
2159 m_deco_tilegen[1]->set_pf1_size(DECO_32x32);
2160 m_deco_tilegen[1]->set_pf2_size(DECO_32x32); // lockload definitely wants pf34 half width..
2161
2162 m_ym2151->port_write_handler().set(FUNC(dragngun_state::lockload_okibank_lo_w));
2163 }
2164
2165 // DE-0420-1 + Bottom board DE-0421-0
lockload(machine_config & config)2166 void dragngun_state::lockload(machine_config &config)
2167 {
2168 /* basic machine hardware */
2169 ARM(config, m_maincpu, XTAL(28'000'000) / 4);
2170 m_maincpu->set_addrmap(AS_PROGRAM, &dragngun_state::lockload_map);
2171
2172 INPUT_MERGER_ANY_HIGH(config, "irq_merger").output_handler().set_inputline("maincpu", ARM_IRQ_LINE);
2173
2174 Z80(config, m_audiocpu, 32220000/8);
2175 m_audiocpu->set_addrmap(AS_PROGRAM, &dragngun_state::lockload_sound_map);
2176 m_audiocpu->set_addrmap(AS_IO, &dragngun_state::z80_sound_io);
2177
2178 INPUT_MERGER_ANY_HIGH(config, "sound_irq_merger").output_handler().set_inputline("audiocpu", INPUT_LINE_IRQ0);
2179
2180 DECO_IRQ(config, m_deco_irq, 0);
2181 m_deco_irq->set_screen_tag(m_screen);
2182 m_deco_irq->lightgun1_callback().set_ioport("LIGHT0_Y");
2183 m_deco_irq->lightgun2_callback().set_ioport("LIGHT1_Y");
2184 m_deco_irq->raster2_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<0>));
2185 m_deco_irq->vblank_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<1>));
2186 m_deco_irq->lightgun_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<2>));
2187
2188 config.set_maximum_quantum(attotime::from_hz(6000)); /* to improve main<->audio comms */
2189
2190 EEPROM_93C46_16BIT(config, m_eeprom);
2191
2192 /* video hardware */
2193 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
2194 m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248);
2195 m_screen->set_screen_update(FUNC(dragngun_state::screen_update));
2196
2197 BUFFERED_SPRITERAM32(config, m_spriteram);
2198
2199 GFXDECODE(config, m_gfxdecode, m_palette, gfx_dragngun);
2200 PALETTE(config, m_palette).set_entries(2048);
2201
2202 DECO16IC(config, m_deco_tilegen[0], 0);
2203 m_deco_tilegen[0]->set_pf1_size(DECO_64x32);
2204 m_deco_tilegen[0]->set_pf2_size(DECO_64x32);
2205 m_deco_tilegen[0]->set_pf1_col_bank(0x20);
2206 m_deco_tilegen[0]->set_pf2_col_bank(0x30);
2207 m_deco_tilegen[0]->set_pf1_col_mask(0x0f);
2208 m_deco_tilegen[0]->set_pf2_col_mask(0x0f);
2209 m_deco_tilegen[0]->set_bank1_callback(FUNC(dragngun_state::bank_1_callback));
2210 m_deco_tilegen[0]->set_bank2_callback(FUNC(dragngun_state::bank_1_callback));
2211 m_deco_tilegen[0]->set_pf12_8x8_bank(0);
2212 m_deco_tilegen[0]->set_pf12_16x16_bank(1);
2213 m_deco_tilegen[0]->set_gfxdecode_tag(m_gfxdecode);
2214
2215 DECO16IC(config, m_deco_tilegen[1], 0);
2216 m_deco_tilegen[1]->set_pf1_size(DECO_32x32);
2217 m_deco_tilegen[1]->set_pf2_size(DECO_32x32); // lockload definitely wants pf34 half width..
2218 m_deco_tilegen[1]->set_pf1_col_bank(0x04);
2219 m_deco_tilegen[1]->set_pf2_col_bank(0x04);
2220 m_deco_tilegen[1]->set_pf1_col_mask(0x03);
2221 m_deco_tilegen[1]->set_pf2_col_mask(0x03);
2222 m_deco_tilegen[1]->set_bank1_callback(FUNC(dragngun_state::bank_2_callback));
2223 // no bank2 callback
2224 m_deco_tilegen[1]->set_pf12_8x8_bank(0);
2225 m_deco_tilegen[1]->set_pf12_16x16_bank(2);
2226 m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode);
2227
2228 DECO_ZOOMSPR(config, m_sprgenzoom, 0);
2229 m_sprgenzoom->set_gfxdecode(m_gfxdecode);
2230
2231 DECO146PROT(config, m_ioprot, 0);
2232 m_ioprot->port_a_cb().set_ioport("INPUTS");
2233 m_ioprot->port_b_cb().set_ioport("SYSTEM");
2234 m_ioprot->port_c_cb().set_ioport("DSW");
2235 m_ioprot->soundlatch_irq_cb().set("sound_irq_merger", FUNC(input_merger_any_high_device::in_w<0>));
2236 m_ioprot->set_interface_scramble_reverse();
2237
2238 /* sound hardware */
2239 SPEAKER(config, "lspeaker").front_left();
2240 SPEAKER(config, "rspeaker").front_right();
2241
2242 YM2151(config, m_ym2151, 32220000/9);
2243 m_ym2151->irq_handler().set("sound_irq_merger", FUNC(input_merger_any_high_device::in_w<1>));
2244 m_ym2151->port_write_handler().set(FUNC(dragngun_state::lockload_okibank_lo_w));
2245 m_ym2151->add_route(0, "lspeaker", 0.42);
2246 m_ym2151->add_route(1, "rspeaker", 0.42);
2247
2248 OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH);
2249 m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
2250 m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
2251
2252 OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH);
2253 m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.35);
2254 m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.35);
2255
2256 LC7535(config, m_vol_main);
2257 m_vol_main->select().set_constant(1);
2258 m_vol_main->set_volume_callback(FUNC(dragngun_state::volume_main_changed));
2259 }
2260
tattass(machine_config & config)2261 void nslasher_state::tattass(machine_config &config)
2262 {
2263 /* basic machine hardware */
2264 ARM(config, m_maincpu, 28000000/4); // unconfirmed
2265 m_maincpu->set_addrmap(AS_PROGRAM, &nslasher_state::tattass_map);
2266 m_maincpu->set_vblank_int("screen", FUNC(deco32_state::irq0_line_assert));
2267
2268 EEPROM_93C76_8BIT(config, m_eeprom);
2269
2270 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
2271 m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248);
2272 m_screen->set_screen_update(FUNC(nslasher_state::screen_update_tattass));
2273
2274 DECO_ACE(config, m_deco_ace, 0);
2275
2276 DECO16IC(config, m_deco_tilegen[0], 0);
2277 m_deco_tilegen[0]->set_pf1_size(DECO_64x32);
2278 m_deco_tilegen[0]->set_pf2_size(DECO_64x32);
2279 m_deco_tilegen[0]->set_pf1_col_bank(0x00);
2280 m_deco_tilegen[0]->set_pf2_col_bank(0x10);
2281 m_deco_tilegen[0]->set_pf1_col_mask(0x0f);
2282 m_deco_tilegen[0]->set_pf2_col_mask(0x0f);
2283 m_deco_tilegen[0]->set_bank1_callback(FUNC(nslasher_state::bank_callback));
2284 m_deco_tilegen[0]->set_bank2_callback(FUNC(nslasher_state::bank_callback));
2285 m_deco_tilegen[0]->set_pf12_8x8_bank(0);
2286 m_deco_tilegen[0]->set_pf12_16x16_bank(1);
2287 m_deco_tilegen[0]->set_gfxdecode_tag(m_gfxdecode);
2288
2289 DECO16IC(config, m_deco_tilegen[1], 0);
2290 m_deco_tilegen[1]->set_pf1_size(DECO_64x32);
2291 m_deco_tilegen[1]->set_pf2_size(DECO_64x32);
2292 m_deco_tilegen[1]->set_pf1_col_bank(0x20);
2293 m_deco_tilegen[1]->set_pf2_col_bank(0x30);
2294 m_deco_tilegen[1]->set_pf1_col_mask(0x0f);
2295 m_deco_tilegen[1]->set_pf2_col_mask(0x0f);
2296 m_deco_tilegen[1]->set_bank1_callback(FUNC(nslasher_state::bank_callback));
2297 m_deco_tilegen[1]->set_bank2_callback(FUNC(nslasher_state::bank_callback));
2298 m_deco_tilegen[1]->set_mix_callback(FUNC(nslasher_state::mix_callback));
2299 m_deco_tilegen[1]->set_pf12_8x8_bank(0);
2300 m_deco_tilegen[1]->set_pf12_16x16_bank(2);
2301 m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode);
2302
2303 DECO_SPRITE(config, m_sprgen[0], 0);
2304 m_sprgen[0]->set_gfx_region(3);
2305 m_sprgen[0]->set_gfxdecode_tag(m_gfxdecode);
2306
2307 DECO_SPRITE(config, m_sprgen[1], 0);
2308 m_sprgen[1]->set_gfx_region(4);
2309 m_sprgen[1]->set_gfxdecode_tag(m_gfxdecode);
2310
2311 GFXDECODE(config, m_gfxdecode, m_deco_ace, gfx_nslasher);
2312
2313 DECO104PROT(config, m_ioprot, 0);
2314 m_ioprot->port_a_cb().set_ioport("IN0");
2315 m_ioprot->port_b_cb().set(FUNC(nslasher_state::port_b_tattass));
2316 m_ioprot->port_c_cb().set_ioport("IN1");
2317 m_ioprot->soundlatch_irq_cb().set(FUNC(nslasher_state::tattass_sound_irq_w));
2318 m_ioprot->set_interface_scramble_interleave();
2319
2320 /* sound hardware */
2321 DECOBSMT(config, m_decobsmt, 0);
2322 }
2323
nslasher(machine_config & config)2324 void nslasher_state::nslasher(machine_config &config)
2325 {
2326 /* basic machine hardware */
2327 ARM(config, m_maincpu, XTAL(28'322'000) / 4);
2328 m_maincpu->set_addrmap(AS_PROGRAM, &nslasher_state::nslasher_map);
2329 m_maincpu->set_vblank_int("screen", FUNC(deco32_state::irq0_line_assert));
2330
2331 Z80(config, m_audiocpu, 32220000/9);
2332 m_audiocpu->set_addrmap(AS_PROGRAM, &nslasher_state::z80_sound_map);
2333 m_audiocpu->set_addrmap(AS_IO, &nslasher_state::z80_sound_io);
2334
2335 INPUT_MERGER_ANY_HIGH(config, "sound_irq_merger").output_handler().set_inputline("audiocpu", INPUT_LINE_IRQ0);
2336
2337 config.set_maximum_quantum(attotime::from_hz(6000)); /* to improve main<->audio comms */
2338
2339 EEPROM_93C46_16BIT(config, m_eeprom);
2340
2341 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
2342 m_screen->set_raw(XTAL(28'322'000) / 4, 442, 0, 320, 274, 8, 248);
2343 m_screen->set_screen_update(FUNC(nslasher_state::screen_update_nslasher));
2344
2345 DECO_ACE(config, m_deco_ace, 0);
2346
2347 DECO16IC(config, m_deco_tilegen[0], 0);
2348 m_deco_tilegen[0]->set_pf1_size(DECO_64x32);
2349 m_deco_tilegen[0]->set_pf2_size(DECO_64x32);
2350 m_deco_tilegen[0]->set_pf1_col_bank(0x00);
2351 m_deco_tilegen[0]->set_pf2_col_bank(0x10);
2352 m_deco_tilegen[0]->set_pf1_col_mask(0x0f);
2353 m_deco_tilegen[0]->set_pf2_col_mask(0x0f);
2354 m_deco_tilegen[0]->set_bank1_callback(FUNC(nslasher_state::bank_callback));
2355 m_deco_tilegen[0]->set_bank2_callback(FUNC(nslasher_state::bank_callback));
2356 m_deco_tilegen[0]->set_pf12_8x8_bank(0);
2357 m_deco_tilegen[0]->set_pf12_16x16_bank(1);
2358 m_deco_tilegen[0]->set_gfxdecode_tag(m_gfxdecode);
2359
2360 DECO16IC(config, m_deco_tilegen[1], 0);
2361 m_deco_tilegen[1]->set_pf1_size(DECO_64x32);
2362 m_deco_tilegen[1]->set_pf2_size(DECO_64x32);
2363 m_deco_tilegen[1]->set_pf1_col_bank(0x20);
2364 m_deco_tilegen[1]->set_pf2_col_bank(0x30);
2365 m_deco_tilegen[1]->set_pf1_col_mask(0x0f);
2366 m_deco_tilegen[1]->set_pf2_col_mask(0x0f);
2367 m_deco_tilegen[1]->set_bank1_callback(FUNC(nslasher_state::bank_callback));
2368 m_deco_tilegen[1]->set_bank2_callback(FUNC(nslasher_state::bank_callback));
2369 m_deco_tilegen[1]->set_mix_callback(FUNC(nslasher_state::mix_callback));
2370 m_deco_tilegen[1]->set_pf12_8x8_bank(0);
2371 m_deco_tilegen[1]->set_pf12_16x16_bank(2);
2372 m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode);
2373
2374 DECO_SPRITE(config, m_sprgen[0], 0);
2375 m_sprgen[0]->set_gfx_region(3);
2376 m_sprgen[0]->set_gfxdecode_tag(m_gfxdecode);
2377
2378 DECO_SPRITE(config, m_sprgen[1], 0);
2379 m_sprgen[1]->set_gfx_region(4);
2380 m_sprgen[1]->set_gfxdecode_tag(m_gfxdecode);
2381
2382 GFXDECODE(config, m_gfxdecode, m_deco_ace, gfx_nslasher);
2383
2384 DECO104PROT(config, m_ioprot, 0);
2385 m_ioprot->port_a_cb().set_ioport("IN0");
2386 m_ioprot->port_b_cb().set("eeprom", FUNC(eeprom_serial_93cxx_device::do_read)).lshift(0);
2387 m_ioprot->port_c_cb().set_ioport("IN1");
2388 m_ioprot->soundlatch_irq_cb().set("sound_irq_merger", FUNC(input_merger_any_high_device::in_w<0>));
2389 m_ioprot->set_interface_scramble_interleave();
2390
2391 /* sound hardware */
2392 SPEAKER(config, "lspeaker").front_left();
2393 SPEAKER(config, "rspeaker").front_right();
2394
2395 YM2151(config, m_ym2151, 32220000/9);
2396 m_ym2151->irq_handler().set("sound_irq_merger", FUNC(input_merger_any_high_device::in_w<1>));
2397 m_ym2151->port_write_handler().set(FUNC(deco32_state::sound_bankswitch_w));
2398 m_ym2151->add_route(0, "lspeaker", 0.40);
2399 m_ym2151->add_route(1, "rspeaker", 0.40);
2400
2401 OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH);
2402 m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
2403 m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
2404
2405 OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH);
2406 m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.10);
2407 m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.10);
2408 }
2409
2410 // the US release uses a H6280 instead of a Z80, much like Lock 'n' Loaded
nslasheru(machine_config & config)2411 void nslasher_state::nslasheru(machine_config &config)
2412 {
2413 nslasher(config);
2414 config.device_remove("audiocpu");
2415
2416 h6280_device &audiocpu(H6280(config, m_audiocpu, 32220000/8));
2417 audiocpu.set_addrmap(AS_PROGRAM, &nslasher_state::h6280_sound_map);
2418 audiocpu.add_route(ALL_OUTPUTS, "lspeaker", 0); // internal sound unused
2419 audiocpu.add_route(ALL_OUTPUTS, "rspeaker", 0);
2420
2421 config.device_remove("sound_irq_merger");
2422
2423 m_ym2151->irq_handler().set_inputline(m_audiocpu, 1);
2424
2425 m_ioprot->soundlatch_irq_cb().set_inputline("audiocpu", 0);
2426 }
2427
2428
2429 //**************************************************************************
2430 // ROM DEFINITIONS
2431 //**************************************************************************
2432
2433 // used for 5bpp gfxs
2434 #define ROM_LOAD40_BYTE(name,offset,length,hash) ROMX_LOAD(name, offset, length, hash, ROM_SKIP(4))
2435 #define ROM_LOAD40_WORD(name,offset,length,hash) ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_SKIP(3))
2436 #define ROM_LOAD40_WORD_SWAP(name,offset,length,hash) ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(3))
2437
2438 ROM_START( captaven ) /* DE-0351-x PCB (x=3 or 4) */
2439 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
2440 ROM_LOAD32_BYTE( "hn_00-4.1e", 0x000000, 0x20000, CRC(147fb094) SHA1(6bd759c42f4b7f9e1c3f2d3ece0b3ec72de1a982) )
2441 ROM_LOAD32_BYTE( "hn_01-4.1h", 0x000001, 0x20000, CRC(11ecdb95) SHA1(832b56f05ae7e15e67fbdd321da8c1cc5e7629a0) )
2442 ROM_LOAD32_BYTE( "hn_02-4.1k", 0x000002, 0x20000, CRC(35d2681f) SHA1(3af7d959dc4842238a7f79926adf449cb7f0b2e9) )
2443 ROM_LOAD32_BYTE( "hn_03-4.1m", 0x000003, 0x20000, CRC(3b59ba05) SHA1(400e868e59977e56a4fa1870321c643983ba4162) )
2444 ROM_LOAD32_BYTE( "man-12.3e", 0x080000, 0x20000, CRC(d6261e98) SHA1(f3707be37ca926d9a341b9253a6bb2f3de0e25f6) )
2445 ROM_LOAD32_BYTE( "man-13.3h", 0x080001, 0x20000, CRC(40f0764d) SHA1(a6715c4a2accacf96f41c885579f314367c70dde) )
2446 ROM_LOAD32_BYTE( "man-14.3k", 0x080002, 0x20000, CRC(7cb9a4bd) SHA1(0af1a7bf0fcfa3cc14b38d92f19e97ad6e5541dd) )
2447 ROM_LOAD32_BYTE( "man-15.3m", 0x080003, 0x20000, CRC(c7854fe8) SHA1(ffa87dcda44fa0111de6ab317b77dd2bde015890) )
2448
2449 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
2450 ROM_LOAD( "hj_08.17k", 0x00000, 0x10000, CRC(361fbd16) SHA1(c4bbaf74e09c263044be74bb2c98caf6cfcab618) )
2451
2452 ROM_REGION( 0x80000, "gfx1", 0 )
2453 ROM_LOAD( "man-00.8a", 0x000000, 0x80000, CRC(7855a607) SHA1(fa0be080515482281e5a12fe172eeb9a21af0820) ) /* Encrypted tiles */
2454
2455 ROM_REGION( 0x500000, "gfx2", 0 )
2456 ROM_LOAD( "man-05.16a", 0x000000, 0x40000, CRC(d44d1995) SHA1(e88e1a59a4b24ad058f21538f6e9bbba94a166b4) ) /* Encrypted tiles */
2457 ROM_CONTINUE( 0x140000, 0x40000 )
2458 ROM_CONTINUE( 0x280000, 0x40000 )
2459 ROM_CONTINUE( 0x3c0000, 0x40000 )
2460 ROM_LOAD( "man-04.14a", 0x040000, 0x40000, CRC(541492a1) SHA1(2e0ab12555fc46001a815e76e3a0cd21f385f82a) ) /* Encrypted tiles */
2461 ROM_CONTINUE( 0x180000, 0x40000 )
2462 ROM_CONTINUE( 0x2c0000, 0x40000 )
2463 ROM_CONTINUE( 0x400000, 0x40000 )
2464 ROM_LOAD( "man-03.12a", 0x080000, 0x40000, CRC(2d9c52b2) SHA1(8f6f4fe4f1a63099f889068991b34f9432b04fd7) ) /* Encrypted tiles */
2465 ROM_CONTINUE( 0x1c0000, 0x40000 )
2466 ROM_CONTINUE( 0x300000, 0x40000 )
2467 ROM_CONTINUE( 0x440000, 0x40000 )
2468 ROM_LOAD( "man-02.11a", 0x0c0000, 0x40000, CRC(07674c05) SHA1(08b33721d7eba4a1ff2e282f77eeb56535a52923) ) /* Encrypted tiles */
2469 ROM_CONTINUE( 0x200000, 0x40000 )
2470 ROM_CONTINUE( 0x340000, 0x40000 )
2471 ROM_CONTINUE( 0x480000, 0x40000 )
2472 ROM_LOAD( "man-01.10a", 0x100000, 0x40000, CRC(ae714ada) SHA1(b4d5806265d422c8b837489afe93731f584e4adf) ) /* Encrypted tiles */
2473 ROM_CONTINUE( 0x240000, 0x40000 )
2474 ROM_CONTINUE( 0x380000, 0x40000 )
2475 ROM_CONTINUE( 0x4c0000, 0x40000 )
2476
2477 ROM_REGION( 0x400000, "gfx3", 0 ) /* Sprites */
2478 ROM_LOAD( "man-06.17a", 0x200000, 0x100000, CRC(a9a64297) SHA1(e4cb441207b1907461c90c32c05a461c9bd30756) )
2479 ROM_LOAD( "man-07.18a", 0x000000, 0x100000, CRC(b1db200c) SHA1(970bb15e90194dd285f53594aca5dec3405e75d5) )
2480 ROM_LOAD( "man-08.17c", 0x300000, 0x100000, CRC(28e98e66) SHA1(55dbbd945eada81f7dcc874fdcb0b9e62ea453f0) )
2481 ROM_LOAD( "man-09.21c", 0x100000, 0x100000, CRC(1921245d) SHA1(88d3b69a38c18c83d5658d057b95974f1bd371e6) )
2482
2483 ROM_REGION(0x80000, "oki2", 0 )
2484 ROM_LOAD( "man-10.14k", 0x000000, 0x80000, CRC(0132c578) SHA1(70952f39508360bab51e1151531536f0ea6bbe06) )
2485
2486 ROM_REGION(0x80000, "oki1", 0 )
2487 ROM_LOAD( "man-11.16k", 0x000000, 0x80000, CRC(0dc60a4c) SHA1(4d0daa6a0272852a37f341a0cdc48baee0ad9dd8) )
2488
2489 ROM_REGION( 0x0600, "plds", 0 )
2490 ROM_LOAD( "ts-00.4h", 0x0000, 0x0117, CRC(ebc2908e) SHA1(dca14a55abd1d88ee09092d4122614e55c3e7f53) )
2491 ROM_LOAD( "ts-01.5h", 0x0200, 0x0117, CRC(c776a980) SHA1(cd4bdcfb755f561fefa4c88fab5d6d2397332aa7) )
2492 ROM_LOAD( "ts-02.12l", 0x0400, 0x01bf, CRC(6f26528c) SHA1(2cf869b2a789a9b0646162a61c147bcbb13c9141) )
2493 ROM_END
2494
2495 ROM_START( captavena ) /* DE-0351-x PCB (x=3 or 4) */
2496 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
2497 ROM_LOAD32_BYTE( "hn_00.e1", 0x000000, 0x20000, CRC(12dd0c71) SHA1(77bd0e5f1b105ec70de5e76cb9c8138f02a496be) )
2498 ROM_LOAD32_BYTE( "hn_01.h1", 0x000001, 0x20000, CRC(ac5ea492) SHA1(e08fa2b3e3a40cba6dcdf07049d67056d59ed72a) )
2499 ROM_LOAD32_BYTE( "hn_02.k1", 0x000002, 0x20000, CRC(0c5e13f6) SHA1(d9ebf503db7da8663f45fe307e432545651cfc13) )
2500 ROM_LOAD32_BYTE( "hn_03.l1", 0x000003, 0x20000, CRC(bc050740) SHA1(bee425e76734251444c9cfa9287e1eb9383625bc) )
2501 ROM_LOAD32_BYTE( "man-12.3e", 0x080000, 0x20000, CRC(d6261e98) SHA1(f3707be37ca926d9a341b9253a6bb2f3de0e25f6) )
2502 ROM_LOAD32_BYTE( "man-13.3h", 0x080001, 0x20000, CRC(40f0764d) SHA1(a6715c4a2accacf96f41c885579f314367c70dde) )
2503 ROM_LOAD32_BYTE( "man-14.3k", 0x080002, 0x20000, CRC(7cb9a4bd) SHA1(0af1a7bf0fcfa3cc14b38d92f19e97ad6e5541dd) )
2504 ROM_LOAD32_BYTE( "man-15.3m", 0x080003, 0x20000, CRC(c7854fe8) SHA1(ffa87dcda44fa0111de6ab317b77dd2bde015890) )
2505
2506 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
2507 ROM_LOAD( "hj_08.17k", 0x00000, 0x10000, CRC(361fbd16) SHA1(c4bbaf74e09c263044be74bb2c98caf6cfcab618) )
2508
2509 ROM_REGION( 0x80000, "gfx1", 0 )
2510 ROM_LOAD( "man-00.8a", 0x000000, 0x80000, CRC(7855a607) SHA1(fa0be080515482281e5a12fe172eeb9a21af0820) ) /* Encrypted tiles */
2511
2512 ROM_REGION( 0x500000, "gfx2", 0 )
2513 ROM_LOAD( "man-05.16a", 0x000000, 0x40000, CRC(d44d1995) SHA1(e88e1a59a4b24ad058f21538f6e9bbba94a166b4) ) /* Encrypted tiles */
2514 ROM_CONTINUE( 0x140000, 0x40000 )
2515 ROM_CONTINUE( 0x280000, 0x40000 )
2516 ROM_CONTINUE( 0x3c0000, 0x40000 )
2517 ROM_LOAD( "man-04.14a", 0x040000, 0x40000, CRC(541492a1) SHA1(2e0ab12555fc46001a815e76e3a0cd21f385f82a) ) /* Encrypted tiles */
2518 ROM_CONTINUE( 0x180000, 0x40000 )
2519 ROM_CONTINUE( 0x2c0000, 0x40000 )
2520 ROM_CONTINUE( 0x400000, 0x40000 )
2521 ROM_LOAD( "man-03.12a", 0x080000, 0x40000, CRC(2d9c52b2) SHA1(8f6f4fe4f1a63099f889068991b34f9432b04fd7) ) /* Encrypted tiles */
2522 ROM_CONTINUE( 0x1c0000, 0x40000 )
2523 ROM_CONTINUE( 0x300000, 0x40000 )
2524 ROM_CONTINUE( 0x440000, 0x40000 )
2525 ROM_LOAD( "man-02.11a", 0x0c0000, 0x40000, CRC(07674c05) SHA1(08b33721d7eba4a1ff2e282f77eeb56535a52923) ) /* Encrypted tiles */
2526 ROM_CONTINUE( 0x200000, 0x40000 )
2527 ROM_CONTINUE( 0x340000, 0x40000 )
2528 ROM_CONTINUE( 0x480000, 0x40000 )
2529 ROM_LOAD( "man-01.10a", 0x100000, 0x40000, CRC(ae714ada) SHA1(b4d5806265d422c8b837489afe93731f584e4adf) ) /* Encrypted tiles */
2530 ROM_CONTINUE( 0x240000, 0x40000 )
2531 ROM_CONTINUE( 0x380000, 0x40000 )
2532 ROM_CONTINUE( 0x4c0000, 0x40000 )
2533
2534 ROM_REGION( 0x400000, "gfx3", 0 ) /* Sprites */
2535 ROM_LOAD( "man-06.17a", 0x200000, 0x100000, CRC(a9a64297) SHA1(e4cb441207b1907461c90c32c05a461c9bd30756) )
2536 ROM_LOAD( "man-07.18a", 0x000000, 0x100000, CRC(b1db200c) SHA1(970bb15e90194dd285f53594aca5dec3405e75d5) )
2537 ROM_LOAD( "man-08.17c", 0x300000, 0x100000, CRC(28e98e66) SHA1(55dbbd945eada81f7dcc874fdcb0b9e62ea453f0) )
2538 ROM_LOAD( "man-09.21c", 0x100000, 0x100000, CRC(1921245d) SHA1(88d3b69a38c18c83d5658d057b95974f1bd371e6) )
2539
2540 ROM_REGION(0x80000, "oki2", 0 )
2541 ROM_LOAD( "man-10.14k", 0x000000, 0x80000, CRC(0132c578) SHA1(70952f39508360bab51e1151531536f0ea6bbe06) )
2542
2543 ROM_REGION(0x80000, "oki1", 0 )
2544 ROM_LOAD( "man-11.16k", 0x000000, 0x80000, CRC(0dc60a4c) SHA1(4d0daa6a0272852a37f341a0cdc48baee0ad9dd8) )
2545
2546 ROM_REGION( 0x0600, "plds", 0 )
2547 ROM_LOAD( "ts-00.4h", 0x0000, 0x0117, CRC(ebc2908e) SHA1(dca14a55abd1d88ee09092d4122614e55c3e7f53) )
2548 ROM_LOAD( "ts-01.5h", 0x0200, 0x0117, CRC(c776a980) SHA1(cd4bdcfb755f561fefa4c88fab5d6d2397332aa7) )
2549 ROM_LOAD( "ts-02.12l", 0x0400, 0x01bf, CRC(6f26528c) SHA1(2cf869b2a789a9b0646162a61c147bcbb13c9141) )
2550 ROM_END
2551
2552 ROM_START( captavene ) /* DE-0351-x PCB (x=3 or 4) */
2553 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
2554 ROM_LOAD32_BYTE( "hg_00-4.1e", 0x000000, 0x20000, CRC(7008d43c) SHA1(a39143e13075ebc58ecc576391f04d2649675dfb) )
2555 ROM_LOAD32_BYTE( "hg_01-4.1h", 0x000001, 0x20000, CRC(53dc1042) SHA1(4547ad20e5bc3b9cedae53f73f1628fa3493aafa) )
2556 ROM_LOAD32_BYTE( "hg_02-4.1k", 0x000002, 0x20000, CRC(9e3f9ee2) SHA1(a56a68bdac58a337be48b346b6939c3f68da8e9d) )
2557 ROM_LOAD32_BYTE( "hg_03-4.1m", 0x000003, 0x20000, CRC(bc050740) SHA1(bee425e76734251444c9cfa9287e1eb9383625bc) )
2558 ROM_LOAD32_BYTE( "man-12.3e", 0x080000, 0x20000, CRC(d6261e98) SHA1(f3707be37ca926d9a341b9253a6bb2f3de0e25f6) )
2559 ROM_LOAD32_BYTE( "man-13.3h", 0x080001, 0x20000, CRC(40f0764d) SHA1(a6715c4a2accacf96f41c885579f314367c70dde) )
2560 ROM_LOAD32_BYTE( "man-14.3k", 0x080002, 0x20000, CRC(7cb9a4bd) SHA1(0af1a7bf0fcfa3cc14b38d92f19e97ad6e5541dd) )
2561 ROM_LOAD32_BYTE( "man-15.3m", 0x080003, 0x20000, CRC(c7854fe8) SHA1(ffa87dcda44fa0111de6ab317b77dd2bde015890) )
2562
2563 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
2564 ROM_LOAD( "hj_08.17k", 0x00000, 0x10000, CRC(361fbd16) SHA1(c4bbaf74e09c263044be74bb2c98caf6cfcab618) )
2565
2566 ROM_REGION( 0x80000, "gfx1", 0 )
2567 ROM_LOAD( "man-00.8a", 0x000000, 0x80000, CRC(7855a607) SHA1(fa0be080515482281e5a12fe172eeb9a21af0820) ) /* Encrypted tiles */
2568
2569 ROM_REGION( 0x500000, "gfx2", 0 )
2570 ROM_LOAD( "man-05.16a", 0x000000, 0x40000, CRC(d44d1995) SHA1(e88e1a59a4b24ad058f21538f6e9bbba94a166b4) ) /* Encrypted tiles */
2571 ROM_CONTINUE( 0x140000, 0x40000 )
2572 ROM_CONTINUE( 0x280000, 0x40000 )
2573 ROM_CONTINUE( 0x3c0000, 0x40000 )
2574 ROM_LOAD( "man-04.14a", 0x040000, 0x40000, CRC(541492a1) SHA1(2e0ab12555fc46001a815e76e3a0cd21f385f82a) ) /* Encrypted tiles */
2575 ROM_CONTINUE( 0x180000, 0x40000 )
2576 ROM_CONTINUE( 0x2c0000, 0x40000 )
2577 ROM_CONTINUE( 0x400000, 0x40000 )
2578 ROM_LOAD( "man-03.12a", 0x080000, 0x40000, CRC(2d9c52b2) SHA1(8f6f4fe4f1a63099f889068991b34f9432b04fd7) ) /* Encrypted tiles */
2579 ROM_CONTINUE( 0x1c0000, 0x40000 )
2580 ROM_CONTINUE( 0x300000, 0x40000 )
2581 ROM_CONTINUE( 0x440000, 0x40000 )
2582 ROM_LOAD( "man-02.11a", 0x0c0000, 0x40000, CRC(07674c05) SHA1(08b33721d7eba4a1ff2e282f77eeb56535a52923) ) /* Encrypted tiles */
2583 ROM_CONTINUE( 0x200000, 0x40000 )
2584 ROM_CONTINUE( 0x340000, 0x40000 )
2585 ROM_CONTINUE( 0x480000, 0x40000 )
2586 ROM_LOAD( "man-01.10a", 0x100000, 0x40000, CRC(ae714ada) SHA1(b4d5806265d422c8b837489afe93731f584e4adf) ) /* Encrypted tiles */
2587 ROM_CONTINUE( 0x240000, 0x40000 )
2588 ROM_CONTINUE( 0x380000, 0x40000 )
2589 ROM_CONTINUE( 0x4c0000, 0x40000 )
2590
2591 ROM_REGION( 0x400000, "gfx3", 0 ) /* Sprites */
2592 ROM_LOAD( "man-06.17a", 0x200000, 0x100000, CRC(a9a64297) SHA1(e4cb441207b1907461c90c32c05a461c9bd30756) )
2593 ROM_LOAD( "man-07.18a", 0x000000, 0x100000, CRC(b1db200c) SHA1(970bb15e90194dd285f53594aca5dec3405e75d5) )
2594 ROM_LOAD( "man-08.17c", 0x300000, 0x100000, CRC(28e98e66) SHA1(55dbbd945eada81f7dcc874fdcb0b9e62ea453f0) )
2595 ROM_LOAD( "man-09.21c", 0x100000, 0x100000, CRC(1921245d) SHA1(88d3b69a38c18c83d5658d057b95974f1bd371e6) )
2596
2597 ROM_REGION(0x80000, "oki2", 0 )
2598 ROM_LOAD( "man-10.14k", 0x000000, 0x80000, CRC(0132c578) SHA1(70952f39508360bab51e1151531536f0ea6bbe06) )
2599
2600 ROM_REGION(0x80000, "oki1", 0 )
2601 ROM_LOAD( "man-11.16k", 0x000000, 0x80000, CRC(0dc60a4c) SHA1(4d0daa6a0272852a37f341a0cdc48baee0ad9dd8) )
2602
2603 ROM_REGION( 0x0800, "plds", 0 )
2604 ROM_LOAD( "ts-00.4h", 0x0000, 0x0117, CRC(ebc2908e) SHA1(dca14a55abd1d88ee09092d4122614e55c3e7f53) )
2605 ROM_LOAD( "ts-01.5h", 0x0200, 0x0117, CRC(c776a980) SHA1(cd4bdcfb755f561fefa4c88fab5d6d2397332aa7) )
2606 ROM_LOAD( "ts-02.12l", 0x0400, 0x01bf, CRC(6f26528c) SHA1(2cf869b2a789a9b0646162a61c147bcbb13c9141) )
2607 ROM_LOAD( "pal16r8b.14c", 0x0600, 0x0104, NO_DUMP ) /* PAL is read protected */
2608 ROM_END
2609
2610 ROM_START( captavenu ) /* DE-0351-x PCB (x=3 or 4) */
2611 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
2612 ROM_LOAD32_BYTE( "hh_00-19.1e", 0x000000, 0x20000, CRC(08b870e0) SHA1(44c837e3c5dfc9764d89b0ebb3e9b7a40fe4d76f) )
2613 ROM_LOAD32_BYTE( "hh_01-19.1h", 0x000001, 0x20000, CRC(0dc0feca) SHA1(cb1c97aac59dabcf6c37bc1562cf2f62bca951f1) )
2614 ROM_LOAD32_BYTE( "hh_02-19.1k", 0x000002, 0x20000, CRC(26ef94c0) SHA1(985fae62a6a7ca7e1e64dba2db053b08206c65e7) )
2615 ROM_LOAD32_BYTE( "hn_03-4.1m", 0x000003, 0x20000, CRC(3b59ba05) SHA1(400e868e59977e56a4fa1870321c643983ba4162) )
2616 ROM_LOAD32_BYTE( "man-12.3e", 0x080000, 0x20000, CRC(d6261e98) SHA1(f3707be37ca926d9a341b9253a6bb2f3de0e25f6) )
2617 ROM_LOAD32_BYTE( "man-13.3h", 0x080001, 0x20000, CRC(40f0764d) SHA1(a6715c4a2accacf96f41c885579f314367c70dde) )
2618 ROM_LOAD32_BYTE( "man-14.3k", 0x080002, 0x20000, CRC(7cb9a4bd) SHA1(0af1a7bf0fcfa3cc14b38d92f19e97ad6e5541dd) )
2619 ROM_LOAD32_BYTE( "man-15.3m", 0x080003, 0x20000, CRC(c7854fe8) SHA1(ffa87dcda44fa0111de6ab317b77dd2bde015890) )
2620
2621 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
2622 ROM_LOAD( "hj_08.17k", 0x00000, 0x10000, CRC(361fbd16) SHA1(c4bbaf74e09c263044be74bb2c98caf6cfcab618) )
2623
2624 ROM_REGION( 0x80000, "gfx1", 0 )
2625 ROM_LOAD( "man-00.8a", 0x000000, 0x80000, CRC(7855a607) SHA1(fa0be080515482281e5a12fe172eeb9a21af0820) ) /* Encrypted tiles */
2626
2627 ROM_REGION( 0x500000, "gfx2", 0 )
2628 ROM_LOAD( "man-05.16a", 0x000000, 0x40000, CRC(d44d1995) SHA1(e88e1a59a4b24ad058f21538f6e9bbba94a166b4) ) /* Encrypted tiles */
2629 ROM_CONTINUE( 0x140000, 0x40000 )
2630 ROM_CONTINUE( 0x280000, 0x40000 )
2631 ROM_CONTINUE( 0x3c0000, 0x40000 )
2632 ROM_LOAD( "man-04.14a", 0x040000, 0x40000, CRC(541492a1) SHA1(2e0ab12555fc46001a815e76e3a0cd21f385f82a) ) /* Encrypted tiles */
2633 ROM_CONTINUE( 0x180000, 0x40000 )
2634 ROM_CONTINUE( 0x2c0000, 0x40000 )
2635 ROM_CONTINUE( 0x400000, 0x40000 )
2636 ROM_LOAD( "man-03.12a", 0x080000, 0x40000, CRC(2d9c52b2) SHA1(8f6f4fe4f1a63099f889068991b34f9432b04fd7) ) /* Encrypted tiles */
2637 ROM_CONTINUE( 0x1c0000, 0x40000 )
2638 ROM_CONTINUE( 0x300000, 0x40000 )
2639 ROM_CONTINUE( 0x440000, 0x40000 )
2640 ROM_LOAD( "man-02.11a", 0x0c0000, 0x40000, CRC(07674c05) SHA1(08b33721d7eba4a1ff2e282f77eeb56535a52923) ) /* Encrypted tiles */
2641 ROM_CONTINUE( 0x200000, 0x40000 )
2642 ROM_CONTINUE( 0x340000, 0x40000 )
2643 ROM_CONTINUE( 0x480000, 0x40000 )
2644 ROM_LOAD( "man-01.10a", 0x100000, 0x40000, CRC(ae714ada) SHA1(b4d5806265d422c8b837489afe93731f584e4adf) ) /* Encrypted tiles */
2645 ROM_CONTINUE( 0x240000, 0x40000 )
2646 ROM_CONTINUE( 0x380000, 0x40000 )
2647 ROM_CONTINUE( 0x4c0000, 0x40000 )
2648
2649 ROM_REGION( 0x400000, "gfx3", 0 ) /* Sprites */
2650 ROM_LOAD( "man-06.17a", 0x200000, 0x100000, CRC(a9a64297) SHA1(e4cb441207b1907461c90c32c05a461c9bd30756) )
2651 ROM_LOAD( "man-07.18a", 0x000000, 0x100000, CRC(b1db200c) SHA1(970bb15e90194dd285f53594aca5dec3405e75d5) )
2652 ROM_LOAD( "man-08.17c", 0x300000, 0x100000, CRC(28e98e66) SHA1(55dbbd945eada81f7dcc874fdcb0b9e62ea453f0) )
2653 ROM_LOAD( "man-09.21c", 0x100000, 0x100000, CRC(1921245d) SHA1(88d3b69a38c18c83d5658d057b95974f1bd371e6) )
2654
2655 ROM_REGION(0x80000, "oki2", 0 )
2656 ROM_LOAD( "man-10.14k", 0x000000, 0x80000, CRC(0132c578) SHA1(70952f39508360bab51e1151531536f0ea6bbe06) )
2657
2658 ROM_REGION(0x80000, "oki1", 0 )
2659 ROM_LOAD( "man-11.16k", 0x000000, 0x80000, CRC(0dc60a4c) SHA1(4d0daa6a0272852a37f341a0cdc48baee0ad9dd8) )
2660
2661 ROM_REGION( 0x0600, "plds", 0 )
2662 ROM_LOAD( "ts-00.4h", 0x0000, 0x0117, CRC(ebc2908e) SHA1(dca14a55abd1d88ee09092d4122614e55c3e7f53) )
2663 ROM_LOAD( "ts-01.5h", 0x0200, 0x0117, CRC(c776a980) SHA1(cd4bdcfb755f561fefa4c88fab5d6d2397332aa7) )
2664 ROM_LOAD( "ts-02.12l", 0x0400, 0x01bf, CRC(6f26528c) SHA1(2cf869b2a789a9b0646162a61c147bcbb13c9141) )
2665 ROM_END
2666
2667 ROM_START( captavenuu ) /* DE-0351-x PCB (x=3 or 4) */
2668 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
2669 ROM_LOAD32_BYTE( "hh-00.1e", 0x000000, 0x20000, CRC(c34da654) SHA1(a1988a6a45991db6dee10b484049f6703b4671c9) )
2670 ROM_LOAD32_BYTE( "hh-01.1h", 0x000001, 0x20000, CRC(55abe63f) SHA1(98772eff3ebb5a4f243c7a77d398eb142d1505cb) )
2671 ROM_LOAD32_BYTE( "hh-02.1k", 0x000002, 0x20000, CRC(6096a9fb) SHA1(aa81189b9c185dc5d59f888afcb17a1e4935c241) )
2672 ROM_LOAD32_BYTE( "hh-03.1m", 0x000003, 0x20000, CRC(93631ded) SHA1(b4c8a6cbf586f895e637c0ed38f0842327624423) )
2673 ROM_LOAD32_BYTE( "man-12.3e", 0x080000, 0x20000, CRC(d6261e98) SHA1(f3707be37ca926d9a341b9253a6bb2f3de0e25f6) )
2674 ROM_LOAD32_BYTE( "man-13.3h", 0x080001, 0x20000, CRC(40f0764d) SHA1(a6715c4a2accacf96f41c885579f314367c70dde) )
2675 ROM_LOAD32_BYTE( "man-14.3k", 0x080002, 0x20000, CRC(7cb9a4bd) SHA1(0af1a7bf0fcfa3cc14b38d92f19e97ad6e5541dd) )
2676 ROM_LOAD32_BYTE( "man-15.3m", 0x080003, 0x20000, CRC(c7854fe8) SHA1(ffa87dcda44fa0111de6ab317b77dd2bde015890) )
2677
2678 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
2679 ROM_LOAD( "hj_08.17k", 0x00000, 0x10000, CRC(361fbd16) SHA1(c4bbaf74e09c263044be74bb2c98caf6cfcab618) )
2680
2681 ROM_REGION( 0x80000, "gfx1", 0 )
2682 ROM_LOAD( "man-00.8a", 0x000000, 0x80000, CRC(7855a607) SHA1(fa0be080515482281e5a12fe172eeb9a21af0820) ) /* Encrypted tiles */
2683
2684 ROM_REGION( 0x500000, "gfx2", 0 )
2685 ROM_LOAD( "man-05.16a", 0x000000, 0x40000, CRC(d44d1995) SHA1(e88e1a59a4b24ad058f21538f6e9bbba94a166b4) ) /* Encrypted tiles */
2686 ROM_CONTINUE( 0x140000, 0x40000 )
2687 ROM_CONTINUE( 0x280000, 0x40000 )
2688 ROM_CONTINUE( 0x3c0000, 0x40000 )
2689 ROM_LOAD( "man-04.14a", 0x040000, 0x40000, CRC(541492a1) SHA1(2e0ab12555fc46001a815e76e3a0cd21f385f82a) ) /* Encrypted tiles */
2690 ROM_CONTINUE( 0x180000, 0x40000 )
2691 ROM_CONTINUE( 0x2c0000, 0x40000 )
2692 ROM_CONTINUE( 0x400000, 0x40000 )
2693 ROM_LOAD( "man-03.12a", 0x080000, 0x40000, CRC(2d9c52b2) SHA1(8f6f4fe4f1a63099f889068991b34f9432b04fd7) ) /* Encrypted tiles */
2694 ROM_CONTINUE( 0x1c0000, 0x40000 )
2695 ROM_CONTINUE( 0x300000, 0x40000 )
2696 ROM_CONTINUE( 0x440000, 0x40000 )
2697 ROM_LOAD( "man-02.11a", 0x0c0000, 0x40000, CRC(07674c05) SHA1(08b33721d7eba4a1ff2e282f77eeb56535a52923) ) /* Encrypted tiles */
2698 ROM_CONTINUE( 0x200000, 0x40000 )
2699 ROM_CONTINUE( 0x340000, 0x40000 )
2700 ROM_CONTINUE( 0x480000, 0x40000 )
2701 ROM_LOAD( "man-01.10a", 0x100000, 0x40000, CRC(ae714ada) SHA1(b4d5806265d422c8b837489afe93731f584e4adf) ) /* Encrypted tiles */
2702 ROM_CONTINUE( 0x240000, 0x40000 )
2703 ROM_CONTINUE( 0x380000, 0x40000 )
2704 ROM_CONTINUE( 0x4c0000, 0x40000 )
2705
2706 ROM_REGION( 0x400000, "gfx3", 0 ) /* Sprites */
2707 ROM_LOAD( "man-06.17a", 0x200000, 0x100000, CRC(a9a64297) SHA1(e4cb441207b1907461c90c32c05a461c9bd30756) )
2708 ROM_LOAD( "man-07.18a", 0x000000, 0x100000, CRC(b1db200c) SHA1(970bb15e90194dd285f53594aca5dec3405e75d5) )
2709 ROM_LOAD( "man-08.17c", 0x300000, 0x100000, CRC(28e98e66) SHA1(55dbbd945eada81f7dcc874fdcb0b9e62ea453f0) )
2710 ROM_LOAD( "man-09.21c", 0x100000, 0x100000, CRC(1921245d) SHA1(88d3b69a38c18c83d5658d057b95974f1bd371e6) )
2711
2712 ROM_REGION(0x80000, "oki2", 0 )
2713 ROM_LOAD( "man-10.14k", 0x000000, 0x80000, CRC(0132c578) SHA1(70952f39508360bab51e1151531536f0ea6bbe06) )
2714
2715 ROM_REGION(0x80000, "oki1", 0 )
2716 ROM_LOAD( "man-11.16k", 0x000000, 0x80000, CRC(0dc60a4c) SHA1(4d0daa6a0272852a37f341a0cdc48baee0ad9dd8) )
2717
2718 ROM_REGION( 0x0600, "plds", 0 )
2719 ROM_LOAD( "ts-00.4h", 0x0000, 0x0117, CRC(ebc2908e) SHA1(dca14a55abd1d88ee09092d4122614e55c3e7f53) )
2720 ROM_LOAD( "ts-01.5h", 0x0200, 0x0117, CRC(c776a980) SHA1(cd4bdcfb755f561fefa4c88fab5d6d2397332aa7) )
2721 ROM_LOAD( "ts-02.12l", 0x0400, 0x01bf, CRC(6f26528c) SHA1(2cf869b2a789a9b0646162a61c147bcbb13c9141) )
2722 ROM_END
2723
2724 ROM_START( captavenua ) /* DE-0351-x PCB (x=3 or 4) */
2725 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
2726 ROM_LOAD32_BYTE( "hh_00-4.2e", 0x000000, 0x20000, CRC(0e1acc05) SHA1(7eb6206efad233f9f4ee51102f9fe6b58f0719ea) )
2727 ROM_LOAD32_BYTE( "hh_01-4.2h", 0x000001, 0x20000, CRC(4ff0351d) SHA1(15fc2662ff0d32986c4d4d074b985ad853da34e1) )
2728 ROM_LOAD32_BYTE( "hh_02-4.2k", 0x000002, 0x20000, CRC(e84c0665) SHA1(d846f04315af49abeca00314b3d23e1d8c638dcd) )
2729 ROM_LOAD32_BYTE( "hh_03-4.2m", 0x000003, 0x20000, CRC(bc050740) SHA1(bee425e76734251444c9cfa9287e1eb9383625bc) )
2730 ROM_LOAD32_BYTE( "man-12.3e", 0x080000, 0x20000, CRC(d6261e98) SHA1(f3707be37ca926d9a341b9253a6bb2f3de0e25f6) )
2731 ROM_LOAD32_BYTE( "man-13.3h", 0x080001, 0x20000, CRC(40f0764d) SHA1(a6715c4a2accacf96f41c885579f314367c70dde) )
2732 ROM_LOAD32_BYTE( "man-14.3k", 0x080002, 0x20000, CRC(7cb9a4bd) SHA1(0af1a7bf0fcfa3cc14b38d92f19e97ad6e5541dd) )
2733 ROM_LOAD32_BYTE( "man-15.3m", 0x080003, 0x20000, CRC(c7854fe8) SHA1(ffa87dcda44fa0111de6ab317b77dd2bde015890) )
2734
2735 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
2736 ROM_LOAD( "hj_08.17k", 0x00000, 0x10000, CRC(361fbd16) SHA1(c4bbaf74e09c263044be74bb2c98caf6cfcab618) )
2737
2738 ROM_REGION( 0x80000, "gfx1", 0 )
2739 ROM_LOAD( "man-00.8a", 0x000000, 0x80000, CRC(7855a607) SHA1(fa0be080515482281e5a12fe172eeb9a21af0820) ) /* Encrypted tiles */
2740
2741 ROM_REGION( 0x500000, "gfx2", 0 )
2742 ROM_LOAD( "man-05.16a", 0x000000, 0x40000, CRC(d44d1995) SHA1(e88e1a59a4b24ad058f21538f6e9bbba94a166b4) ) /* Encrypted tiles */
2743 ROM_CONTINUE( 0x140000, 0x40000 )
2744 ROM_CONTINUE( 0x280000, 0x40000 )
2745 ROM_CONTINUE( 0x3c0000, 0x40000 )
2746 ROM_LOAD( "man-04.14a", 0x040000, 0x40000, CRC(541492a1) SHA1(2e0ab12555fc46001a815e76e3a0cd21f385f82a) ) /* Encrypted tiles */
2747 ROM_CONTINUE( 0x180000, 0x40000 )
2748 ROM_CONTINUE( 0x2c0000, 0x40000 )
2749 ROM_CONTINUE( 0x400000, 0x40000 )
2750 ROM_LOAD( "man-03.12a", 0x080000, 0x40000, CRC(2d9c52b2) SHA1(8f6f4fe4f1a63099f889068991b34f9432b04fd7) ) /* Encrypted tiles */
2751 ROM_CONTINUE( 0x1c0000, 0x40000 )
2752 ROM_CONTINUE( 0x300000, 0x40000 )
2753 ROM_CONTINUE( 0x440000, 0x40000 )
2754 ROM_LOAD( "man-02.11a", 0x0c0000, 0x40000, CRC(07674c05) SHA1(08b33721d7eba4a1ff2e282f77eeb56535a52923) ) /* Encrypted tiles */
2755 ROM_CONTINUE( 0x200000, 0x40000 )
2756 ROM_CONTINUE( 0x340000, 0x40000 )
2757 ROM_CONTINUE( 0x480000, 0x40000 )
2758 ROM_LOAD( "man-01.10a", 0x100000, 0x40000, CRC(ae714ada) SHA1(b4d5806265d422c8b837489afe93731f584e4adf) ) /* Encrypted tiles */
2759 ROM_CONTINUE( 0x240000, 0x40000 )
2760 ROM_CONTINUE( 0x380000, 0x40000 )
2761 ROM_CONTINUE( 0x4c0000, 0x40000 )
2762
2763 ROM_REGION( 0x400000, "gfx3", 0 ) /* Sprites */
2764 ROM_LOAD( "man-06.17a", 0x200000, 0x100000, CRC(a9a64297) SHA1(e4cb441207b1907461c90c32c05a461c9bd30756) )
2765 ROM_LOAD( "man-07.18a", 0x000000, 0x100000, CRC(b1db200c) SHA1(970bb15e90194dd285f53594aca5dec3405e75d5) )
2766 ROM_LOAD( "man-08.17c", 0x300000, 0x100000, CRC(28e98e66) SHA1(55dbbd945eada81f7dcc874fdcb0b9e62ea453f0) )
2767 ROM_LOAD( "man-09.21c", 0x100000, 0x100000, CRC(1921245d) SHA1(88d3b69a38c18c83d5658d057b95974f1bd371e6) )
2768
2769 ROM_REGION(0x80000, "oki2", 0 )
2770 ROM_LOAD( "man-10.14k", 0x000000, 0x80000, CRC(0132c578) SHA1(70952f39508360bab51e1151531536f0ea6bbe06) )
2771
2772 ROM_REGION(0x80000, "oki1", 0 )
2773 ROM_LOAD( "man-11.16k", 0x000000, 0x80000, CRC(0dc60a4c) SHA1(4d0daa6a0272852a37f341a0cdc48baee0ad9dd8) )
2774
2775 ROM_REGION( 0x0600, "plds", 0 )
2776 ROM_LOAD( "ts-00.4h", 0x0000, 0x0117, CRC(ebc2908e) SHA1(dca14a55abd1d88ee09092d4122614e55c3e7f53) )
2777 ROM_LOAD( "ts-01.5h", 0x0200, 0x0117, CRC(c776a980) SHA1(cd4bdcfb755f561fefa4c88fab5d6d2397332aa7) )
2778 ROM_LOAD( "ts-02.12l", 0x0400, 0x01bf, CRC(6f26528c) SHA1(2cf869b2a789a9b0646162a61c147bcbb13c9141) )
2779 ROM_END
2780
2781 ROM_START( captavenj ) /* DE-0351-x PCB (x=3 or 4) */
2782 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
2783 ROM_LOAD32_BYTE( "hj_00-2.1e", 0x000000, 0x20000, CRC(10b1faaf) SHA1(9d76885200a846b4751c8d44ff591e2aff7c4148) )
2784 ROM_LOAD32_BYTE( "hj_01-2.1h", 0x000001, 0x20000, CRC(62c59f27) SHA1(20bbb7f3ff63a8c795686c1d56d51e90305daa77) )
2785 ROM_LOAD32_BYTE( "hj_02-2.1k", 0x000002, 0x20000, CRC(ce946cad) SHA1(9f1e92f5149e8a8d0236d5a7ba854ee100fd8488) )
2786 ROM_LOAD32_BYTE( "hj_03-2.1m", 0x000003, 0x20000, CRC(140cf9ce) SHA1(e2260ca4cea2fd7b64b8a78fd5444a7628bdafbb) )
2787 ROM_LOAD32_BYTE( "man-12.3e", 0x080000, 0x20000, CRC(d6261e98) SHA1(f3707be37ca926d9a341b9253a6bb2f3de0e25f6) )
2788 ROM_LOAD32_BYTE( "man-13.3h", 0x080001, 0x20000, CRC(40f0764d) SHA1(a6715c4a2accacf96f41c885579f314367c70dde) )
2789 ROM_LOAD32_BYTE( "man-14.3k", 0x080002, 0x20000, CRC(7cb9a4bd) SHA1(0af1a7bf0fcfa3cc14b38d92f19e97ad6e5541dd) )
2790 ROM_LOAD32_BYTE( "man-15.3m", 0x080003, 0x20000, CRC(c7854fe8) SHA1(ffa87dcda44fa0111de6ab317b77dd2bde015890) )
2791
2792 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
2793 ROM_LOAD( "hj_08.17k", 0x00000, 0x10000, CRC(361fbd16) SHA1(c4bbaf74e09c263044be74bb2c98caf6cfcab618) )
2794
2795 ROM_REGION( 0x80000, "gfx1", 0 )
2796 ROM_LOAD( "man-00.8a", 0x000000, 0x80000, CRC(7855a607) SHA1(fa0be080515482281e5a12fe172eeb9a21af0820) ) /* Encrypted tiles */
2797
2798 ROM_REGION( 0x500000, "gfx2", 0 )
2799 ROM_LOAD( "man-05.16a", 0x000000, 0x40000, CRC(d44d1995) SHA1(e88e1a59a4b24ad058f21538f6e9bbba94a166b4) ) /* Encrypted tiles */
2800 ROM_CONTINUE( 0x140000, 0x40000 )
2801 ROM_CONTINUE( 0x280000, 0x40000 )
2802 ROM_CONTINUE( 0x3c0000, 0x40000 )
2803 ROM_LOAD( "man-04.14a", 0x040000, 0x40000, CRC(541492a1) SHA1(2e0ab12555fc46001a815e76e3a0cd21f385f82a) ) /* Encrypted tiles */
2804 ROM_CONTINUE( 0x180000, 0x40000 )
2805 ROM_CONTINUE( 0x2c0000, 0x40000 )
2806 ROM_CONTINUE( 0x400000, 0x40000 )
2807 ROM_LOAD( "man-03.12a", 0x080000, 0x40000, CRC(2d9c52b2) SHA1(8f6f4fe4f1a63099f889068991b34f9432b04fd7) ) /* Encrypted tiles */
2808 ROM_CONTINUE( 0x1c0000, 0x40000 )
2809 ROM_CONTINUE( 0x300000, 0x40000 )
2810 ROM_CONTINUE( 0x440000, 0x40000 )
2811 ROM_LOAD( "man-02.11a", 0x0c0000, 0x40000, CRC(07674c05) SHA1(08b33721d7eba4a1ff2e282f77eeb56535a52923) ) /* Encrypted tiles */
2812 ROM_CONTINUE( 0x200000, 0x40000 )
2813 ROM_CONTINUE( 0x340000, 0x40000 )
2814 ROM_CONTINUE( 0x480000, 0x40000 )
2815 ROM_LOAD( "man-01.10a", 0x100000, 0x40000, CRC(ae714ada) SHA1(b4d5806265d422c8b837489afe93731f584e4adf) ) /* Encrypted tiles */
2816 ROM_CONTINUE( 0x240000, 0x40000 )
2817 ROM_CONTINUE( 0x380000, 0x40000 )
2818 ROM_CONTINUE( 0x4c0000, 0x40000 )
2819
2820 ROM_REGION( 0x400000, "gfx3", 0 ) /* Sprites */
2821 ROM_LOAD( "man-06.17a", 0x200000, 0x100000, CRC(a9a64297) SHA1(e4cb441207b1907461c90c32c05a461c9bd30756) )
2822 ROM_LOAD( "man-07.18a", 0x000000, 0x100000, CRC(b1db200c) SHA1(970bb15e90194dd285f53594aca5dec3405e75d5) )
2823 ROM_LOAD( "man-08.17c", 0x300000, 0x100000, CRC(28e98e66) SHA1(55dbbd945eada81f7dcc874fdcb0b9e62ea453f0) )
2824 ROM_LOAD( "man-09.21c", 0x100000, 0x100000, CRC(1921245d) SHA1(88d3b69a38c18c83d5658d057b95974f1bd371e6) )
2825
2826 ROM_REGION(0x80000, "oki2", 0 )
2827 ROM_LOAD( "man-10.14k", 0x000000, 0x80000, CRC(0132c578) SHA1(70952f39508360bab51e1151531536f0ea6bbe06) )
2828
2829 ROM_REGION(0x80000, "oki1", 0 )
2830 ROM_LOAD( "man-11.16k", 0x000000, 0x80000, CRC(0dc60a4c) SHA1(4d0daa6a0272852a37f341a0cdc48baee0ad9dd8) )
2831
2832 ROM_REGION( 0x0600, "plds", 0 )
2833 ROM_LOAD( "ts-00.4h", 0x0000, 0x0117, CRC(ebc2908e) SHA1(dca14a55abd1d88ee09092d4122614e55c3e7f53) )
2834 ROM_LOAD( "ts-01.5h", 0x0200, 0x0117, CRC(c776a980) SHA1(cd4bdcfb755f561fefa4c88fab5d6d2397332aa7) )
2835 ROM_LOAD( "ts-02.12l", 0x0400, 0x01bf, CRC(6f26528c) SHA1(2cf869b2a789a9b0646162a61c147bcbb13c9141) )
2836 ROM_END
2837
2838 ROM_START( dragngun )
2839 ROM_REGION(0x200000, "maincpu", 0 ) /* ARM 32 bit code */
2840 ROM_LOAD32_BYTE( "kb02.a9", 0x000000, 0x40000, CRC(4fb9cfea) SHA1(e20fbae32682fc5fdc82070d2d6c73b5b7ac13f8) )
2841 ROM_LOAD32_BYTE( "kb06.c9", 0x000001, 0x40000, CRC(2395efec) SHA1(3c08299a6cdeebf9d3d5d367ab435eec76986194) )
2842 ROM_LOAD32_BYTE( "kb00.a5", 0x000002, 0x40000, CRC(1539ff35) SHA1(6c82fe01f5ebf5cdd3a914cc823499fa6a26f9a9) )
2843 ROM_LOAD32_BYTE( "kb04.c5", 0x000003, 0x40000, CRC(5b5c1ec2) SHA1(3c5c02b7e432cf1861e0c8db23b302dc47774a42) )
2844 ROM_LOAD32_BYTE( "kb03.a10", 0x100000, 0x40000, CRC(6c6a4f42) SHA1(ae96fe81f9ba587eb3194dbffa0233413d63c4c6) )
2845 ROM_LOAD32_BYTE( "kb07.c10", 0x100001, 0x40000, CRC(2637e8a1) SHA1(7bcd1b1f3a4e6aaa0a3b78ca77dc666948c87547) )
2846 ROM_LOAD32_BYTE( "kb01.a7", 0x100002, 0x40000, CRC(d780ba8d) SHA1(0e315c718c038962b6020945b48bcc632de6f5e1) )
2847 ROM_LOAD32_BYTE( "kb05.c7", 0x100003, 0x40000, CRC(fbad737b) SHA1(04e16abe8c4cec4f172bea29516535511db9db90) )
2848
2849 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
2850 ROM_LOAD( "kb10.n25", 0x00000, 0x10000, CRC(ec56f560) SHA1(feb9491683ba7f1000edebb568d6b3471fcc87fb) )
2851
2852 ROM_REGION( 0x020000, "gfx1", 0 )
2853 ROM_LOAD16_BYTE( "kb08.a15", 0x00000, 0x10000, CRC(8fe4e5f5) SHA1(922b94f8ce0c35e965259c11e95891ef4be913d4) ) /* Encrypted tiles */
2854 ROM_LOAD16_BYTE( "kb09.a17", 0x00001, 0x10000, CRC(e9dcac3f) SHA1(0621e601ffae73bbf69623042c9c8ab0526c3de6) )
2855
2856 ROM_REGION( 0x120000, "gfx2", 0 )
2857 ROM_LOAD( "mar-00.bin", 0x000000, 0x80000, CRC(d0491a37) SHA1(cc0ae1e9e5f42ba30159fb79bccd2e237cd037d0) ) /* Encrypted tiles */
2858 ROM_LOAD( "mar-01.bin", 0x090000, 0x80000, CRC(d5970365) SHA1(729baf1efbef15c9f3e1d700717f5ba4f10d3014) )
2859
2860 ROM_REGION( 0x400000, "gfx3", 0 )
2861 ROM_LOAD( "mar-02.bin", 0x000000, 0x40000, CRC(c6cd4baf) SHA1(350286829a330b64f463d0a9cbbfdb71eecf5188) ) /* Encrypted tiles 0/4 */
2862 ROM_CONTINUE( 0x100000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
2863 ROM_CONTINUE( 0x200000, 0x40000 ) /* 2/4 */
2864 ROM_CONTINUE( 0x300000, 0x40000 ) /* 3/4 */
2865 ROM_LOAD( "mar-03.bin", 0x040000, 0x40000, CRC(793006d7) SHA1(7d8aba2fe75917f580a3a931a7defe5939a0874e) ) /* Encrypted tiles 0/4 */
2866 ROM_CONTINUE( 0x140000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
2867 ROM_CONTINUE( 0x240000, 0x40000 ) /* 2/4 */
2868 ROM_CONTINUE( 0x340000, 0x40000 ) /* 3/4 */
2869 ROM_LOAD( "mar-04.bin", 0x080000, 0x40000, CRC(56631a2b) SHA1(0fa3d6215df8ce923c153b96f39161ba88b2dd53) ) /* Encrypted tiles 0/4 */
2870 ROM_CONTINUE( 0x180000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
2871 ROM_CONTINUE( 0x280000, 0x40000 ) /* 2/4 */
2872 ROM_CONTINUE( 0x380000, 0x40000 ) /* 3/4 */
2873 ROM_LOAD( "mar-05.bin", 0x0c0000, 0x40000, CRC(ac16e7ae) SHA1(dca32e0a677a99f47a7b8e8f105483c57382f218) ) /* Encrypted tiles 0/4 */
2874 ROM_CONTINUE( 0x1c0000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
2875 ROM_CONTINUE( 0x2c0000, 0x40000 ) /* 2/4 */
2876 ROM_CONTINUE( 0x3c0000, 0x40000 ) /* 3/4 */
2877
2878 ROM_REGION( 0x800000, "gfx4", 0 )
2879 ROM_LOAD32_BYTE( "mar-09.bin", 0x000003, 0x100000, CRC(18fec9e1) SHA1(1290a9c13b4fd7d2197b39ec616206796e3a17a8) )
2880 ROM_LOAD32_BYTE( "mar-10.bin", 0x400003, 0x100000, CRC(73126fbc) SHA1(9b9c31335e4db726863b219072c83810008f88f9) )
2881 ROM_LOAD32_BYTE( "mar-11.bin", 0x000002, 0x100000, CRC(1fc638a4) SHA1(003dcfbb65a8f32a1a030502a11432287cf8b4e0) )
2882 ROM_LOAD32_BYTE( "mar-12.bin", 0x400002, 0x100000, CRC(4c412512) SHA1(ccd5014bc9f9648cf5fa56bb8d54fc72a7099ca3) )
2883 ROM_LOAD32_BYTE( "mar-13.bin", 0x000001, 0x100000, CRC(d675821c) SHA1(ff195422d0bef62d1f9c7784bba1e6b7ab5cd211) )
2884 ROM_LOAD32_BYTE( "mar-14.bin", 0x400001, 0x100000, CRC(22d38c71) SHA1(62273665975f3e6000fa4b01755aeb70e5dd002d) )
2885 ROM_LOAD32_BYTE( "mar-15.bin", 0x000000, 0x100000, CRC(ec976b20) SHA1(c120b3c56d5e02162e41dc7f726c260d0f8d2f1a) )
2886 ROM_LOAD32_BYTE( "mar-16.bin", 0x400000, 0x100000, CRC(8b329bc8) SHA1(6e34eb6e2628a01a699d20a5155afb2febc31255) )
2887
2888 // this is standard DVI data, see http://www.fileformat.info/format/dvi/egff.htm
2889 // there are DVI headers at 0x000000, 0x580000, 0x800000, 0xB10000, 0xB80000
2890 ROM_REGION32_LE( 0x1000000, "dvi", 0 ) /* Video data - unused for now */
2891 ROM_LOAD32_BYTE( "mar-17.bin", 0x000003, 0x100000, CRC(7799ed23) SHA1(ae28ad4fa6033a3695fa83356701b3774b26e6b0) ) // 56 V / 41 A
2892 ROM_LOAD32_BYTE( "mar-20.bin", 0x000002, 0x100000, CRC(fa0462f0) SHA1(1a52617ad4d7abebc0f273dd979f4cf2d6a0306b) ) // 44 D / 56 V
2893 ROM_LOAD32_BYTE( "mar-28.bin", 0x000001, 0x100000, CRC(5a2ec71d) SHA1(447c404e6bb696f7eb7c61992a99b9be56f5d6b0) ) // 56 V / 53 S
2894 ROM_LOAD32_BYTE( "mar-25.bin", 0x000000, 0x100000, CRC(d65d895c) SHA1(4508dfff95a7aff5109dc74622cbb4503b0b5840) ) // 49 I / 53 S
2895 ROM_LOAD32_BYTE( "mar-18.bin", 0x400003, 0x100000, CRC(ded66da9) SHA1(5134cb47043cc190a35ebdbf1912166669f9c055) )
2896 ROM_LOAD32_BYTE( "mar-21.bin", 0x400002, 0x100000, CRC(2d0a28ae) SHA1(d87f6f71bb76880e4d4f1eab8e0451b5c3df69a5) )
2897 ROM_LOAD32_BYTE( "mar-27.bin", 0x400001, 0x100000, CRC(3fcbd10f) SHA1(70fc7b88bbe35bbae1de14364b03d0a06d541de5) )
2898 ROM_LOAD32_BYTE( "mar-24.bin", 0x400000, 0x100000, CRC(5cec45c8) SHA1(f99a26afaca9d9320477e469b09e3873bc8c156f) )
2899 ROM_LOAD32_BYTE( "mar-19.bin", 0x800003, 0x100000, CRC(bdd1ed20) SHA1(2435b23210b8fee4d39c30d4d3c6ea40afaa3b93) ) // 56 V / 41 A
2900 ROM_LOAD32_BYTE( "mar-22.bin", 0x800002, 0x100000, CRC(c85f3559) SHA1(a5d5cf9b18c9ef6a92d7643ca1ec9052de0d4a01) ) // 44 D / 56 V
2901 ROM_LOAD32_BYTE( "mar-26.bin", 0x800001, 0x100000, CRC(246a06c5) SHA1(447252be976a5059925f4ad98df8564b70198f62) ) // 56 V / 53 S
2902 ROM_LOAD32_BYTE( "mar-23.bin", 0x800000, 0x100000, CRC(ba907d6a) SHA1(1fd99b66e6297c8d927c1cf723a613b4ee2e2f90) ) // 49 I / 53 S
2903
2904 ROM_REGION(0x80000, "oki1", 0 )
2905 ROM_LOAD( "mar-06.n17", 0x000000, 0x80000, CRC(3e006c6e) SHA1(55786e0fde2bf6ba9802f3f4fa8d4c21625b976a) )
2906
2907 ROM_REGION(0x80000, "oki2", 0 )
2908 ROM_LOAD( "mar-08.n21", 0x000000, 0x80000, CRC(b9281dfd) SHA1(449faf5d36f3b970d0a9b483e2152a5f68604a77) )
2909
2910 // TODO : Japan version uses first bank of oki3, US version uses second half. it has bankswitched dynamic? or address shuffle?
2911 ROM_REGION(0x80000, "oki3", 0 )
2912 // Remove this hack if oki3 bankswitching is verified
2913 ROM_LOAD( "mar-07.n19", 0x40000, 0x40000, CRC(40287d62) SHA1(c00cb08bcdae55bcddc14c38e88b0484b1bc9e3e) )
2914 ROM_CONTINUE( 0x00000, 0x40000 )
2915 //ROM_LOAD( "mar-07.n19", 0x000000, 0x80000, CRC(40287d62) SHA1(c00cb08bcdae55bcddc14c38e88b0484b1bc9e3e) )
2916 ROM_END
2917
2918 ROM_START( dragngunj )
2919 ROM_REGION(0x200000, "maincpu", 0 ) /* ARM 32 bit code */
2920 ROM_LOAD32_BYTE( "ka-02.a9", 0x000000, 0x40000, CRC(402a03f9) SHA1(cdd5da9e35191bd716eb6245360702adb6078a94) )
2921 ROM_LOAD32_BYTE( "ka-06.c9", 0x000001, 0x40000, CRC(26822853) SHA1(8a9e61c9ac9a5aa4b21f063f700acfebac8d408b) )
2922 ROM_LOAD32_BYTE( "ka-00.a5", 0x000002, 0x40000, CRC(cc9e321b) SHA1(591d5f13a558960dbf286ca4541be0e42b234f2f) )
2923 ROM_LOAD32_BYTE( "ka-04.c5", 0x000003, 0x40000, CRC(5fd9d935) SHA1(8fd87b05325fae84860bbf1e169a3946f3197307) )
2924 ROM_LOAD32_BYTE( "ka-03.a10", 0x100000, 0x40000, CRC(e213c859) SHA1(aa0610427bbaa22da7f44289fdf9baf37b636710) )
2925 ROM_LOAD32_BYTE( "ka-07.c10", 0x100001, 0x40000, CRC(f34c54eb) SHA1(6b67cdb1d2dcc272de96292254914a212ff351cd) )
2926 ROM_LOAD32_BYTE( "ka-01.a7", 0x100002, 0x40000, CRC(1b52364c) SHA1(151365adc26bc7d71a4d2fc73bca598d3aa09f81) )
2927 ROM_LOAD32_BYTE( "ka-05.c7", 0x100003, 0x40000, CRC(4c975f52) SHA1(3c6b287c77a049e3f8822ed9d545733e8ea3357b) )
2928
2929 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
2930 ROM_LOAD( "ka-10.n25", 0x00000, 0x10000, CRC(ec56f560) SHA1(feb9491683ba7f1000edebb568d6b3471fcc87fb) )
2931
2932 ROM_REGION( 0x020000, "gfx1", 0 )
2933 ROM_LOAD16_BYTE( "ka-08.a15", 0x00000, 0x10000, CRC(8fe4e5f5) SHA1(922b94f8ce0c35e965259c11e95891ef4be913d4) ) /* Encrypted tiles */
2934 ROM_LOAD16_BYTE( "ka-09.a17", 0x00001, 0x10000, CRC(e9dcac3f) SHA1(0621e601ffae73bbf69623042c9c8ab0526c3de6) )
2935
2936 ROM_REGION( 0x120000, "gfx2", 0 )
2937 ROM_LOAD( "mar-00.bin", 0x000000, 0x80000, CRC(d0491a37) SHA1(cc0ae1e9e5f42ba30159fb79bccd2e237cd037d0) ) /* Encrypted tiles */
2938 ROM_LOAD( "mar-01.bin", 0x090000, 0x80000, CRC(d5970365) SHA1(729baf1efbef15c9f3e1d700717f5ba4f10d3014) )
2939
2940 ROM_REGION( 0x400000, "gfx3", 0 )
2941 ROM_LOAD( "mar-02.bin", 0x000000, 0x40000, CRC(c6cd4baf) SHA1(350286829a330b64f463d0a9cbbfdb71eecf5188) ) /* Encrypted tiles 0/4 */
2942 ROM_CONTINUE( 0x100000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
2943 ROM_CONTINUE( 0x200000, 0x40000 ) /* 2/4 */
2944 ROM_CONTINUE( 0x300000, 0x40000 ) /* 3/4 */
2945 ROM_LOAD( "mar-03.bin", 0x040000, 0x40000, CRC(793006d7) SHA1(7d8aba2fe75917f580a3a931a7defe5939a0874e) ) /* Encrypted tiles 0/4 */
2946 ROM_CONTINUE( 0x140000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
2947 ROM_CONTINUE( 0x240000, 0x40000 ) /* 2/4 */
2948 ROM_CONTINUE( 0x340000, 0x40000 ) /* 3/4 */
2949 ROM_LOAD( "mar-04.bin", 0x080000, 0x40000, CRC(56631a2b) SHA1(0fa3d6215df8ce923c153b96f39161ba88b2dd53) ) /* Encrypted tiles 0/4 */
2950 ROM_CONTINUE( 0x180000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
2951 ROM_CONTINUE( 0x280000, 0x40000 ) /* 2/4 */
2952 ROM_CONTINUE( 0x380000, 0x40000 ) /* 3/4 */
2953 ROM_LOAD( "mar-05.bin", 0x0c0000, 0x40000, CRC(ac16e7ae) SHA1(dca32e0a677a99f47a7b8e8f105483c57382f218) ) /* Encrypted tiles 0/4 */
2954 ROM_CONTINUE( 0x1c0000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
2955 ROM_CONTINUE( 0x2c0000, 0x40000 ) /* 2/4 */
2956 ROM_CONTINUE( 0x3c0000, 0x40000 ) /* 3/4 */
2957
2958 ROM_REGION( 0x800000, "gfx4", 0 )
2959 ROM_LOAD32_BYTE( "mar-09.bin", 0x000003, 0x100000, CRC(18fec9e1) SHA1(1290a9c13b4fd7d2197b39ec616206796e3a17a8) )
2960 ROM_LOAD32_BYTE( "mar-10.bin", 0x400003, 0x100000, CRC(73126fbc) SHA1(9b9c31335e4db726863b219072c83810008f88f9) )
2961 ROM_LOAD32_BYTE( "mar-11.bin", 0x000002, 0x100000, CRC(1fc638a4) SHA1(003dcfbb65a8f32a1a030502a11432287cf8b4e0) )
2962 ROM_LOAD32_BYTE( "mar-12.bin", 0x400002, 0x100000, CRC(4c412512) SHA1(ccd5014bc9f9648cf5fa56bb8d54fc72a7099ca3) )
2963 ROM_LOAD32_BYTE( "mar-13.bin", 0x000001, 0x100000, CRC(d675821c) SHA1(ff195422d0bef62d1f9c7784bba1e6b7ab5cd211) )
2964 ROM_LOAD32_BYTE( "mar-14.bin", 0x400001, 0x100000, CRC(22d38c71) SHA1(62273665975f3e6000fa4b01755aeb70e5dd002d) )
2965 ROM_LOAD32_BYTE( "mar-15.bin", 0x000000, 0x100000, CRC(ec976b20) SHA1(c120b3c56d5e02162e41dc7f726c260d0f8d2f1a) )
2966 ROM_LOAD32_BYTE( "mar-16.bin", 0x400000, 0x100000, CRC(8b329bc8) SHA1(6e34eb6e2628a01a699d20a5155afb2febc31255) )
2967
2968 ROM_REGION32_LE( 0x1000000, "dvi", 0 ) /* Video data - unused for now */
2969 ROM_LOAD32_BYTE( "mar-17.bin", 0x000003, 0x100000, CRC(7799ed23) SHA1(ae28ad4fa6033a3695fa83356701b3774b26e6b0) ) // 56 V / 41 A
2970 ROM_LOAD32_BYTE( "mar-20.bin", 0x000002, 0x100000, CRC(fa0462f0) SHA1(1a52617ad4d7abebc0f273dd979f4cf2d6a0306b) ) // 44 D / 56 V
2971 ROM_LOAD32_BYTE( "mar-28.bin", 0x000001, 0x100000, CRC(5a2ec71d) SHA1(447c404e6bb696f7eb7c61992a99b9be56f5d6b0) ) // 56 V / 53 S
2972 ROM_LOAD32_BYTE( "mar-25.bin", 0x000000, 0x100000, CRC(d65d895c) SHA1(4508dfff95a7aff5109dc74622cbb4503b0b5840) ) // 49 I / 53 S
2973 ROM_LOAD32_BYTE( "mar-18.bin", 0x400003, 0x100000, CRC(ded66da9) SHA1(5134cb47043cc190a35ebdbf1912166669f9c055) )
2974 ROM_LOAD32_BYTE( "mar-21.bin", 0x400002, 0x100000, CRC(2d0a28ae) SHA1(d87f6f71bb76880e4d4f1eab8e0451b5c3df69a5) )
2975 ROM_LOAD32_BYTE( "mar-27.bin", 0x400001, 0x100000, CRC(3fcbd10f) SHA1(70fc7b88bbe35bbae1de14364b03d0a06d541de5) )
2976 ROM_LOAD32_BYTE( "mar-24.bin", 0x400000, 0x100000, CRC(5cec45c8) SHA1(f99a26afaca9d9320477e469b09e3873bc8c156f) )
2977 ROM_LOAD32_BYTE( "mar-19.bin", 0x800003, 0x100000, CRC(bdd1ed20) SHA1(2435b23210b8fee4d39c30d4d3c6ea40afaa3b93) ) // 56 V / 41 A
2978 ROM_LOAD32_BYTE( "mar-22.bin", 0x800002, 0x100000, CRC(c85f3559) SHA1(a5d5cf9b18c9ef6a92d7643ca1ec9052de0d4a01) ) // 44 D / 56 V
2979 ROM_LOAD32_BYTE( "mar-26.bin", 0x800001, 0x100000, CRC(246a06c5) SHA1(447252be976a5059925f4ad98df8564b70198f62) ) // 56 V / 53 S
2980 ROM_LOAD32_BYTE( "mar-23.bin", 0x800000, 0x100000, CRC(ba907d6a) SHA1(1fd99b66e6297c8d927c1cf723a613b4ee2e2f90) ) // 49 I / 53 S
2981
2982 ROM_REGION(0x80000, "oki1", 0 )
2983 ROM_LOAD( "mar-06.n17", 0x000000, 0x80000, CRC(3e006c6e) SHA1(55786e0fde2bf6ba9802f3f4fa8d4c21625b976a) )
2984
2985 ROM_REGION(0x80000, "oki2", 0 )
2986 ROM_LOAD( "mar-08.n21", 0x000000, 0x80000, CRC(b9281dfd) SHA1(449faf5d36f3b970d0a9b483e2152a5f68604a77) )
2987
2988 ROM_REGION(0x80000, "oki3", 0 )
2989 ROM_LOAD( "mar-07.n19", 0x000000, 0x80000, CRC(40287d62) SHA1(c00cb08bcdae55bcddc14c38e88b0484b1bc9e3e) )
2990 ROM_END
2991
2992 ROM_START( fghthist ) /* DE-0395-1 PCB */
2993 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
2994 ROM_LOAD32_WORD( "lc00-1.1f", 0x000000, 0x80000, CRC(61a76a16) SHA1(b69cd3e11cf133f1b14a017391035855a5038d46) ) /* Version 43-09, Overseas */
2995 ROM_LOAD32_WORD( "lc01-1.2f", 0x000002, 0x80000, CRC(6f2740d1) SHA1(4fa1fe4714236028ef70d42e15a58cfd25e45363) )
2996
2997 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
2998 ROM_LOAD( "lc02-1.18k", 0x00000, 0x10000, CRC(5fd2309c) SHA1(2fb7af54d5cd9bf7dd6fb4f6b82aa52b03294f1f) )
2999
3000 ROM_REGION( 0x100000, "gfx1", 0 )
3001 ROM_LOAD( "mbf00-8.8a", 0x000000, 0x100000, CRC(d3e9b580) SHA1(fc4676e0ecc6c32441ff66fa1f990cc3158237db) ) /* Encrypted tiles */
3002
3003 ROM_REGION( 0x100000, "gfx2", 0 )
3004 ROM_LOAD( "mbf01-8.9a", 0x000000, 0x100000, CRC(0c6ed2eb) SHA1(8e37ef4b1f0b6d3370a08758bfd602cb5f221282) ) /* Encrypted tiles */
3005
3006 ROM_REGION( 0x800000, "gfx3", 0 ) /* Sprites */
3007 ROM_LOAD( "mbf02-16.16d", 0x000000, 0x200000, CRC(c19c5953) SHA1(e6ed26f932c6c86bbd1fc4c000aa2f510c268009) )
3008 ROM_LOAD( "mbf03-16.17d", 0x200000, 0x200000, CRC(37d25c75) SHA1(8219d31091b4317190618edd8acc49f97cba6a1e) )
3009 ROM_LOAD( "mbf04-16.18d", 0x400000, 0x200000, CRC(f6a23fd7) SHA1(74e5559f17cd591aa25d2ed6c34ac9ed89e2e9ba) )
3010 ROM_LOAD( "mbf05-16.19d", 0x600000, 0x200000, CRC(137be66d) SHA1(3fde345183ce04a7a65b4cedfd050d771df7d026) )
3011
3012 ROM_REGION(0x80000, "oki1", 0 )
3013 ROM_LOAD( "mbf06.15k", 0x000000, 0x80000, CRC(fb513903) SHA1(7727a49ff7977f159ed36d097020edef3b5b36ba) )
3014
3015 ROM_REGION(0x80000, "oki2", 0 )
3016 ROM_LOAD( "mbf07.16k", 0x000000, 0x80000, CRC(51d4adc7) SHA1(22106ed7a05db94adc5a783ce34529e29d24d41a) )
3017
3018 ROM_REGION(512, "proms", 0 )
3019 ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
3020
3021 ROM_REGION( 0x0400, "plds", 0 )
3022 ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
3023 ROM_LOAD( "ve-01a.4d", 0x0200, 0x0117, CRC(109613c8) SHA1(5991e010c1bc2a827c8ee2c85a9b40e00a3167b3) )
3024 /* PAL16L8BCN at 8J is unpopulated */
3025 ROM_END
3026
3027 ROM_START( fghthista ) /* DE-0380-2 PCB */
3028 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
3029 ROM_LOAD32_WORD( "kx00-3.1f", 0x000000, 0x80000, CRC(fe5eaba1) SHA1(c8a3784af487a1bbd2150abf4b1c8f3ad33da8a4) ) /* Version 43-07, Overseas */
3030 ROM_LOAD32_WORD( "kx01-3.2f", 0x000002, 0x80000, CRC(3fb8d738) SHA1(2fca7a3ea483f01c97fb28a0adfa6d7980d8236c) )
3031
3032 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3033 ROM_LOAD( "kx02.18k", 0x00000, 0x10000, CRC(5fd2309c) SHA1(2fb7af54d5cd9bf7dd6fb4f6b82aa52b03294f1f) )
3034
3035 ROM_REGION( 0x100000, "gfx1", 0 )
3036 ROM_LOAD( "mbf00-8.8a", 0x000000, 0x100000, CRC(d3e9b580) SHA1(fc4676e0ecc6c32441ff66fa1f990cc3158237db) ) /* Encrypted tiles */
3037
3038 ROM_REGION( 0x100000, "gfx2", 0 )
3039 ROM_LOAD( "mbf01-8.9a", 0x000000, 0x100000, CRC(0c6ed2eb) SHA1(8e37ef4b1f0b6d3370a08758bfd602cb5f221282) ) /* Encrypted tiles */
3040
3041 ROM_REGION( 0x800000, "gfx3", 0 ) /* Sprites */
3042 ROM_LOAD( "mbf02-16.16d", 0x000000, 0x200000, CRC(c19c5953) SHA1(e6ed26f932c6c86bbd1fc4c000aa2f510c268009) )
3043 ROM_LOAD( "mbf03-16.17d", 0x200000, 0x200000, CRC(37d25c75) SHA1(8219d31091b4317190618edd8acc49f97cba6a1e) )
3044 ROM_LOAD( "mbf04-16.18d", 0x400000, 0x200000, CRC(f6a23fd7) SHA1(74e5559f17cd591aa25d2ed6c34ac9ed89e2e9ba) )
3045 ROM_LOAD( "mbf05-16.19d", 0x600000, 0x200000, CRC(137be66d) SHA1(3fde345183ce04a7a65b4cedfd050d771df7d026) )
3046
3047 ROM_REGION(0x80000, "oki1", 0 )
3048 ROM_LOAD( "mbf06.15k", 0x000000, 0x80000, CRC(fb513903) SHA1(7727a49ff7977f159ed36d097020edef3b5b36ba) )
3049
3050 ROM_REGION(0x80000, "oki2", 0 )
3051 ROM_LOAD( "mbf07.16k", 0x000000, 0x80000, CRC(51d4adc7) SHA1(22106ed7a05db94adc5a783ce34529e29d24d41a) )
3052
3053 ROM_REGION(512, "proms", 0 )
3054 ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
3055
3056 ROM_REGION( 0x0400, "plds", 0 )
3057 ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
3058 ROM_LOAD( "ve-01.4d", 0x0200, 0x0117, CRC(4ba7e6a9) SHA1(b65d696a3519e792df226f9f148c759cdb0e1e43) )
3059 ROM_END
3060
3061 ROM_START( fghthistb ) /* DE-0380-2 PCB */
3062 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
3063 ROM_LOAD32_WORD( "kx00-2.1f", 0x000000, 0x80000, CRC(a7c36bbd) SHA1(590937818343da53a6bccbd3ea1d7102abd4f27e) ) /* Version 43-05, Overseas */
3064 ROM_LOAD32_WORD( "kx01-2.2f", 0x000002, 0x80000, CRC(bdc60bb1) SHA1(e621c5cf357f49aa62deef4da1e2227021f552ce) )
3065
3066 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3067 ROM_LOAD( "kx02.18k", 0x00000, 0x10000, CRC(5fd2309c) SHA1(2fb7af54d5cd9bf7dd6fb4f6b82aa52b03294f1f) )
3068
3069 ROM_REGION( 0x100000, "gfx1", 0 )
3070 ROM_LOAD( "mbf00-8.8a", 0x000000, 0x100000, CRC(d3e9b580) SHA1(fc4676e0ecc6c32441ff66fa1f990cc3158237db) ) /* Encrypted tiles */
3071
3072 ROM_REGION( 0x100000, "gfx2", 0 )
3073 ROM_LOAD( "mbf01-8.9a", 0x000000, 0x100000, CRC(0c6ed2eb) SHA1(8e37ef4b1f0b6d3370a08758bfd602cb5f221282) ) /* Encrypted tiles */
3074
3075 ROM_REGION( 0x800000, "gfx3", 0 ) /* Sprites */
3076 ROM_LOAD( "mbf02-16.16d", 0x000000, 0x200000, CRC(c19c5953) SHA1(e6ed26f932c6c86bbd1fc4c000aa2f510c268009) )
3077 ROM_LOAD( "mbf03-16.17d", 0x200000, 0x200000, CRC(37d25c75) SHA1(8219d31091b4317190618edd8acc49f97cba6a1e) )
3078 ROM_LOAD( "mbf04-16.18d", 0x400000, 0x200000, CRC(f6a23fd7) SHA1(74e5559f17cd591aa25d2ed6c34ac9ed89e2e9ba) )
3079 ROM_LOAD( "mbf05-16.19d", 0x600000, 0x200000, CRC(137be66d) SHA1(3fde345183ce04a7a65b4cedfd050d771df7d026) )
3080
3081 ROM_REGION(0x80000, "oki1", 0 )
3082 ROM_LOAD( "mbf06.15k", 0x000000, 0x80000, CRC(fb513903) SHA1(7727a49ff7977f159ed36d097020edef3b5b36ba) )
3083
3084 ROM_REGION(0x80000, "oki2", 0 )
3085 ROM_LOAD( "mbf07.16k", 0x000000, 0x80000, CRC(51d4adc7) SHA1(22106ed7a05db94adc5a783ce34529e29d24d41a) )
3086
3087 ROM_REGION(512, "proms", 0 )
3088 ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
3089
3090 ROM_REGION( 0x0400, "plds", 0 )
3091 ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
3092 ROM_LOAD( "ve-01.4d", 0x0200, 0x0117, CRC(4ba7e6a9) SHA1(b65d696a3519e792df226f9f148c759cdb0e1e43) )
3093 /* PAL16L8BCN at 8J is unpopulated */
3094 ROM_END
3095
3096 ROM_START( fghthistu ) /* DE-0396-0 PCB */
3097 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
3098 ROM_LOAD32_WORD( "lj00-3.1f", 0x000000, 0x80000, CRC(17543d60) SHA1(ff206e8552587b41d075b3c99f9ad733f1c2b5e0) ) /* Version 42-09, US */
3099 ROM_LOAD32_WORD( "lj01-3.2f", 0x000002, 0x80000, CRC(e255d48f) SHA1(30444832cfed7eeb6082010eb219362adbafb826) )
3100
3101 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3102 ROM_LOAD( "lj02-.17k", 0x00000, 0x10000, CRC(146a1063) SHA1(d16734c2443bf38add54040b9dd2628ba523638d) )
3103
3104 ROM_REGION( 0x100000, "gfx1", 0 )
3105 ROM_LOAD( "mbf00-8.8a", 0x000000, 0x100000, CRC(d3e9b580) SHA1(fc4676e0ecc6c32441ff66fa1f990cc3158237db) ) /* Encrypted tiles */
3106
3107 ROM_REGION( 0x100000, "gfx2", 0 )
3108 ROM_LOAD( "mbf01-8.9a", 0x000000, 0x100000, CRC(0c6ed2eb) SHA1(8e37ef4b1f0b6d3370a08758bfd602cb5f221282) ) /* Encrypted tiles */
3109
3110 ROM_REGION( 0x800000, "gfx3", 0 ) /* Sprites */
3111 ROM_LOAD( "mbf02-16.16d", 0x000000, 0x200000, CRC(c19c5953) SHA1(e6ed26f932c6c86bbd1fc4c000aa2f510c268009) )
3112 ROM_LOAD( "mbf03-16.17d", 0x200000, 0x200000, CRC(37d25c75) SHA1(8219d31091b4317190618edd8acc49f97cba6a1e) )
3113 ROM_LOAD( "mbf04-16.18d", 0x400000, 0x200000, CRC(f6a23fd7) SHA1(74e5559f17cd591aa25d2ed6c34ac9ed89e2e9ba) )
3114 ROM_LOAD( "mbf05-16.19d", 0x600000, 0x200000, CRC(137be66d) SHA1(3fde345183ce04a7a65b4cedfd050d771df7d026) )
3115
3116 ROM_REGION(0x80000, "oki1", 0 )
3117 ROM_LOAD( "mbf06.15k", 0x000000, 0x80000, CRC(fb513903) SHA1(7727a49ff7977f159ed36d097020edef3b5b36ba) )
3118
3119 ROM_REGION(0x80000, "oki2", 0 )
3120 ROM_LOAD( "mbf07.16k", 0x000000, 0x80000, CRC(51d4adc7) SHA1(22106ed7a05db94adc5a783ce34529e29d24d41a) )
3121
3122 ROM_REGION(512, "proms", 0 )
3123 ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
3124
3125 ROM_REGION( 0x0400, "plds", 0 )
3126 ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
3127 ROM_LOAD( "ve-01.4d", 0x0200, 0x0117, CRC(4ba7e6a9) SHA1(b65d696a3519e792df226f9f148c759cdb0e1e43) )
3128 /* PAL16L8BCN at 8J is unpopulated */
3129 ROM_END
3130
3131 ROM_START( fghthistua ) /* DE-0395-1 PCB */
3132 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
3133 ROM_LOAD32_WORD( "le00-1.1f", 0x000000, 0x80000, CRC(fccacafb) SHA1(b7236a90a09dbd5870a16aa4e4eac5ab5c098418) ) /* Version 42-06, US */
3134 ROM_LOAD32_WORD( "le01-1.2f", 0x000002, 0x80000, CRC(06a3c326) SHA1(3d8842fb69def93fc544e89fd0e56ada416157dc) )
3135
3136 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3137 ROM_LOAD( "le02.18k", 0x00000, 0x10000, CRC(5fd2309c) SHA1(2fb7af54d5cd9bf7dd6fb4f6b82aa52b03294f1f) )
3138
3139 ROM_REGION( 0x100000, "gfx1", 0 )
3140 ROM_LOAD( "mbf00-8.8a", 0x000000, 0x100000, CRC(d3e9b580) SHA1(fc4676e0ecc6c32441ff66fa1f990cc3158237db) ) /* Encrypted tiles */
3141
3142 ROM_REGION( 0x100000, "gfx2", 0 )
3143 ROM_LOAD( "mbf01-8.9a", 0x000000, 0x100000, CRC(0c6ed2eb) SHA1(8e37ef4b1f0b6d3370a08758bfd602cb5f221282) ) /* Encrypted tiles */
3144
3145 ROM_REGION( 0x800000, "gfx3", 0 ) /* Sprites */
3146 ROM_LOAD( "mbf02-16.16d", 0x000000, 0x200000, CRC(c19c5953) SHA1(e6ed26f932c6c86bbd1fc4c000aa2f510c268009) )
3147 ROM_LOAD( "mbf03-16.17d", 0x200000, 0x200000, CRC(37d25c75) SHA1(8219d31091b4317190618edd8acc49f97cba6a1e) )
3148 ROM_LOAD( "mbf04-16.18d", 0x400000, 0x200000, CRC(f6a23fd7) SHA1(74e5559f17cd591aa25d2ed6c34ac9ed89e2e9ba) )
3149 ROM_LOAD( "mbf05-16.19d", 0x600000, 0x200000, CRC(137be66d) SHA1(3fde345183ce04a7a65b4cedfd050d771df7d026) )
3150
3151 ROM_REGION(0x80000, "oki1", 0 )
3152 ROM_LOAD( "mbf06.15k", 0x000000, 0x80000, CRC(fb513903) SHA1(7727a49ff7977f159ed36d097020edef3b5b36ba) )
3153
3154 ROM_REGION(0x80000, "oki2", 0 )
3155 ROM_LOAD( "mbf07.16k", 0x000000, 0x80000, CRC(51d4adc7) SHA1(22106ed7a05db94adc5a783ce34529e29d24d41a) )
3156
3157 ROM_REGION(512, "proms", 0 )
3158 ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
3159
3160 ROM_REGION( 0x0400, "plds", 0 )
3161 ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
3162 ROM_LOAD( "ve-01a.4d", 0x0200, 0x0117, CRC(109613c8) SHA1(5991e010c1bc2a827c8ee2c85a9b40e00a3167b3) )
3163 /* PAL16L8BCN at 8J is unpopulated */
3164 ROM_END
3165
3166 ROM_START( fghthistub ) /* DE-0395-1 PCB */
3167 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
3168 ROM_LOAD32_WORD( "le00.1f", 0x000000, 0x80000, CRC(a5c410eb) SHA1(e2b0cb2351782e1155ecc4029010beb7326fd874) ) /* Version 42-05, US */
3169 ROM_LOAD32_WORD( "le01.2f", 0x000002, 0x80000, CRC(7e148aa2) SHA1(b21e16604c4d29611f91d629deb9f041eaf41e9b) )
3170
3171 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3172 ROM_LOAD( "le02.18k", 0x00000, 0x10000, CRC(5fd2309c) SHA1(2fb7af54d5cd9bf7dd6fb4f6b82aa52b03294f1f) )
3173
3174 ROM_REGION( 0x100000, "gfx1", 0 )
3175 ROM_LOAD( "mbf00-8.8a", 0x000000, 0x100000, CRC(d3e9b580) SHA1(fc4676e0ecc6c32441ff66fa1f990cc3158237db) ) /* Encrypted tiles */
3176
3177 ROM_REGION( 0x100000, "gfx2", 0 )
3178 ROM_LOAD( "mbf01-8.9a", 0x000000, 0x100000, CRC(0c6ed2eb) SHA1(8e37ef4b1f0b6d3370a08758bfd602cb5f221282) ) /* Encrypted tiles */
3179
3180 ROM_REGION( 0x800000, "gfx3", 0 ) /* Sprites */
3181 ROM_LOAD( "mbf02-16.16d", 0x000000, 0x200000, CRC(c19c5953) SHA1(e6ed26f932c6c86bbd1fc4c000aa2f510c268009) )
3182 ROM_LOAD( "mbf03-16.17d", 0x200000, 0x200000, CRC(37d25c75) SHA1(8219d31091b4317190618edd8acc49f97cba6a1e) )
3183 ROM_LOAD( "mbf04-16.18d", 0x400000, 0x200000, CRC(f6a23fd7) SHA1(74e5559f17cd591aa25d2ed6c34ac9ed89e2e9ba) )
3184 ROM_LOAD( "mbf05-16.19d", 0x600000, 0x200000, CRC(137be66d) SHA1(3fde345183ce04a7a65b4cedfd050d771df7d026) )
3185
3186 ROM_REGION(0x80000, "oki1", 0 )
3187 ROM_LOAD( "mbf06.15k", 0x000000, 0x80000, CRC(fb513903) SHA1(7727a49ff7977f159ed36d097020edef3b5b36ba) )
3188
3189 ROM_REGION(0x80000, "oki2", 0 )
3190 ROM_LOAD( "mbf07.16k", 0x000000, 0x80000, CRC(51d4adc7) SHA1(22106ed7a05db94adc5a783ce34529e29d24d41a) )
3191
3192 ROM_REGION(512, "proms", 0 )
3193 ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
3194
3195 ROM_REGION( 0x0400, "plds", 0 )
3196 ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
3197 ROM_LOAD( "ve-01a.4d", 0x0200, 0x0117, CRC(109613c8) SHA1(5991e010c1bc2a827c8ee2c85a9b40e00a3167b3) )
3198 /* PAL16L8BCN at 8J is unpopulated */
3199 ROM_END
3200
3201 ROM_START( fghthistuc ) /* DE-0380-2 PCB */
3202 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
3203 ROM_LOAD32_WORD( "kz00-1.1f", 0x000000, 0x80000, CRC(3a3dd15c) SHA1(689b51adf73402b12191a75061b8e709468c91bc) ) /* Version 42-03, US */
3204 ROM_LOAD32_WORD( "kz01-1.2f", 0x000002, 0x80000, CRC(86796cd6) SHA1(c397c07d7a1d03ba96ccb2fe7a0ad25b8331e945) )
3205
3206 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3207 ROM_LOAD( "kz02.18k", 0x00000, 0x10000, CRC(5fd2309c) SHA1(2fb7af54d5cd9bf7dd6fb4f6b82aa52b03294f1f) )
3208
3209 ROM_REGION( 0x100000, "gfx1", 0 )
3210 ROM_LOAD( "mbf00-8.8a", 0x000000, 0x100000, CRC(d3e9b580) SHA1(fc4676e0ecc6c32441ff66fa1f990cc3158237db) ) /* Encrypted tiles */
3211
3212 ROM_REGION( 0x100000, "gfx2", 0 )
3213 ROM_LOAD( "mbf01-8.9a", 0x000000, 0x100000, CRC(0c6ed2eb) SHA1(8e37ef4b1f0b6d3370a08758bfd602cb5f221282) ) /* Encrypted tiles */
3214
3215 ROM_REGION( 0x800000, "gfx3", 0 ) /* Sprites */
3216 ROM_LOAD( "mbf02-16.16d", 0x000000, 0x200000, CRC(c19c5953) SHA1(e6ed26f932c6c86bbd1fc4c000aa2f510c268009) )
3217 ROM_LOAD( "mbf03-16.17d", 0x200000, 0x200000, CRC(37d25c75) SHA1(8219d31091b4317190618edd8acc49f97cba6a1e) )
3218 ROM_LOAD( "mbf04-16.18d", 0x400000, 0x200000, CRC(f6a23fd7) SHA1(74e5559f17cd591aa25d2ed6c34ac9ed89e2e9ba) )
3219 ROM_LOAD( "mbf05-16.19d", 0x600000, 0x200000, CRC(137be66d) SHA1(3fde345183ce04a7a65b4cedfd050d771df7d026) )
3220
3221 ROM_REGION(0x80000, "oki1", 0 )
3222 ROM_LOAD( "mbf06.15k", 0x000000, 0x80000, CRC(fb513903) SHA1(7727a49ff7977f159ed36d097020edef3b5b36ba) )
3223
3224 ROM_REGION(0x80000, "oki2", 0 )
3225 ROM_LOAD( "mbf07.16k", 0x000000, 0x80000, CRC(51d4adc7) SHA1(22106ed7a05db94adc5a783ce34529e29d24d41a) )
3226
3227 ROM_REGION(512, "proms", 0 )
3228 ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
3229
3230 ROM_REGION( 0x0400, "plds", 0 )
3231 ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
3232 ROM_LOAD( "ve-01.4d", 0x0200, 0x0117, CRC(4ba7e6a9) SHA1(b65d696a3519e792df226f9f148c759cdb0e1e43) )
3233 /* PAL16L8BCN at 8J is unpopulated */
3234 ROM_END
3235
3236 ROM_START( fghthistj ) /* DE-0395-1 PCB */
3237 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
3238 ROM_LOAD32_WORD( "lb00.1f", 0x000000, 0x80000, CRC(321099ad) SHA1(c5f8cedc1d349fb24b0d7b942dcda02190b1b536) ) /* Version 41-07, Japan */
3239 ROM_LOAD32_WORD( "lb01.2f", 0x000002, 0x80000, CRC(22f45755) SHA1(02ba35b557085e379be98705ca5395b677a264fd) )
3240
3241 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3242 ROM_LOAD( "lb02.18k", 0x00000, 0x10000, CRC(5fd2309c) SHA1(2fb7af54d5cd9bf7dd6fb4f6b82aa52b03294f1f) )
3243
3244 ROM_REGION( 0x100000, "gfx1", 0 )
3245 ROM_LOAD( "mbf00-8.8a", 0x000000, 0x100000, CRC(d3e9b580) SHA1(fc4676e0ecc6c32441ff66fa1f990cc3158237db) ) /* Encrypted tiles */
3246
3247 ROM_REGION( 0x100000, "gfx2", 0 )
3248 ROM_LOAD( "mbf01-8.9a", 0x000000, 0x100000, CRC(0c6ed2eb) SHA1(8e37ef4b1f0b6d3370a08758bfd602cb5f221282) ) /* Encrypted tiles */
3249
3250 ROM_REGION( 0x800000, "gfx3", 0 ) /* Sprites */
3251 ROM_LOAD( "mbf02-16.16d", 0x000000, 0x200000, CRC(c19c5953) SHA1(e6ed26f932c6c86bbd1fc4c000aa2f510c268009) )
3252 ROM_LOAD( "mbf03-16.17d", 0x200000, 0x200000, CRC(37d25c75) SHA1(8219d31091b4317190618edd8acc49f97cba6a1e) )
3253 ROM_LOAD( "mbf04-16.18d", 0x400000, 0x200000, CRC(f6a23fd7) SHA1(74e5559f17cd591aa25d2ed6c34ac9ed89e2e9ba) )
3254 ROM_LOAD( "mbf05-16.19d", 0x600000, 0x200000, CRC(137be66d) SHA1(3fde345183ce04a7a65b4cedfd050d771df7d026) )
3255
3256 ROM_REGION(0x80000, "oki1", 0 )
3257 ROM_LOAD( "mbf06.15k", 0x000000, 0x80000, CRC(fb513903) SHA1(7727a49ff7977f159ed36d097020edef3b5b36ba) )
3258
3259 ROM_REGION(0x80000, "oki2", 0 )
3260 ROM_LOAD( "mbf07.16k", 0x000000, 0x80000, CRC(51d4adc7) SHA1(22106ed7a05db94adc5a783ce34529e29d24d41a) )
3261
3262 ROM_REGION(512, "proms", 0 )
3263 ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
3264
3265 ROM_REGION( 0x0400, "plds", 0 )
3266 ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
3267 ROM_LOAD( "ve-01a.4d", 0x0200, 0x0117, CRC(109613c8) SHA1(5991e010c1bc2a827c8ee2c85a9b40e00a3167b3) )
3268 /* PAL16L8BCN at 8J is unpopulated */
3269 ROM_END
3270
3271 ROM_START( fghthistja ) /* DE-0380-2 PCB */
3272 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
3273 ROM_LOAD32_WORD( "kw00-3.1f", 0x000000, 0x80000, CRC(ade9581a) SHA1(c1302e921f119ff9baeb52f9c338df652e64a9ee) ) /* Version 41-05, Japan */
3274 ROM_LOAD32_WORD( "kw01-3.2f", 0x000002, 0x80000, CRC(63580acf) SHA1(03372b168fe461542dd1cf64b4021d948d07e15c) )
3275
3276 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3277 ROM_LOAD( "kw02-.18k", 0x00000, 0x10000, CRC(5fd2309c) SHA1(2fb7af54d5cd9bf7dd6fb4f6b82aa52b03294f1f) )
3278
3279 ROM_REGION( 0x100000, "gfx1", 0 )
3280 ROM_LOAD( "mbf00-8.8a", 0x000000, 0x100000, CRC(d3e9b580) SHA1(fc4676e0ecc6c32441ff66fa1f990cc3158237db) ) /* Encrypted tiles */
3281
3282 ROM_REGION( 0x100000, "gfx2", 0 )
3283 ROM_LOAD( "mbf01-8.9a", 0x000000, 0x100000, CRC(0c6ed2eb) SHA1(8e37ef4b1f0b6d3370a08758bfd602cb5f221282) ) /* Encrypted tiles */
3284
3285 ROM_REGION( 0x800000, "gfx3", 0 ) /* Sprites */
3286 ROM_LOAD( "mbf02-16.16d", 0x000000, 0x200000, CRC(c19c5953) SHA1(e6ed26f932c6c86bbd1fc4c000aa2f510c268009) )
3287 ROM_LOAD( "mbf03-16.17d", 0x200000, 0x200000, CRC(37d25c75) SHA1(8219d31091b4317190618edd8acc49f97cba6a1e) )
3288 ROM_LOAD( "mbf04-16.18d", 0x400000, 0x200000, CRC(f6a23fd7) SHA1(74e5559f17cd591aa25d2ed6c34ac9ed89e2e9ba) )
3289 ROM_LOAD( "mbf05-16.19d", 0x600000, 0x200000, CRC(137be66d) SHA1(3fde345183ce04a7a65b4cedfd050d771df7d026) )
3290
3291 ROM_REGION(0x80000, "oki1", 0 )
3292 ROM_LOAD( "mbf06.15k", 0x000000, 0x80000, CRC(fb513903) SHA1(7727a49ff7977f159ed36d097020edef3b5b36ba) )
3293
3294 ROM_REGION(0x80000, "oki2", 0 )
3295 ROM_LOAD( "mbf07.16k", 0x000000, 0x80000, CRC(51d4adc7) SHA1(22106ed7a05db94adc5a783ce34529e29d24d41a) )
3296
3297 ROM_REGION(512, "proms", 0 )
3298 ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
3299
3300 ROM_REGION( 0x0400, "plds", 0 )
3301 ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
3302 ROM_LOAD( "ve-01.4d", 0x0200, 0x0117, CRC(4ba7e6a9) SHA1(b65d696a3519e792df226f9f148c759cdb0e1e43) )
3303 /* PAL16L8BCN at 8J is unpopulated */
3304 ROM_END
3305
3306 ROM_START( fghthistjb ) /* DE-0380-1 PCB */
3307 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
3308 ROM_LOAD32_WORD( "kw00-2.1f", 0x000000, 0x80000, CRC(f4749806) SHA1(acdbd19b350d5d8670db879c446633a991e28c05) ) /* Version 41-04, Japan */
3309 ROM_LOAD32_WORD( "kw01-2.2f", 0x000002, 0x80000, CRC(7e0ee66a) SHA1(d62321eb9942bfe8629010fabeb42356cf7dd4d6) )
3310
3311 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3312 ROM_LOAD( "kw02-.18k", 0x00000, 0x10000, CRC(5fd2309c) SHA1(2fb7af54d5cd9bf7dd6fb4f6b82aa52b03294f1f) )
3313
3314 ROM_REGION( 0x100000, "gfx1", 0 )
3315 ROM_LOAD( "mbf00-8.8a", 0x000000, 0x100000, CRC(d3e9b580) SHA1(fc4676e0ecc6c32441ff66fa1f990cc3158237db) ) /* Encrypted tiles */
3316
3317 ROM_REGION( 0x100000, "gfx2", 0 )
3318 ROM_LOAD( "mbf01-8.9a", 0x000000, 0x100000, CRC(0c6ed2eb) SHA1(8e37ef4b1f0b6d3370a08758bfd602cb5f221282) ) /* Encrypted tiles */
3319
3320 ROM_REGION( 0x800000, "gfx3", 0 ) /* Sprites */
3321 ROM_LOAD( "mbf02-16.16d", 0x000000, 0x200000, CRC(c19c5953) SHA1(e6ed26f932c6c86bbd1fc4c000aa2f510c268009) )
3322 ROM_LOAD( "mbf03-16.17d", 0x200000, 0x200000, CRC(37d25c75) SHA1(8219d31091b4317190618edd8acc49f97cba6a1e) )
3323 ROM_LOAD( "mbf04-16.18d", 0x400000, 0x200000, CRC(f6a23fd7) SHA1(74e5559f17cd591aa25d2ed6c34ac9ed89e2e9ba) )
3324 ROM_LOAD( "mbf05-16.19d", 0x600000, 0x200000, CRC(137be66d) SHA1(3fde345183ce04a7a65b4cedfd050d771df7d026) )
3325
3326 ROM_REGION(0x80000, "oki1", 0 )
3327 ROM_LOAD( "mbf06.15k", 0x000000, 0x80000, CRC(fb513903) SHA1(7727a49ff7977f159ed36d097020edef3b5b36ba) )
3328
3329 ROM_REGION(0x80000, "oki2", 0 )
3330 ROM_LOAD( "mbf07.16k", 0x000000, 0x80000, CRC(51d4adc7) SHA1(22106ed7a05db94adc5a783ce34529e29d24d41a) )
3331
3332 ROM_REGION(512, "proms", 0 )
3333 ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
3334
3335 ROM_REGION( 0x0400, "plds", 0 )
3336 ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
3337 ROM_LOAD( "ve-01.4d", 0x0200, 0x0117, CRC(4ba7e6a9) SHA1(b65d696a3519e792df226f9f148c759cdb0e1e43) )
3338 /* PAL16L8BCN at 8J is unpopulated */
3339 ROM_END
3340
3341 ROM_START( lockload ) /* Board No. DE-0420-1 + Bottom board DE-0421-0 slightly different hardware, a unique PCB and not a Dragongun conversion */
3342 ROM_REGION(0x200000, "maincpu", 0 ) /* ARM 32 bit code */
3343 ROM_LOAD32_BYTE( "nl-00-1.a6", 0x000002, 0x80000, CRC(7a39bf8d) SHA1(8b1a6407bab74b3960a243a6c04c0005a82126f1) )
3344 ROM_LOAD32_BYTE( "nl-01-1.a8", 0x000000, 0x80000, CRC(d23afcb7) SHA1(de7b5bc936a87cc6511d588b0bf082bbf745581c) )
3345 ROM_LOAD32_BYTE( "nl-02-1.d6", 0x000003, 0x80000, CRC(730e0168) SHA1(fdfa0d335c03c2c528326f90948e642f9ea43150) )
3346 ROM_LOAD32_BYTE( "nl-03-1.d8", 0x000001, 0x80000, CRC(51a53ece) SHA1(ee2c8858844a47fa1e83c30c06d78cf49219dc33) )
3347
3348 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3349 ROM_LOAD( "nm-06-.p22", 0x00000, 0x10000, CRC(31d1c245) SHA1(326e35e7ebd8ea761d90e856c50d86512327f2a5) )
3350
3351 ROM_REGION( 0x020000, "gfx1", 0 )
3352 ROM_LOAD16_BYTE( "nl-04-.a15", 0x00000, 0x10000, CRC(f097b3d9) SHA1(5748de9a796afddd78dad7f5c184269ee533c51c) ) /* Encrypted tiles */
3353 ROM_LOAD16_BYTE( "nl-05-.a17", 0x00001, 0x10000, CRC(448fec1e) SHA1(9a107959621cbb3688fd3ad9a8320aa5584f7d13) )
3354
3355 ROM_REGION( 0x100000, "gfx2", 0 )
3356 ROM_LOAD( "mbm-00.d15", 0x00000, 0x80000, CRC(b97de8ff) SHA1(59508f7135af22c2ac89db78874b1e8a68c53434) ) /* Encrypted tiles */
3357 ROM_LOAD( "mbm-01.d17", 0x80000, 0x80000, CRC(6d4b8fa0) SHA1(56e2b9adb4d010ba2592eccba654a24141441141) )
3358
3359 ROM_REGION( 0x800000, "gfx3", 0 )
3360 ROM_LOAD( "mbm-02.b21", 0x000000, 0x40000, CRC(e723019f) SHA1(15361d3e6db5707a7f0ead4254463c50163c864c) ) /* Encrypted tiles 0/4 */
3361 ROM_CONTINUE( 0x200000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
3362 ROM_CONTINUE( 0x400000, 0x40000 ) /* 2/4 */
3363 ROM_CONTINUE( 0x600000, 0x40000 ) /* 3/4 */
3364 ROM_CONTINUE( 0x040000, 0x40000 ) /* Next block 2bpp 0/4 */
3365 ROM_CONTINUE( 0x240000, 0x40000 ) /* 1/4 */
3366 ROM_CONTINUE( 0x440000, 0x40000 ) /* 2/4 */
3367 ROM_CONTINUE( 0x640000, 0x40000 ) /* 3/4 */
3368 ROM_LOAD( "mbm-03.b22", 0x080000, 0x40000, CRC(e0d09894) SHA1(be2faa81cf92b6fadfb2ec4ca2173157b05071ec) ) /* Encrypted tiles 0/4 */
3369 ROM_CONTINUE( 0x280000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
3370 ROM_CONTINUE( 0x480000, 0x40000 ) /* 2/4 */
3371 ROM_CONTINUE( 0x680000, 0x40000 ) /* 3/4 */
3372 ROM_CONTINUE( 0x0c0000, 0x40000 ) /* Next block 2bpp 0/4 */
3373 ROM_CONTINUE( 0x2c0000, 0x40000 ) /* 1/4 */
3374 ROM_CONTINUE( 0x4c0000, 0x40000 ) /* 2/4 */
3375 ROM_CONTINUE( 0x6c0000, 0x40000 ) /* 3/4 */
3376 ROM_LOAD( "mbm-04.e21", 0x100000, 0x40000, CRC(9e12466f) SHA1(51eaadfaf45d02d72b61052a606f97f36b3964fd) ) /* Encrypted tiles 0/4 */
3377 ROM_CONTINUE( 0x300000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
3378 ROM_CONTINUE( 0x500000, 0x40000 ) /* 2/4 */
3379 ROM_CONTINUE( 0x700000, 0x40000 ) /* 3/4 */
3380 ROM_CONTINUE( 0x140000, 0x40000 ) /* Next block 2bpp 0/4 */
3381 ROM_CONTINUE( 0x340000, 0x40000 ) /* 1/4 */
3382 ROM_CONTINUE( 0x540000, 0x40000 ) /* 2/4 */
3383 ROM_CONTINUE( 0x740000, 0x40000 ) /* 3/4 */
3384 ROM_LOAD( "mbm-05.e22", 0x180000, 0x40000, CRC(6ff02dc0) SHA1(5862e2189a09f963d5ec58ca4aa1c06210a3c7ef) ) /* Encrypted tiles 0/4 */
3385 ROM_CONTINUE( 0x380000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
3386 ROM_CONTINUE( 0x580000, 0x40000 ) /* 2/4 */
3387 ROM_CONTINUE( 0x780000, 0x40000 ) /* 3/4 */
3388 ROM_CONTINUE( 0x1c0000, 0x40000 ) /* Next block 2bpp 0/4 */
3389 ROM_CONTINUE( 0x3c0000, 0x40000 ) /* 1/4 */
3390 ROM_CONTINUE( 0x5c0000, 0x40000 ) /* 2/4 */
3391 ROM_CONTINUE( 0x7c0000, 0x40000 ) /* 3/4 */
3392
3393 ROM_REGION( 0x800000, "gfx4", 0 )
3394 ROM_LOAD32_BYTE( "mbm-08.a14", 0x000003, 0x100000, CRC(5358a43b) SHA1(778637fc63a0957338c7da3adb2555ffada177c4) )
3395 ROM_LOAD32_BYTE( "mbm-09.a16", 0x400003, 0x100000, CRC(2cce162f) SHA1(db5795465a36971861e8fb7436db0805717ad101) )
3396 ROM_LOAD32_BYTE( "mbm-10.a19", 0x000002, 0x100000, CRC(232e1c91) SHA1(868d4eb4873ecc210cbb3a266cae0b6ad8f11add) )
3397 ROM_LOAD32_BYTE( "mbm-11.a20", 0x400002, 0x100000, CRC(8a2a2a9f) SHA1(d11e0ea2785e35123bc56a8f18ce22f58432b599) )
3398 ROM_LOAD32_BYTE( "mbm-12.a21", 0x000001, 0x100000, CRC(7d221d66) SHA1(25c9c20485e443969c0bf4d74c4211c3881dabcd) )
3399 ROM_LOAD32_BYTE( "mbm-13.a22", 0x400001, 0x100000, CRC(678b9052) SHA1(ae8fc921813e53e9dbc3960e772c1c4de94c22a7) )
3400 ROM_LOAD32_BYTE( "mbm-14.a23", 0x000000, 0x100000, CRC(5aaaf929) SHA1(5ee30db9b83db664d77e6b5e0988ce3366460df6) )
3401 ROM_LOAD32_BYTE( "mbm-15.a25", 0x400000, 0x100000, CRC(789ce7b1) SHA1(3fb390ce0620ce7a63f7f46eac1ff0eb8ed76d26) )
3402
3403 ROM_REGION(0x80000, "oki1", 0 )
3404 ROM_LOAD( "mbm-07.n19", 0x00000, 0x80000, CRC(414f3793) SHA1(ed5f63e57390d503193fd1e9f7294ae1da6d3539) )
3405
3406 ROM_REGION(0x100000, "oki2", 0 )
3407 ROM_LOAD( "mbm-06.n17", 0x00000, 0x100000, CRC(f34d5999) SHA1(265b5f4e8598bcf9183bf9bd95db69b01536acb2) )
3408 ROM_END
3409
3410 ROM_START( gunhard ) /* Board No. DE-0420-1 + Bottom board DE-0421-0 slightly different hardware, a unique PCB and not a Dragongun conversion */
3411 ROM_REGION(0x200000, "maincpu", 0 ) /* ARM 32 bit code */
3412 ROM_LOAD32_BYTE( "nf-00-1.a6", 0x000002, 0x80000, CRC(2c8045d4) SHA1(4c900951d56bd22e30905969b8eb687d9b4363bd) )
3413 ROM_LOAD32_BYTE( "nf-01-1.a8", 0x000000, 0x80000, CRC(6f160117) SHA1(05738f61890e9d6d2b25330958c0e7369f2ff4a6) )
3414 ROM_LOAD32_BYTE( "nf-02-1.d6", 0x000003, 0x80000, CRC(bd353948) SHA1(ddcc12b3d1c8919eb7eb961d61f6286e6b37a58e) )
3415 ROM_LOAD32_BYTE( "nf-03-1.d8", 0x000001, 0x80000, CRC(118a9a72) SHA1(e0b2fd21f477e531d6a04256767874f13e031a48) )
3416
3417 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3418 ROM_LOAD( "nj-06-1.p22", 0x00000, 0x10000, CRC(31d1c245) SHA1(326e35e7ebd8ea761d90e856c50d86512327f2a5) )
3419
3420 ROM_REGION( 0x020000, "gfx1", 0 )
3421 ROM_LOAD16_BYTE( "nf-04-1.a15", 0x00000, 0x10000, CRC(f097b3d9) SHA1(5748de9a796afddd78dad7f5c184269ee533c51c) ) /* Encrypted tiles */
3422 ROM_LOAD16_BYTE( "nf-05-1.a17", 0x00001, 0x10000, CRC(448fec1e) SHA1(9a107959621cbb3688fd3ad9a8320aa5584f7d13) )
3423
3424 ROM_REGION( 0x100000, "gfx2", 0 )
3425 ROM_LOAD( "mbm-00.d15", 0x00000, 0x80000, CRC(b97de8ff) SHA1(59508f7135af22c2ac89db78874b1e8a68c53434) ) /* Encrypted tiles */
3426 ROM_LOAD( "mbm-01.d17", 0x80000, 0x80000, CRC(6d4b8fa0) SHA1(56e2b9adb4d010ba2592eccba654a24141441141) )
3427
3428 ROM_REGION( 0x800000, "gfx3", 0 )
3429 ROM_LOAD( "mbm-02.b21", 0x000000, 0x40000, CRC(e723019f) SHA1(15361d3e6db5707a7f0ead4254463c50163c864c) ) /* Encrypted tiles 0/4 */
3430 ROM_CONTINUE( 0x200000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
3431 ROM_CONTINUE( 0x400000, 0x40000 ) /* 2/4 */
3432 ROM_CONTINUE( 0x600000, 0x40000 ) /* 3/4 */
3433 ROM_CONTINUE( 0x040000, 0x40000 ) /* Next block 2bpp 0/4 */
3434 ROM_CONTINUE( 0x240000, 0x40000 ) /* 1/4 */
3435 ROM_CONTINUE( 0x440000, 0x40000 ) /* 2/4 */
3436 ROM_CONTINUE( 0x640000, 0x40000 ) /* 3/4 */
3437 ROM_LOAD( "mbm-03.b22", 0x080000, 0x40000, CRC(e0d09894) SHA1(be2faa81cf92b6fadfb2ec4ca2173157b05071ec) ) /* Encrypted tiles 0/4 */
3438 ROM_CONTINUE( 0x280000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
3439 ROM_CONTINUE( 0x480000, 0x40000 ) /* 2/4 */
3440 ROM_CONTINUE( 0x680000, 0x40000 ) /* 3/4 */
3441 ROM_CONTINUE( 0x0c0000, 0x40000 ) /* Next block 2bpp 0/4 */
3442 ROM_CONTINUE( 0x2c0000, 0x40000 ) /* 1/4 */
3443 ROM_CONTINUE( 0x4c0000, 0x40000 ) /* 2/4 */
3444 ROM_CONTINUE( 0x6c0000, 0x40000 ) /* 3/4 */
3445 ROM_LOAD( "mbm-04.e21", 0x100000, 0x40000, CRC(9e12466f) SHA1(51eaadfaf45d02d72b61052a606f97f36b3964fd) ) /* Encrypted tiles 0/4 */
3446 ROM_CONTINUE( 0x300000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
3447 ROM_CONTINUE( 0x500000, 0x40000 ) /* 2/4 */
3448 ROM_CONTINUE( 0x700000, 0x40000 ) /* 3/4 */
3449 ROM_CONTINUE( 0x140000, 0x40000 ) /* Next block 2bpp 0/4 */
3450 ROM_CONTINUE( 0x340000, 0x40000 ) /* 1/4 */
3451 ROM_CONTINUE( 0x540000, 0x40000 ) /* 2/4 */
3452 ROM_CONTINUE( 0x740000, 0x40000 ) /* 3/4 */
3453 ROM_LOAD( "mbm-05.e22", 0x180000, 0x40000, CRC(6ff02dc0) SHA1(5862e2189a09f963d5ec58ca4aa1c06210a3c7ef) ) /* Encrypted tiles 0/4 */
3454 ROM_CONTINUE( 0x380000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
3455 ROM_CONTINUE( 0x580000, 0x40000 ) /* 2/4 */
3456 ROM_CONTINUE( 0x780000, 0x40000 ) /* 3/4 */
3457 ROM_CONTINUE( 0x1c0000, 0x40000 ) /* Next block 2bpp 0/4 */
3458 ROM_CONTINUE( 0x3c0000, 0x40000 ) /* 1/4 */
3459 ROM_CONTINUE( 0x5c0000, 0x40000 ) /* 2/4 */
3460 ROM_CONTINUE( 0x7c0000, 0x40000 ) /* 3/4 */
3461
3462 ROM_REGION( 0x800000, "gfx4", 0 )
3463 ROM_LOAD32_BYTE( "mbm-08.a14", 0x000003, 0x100000, CRC(5358a43b) SHA1(778637fc63a0957338c7da3adb2555ffada177c4) )
3464 ROM_LOAD32_BYTE( "mbm-09.a16", 0x400003, 0x100000, CRC(2cce162f) SHA1(db5795465a36971861e8fb7436db0805717ad101) )
3465 ROM_LOAD32_BYTE( "mbm-10.a19", 0x000002, 0x100000, CRC(232e1c91) SHA1(868d4eb4873ecc210cbb3a266cae0b6ad8f11add) )
3466 ROM_LOAD32_BYTE( "mbm-11.a20", 0x400002, 0x100000, CRC(8a2a2a9f) SHA1(d11e0ea2785e35123bc56a8f18ce22f58432b599) )
3467 ROM_LOAD32_BYTE( "mbm-12.a21", 0x000001, 0x100000, CRC(7d221d66) SHA1(25c9c20485e443969c0bf4d74c4211c3881dabcd) )
3468 ROM_LOAD32_BYTE( "mbm-13.a22", 0x400001, 0x100000, CRC(678b9052) SHA1(ae8fc921813e53e9dbc3960e772c1c4de94c22a7) )
3469 ROM_LOAD32_BYTE( "mbm-14.a23", 0x000000, 0x100000, CRC(5aaaf929) SHA1(5ee30db9b83db664d77e6b5e0988ce3366460df6) )
3470 ROM_LOAD32_BYTE( "mbm-15.a25", 0x400000, 0x100000, CRC(789ce7b1) SHA1(3fb390ce0620ce7a63f7f46eac1ff0eb8ed76d26) )
3471
3472 ROM_REGION(0x80000, "oki1", 0 )
3473 ROM_LOAD( "mbm-07.n19", 0x00000, 0x80000, CRC(414f3793) SHA1(ed5f63e57390d503193fd1e9f7294ae1da6d3539) )
3474
3475 ROM_REGION(0x100000, "oki2", 0 )
3476 ROM_LOAD( "mbm-06.n17", 0x00000, 0x100000, CRC(f34d5999) SHA1(265b5f4e8598bcf9183bf9bd95db69b01536acb2) )
3477 ROM_END
3478
3479 ROM_START( lockloadu ) /* Board No. DE-0359-2 + Bottom board DE-0360-4, a Dragongun conversion */
3480 ROM_REGION(0x200000, "maincpu", 0 ) /* ARM 32 bit code */
3481 ROM_LOAD32_BYTE( "nh-00-0.b5", 0x000002, 0x80000, CRC(b8a57164) SHA1(b700a08db2ad1aa1bf0a32635ffbd5d3f08713ee) )
3482 ROM_LOAD32_BYTE( "nh-01-0.b8", 0x000000, 0x80000, CRC(e371ac50) SHA1(c448b54bc8962844b490994607b21b0c806d7714) )
3483 ROM_LOAD32_BYTE( "nh-02-0.d5", 0x000003, 0x80000, CRC(3e361e82) SHA1(b5445d44f2a775c141fdc561d5489234c39445a4) )
3484 ROM_LOAD32_BYTE( "nh-03-0.d8", 0x000001, 0x80000, CRC(d08ee9c3) SHA1(9a85710a11940df047e83e8d5977a23d6c67d665) )
3485
3486 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3487 ROM_LOAD( "nh-06-0.n25", 0x00000, 0x10000, CRC(7a1af51d) SHA1(54e6b16d3f5b787d3c6eb7203d8854e6e0fb9803) )
3488
3489 ROM_REGION( 0x020000, "gfx1", 0 )
3490 ROM_LOAD16_BYTE( "nh-04-0.b15", 0x00000, 0x10000, CRC(f097b3d9) SHA1(5748de9a796afddd78dad7f5c184269ee533c51c) ) /* Encrypted tiles */
3491 ROM_LOAD16_BYTE( "nh-05-0.b17", 0x00001, 0x10000, CRC(448fec1e) SHA1(9a107959621cbb3688fd3ad9a8320aa5584f7d13) )
3492
3493 ROM_REGION( 0x100000, "gfx2", 0 )
3494 ROM_LOAD( "mbm-00.d15", 0x00000, 0x80000, CRC(b97de8ff) SHA1(59508f7135af22c2ac89db78874b1e8a68c53434) ) /* Encrypted tiles */
3495 ROM_LOAD( "mbm-01.d17", 0x80000, 0x80000, CRC(6d4b8fa0) SHA1(56e2b9adb4d010ba2592eccba654a24141441141) )
3496
3497 ROM_REGION( 0x800000, "gfx3", 0 )
3498 ROM_LOAD( "mbm-02.b23", 0x000000, 0x40000, CRC(e723019f) SHA1(15361d3e6db5707a7f0ead4254463c50163c864c) ) /* Encrypted tiles 0/4 */
3499 ROM_CONTINUE( 0x200000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
3500 ROM_CONTINUE( 0x400000, 0x40000 ) /* 2/4 */
3501 ROM_CONTINUE( 0x600000, 0x40000 ) /* 3/4 */
3502 ROM_CONTINUE( 0x040000, 0x40000 ) /* Next block 2bpp 0/4 */
3503 ROM_CONTINUE( 0x240000, 0x40000 ) /* 1/4 */
3504 ROM_CONTINUE( 0x440000, 0x40000 ) /* 2/4 */
3505 ROM_CONTINUE( 0x640000, 0x40000 ) /* 3/4 */
3506 ROM_LOAD( "mbm-03.b26", 0x080000, 0x40000, CRC(e0d09894) SHA1(be2faa81cf92b6fadfb2ec4ca2173157b05071ec) ) /* Encrypted tiles 0/4 */
3507 ROM_CONTINUE( 0x280000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
3508 ROM_CONTINUE( 0x480000, 0x40000 ) /* 2/4 */
3509 ROM_CONTINUE( 0x680000, 0x40000 ) /* 3/4 */
3510 ROM_CONTINUE( 0x0c0000, 0x40000 ) /* Next block 2bpp 0/4 */
3511 ROM_CONTINUE( 0x2c0000, 0x40000 ) /* 1/4 */
3512 ROM_CONTINUE( 0x4c0000, 0x40000 ) /* 2/4 */
3513 ROM_CONTINUE( 0x6c0000, 0x40000 ) /* 3/4 */
3514 ROM_LOAD( "mbm-04.e23", 0x100000, 0x40000, CRC(9e12466f) SHA1(51eaadfaf45d02d72b61052a606f97f36b3964fd) ) /* Encrypted tiles 0/4 */
3515 ROM_CONTINUE( 0x300000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
3516 ROM_CONTINUE( 0x500000, 0x40000 ) /* 2/4 */
3517 ROM_CONTINUE( 0x700000, 0x40000 ) /* 3/4 */
3518 ROM_CONTINUE( 0x140000, 0x40000 ) /* Next block 2bpp 0/4 */
3519 ROM_CONTINUE( 0x340000, 0x40000 ) /* 1/4 */
3520 ROM_CONTINUE( 0x540000, 0x40000 ) /* 2/4 */
3521 ROM_CONTINUE( 0x740000, 0x40000 ) /* 3/4 */
3522 ROM_LOAD( "mbm-05.e26", 0x180000, 0x40000, CRC(6ff02dc0) SHA1(5862e2189a09f963d5ec58ca4aa1c06210a3c7ef) ) /* Encrypted tiles 0/4 */
3523 ROM_CONTINUE( 0x380000, 0x40000 ) /* 2 bpp per 0x40000 chunk, 1/4 */
3524 ROM_CONTINUE( 0x580000, 0x40000 ) /* 2/4 */
3525 ROM_CONTINUE( 0x780000, 0x40000 ) /* 3/4 */
3526 ROM_CONTINUE( 0x1c0000, 0x40000 ) /* Next block 2bpp 0/4 */
3527 ROM_CONTINUE( 0x3c0000, 0x40000 ) /* 1/4 */
3528 ROM_CONTINUE( 0x5c0000, 0x40000 ) /* 2/4 */
3529 ROM_CONTINUE( 0x7c0000, 0x40000 ) /* 3/4 */
3530
3531 ROM_REGION( 0x800000, "gfx4", 0 )
3532 ROM_LOAD32_BYTE( "mbm-08.a14", 0x000003, 0x100000, CRC(5358a43b) SHA1(778637fc63a0957338c7da3adb2555ffada177c4) )
3533 ROM_LOAD32_BYTE( "mbm-09.a16", 0x400003, 0x100000, CRC(2cce162f) SHA1(db5795465a36971861e8fb7436db0805717ad101) )
3534 ROM_LOAD32_BYTE( "mbm-10.a19", 0x000002, 0x100000, CRC(232e1c91) SHA1(868d4eb4873ecc210cbb3a266cae0b6ad8f11add) )
3535 ROM_LOAD32_BYTE( "mbm-11.a20", 0x400002, 0x100000, CRC(8a2a2a9f) SHA1(d11e0ea2785e35123bc56a8f18ce22f58432b599) )
3536 ROM_LOAD32_BYTE( "mbm-12.a21", 0x000001, 0x100000, CRC(7d221d66) SHA1(25c9c20485e443969c0bf4d74c4211c3881dabcd) )
3537 ROM_LOAD32_BYTE( "mbm-13.a22", 0x400001, 0x100000, CRC(678b9052) SHA1(ae8fc921813e53e9dbc3960e772c1c4de94c22a7) )
3538 ROM_LOAD32_BYTE( "mbm-14.a23", 0x000000, 0x100000, CRC(5aaaf929) SHA1(5ee30db9b83db664d77e6b5e0988ce3366460df6) )
3539 ROM_LOAD32_BYTE( "mbm-15.a25", 0x400000, 0x100000, CRC(789ce7b1) SHA1(3fb390ce0620ce7a63f7f46eac1ff0eb8ed76d26) )
3540
3541 ROM_REGION32_LE( 0x1000000, "dvi", ROMREGION_ERASE00 ) /* Video data - same as Dragongun, probably leftover from a conversion */
3542 // ROM_LOAD( "mar-17.bin", 0x00000, 0x100000, CRC(7799ed23) SHA1(ae28ad4fa6033a3695fa83356701b3774b26e6b0) )
3543 // ROM_LOAD( "mar-18.bin", 0x00000, 0x100000, CRC(ded66da9) SHA1(5134cb47043cc190a35ebdbf1912166669f9c055) )
3544 // ROM_LOAD( "mar-19.bin", 0x00000, 0x100000, CRC(bdd1ed20) SHA1(2435b23210b8fee4d39c30d4d3c6ea40afaa3b93) )
3545 // ROM_LOAD( "mar-20.bin", 0x00000, 0x100000, CRC(fa0462f0) SHA1(1a52617ad4d7abebc0f273dd979f4cf2d6a0306b) )
3546 // ROM_LOAD( "mar-21.bin", 0x00000, 0x100000, CRC(2d0a28ae) SHA1(d87f6f71bb76880e4d4f1eab8e0451b5c3df69a5) )
3547 // ROM_LOAD( "mar-22.bin", 0x00000, 0x100000, CRC(c85f3559) SHA1(a5d5cf9b18c9ef6a92d7643ca1ec9052de0d4a01) )
3548 // ROM_LOAD( "mar-23.bin", 0x00000, 0x100000, CRC(ba907d6a) SHA1(1fd99b66e6297c8d927c1cf723a613b4ee2e2f90) )
3549 // ROM_LOAD( "mar-24.bin", 0x00000, 0x100000, CRC(5cec45c8) SHA1(f99a26afaca9d9320477e469b09e3873bc8c156f) )
3550 // ROM_LOAD( "mar-25.bin", 0x00000, 0x100000, CRC(d65d895c) SHA1(4508dfff95a7aff5109dc74622cbb4503b0b5840) )
3551 // ROM_LOAD( "mar-26.bin", 0x00000, 0x100000, CRC(246a06c5) SHA1(447252be976a5059925f4ad98df8564b70198f62) )
3552 // ROM_LOAD( "mar-27.bin", 0x00000, 0x100000, CRC(3fcbd10f) SHA1(70fc7b88bbe35bbae1de14364b03d0a06d541de5) )
3553 // ROM_LOAD( "mar-28.bin", 0x00000, 0x100000, CRC(5a2ec71d) SHA1(447c404e6bb696f7eb7c61992a99b9be56f5d6b0) )
3554
3555 // not sure why the IC positions are swapped compared to Dragon Gun
3556 ROM_REGION(0x80000, "oki1", 0 )
3557 ROM_LOAD( "mbm-07.n21", 0x00000, 0x80000, CRC(414f3793) SHA1(ed5f63e57390d503193fd1e9f7294ae1da6d3539) )
3558
3559 ROM_REGION(0x100000, "oki2", ROMREGION_ERASE00 )
3560 ROM_LOAD( "mbm-06.n17", 0x00000, 0x100000, CRC(f34d5999) SHA1(265b5f4e8598bcf9183bf9bd95db69b01536acb2) )
3561
3562 ROM_REGION(0x80000, "oki3", ROMREGION_ERASE00 )
3563 ROM_LOAD( "mar-07.n19", 0x00000, 0x80000, CRC(40287d62) SHA1(c00cb08bcdae55bcddc14c38e88b0484b1bc9e3e) ) // same as dragngun, unused
3564 ROM_END
3565
3566 ROM_START( tattass )
3567 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
3568 ROM_LOAD32_WORD( "pp44.cpu", 0x000000, 0x80000, CRC(c3ca5b49) SHA1(c6420b0c20df1ae166b279504880ade65b1d8048) )
3569 ROM_LOAD32_WORD( "pp45.cpu", 0x000002, 0x80000, CRC(d3f30de0) SHA1(5a0aa0f96d29299b3b337b4b51bc84e447eb74d0) )
3570
3571 ROM_REGION(0x10000, "soundcpu", 0 ) /* Sound CPU */
3572 ROM_LOAD( "u7.snd", 0x00000, 0x10000, CRC(6947be8a) SHA1(4ac6c3c7f54501f23c434708cea6bf327bc8cf95) )
3573
3574 ROM_REGION( 0x200000, "gfx1", 0 )
3575 ROM_LOAD16_BYTE( "abak_b01.s02", 0x000000, 0x80000, CRC(bc805680) SHA1(ccdbca23fc843ef82a3524020999542f43b3c618) )
3576 ROM_LOAD16_BYTE( "abak_b01.s13", 0x000001, 0x80000, CRC(350effcd) SHA1(0452d95be9fc28bd00d846a2cc5828899d69601e) )
3577 ROM_LOAD16_BYTE( "abak_b23.s02", 0x100000, 0x80000, CRC(91abdc21) SHA1(ba08e59bc0417e863d35ea295cf58cfe8faf57b5) )
3578 ROM_LOAD16_BYTE( "abak_b23.s13", 0x100001, 0x80000, CRC(80eb50fe) SHA1(abfe1a5417ceff9d6d52372d11993bf9b1db9432) )
3579
3580 ROM_REGION( 0x200000, "gfx2", 0 )
3581 ROM_LOAD16_BYTE( "bbak_b01.s02", 0x000000, 0x80000, CRC(611be9a6) SHA1(86263c8beb562e0607a65aa30fbbe030a044cd75) )
3582 ROM_LOAD16_BYTE( "bbak_b01.s13", 0x000001, 0x80000, CRC(097e0604) SHA1(6ae241b37b6bb15fc66679cf66f500b8f8a19f44) )
3583 ROM_LOAD16_BYTE( "bbak_b23.s02", 0x100000, 0x80000, CRC(3836531a) SHA1(57bead820ac396ee0ed8fb2ac5c15929896d75bf) )
3584 ROM_LOAD16_BYTE( "bbak_b23.s13", 0x100001, 0x80000, CRC(1210485a) SHA1(9edc4c96f389e231066ef164a7b2851cd7ade038) )
3585
3586 ROM_REGION( 0xa00000, "gfx3", 0 )
3587 ROM_LOAD40_BYTE( "ob1_c0.b0", 0x000004, 0x80000, CRC(053fecca) SHA1(319efc71042238d9012d2c3dddab9d11205decc6) )
3588 ROM_LOAD40_BYTE( "ob1_c1.b0", 0x000003, 0x80000, CRC(e183e6bc) SHA1(d9cce277861967f403a882879e1baefa84696bdc) )
3589 ROM_LOAD40_BYTE( "ob1_c2.b0", 0x000002, 0x80000, CRC(1314f828) SHA1(6a91543d4e70af30de287ba775c69ffb1cde719d) )
3590 ROM_LOAD40_BYTE( "ob1_c3.b0", 0x000001, 0x80000, CRC(c63866df) SHA1(a897835d8a33002f1bd54f27d1a6393c4e1864b9) )
3591 ROM_LOAD40_BYTE( "ob1_c4.b0", 0x000000, 0x80000, CRC(f71cdd1b) SHA1(6fbccdbe460c8ddfeed972ebe766a6f8a2d4c466) )
3592
3593 ROM_LOAD40_BYTE( "ob1_c0.b1", 0x280004, 0x80000, CRC(385434b0) SHA1(ea764bd9844e13f5b10207022135dbe07bf0258a) )
3594 ROM_LOAD40_BYTE( "ob1_c1.b1", 0x280003, 0x80000, CRC(0a3ec489) SHA1(1a2e1252d6acda43019ded5a31ae60bef40e4bd9) )
3595 ROM_LOAD40_BYTE( "ob1_c2.b1", 0x280002, 0x80000, CRC(52f06081) SHA1(c630f45b110b9423dfb0bf92359fdb28b75c8cf1) )
3596 ROM_LOAD40_BYTE( "ob1_c3.b1", 0x280001, 0x80000, CRC(a8a5cfbe) SHA1(7afc8f7c7f3826a276e4840e4fc8b8bb645dd3bd) )
3597 ROM_LOAD40_BYTE( "ob1_c4.b1", 0x280000, 0x80000, CRC(09d0acd6) SHA1(1b162f5b76852e49ae6a24db2031d66ca59d87e9) )
3598
3599 ROM_LOAD40_BYTE( "ob1_c0.b2", 0x500004, 0x80000, CRC(946e9f59) SHA1(46a0d35641b381fe553caa00451c30f1950b5dfd) )
3600 ROM_LOAD40_BYTE( "ob1_c1.b2", 0x500003, 0x80000, CRC(9f66ad54) SHA1(6e6ac6edee2f2dda46e7cd85db8d79c8335c73cd) )
3601 ROM_LOAD40_BYTE( "ob1_c2.b2", 0x500002, 0x80000, CRC(a8df60eb) SHA1(c971e66eec6accccaf2bdd87dde7adde79322da9) )
3602 ROM_LOAD40_BYTE( "ob1_c3.b2", 0x500001, 0x80000, CRC(a1a753be) SHA1(1666a32bb69db36dba029a835592d00a21ad8c5e) )
3603 ROM_LOAD40_BYTE( "ob1_c4.b2", 0x500000, 0x80000, CRC(b65b3c4b) SHA1(f636a682b506e3ce5ca07ba8fd3166158d1ab667) )
3604
3605 ROM_LOAD40_BYTE( "ob1_c0.b3", 0x780004, 0x80000, CRC(cbbbc696) SHA1(6f2383655461ac35f3178e0f7c0146cff89c8295) )
3606 ROM_LOAD40_BYTE( "ob1_c1.b3", 0x780003, 0x80000, CRC(f7b1bdee) SHA1(1d505d8d4ede55246de0b5fbc6ca20f836699b60) )
3607 ROM_LOAD40_BYTE( "ob1_c2.b3", 0x780002, 0x80000, CRC(97815619) SHA1(b1b694310064971aa5438671d0f9992b7e4bf277) )
3608 ROM_LOAD40_BYTE( "ob1_c3.b3", 0x780001, 0x80000, CRC(fc3ccb7a) SHA1(4436fcbd830912589bd6c838eb63b7d41a2bb56e) )
3609 ROM_LOAD40_BYTE( "ob1_c4.b3", 0x780000, 0x80000, CRC(dfdfd0ff) SHA1(79dc686351d41d635359936efe97c7ade305dc84) )
3610
3611 ROM_REGION( 0x800000, "gfx4", 0 )
3612 ROM_LOAD16_BYTE( "ob2_c0.b0", 0x000000, 0x80000, CRC(9080ebe4) SHA1(1cfabe045532e16f203fe054449149451a280f56) )
3613 ROM_LOAD16_BYTE( "ob2_c1.b0", 0x000001, 0x80000, CRC(c0464970) SHA1(2bd87c9a7ed0742a8f1ee0c0de225e18a0351168) )
3614 ROM_LOAD16_BYTE( "ob2_c2.b0", 0x400000, 0x80000, CRC(35a2e621) SHA1(ff7687e30c379cbcee4f80c0c737cef891509881) )
3615 ROM_LOAD16_BYTE( "ob2_c3.b0", 0x400001, 0x80000, CRC(99c7cc2d) SHA1(c761e5b7f1e2afdafef36390f7141ebcb5e8f254) )
3616 ROM_LOAD16_BYTE( "ob2_c0.b1", 0x100000, 0x80000, CRC(2c2c15c9) SHA1(fdc48fab6dad97d16d4e77479fa77bb320eb3767) )
3617 ROM_LOAD16_BYTE( "ob2_c1.b1", 0x100001, 0x80000, CRC(d2c49a14) SHA1(49d92233d6d5f77fbbf9d31607c568efef6d94f0) )
3618 ROM_LOAD16_BYTE( "ob2_c2.b1", 0x500000, 0x80000, CRC(fbe957e8) SHA1(4f0bb0e434771316bcd8796878ffd3e5cafebb2b) )
3619 ROM_LOAD16_BYTE( "ob2_c3.b1", 0x500001, 0x80000, CRC(d7238829) SHA1(6fef08a518be69251852d3204413b4b8b6615be2) )
3620 ROM_LOAD16_BYTE( "ob2_c0.b2", 0x200000, 0x80000, CRC(aefa1b01) SHA1(bbd4b432b36d64f80065c56559ea9675acf3151e) )
3621 ROM_LOAD16_BYTE( "ob2_c1.b2", 0x200001, 0x80000, CRC(4af620ca) SHA1(f3753235b2e72f011c9b94f26a425b9a79577201) )
3622 ROM_LOAD16_BYTE( "ob2_c2.b2", 0x600000, 0x80000, CRC(8e58be07) SHA1(d8a8662e800da0892d70c628de0ca27ff983006c) )
3623 ROM_LOAD16_BYTE( "ob2_c3.b2", 0x600001, 0x80000, CRC(1b5188c5) SHA1(4792a36b889a2c2dfab9ec78d848d3d8bf10d20f) )
3624 ROM_LOAD16_BYTE( "ob2_c0.b3", 0x300000, 0x80000, CRC(a2a5dafd) SHA1(2baadcfe9ae8fa30ae4226caa10fe3d58f8af3e0) )
3625 ROM_LOAD16_BYTE( "ob2_c1.b3", 0x300001, 0x80000, CRC(6f0afd05) SHA1(6a4bf3466a77d14b3bc18377537f86108774badd) )
3626 ROM_LOAD16_BYTE( "ob2_c2.b3", 0x700000, 0x80000, CRC(90fe5f4f) SHA1(2149e9eae152556c632ebd4d0b2de49e40916a77) )
3627 ROM_LOAD16_BYTE( "ob2_c3.b3", 0x700001, 0x80000, CRC(e3517e6e) SHA1(68ac60570423d8f0d7cff3db1901c9c050d0be91) )
3628
3629 ROM_REGION(0x1000000, "bsmt", 0 )
3630 ROM_LOAD( "u17.snd", 0x000000, 0x80000, CRC(b945c18d) SHA1(6556bbb4a7057df3680132f24687fa944006c784) )
3631 ROM_LOAD( "u21.snd", 0x080000, 0x80000, CRC(10b2110c) SHA1(83e5938ed22da2874022e1dc8df76c72d95c448d) )
3632 ROM_LOAD( "u36.snd", 0x100000, 0x80000, CRC(3b73abe2) SHA1(195096e2302e84123b23b4ccd982fb3ab9afe42c) )
3633 ROM_LOAD( "u37.snd", 0x180000, 0x80000, CRC(986066b5) SHA1(9dd1a14de81733617cf51293674a8e26fc5cec68) )
3634
3635 ROM_REGION( 0x400, "eeprom", 0 )
3636 ROM_LOAD( "eeprom-tattass.bin", 0x0000, 0x0400, CRC(7140f40c) SHA1(4fb7897933046b6adaf00b4626d5fd23d0e8a666) )
3637 ROM_END
3638
3639 ROM_START( tattassa )
3640 ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
3641 ROM_LOAD32_WORD( "rev232a.000", 0x000000, 0x80000, CRC(1a357112) SHA1(d7f78f90970fd56ca1452a4c138168568b06d868) )
3642 ROM_LOAD32_WORD( "rev232a.001", 0x000002, 0x80000, CRC(550245d4) SHA1(c1b2b31768da9becebd907a8622d05aa68ecaa29) )
3643
3644 ROM_REGION(0x10000, "soundcpu", 0 ) /* Sound CPU */
3645 ROM_LOAD( "u7.snd", 0x00000, 0x10000, CRC(6947be8a) SHA1(4ac6c3c7f54501f23c434708cea6bf327bc8cf95) )
3646
3647 ROM_REGION( 0x200000, "gfx1", 0 )
3648 ROM_LOAD16_BYTE( "abak_b01.s02", 0x000000, 0x80000, CRC(bc805680) SHA1(ccdbca23fc843ef82a3524020999542f43b3c618) )
3649 ROM_LOAD16_BYTE( "abak_b01.s13", 0x000001, 0x80000, CRC(350effcd) SHA1(0452d95be9fc28bd00d846a2cc5828899d69601e) )
3650 ROM_LOAD16_BYTE( "abak_b23.s02", 0x100000, 0x80000, CRC(91abdc21) SHA1(ba08e59bc0417e863d35ea295cf58cfe8faf57b5) )
3651 ROM_LOAD16_BYTE( "abak_b23.s13", 0x100001, 0x80000, CRC(80eb50fe) SHA1(abfe1a5417ceff9d6d52372d11993bf9b1db9432) )
3652
3653 ROM_REGION( 0x200000, "gfx2", 0 )
3654 ROM_LOAD16_BYTE( "bbak_b01.s02", 0x000000, 0x80000, CRC(611be9a6) SHA1(86263c8beb562e0607a65aa30fbbe030a044cd75) )
3655 ROM_LOAD16_BYTE( "bbak_b01.s13", 0x000001, 0x80000, CRC(097e0604) SHA1(6ae241b37b6bb15fc66679cf66f500b8f8a19f44) )
3656 ROM_LOAD16_BYTE( "bbak_b23.s02", 0x100000, 0x80000, CRC(3836531a) SHA1(57bead820ac396ee0ed8fb2ac5c15929896d75bf) )
3657 ROM_LOAD16_BYTE( "bbak_b23.s13", 0x100001, 0x80000, CRC(1210485a) SHA1(9edc4c96f389e231066ef164a7b2851cd7ade038) )
3658
3659 ROM_REGION( 0xa00000, "gfx3", 0 )
3660 ROM_LOAD40_BYTE( "ob1_c0.b0", 0x000004, 0x80000, CRC(053fecca) SHA1(319efc71042238d9012d2c3dddab9d11205decc6) )
3661 ROM_LOAD40_BYTE( "ob1_c1.b0", 0x000003, 0x80000, CRC(e183e6bc) SHA1(d9cce277861967f403a882879e1baefa84696bdc) )
3662 ROM_LOAD40_BYTE( "ob1_c2.b0", 0x000002, 0x80000, CRC(1314f828) SHA1(6a91543d4e70af30de287ba775c69ffb1cde719d) )
3663 ROM_LOAD40_BYTE( "ob1_c3.b0", 0x000001, 0x80000, CRC(c63866df) SHA1(a897835d8a33002f1bd54f27d1a6393c4e1864b9) )
3664 ROM_LOAD40_BYTE( "ob1_c4.b0", 0x000000, 0x80000, CRC(f71cdd1b) SHA1(6fbccdbe460c8ddfeed972ebe766a6f8a2d4c466) )
3665
3666 ROM_LOAD40_BYTE( "ob1_c0.b1", 0x280004, 0x80000, CRC(385434b0) SHA1(ea764bd9844e13f5b10207022135dbe07bf0258a) )
3667 ROM_LOAD40_BYTE( "ob1_c1.b1", 0x280003, 0x80000, CRC(0a3ec489) SHA1(1a2e1252d6acda43019ded5a31ae60bef40e4bd9) )
3668 ROM_LOAD40_BYTE( "ob1_c2.b1", 0x280002, 0x80000, CRC(52f06081) SHA1(c630f45b110b9423dfb0bf92359fdb28b75c8cf1) )
3669 ROM_LOAD40_BYTE( "ob1_c3.b1", 0x280001, 0x80000, CRC(a8a5cfbe) SHA1(7afc8f7c7f3826a276e4840e4fc8b8bb645dd3bd) )
3670 ROM_LOAD40_BYTE( "ob1_c4.b1", 0x280000, 0x80000, CRC(09d0acd6) SHA1(1b162f5b76852e49ae6a24db2031d66ca59d87e9) )
3671
3672 ROM_LOAD40_BYTE( "ob1_c0.b2", 0x500004, 0x80000, CRC(946e9f59) SHA1(46a0d35641b381fe553caa00451c30f1950b5dfd) )
3673 ROM_LOAD40_BYTE( "ob1_c1.b2", 0x500003, 0x80000, CRC(9f66ad54) SHA1(6e6ac6edee2f2dda46e7cd85db8d79c8335c73cd) )
3674 ROM_LOAD40_BYTE( "ob1_c2.b2", 0x500002, 0x80000, CRC(a8df60eb) SHA1(c971e66eec6accccaf2bdd87dde7adde79322da9) )
3675 ROM_LOAD40_BYTE( "ob1_c3.b2", 0x500001, 0x80000, CRC(a1a753be) SHA1(1666a32bb69db36dba029a835592d00a21ad8c5e) )
3676 ROM_LOAD40_BYTE( "ob1_c4.b2", 0x500000, 0x80000, CRC(b65b3c4b) SHA1(f636a682b506e3ce5ca07ba8fd3166158d1ab667) )
3677
3678 ROM_LOAD40_BYTE( "ob1_c0.b3", 0x780004, 0x80000, CRC(cbbbc696) SHA1(6f2383655461ac35f3178e0f7c0146cff89c8295) )
3679 ROM_LOAD40_BYTE( "ob1_c1.b3", 0x780003, 0x80000, CRC(f7b1bdee) SHA1(1d505d8d4ede55246de0b5fbc6ca20f836699b60) )
3680 ROM_LOAD40_BYTE( "ob1_c2.b3", 0x780002, 0x80000, CRC(97815619) SHA1(b1b694310064971aa5438671d0f9992b7e4bf277) )
3681 ROM_LOAD40_BYTE( "ob1_c3.b3", 0x780001, 0x80000, CRC(fc3ccb7a) SHA1(4436fcbd830912589bd6c838eb63b7d41a2bb56e) )
3682 ROM_LOAD40_BYTE( "ob1_c4.b3", 0x780000, 0x80000, CRC(dfdfd0ff) SHA1(79dc686351d41d635359936efe97c7ade305dc84) )
3683
3684 ROM_REGION( 0x800000, "gfx4", 0 )
3685 ROM_LOAD16_BYTE( "ob2_c0.b0", 0x000000, 0x80000, CRC(9080ebe4) SHA1(1cfabe045532e16f203fe054449149451a280f56) )
3686 ROM_LOAD16_BYTE( "ob2_c1.b0", 0x000001, 0x80000, CRC(c0464970) SHA1(2bd87c9a7ed0742a8f1ee0c0de225e18a0351168) )
3687 ROM_LOAD16_BYTE( "ob2_c2.b0", 0x400000, 0x80000, CRC(35a2e621) SHA1(ff7687e30c379cbcee4f80c0c737cef891509881) )
3688 ROM_LOAD16_BYTE( "ob2_c3.b0", 0x400001, 0x80000, CRC(99c7cc2d) SHA1(c761e5b7f1e2afdafef36390f7141ebcb5e8f254) )
3689 ROM_LOAD16_BYTE( "ob2_c0.b1", 0x100000, 0x80000, CRC(2c2c15c9) SHA1(fdc48fab6dad97d16d4e77479fa77bb320eb3767) )
3690 ROM_LOAD16_BYTE( "ob2_c1.b1", 0x100001, 0x80000, CRC(d2c49a14) SHA1(49d92233d6d5f77fbbf9d31607c568efef6d94f0) )
3691 ROM_LOAD16_BYTE( "ob2_c2.b1", 0x500000, 0x80000, CRC(fbe957e8) SHA1(4f0bb0e434771316bcd8796878ffd3e5cafebb2b) )
3692 ROM_LOAD16_BYTE( "ob2_c3.b1", 0x500001, 0x80000, CRC(d7238829) SHA1(6fef08a518be69251852d3204413b4b8b6615be2) )
3693 ROM_LOAD16_BYTE( "ob2_c0.b2", 0x200000, 0x80000, CRC(aefa1b01) SHA1(bbd4b432b36d64f80065c56559ea9675acf3151e) )
3694 ROM_LOAD16_BYTE( "ob2_c1.b2", 0x200001, 0x80000, CRC(4af620ca) SHA1(f3753235b2e72f011c9b94f26a425b9a79577201) )
3695 ROM_LOAD16_BYTE( "ob2_c2.b2", 0x600000, 0x80000, CRC(8e58be07) SHA1(d8a8662e800da0892d70c628de0ca27ff983006c) )
3696 ROM_LOAD16_BYTE( "ob2_c3.b2", 0x600001, 0x80000, CRC(1b5188c5) SHA1(4792a36b889a2c2dfab9ec78d848d3d8bf10d20f) )
3697 ROM_LOAD16_BYTE( "ob2_c0.b3", 0x300000, 0x80000, CRC(a2a5dafd) SHA1(2baadcfe9ae8fa30ae4226caa10fe3d58f8af3e0) )
3698 ROM_LOAD16_BYTE( "ob2_c1.b3", 0x300001, 0x80000, CRC(6f0afd05) SHA1(6a4bf3466a77d14b3bc18377537f86108774badd) )
3699 ROM_LOAD16_BYTE( "ob2_c2.b3", 0x700000, 0x80000, CRC(90fe5f4f) SHA1(2149e9eae152556c632ebd4d0b2de49e40916a77) )
3700 ROM_LOAD16_BYTE( "ob2_c3.b3", 0x700001, 0x80000, CRC(e3517e6e) SHA1(68ac60570423d8f0d7cff3db1901c9c050d0be91) )
3701
3702 ROM_REGION(0x1000000, "bsmt", 0 )
3703 ROM_LOAD( "u17.snd", 0x000000, 0x80000, CRC(b945c18d) SHA1(6556bbb4a7057df3680132f24687fa944006c784) )
3704 ROM_LOAD( "u21.snd", 0x080000, 0x80000, CRC(10b2110c) SHA1(83e5938ed22da2874022e1dc8df76c72d95c448d) )
3705 ROM_LOAD( "u36.snd", 0x100000, 0x80000, CRC(3b73abe2) SHA1(195096e2302e84123b23b4ccd982fb3ab9afe42c) )
3706 ROM_LOAD( "u37.snd", 0x180000, 0x80000, CRC(986066b5) SHA1(9dd1a14de81733617cf51293674a8e26fc5cec68) )
3707
3708 ROM_REGION( 0x400, "eeprom", 0 )
3709 ROM_LOAD( "eeprom-tattass.bin", 0x0000, 0x0400, CRC(7140f40c) SHA1(4fb7897933046b6adaf00b4626d5fd23d0e8a666) )
3710 ROM_END
3711
3712 ROM_START( nslasher ) /* DE-0397-0 PCB */
3713 ROM_REGION(0x100000, "maincpu", 0 ) /* Encrypted ARM 32 bit code */
3714 ROM_LOAD32_WORD( "mainprg.1f", 0x000000, 0x80000, CRC(507acbae) SHA1(329a2bb244f2f3adb8d75cab5aa2dcb129d70712) )
3715 ROM_LOAD32_WORD( "mainprg.2f", 0x000002, 0x80000, CRC(931fc7ee) SHA1(54eb12abfa3f332ce9b43a45ec424aaee88641a6) )
3716
3717 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3718 ROM_LOAD( "sndprg.17l", 0x00000, 0x10000, CRC(18939e92) SHA1(50b37a78d9d2259d4b140dd17393c4e5ca92bca5) )
3719
3720 ROM_REGION( 0x200000, "gfx1", 0 )
3721 ROM_LOAD( "mbh-00.8c", 0x000000, 0x200000, CRC(a877f8a3) SHA1(79253525f360a73161894f31e211e4d6b38d307a) ) /* Encrypted tiles */
3722
3723 ROM_REGION( 0x200000, "gfx2", 0 )
3724 ROM_LOAD( "mbh-01.9c", 0x000000, 0x200000, CRC(1853dafc) SHA1(b1183c0db301cbed9f079c782202dbfc553b198e) ) /* Encrypted tiles */
3725
3726 ROM_REGION( 0x640000, "gfx3", 0 ) /* Sprites */
3727 ROM_LOAD40_WORD_SWAP( "mbh-02.14c", 0x000003, 0x200000, CRC(b2f158a1) SHA1(4f8c0b324813db198fe1dad7fff4185b828b94de) )
3728 ROM_LOAD40_WORD_SWAP( "mbh-04.16c", 0x000001, 0x200000, CRC(eecfe06d) SHA1(2df817fe5e2ea31207b217bb03dc58979c05d0d2) )
3729 ROM_LOAD40_BYTE( "mbh-06.18c", 0x000000, 0x100000, CRC(038c2127) SHA1(5bdb215305f1a419fde27a83b623a38b9328e560) )
3730 ROM_LOAD40_WORD_SWAP( "mbh-03.15c", 0x500003, 0x080000, CRC(787787e3) SHA1(531444e3f28aa9a7539a5a76ca94a9d6b97274c5) )
3731 ROM_LOAD40_WORD_SWAP( "mbh-05.17c", 0x500001, 0x080000, CRC(1d2b7c17) SHA1(ae0b8e0448a1a8180fb424fb0bc8a4302f8ff602) )
3732 ROM_LOAD40_BYTE( "mbh-07.19c", 0x500000, 0x040000, CRC(bbd22323) SHA1(6ab665b2e6d04cdadc48c52e15098e978b61fe10) )
3733
3734 ROM_REGION( 0x100000, "gfx4", 0 ) /* Sprites */
3735 ROM_LOAD( "mbh-08.16e", 0x000000, 0x80000, CRC(cdd7f8cb) SHA1(910bbe8783c0ba722e9d6399b332d658fa059fdb) )
3736 ROM_LOAD( "mbh-09.18e", 0x080000, 0x80000, CRC(33fa2121) SHA1(eb0e99d29b1ad9995df28e5b7cfc89d53efb53c3) )
3737
3738 ROM_REGION(0x80000, "oki1", 0 )
3739 ROM_LOAD( "mbh-10.14l", 0x000000, 0x80000, CRC(c4d6b116) SHA1(c5685bce6a6c6a74ca600ebf766ba1007f0dc666) )
3740
3741 ROM_REGION(0x80000, "oki2", 0 )
3742 ROM_LOAD( "mbh-11.16l", 0x000000, 0x80000, CRC(0ec40b6b) SHA1(9fef44149608ae2a00f6a75a6f77f2efcab6e78e) )
3743
3744 ROM_REGION(0x200, "prom", 0 )
3745 ROM_LOAD( "ln-00.j7", 0x000000, 0x200, CRC(5e83eaf3) SHA1(95f5eb8e56dff6c2dce7c39a6dd458bfc38fe1cf) )
3746
3747 ROM_REGION( 0x0600, "plds", 0 )
3748 ROM_LOAD( "vm-00.3d", 0x0000, 0x0117, NO_DUMP ) /* 16L8ACN is read protected */
3749 ROM_LOAD( "vm-01.4d", 0x0200, 0x0117, NO_DUMP ) /* 16L8ACN is read protected */
3750 ROM_LOAD( "vm-02.8j", 0x0400, 0x0117, CRC(53692426) SHA1(b8f8cf6b1f6b637fcd1fcd62474e637f5d4a6901) )
3751 ROM_END
3752
3753 ROM_START( nslasherj ) /* DE-0397-0 PCB */
3754 ROM_REGION(0x100000, "maincpu", 0 ) /* Encrypted ARM 32 bit code */
3755 ROM_LOAD32_WORD( "lx-00.1f", 0x000000, 0x80000, CRC(6ed5fb88) SHA1(84350da7939a479968a523c84e254e3ee54b8da2) )
3756 ROM_LOAD32_WORD( "lx-01.2f", 0x000002, 0x80000, CRC(a6df2152) SHA1(6fe7e0b2e71c5f807951dcc81a6a3cff55247961) )
3757
3758 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3759 ROM_LOAD( "sndprg.17l", 0x00000, 0x10000, CRC(18939e92) SHA1(50b37a78d9d2259d4b140dd17393c4e5ca92bca5) )
3760
3761 ROM_REGION( 0x200000, "gfx1", 0 )
3762 ROM_LOAD( "mbh-00.8c", 0x000000, 0x200000, CRC(a877f8a3) SHA1(79253525f360a73161894f31e211e4d6b38d307a) ) /* Encrypted tiles */
3763
3764 ROM_REGION( 0x200000, "gfx2", 0 )
3765 ROM_LOAD( "mbh-01.9c", 0x000000, 0x200000, CRC(1853dafc) SHA1(b1183c0db301cbed9f079c782202dbfc553b198e) ) /* Encrypted tiles */
3766
3767 ROM_REGION( 0x640000, "gfx3", 0 ) /* Sprites */
3768 ROM_LOAD40_WORD_SWAP( "mbh-02.14c", 0x000003, 0x200000, CRC(b2f158a1) SHA1(4f8c0b324813db198fe1dad7fff4185b828b94de) )
3769 ROM_LOAD40_WORD_SWAP( "mbh-04.16c", 0x000001, 0x200000, CRC(eecfe06d) SHA1(2df817fe5e2ea31207b217bb03dc58979c05d0d2) )
3770 ROM_LOAD40_BYTE( "mbh-06.18c", 0x000000, 0x100000, CRC(038c2127) SHA1(5bdb215305f1a419fde27a83b623a38b9328e560) )
3771 ROM_LOAD40_WORD_SWAP( "mbh-03.15c", 0x500003, 0x080000, CRC(787787e3) SHA1(531444e3f28aa9a7539a5a76ca94a9d6b97274c5) )
3772 ROM_LOAD40_WORD_SWAP( "mbh-05.17c", 0x500001, 0x080000, CRC(1d2b7c17) SHA1(ae0b8e0448a1a8180fb424fb0bc8a4302f8ff602) )
3773 ROM_LOAD40_BYTE( "mbh-07.19c", 0x500000, 0x040000, CRC(bbd22323) SHA1(6ab665b2e6d04cdadc48c52e15098e978b61fe10) )
3774
3775 ROM_REGION( 0x100000, "gfx4", 0 ) /* Sprites */
3776 ROM_LOAD( "mbh-08.16e", 0x000000, 0x80000, CRC(cdd7f8cb) SHA1(910bbe8783c0ba722e9d6399b332d658fa059fdb) )
3777 ROM_LOAD( "mbh-09.18e", 0x080000, 0x80000, CRC(33fa2121) SHA1(eb0e99d29b1ad9995df28e5b7cfc89d53efb53c3) )
3778
3779 ROM_REGION(0x80000, "oki1", 0 )
3780 ROM_LOAD( "mbh-10.14l", 0x000000, 0x80000, CRC(c4d6b116) SHA1(c5685bce6a6c6a74ca600ebf766ba1007f0dc666) )
3781
3782 ROM_REGION(0x80000, "oki2", 0 )
3783 ROM_LOAD( "mbh-11.16l", 0x000000, 0x80000, CRC(0ec40b6b) SHA1(9fef44149608ae2a00f6a75a6f77f2efcab6e78e) )
3784
3785 ROM_REGION(0x200, "prom", 0 )
3786 ROM_LOAD( "ln-00.j7", 0x000000, 0x200, CRC(5e83eaf3) SHA1(95f5eb8e56dff6c2dce7c39a6dd458bfc38fe1cf) )
3787
3788 ROM_REGION( 0x0600, "plds", 0 )
3789 ROM_LOAD( "vm-00.3d", 0x0000, 0x0117, NO_DUMP ) /* 16L8ACN is read protected */
3790 ROM_LOAD( "vm-01.4d", 0x0200, 0x0117, NO_DUMP ) /* 16L8ACN is read protected */
3791 ROM_LOAD( "vm-02.8j", 0x0400, 0x0117, CRC(53692426) SHA1(b8f8cf6b1f6b637fcd1fcd62474e637f5d4a6901) )
3792 ROM_END
3793
3794 ROM_START( nslashers ) /* DE-0397-0 PCB */
3795 ROM_REGION(0x100000, "maincpu", 0 ) /* Encrypted ARM 32 bit code */
3796 ROM_LOAD32_WORD( "ly-00.1f", 0x000000, 0x80000, CRC(fa0646f9) SHA1(7f9633bda230a0ced59171cdc5ab40a6d56c3d34) )
3797 ROM_LOAD32_WORD( "ly-01.2f", 0x000002, 0x80000, CRC(ae508149) SHA1(3592949e5fb2770adb9c9daa4e38c4e75f3e2554) )
3798
3799 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3800 ROM_LOAD( "sndprg.17l", 0x00000, 0x10000, CRC(18939e92) SHA1(50b37a78d9d2259d4b140dd17393c4e5ca92bca5) )
3801
3802 ROM_REGION( 0x200000, "gfx1", 0 )
3803 ROM_LOAD( "mbh-00.8c", 0x000000, 0x200000, CRC(a877f8a3) SHA1(79253525f360a73161894f31e211e4d6b38d307a) ) /* Encrypted tiles */
3804
3805 ROM_REGION( 0x200000, "gfx2", 0 )
3806 ROM_LOAD( "mbh-01.9c", 0x000000, 0x200000, CRC(1853dafc) SHA1(b1183c0db301cbed9f079c782202dbfc553b198e) ) /* Encrypted tiles */
3807
3808 ROM_REGION( 0x640000, "gfx3", 0 ) /* Sprites */
3809 ROM_LOAD40_WORD_SWAP( "mbh-02.14c", 0x000003, 0x200000, CRC(b2f158a1) SHA1(4f8c0b324813db198fe1dad7fff4185b828b94de) )
3810 ROM_LOAD40_WORD_SWAP( "mbh-04.16c", 0x000001, 0x200000, CRC(eecfe06d) SHA1(2df817fe5e2ea31207b217bb03dc58979c05d0d2) )
3811 ROM_LOAD40_BYTE( "mbh-06.18c", 0x000000, 0x100000, CRC(038c2127) SHA1(5bdb215305f1a419fde27a83b623a38b9328e560) )
3812 ROM_LOAD40_WORD_SWAP( "mbh-03.15c", 0x500003, 0x080000, CRC(787787e3) SHA1(531444e3f28aa9a7539a5a76ca94a9d6b97274c5) )
3813 ROM_LOAD40_WORD_SWAP( "mbh-05.17c", 0x500001, 0x080000, CRC(1d2b7c17) SHA1(ae0b8e0448a1a8180fb424fb0bc8a4302f8ff602) )
3814 ROM_LOAD40_BYTE( "mbh-07.19c", 0x500000, 0x040000, CRC(bbd22323) SHA1(6ab665b2e6d04cdadc48c52e15098e978b61fe10) )
3815
3816 ROM_REGION( 0x100000, "gfx4", 0 ) /* Sprites */
3817 ROM_LOAD( "mbh-08.16e", 0x000000, 0x80000, CRC(cdd7f8cb) SHA1(910bbe8783c0ba722e9d6399b332d658fa059fdb) )
3818 ROM_LOAD( "mbh-09.18e", 0x080000, 0x80000, CRC(33fa2121) SHA1(eb0e99d29b1ad9995df28e5b7cfc89d53efb53c3) )
3819
3820 ROM_REGION(0x80000, "oki1", 0 )
3821 ROM_LOAD( "mbh-10.14l", 0x000000, 0x80000, CRC(c4d6b116) SHA1(c5685bce6a6c6a74ca600ebf766ba1007f0dc666) )
3822
3823 ROM_REGION(0x80000, "oki2", 0 )
3824 ROM_LOAD( "mbh-11.16l", 0x000000, 0x80000, CRC(0ec40b6b) SHA1(9fef44149608ae2a00f6a75a6f77f2efcab6e78e) )
3825
3826 ROM_REGION(0x200, "prom", 0 )
3827 ROM_LOAD( "ln-00.j7", 0x000000, 0x200, CRC(5e83eaf3) SHA1(95f5eb8e56dff6c2dce7c39a6dd458bfc38fe1cf) )
3828
3829 ROM_REGION( 0x0600, "plds", 0 )
3830 ROM_LOAD( "vm-00.3d", 0x0000, 0x0117, NO_DUMP ) /* 16L8ACN is read protected */
3831 ROM_LOAD( "vm-01.4d", 0x0200, 0x0117, NO_DUMP ) /* 16L8ACN is read protected */
3832 ROM_LOAD( "vm-02.8j", 0x0400, 0x0117, CRC(53692426) SHA1(b8f8cf6b1f6b637fcd1fcd62474e637f5d4a6901) )
3833 ROM_END
3834
3835 ROM_START( nslasheru ) /* DE-0395-1 PCB */
3836 ROM_REGION(0x100000, "maincpu", 0 ) /* Encrypted ARM 32 bit code */
3837 ROM_LOAD32_WORD( "00.f1", 0x000000, 0x80000, CRC(944f3329) SHA1(7e7909e203b9752de3d3d798c6f84ac6ae824a07) )
3838 ROM_LOAD32_WORD( "01.f2", 0x000002, 0x80000, CRC(ac12d18a) SHA1(7cd4e843bf575c70c5c39a8afa78b803106f59b0) )
3839
3840 ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
3841 ROM_LOAD( "02.l18", 0x00000, 0x10000, CRC(5e63bd91) SHA1(a6ac3c8c50f44cf2e6cf029aef1c974d1fc16ed5) )
3842
3843 ROM_REGION( 0x200000, "gfx1", 0 )
3844 ROM_LOAD( "mbh-00.8c", 0x000000, 0x200000, CRC(a877f8a3) SHA1(79253525f360a73161894f31e211e4d6b38d307a) ) /* Encrypted tiles */
3845
3846 ROM_REGION( 0x200000, "gfx2", 0 )
3847 ROM_LOAD( "mbh-01.9c", 0x000000, 0x200000, CRC(1853dafc) SHA1(b1183c0db301cbed9f079c782202dbfc553b198e) ) /* Encrypted tiles */
3848
3849 ROM_REGION( 0x640000, "gfx3", 0 ) /* Sprites */
3850 ROM_LOAD40_WORD_SWAP( "mbh-02.14c", 0x000003, 0x200000, CRC(b2f158a1) SHA1(4f8c0b324813db198fe1dad7fff4185b828b94de) )
3851 ROM_LOAD40_WORD_SWAP( "mbh-04.16c", 0x000001, 0x200000, CRC(eecfe06d) SHA1(2df817fe5e2ea31207b217bb03dc58979c05d0d2) )
3852 ROM_LOAD40_BYTE( "mbh-06.18c", 0x000000, 0x100000, CRC(038c2127) SHA1(5bdb215305f1a419fde27a83b623a38b9328e560) )
3853 ROM_LOAD40_WORD_SWAP( "mbh-03.15c", 0x500003, 0x080000, CRC(787787e3) SHA1(531444e3f28aa9a7539a5a76ca94a9d6b97274c5) )
3854 ROM_LOAD40_WORD_SWAP( "mbh-05.17c", 0x500001, 0x080000, CRC(1d2b7c17) SHA1(ae0b8e0448a1a8180fb424fb0bc8a4302f8ff602) )
3855 ROM_LOAD40_BYTE( "mbh-07.19c", 0x500000, 0x040000, CRC(bbd22323) SHA1(6ab665b2e6d04cdadc48c52e15098e978b61fe10) )
3856
3857 ROM_REGION( 0x100000, "gfx4", 0 ) /* Sprites */
3858 ROM_LOAD( "mbh-08.16e", 0x000000, 0x80000, CRC(cdd7f8cb) SHA1(910bbe8783c0ba722e9d6399b332d658fa059fdb) )
3859 ROM_LOAD( "mbh-09.18e", 0x080000, 0x80000, CRC(33fa2121) SHA1(eb0e99d29b1ad9995df28e5b7cfc89d53efb53c3) )
3860
3861 ROM_REGION(0x80000, "oki1", 0 )
3862 ROM_LOAD( "mbh-10.14l", 0x000000, 0x80000, CRC(c4d6b116) SHA1(c5685bce6a6c6a74ca600ebf766ba1007f0dc666) )
3863
3864 ROM_REGION(0x80000, "oki2", 0 )
3865 ROM_LOAD( "mbh-11.16l", 0x000000, 0x80000, CRC(0ec40b6b) SHA1(9fef44149608ae2a00f6a75a6f77f2efcab6e78e) )
3866
3867 ROM_REGION(0x200, "prom", 0 )
3868 ROM_LOAD( "ln-00.j7", 0x000000, 0x200, CRC(5e83eaf3) SHA1(95f5eb8e56dff6c2dce7c39a6dd458bfc38fe1cf) )
3869
3870 ROM_REGION( 0x0600, "plds", 0 )
3871 ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
3872 ROM_LOAD( "ve-01a.4d", 0x0200, 0x0117, CRC(109613c8) SHA1(5991e010c1bc2a827c8ee2c85a9b40e00a3167b3) )
3873 ROM_LOAD( "vm-02.8j", 0x0400, 0x0117, CRC(53692426) SHA1(b8f8cf6b1f6b637fcd1fcd62474e637f5d4a6901) )
3874 ROM_END
3875
3876
3877 //**************************************************************************
3878 // SYSTEM DRIVERS
3879 //**************************************************************************
3880
3881 // YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS
3882 GAME( 1991, captaven, 0, captaven, captaven, captaven_state, init_captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Asia Rev 1.4)", MACHINE_SUPPORTS_SAVE )
3883 GAME( 1991, captavena, captaven, captaven, captaven, captaven_state, init_captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Asia Rev 1.0)", MACHINE_SUPPORTS_SAVE )
3884 GAME( 1991, captavene, captaven, captaven, captaven, captaven_state, init_captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (UK Rev 1.4)", MACHINE_SUPPORTS_SAVE )
3885 GAME( 1991, captavenu, captaven, captaven, captaven, captaven_state, init_captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (US Rev 1.9)", MACHINE_SUPPORTS_SAVE )
3886 GAME( 1991, captavenuu, captaven, captaven, captaven, captaven_state, init_captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (US Rev 1.6)", MACHINE_SUPPORTS_SAVE )
3887 GAME( 1991, captavenua, captaven, captaven, captaven, captaven_state, init_captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (US Rev 1.4)", MACHINE_SUPPORTS_SAVE )
3888 GAME( 1991, captavenj, captaven, captaven, captaven, captaven_state, init_captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Japan Rev 0.2)", MACHINE_SUPPORTS_SAVE )
3889
3890 // DE-0396-0 PCB sets (Z80 for sound)
3891 GAME( 1993, fghthistu, fghthist, fghthistu, fghthist, fghthist_state, init_fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-09, DE-0396-0 PCB)", MACHINE_SUPPORTS_SAVE )
3892 // DE-0395-1 PCB sets (HuC6280 for sound)
3893 GAME( 1993, fghthist, 0, fghthsta, fghthist, fghthist_state, init_fghthist, ROT0, "Data East Corporation", "Fighter's History (World ver 43-09, DE-0395-1 PCB)", MACHINE_SUPPORTS_SAVE )
3894 GAME( 1993, fghthistua, fghthist, fghthsta, fghthist, fghthist_state, init_fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-06, DE-0395-1 PCB)", MACHINE_SUPPORTS_SAVE )
3895 GAME( 1993, fghthistub, fghthist, fghthsta, fghthist, fghthist_state, init_fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-05, DE-0395-1 PCB)", MACHINE_SUPPORTS_SAVE )
3896 GAME( 1993, fghthistj, fghthist, fghthsta, fghthist, fghthist_state, init_fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-07, DE-0395-1 PCB)", MACHINE_SUPPORTS_SAVE )
3897 // DE-0380-2 PCB sets (HuC6280 for sound)
3898 GAME( 1993, fghthista, fghthist, fghthist, fghthist, fghthist_state, init_fghthist, ROT0, "Data East Corporation", "Fighter's History (World ver 43-07, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
3899 GAME( 1993, fghthistb, fghthist, fghthist, fghthist, fghthist_state, init_fghthist, ROT0, "Data East Corporation", "Fighter's History (World ver 43-05, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
3900 GAME( 1993, fghthistuc, fghthist, fghthist, fghthist, fghthist_state, init_fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-03, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
3901 GAME( 1993, fghthistja, fghthist, fghthist, fghthist, fghthist_state, init_fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-05, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
3902 // DE-0380-1 PCB sets (HuC6280 for sound)
3903 GAME( 1993, fghthistjb, fghthist, fghthist, fghthist, fghthist_state, init_fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-04, DE-0380-1 PCB)", MACHINE_SUPPORTS_SAVE )
3904
3905 // DE-0397-0 PCB sets (Z80 for sound)
3906 GAME( 1994, nslasher, 0, nslasher, nslasher, nslasher_state, init_nslasher, ROT0, "Data East Corporation", "Night Slashers (Korea Rev 1.3, DE-0397-0 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
3907 GAME( 1994, nslasherj, nslasher, nslasher, nslasher, nslasher_state, init_nslasher, ROT0, "Data East Corporation", "Night Slashers (Japan Rev 1.2, DE-0397-0 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
3908 GAME( 1994, nslashers, nslasher, nslasher, nslasher, nslasher_state, init_nslasher, ROT0, "Data East Corporation", "Night Slashers (Over Sea Rev 1.2, DE-0397-0 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
3909 // DE-0395-1 PCB sets (HuC6280 for sound)
3910 GAME( 1994, nslasheru, nslasher, nslasheru, nslasher, nslasher_state, init_nslasher, ROT0, "Data East Corporation", "Night Slashers (US Rev 1.2, DE-0395-1 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
3911
3912 GAME( 1994, tattass, 0, tattass, tattass, nslasher_state, init_tattass, ROT0, "Data East Pinball", "Tattoo Assassins (US prototype, Mar 14 1995)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
3913 GAME( 1994, tattassa, tattass, tattass, tattass, nslasher_state, init_tattass, ROT0, "Data East Pinball", "Tattoo Assassins (Asia prototype, Mar 14 1995)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
3914
3915 // Dragon Gun / Locked 'n Loaded have very different sprite hardware
3916 GAME( 1993, dragngun, 0, dragngun, dragngun, dragngun_state, init_dragngun, ROT0, "Data East Corporation", "Dragon Gun (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // OKI3 Bankswitching aren't verified
3917 GAME( 1993, dragngunj, dragngun, dragngun, dragngun, dragngun_state, init_dragngunj, ROT0, "Data East Corporation", "Dragon Gun (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // ""
3918
3919 GAME( 1994, lockload, 0, lockload, lockload, dragngun_state, init_lockload, ROT0, "Data East Corporation", "Locked 'n Loaded (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
3920 GAME( 1994, gunhard, lockload, lockload, lockload, dragngun_state, init_lockload, ROT0, "Data East Corporation", "Gun Hard (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
3921 GAME( 1994, lockloadu, lockload, lockloadu, lockload, dragngun_state, init_lockload, ROT0, "Data East Corporation", "Locked 'n Loaded (US, Dragon Gun conversion)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
3922