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