1 /***************************************************************************
2 
3     Data East 'Rohga' era hardware:
4 
5     Rogha Armour Attack         (c) 1991 Data East Corporation
6     Wizard Fire                 (c) 1992 Data East Corporation
7     Nitro Ball/Gun Ball         (c) 1992 Data East Corporation
8     Hang Zo                     (c) 1992 Hot B
9 
10     This hardware is capable of alpha-blending on sprites and playfields
11 
12 
13 ***************************************************************************/
14 
15 #include "driver.h"
16 #include "vidhrdw/generic.h"
17 #include "cpu/h6280/h6280.h"
18 #include "decocrpt.h"
19 #include "decoprot.h"
20 #include "deco16ic.h"
21 
22 VIDEO_START( rohga );
23 VIDEO_START( wizdfire );
24 VIDEO_START( nitrobal );
25 VIDEO_UPDATE( rohga );
26 VIDEO_UPDATE( hangzo );
27 VIDEO_UPDATE( wizdfire );
28 VIDEO_UPDATE( nitrobal );
29 WRITE16_HANDLER( rohga_buffer_spriteram16_w );
30 
READ16_HANDLER(rohga_dip3_r)31 static READ16_HANDLER( rohga_dip3_r ) { return readinputport(3); }
READ16_HANDLER(nitrobal_control_r)32 static READ16_HANDLER( nitrobal_control_r ) { return readinputport(3); }
READ16_HANDLER(hangzo_control_r)33 static READ16_HANDLER( hangzo_control_r ) { return readinputport(1); }
34 
READ16_HANDLER(rohga_irq_ack_r)35 static READ16_HANDLER( rohga_irq_ack_r )
36 {
37 	cpu_set_irq_line(0, 6, CLEAR_LINE);
38 	return 0;
39 }
40 
41 
WRITE16_HANDLER(wizdfire_irq_ack_w)42 static WRITE16_HANDLER( wizdfire_irq_ack_w )
43 {
44 	/* This might actually do more, nitrobal for example sets 0xca->0xffff->0x80 at startup then writes 7 all the time
45 	   except when a credit is inserted (writes 6 twice).
46 	   Wizard Fire / Dark Seal 2 just writes 1 all the time, so I just don't trust it much for now... -AS */
47 	cpu_set_irq_line(0, 6, CLEAR_LINE);
48 }
49 
50 
51 /**********************************************************************************/
52 
MEMORY_READ16_START(rohga_readmem)53 static MEMORY_READ16_START( rohga_readmem )
54     { 0x000000, 0x1fffff, MRA16_ROM },
55 	{ 0x280000, 0x2807ff, deco16_104_rohga_prot_r }, /* Protection device */
56 	{ 0x280800, 0x280fff, MRA16_RAM }, /* Mirror */
57 	{ 0x2c0000, 0x2c0001, rohga_dip3_r },
58 	{ 0x321100, 0x321101, rohga_irq_ack_r }, /* Irq ack?  Value not used */
59 	{ 0x3c0000, 0x3c1fff, MRA16_RAM },
60 	{ 0x3c2000, 0x3c2fff, MRA16_RAM },
61 	{ 0x3c4000, 0x3c4fff, MRA16_RAM },
62 	{ 0x3c6000, 0x3c6fff, MRA16_RAM },
63 	{ 0x3c8000, 0x3c8fff, MRA16_RAM },
64 	{ 0x3c9000, 0x3c9fff, MRA16_RAM }, /* Mirror */
65 	{ 0x3ca000, 0x3cafff, MRA16_RAM },
66 	{ 0x3cb000, 0x3cbfff, MRA16_RAM }, /* Mirror */
67 	{ 0x3cc000, 0x3ccfff, MRA16_RAM },
68 	{ 0x3cd000, 0x3cdfff, MRA16_RAM }, /* Mirror */
69 	{ 0x3ce000, 0x3cefff, MRA16_RAM },
70 	{ 0x3cf000, 0x3cffff, MRA16_RAM }, /* Mirror */
71 	{ 0x3d0000, 0x3d0fff, MRA16_RAM },
72 	{ 0x3e0000, 0x3e1fff, MRA16_RAM },
73 	{ 0x3f0000, 0x3f3fff, MRA16_RAM },
74 MEMORY_END
75 
76 
77 static MEMORY_WRITE16_START( rohga_writemem )
78     { 0x000000, 0x1fffff, MWA16_ROM },
79 	{ 0x200000, 0x20000f, MWA16_RAM, &deco16_pf12_control },
80 	{ 0x240000, 0x24000f, MWA16_RAM, &deco16_pf34_control },
81 	{ 0x280000, 0x2807ff, deco16_104_rohga_prot_w, &deco16_prot_ram }, /* Protection writes */
82 	{ 0x280800, 0x280fff, deco16_104_rohga_prot_w }, /* Mirror */
83 	{ 0x300000, 0x300001, rohga_buffer_spriteram16_w }, /* write 1 for sprite dma */
84 	{ 0x310000, 0x310009, MWA16_NOP }, /* Palette control? */
85 	{ 0x31000a, 0x31000b, deco16_palette_dma_w }, /* Write 1111 for dma?  (Or any value?) */
86 	{ 0x320000, 0x320001, MWA16_NOP }, /* ? */
87 	{ 0x322000, 0x322001, deco16_priority_w },
88 	{ 0x3c0000, 0x3c1fff, deco16_pf1_data_w, &deco16_pf1_data },
89 	{ 0x3c2000, 0x3c2fff, deco16_pf2_data_w, &deco16_pf2_data },
90 	{ 0x3c4000, 0x3c4fff, deco16_pf3_data_w, &deco16_pf3_data },
91 	{ 0x3c6000, 0x3c6fff, deco16_pf4_data_w, &deco16_pf4_data },
92 	{ 0x3c8000, 0x3c8fff, MWA16_RAM, &deco16_pf1_rowscroll },
93 	{ 0x3c9000, 0x3c9fff, MWA16_RAM }, /* Mirror */
94 	{ 0x3ca000, 0x3cafff, MWA16_RAM, &deco16_pf2_rowscroll },
95 	{ 0x3cb000, 0x3cbfff, MWA16_RAM }, /* Mirror */
96 	{ 0x3cc000, 0x3ccfff, MWA16_RAM, &deco16_pf3_rowscroll },
97 	{ 0x3cd000, 0x3cdfff, MWA16_RAM }, /* Mirror */
98 	{ 0x3ce000, 0x3cefff, MWA16_RAM, &deco16_pf4_rowscroll },
99 	{ 0x3cf000, 0x3cffff, MWA16_RAM }, /* Mirror */
100 	{ 0x3d0000, 0x3d07ff, MWA16_RAM, &spriteram16, &spriteram_size },
101 	{ 0x3e0000, 0x3e1fff, deco16_buffered_palette_w, &paletteram16 },
102 	{ 0x3f0000, 0x3f3fff, MWA16_RAM }, /* Main ram */
103 MEMORY_END
104 
105 
106 static MEMORY_READ16_START( wizdfire_readmem )
107     { 0x000000, 0x1fffff, MRA16_ROM },
108 	{ 0x200000, 0x200fff, MRA16_RAM },
109 	{ 0x202000, 0x202fff, MRA16_RAM },
110 	{ 0x208000, 0x208fff, MRA16_RAM },
111 	{ 0x20a000, 0x20afff, MRA16_RAM },
112 	{ 0x20c000, 0x20cfff, MRA16_RAM },
113 	{ 0x20e000, 0x20efff, MRA16_RAM },
114 	{ 0x340000, 0x3407ff, MRA16_RAM },
115 	{ 0x360000, 0x3607ff, MRA16_RAM },
116 	{ 0x380000, 0x381fff, MRA16_RAM },
117 	{ 0xfdc000, 0xfe3fff, MRA16_RAM },
118 	{ 0xfe4000, 0xfe47ff, deco16_104_prot_r }, /* Protection device */
119 	{ 0xfe5000, 0xfeffff, MRA16_RAM },
120 MEMORY_END
121 
122 static MEMORY_WRITE16_START( wizdfire_writemem )
123     { 0x000000, 0x1fffff, MWA16_ROM },
124 	{ 0x200000, 0x200fff, deco16_pf1_data_w, &deco16_pf1_data },
125 	{ 0x202000, 0x202fff, deco16_pf2_data_w, &deco16_pf2_data },
126 	{ 0x208000, 0x208fff, deco16_pf3_data_w, &deco16_pf3_data },
127 	{ 0x20a000, 0x20afff, deco16_pf4_data_w, &deco16_pf4_data },
128 	{ 0x20b000, 0x20b3ff, MWA16_RAM }, /* ? Always 0 written */
129 	{ 0x20c000, 0x20c7ff, MWA16_RAM, &deco16_pf3_rowscroll },
130 	{ 0x20e000, 0x20e7ff, MWA16_RAM, &deco16_pf4_rowscroll },
131 	{ 0x300000, 0x30000f, MWA16_RAM, &deco16_pf12_control },
132 	{ 0x310000, 0x31000f, MWA16_RAM, &deco16_pf34_control },
133 	{ 0x320000, 0x320001, deco16_priority_w }, /* Priority */
134 	{ 0x320002, 0x320003, MWA16_NOP }, /* ? */
135 	{ 0x320004, 0x320005, wizdfire_irq_ack_w }, /* VBL IRQ ack */
136 	{ 0x340000, 0x3407ff, MWA16_RAM, &spriteram16, &spriteram_size },
137 	{ 0x350000, 0x350001, buffer_spriteram16_w }, /* Triggers DMA for spriteram */
138 	{ 0x360000, 0x3607ff, MWA16_RAM, &spriteram16_2, &spriteram_2_size },
139 	{ 0x370000, 0x370001, buffer_spriteram16_2_w }, /* Triggers DMA for spriteram */
140 	{ 0x380000, 0x381fff, deco16_buffered_palette_w, &paletteram16 },
141 	{ 0x390008, 0x390009, deco16_palette_dma_w },
142 	{ 0xfe4000, 0xfe47ff, deco16_104_prot_w, &deco16_prot_ram }, /* Protection writes */
143 	{ 0xfdc000, 0xfeffff, MWA16_RAM }, /* Main ram */
144 MEMORY_END
145 
146 static MEMORY_READ16_START( nitrobal_readmem )
147     { 0x000000, 0x1fffff, MRA16_ROM },
148 	{ 0x200000, 0x200fff, MRA16_RAM },
149 	{ 0x202000, 0x202fff, MRA16_RAM },
150 	{ 0x204000, 0x2047ff, MRA16_RAM },
151 	{ 0x206000, 0x2067ff, MRA16_RAM },
152 	{ 0x208000, 0x208fff, MRA16_RAM },
153 	{ 0x20a000, 0x20afff, MRA16_RAM },
154 	{ 0x20c000, 0x20c7ff, MRA16_RAM },
155 	{ 0x20e000, 0x20e7ff, MRA16_RAM },
156 	{ 0x300000, 0x30000f, MRA16_RAM },
157 	{ 0x310000, 0x31000f, MRA16_RAM },
158 	{ 0x320000, 0x320001, nitrobal_control_r },
159 	{ 0x340000, 0x3407ff, MRA16_RAM },
160 	{ 0x360000, 0x3607ff, MRA16_RAM },
161 	{ 0x380000, 0x381fff, MRA16_RAM },
162 	{ 0xff4000, 0xff47ff, deco16_146_nitroball_prot_r }, /* Protection device */
163 	{ 0xfec000, 0xffffff, MRA16_RAM },
164 MEMORY_END
165 
166 
167 static MEMORY_WRITE16_START( nitrobal_writemem )
168     { 0x000000, 0x1fffff, MWA16_ROM },
169 	{ 0x200000, 0x200fff, deco16_pf1_data_w, &deco16_pf1_data },
170 	{ 0x202000, 0x202fff, deco16_pf2_data_w, &deco16_pf2_data },
171 	{ 0x208000, 0x208fff, deco16_pf3_data_w, &deco16_pf3_data },
172 	{ 0x20a000, 0x20afff, deco16_pf4_data_w, &deco16_pf4_data },
173 	{ 0x204000, 0x2047ff, MWA16_RAM, &deco16_pf1_rowscroll },
174 	{ 0x206000, 0x2067ff, MWA16_RAM, &deco16_pf2_rowscroll },
175 	{ 0x20c000, 0x20c7ff, MWA16_RAM, &deco16_pf3_rowscroll },
176 	{ 0x20e000, 0x20e7ff, MWA16_RAM, &deco16_pf4_rowscroll },
177 	{ 0x300000, 0x30000f, MWA16_RAM, &deco16_pf12_control },
178 	{ 0x310000, 0x31000f, MWA16_RAM, &deco16_pf34_control },
179 	{ 0x320000, 0x320001, deco16_priority_w }, /* Priority */
180 	{ 0x320002, 0x320003, MWA16_NOP }, /* ? */
181 	{ 0x320004, 0x320005, wizdfire_irq_ack_w }, /* VBL IRQ ack */
182 	{ 0x340000, 0x3407ff, MWA16_RAM, &spriteram16, &spriteram_size },
183 	{ 0x350000, 0x350001, buffer_spriteram16_w },/* Triggers DMA for spriteram */
184 	{ 0x360000, 0x3607ff, MWA16_RAM, &spriteram16_2, &spriteram_2_size },
185 	{ 0x370000, 0x370001, buffer_spriteram16_2_w },/* Triggers DMA for spriteram */
186 	{ 0x380000, 0x381fff, deco16_buffered_palette_w, &paletteram16 },
187 	{ 0x390008, 0x390009, deco16_palette_dma_w },
188 	{ 0xff4000, 0xff47ff, deco16_146_nitroball_prot_w, &deco16_prot_ram }, /* Protection writes */
189 	{ 0xfec000, 0xffffff, MWA16_RAM }, /* Main ram */
190 MEMORY_END
191 
192 
193 static MEMORY_READ16_START( hangzo_readmem )
194     { 0x000000, 0x0fffff, MRA16_ROM },
195 	{ 0x280000, 0x2807ff, deco16_104_rohga_prot_r }, /* Protection device */
196 	{ 0x280800, 0x280fff, MRA16_RAM }, /* Mirror */
197 	{ 0x2c0000, 0x2c0001, rohga_dip3_r },
198 	{ 0x300000, 0x300001, nitrobal_control_r },
199 	{ 0x310002, 0x310003, hangzo_control_r },
200 	{ 0x321100, 0x321101, MRA16_NOP }, /* Irq ack?  Value not used */
201 	{ 0x3c0000, 0x3c1fff, MRA16_RAM },
202 	{ 0x3c2000, 0x3c2fff, MRA16_RAM },
203 	{ 0x3c4000, 0x3c4fff, MRA16_RAM },
204 	{ 0x3c6000, 0x3c6fff, MRA16_RAM },
205 	{ 0x3c8000, 0x3c9fff, MRA16_RAM },
206 	{ 0x3ca000, 0x3cafff, MRA16_RAM },
207 	{ 0x3cb000, 0x3cbfff, MRA16_RAM }, /* Mirror */
208 	{ 0x3cc000, 0x3ccfff, MRA16_RAM },
209 	{ 0x3cd000, 0x3cdfff, MRA16_RAM }, /* Mirror */
210 	{ 0x3ce000, 0x3cefff, MRA16_RAM },
211 	{ 0x3cf000, 0x3cffff, MRA16_RAM }, /* Mirror */
212 	{ 0x3d0000, 0x3d07ff, MRA16_RAM },
213 	{ 0x3e0000, 0x3e1fff, MRA16_RAM },
214 	{ 0x3e2000, 0x3e3fff, MRA16_RAM }, /* Mirror */
215     { 0x3f0000, 0x3f3fff, MRA16_RAM },
216 MEMORY_END
217 
218 static MEMORY_WRITE16_START( hangzo_writemem )
219     { 0x000000, 0x1fffff, MWA16_ROM },
220 	{ 0x200000, 0x20000f, MWA16_RAM, &deco16_pf12_control },
221 	{ 0x240000, 0x24000f, MWA16_RAM, &deco16_pf34_control },
222 	{ 0x280000, 0x2807ff, deco16_104_rohga_prot_w, &deco16_prot_ram }, /* Protection writes */
223 	{ 0x280800, 0x280fff, deco16_104_rohga_prot_w }, /* Mirror */
224 	{ 0x300000, 0x300001, rohga_buffer_spriteram16_w }, /* write 1 for sprite dma */
225 	{ 0x310000, 0x310009, MWA16_NOP }, /* Palette control? */
226 	{ 0x31000a, 0x31000b, deco16_palette_dma_w }, /* Write 1111 for dma?  (Or any value?) */
227 	{ 0x320000, 0x320001, MWA16_NOP }, /* ? */
228 	{ 0x322000, 0x322001, deco16_priority_w },
229 	{ 0x3c0000, 0x3c1fff, deco16_pf1_data_w, &deco16_pf1_data },
230 	{ 0x3c2000, 0x3c2fff, deco16_pf2_data_w, &deco16_pf2_data },
231 	{ 0x3c4000, 0x3c4fff, deco16_pf3_data_w, &deco16_pf3_data },
232 	{ 0x3c6000, 0x3c6fff, deco16_pf4_data_w, &deco16_pf4_data },
233 	{ 0x3c8000, 0x3c9fff, MWA16_RAM, &deco16_pf1_rowscroll },
234 	{ 0x3ca000, 0x3cafff, MWA16_RAM, &deco16_pf2_rowscroll },
235 	{ 0x3cb000, 0x3cbfff, MWA16_RAM }, /* Mirror */
236 	{ 0x3cc000, 0x3ccfff, MWA16_RAM, &deco16_pf3_rowscroll },
237 	{ 0x3cd000, 0x3cdfff, MWA16_RAM }, /* Mirror */
238 	{ 0x3ce000, 0x3cefff, MWA16_RAM, &deco16_pf4_rowscroll },
239 	{ 0x3cf000, 0x3cffff, MWA16_RAM }, /* Mirror */
240 	{ 0x3d0000, 0x3d07ff, MWA16_RAM, &spriteram16, &spriteram_size },
241 	{ 0x3e0000, 0x3e1fff, deco16_buffered_palette_w, &paletteram16 },
242 	{ 0x3e2000, 0x3e3fff, MWA16_RAM }, /* Mirror */
243 	{ 0x3f0000, 0x3f3fff, MWA16_RAM }, /* Main ram */
244 MEMORY_END
245 
246 
247 /******************************************************************************/
248 
249 static MEMORY_READ_START( sound_readmem )
250 	{ 0x000000, 0x00ffff, MRA_ROM },
251 	{ 0x100000, 0x100001, MRA_NOP },
252 	{ 0x110000, 0x110001, YM2151_status_port_0_r },
253 	{ 0x120000, 0x120001, OKIM6295_status_0_r },
254 	{ 0x130000, 0x130001, OKIM6295_status_1_r },
255 	{ 0x140000, 0x140001, soundlatch_r },
256 	{ 0x1f0000, 0x1f1fff, MRA_BANK8 },
257 MEMORY_END
258 
259 static MEMORY_WRITE_START( sound_writemem )
260 	{ 0x000000, 0x00ffff, MWA_ROM },
261 	{ 0x100000, 0x100001, MWA_NOP },
262 	{ 0x110000, 0x110001, YM2151_word_0_w },
263 	{ 0x120000, 0x120001, OKIM6295_data_0_w },
264     { 0x130000, 0x130001, OKIM6295_data_1_w },
265     { 0x1f0000, 0x1f1fff, MWA_BANK8 },
266     { 0x1fec00, 0x1fec01, H6280_timer_w },
267     { 0x1ff402, 0x1ff403, H6280_irq_status_w },
268 MEMORY_END
269 
270 /**********************************************************************************/
271 
272 INPUT_PORTS_START( rohga )
273 	PORT_START
274 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
275 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
276 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
277 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
278 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
279 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
280 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 )
281 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
282 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
283 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
284 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
285 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
286 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
287 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
288 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
289 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
290 
291 	PORT_START
292 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
293 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
294 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
295 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
296 
297 	PORT_START	/* Dip switch bank 1/2 */
298 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) )
299 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
300 	PORT_DIPSETTING(      0x0001, DEF_STR( 2C_1C ) )
301 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
302 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
303 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
304 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
305 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_5C ) )
306 	PORT_DIPSETTING(      0x0002, DEF_STR( 1C_6C ) )
307 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) )
308 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
309 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
310 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
311 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
312 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
313 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
314 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_5C ) )
315 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_6C ) )
316 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) )
317 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
318 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
319 	PORT_DIPNAME( 0x0080, 0x0080, "2 Credits to Start, 1 to Continue" )
320 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
321 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
322 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
323 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
324 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
325 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
326 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
327 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
328 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
329 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
330 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
331 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
332 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
333 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
334 	PORT_DIPNAME( 0x3000, 0x3000, "Player's Vitality" )
335 	PORT_DIPSETTING(      0x3000, "Normal" )
336 	PORT_DIPSETTING(      0x2000, "Low" )
337 	PORT_DIPSETTING(      0x1000, "Lowest" )
338 	PORT_DIPSETTING(      0x0000, "High" )
339 	PORT_DIPNAME( 0x4000, 0x4000, "Allow_Continue" )
340 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
341 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
342 	PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Demo_Sounds ) )
343 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
344 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
345 
346 	PORT_START	/* Dip switch bank 3 */
347 	PORT_DIPNAME( 0x0001, 0x0001, "Stage Clear Bonus" ) /* Life Recovery At stage clear */
348 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
349 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
350 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
351 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
352 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
353 	PORT_DIPNAME( 0x000c, 0x000c, "Enemy's Vitality" )
354 	PORT_DIPSETTING(      0x0008, "Low" )
355 	PORT_DIPSETTING(      0x000c, "Normal" )
356 	PORT_DIPSETTING(      0x0004, "High" )
357 	PORT_DIPSETTING(      0x0000, "Highest" )
358 	PORT_DIPNAME( 0x0030, 0x0030, "Enemy Encounter Rate" )
359 	PORT_DIPSETTING(      0x0020, "Low" )
360 	PORT_DIPSETTING(      0x0030, "Normal" )
361 	PORT_DIPSETTING(      0x0010, "High" )
362 	PORT_DIPSETTING(      0x0000, "Highest" )
363 	PORT_DIPNAME( 0x00c0, 0x00c0, "Enemy's Weapon Speed" )
364 	PORT_DIPSETTING(      0x0080, "Slow" )
365 	PORT_DIPSETTING(      0x00c0, "Normal" )
366 	PORT_DIPSETTING(      0x0040, "Fast" )
367 	PORT_DIPSETTING(      0x0000, "Fastest" )
368 INPUT_PORTS_END
369 
370 
371 INPUT_PORTS_START( wizdfire )
372 	PORT_START
373 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
374 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
375 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
376 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
377 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
378 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
379 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
380 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
381 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
382 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
383 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
384 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
385 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
386 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
387 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
388 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
389 
390 	PORT_START
391 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
392 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
393 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
394 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
395 
396 	PORT_START	/* Dip switch bank 1/2 */
397 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) )
398 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
399 	PORT_DIPSETTING(      0x0001, DEF_STR( 2C_1C ) )
400 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
401 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
402 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
403 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
404 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_5C ) )
405 	PORT_DIPSETTING(      0x0002, DEF_STR( 1C_6C ) )
406 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) )
407 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
408 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
409 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
410 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
411 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
412 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
413 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_5C ) )
414 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_6C ) )
415 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) )
416 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
417 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
418 	PORT_DIPNAME( 0x0080, 0x0080, "2 Credits to Start, 1 to Continue" )
419 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
420 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
421 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) )
422 	PORT_DIPSETTING(      0x0000, "2" )
423 	PORT_DIPSETTING(      0x0100, "3" )
424 	PORT_DIPSETTING(      0x0300, "4" )
425 	PORT_DIPSETTING(      0x0200, "5" )
426 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) )
427 	PORT_DIPSETTING(      0x0800, "Easy" )
428 	PORT_DIPSETTING(      0x0c00, "Normal" )
429 	PORT_DIPSETTING(      0x0400, "Hard" )
430 	PORT_DIPSETTING(      0x0000, "Hardest" )
431 	PORT_DIPNAME( 0x3000, 0x3000, "Magic Gauge Speed" )
432 	PORT_DIPSETTING(      0x0000, "Very Slow" )
433 	PORT_DIPSETTING(      0x1000, "Slow" )
434 	PORT_DIPSETTING(      0x3000, "Normal" )
435 	PORT_DIPSETTING(      0x2000, "Fast" )
436 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unused ) )
437 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
438 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
439 	PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Demo_Sounds ) )
440 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
441 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
442 INPUT_PORTS_END
443 
444 INPUT_PORTS_START( nitrobal )
445 	PORT_START
446 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
447 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
448 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
449 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
450 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
451 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
452 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
453 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
454 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
455 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
456 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
457 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
458 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
459 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
460 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
461 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
462 
463 	PORT_START
464 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
465 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
466 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
467 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
468 
469 	PORT_START	/* Dip switch bank 1/2 */
470 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) )
471 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
472 	PORT_DIPSETTING(      0x0001, DEF_STR( 2C_1C ) )
473 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
474 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
475 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
476 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
477 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_5C ) )
478 	PORT_DIPSETTING(      0x0002, DEF_STR( 1C_6C ) )
479 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) )
480 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
481 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
482 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
483 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
484 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
485 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
486 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_5C ) )
487 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_6C ) )
488 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) )
489 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
490 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
491 	PORT_DIPNAME( 0x0080, 0x0080, "2 Credits to Start, 1 to Continue" )
492 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
493 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
494 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) )
495 	PORT_DIPSETTING(      0x0100, "1" )
496 	PORT_DIPSETTING(      0x0000, "2" )
497 	PORT_DIPSETTING(      0x0300, "3" )
498 	PORT_DIPSETTING(      0x0200, "4" )
499 	PORT_DIPNAME( 0x0c00, 0x0c00, "Difficulty?"  )
500 	PORT_DIPSETTING(      0x0800, "Easy" )
501 	PORT_DIPSETTING(      0x0c00, "Normal" )
502 	PORT_DIPSETTING(      0x0400, "Hard" )
503 	PORT_DIPSETTING(      0x0000, "Hardest" )
504 	PORT_DIPNAME( 0x1000, 0x1000, "Split Coin Chutes" )
505 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
506 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
507 	PORT_DIPNAME( 0x2000, 0x2000, "Players" )
508 	PORT_DIPSETTING(      0x2000, "2" )
509 	PORT_DIPSETTING(      0x0000, "3" )
510 	PORT_DIPNAME( 0x4000, 0x4000, "Shot Button to Start" )
511 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
512 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
513 	PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Demo_Sounds ) )
514 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
515 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
516 
517 	PORT_START
518 	PORT_BIT( 0x1, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER3 )
519 	PORT_BIT( 0x2, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER3 )
520 	PORT_BIT( 0x4, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER3 )
521 	PORT_BIT( 0x8, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
522 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
523 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
524 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
525 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )
526 INPUT_PORTS_END
527 
528 
529 INPUT_PORTS_START( hangzo )
530 	PORT_START
531 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
532 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
533 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
534 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
535     PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
536 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
537 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 )
538 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
539 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
540 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
541 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
542 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
543 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
544 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
545 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
546 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
547 
548 	PORT_START
549     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
550 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
551 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
552 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
553 
554 	PORT_START
555     PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) )
556 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
557 	PORT_DIPSETTING(      0x0001, DEF_STR( 2C_1C ) )
558 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
559 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
560 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
561 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
562 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_5C ) )
563 	PORT_DIPSETTING(      0x0002, DEF_STR( 1C_6C ) )
564 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) )
565 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
566 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
567 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
568 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
569 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
570 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
571 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_5C ) )
572 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_6C ) )
573 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) )
574 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
575 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
576 	PORT_DIPNAME( 0x0080, 0x0080, "2 Credits to Start, 1 to Continue" )
577 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
578 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
579 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) )
580 	PORT_DIPSETTING(      0x0100, "1" )
581 	PORT_DIPSETTING(      0x0000, "2" )
582 	PORT_DIPSETTING(      0x0300, "3" )
583 	PORT_DIPSETTING(      0x0200, "4" )
584 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) /* Either 3 & 4 are Difficulty */
585 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
586 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
587 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
588 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
589 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
590 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) /* or more likely 5 & 6 are Player's Vitality like Rohga (all other dips seem to match Rohga) */
591 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
592 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
593 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
594 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
595 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
596 	PORT_DIPNAME( 0x4000, 0x4000, "Allow_Continue" )
597 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
598 	PORT_DIPSETTING(      0x4000, DEF_STR( On ) )
599 	PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Demo_Sounds ) )
600 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
601 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
602 
603 	PORT_START
604 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) )
605 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
606 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
607 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
608 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
609 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
610 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
611 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
612 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
613 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
614 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
615 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
616 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
617 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
618 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
619 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
620 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
621 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
622 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
623 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
624 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
625 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
626 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
627 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
628 INPUT_PORTS_END
629 
630 
631 /**********************************************************************************/
632 
633 static struct GfxLayout charlayout =
634 {
635 	8,8,
636 	RGN_FRAC(1,2),
637 	4,
638 	{ RGN_FRAC(1,2)+8, RGN_FRAC(1,2), 8, 0 },
639 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
640 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
641 	16*8	/* every char takes 8 consecutive bytes */
642 };
643 
644 static struct GfxLayout spritelayout =
645 {
646 	16,16,
647 	RGN_FRAC(1,1),
648 	4,
649 	{ 16, 0, 24, 8 },
650 	{ 64*8+0, 64*8+1, 64*8+2, 64*8+3, 64*8+4, 64*8+5, 64*8+6, 64*8+7,
651 		0, 1, 2, 3, 4, 5, 6, 7 },
652 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
653 			8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
654 	128*8
655 };
656 
657 static struct GfxLayout spritelayout_6bpp =
658 {
659 	16,16,
660 	4096*8,
661 	6,
662 	{ 0x400000*8+8, 0x400000*8, 0x200000*8+8, 0x200000*8, 8, 0 },
663 	{ 7,6,5,4,3,2,1,0,
664 	32*8+7, 32*8+6, 32*8+5, 32*8+4, 32*8+3, 32*8+2, 32*8+1, 32*8+0,  },
665 	{ 15*16, 14*16, 13*16, 12*16, 11*16, 10*16, 9*16, 8*16,
666 			7*16, 6*16, 5*16, 4*16, 3*16, 2*16, 1*16, 0*16 },
667 	64*8
668 };
669 
670 static struct GfxLayout spritelayout2 =
671 {
672 	16,16,
673 	4096*8,
674 	4,
675 	{ 0x200000*8+8, 0x200000*8, 8, 0 },
676 	{ 7,6,5,4,3,2,1,0,
677 	32*8+7, 32*8+6, 32*8+5, 32*8+4, 32*8+3, 32*8+2, 32*8+1, 32*8+0,  },
678 	{ 15*16, 14*16, 13*16, 12*16, 11*16, 10*16, 9*16, 8*16,
679 			7*16, 6*16, 5*16, 4*16, 3*16, 2*16, 1*16, 0*16 },
680 	64*8
681 };
682 
683 static struct GfxLayout tilelayout =
684 {
685 	16,16,
686 	RGN_FRAC(1,2),
687 	4,
688 	{ RGN_FRAC(1,2)+8, RGN_FRAC(1,2), 8, 0 },
689 	{ 32*8+0, 32*8+1, 32*8+2, 32*8+3, 32*8+4, 32*8+5, 32*8+6, 32*8+7,
690 		0, 1, 2, 3, 4, 5, 6, 7 },
691 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
692 			8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
693 	64*8
694 };
695 
696 static struct GfxLayout tilelayout_8bpp =
697 {
698 	16,16,
699 	RGN_FRAC(1,4),
700 	8,
701 	{ RGN_FRAC(3,4)+8, RGN_FRAC(3,4), RGN_FRAC(1,4)+8, RGN_FRAC(1,4), RGN_FRAC(2,4)+8, RGN_FRAC(2,4), 8, 0 },
702 	{ 32*8+0, 32*8+1, 32*8+2, 32*8+3, 32*8+4, 32*8+5, 32*8+6, 32*8+7,
703 		0, 1, 2, 3, 4, 5, 6, 7 },
704 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
705 			8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
706 	64*8
707 };
708 
709 static struct GfxDecodeInfo gfxdecodeinfo[] =
710 {
711 	{ REGION_GFX1, 0, &charlayout,          0, 32 },	/* Characters 8x8 */
712 	{ REGION_GFX2, 0, &tilelayout,          0, 32 },	/* Tiles 16x16 */
713 	{ REGION_GFX3, 0, &tilelayout,        512, 32 },	/* Tiles 16x16 */
714 	{ REGION_GFX4, 0, &spritelayout_6bpp,1024, 16 },	/* Sprites 16x16 */
715 	{ -1 } /* end of array */
716 };
717 
718 static struct GfxDecodeInfo gfxdecodeinfo_wizdfire[] =
719 {
720 	{ REGION_GFX1, 0, &charlayout,        0, 32 },	/* Gfx chip 1 as 8x8 */
721 	{ REGION_GFX2, 0, &tilelayout,        0, 32 },	/* Gfx chip 1 as 16x16 */
722 	{ REGION_GFX3, 0, &tilelayout,      512, 32 },  /* Gfx chip 2 as 16x16 */
723 	{ REGION_GFX4, 0, &spritelayout,   1024, 32 }, /* Sprites 16x16 */
724 	{ REGION_GFX5, 0, &spritelayout,   1536, 32 },
725 	{ -1 } /* end of array */
726 };
727 
728 static struct GfxDecodeInfo gfxdecodeinfo_nitrobal[] =
729 {
730 	{ REGION_GFX1, 0, &charlayout,        0, 32 },	/* Gfx chip 1 as 8x8 */
731 	{ REGION_GFX2, 0, &tilelayout,        0, 32 },	/* Gfx chip 1 as 16x16 */
732 	{ REGION_GFX3, 0, &tilelayout_8bpp, 512,  2 },  /* Gfx chip 2 as 16x16 */
733 	{ REGION_GFX4, 0, &spritelayout,   1024, 32 },  /* Sprites 16x16 */
734 	{ REGION_GFX5, 0, &spritelayout,   1536, 32 },
735 	{ -1 } /* end of array */
736 };
737 
738 static struct GfxDecodeInfo gfxdecodeinfo_hangzo[] =
739 {
740 	{ REGION_GFX1, 0, &charlayout,          0, 32 },	/* Characters 8x8 */
741 	{ REGION_GFX2, 0, &tilelayout,          0, 32 },	/* Tiles 16x16 */
742 	{ REGION_GFX3, 0, &tilelayout,        512, 32 },	/* Tiles 16x16 */
743 	{ REGION_GFX4, 0, &spritelayout2,    1024, 64 },	/* Sprites 16x16 */
744 	{ -1 } /* end of array */
745 };
746 
747 /**********************************************************************************/
748 
sound_irq(int state)749 static void sound_irq(int state)
750 {
751 	cpu_set_irq_line(1,1,state); /* IRQ 2 */
752 }
753 
WRITE_HANDLER(sound_bankswitch_w)754 static WRITE_HANDLER( sound_bankswitch_w )
755 {
756 	OKIM6295_set_bank_base(0, ((data & 1)>>0) * 0x40000);
757 	OKIM6295_set_bank_base(1, ((data & 2)>>1) * 0x40000);
758 }
759 
760 static struct YM2151interface ym2151_interface =
761 {
762 	1,
763 	32220000/9, /* Accurate, audio section crystal is 32.220 MHz */
764 	{ YM3012_VOL(40,MIXER_PAN_LEFT,40,MIXER_PAN_RIGHT) },
765 	{ sound_irq },
766 	{ sound_bankswitch_w }
767 };
768 
769 static struct OKIM6295interface okim6295_interface =
770 {
771 	2,              /* 2 chips */
772 	{ 32220000/32/132, 32220000/16/132 },/* Frequency */
773 	{ REGION_SOUND1, REGION_SOUND2 },
774 	{ 95, 40 } /* Note!  Keep chip 1 (voices) louder than chip 2 */
775 };
776 
777 /**********************************************************************************/
778 
779 static MACHINE_DRIVER_START( rohga )
780 
781 	/* basic machine hardware */
782 	MDRV_CPU_ADD(M68000, 14000000)
783 	MDRV_CPU_MEMORY(rohga_readmem,rohga_writemem)
784 	MDRV_CPU_VBLANK_INT(irq6_line_assert,1)
785 
786 	MDRV_CPU_ADD(H6280,32220000/4)
787 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
788 
789 	MDRV_FRAMES_PER_SECOND(58)
790 	MDRV_VBLANK_DURATION(529)
791 
792 	/* video hardware */
793 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_NEEDS_6BITS_PER_GUN | VIDEO_BUFFERS_SPRITERAM)
794 	MDRV_SCREEN_SIZE(40*8, 32*8)
795 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
796 	MDRV_GFXDECODE(gfxdecodeinfo)
797 	MDRV_PALETTE_LENGTH(2048)
798 
799 	MDRV_VIDEO_START(rohga)
800 	MDRV_VIDEO_UPDATE(rohga)
801 
802 	/* sound hardware */
803 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
804 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
805 	MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
806 MACHINE_DRIVER_END
807 
808 static MACHINE_DRIVER_START( wizdfire )
809 
810 	/* basic machine hardware */
811 	MDRV_CPU_ADD(M68000, 14000000)
812 	MDRV_CPU_MEMORY(wizdfire_readmem,wizdfire_writemem)
813 	MDRV_CPU_VBLANK_INT(irq6_line_assert,1)
814 
815 	MDRV_CPU_ADD(H6280,32220000/4)
816 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
817 
818 	MDRV_FRAMES_PER_SECOND(58)
819 	MDRV_VBLANK_DURATION(529)
820 
821 	/* video hardware */
822 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_NEEDS_6BITS_PER_GUN | VIDEO_BUFFERS_SPRITERAM | VIDEO_RGB_DIRECT)
823 	MDRV_SCREEN_SIZE(40*8, 32*8)
824 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
825 	MDRV_GFXDECODE(gfxdecodeinfo_wizdfire)
826 	MDRV_PALETTE_LENGTH(2048)
827 
828 	MDRV_VIDEO_START(wizdfire)
829 	MDRV_VIDEO_UPDATE(wizdfire)
830 
831 	/* sound hardware */
832 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
833 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
834 	MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
835 MACHINE_DRIVER_END
836 
837 static MACHINE_DRIVER_START( nitrobal )
838 
839 	/* basic machine hardware */
840 	MDRV_CPU_ADD(M68000, 14000000)
841 	MDRV_CPU_MEMORY(nitrobal_readmem,nitrobal_writemem)
842 	MDRV_CPU_VBLANK_INT(irq6_line_assert,1)
843 
844 	MDRV_CPU_ADD(H6280,32220000/4)
845 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
846 
847 	MDRV_FRAMES_PER_SECOND(58)
848 	MDRV_VBLANK_DURATION(529)
849 
850 	/* video hardware */
851 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_NEEDS_6BITS_PER_GUN | VIDEO_BUFFERS_SPRITERAM | VIDEO_RGB_DIRECT)
852 	MDRV_SCREEN_SIZE(40*8, 32*8)
853 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
854 	MDRV_GFXDECODE(gfxdecodeinfo_nitrobal)
855 	MDRV_PALETTE_LENGTH(2048)
856 
857 	MDRV_VIDEO_START(nitrobal)
858 	MDRV_VIDEO_UPDATE(nitrobal)
859 
860 	/* sound hardware */
861 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
862 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
863 	MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
864 MACHINE_DRIVER_END
865 
866 static MACHINE_DRIVER_START( hangzo )
867 
868 	/* basic machine hardware */
869 	MDRV_CPU_ADD(M68000, 14000000)
870 	MDRV_CPU_MEMORY(hangzo_readmem,hangzo_writemem)
871 	MDRV_CPU_VBLANK_INT(irq6_line_hold,1)
872 
873 	MDRV_CPU_ADD(H6280,32220000/4)
874 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
875 
876 	MDRV_FRAMES_PER_SECOND(58)
877 	MDRV_VBLANK_DURATION(529)
878 
879 	/* video hardware */
880 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_NEEDS_6BITS_PER_GUN | VIDEO_BUFFERS_SPRITERAM)
881 	MDRV_SCREEN_SIZE(40*8, 32*8)
882 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
883 	MDRV_GFXDECODE(gfxdecodeinfo_hangzo)
884 	MDRV_PALETTE_LENGTH(2048)
885 
886 	MDRV_VIDEO_START(rohga)
887 	MDRV_VIDEO_UPDATE(hangzo)
888 
889 	/* sound hardware */
890 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
891 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
892 	MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
893 MACHINE_DRIVER_END
894 
895 
896 /**********************************************************************************/
897 
898 ROM_START( rohga )
899 	ROM_REGION(0x200000, REGION_CPU1, 0 ) /* 68000 code */
900 	ROM_LOAD16_BYTE( "jd00.bin",  0x000000, 0x40000, CRC(e046c77a) SHA1(bb4d987a579a1a1524bc150ebda9cd24ed77a733) )
901 	ROM_LOAD16_BYTE( "jd03.bin",  0x000001, 0x40000, CRC(2c5120b8) SHA1(41b6618f0f086efd48486f72ada2fb6f184ad85b) )
902 	ROM_LOAD16_BYTE( "mam00.8a",  0x100000, 0x80000, CRC(0fa440a6) SHA1(f0f84c630fc30ec164acc21de871c857d391c398) )
903 	ROM_LOAD16_BYTE( "mam07.8d",  0x100001, 0x80000, CRC(f8bc7f20) SHA1(909324248bd207f3b01d9f694975b629d8ccaa08) )
904 
905 	ROM_REGION(0x10000, REGION_CPU2, 0 ) /* Sound CPU */
906 	ROM_LOAD( "ha04.18p",  0x00000,  0x10000,  CRC(eb6608eb) SHA1(0233677970aba12783dd4d6d58d70568ef641115) )
907 
908 	ROM_REGION( 0x020000, REGION_GFX1, ROMREGION_DISPOSE )
909 	ROM_LOAD16_BYTE( "ha01.13a",  0x00000,  0x10000,  CRC(fb8f8519) SHA1(0a237426561e5fef6a062e1ad5ae02204f72d5f9) ) /* Encrypted tiles */
910 	ROM_LOAD16_BYTE( "ha02.14a",  0x00001,  0x10000,  CRC(aa47c17f) SHA1(830dfcbfaef90133d93b0fbf3cf2067498fa658b) )
911 
912 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
913 	ROM_LOAD( "mam01.10a", 0x000000, 0x080000,  CRC(dbf4fbcc) SHA1(2f289556fd25beb7d30501cba17ac35ad28c5b91) ) /* Encrypted tiles */
914 	ROM_LOAD( "mam02.11a", 0x080000, 0x080000,  CRC(b1fac481) SHA1(da370499ea8ff7b3dd338b31f3799b760fd0d981) )
915 
916 	ROM_REGION( 0x200000, REGION_GFX3, ROMREGION_DISPOSE )
917 	ROM_LOAD( "mam08.17d",  0x000000, 0x100000,  CRC(ca97a83f) SHA1(2e097840ae56cf19ad2651d59c31182f47239d60) ) /* tiles 1 & 2 */
918 	ROM_LOAD( "mam09.18d",  0x100000, 0x100000,  CRC(3f57d56f) SHA1(0d4537da6ab62762179215deae72fe2e6a7869e1) )
919 
920 	ROM_REGION( 0x600000, REGION_GFX4, ROMREGION_DISPOSE )
921 	ROM_LOAD( "mam05.19a", 0x000000, 0x100000,  CRC(307a2cd1) SHA1(d7a795e47cf1533f0bb5a96162c8025282abe09f) ) /* 6bpp sprites */
922 	ROM_LOAD( "mam06.20a", 0x100000, 0x100000,  CRC(a1119a2d) SHA1(876f9295c2032ce491b45a103ffafc750d8c78e1) )
923 	ROM_LOAD( "mam10.19d", 0x200000, 0x100000,  CRC(99f48f9f) SHA1(685787de54e9158ced80f3821996c3a63f2a72a2) )
924 	ROM_LOAD( "mam11.20d", 0x300000, 0x100000,  CRC(c3f12859) SHA1(45fdfd55f606316c936f0a9e6b4940740138d344) )
925 	ROM_LOAD( "mam03.17a", 0x400000, 0x100000,  CRC(fc4dfd48) SHA1(0c5f5a09833ebeb3018e65edd6f7ce06d4ba84ed) )
926 	ROM_LOAD( "mam04.18a", 0x500000, 0x100000,  CRC(7d3b38bf) SHA1(9f83ad7497ed57405ad648f403eb69f776567a50) )
927 
928 	ROM_REGION(0x80000, REGION_SOUND2, 0 ) /* Oki samples */
929 	ROM_LOAD( "mam12.14p", 0x00000,  0x80000,  CRC(6f00b791) SHA1(c9fbc9ab5ce84fec79efa0a23373be97a27bf898) )
930 
931 	ROM_REGION(0x80000, REGION_SOUND1, 0 ) /* Oki samples */
932 	ROM_LOAD( "mam13.15p", 0x00000,  0x80000,  CRC(525b9461) SHA1(1d9bb3725dfe601b05a779b84b4191455087b969) )
933 
934 	ROM_REGION( 512, REGION_PROMS, 0 )
935 	ROM_LOAD( "hb-00.11p", 0x00000,  0x200,  CRC(b7a7baad) SHA1(39781c3412493b985d3616ac31142fc00bbcddf4) )	/* ? */
936 ROM_END
937 
938 ROM_START( rohgah )
939 	ROM_REGION(0x200000, REGION_CPU1, 0 ) /* 68000 code */
940 	ROM_LOAD16_BYTE( "jd00-2.2a", 0x000000, 0x40000, CRC(ec70646a) SHA1(5e25fe8ce0dfebf8f5903ebe9aa5ef01ca7aa2f0) )
941 	ROM_LOAD16_BYTE( "jd03-2.2d", 0x000001, 0x40000, CRC(11d4c9a2) SHA1(9afe684d749665f65e44a3665d5a1dc61458faa0) )
942 	ROM_LOAD16_BYTE( "mam00.8a",  0x100000, 0x80000, CRC(0fa440a6) SHA1(f0f84c630fc30ec164acc21de871c857d391c398) )
943 	ROM_LOAD16_BYTE( "mam07.8d",  0x100001, 0x80000, CRC(f8bc7f20) SHA1(909324248bd207f3b01d9f694975b629d8ccaa08) )
944 
945 	ROM_REGION(0x10000, REGION_CPU2, 0 ) /* Sound CPU */
946 	ROM_LOAD( "ha04.18p",  0x00000,  0x10000,  CRC(eb6608eb) SHA1(0233677970aba12783dd4d6d58d70568ef641115) )
947 
948 	ROM_REGION( 0x020000, REGION_GFX1, ROMREGION_DISPOSE )
949 	ROM_LOAD16_BYTE( "ha01.13a",  0x00000,  0x10000,  CRC(fb8f8519) SHA1(0a237426561e5fef6a062e1ad5ae02204f72d5f9) ) /* Encrypted tiles */
950 	ROM_LOAD16_BYTE( "ha02.14a",  0x00001,  0x10000,  CRC(aa47c17f) SHA1(830dfcbfaef90133d93b0fbf3cf2067498fa658b) )
951 
952 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
953 	ROM_LOAD( "mam01.10a", 0x000000, 0x080000,  CRC(dbf4fbcc) SHA1(2f289556fd25beb7d30501cba17ac35ad28c5b91) ) /* Encrypted tiles */
954 	ROM_LOAD( "mam02.11a", 0x080000, 0x080000,  CRC(b1fac481) SHA1(da370499ea8ff7b3dd338b31f3799b760fd0d981) )
955 
956 	ROM_REGION( 0x200000, REGION_GFX3, ROMREGION_DISPOSE )
957 	ROM_LOAD( "mam08.17d",  0x000000, 0x100000,  CRC(ca97a83f) SHA1(2e097840ae56cf19ad2651d59c31182f47239d60) ) /* tiles 1 & 2 */
958 	ROM_LOAD( "mam09.18d",  0x100000, 0x100000,  CRC(3f57d56f) SHA1(0d4537da6ab62762179215deae72fe2e6a7869e1) )
959 
960 	ROM_REGION( 0x600000, REGION_GFX4, ROMREGION_DISPOSE )
961 	ROM_LOAD( "mam05.19a", 0x000000, 0x100000,  CRC(307a2cd1) SHA1(d7a795e47cf1533f0bb5a96162c8025282abe09f) ) /* 6bpp sprites */
962 	ROM_LOAD( "mam06.20a", 0x100000, 0x100000,  CRC(a1119a2d) SHA1(876f9295c2032ce491b45a103ffafc750d8c78e1) )
963 	ROM_LOAD( "mam10.19d", 0x200000, 0x100000,  CRC(99f48f9f) SHA1(685787de54e9158ced80f3821996c3a63f2a72a2) )
964 	ROM_LOAD( "mam11.20d", 0x300000, 0x100000,  CRC(c3f12859) SHA1(45fdfd55f606316c936f0a9e6b4940740138d344) )
965 	ROM_LOAD( "mam03.17a", 0x400000, 0x100000,  CRC(fc4dfd48) SHA1(0c5f5a09833ebeb3018e65edd6f7ce06d4ba84ed) )
966 	ROM_LOAD( "mam04.18a", 0x500000, 0x100000,  CRC(7d3b38bf) SHA1(9f83ad7497ed57405ad648f403eb69f776567a50) )
967 
968 	ROM_REGION(0x80000, REGION_SOUND2, 0 ) /* Oki samples */
969 	ROM_LOAD( "mam12.14p", 0x00000,  0x80000,  CRC(6f00b791) SHA1(c9fbc9ab5ce84fec79efa0a23373be97a27bf898) )
970 
971 	ROM_REGION(0x80000, REGION_SOUND1, 0 ) /* Oki samples */
972 	ROM_LOAD( "mam13.15p", 0x00000,  0x80000,  CRC(525b9461) SHA1(1d9bb3725dfe601b05a779b84b4191455087b969) )
973 
974 	ROM_REGION( 512, REGION_PROMS, 0 )
975 	ROM_LOAD( "hb-00.11p", 0x00000,  0x200,  CRC(b7a7baad) SHA1(39781c3412493b985d3616ac31142fc00bbcddf4) )	/* ? */
976 ROM_END
977 
978 ROM_START( rohgau )
979 	ROM_REGION(0x200000, REGION_CPU1, 0 ) /* 68000 code */
980 	ROM_LOAD16_BYTE( "ha00.2a",  0x000000, 0x40000, CRC(d8d13052) SHA1(24113244200f15a16fed82c64de3e9e4e87d1257) )
981 	ROM_LOAD16_BYTE( "ha03.2d",  0x000001, 0x40000, CRC(5f683bbf) SHA1(a367b833fd1f64bff9618ce06be22aed218d4225) )
982 	ROM_LOAD16_BYTE( "mam00.8a",  0x100000, 0x80000, CRC(0fa440a6) SHA1(f0f84c630fc30ec164acc21de871c857d391c398) )
983 	ROM_LOAD16_BYTE( "mam07.8d",  0x100001, 0x80000, CRC(f8bc7f20) SHA1(909324248bd207f3b01d9f694975b629d8ccaa08) )
984 
985 	ROM_REGION(0x10000, REGION_CPU2, 0 ) /* Sound CPU */
986 	ROM_LOAD( "ha04.18p",  0x00000,  0x10000,  CRC(eb6608eb) SHA1(0233677970aba12783dd4d6d58d70568ef641115) )
987 
988 	ROM_REGION( 0x020000, REGION_GFX1, ROMREGION_DISPOSE )
989 	ROM_LOAD16_BYTE( "ha01.13a",  0x00000,  0x10000,  CRC(fb8f8519) SHA1(0a237426561e5fef6a062e1ad5ae02204f72d5f9) ) /* Encrypted tiles */
990 	ROM_LOAD16_BYTE( "ha02.14a",  0x00001,  0x10000,  CRC(aa47c17f) SHA1(830dfcbfaef90133d93b0fbf3cf2067498fa658b) )
991 
992 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
993 	ROM_LOAD( "mam01.10a", 0x000000, 0x080000,  CRC(dbf4fbcc) SHA1(2f289556fd25beb7d30501cba17ac35ad28c5b91) ) /* Encrypted tiles */
994 	ROM_LOAD( "mam02.11a", 0x080000, 0x080000,  CRC(b1fac481) SHA1(da370499ea8ff7b3dd338b31f3799b760fd0d981) )
995 
996 	ROM_REGION( 0x200000, REGION_GFX3, ROMREGION_DISPOSE )
997 	ROM_LOAD( "mam08.17d",  0x000000, 0x100000,  CRC(ca97a83f) SHA1(2e097840ae56cf19ad2651d59c31182f47239d60) ) /* tiles 1 & 2 */
998 	ROM_LOAD( "mam09.18d",  0x100000, 0x100000,  CRC(3f57d56f) SHA1(0d4537da6ab62762179215deae72fe2e6a7869e1) )
999 
1000 	ROM_REGION( 0x600000, REGION_GFX4, ROMREGION_DISPOSE )
1001 	ROM_LOAD( "mam05.19a", 0x000000, 0x100000,  CRC(307a2cd1) SHA1(d7a795e47cf1533f0bb5a96162c8025282abe09f) ) /* 6bpp sprites */
1002 	ROM_LOAD( "mam06.20a", 0x100000, 0x100000,  CRC(a1119a2d) SHA1(876f9295c2032ce491b45a103ffafc750d8c78e1) )
1003 	ROM_LOAD( "mam10.19d", 0x200000, 0x100000,  CRC(99f48f9f) SHA1(685787de54e9158ced80f3821996c3a63f2a72a2) )
1004 	ROM_LOAD( "mam11.20d", 0x300000, 0x100000,  CRC(c3f12859) SHA1(45fdfd55f606316c936f0a9e6b4940740138d344) )
1005 	ROM_LOAD( "mam03.17a", 0x400000, 0x100000,  CRC(fc4dfd48) SHA1(0c5f5a09833ebeb3018e65edd6f7ce06d4ba84ed) )
1006 	ROM_LOAD( "mam04.18a", 0x500000, 0x100000,  CRC(7d3b38bf) SHA1(9f83ad7497ed57405ad648f403eb69f776567a50) )
1007 
1008 	ROM_REGION(0x80000, REGION_SOUND2, 0 ) /* Oki samples */
1009 	ROM_LOAD( "mam12.14p", 0x00000,  0x80000,  CRC(6f00b791) SHA1(c9fbc9ab5ce84fec79efa0a23373be97a27bf898) )
1010 
1011 	ROM_REGION(0x80000, REGION_SOUND1, 0 ) /* Oki samples */
1012 	ROM_LOAD( "mam13.15p", 0x00000,  0x80000,  CRC(525b9461) SHA1(1d9bb3725dfe601b05a779b84b4191455087b969) )
1013 
1014 	ROM_REGION( 512, REGION_PROMS, 0 )
1015 	ROM_LOAD( "hb-00.11p", 0x00000,  0x200,  CRC(b7a7baad) SHA1(39781c3412493b985d3616ac31142fc00bbcddf4) )	/* ? */
1016 ROM_END
1017 
1018 
1019 ROM_START( wizdfire )
1020 	ROM_REGION(0x200000, REGION_CPU1, 0 ) /* 68000 code */
1021 	ROM_LOAD16_BYTE( "jf-01.3d",   0x000000, 0x20000, CRC(bde42a41) SHA1(0379de9c4cdcce35554b5dc15241ed2c4f0d7611) )
1022 	ROM_LOAD16_BYTE( "jf-00.3a",   0x000001, 0x20000, CRC(bca3c995) SHA1(dbebc9e301c04ee82ca4b658d3ab870790d1605b) )
1023 	ROM_LOAD16_BYTE( "jf-03.5d",   0x040000, 0x20000, CRC(5217d404) SHA1(7cfcdb9e2c812bf0d4ac8306834242876ac47844) )
1024 	ROM_LOAD16_BYTE( "jf-02.5a",   0x040001, 0x20000, CRC(36a1ce28) SHA1(62d52d720c89022de97759777230c45c460d8fb6) )
1025 	ROM_LOAD16_BYTE( "mas13",   0x080000, 0x80000, CRC(7e5256ce) SHA1(431d78ad185ba0216097f131fb2583a1a067e4f0) )
1026 	ROM_LOAD16_BYTE( "mas12",   0x080001, 0x80000, CRC(005bd499) SHA1(862079022f97bd11f2f33677dce55bd3b144a81b) )
1027 
1028 	ROM_REGION(0x10000, REGION_CPU2, 0 ) /* Sound CPU */
1029 	ROM_LOAD( "jf-06.20r",  0x00000,  0x10000,  CRC(79042546) SHA1(231561df9415a289756a533709f610894fb9176e) )
1030 
1031 	ROM_REGION( 0x020000, REGION_GFX1, ROMREGION_DISPOSE )
1032 	ROM_LOAD16_BYTE( "jf-04.10d",  0x00000,  0x10000,  CRC(73cba800) SHA1(dd7612fe1482713fcee5960b7db158be872d7fda) ) /* Chars */
1033 	ROM_LOAD16_BYTE( "jf-05.12d",  0x00001,  0x10000,  CRC(22e2c49d) SHA1(06cc2d0476156d1f521c4c57621ce3922a23aa04) )
1034 
1035 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
1036 	ROM_LOAD( "mas00", 0x000000, 0x100000,  CRC(3d011034) SHA1(167d6d088d51a41f196be104d795ffe24297c96a) ) /* Tiles */
1037 	ROM_LOAD( "mas01", 0x100000, 0x100000,  CRC(6d0c9d0b) SHA1(63e19dfd6451810637664b08e880aef139ca6ed5) )
1038 
1039 	ROM_REGION( 0x100000, REGION_GFX3, ROMREGION_DISPOSE )
1040 	ROM_LOAD( "mas02", 0x000000, 0x080000,  CRC(af00e620) SHA1(43f4680b22ac6baf840274462c07fee68a2fbdfb) )
1041 	ROM_LOAD( "mas03", 0x080000, 0x080000,  CRC(2fe61ea2) SHA1(0909e6c689c3e10225d7c074bd654ff2ada96983) )
1042 
1043 	ROM_REGION( 0x400000, REGION_GFX4, ROMREGION_DISPOSE )
1044 	ROM_LOAD16_BYTE( "mas04", 0x000001, 0x100000,  CRC(1e56953b) SHA1(0655ac7f3c5030a80c2d6bad5c3a79b2cb1ae4a2) ) /* Sprites #1 */
1045 	ROM_LOAD16_BYTE( "mas05", 0x000000, 0x100000,  CRC(3826b8f8) SHA1(d59197b4e0525b86876f9cce6fbf80caba976851) )
1046 	ROM_LOAD16_BYTE( "mas06", 0x200001, 0x100000,  CRC(3b8bbd45) SHA1(c9f9d4daf9c0cba5385af26f3762b29c291ff62b) )
1047 	ROM_LOAD16_BYTE( "mas07", 0x200000, 0x100000,  CRC(31303769) SHA1(509604be06ec8e0c1b56a81a8ffccdf0f79e9fd7) )
1048 
1049 	ROM_REGION( 0x100000, REGION_GFX5, ROMREGION_DISPOSE )
1050 	ROM_LOAD16_BYTE( "mas08", 0x000001, 0x080000,  CRC(e224fb7a) SHA1(9aa92fb98bddff313db2077c4db102e94c7af09b) ) /* Sprites #2 */
1051 	ROM_LOAD16_BYTE( "mas09", 0x000000, 0x080000,  CRC(5f6deb41) SHA1(850d0e157b4355e866ec770a2012293b2c55648f) )
1052 
1053 	ROM_REGION(0x80000, REGION_SOUND1, 0 ) /* Oki samples */
1054 	ROM_LOAD( "mas10",  0x00000,  0x80000,  CRC(6edc06a7) SHA1(8ab92cca9d4a5d4fed3d99737c6f023f3f606db2) )
1055 
1056 	ROM_REGION(0x80000, REGION_SOUND2, 0 ) /* Oki samples */
1057 	ROM_LOAD( "mas11",  0x00000,  0x80000,  CRC(c2f0a4f2) SHA1(af71d649aea273c17d7fbcf8693e8a1d4b31f7f8) )
1058 
1059 	ROM_REGION( 1024, REGION_PROMS, 0 )
1060 	ROM_LOAD( "mb7122h.16l", 0x00000,  0x400,  CRC(2bee57cc) SHA1(bc48670aa7c39f6ff7fae4c819eab22ed2db875b) )	/* Priority (unused) */
1061 ROM_END
1062 
1063 ROM_START( darksel2 )
1064 	ROM_REGION(0x200000, REGION_CPU1, 0 ) /* 68000 code */
1065 	ROM_LOAD16_BYTE( "jb01-3",  0x000000, 0x20000, CRC(82308c01) SHA1(aa0733e244f14f2c84b6929236771cbc99532bb2) )
1066 	ROM_LOAD16_BYTE( "jb00-3",  0x000001, 0x20000, CRC(1d38113a) SHA1(69dc5a4dbe9d9737df198240f3db6f2115e311a5) )
1067 	ROM_LOAD16_BYTE( "jf-03.5d",0x040000, 0x20000, CRC(5217d404) SHA1(7cfcdb9e2c812bf0d4ac8306834242876ac47844) )
1068 	ROM_LOAD16_BYTE( "jf-02.5a",0x040001, 0x20000, CRC(36a1ce28) SHA1(62d52d720c89022de97759777230c45c460d8fb6) )
1069 	ROM_LOAD16_BYTE( "mas13",   0x080000, 0x80000, CRC(7e5256ce) SHA1(431d78ad185ba0216097f131fb2583a1a067e4f0) )
1070 	ROM_LOAD16_BYTE( "mas12",   0x080001, 0x80000, CRC(005bd499) SHA1(862079022f97bd11f2f33677dce55bd3b144a81b) )
1071 
1072 	ROM_REGION(0x10000, REGION_CPU2, 0 ) /* Sound CPU */
1073 	ROM_LOAD( "jb06",  0x00000,  0x10000,  CRC(2066a1dd) SHA1(a0d136e90825fa9c089894a6852c634676d64579) )
1074 
1075 	ROM_REGION( 0x020000, REGION_GFX1, ROMREGION_DISPOSE )
1076 	ROM_LOAD16_BYTE( "jf-04.10d",  0x00000,  0x10000,  CRC(73cba800) SHA1(dd7612fe1482713fcee5960b7db158be872d7fda) ) /* Chars */
1077 	ROM_LOAD16_BYTE( "jf-05.12d",  0x00001,  0x10000,  CRC(22e2c49d) SHA1(06cc2d0476156d1f521c4c57621ce3922a23aa04) )
1078 
1079 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
1080 	ROM_LOAD( "mas00", 0x000000, 0x100000,  CRC(3d011034) SHA1(167d6d088d51a41f196be104d795ffe24297c96a) ) /* Tiles */
1081 	ROM_LOAD( "mas01", 0x100000, 0x100000,  CRC(6d0c9d0b) SHA1(63e19dfd6451810637664b08e880aef139ca6ed5) )
1082 
1083 	ROM_REGION( 0x100000, REGION_GFX3, ROMREGION_DISPOSE )
1084 	ROM_LOAD( "mas02", 0x000000, 0x080000,  CRC(af00e620) SHA1(43f4680b22ac6baf840274462c07fee68a2fbdfb) )
1085 	ROM_LOAD( "mas03", 0x080000, 0x080000,  CRC(2fe61ea2) SHA1(0909e6c689c3e10225d7c074bd654ff2ada96983) )
1086 
1087 	ROM_REGION( 0x400000, REGION_GFX4, ROMREGION_DISPOSE )
1088 	ROM_LOAD16_BYTE( "mas04", 0x000001, 0x100000,  CRC(1e56953b) SHA1(0655ac7f3c5030a80c2d6bad5c3a79b2cb1ae4a2) ) /* Sprites #1 */
1089 	ROM_LOAD16_BYTE( "mas05", 0x000000, 0x100000,  CRC(3826b8f8) SHA1(d59197b4e0525b86876f9cce6fbf80caba976851) )
1090 	ROM_LOAD16_BYTE( "mas06", 0x200001, 0x100000,  CRC(3b8bbd45) SHA1(c9f9d4daf9c0cba5385af26f3762b29c291ff62b) )
1091 	ROM_LOAD16_BYTE( "mas07", 0x200000, 0x100000,  CRC(31303769) SHA1(509604be06ec8e0c1b56a81a8ffccdf0f79e9fd7) )
1092 
1093 	ROM_REGION( 0x100000, REGION_GFX5, ROMREGION_DISPOSE )
1094 	ROM_LOAD16_BYTE( "mas08", 0x000001, 0x080000,  CRC(e224fb7a) SHA1(9aa92fb98bddff313db2077c4db102e94c7af09b) ) /* Sprites #2 */
1095 	ROM_LOAD16_BYTE( "mas09", 0x000000, 0x080000,  CRC(5f6deb41) SHA1(850d0e157b4355e866ec770a2012293b2c55648f) )
1096 
1097 	ROM_REGION(0x80000, REGION_SOUND1, 0 ) /* Oki samples */
1098 	ROM_LOAD( "mas10",  0x00000,  0x80000,  CRC(6edc06a7) SHA1(8ab92cca9d4a5d4fed3d99737c6f023f3f606db2) )
1099 
1100 	ROM_REGION(0x80000, REGION_SOUND2, 0 ) /* Oki samples */
1101 	ROM_LOAD( "mas11",  0x00000,  0x80000,  CRC(c2f0a4f2) SHA1(af71d649aea273c17d7fbcf8693e8a1d4b31f7f8) )
1102 
1103 	ROM_REGION( 1024, REGION_PROMS, 0 )
1104 	ROM_LOAD( "mb7122h.16l", 0x00000,  0x400,  CRC(2bee57cc) SHA1(bc48670aa7c39f6ff7fae4c819eab22ed2db875b) )	/* Priority (unused) */
1105 ROM_END
1106 
1107 ROM_START( nitrobal )
1108 	ROM_REGION(0x200000, REGION_CPU1, 0 ) /* 68000 code */
1109 	ROM_LOAD16_BYTE( "jl01-4.d3",   0x000000, 0x20000, CRC(0414e409) SHA1(bc19e7d2d9e768ce4052511043867c0ef9b0b61b) )
1110 	ROM_LOAD16_BYTE( "jl00-4.b3",   0x000001, 0x20000, CRC(dd9e2bcc) SHA1(dede49a4fafcfa03f38ba6c1149c9f8b115fb306) )
1111 	ROM_LOAD16_BYTE( "jl03-4.d5",   0x040000, 0x20000, CRC(ea264ac5) SHA1(ccdb87bbdd9e38537dd290d237d76ec32559efa3) )
1112 	ROM_LOAD16_BYTE( "jl02-4.b5",   0x040001, 0x20000, CRC(74047997) SHA1(bfd2f24889250e06945bb4798b40a56f832a9b19) )
1113 	ROM_LOAD16_BYTE( "jl05-2.d6",   0x080000, 0x40000, CRC(b820fa20) SHA1(8509567cf988fe27552d37241b25b66a6e1a9c39) )
1114 	ROM_LOAD16_BYTE( "jl04-2.b6",   0x080001, 0x40000, CRC(1fd8995b) SHA1(75d77835500e4b7caca92ba634859d7a2ad9b84c) )
1115 	/* Two empty rom slots at d7, b7 */
1116 
1117 	ROM_REGION(0x10000, REGION_CPU2, 0 ) /* Sound CPU */
1118 	ROM_LOAD( "jl08.r20",  0x00000,  0x10000,  CRC(93d93fe1) SHA1(efc618724251d23a23b3019d475f7739a7e88751) )
1119 
1120 	ROM_REGION( 0x020000, REGION_GFX1, ROMREGION_DISPOSE )
1121 	ROM_LOAD16_BYTE( "jl06.d10",  0x00000,  0x10000,  CRC(91cf668e) SHA1(fc153eaa09777f79369037a139470ad1118e8d7e) ) /* Chars */
1122 	ROM_LOAD16_BYTE( "jl07.d12",  0x00001,  0x10000,  CRC(e61d0e42) SHA1(80d6ada356c721b0be826554ec6731dbbc19e0ab) )
1123 
1124 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
1125 	ROM_LOAD( "mav00.b10", 0x00000, 0x80000,  CRC(34785d97) SHA1(094f881cd699d1b9fd079778f20f8c9d83283e6e) ) /* Tiles */
1126 	ROM_LOAD( "mav01.b12", 0x80000, 0x80000,  CRC(8b531b16) SHA1(f734286f4510b2c09dc2d6d2b8c8da9dc4424287) )
1127 
1128 	ROM_REGION( 0x200000, REGION_GFX3, ROMREGION_DISPOSE )
1129 	ROM_LOAD( "mav02.b16", 0x000000, 0x100000,  CRC(20723bf7) SHA1(b3491d98ff415701fec2b58d85f99c743d71b013) ) /* Tiles */
1130 	ROM_LOAD( "mav03.e16", 0x100000, 0x100000,  CRC(ef6195f0) SHA1(491bc030519c78b84396f7f8a21df9daf8acc140) )
1131 
1132 	ROM_REGION( 0x300000, REGION_GFX4, ROMREGION_DISPOSE )
1133 	ROM_LOAD16_BYTE( "mav05.e19", 0x000000, 0x100000,  CRC(d92d769c) SHA1(8012e7f2b9a7cbccde8da90025647443beb6c47c) ) /* Sprites #1 */
1134 	ROM_LOAD16_BYTE( "mav04.b19", 0x000001, 0x100000,  CRC(8ba48385) SHA1(926ae1e0e99b8e022b6798ceb29dd080cfc1bada) )
1135 	ROM_LOAD16_BYTE( "mav07.e20", 0x200000, 0x080000,  CRC(5fc10ccd) SHA1(7debcf223802d5c2ea3d29d39850c8756c863b31) )
1136 	ROM_LOAD16_BYTE( "mav06.b20", 0x200001, 0x080000,  CRC(ae6201a5) SHA1(c0ae87fa96d12377c5522cb8adfed03373ab3757) )
1137 
1138 	ROM_REGION( 0x80000, REGION_GFX5, ROMREGION_DISPOSE )
1139 	ROM_LOAD16_BYTE( "mav09.e23", 0x000000, 0x040000,  CRC(1ce7b51a) SHA1(17ed8f34bf6d057e0504e72e95f448d5923aa82e) ) /* Sprites #2 */
1140 	ROM_LOAD16_BYTE( "mav08.b23", 0x000001, 0x040000,  CRC(64966576) SHA1(40c14c0f62eef0317abfb7192505e0337fb5cde5) )
1141 
1142 	ROM_REGION(0x80000, REGION_SOUND1, 0 ) /* Oki samples */
1143 	ROM_LOAD( "mav10.r17",  0x00000,  0x80000,  CRC(8ad734b0) SHA1(768b9f54bbf4b54591cafecb7a27960da919ce84) )
1144 
1145 	ROM_REGION(0x80000, REGION_SOUND2, 0 ) /* Oki samples */
1146 	ROM_LOAD( "mav11.r19",  0x00000,  0x80000,  CRC(ef513908) SHA1(72db6c704071d7a784b3768c256fc51087e9e93c) )
1147 ROM_END
1148 
1149 ROM_START( hangzo )
1150 	ROM_REGION(0x200000, REGION_CPU1, 0 ) /* 68000 code */
1151 	ROM_LOAD16_BYTE( "Pro0H 12.18.2A.27C1001",  0x000000, 0x20000, CRC(ac8087db) SHA1(518193372cde6024fda96c6ed1862245e0bfb465) )
1152 	ROM_LOAD16_BYTE( "Pro0H 12.18.2D.27C1001",  0x000001, 0x20000, CRC(a6b7f4f4) SHA1(1b3a00ef124d130317171d9042018fbb30662fec) )
1153 	ROM_LOAD16_BYTE( "Pro1H 12.10.4A.27C010",   0x040000, 0x20000, CRC(0d04f43d) SHA1(167b595450f6f9b842dc909f6c61a96fa34b7991) )
1154 	ROM_LOAD16_BYTE( "Pro1L 12.10.4D.27C010",   0x040001, 0x20000, CRC(2e323918) SHA1(f3d9168f395e835b075dfcbb0464770044d350f3) )
1155 	ROM_LOAD16_BYTE( "Pro2H 12.10.6A.27C010",   0x080000, 0x20000, CRC(bb3185a6) SHA1(fa4ba7b4b53a5b3486c36441463a290b12c2acbe) )
1156 	ROM_LOAD16_BYTE( "Pro2L 12.10.6D.27C010",   0x080001, 0x20000, CRC(11ce97bb) SHA1(d9c1872762f9acaeed1ebc640a71fa7a4b9d013c) )
1157 
1158 	ROM_REGION(0x10000, REGION_CPU2, 0 ) /* Sound CPU */
1159 	ROM_LOAD( "SND 12.18.18P.27C512",  0x00000,  0x10000,  CRC(97c592dc) SHA1(7a0e08f3ffd42d07d1d0a9db52c7fd85dba28bd8) )
1160 
1161 	ROM_REGION( 0x040000, REGION_GFX1, ROMREGION_DISPOSE )
1162 	/* filled in later */
1163 
1164 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
1165 	ROM_LOAD( "BK1L 12.10.9A.574200",  0x000000, 0x080000,  CRC(5199729b) SHA1(1cb8e7b91e5d0b3a699e47b6bbb3e6e9c53c8590) ) /* Encrypted tiles */
1166 	ROM_LOAD( "BK1H 12.10.11A.574200", 0x080000, 0x080000,  CRC(85887bd8) SHA1(6cb6f9c9e6e5824c6b8006ab195f27014031907e) )
1167 
1168 	ROM_REGION( 0x200000, REGION_GFX3, ROMREGION_DISPOSE )
1169 	ROM_LOAD( "BK23L 12.10.17D.574200",  0x000000, 0x080000,  CRC(ed4e47c6) SHA1(b09ed1a6bf1b42139c7817bae18cd5580c42cf91) ) /* tiles 1 & 2 */
1170 	ROM_LOAD( "BK23H 12.10.18D.574200",  0x100000, 0x080000,  CRC(6a725fb2) SHA1(f4da4da62eb7e3ec2f1a54b57eaf94dc748dec68) )
1171 
1172 	ROM_REGION( 0x400000, REGION_GFX4, ROMREGION_DISPOSE )
1173 	ROM_LOAD( "OBJ01L 12.10.19A.27C4000", 0x000000, 0x080000,  CRC(c141e310) SHA1(81eb0b977aaf44a110a663416e385ca617de8f28) ) /* 6bpp sprites */
1174 	ROM_LOAD( "OBJ01H 12.10.20A.27C4000", 0x100000, 0x080000,  CRC(6a7b4252) SHA1(4bd588bc96c07cc9367afdeab4976af6f8dcc823) )
1175 	ROM_LOAD( "OBJ23L 12.10.19D.27C4000", 0x200000, 0x080000,  CRC(0db6df6c) SHA1(fe7ef7b5a279656d9e46334c4833ab8911caa5db) )
1176 	ROM_LOAD( "OBJ23H 12.10.20D.27C4000", 0x300000, 0x080000,  CRC(165031a1) SHA1(0e88fe45fd78d352fdbd398c1d98feefe1b43917) )
1177 
1178 	ROM_REGION(0x80000, REGION_SOUND2, 0 ) /* Oki samples */
1179 	ROM_LOAD( "PCM16K 11.5.14P.574000", 0x00000,  0x80000,  CRC(5b95c6c7) SHA1(587e7f87d085af3a5d24f317fffc1716c8027e43) )
1180 
1181 	ROM_REGION(0x80000, REGION_SOUND1, 0 ) /* Oki samples */
1182 	ROM_LOAD( "PCM8K 11.5.15P.27C020", 0x00000,  0x40000,  CRC(02682a9a) SHA1(914ffc7c16e90c1ac28a228df415a956684f8192) )
1183 
1184 	ROM_REGION( 512, REGION_PROMS,  0 )
1185 	ROM_LOAD( "hb-00.11p", 0x00000,  0x200,  CRC(b7a7baad) SHA1(39781c3412493b985d3616ac31142fc00bbcddf4) ) /* ? */
1186 ROM_END
1187 
1188 
1189 /**********************************************************************************/
1190 
1191 extern void decoprot_reset(void);
1192 
DRIVER_INIT(rohga)1193 static DRIVER_INIT( rohga )
1194 {
1195 	deco56_decrypt(REGION_GFX1);
1196 	deco56_decrypt(REGION_GFX2);
1197     decoprot_reset();
1198 }
1199 
1200 
1201 
DRIVER_INIT(wizdfire)1202 static DRIVER_INIT( wizdfire )
1203 {
1204 	deco74_decrypt(REGION_GFX1);
1205 	deco74_decrypt(REGION_GFX2);
1206 	deco74_decrypt(REGION_GFX3);
1207 }
1208 
DRIVER_INIT(nitrobal)1209 static DRIVER_INIT( nitrobal )
1210 {
1211 	deco56_decrypt(REGION_GFX1);
1212 	deco56_decrypt(REGION_GFX2);
1213 	deco74_decrypt(REGION_GFX3);
1214 }
1215 
DRIVER_INIT(hangzo)1216 static DRIVER_INIT( hangzo )
1217 {
1218 	const data8_t *src = memory_region(REGION_GFX2);
1219 	data8_t *dst = memory_region(REGION_GFX1);
1220 
1221 	memcpy(dst,src,0x20000);
1222 	memcpy(dst+0x20000,src+0x80000,0x20000);
1223 
1224     decoprot_reset();
1225 }
1226 
1227 
1228 
1229 GAME(1991, rohga,    0,       rohga,    rohga,    rohga,    ROT0,   "Data East Corporation", "Rohga Armour Force (Asia-Europe v3.0)" )
1230 GAME(1991, rohgah,   rohga,   rohga,    rohga,    rohga,    ROT0,   "Data East Corporation", "Rohga Armour Force (Hong Kong v3.0)" )
1231 GAME(1991, rohgau,   rohga,   rohga,    rohga,    rohga,    ROT0,   "Data East Corporation", "Rohga Armour Force (US v1.0)" )
1232 GAME(1992, wizdfire, 0,       wizdfire, wizdfire, wizdfire, ROT0,   "Data East Corporation", "Wizard Fire (US v1.1)" )
1233 GAME(1992, darksel2, wizdfire,wizdfire, wizdfire, wizdfire, ROT0,   "Data East Corporation", "Dark Seal 2 (Japan v2.1)" )
1234 GAME(1992, nitrobal, 0,       nitrobal, nitrobal, nitrobal, ROT270, "Data East Corporation", "Nitro Ball (US)" )
1235 GAME(1992, hangzo,   0,       hangzo,   hangzo,   hangzo,   ROT0,   "Hot-B",                 "Hangzo (Japan, Prototype)" )
1236