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