1 #include "../vidhrdw/aerofgt.c"
2 
3 /***************************************************************************
4 
5 Various Video System Co. games using the C7-01 VS8803 VS8904 VS8905 video
6 chips.
7 I'm not sure, but I think 8904/8905 handle sprites and c7-01/8803 tilemaps.
8 tail2nos doesn't have the 8904/8905, and indeed it has a different sprite
9 system.
10 
11 Driver by Nicola Salmoria
12 
13 
14 Notes:
15 - Sound doesn't work in Spinal Breakers
16 - Sprite zoom is probably not 100% accurate (check the table in vidhrdw).
17   In pspikes, the zooming text during attract mode is horrible.
18 
19 pspikes/turbofrc/aerofgtb write to two addresses which look like control
20 registers for a video generator. Maybe they control the display size/position.
21 aerofgt is different, it writes to consecutive memory addresses and the values
22 it writes don't seem to be related to these ones.
23 
24           00 01 02 03 04 05  08 09 0a 0b 0c 0d
25           ------------------------------------
26 pspikes   57 63 69 71 1f 00  77 79 7b 7f 1f 00
27 karatblz  57 63 69 71 1f 00  77 79 7b 7f 1f 00
28 turbofrc  57 63 69 71 1f 00  77 79 7b 7f 1f 00
29 spinlbrk  57 68 6f 75 ff 01  77 78 7b 7f ff 00
30 aerofgtb  4f 5d 63 71 1f 00  6f 70 72 7c 1f 02
31 tail2nos  4f 5e 64 71 1f 09  7a 7c 7e 7f 1f 02
32 
33 I think that bit 1 of register 0d is flip screen.
34 
35 ***************************************************************************/
36 
37 #include "driver.h"
38 #include "vidhrdw/generic.h"
39 #include "cpu/z80/z80.h"
40 
41 
42 extern unsigned char *aerofgt_rasterram;
43 extern unsigned char *aerofgt_bg1videoram,*aerofgt_bg2videoram;
44 extern unsigned char *aerofgt_spriteram1,*aerofgt_spriteram2;
45 extern size_t aerofgt_spriteram1_size,aerofgt_spriteram2_size;
46 
47 READ_HANDLER( aerofgt_rasterram_r );
48 WRITE_HANDLER( aerofgt_rasterram_w );
49 READ_HANDLER( aerofgt_spriteram_2_r );
50 WRITE_HANDLER( aerofgt_spriteram_2_w );
51 READ_HANDLER( aerofgt_bg1videoram_r );
52 READ_HANDLER( aerofgt_bg2videoram_r );
53 WRITE_HANDLER( aerofgt_bg1videoram_w );
54 WRITE_HANDLER( aerofgt_bg2videoram_w );
55 WRITE_HANDLER( pspikes_gfxbank_w );
56 WRITE_HANDLER( karatblz_gfxbank_w );
57 WRITE_HANDLER( spinlbrk_gfxbank_w );
58 WRITE_HANDLER( turbofrc_gfxbank_w );
59 WRITE_HANDLER( aerofgt_gfxbank_w );
60 WRITE_HANDLER( aerofgt_bg1scrollx_w );
61 WRITE_HANDLER( aerofgt_bg1scrolly_w );
62 WRITE_HANDLER( aerofgt_bg2scrollx_w );
63 WRITE_HANDLER( aerofgt_bg2scrolly_w );
64 WRITE_HANDLER( pspikes_palette_bank_w );
65 int pspikes_vh_start(void);
66 int karatblz_vh_start(void);
67 int spinlbrk_vh_start(void);
68 int turbofrc_vh_start(void);
69 void pspikes_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
70 void karatblz_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
71 void spinlbrk_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
72 void turbofrc_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
73 void aerofgt_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
74 
75 
76 
77 
78 static unsigned char *aerofgt_workram;
79 
READ_HANDLER(aerofgt_workram_r)80 static READ_HANDLER( aerofgt_workram_r )
81 {
82 	return READ_WORD(&aerofgt_workram[offset]);
83 }
84 
WRITE_HANDLER(aerofgt_workram_w)85 static WRITE_HANDLER( aerofgt_workram_w )
86 {
87 	COMBINE_WORD_MEM(&aerofgt_workram[offset],data);
88 }
89 
90 
91 
92 static int pending_command;
93 
WRITE_HANDLER(sound_command_w)94 static WRITE_HANDLER( sound_command_w )
95 {
96 	if ((data & 0x00ff0000) == 0)
97 	{
98 		pending_command = 1;
99 		soundlatch_w(offset,data & 0xff);
100 		cpu_cause_interrupt(1,Z80_NMI_INT);
101 	}
102 }
103 
WRITE_HANDLER(turbofrc_sound_command_w)104 static WRITE_HANDLER( turbofrc_sound_command_w )
105 {
106 	if ((data & 0xff000000) == 0)
107 	{
108 		pending_command = 1;
109 		soundlatch_w(offset,(data >> 8) & 0xff);
110 		cpu_cause_interrupt(1,Z80_NMI_INT);
111 	}
112 }
113 
READ_HANDLER(pending_command_r)114 static READ_HANDLER( pending_command_r )
115 {
116 	return pending_command;
117 }
118 
WRITE_HANDLER(pending_command_clear_w)119 static WRITE_HANDLER( pending_command_clear_w )
120 {
121 	pending_command = 0;
122 }
123 
WRITE_HANDLER(aerofgt_sh_bankswitch_w)124 static WRITE_HANDLER( aerofgt_sh_bankswitch_w )
125 {
126 	unsigned char *RAM = memory_region(REGION_CPU2);
127 	int bankaddress;
128 
129 
130 	bankaddress = 0x10000 + (data & 0x03) * 0x8000;
131 	cpu_setbank(1,&RAM[bankaddress]);
132 }
133 
134 
135 
136 static struct MemoryReadAddress pspikes_readmem[] =
137 {
138 	{ 0x000000, 0x03ffff, MRA_ROM },
139 	{ 0x100000, 0x10ffff, MRA_BANK6 },
140 	{ 0x200000, 0x203fff, MRA_BANK4 },
141 	{ 0xff8000, 0xff8fff, aerofgt_bg1videoram_r },
142 	{ 0xffd000, 0xffdfff, aerofgt_rasterram_r },
143 	{ 0xffe000, 0xffefff, paletteram_word_r },
144 	{ 0xfff000, 0xfff001, input_port_0_r },
145 	{ 0xfff002, 0xfff003, input_port_1_r },
146 	{ 0xfff004, 0xfff005, input_port_2_r },
147 	{ 0xfff006, 0xfff007, pending_command_r },
148 	{ -1 }  /* end of table */
149 };
150 
151 static struct MemoryWriteAddress pspikes_writemem[] =
152 {
153 	{ 0x000000, 0x03ffff, MWA_ROM },
154 	{ 0x100000, 0x10ffff, MWA_BANK6 },	/* work RAM */
155 	{ 0x200000, 0x203fff, MWA_BANK4, &aerofgt_spriteram1, &aerofgt_spriteram1_size },
156 	{ 0xff8000, 0xff8fff, aerofgt_bg1videoram_w, &aerofgt_bg1videoram },
157 	{ 0xffc000, 0xffc3ff, aerofgt_spriteram_2_w, &spriteram_2, &spriteram_2_size },
158 	{ 0xffd000, 0xffdfff, aerofgt_rasterram_w, &aerofgt_rasterram },	/* bg1 scroll registers */
159 	{ 0xffe000, 0xffefff, paletteram_xRRRRRGGGGGBBBBB_word_w, &paletteram },
160 	{ 0xfff000, 0xfff001, pspikes_palette_bank_w },
161 	{ 0xfff002, 0xfff003, pspikes_gfxbank_w },
162 	{ 0xfff004, 0xfff005, aerofgt_bg1scrolly_w },
163 	{ 0xfff006, 0xfff007, sound_command_w },
164 	{ -1 }  /* end of table */
165 };
166 
167 static struct MemoryReadAddress karatblz_readmem[] =
168 {
169 	{ 0x000000, 0x07ffff, MRA_ROM },
170 	{ 0x080000, 0x081fff, aerofgt_bg1videoram_r },
171 	{ 0x082000, 0x083fff, aerofgt_bg2videoram_r },
172 	{ 0x0a0000, 0x0affff, MRA_BANK4 },
173 	{ 0x0b0000, 0x0bffff, MRA_BANK5 },
174 	{ 0x0c0000, 0x0cffff, MRA_BANK6 },	/* work RAM */
175 	{ 0x0f8000, 0x0fbfff, aerofgt_workram_r },	/* work RAM */
176 	{ 0xff8000, 0xffbfff, aerofgt_workram_r },	/* mirror */
177 	{ 0x0fc000, 0x0fc7ff, aerofgt_spriteram_2_r },
178 	{ 0x0fe000, 0x0fe7ff, paletteram_word_r },
179 	{ 0x0ff000, 0x0ff001, input_port_0_r },
180 	{ 0x0ff002, 0x0ff003, input_port_1_r },
181 	{ 0x0ff004, 0x0ff005, input_port_2_r },
182 	{ 0x0ff006, 0x0ff007, input_port_3_r },
183 	{ 0x0ff008, 0x0ff009, input_port_4_r },
184 	{ 0x0ff00a, 0x0ff00b, pending_command_r },
185 	{ -1 }  /* end of table */
186 };
187 
188 static struct MemoryWriteAddress karatblz_writemem[] =
189 {
190 	{ 0x000000, 0x07ffff, MWA_ROM },
191 	{ 0x080000, 0x081fff, aerofgt_bg1videoram_w, &aerofgt_bg1videoram },
192 	{ 0x082000, 0x083fff, aerofgt_bg2videoram_w, &aerofgt_bg2videoram },
193 	{ 0x0a0000, 0x0affff, MWA_BANK4, &aerofgt_spriteram1, &aerofgt_spriteram1_size },
194 	{ 0x0b0000, 0x0bffff, MWA_BANK5, &aerofgt_spriteram2, &aerofgt_spriteram2_size },
195 	{ 0x0c0000, 0x0cffff, MWA_BANK6 },	/* work RAM */
196 	{ 0x0f8000, 0x0fbfff, aerofgt_workram_w, &aerofgt_workram },	/* work RAM */
197 	{ 0xff8000, 0xffbfff, aerofgt_workram_w },	/* mirror */
198 	{ 0x0fc000, 0x0fc7ff, aerofgt_spriteram_2_w, &spriteram_2, &spriteram_2_size },
199 	{ 0x0fe000, 0x0fe7ff, paletteram_xRRRRRGGGGGBBBBB_word_w, &paletteram },
200 	{ 0x0ff002, 0x0ff003, karatblz_gfxbank_w },
201 	{ 0x0ff006, 0x0ff007, sound_command_w },
202 	{ 0x0ff008, 0x0ff009, aerofgt_bg1scrollx_w },
203 	{ 0x0ff00a, 0x0ff00b, aerofgt_bg1scrolly_w },
204 	{ 0x0ff00c, 0x0ff00d, aerofgt_bg2scrollx_w },
205 	{ 0x0ff00e, 0x0ff00f, aerofgt_bg2scrolly_w },
206 	{ -1 }  /* end of table */
207 };
208 
209 static struct MemoryReadAddress spinlbrk_readmem[] =
210 {
211 	{ 0x000000, 0x03ffff, MRA_ROM },
212 	{ 0x080000, 0x080fff, aerofgt_bg1videoram_r },
213 	{ 0x082000, 0x082fff, aerofgt_bg2videoram_r },
214 	{ 0xff8000, 0xffbfff, MRA_BANK6 },
215 	{ 0xffc000, 0xffc7ff, aerofgt_spriteram_2_r },
216 	{ 0xffd000, 0xffd1ff, aerofgt_rasterram_r },
217 	{ 0xffe000, 0xffe7ff, paletteram_word_r },
218 	{ 0xfff000, 0xfff001, input_port_0_r },
219 	{ 0xfff002, 0xfff003, input_port_1_r },
220 	{ 0xfff004, 0xfff005, input_port_2_r },
221 	{ -1 }  /* end of table */
222 };
223 
224 static struct MemoryWriteAddress spinlbrk_writemem[] =
225 {
226 	{ 0x000000, 0x03ffff, MWA_ROM },
227 	{ 0x080000, 0x080fff, aerofgt_bg1videoram_w, &aerofgt_bg1videoram },
228 	{ 0x082000, 0x082fff, aerofgt_bg2videoram_w, &aerofgt_bg2videoram },
229 	{ 0xff8000, 0xffbfff, MWA_BANK6 },	/* work RAM */
230 	{ 0xffc000, 0xffc7ff, aerofgt_spriteram_2_w, &spriteram_2, &spriteram_2_size },
231 	{ 0xffd000, 0xffd1ff, aerofgt_rasterram_w, &aerofgt_rasterram },	/* bg1 scroll registers */
232 	{ 0xffe000, 0xffe7ff, paletteram_xRRRRRGGGGGBBBBB_word_w, &paletteram },
233 	{ 0xfff000, 0xfff001, spinlbrk_gfxbank_w },
234 	{ 0xfff002, 0xfff003, aerofgt_bg2scrollx_w },
235 	{ 0xfff006, 0xfff007, sound_command_w },
236 	{ -1 }  /* end of table */
237 };
238 
239 static struct MemoryReadAddress turbofrc_readmem[] =
240 {
241 	{ 0x000000, 0x0bffff, MRA_ROM },
242 	{ 0x0c0000, 0x0cffff, MRA_BANK6 },	/* work RAM */
243 	{ 0x0d0000, 0x0d1fff, aerofgt_bg1videoram_r },
244 	{ 0x0d2000, 0x0d3fff, aerofgt_bg2videoram_r },
245 	{ 0x0e0000, 0x0e3fff, MRA_BANK4 },
246 	{ 0x0e4000, 0x0e7fff, MRA_BANK5 },
247 	{ 0x0f8000, 0x0fbfff, aerofgt_workram_r },	/* work RAM */
248 	{ 0xff8000, 0xffbfff, aerofgt_workram_r },	/* mirror */
249 	{ 0x0fc000, 0x0fc7ff, aerofgt_spriteram_2_r },
250 	{ 0xffc000, 0xffc7ff, aerofgt_spriteram_2_r },	/* mirror */
251 	{ 0x0fd000, 0x0fdfff, aerofgt_rasterram_r },
252 	{ 0xffd000, 0xffdfff, aerofgt_rasterram_r },	/* mirror */
253 	{ 0x0fe000, 0x0fe7ff, paletteram_word_r },
254 	{ 0xfff000, 0xfff001, input_port_0_r },
255 	{ 0xfff002, 0xfff003, input_port_1_r },
256 	{ 0xfff004, 0xfff005, input_port_2_r },
257 	{ 0xfff006, 0xfff007, pending_command_r },
258 	{ 0xfff008, 0xfff009, input_port_3_r },
259 	{ -1 }  /* end of table */
260 };
261 
262 static struct MemoryWriteAddress turbofrc_writemem[] =
263 {
264 	{ 0x000000, 0x0bffff, MWA_ROM },
265 	{ 0x0c0000, 0x0cffff, MWA_BANK6 },	/* work RAM */
266 	{ 0x0d0000, 0x0d1fff, aerofgt_bg1videoram_w, &aerofgt_bg1videoram },
267 	{ 0x0d2000, 0x0d3fff, aerofgt_bg2videoram_w, &aerofgt_bg2videoram },
268 	{ 0x0e0000, 0x0e3fff, MWA_BANK4, &aerofgt_spriteram1, &aerofgt_spriteram1_size },
269 	{ 0x0e4000, 0x0e7fff, MWA_BANK5, &aerofgt_spriteram2, &aerofgt_spriteram2_size },
270 	{ 0x0f8000, 0x0fbfff, aerofgt_workram_w, &aerofgt_workram },	/* work RAM */
271 	{ 0xff8000, 0xffbfff, aerofgt_workram_w },	/* mirror */
272 	{ 0x0fc000, 0x0fc7ff, aerofgt_spriteram_2_w, &spriteram_2, &spriteram_2_size },
273 	{ 0xffc000, 0xffc7ff, aerofgt_spriteram_2_w },	/* mirror */
274 	{ 0x0fd000, 0x0fdfff, aerofgt_rasterram_w, &aerofgt_rasterram },	/* bg1 scroll registers */
275 	{ 0xffd000, 0xffdfff, aerofgt_rasterram_w },	/* mirror */
276 	{ 0x0fe000, 0x0fe7ff, paletteram_xRRRRRGGGGGBBBBB_word_w, &paletteram },
277 	{ 0xfff002, 0xfff003, aerofgt_bg1scrolly_w },
278 	{ 0xfff004, 0xfff005, aerofgt_bg2scrollx_w },
279 	{ 0xfff006, 0xfff007, aerofgt_bg2scrolly_w },
280 	{ 0xfff008, 0xfff00b, turbofrc_gfxbank_w },
281 	{ 0xfff00c, 0xfff00d, MWA_NOP },	/* related to bg2 (written together with the scroll registers) */
282 	{ 0xfff00e, 0xfff00f, turbofrc_sound_command_w },
283 	{ -1 }  /* end of table */
284 };
285 
286 static struct MemoryReadAddress aerofgtb_readmem[] =
287 {
288 	{ 0x000000, 0x07ffff, MRA_ROM },
289 	{ 0x0c0000, 0x0cffff, MRA_BANK6 },	/* work RAM */
290 	{ 0x0d0000, 0x0d1fff, aerofgt_bg1videoram_r },
291 	{ 0x0d2000, 0x0d3fff, aerofgt_bg2videoram_r },
292 	{ 0x0e0000, 0x0e3fff, MRA_BANK4 },
293 	{ 0x0e4000, 0x0e7fff, MRA_BANK5 },
294 	{ 0x0f8000, 0x0fbfff, aerofgt_workram_r },	/* work RAM */
295 	{ 0x0fc000, 0x0fc7ff, aerofgt_spriteram_2_r },
296 	{ 0x0fd000, 0x0fd7ff, paletteram_word_r },
297 	{ 0x0fe000, 0x0fe001, input_port_0_r },
298 	{ 0x0fe002, 0x0fe003, input_port_1_r },
299 	{ 0x0fe004, 0x0fe005, input_port_2_r },
300 	{ 0x0fe006, 0x0fe007, pending_command_r },
301 	{ 0x0fe008, 0x0fe009, input_port_3_r },
302 	{ 0x0ff000, 0x0fffff, aerofgt_rasterram_r },
303 	{ -1 }  /* end of table */
304 };
305 
306 static struct MemoryWriteAddress aerofgtb_writemem[] =
307 {
308 	{ 0x000000, 0x07ffff, MWA_ROM },
309 	{ 0x0c0000, 0x0cffff, MWA_BANK6 },	/* work RAM */
310 	{ 0x0d0000, 0x0d1fff, aerofgt_bg1videoram_w, &aerofgt_bg1videoram },
311 	{ 0x0d2000, 0x0d3fff, aerofgt_bg2videoram_w, &aerofgt_bg2videoram },
312 	{ 0x0e0000, 0x0e3fff, MWA_BANK4, &aerofgt_spriteram1, &aerofgt_spriteram1_size },
313 	{ 0x0e4000, 0x0e7fff, MWA_BANK5, &aerofgt_spriteram2, &aerofgt_spriteram2_size },
314 	{ 0x0f8000, 0x0fbfff, aerofgt_workram_w, &aerofgt_workram },	/* work RAM */
315 	{ 0x0fc000, 0x0fc7ff, aerofgt_spriteram_2_w, &spriteram_2, &spriteram_2_size },
316 	{ 0x0fd000, 0x0fd7ff, paletteram_xRRRRRGGGGGBBBBB_word_w, &paletteram },
317 	{ 0x0fe002, 0x0fe003, aerofgt_bg1scrolly_w },
318 	{ 0x0fe004, 0x0fe005, aerofgt_bg2scrollx_w },
319 	{ 0x0fe006, 0x0fe007, aerofgt_bg2scrolly_w },
320 	{ 0x0fe008, 0x0fe00b, turbofrc_gfxbank_w },
321 	{ 0x0fe00e, 0x0fe00f, turbofrc_sound_command_w },
322 	{ 0x0ff000, 0x0fffff, aerofgt_rasterram_w, &aerofgt_rasterram },	/* used only for the scroll registers */
323 	{ -1 }  /* end of table */
324 };
325 
326 static struct MemoryReadAddress aerofgt_readmem[] =
327 {
328 	{ 0x000000, 0x07ffff, MRA_ROM },
329 	{ 0x1a0000, 0x1a07ff, paletteram_word_r },
330 	{ 0x1b0000, 0x1b07ff, aerofgt_rasterram_r },
331 	{ 0x1b0800, 0x1b0801, MRA_NOP },	/* ??? */
332 	{ 0x1b0ff0, 0x1b0fff, MRA_BANK7 },	/* stack area during boot */
333 	{ 0x1b2000, 0x1b3fff, aerofgt_bg1videoram_r },
334 	{ 0x1b4000, 0x1b5fff, aerofgt_bg2videoram_r },
335 	{ 0x1c0000, 0x1c3fff, MRA_BANK4 },
336 	{ 0x1c4000, 0x1c7fff, MRA_BANK5 },
337 	{ 0x1d0000, 0x1d1fff, aerofgt_spriteram_2_r },
338 	{ 0xfef000, 0xffefff, aerofgt_workram_r },	/* work RAM */
339 	{ 0xffffa0, 0xffffa1, input_port_0_r },
340 	{ 0xffffa2, 0xffffa3, input_port_1_r },
341 	{ 0xffffa4, 0xffffa5, input_port_2_r },
342 	{ 0xffffa6, 0xffffa7, input_port_3_r },
343 	{ 0xffffa8, 0xffffa9, input_port_4_r },
344 	{ 0xffffac, 0xffffad, pending_command_r },
345 	{ 0xffffae, 0xffffaf, input_port_5_r },
346 	{ -1 }  /* end of table */
347 };
348 
349 static struct MemoryWriteAddress aerofgt_writemem[] =
350 {
351 	{ 0x000000, 0x07ffff, MWA_ROM },
352 	{ 0x1a0000, 0x1a07ff, paletteram_xRRRRRGGGGGBBBBB_word_w, &paletteram },
353 	{ 0x1b0000, 0x1b07ff, aerofgt_rasterram_w, &aerofgt_rasterram },	/* used only for the scroll registers */
354 	{ 0x1b0800, 0x1b0801, MWA_NOP },	/* ??? */
355 	{ 0x1b0ff0, 0x1b0fff, MWA_BANK7 },	/* stack area during boot */
356 	{ 0x1b2000, 0x1b3fff, aerofgt_bg1videoram_w, &aerofgt_bg1videoram },
357 	{ 0x1b4000, 0x1b5fff, aerofgt_bg2videoram_w, &aerofgt_bg2videoram },
358 	{ 0x1c0000, 0x1c3fff, MWA_BANK4, &aerofgt_spriteram1, &aerofgt_spriteram1_size },
359 	{ 0x1c4000, 0x1c7fff, MWA_BANK5, &aerofgt_spriteram2, &aerofgt_spriteram2_size },
360 	{ 0x1d0000, 0x1d1fff, aerofgt_spriteram_2_w, &spriteram_2, &spriteram_2_size },
361 	{ 0xfef000, 0xffefff, aerofgt_workram_w, &aerofgt_workram },	/* work RAM */
362 	{ 0xffff80, 0xffff87, aerofgt_gfxbank_w },
363 	{ 0xffff88, 0xffff89, aerofgt_bg1scrolly_w },	/* + something else in the top byte */
364 	{ 0xffff90, 0xffff91, aerofgt_bg2scrolly_w },	/* + something else in the top byte */
365 	{ 0xffffac, 0xffffad, MWA_NOP },	/* ??? */
366 	{ 0xffffc0, 0xffffc1, sound_command_w },
367 	{ -1 }  /* end of table */
368 };
369 
370 
371 
372 static struct MemoryReadAddress sound_readmem[] =
373 {
374 	{ 0x0000, 0x77ff, MRA_ROM },
375 	{ 0x7800, 0x7fff, MRA_RAM },
376 	{ 0x8000, 0xffff, MRA_BANK1 },
377 	{ -1 }  /* end of table */
378 };
379 
380 static struct MemoryWriteAddress sound_writemem[] =
381 {
382 	{ 0x0000, 0x77ff, MWA_ROM },
383 	{ 0x7800, 0x7fff, MWA_RAM },
384 	{ 0x8000, 0xffff, MWA_ROM },
385 	{ -1 }  /* end of table */
386 };
387 
388 static struct IOReadPort turbofrc_sound_readport[] =
389 {
390 	{ 0x14, 0x14, soundlatch_r },
391 	{ 0x18, 0x18, YM2610_status_port_0_A_r },
392 	{ 0x1a, 0x1a, YM2610_status_port_0_B_r },
393 	{ -1 }	/* end of table */
394 };
395 
396 static struct IOWritePort turbofrc_sound_writeport[] =
397 {
398 	{ 0x00, 0x00, aerofgt_sh_bankswitch_w },
399 	{ 0x14, 0x14, pending_command_clear_w },
400 	{ 0x18, 0x18, YM2610_control_port_0_A_w },
401 	{ 0x19, 0x19, YM2610_data_port_0_A_w },
402 	{ 0x1a, 0x1a, YM2610_control_port_0_B_w },
403 	{ 0x1b, 0x1b, YM2610_data_port_0_B_w },
404 	{ -1 }	/* end of table */
405 };
406 
407 static struct IOReadPort aerofgt_sound_readport[] =
408 {
409 	{ 0x00, 0x00, YM2610_status_port_0_A_r },
410 	{ 0x02, 0x02, YM2610_status_port_0_B_r },
411 	{ 0x0c, 0x0c, soundlatch_r },
412 	{ -1 }	/* end of table */
413 };
414 
415 static struct IOWritePort aerofgt_sound_writeport[] =
416 {
417 	{ 0x00, 0x00, YM2610_control_port_0_A_w },
418 	{ 0x01, 0x01, YM2610_data_port_0_A_w },
419 	{ 0x02, 0x02, YM2610_control_port_0_B_w },
420 	{ 0x03, 0x03, YM2610_data_port_0_B_w },
421 	{ 0x04, 0x04, aerofgt_sh_bankswitch_w },
422 	{ 0x08, 0x08, pending_command_clear_w },
423 	{ -1 }	/* end of table */
424 };
425 
426 
427 
428 INPUT_PORTS_START( pspikes )
429 	PORT_START
430 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
431 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
432 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
433 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
434 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
435 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
436 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
437 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
438 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
439 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 )
440 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START1 )
441 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START2 )
442 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
443 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
444 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN3 )
445 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
446 
447 	PORT_START
448 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
449 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
450 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
451 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
452 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
453 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
454 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 )
455 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
456 
457 	PORT_START
458 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Coin_A ) )
459 	PORT_DIPSETTING(      0x0001, DEF_STR( 3C_1C ) )
460 	PORT_DIPSETTING(      0x0002, DEF_STR( 2C_1C ) )
461 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_1C ) )
462 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_2C ) )
463 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Coin_B ) )
464 	PORT_DIPSETTING(      0x0004, DEF_STR( 3C_1C ) )
465 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
466 	PORT_DIPSETTING(      0x000c, DEF_STR( 1C_1C ) )
467 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_2C ) )
468 	/* the following two select country in the Chinese version (ROMs not available) */
469 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
470 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
471 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
472 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
473 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
474 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
475 	PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Demo_Sounds ) )
476 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
477 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
478 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) )
479 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
480 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
481 	PORT_SERVICE( 0x0100, IP_ACTIVE_LOW )
482 	PORT_DIPNAME( 0x0600, 0x0600, "1 Player Starting Score" )
483 	PORT_DIPSETTING(      0x0600, "12-12" )
484 	PORT_DIPSETTING(      0x0400, "11-11" )
485 	PORT_DIPSETTING(      0x0200, "11-12" )
486 	PORT_DIPSETTING(      0x0000, "10-12" )
487 	PORT_DIPNAME( 0x1800, 0x1800, "2 Players Starting Score" )
488 	PORT_DIPSETTING(      0x1800, "9-9" )
489 	PORT_DIPSETTING(      0x1000, "7-7" )
490 	PORT_DIPSETTING(      0x0800, "5-5" )
491 	PORT_DIPSETTING(      0x0000, "0-0" )
492 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Difficulty ) )
493 	PORT_DIPSETTING(      0x2000, "Normal" )
494 	PORT_DIPSETTING(      0x0000, "Hard" )
495 	PORT_DIPNAME( 0x4000, 0x4000, "2 Players Time per Credit" )
496 	PORT_DIPSETTING(      0x4000, "3 min" )
497 	PORT_DIPSETTING(      0x0000, "2 min" )
498 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
499 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
500 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
501 INPUT_PORTS_END
502 
503 INPUT_PORTS_START( karatblz )
504 	PORT_START
505 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
506 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
507 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
508 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
509 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
510 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
511 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 )
512 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 )
513 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
514 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 )
515 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START1 )
516 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START2 )
517 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
518 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
519 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
520 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
521 
522 	PORT_START
523 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
524 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
525 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
526 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
527 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
528 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
529 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
530 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 )
531 
532 	PORT_START
533 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER3 )
534 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER3 )
535 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER3 )
536 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
537 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
538 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
539 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
540 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER3 )
541 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN3 )
542 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN4 )
543 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START3 )
544 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START4 )
545 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
546 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
547 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE2 )
548 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
549 
550 	PORT_START
551 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER4 )
552 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER4 )
553 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER4 )
554 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER4 )
555 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER4 )
556 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER4 )
557 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER4 )
558 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER4 )
559 
560 	PORT_START
561 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coinage ) )
562 	PORT_DIPSETTING(      0x0004, DEF_STR( 4C_1C ) )
563 	PORT_DIPSETTING(      0x0005, DEF_STR( 3C_1C ) )
564 	PORT_DIPSETTING(      0x0006, DEF_STR( 2C_1C ) )
565 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
566 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_2C ) )
567 	PORT_DIPSETTING(      0x0002, DEF_STR( 1C_3C ) )
568 	PORT_DIPSETTING(      0x0001, DEF_STR( 1C_5C ) )
569 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
570 	PORT_DIPNAME( 0x0008, 0x0008, "2 Coins to Start, 1 to Continue" )
571 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
572 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
573 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Lives ) )
574 	PORT_DIPSETTING(      0x0000, "1" )
575 	PORT_DIPSETTING(      0x0010, "2" )
576 	PORT_DIPNAME( 0x0060, 0x0060, DEF_STR( Cabinet ) )
577 	PORT_DIPSETTING(      0x0060, "2 Players" )
578 	PORT_DIPSETTING(      0x0040, "3 Players" )
579 	PORT_DIPSETTING(      0x0020, "4 Players" )
580 	PORT_DIPSETTING(      0x0000, "4 Players (Team)" )
581 	/*  With 4 player (Team) selected and Same Coin Slot:
582 		Coin A & B credit together for use by _only_ player 1 or player 2
583 		Coin C & D credit together for use by _only_ player 3 or player 4
584 		Otherwise with Individual selected, everyone is seperate  */
585 	PORT_DIPNAME( 0x0080, 0x0080, "Coin Slot" )
586 	PORT_DIPSETTING(      0x0080, "Same" )
587 	PORT_DIPSETTING(      0x0000, "Individual" )
588 	PORT_SERVICE( 0x0100, IP_ACTIVE_LOW )
589 	PORT_DIPNAME( 0x0600, 0x0600, DEF_STR( Difficulty ) )
590 	PORT_DIPSETTING(      0x0400, "Easy" )
591 	PORT_DIPSETTING(      0x0600, "Normal" )
592 	PORT_DIPSETTING(      0x0200, "Hard" )
593 	PORT_DIPSETTING(      0x0000, "Hardest" )
594 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
595 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
596 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
597 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
598 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
599 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
600 	PORT_DIPNAME( 0x2000, 0x2000, "Freeze" )
601 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
602 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
603 	PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Demo_Sounds ) )
604 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
605 	PORT_DIPSETTING(      0x4000, DEF_STR( On ) )
606 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Flip_Screen ) )
607 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
608 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
609 INPUT_PORTS_END
610 
611 INPUT_PORTS_START( spinlbrk )
612 	PORT_START
613 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
614 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
615 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
616 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
617 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
618 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
619 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
620 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
621 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
622 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 )
623 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START1 )
624 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START2 )
625 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
626 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
627 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
628 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
629 
630 	PORT_START
631 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
632 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
633 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
634 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
635 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
636 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
637 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
638 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
639 
640 	PORT_START
641 	PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coin_A ) )
642 	PORT_DIPSETTING(      0x000f, "1 Credit 1 Health Pack" )	/* I chose "Health Packs" as the actual value can change */
643 	PORT_DIPSETTING(      0x000e, "1 Credit 2 Health Packs" )	/*  via dipswitch 2-7 (0x4000) see below */
644 	PORT_DIPSETTING(      0x000d, "1 Credit 3 Health Packs" )
645 	PORT_DIPSETTING(      0x000c, "1 Credit 4 Health Packs" )
646 	PORT_DIPSETTING(      0x000b, "1 Credit 5 Health Packs" )
647 	PORT_DIPSETTING(      0x000a, "1 Credit 6 Health Packs" )
648 	PORT_DIPSETTING(      0x0009, "2 Credits 1 Health Pack" )
649 	PORT_DIPSETTING(      0x0008, "3 Credits 1 Health Pack" )
650 	PORT_DIPSETTING(      0x0007, "4 Credits 1 Health Pack" )
651 	PORT_DIPSETTING(      0x0006, "5 Credits 1 Health Pack" )
652 	PORT_DIPSETTING(      0x0005, "2 Credits 2 Health Packs" )
653 	PORT_DIPSETTING(      0x0004, "2-1-1C  1-1-1 HPs" )
654 	PORT_DIPSETTING(      0x0003, "2-2C 1-2 HPs" )
655 	PORT_DIPSETTING(      0x0002, "1-1-1-1-1C 1-1-1-1-2 HPs" )
656 	PORT_DIPSETTING(      0x0001, "1-1-1-1C 1-1-1-2 HPs" )
657 	PORT_DIPSETTING(      0x0000, "1-1C 1-2 HPs" )
658 /* The last 5 Coin/Credit selections are cycles:
659 	Example: 0x0004 = 2-1-1C 1-1-1 HPs:
660 	2 Credits for the 1st Health Pack, 1 Credit for the 2nd Health Pack, 1 Credit
661 	for the 3rd Health Pack... Then back to 2 Credits agian for 1 HP, then 1 credit
662 	and 1 credit.... on and on.  With all Coin/Credit dips set to on, it's 1 Health
663 	Pack for odd credits, 2 Health Packs for even credits :p
664 	*/
665 	PORT_DIPNAME( 0x00f0, 0x00f0, DEF_STR( Coin_B ) )
666 	PORT_DIPSETTING(      0x00f0, "1 Credit 1 Health Pack" )
667 	PORT_DIPSETTING(      0x00e0, "1 Credit 2 Health Packs" )
668 	PORT_DIPSETTING(      0x00d0, "1 Credit 3 Health Packs" )
669 	PORT_DIPSETTING(      0x00c0, "1 Credit 4 Health Packs" )
670 	PORT_DIPSETTING(      0x00b0, "1 Credit 5 Health Packs" )
671 	PORT_DIPSETTING(      0x00a0, "1 Credit 6 Health Packs" )
672 	PORT_DIPSETTING(      0x0090, "2 Credits 1 Health Pack" )
673 	PORT_DIPSETTING(      0x0080, "3 Credits 1 Health Pack" )
674 	PORT_DIPSETTING(      0x0070, "4 Credits 1 Health Pack" )
675 	PORT_DIPSETTING(      0x0060, "5 Credits 1 Health Pack" )
676 	PORT_DIPSETTING(      0x0050, "2 Credits 2 Health Packs" )
677 	PORT_DIPSETTING(      0x0040, "2-1-1C  1-1-1 HPs" )
678 	PORT_DIPSETTING(      0x0030, "2-2C 1-2 HPs" )
679 	PORT_DIPSETTING(      0x0020, "1-1-1-1-1C 1-1-1-1-2 HPs" )
680 	PORT_DIPSETTING(      0x0010, "1-1-1-1C 1-1-1-2 HPs" )
681 	PORT_DIPSETTING(      0x0000, "1-1C 1-2 HPs" )
682 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )
683 	PORT_DIPSETTING(      0x0300, "Normal" )
684 	PORT_DIPSETTING(      0x0200, "Easy" )
685 	PORT_DIPSETTING(      0x0100, "Hard" )
686 	PORT_DIPSETTING(      0x0000, "Hardest" )
687 	PORT_DIPNAME( 0x0400, 0x0400, "Coin Slot" )		/* Japan ver acts like "Same" is always selected */
688 	PORT_DIPSETTING(      0x0000, "Same" )
689 	PORT_DIPSETTING(      0x0400, "Individual" )
690 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Flip_Screen ) )
691 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
692 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
693 	PORT_DIPNAME( 0x1000, 0x1000, "Player Lever Check?" ) /* Possibly Demo Sound??? but causes lever error??? */
694 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
695 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
696 	PORT_SERVICE( 0x2000, IP_ACTIVE_LOW )
697 	PORT_DIPNAME( 0x4000, 0x4000, "Health Pack" )
698 	PORT_DIPSETTING(      0x4000, "20 Hitpoints" )			/* World and Japan ver this value is 32 */
699 	PORT_DIPSETTING(      0x0000, "32 Hitpoints" )			/* World and Japan ver this value is 40 */
700 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
701 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )			/* This DIP has no effect that I can see */
702 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )			/*  most likely "Bonus Life" */
703 INPUT_PORTS_END
704 
705 INPUT_PORTS_START( turbofrc )
706 	PORT_START
707 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
708 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
709 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
710 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
711 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
712 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
713 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
714 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
715 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
716 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 )
717 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START1 )
718 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START2 )
719 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_SERVICE )	/* "TEST" */
720 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT )
721 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN4 )
722 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN3 )
723 
724 	PORT_START
725 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
726 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
727 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
728 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
729 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
730 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
731 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
732 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )//START1 )
733 
734 	PORT_START
735 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coinage ) )
736 	PORT_DIPSETTING(      0x0004, DEF_STR( 4C_1C ) )
737 	PORT_DIPSETTING(      0x0005, DEF_STR( 3C_1C ) )
738 	PORT_DIPSETTING(      0x0006, DEF_STR( 2C_1C ) )
739 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
740 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_2C ) )
741 	PORT_DIPSETTING(      0x0002, DEF_STR( 1C_3C ) )
742 	PORT_DIPSETTING(      0x0001, DEF_STR( 1C_5C ) )
743 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
744 	PORT_DIPNAME( 0x0008, 0x0008, "2 Coins to Start, 1 to Continue" )
745 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
746 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
747 	PORT_DIPNAME( 0x0010, 0x0010, "Coin Slot" )
748 	PORT_DIPSETTING(      0x0010, "Same" )
749 	PORT_DIPSETTING(      0x0000, "Individual" )
750 	PORT_DIPNAME( 0x0020, 0x0000, "Max Players" )
751 	PORT_DIPSETTING(      0x0020, "2" )
752 	PORT_DIPSETTING(      0x0000, "3" )
753 	PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Demo_Sounds ) )
754 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
755 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
756 	PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
757 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) )
758 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
759 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
760 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
761 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
762 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
763 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
764 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
765 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
766 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
767 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
768 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
769 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Lives ) )
770 	PORT_DIPSETTING(      0x0000, "2" )
771 	PORT_DIPSETTING(      0x1000, "3" )
772 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
773 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
774 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
775 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
776 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
777 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
778 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
779 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
780 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
781 
782 	PORT_START
783 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER3 )
784 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER3 )
785 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER3 )
786 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
787 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
788 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
789 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
790 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START3 )
791 INPUT_PORTS_END
792 
793 INPUT_PORTS_START( aerofgtb )
794 	PORT_START
795 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
796 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
797 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
798 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
799 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
800 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
801 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
802 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
803 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
804 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 )
805 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START1 )
806 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START2 )
807 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
808 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
809 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN3 )
810 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
811 
812 	PORT_START
813 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
814 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
815 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
816 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
817 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
818 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
819 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
820 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
821 
822 	PORT_START
823 	PORT_DIPNAME( 0x0001, 0x0001, "Coin Slot" )
824 	PORT_DIPSETTING(      0x0001, "Same" )
825 	PORT_DIPSETTING(      0x0000, "Individual" )
826 	PORT_DIPNAME( 0x000e, 0x000e, DEF_STR( Coin_A ) )
827 	PORT_DIPSETTING(      0x000a, DEF_STR( 3C_1C ) )
828 	PORT_DIPSETTING(      0x000c, DEF_STR( 2C_1C ) )
829 	PORT_DIPSETTING(      0x000e, DEF_STR( 1C_1C ) )
830 	PORT_DIPSETTING(      0x0008, DEF_STR( 1C_2C ) )
831 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_3C ) )
832 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
833 	PORT_DIPSETTING(      0x0002, DEF_STR( 1C_5C ) )
834 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
835 	PORT_DIPNAME( 0x0070, 0x0070, DEF_STR( Coin_B ) )
836 	PORT_DIPSETTING(      0x0050, DEF_STR( 3C_1C ) )
837 	PORT_DIPSETTING(      0x0060, DEF_STR( 2C_1C ) )
838 	PORT_DIPSETTING(      0x0070, DEF_STR( 1C_1C ) )
839 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_2C ) )
840 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_3C ) )
841 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
842 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_5C ) )
843 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
844 	PORT_DIPNAME( 0x0080, 0x0080, "2 Coins to Start, 1 to Continue" )
845 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
846 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
847 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) )
848 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
849 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
850 	PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Demo_Sounds ) )
851 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
852 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
853 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) )
854 	PORT_DIPSETTING(      0x0800, "Easy" )
855 	PORT_DIPSETTING(      0x0c00, "Normal" )
856 	PORT_DIPSETTING(      0x0400, "Hard" )
857 	PORT_DIPSETTING(      0x0000, "Hardest" )
858 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Lives ) )
859 	PORT_DIPSETTING(      0x2000, "1" )
860 	PORT_DIPSETTING(      0x1000, "2" )
861 	PORT_DIPSETTING(      0x3000, "3" )
862 	PORT_DIPSETTING(      0x0000, "4" )
863 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Bonus_Life ) )
864 	PORT_DIPSETTING(      0x4000, "200000" )
865 	PORT_DIPSETTING(      0x0000, "300000" )
866 	PORT_SERVICE( 0x8000, IP_ACTIVE_LOW )
867 
868 	PORT_START
869 	PORT_DIPNAME( 0x0001, 0x0000, "Country" )
870 	PORT_DIPSETTING(      0x0000, "Japan" )
871 	PORT_DIPSETTING(      0x0001, "Taiwan" )
872 	/* TODO: there are others in the table at 11910 */
873 	/* this port is checked at 1b080 */
874 INPUT_PORTS_END
875 
876 INPUT_PORTS_START( aerofgt )
877 	PORT_START
878 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
879 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
880 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
881 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
882 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
883 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
884 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
885 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
886 
887 	PORT_START
888 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
889 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
890 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
891 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
892 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
893 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
894 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
895 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
896 
897 	PORT_START
898 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
899 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
900 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 )
901 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START2 )
902 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
903 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
904 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_COIN3 )
905 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
906 
907 	PORT_START
908 	PORT_DIPNAME( 0x0001, 0x0001, "Coin Slot" )
909 	PORT_DIPSETTING(      0x0001, "Same" )
910 	PORT_DIPSETTING(      0x0000, "Individual" )
911 	PORT_DIPNAME( 0x000e, 0x000e, DEF_STR( Coin_A ) )
912 	PORT_DIPSETTING(      0x000a, DEF_STR( 3C_1C ) )
913 	PORT_DIPSETTING(      0x000c, DEF_STR( 2C_1C ) )
914 	PORT_DIPSETTING(      0x000e, DEF_STR( 1C_1C ) )
915 	PORT_DIPSETTING(      0x0008, DEF_STR( 1C_2C ) )
916 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_3C ) )
917 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
918 	PORT_DIPSETTING(      0x0002, DEF_STR( 1C_5C ) )
919 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
920 	PORT_DIPNAME( 0x0070, 0x0070, DEF_STR( Coin_B ) )
921 	PORT_DIPSETTING(      0x0050, DEF_STR( 3C_1C ) )
922 	PORT_DIPSETTING(      0x0060, DEF_STR( 2C_1C ) )
923 	PORT_DIPSETTING(      0x0070, DEF_STR( 1C_1C ) )
924 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_2C ) )
925 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_3C ) )
926 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
927 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_5C ) )
928 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
929 	PORT_DIPNAME( 0x0080, 0x0080, "2 Coins to Start, 1 to Continue" )
930 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
931 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
932 
933 	PORT_START
934 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) )
935 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
936 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
937 	PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Demo_Sounds ) )
938 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
939 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
940 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) )
941 	PORT_DIPSETTING(      0x0008, "Easy" )
942 	PORT_DIPSETTING(      0x000c, "Normal" )
943 	PORT_DIPSETTING(      0x0004, "Hard" )
944 	PORT_DIPSETTING(      0x0000, "Hardest" )
945 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) )
946 	PORT_DIPSETTING(      0x0020, "1" )
947 	PORT_DIPSETTING(      0x0010, "2" )
948 	PORT_DIPSETTING(      0x0030, "3" )
949 	PORT_DIPSETTING(      0x0000, "4" )
950 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Bonus_Life ) )
951 	PORT_DIPSETTING(      0x0040, "200000" )
952 	PORT_DIPSETTING(      0x0000, "300000" )
953 	PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
954 
955 	PORT_START
956 	PORT_DIPNAME( 0x000f, 0x0000, "Country" )
957 	PORT_DIPSETTING(      0x0000, "Any" )
958 	PORT_DIPSETTING(      0x000f, "USA" )
959 	PORT_DIPSETTING(      0x000e, "Korea" )
960 	PORT_DIPSETTING(      0x000d, "Hong Kong" )
961 	PORT_DIPSETTING(      0x000b, "Taiwan" )
962 INPUT_PORTS_END
963 
964 
965 
966 static struct GfxLayout pspikes_charlayout =
967 {
968 	8,8,
969 	RGN_FRAC(1,1),
970 	4,
971 	{ 0, 1, 2, 3 },
972 	{ 1*4, 0*4, 3*4, 2*4, 5*4, 4*4, 7*4, 6*4 },
973 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
974 	32*8
975 };
976 
977 static struct GfxLayout aerofgt_charlayout =
978 {
979 	8,8,
980 	RGN_FRAC(1,1),
981 	4,
982 	{ 0, 1, 2, 3 },
983 	{ 2*4, 3*4, 0*4, 1*4, 6*4, 7*4, 4*4, 5*4 },
984 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
985 	32*8
986 };
987 
988 static struct GfxLayout pspikes_spritelayout =
989 {
990 	16,16,
991 	RGN_FRAC(1,2),
992 	4,
993 	{ 0, 1, 2, 3 },
994 	{ 1*4, 0*4, 3*4, 2*4, RGN_FRAC(1,2)+1*4, RGN_FRAC(1,2)+0*4, RGN_FRAC(1,2)+3*4, RGN_FRAC(1,2)+2*4,
995 			5*4, 4*4, 7*4, 6*4, RGN_FRAC(1,2)+5*4, RGN_FRAC(1,2)+4*4, RGN_FRAC(1,2)+7*4, RGN_FRAC(1,2)+6*4 },
996 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
997 			8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
998 	64*8
999 };
1000 
1001 static struct GfxLayout aerofgtb_spritelayout =
1002 {
1003 	16,16,
1004 	RGN_FRAC(1,2),
1005 	4,
1006 	{ 0, 1, 2, 3 },
1007 	{ 3*4, 2*4, 1*4, 0*4, RGN_FRAC(1,2)+3*4, RGN_FRAC(1,2)+2*4, RGN_FRAC(1,2)+1*4, RGN_FRAC(1,2)+0*4,
1008 			7*4, 6*4, 5*4, 4*4, RGN_FRAC(1,2)+7*4, RGN_FRAC(1,2)+6*4, RGN_FRAC(1,2)+5*4, RGN_FRAC(1,2)+4*4 },
1009 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
1010 			8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
1011 	64*8
1012 };
1013 
1014 static struct GfxLayout aerofgt_spritelayout =
1015 {
1016 	16,16,
1017 	RGN_FRAC(1,1),
1018 	4,
1019 	{ 0, 1, 2, 3 },
1020 	{ 2*4, 3*4, 0*4, 1*4, 6*4, 7*4, 4*4, 5*4,
1021 			10*4, 11*4, 8*4, 9*4, 14*4, 15*4, 12*4, 13*4 },
1022 	{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
1023 			8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
1024 	128*8
1025 };
1026 
1027 static struct GfxDecodeInfo pspikes_gfxdecodeinfo[] =
1028 {
1029 	{ REGION_GFX1, 0, &pspikes_charlayout,      0, 64 },	/* colors    0-1023 in 8 banks */
1030 	{ REGION_GFX2, 0, &pspikes_spritelayout, 1024, 64 },	/* colors 1024-2047 in 4 banks */
1031 	{ -1 } /* end of array */
1032 };
1033 
1034 static struct GfxDecodeInfo turbofrc_gfxdecodeinfo[] =
1035 {
1036 	{ REGION_GFX1, 0, &pspikes_charlayout,     0, 16 },
1037 	{ REGION_GFX2, 0, &pspikes_charlayout,   256, 16 },
1038 	{ REGION_GFX3, 0, &pspikes_spritelayout, 512, 16 },
1039 	{ REGION_GFX4, 0, &pspikes_spritelayout, 768, 16 },
1040 	{ -1 } /* end of array */
1041 };
1042 
1043 static struct GfxDecodeInfo aerofgtb_gfxdecodeinfo[] =
1044 {
1045 	{ REGION_GFX1, 0, &pspikes_charlayout,      0, 16 },
1046 	{ REGION_GFX2, 0, &pspikes_charlayout,    256, 16 },
1047 	{ REGION_GFX3, 0, &aerofgtb_spritelayout, 512, 16 },
1048 	{ REGION_GFX4, 0, &aerofgtb_spritelayout, 768, 16 },
1049 	{ -1 } /* end of array */
1050 };
1051 
1052 static struct GfxDecodeInfo aerofgt_gfxdecodeinfo[] =
1053 {
1054 	{ REGION_GFX1, 0, &aerofgt_charlayout,     0, 16 },
1055 	{ REGION_GFX1, 0, &aerofgt_charlayout,   256, 16 },
1056 	{ REGION_GFX2, 0, &aerofgt_spritelayout, 512, 16 },
1057 	{ REGION_GFX3, 0, &aerofgt_spritelayout, 768, 16 },
1058 	{ -1 } /* end of array */
1059 };
1060 
1061 
1062 
irqhandler(int irq)1063 static void irqhandler(int irq)
1064 {
1065 	cpu_set_irq_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE);
1066 }
1067 
1068 static struct YM2610interface ym2610_interface =
1069 {
1070 	1,
1071 	8000000,	/* 8 MHz??? */
1072 	{ 25 },
1073 	{ 0 },
1074 	{ 0 },
1075 	{ 0 },
1076 	{ 0 },
1077 	{ irqhandler },
1078 	{ REGION_SOUND1 },
1079 	{ REGION_SOUND2 },
1080 	{ YM3012_VOL(50,MIXER_PAN_LEFT,50,MIXER_PAN_RIGHT) }
1081 };
1082 
1083 
1084 
1085 static struct MachineDriver machine_driver_pspikes =
1086 {
1087 	/* basic machine hardware */
1088 	{
1089 		{
1090 			CPU_M68000,
1091 			20000000/2,	/* 10 MHz (?) */
1092 			pspikes_readmem,pspikes_writemem,0,0,
1093 			m68_level1_irq,1	/* all irq vectors are the same */
1094 		},
1095 		{
1096 			CPU_Z80 | CPU_AUDIO_CPU,
1097 			8000000/2,	/* 4 Mhz ??? */
1098 			sound_readmem,sound_writemem,turbofrc_sound_readport,turbofrc_sound_writeport,
1099 			ignore_interrupt,0	/* NMIs are triggered by the main CPU */
1100 								/* IRQs are triggered by the YM2610 */
1101 		}
1102 	},
1103 	60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
1104 	1,	/* 1 CPU slice per frame - interleaving is forced when a sound command is written */
1105 	0,
1106 
1107 	/* video hardware */
1108 	64*8, 32*8, { 2*8-4, 44*8-4-1, 1*8, 29*8-1 },
1109 	pspikes_gfxdecodeinfo,
1110 	2048, 2048,
1111 	0,
1112 
1113 	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
1114 	0,
1115 	pspikes_vh_start,
1116 	0,
1117 	pspikes_vh_screenrefresh,
1118 
1119 	/* sound hardware */
1120 	SOUND_SUPPORTS_STEREO,0,0,0,
1121 	{
1122 		{
1123 			SOUND_YM2610,
1124 			&ym2610_interface,
1125 		}
1126 	}
1127 };
1128 
1129 static struct MachineDriver machine_driver_karatblz =
1130 {
1131 	/* basic machine hardware */
1132 	{
1133 		{
1134 			CPU_M68000,
1135 			20000000/2,	/* 10 MHz (?) */
1136 			karatblz_readmem,karatblz_writemem,0,0,
1137 			m68_level1_irq,1
1138 		},
1139 		{
1140 			CPU_Z80 | CPU_AUDIO_CPU,
1141 			8000000/2,	/* 4 Mhz ??? */
1142 			sound_readmem,sound_writemem,turbofrc_sound_readport,turbofrc_sound_writeport,
1143 			ignore_interrupt,0	/* NMIs are triggered by the main CPU */
1144 								/* IRQs are triggered by the YM2610 */
1145 		}
1146 	},
1147 	60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
1148 	1,	/* 1 CPU slice per frame - interleaving is forced when a sound command is written */
1149 	0,
1150 
1151 	/* video hardware */
1152 	64*8, 32*8, { 1*8, 45*8-1, 0*8, 30*8-1 },
1153 	turbofrc_gfxdecodeinfo,
1154 	1024, 1024,
1155 	0,
1156 
1157 	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
1158 	0,
1159 	karatblz_vh_start,
1160 	0,
1161 	karatblz_vh_screenrefresh,
1162 
1163 	/* sound hardware */
1164 	SOUND_SUPPORTS_STEREO,0,0,0,
1165 	{
1166 		{
1167 			SOUND_YM2610,
1168 			&ym2610_interface,
1169 		}
1170 	}
1171 };
1172 
1173 static struct MachineDriver machine_driver_spinlbrk =
1174 {
1175 	/* basic machine hardware */
1176 	{
1177 		{
1178 			CPU_M68000,
1179 			20000000/2,	/* 10 MHz (?) */
1180 			spinlbrk_readmem,spinlbrk_writemem,0,0,
1181 			m68_level1_irq,1	/* there are vectors for 3 and 4 too */
1182 		},
1183 		{
1184 			CPU_Z80 | CPU_AUDIO_CPU,
1185 			8000000/2,	/* 4 Mhz ??? */
1186 			sound_readmem,sound_writemem,turbofrc_sound_readport,turbofrc_sound_writeport,
1187 			ignore_interrupt,0	/* NMIs are triggered by the main CPU */
1188 								/* IRQs are triggered by the YM2610 */
1189 		}
1190 	},
1191 	60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
1192 	1,	/* 1 CPU slice per frame - interleaving is forced when a sound command is written */
1193 	0,
1194 
1195 	/* video hardware */
1196 	64*8, 32*8, { 1*8, 45*8-1, 0*8, 30*8-1 },
1197 	turbofrc_gfxdecodeinfo,
1198 	1024, 1024,
1199 	0,
1200 
1201 	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
1202 	0,
1203 	spinlbrk_vh_start,
1204 	0,
1205 	spinlbrk_vh_screenrefresh,
1206 
1207 	/* sound hardware */
1208 	SOUND_SUPPORTS_STEREO,0,0,0,
1209 	{
1210 		{
1211 			SOUND_YM2610,
1212 			&ym2610_interface,
1213 		}
1214 	}
1215 };
1216 
1217 static struct MachineDriver machine_driver_turbofrc =
1218 {
1219 	/* basic machine hardware */
1220 	{
1221 		{
1222 			CPU_M68000,
1223 			20000000/2,	/* 10 MHz (?) */
1224 			turbofrc_readmem,turbofrc_writemem,0,0,
1225 			m68_level1_irq,1	/* all irq vectors are the same */
1226 		},
1227 		{
1228 			CPU_Z80 | CPU_AUDIO_CPU,
1229 			8000000/2,	/* 4 Mhz ??? */
1230 			sound_readmem,sound_writemem,turbofrc_sound_readport,turbofrc_sound_writeport,
1231 			ignore_interrupt,0	/* NMIs are triggered by the main CPU */
1232 								/* IRQs are triggered by the YM2610 */
1233 		}
1234 	},
1235 	60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
1236 	1,	/* 1 CPU slice per frame - interleaving is forced when a sound command is written */
1237 	0,
1238 
1239 	/* video hardware */
1240 	64*8, 32*8, { 1*8, 44*8-1, 0*8, 30*8-1 },
1241 	turbofrc_gfxdecodeinfo,
1242 	1024, 1024,
1243 	0,
1244 
1245 	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
1246 	0,
1247 	turbofrc_vh_start,
1248 	0,
1249 	turbofrc_vh_screenrefresh,
1250 
1251 	/* sound hardware */
1252 	SOUND_SUPPORTS_STEREO,0,0,0,
1253 	{
1254 		{
1255 			SOUND_YM2610,
1256 			&ym2610_interface,
1257 		}
1258 	}
1259 };
1260 
1261 static struct MachineDriver machine_driver_aerofgtb =
1262 {
1263 	/* basic machine hardware */
1264 	{
1265 		{
1266 			CPU_M68000,
1267 			20000000/2,	/* 10 MHz (?) */
1268 			aerofgtb_readmem,aerofgtb_writemem,0,0,
1269 			m68_level1_irq,1	/* all irq vectors are the same */
1270 		},
1271 		{
1272 			CPU_Z80 | CPU_AUDIO_CPU,
1273 			8000000/2,	/* 4 Mhz ??? */
1274 			sound_readmem,sound_writemem,aerofgt_sound_readport,aerofgt_sound_writeport,
1275 			ignore_interrupt,0	/* NMIs are triggered by the main CPU */
1276 								/* IRQs are triggered by the YM2610 */
1277 		}
1278 	},
1279 	60, 500,	/* frames per second, vblank duration */
1280 				/* wrong but improves sprite-background synchronization */
1281 	1,	/* 1 CPU slice per frame - interleaving is forced when a sound command is written */
1282 	0,
1283 
1284 	/* video hardware */
1285 	64*8, 32*8, { 0*8+12, 40*8-1+12, 0*8, 28*8-1 },
1286 	aerofgtb_gfxdecodeinfo,
1287 	1024, 1024,
1288 	0,
1289 
1290 	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
1291 	0,
1292 	turbofrc_vh_start,
1293 	0,
1294 	turbofrc_vh_screenrefresh,
1295 
1296 	/* sound hardware */
1297 	SOUND_SUPPORTS_STEREO,0,0,0,
1298 	{
1299 		{
1300 			SOUND_YM2610,
1301 			&ym2610_interface,
1302 		}
1303 	}
1304 };
1305 
1306 static struct MachineDriver machine_driver_aerofgt =
1307 {
1308 	/* basic machine hardware */
1309 	{
1310 		{
1311 			CPU_M68000,
1312 			20000000/2,	/* 10 MHz (?) */
1313 			aerofgt_readmem,aerofgt_writemem,0,0,
1314 			m68_level1_irq,1	/* all irq vectors are the same */
1315 		},
1316 		{
1317 			CPU_Z80 | CPU_AUDIO_CPU,
1318 			8000000/2,	/* 4 Mhz ??? */
1319 			sound_readmem,sound_writemem,aerofgt_sound_readport,aerofgt_sound_writeport,
1320 			ignore_interrupt,0	/* NMIs are triggered by the main CPU */
1321 								/* IRQs are triggered by the YM2610 */
1322 		}
1323 	},
1324 	60, 400,	/* frames per second, vblank duration */
1325 				/* wrong but improves sprite-background synchronization */
1326 	1,	/* 1 CPU slice per frame - interleaving is forced when a sound command is written */
1327 	0,
1328 
1329 	/* video hardware */
1330 	64*8, 32*8, { 0*8, 40*8-1, 0*8, 28*8-1 },
1331 	aerofgt_gfxdecodeinfo,
1332 	1024, 1024,
1333 	0,
1334 
1335 	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
1336 	0,
1337 	turbofrc_vh_start,
1338 	0,
1339 	aerofgt_vh_screenrefresh,
1340 
1341 	/* sound hardware */
1342 	SOUND_SUPPORTS_STEREO,0,0,0,
1343 	{
1344 		{
1345 			SOUND_YM2610,
1346 			&ym2610_interface,
1347 		}
1348 	}
1349 };
1350 
1351 
1352 
1353 /***************************************************************************
1354 
1355   Game driver(s)
1356 
1357 ***************************************************************************/
1358 
1359 ROM_START( pspikes )
1360 	ROM_REGION( 0xc0000, REGION_CPU1 )	/* 68000 code */
1361 	ROM_LOAD_WIDE_SWAP( "20",           0x00000, 0x40000, 0x75cdcee2 )
1362 
1363 	ROM_REGION( 0x30000, REGION_CPU2 )	/* 64k for the audio CPU + banks */
1364 	ROM_LOAD( "19",           0x00000, 0x20000, 0x7e8ed6e5 )
1365 	ROM_RELOAD(               0x10000, 0x20000 )
1366 
1367 	ROM_REGION( 0x080000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1368 	ROM_LOAD( "g7h",          0x000000, 0x80000, 0x74c23c3d )
1369 
1370 	ROM_REGION( 0x100000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1371 	ROM_LOAD( "g7j",          0x000000, 0x80000, 0x0b9e4739 )
1372 	ROM_LOAD( "g7l",          0x080000, 0x80000, 0x943139ff )
1373 
1374 	ROM_REGION( 0x40000, REGION_SOUND1 ) /* sound samples */
1375 	ROM_LOAD( "a47",          0x00000, 0x40000, 0xc6779dfa )
1376 
1377 	ROM_REGION( 0x100000, REGION_SOUND2 ) /* sound samples */
1378 	ROM_LOAD( "o5b",          0x000000, 0x100000, 0x07d6cbac )
1379 ROM_END
1380 
1381 ROM_START( svolly91 )
1382 	ROM_REGION( 0xc0000, REGION_CPU1 )	/* 68000 code */
1383 	ROM_LOAD_WIDE_SWAP( "u11.jpn",      0x00000, 0x40000, 0xea2e4c82 )
1384 
1385 	ROM_REGION( 0x30000, REGION_CPU2 )	/* 64k for the audio CPU + banks */
1386 	ROM_LOAD( "19",           0x00000, 0x20000, 0x7e8ed6e5 )
1387 	ROM_RELOAD(               0x10000, 0x20000 )
1388 
1389 	ROM_REGION( 0x080000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1390 	ROM_LOAD( "g7h",          0x000000, 0x80000, 0x74c23c3d )
1391 
1392 	ROM_REGION( 0x100000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1393 	ROM_LOAD( "g7j",          0x000000, 0x80000, 0x0b9e4739 )
1394 	ROM_LOAD( "g7l",          0x080000, 0x80000, 0x943139ff )
1395 
1396 	ROM_REGION( 0x40000, REGION_SOUND1 ) /* sound samples */
1397 	ROM_LOAD( "a47",          0x00000, 0x40000, 0xc6779dfa )
1398 
1399 	ROM_REGION( 0x100000, REGION_SOUND2 ) /* sound samples */
1400 	ROM_LOAD( "o5b",          0x000000, 0x100000, 0x07d6cbac )
1401 ROM_END
1402 
1403 ROM_START( spinlbrk )
1404 	ROM_REGION( 0x60000, REGION_CPU1 )	/* 68000 code */
1405 	ROM_LOAD_EVEN( "ic98",    0x00000, 0x10000, 0x36c2bf70 )
1406 	ROM_LOAD_ODD ( "ic104",   0x00000, 0x10000, 0x34a7e158 )
1407 	ROM_LOAD_EVEN( "ic93",    0x20000, 0x10000, 0x726f4683 )
1408 	ROM_LOAD_ODD ( "ic94",    0x20000, 0x10000, 0xc4385e03 )
1409 
1410 	ROM_REGION( 0x30000, REGION_CPU2 )	/* 64k for the audio CPU + banks */
1411 	ROM_LOAD( "ic117",        0x00000, 0x08000, 0x625ada41 )
1412 	ROM_LOAD( "ic118",        0x10000, 0x10000, 0x1025f024 )
1413 
1414 	ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1415 	ROM_LOAD( "ic15",         0x000000, 0x80000, 0xe318cf3a )
1416 	ROM_LOAD( "ic9",          0x080000, 0x80000, 0xe071f674 )
1417 
1418 	ROM_REGION( 0x200000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1419 	ROM_LOAD( "ic17",         0x000000, 0x80000, 0xa63d5a55 )
1420 	ROM_LOAD( "ic11",         0x080000, 0x80000, 0x7dcc913d )
1421 	ROM_LOAD( "ic16",         0x100000, 0x80000, 0x0d84af7f )	//FIRST AND SECOND HALF IDENTICAL
1422 
1423 	ROM_REGION( 0x100000, REGION_GFX3 | REGIONFLAG_DISPOSE )
1424 	ROM_LOAD( "ic12",         0x000000, 0x80000, 0xd63fac4e )
1425 	ROM_LOAD( "ic18",         0x080000, 0x80000, 0x5a60444b )
1426 
1427 	ROM_REGION( 0x200000, REGION_GFX4 | REGIONFLAG_DISPOSE )
1428 	ROM_LOAD( "ic14",         0x000000, 0x80000, 0x1befd0f3 )
1429 	ROM_LOAD( "ic20",         0x080000, 0x80000, 0xc2f84a61 )
1430 	ROM_LOAD( "ic35",         0x100000, 0x80000, 0xeba8e1a3 )
1431 	ROM_LOAD( "ic40",         0x180000, 0x80000, 0x5ef5aa7e )
1432 
1433 	ROM_REGION( 0x24000, REGION_GFX5 )	/* hardcoded sprite maps */
1434 	ROM_LOAD_EVEN( "ic19",    0x00000, 0x10000, 0xdb24eeaa )
1435 	ROM_LOAD_ODD ( "ic13",    0x00000, 0x10000, 0x97025bf4 )
1436 	/* 20000-23fff empty space, filled in vh_startup */
1437 
1438 	ROM_REGION( 0x80000, REGION_SOUND1 ) /* sound samples */
1439 	ROM_LOAD( "ic166",        0x000000, 0x80000, 0x6e0d063a )
1440 
1441 	ROM_REGION( 0x80000, REGION_SOUND2 ) /* sound samples */
1442 	ROM_LOAD( "ic163",        0x000000, 0x80000, 0xe6621dfb )	//FIRST AND SECOND HALF IDENTICAL
1443 ROM_END
1444 
1445 ROM_START( spinlbru )
1446 	ROM_REGION( 0x60000, REGION_CPU1 )	/* 68000 code */
1447 	ROM_LOAD_EVEN( "ic98.u5", 0x00000, 0x10000, 0x3a0f7667 )
1448 	ROM_LOAD_ODD ( "ic104.u6",0x00000, 0x10000, 0xa0e0af31 )
1449 	ROM_LOAD_EVEN( "ic93.u4", 0x20000, 0x10000, 0x0cf73029 )
1450 	ROM_LOAD_ODD ( "ic94.u3", 0x20000, 0x10000, 0x5cf7c426 )
1451 
1452 	ROM_REGION( 0x30000, REGION_CPU2 )	/* 64k for the audio CPU + banks */
1453 	ROM_LOAD( "ic117",        0x00000, 0x08000, 0x625ada41 )
1454 	ROM_LOAD( "ic118",        0x10000, 0x10000, 0x1025f024 )
1455 
1456 	ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1457 	ROM_LOAD( "ic15",         0x000000, 0x80000, 0xe318cf3a )
1458 	ROM_LOAD( "ic9",          0x080000, 0x80000, 0xe071f674 )
1459 
1460 	ROM_REGION( 0x200000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1461 	ROM_LOAD( "ic17",         0x000000, 0x80000, 0xa63d5a55 )
1462 	ROM_LOAD( "ic11",         0x080000, 0x80000, 0x7dcc913d )
1463 	ROM_LOAD( "ic16",         0x100000, 0x80000, 0x0d84af7f )	//FIRST AND SECOND HALF IDENTICAL
1464 
1465 	ROM_REGION( 0x100000, REGION_GFX3 | REGIONFLAG_DISPOSE )
1466 	ROM_LOAD( "ic12",         0x000000, 0x80000, 0xd63fac4e )
1467 	ROM_LOAD( "ic18",         0x080000, 0x80000, 0x5a60444b )
1468 
1469 	ROM_REGION( 0x200000, REGION_GFX4 | REGIONFLAG_DISPOSE )
1470 	ROM_LOAD( "ic14",         0x000000, 0x80000, 0x1befd0f3 )
1471 	ROM_LOAD( "ic20",         0x080000, 0x80000, 0xc2f84a61 )
1472 	ROM_LOAD( "ic35",         0x100000, 0x80000, 0xeba8e1a3 )
1473 	ROM_LOAD( "ic40",         0x180000, 0x80000, 0x5ef5aa7e )
1474 
1475 	ROM_REGION( 0x24000, REGION_GFX5 )	/* hardcoded sprite maps */
1476 	ROM_LOAD_EVEN( "ic19",    0x00000, 0x10000, 0xdb24eeaa )
1477 	ROM_LOAD_ODD ( "ic13",    0x00000, 0x10000, 0x97025bf4 )
1478 	/* 20000-23fff empty space, filled in vh_startup */
1479 
1480 	ROM_REGION( 0x80000, REGION_SOUND1 ) /* sound samples */
1481 	ROM_LOAD( "ic166",        0x000000, 0x80000, 0x6e0d063a )
1482 
1483 	ROM_REGION( 0x80000, REGION_SOUND2 ) /* sound samples */
1484 	ROM_LOAD( "ic163",        0x000000, 0x80000, 0xe6621dfb )	//FIRST AND SECOND HALF IDENTICAL
1485 ROM_END
1486 
1487 ROM_START( spinlbrj )
1488 	ROM_REGION( 0x60000, REGION_CPU1 )	/* 68000 code */
1489 	ROM_LOAD_EVEN( "j5",      0x00000, 0x10000, 0x6a3d690e )
1490 	ROM_LOAD_ODD ( "j6",      0x00000, 0x10000, 0x869593fa )
1491 	ROM_LOAD_EVEN( "j4",      0x20000, 0x10000, 0x33e33912 )
1492 	ROM_LOAD_ODD ( "j3",      0x20000, 0x10000, 0x16ca61d0 )
1493 
1494 	ROM_REGION( 0x30000, REGION_CPU2 )	/* 64k for the audio CPU + banks */
1495 	ROM_LOAD( "ic117",        0x00000, 0x08000, 0x625ada41 )
1496 	ROM_LOAD( "ic118",        0x10000, 0x10000, 0x1025f024 )
1497 
1498 	ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1499 	ROM_LOAD( "ic15",         0x000000, 0x80000, 0xe318cf3a )
1500 	ROM_LOAD( "ic9",          0x080000, 0x80000, 0xe071f674 )
1501 
1502 	ROM_REGION( 0x200000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1503 	ROM_LOAD( "ic17",         0x000000, 0x80000, 0xa63d5a55 )
1504 	ROM_LOAD( "ic11",         0x080000, 0x80000, 0x7dcc913d )
1505 	ROM_LOAD( "ic16",         0x100000, 0x80000, 0x0d84af7f )	//FIRST AND SECOND HALF IDENTICAL
1506 
1507 	ROM_REGION( 0x100000, REGION_GFX3 | REGIONFLAG_DISPOSE )
1508 	ROM_LOAD( "ic12",         0x000000, 0x80000, 0xd63fac4e )
1509 	ROM_LOAD( "ic18",         0x080000, 0x80000, 0x5a60444b )
1510 
1511 	ROM_REGION( 0x200000, REGION_GFX4 | REGIONFLAG_DISPOSE )
1512 	ROM_LOAD( "ic14",         0x000000, 0x80000, 0x1befd0f3 )
1513 	ROM_LOAD( "ic20",         0x080000, 0x80000, 0xc2f84a61 )
1514 	ROM_LOAD( "ic35",         0x100000, 0x80000, 0xeba8e1a3 )
1515 	ROM_LOAD( "ic40",         0x180000, 0x80000, 0x5ef5aa7e )
1516 
1517 	ROM_REGION( 0x24000, REGION_GFX5 )	/* hardcoded sprite maps */
1518 	ROM_LOAD_EVEN( "ic19",    0x00000, 0x10000, 0xdb24eeaa )
1519 	ROM_LOAD_ODD ( "ic13",    0x00000, 0x10000, 0x97025bf4 )
1520 	/* 20000-23fff empty space, filled in vh_startup */
1521 
1522 	ROM_REGION( 0x80000, REGION_SOUND1 ) /* sound samples */
1523 	ROM_LOAD( "ic166",        0x000000, 0x80000, 0x6e0d063a )
1524 
1525 	ROM_REGION( 0x80000, REGION_SOUND2 ) /* sound samples */
1526 	ROM_LOAD( "ic163",        0x000000, 0x80000, 0xe6621dfb )	//FIRST AND SECOND HALF IDENTICAL
1527 ROM_END
1528 
1529 ROM_START( karatblz )
1530 	ROM_REGION( 0x80000, REGION_CPU1 )	/* 68000 code */
1531 	ROM_LOAD_WIDE_SWAP( "rom2v3",  0x00000, 0x40000, 0x01f772e1 )
1532 	ROM_LOAD_WIDE_SWAP( "1.u15",   0x40000, 0x40000, 0xd16ee21b )
1533 
1534 	ROM_REGION( 0x30000, REGION_CPU2 )	/* 64k for the audio CPU + banks */
1535 	ROM_LOAD( "5.u92",        0x00000, 0x20000, 0x97d67510 )
1536 	ROM_RELOAD(               0x10000, 0x20000 )
1537 
1538 	ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1539 	ROM_LOAD( "gha.u55",      0x00000, 0x80000, 0x3e0cea91 )
1540 
1541 	ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1542 	ROM_LOAD( "gh9.u61",      0x00000, 0x80000, 0x5d1676bd )
1543 
1544 	ROM_REGION( 0x400000, REGION_GFX3 | REGIONFLAG_DISPOSE )
1545 	ROM_LOAD( "u42",          0x000000, 0x100000, 0x65f0da84 )
1546 	ROM_LOAD( "3.u44",        0x100000, 0x020000, 0x34bdead2 )
1547 	ROM_LOAD( "u43",          0x200000, 0x100000, 0x7b349e5d )
1548 	ROM_LOAD( "4.u45",        0x300000, 0x020000, 0xbe4d487d )
1549 
1550 	ROM_REGION( 0x100000, REGION_GFX4 | REGIONFLAG_DISPOSE )
1551 	ROM_LOAD( "u59.ghb",      0x000000, 0x80000, 0x158c9cde )
1552 	ROM_LOAD( "ghd.u60",      0x080000, 0x80000, 0x73180ae3 )
1553 
1554 	ROM_REGION( 0x080000, REGION_SOUND1 ) /* sound samples */
1555 	ROM_LOAD( "u105.gh8",     0x000000, 0x080000, 0x7a68cb1b )
1556 
1557 	ROM_REGION( 0x100000, REGION_SOUND2 ) /* sound samples */
1558 	ROM_LOAD( "u104",         0x000000, 0x100000, 0x5795e884 )
1559 ROM_END
1560 
1561 ROM_START( karatblu )
1562 	ROM_REGION( 0x80000, REGION_CPU1 )	/* 68000 code */
1563 	ROM_LOAD_WIDE_SWAP( "2.u14",   0x00000, 0x40000, 0x202e6220 )
1564 	ROM_LOAD_WIDE_SWAP( "1.u15",   0x40000, 0x40000, 0xd16ee21b )
1565 
1566 	ROM_REGION( 0x30000, REGION_CPU2 )	/* 64k for the audio CPU + banks */
1567 	ROM_LOAD( "5.u92",        0x00000, 0x20000, 0x97d67510 )
1568 	ROM_RELOAD(               0x10000, 0x20000 )
1569 
1570 	ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1571 	ROM_LOAD( "gha.u55",      0x00000, 0x80000, 0x3e0cea91 )
1572 
1573 	ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1574 	ROM_LOAD( "gh9.u61",      0x00000, 0x80000, 0x5d1676bd )
1575 
1576 	ROM_REGION( 0x400000, REGION_GFX3 | REGIONFLAG_DISPOSE )
1577 	ROM_LOAD( "u42",          0x000000, 0x100000, 0x65f0da84 )
1578 	ROM_LOAD( "3.u44",        0x100000, 0x020000, 0x34bdead2 )
1579 	ROM_LOAD( "u43",          0x200000, 0x100000, 0x7b349e5d )
1580 	ROM_LOAD( "4.u45",        0x300000, 0x020000, 0xbe4d487d )
1581 
1582 	ROM_REGION( 0x100000, REGION_GFX4 | REGIONFLAG_DISPOSE )
1583 	ROM_LOAD( "u59.ghb",      0x000000, 0x80000, 0x158c9cde )
1584 	ROM_LOAD( "ghd.u60",      0x080000, 0x80000, 0x73180ae3 )
1585 
1586 	ROM_REGION( 0x080000, REGION_SOUND1 ) /* sound samples */
1587 	ROM_LOAD( "u105.gh8",     0x000000, 0x080000, 0x7a68cb1b )
1588 
1589 	ROM_REGION( 0x100000, REGION_SOUND2 ) /* sound samples */
1590 	ROM_LOAD( "u104",         0x000000, 0x100000, 0x5795e884 )
1591 ROM_END
1592 
1593 ROM_START( turbofrc )
1594 	ROM_REGION( 0xc0000, REGION_CPU1 )	/* 68000 code */
1595 	ROM_LOAD_WIDE_SWAP( "tfrc2.bin",    0x00000, 0x40000, 0x721300ee )
1596 	ROM_LOAD_WIDE_SWAP( "tfrc1.bin",    0x40000, 0x40000, 0x6cd5312b )
1597 	ROM_LOAD_WIDE_SWAP( "tfrc3.bin",    0x80000, 0x40000, 0x63f50557 )
1598 
1599 	ROM_REGION( 0x30000, REGION_CPU2 )	/* 64k for the audio CPU + banks */
1600 	ROM_LOAD( "tfrcu166.bin", 0x00000, 0x20000, 0x2ca14a65 )
1601 	ROM_RELOAD(               0x10000, 0x20000 )
1602 
1603 	ROM_REGION( 0x0a0000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1604 	ROM_LOAD( "tfrcu94.bin",  0x000000, 0x80000, 0xbaa53978 )
1605 	ROM_LOAD( "tfrcu95.bin",  0x080000, 0x20000, 0x71a6c573 )
1606 
1607 	ROM_REGION( 0x0a0000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1608 	ROM_LOAD( "tfrcu105.bin", 0x000000, 0x80000, 0x4de4e59e )
1609 	ROM_LOAD( "tfrcu106.bin", 0x080000, 0x20000, 0xc6479eb5 )
1610 
1611 	ROM_REGION( 0x200000, REGION_GFX3 | REGIONFLAG_DISPOSE )
1612 	ROM_LOAD( "tfrcu116.bin", 0x000000, 0x80000, 0xdf210f3b )
1613 	ROM_LOAD( "tfrcu118.bin", 0x080000, 0x40000, 0xf61d1d79 )
1614 	ROM_LOAD( "tfrcu117.bin", 0x100000, 0x80000, 0xf70812fd )
1615 	ROM_LOAD( "tfrcu119.bin", 0x180000, 0x40000, 0x474ea716 )
1616 
1617 	ROM_REGION( 0x100000, REGION_GFX4 | REGIONFLAG_DISPOSE )
1618 	ROM_LOAD( "tfrcu134.bin", 0x000000, 0x80000, 0x487330a2 )
1619 	ROM_LOAD( "tfrcu135.bin", 0x080000, 0x80000, 0x3a7e5b6d )
1620 
1621 	ROM_REGION( 0x20000, REGION_SOUND1 ) /* sound samples */
1622 	ROM_LOAD( "tfrcu180.bin",   0x00000, 0x20000, 0x39c7c7d5 )
1623 
1624 	ROM_REGION( 0x100000, REGION_SOUND2 ) /* sound samples */
1625 	ROM_LOAD( "tfrcu179.bin", 0x000000, 0x100000, 0x60ca0333 )
1626 ROM_END
1627 
1628 ROM_START( aerofgt )
1629 	ROM_REGION( 0x80000, REGION_CPU1 )	/* 68000 code */
1630 	ROM_LOAD_WIDE_SWAP( "1.u4",         0x00000, 0x80000, 0x6fdff0a2 )
1631 
1632 	ROM_REGION( 0x30000, REGION_CPU2 )	/* 64k for the audio CPU + banks */
1633 	ROM_LOAD( "2.153",        0x00000, 0x20000, 0xa1ef64ec )
1634 	ROM_RELOAD(               0x10000, 0x20000 )
1635 
1636 	ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1637 	ROM_LOAD( "538a54.124",   0x000000, 0x80000, 0x4d2c4df2 )
1638 	ROM_LOAD( "1538a54.124",  0x080000, 0x80000, 0x286d109e )
1639 
1640 	ROM_REGION( 0x100000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1641 	ROM_LOAD( "538a53.u9",    0x000000, 0x100000, 0x630d8e0b )
1642 
1643 	ROM_REGION( 0x080000, REGION_GFX3 | REGIONFLAG_DISPOSE )
1644 	ROM_LOAD( "534g8f.u18",   0x000000, 0x80000, 0x76ce0926 )
1645 
1646 	ROM_REGION( 0x40000, REGION_SOUND1 ) /* sound samples */
1647 	ROM_LOAD( "it-19-01",     0x00000, 0x40000, 0x6d42723d )
1648 
1649 	ROM_REGION( 0x100000, REGION_SOUND2 ) /* sound samples */
1650 	ROM_LOAD( "it-19-06",     0x000000, 0x100000, 0xcdbbdb1d )
1651 ROM_END
1652 
1653 ROM_START( aerofgtb )
1654 	ROM_REGION( 0x80000, REGION_CPU1 )	/* 68000 code */
1655 	ROM_LOAD_EVEN( "v2",                0x00000, 0x40000, 0x5c9de9f0 )
1656 	ROM_LOAD_ODD ( "v1",                0x00000, 0x40000, 0x89c1dcf4 )
1657 
1658 	ROM_REGION( 0x30000, REGION_CPU2 )	/* 64k for the audio CPU + banks */
1659 	ROM_LOAD( "v3",           0x00000, 0x20000, 0xcbb18cf4 )
1660 	ROM_RELOAD(               0x10000, 0x20000 )
1661 
1662 	ROM_REGION( 0x080000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1663 	ROM_LOAD( "it-19-03",     0x000000, 0x80000, 0x85eba1a4 )
1664 
1665 	ROM_REGION( 0x080000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1666 	ROM_LOAD( "it-19-02",     0x000000, 0x80000, 0x4f57f8ba )
1667 
1668 	ROM_REGION( 0x100000, REGION_GFX3 | REGIONFLAG_DISPOSE )
1669 	ROM_LOAD( "it-19-04",     0x000000, 0x80000, 0x3b329c1f )
1670 	ROM_LOAD( "it-19-05",     0x080000, 0x80000, 0x02b525af )
1671 
1672 	ROM_REGION( 0x080000, REGION_GFX4 | REGIONFLAG_DISPOSE )
1673 	ROM_LOAD( "g27",          0x000000, 0x40000, 0x4d89cbc8 )
1674 	ROM_LOAD( "g26",          0x040000, 0x40000, 0x8072c1d2 )
1675 
1676 	ROM_REGION( 0x40000, REGION_SOUND1 ) /* sound samples */
1677 	ROM_LOAD( "it-19-01",     0x00000, 0x40000, 0x6d42723d )
1678 
1679 	ROM_REGION( 0x100000, REGION_SOUND2 ) /* sound samples */
1680 	ROM_LOAD( "it-19-06",     0x000000, 0x100000, 0xcdbbdb1d )
1681 ROM_END
1682 
1683 ROM_START( aerofgtc )
1684 	ROM_REGION( 0x80000, REGION_CPU1 )	/* 68000 code */
1685 	ROM_LOAD_EVEN( "v2.149",            0x00000, 0x40000, 0xf187aec6 )
1686 	ROM_LOAD_ODD ( "v1.111",            0x00000, 0x40000, 0x9e684b19 )
1687 
1688 	ROM_REGION( 0x30000, REGION_CPU2 )	/* 64k for the audio CPU + banks */
1689 	ROM_LOAD( "2.153",        0x00000, 0x20000, 0xa1ef64ec )
1690 	ROM_RELOAD(               0x10000, 0x20000 )
1691 
1692 	/* gfx ROMs were missing in this set, I'm using the aerofgtb ones */
1693 	ROM_REGION( 0x080000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1694 	ROM_LOAD( "it-19-03",     0x000000, 0x80000, 0x85eba1a4 )
1695 
1696 	ROM_REGION( 0x080000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1697 	ROM_LOAD( "it-19-02",     0x000000, 0x80000, 0x4f57f8ba )
1698 
1699 	ROM_REGION( 0x100000, REGION_GFX3 | REGIONFLAG_DISPOSE )
1700 	ROM_LOAD( "it-19-04",     0x000000, 0x80000, 0x3b329c1f )
1701 	ROM_LOAD( "it-19-05",     0x080000, 0x80000, 0x02b525af )
1702 
1703 	ROM_REGION( 0x080000, REGION_GFX4 | REGIONFLAG_DISPOSE )
1704 	ROM_LOAD( "g27",          0x000000, 0x40000, 0x4d89cbc8 )
1705 	ROM_LOAD( "g26",          0x040000, 0x40000, 0x8072c1d2 )
1706 
1707 	ROM_REGION( 0x40000, REGION_SOUND1 ) /* sound samples */
1708 	ROM_LOAD( "it-19-01",     0x00000, 0x40000, 0x6d42723d )
1709 
1710 	ROM_REGION( 0x100000, REGION_SOUND2 ) /* sound samples */
1711 	ROM_LOAD( "it-19-06",     0x000000, 0x100000, 0xcdbbdb1d )
1712 ROM_END
1713 
1714 ROM_START( sonicwi )
1715 	ROM_REGION( 0x80000, REGION_CPU1 )	/* 68000 code */
1716 	ROM_LOAD_EVEN( "2.149",             0x00000, 0x40000, 0x3d1b96ba )
1717 	ROM_LOAD_ODD ( "1.111",             0x00000, 0x40000, 0xa3d09f94 )
1718 
1719 	ROM_REGION( 0x30000, REGION_CPU2 )	/* 64k for the audio CPU + banks */
1720 	ROM_LOAD( "2.153",        0x00000, 0x20000, 0xa1ef64ec )	// 3.156
1721 	ROM_RELOAD(               0x10000, 0x20000 )
1722 
1723 	/* gfx ROMs were missing in this set, I'm using the aerofgtb ones */
1724 	ROM_REGION( 0x080000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1725 	ROM_LOAD( "it-19-03",     0x000000, 0x80000, 0x85eba1a4 )
1726 
1727 	ROM_REGION( 0x080000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1728 	ROM_LOAD( "it-19-02",     0x000000, 0x80000, 0x4f57f8ba )
1729 
1730 	ROM_REGION( 0x100000, REGION_GFX3 | REGIONFLAG_DISPOSE )
1731 	ROM_LOAD( "it-19-04",     0x000000, 0x80000, 0x3b329c1f )
1732 	ROM_LOAD( "it-19-05",     0x080000, 0x80000, 0x02b525af )
1733 
1734 	ROM_REGION( 0x080000, REGION_GFX4 | REGIONFLAG_DISPOSE )
1735 	ROM_LOAD( "g27",          0x000000, 0x40000, 0x4d89cbc8 )
1736 	ROM_LOAD( "g26",          0x040000, 0x40000, 0x8072c1d2 )
1737 
1738 	ROM_REGION( 0x40000, REGION_SOUND1 ) /* sound samples */
1739 	ROM_LOAD( "it-19-01",     0x00000, 0x40000, 0x6d42723d )
1740 
1741 	ROM_REGION( 0x100000, REGION_SOUND2 ) /* sound samples */
1742 	ROM_LOAD( "it-19-06",     0x000000, 0x100000, 0xcdbbdb1d )
1743 ROM_END
1744 
1745 
1746 
1747 GAMEX( 1991, pspikes,  0,        pspikes,  pspikes,  0, ROT0,   "Video System Co.", "Power Spikes (Korea)", GAME_NO_COCKTAIL )
1748 GAMEX( 1991, svolly91, pspikes,  pspikes,  pspikes,  0, ROT0,   "Video System Co.", "Super Volley '91 (Japan)", GAME_NO_COCKTAIL )
1749 GAMEX( 1991, karatblz, 0,        karatblz, karatblz, 0, ROT0,   "Video System Co.", "Karate Blazers (World?)", GAME_NO_COCKTAIL )
1750 GAMEX( 1991, karatblu, karatblz, karatblz, karatblz, 0, ROT0,   "Video System Co.", "Karate Blazers (US)", GAME_NO_COCKTAIL )
1751 GAMEX( 1990, spinlbrk, 0,        spinlbrk, spinlbrk, 0, ROT0,   "V-System Co.", "Spinal Breakers (World)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
1752 GAMEX( 1990, spinlbru, spinlbrk, spinlbrk, spinlbrk, 0, ROT0,   "V-System Co.", "Spinal Breakers (US)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
1753 GAMEX( 1990, spinlbrj, spinlbrk, spinlbrk, spinlbrk, 0, ROT0,   "V-System Co.", "Spinal Breakers (Japan)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
1754 GAMEX( 1991, turbofrc, 0,        turbofrc, turbofrc, 0, ROT270, "Video System Co.", "Turbo Force", GAME_NO_COCKTAIL )
1755 GAMEX( 1992, aerofgt,  0,        aerofgt,  aerofgt,  0, ROT270, "Video System Co.", "Aero Fighters", GAME_NO_COCKTAIL )
1756 GAMEX( 1992, aerofgtb, aerofgt,  aerofgtb, aerofgtb, 0, ROT270, "Video System Co.", "Aero Fighters (Turbo Force hardware set 1)", GAME_NO_COCKTAIL )
1757 GAMEX( 1992, aerofgtc, aerofgt,  aerofgtb, aerofgtb, 0, ROT270, "Video System Co.", "Aero Fighters (Turbo Force hardware set 2)", GAME_NO_COCKTAIL )
1758 GAMEX( 1992, sonicwi,  aerofgt,  aerofgtb, aerofgtb, 0, ROT270, "Video System Co.", "Sonic Wings (Japan)", GAME_NO_COCKTAIL )
1759