1 #include "../vidhrdw/alpha68k.c"
2
3 /***************************************************************************
4
5 SNK/Alpha 68000 based games:
6
7 (Game) (PCB Number) (Manufacturer)
8
9 The Koukouyakyuh ? Alpha Denshi 1985
10 Super Stingray ? (Early) Alpha 1986?
11 Kyros ? (Early) World Games Inc 1987
12 Paddle Mania Alpha 68K-96 I SNK 1988
13 Time Soldiers (Ver 3) Alpha 68K-96 II SNK/Romstar 1987
14 Time Soldiers (Ver 1) Alpha 68K-96 II SNK/Romstar 1987
15 Battlefield (Ver 1) Alpha 68K-96 II SNK 1987
16 Sky Soldiers Alpha 68K-96 II SNK/Romstar 1988
17 Gold Medalist Alpha 68K-96 II SNK 1988
18 Gold Medalist (Bootleg) SNK 1988
19 Sky Adventure Alpha 68K-96 V SNK 1989
20 Gang Wars Alpha 68K-96 V Alpha 1989
21 Gang Wars (Bootleg) Alpha 1989
22 Super Champion Baseball (V board?) SNK/Alpha/Romstar/Sega 1989
23
24 General notes:
25
26 The Koukouyakyuh is different hardware design from the other games.
27
28 All II & V games are 68000, z80 plus a custom Alpha microcontroller,
29 the microcontroller is able to write to anywhere within main memory.
30
31 Gold Medalist (bootleg) has a 68705 in place of the Alpha controller.
32
33 V boards have more memory and double the amount of colours as II boards.
34
35 Coinage is controlled by the microcontroller and is not fully supported
36 for all games yet.
37
38 Time Soldiers - make the ROM writable and the game will enter a 'debug'
39 kind of mode, probably from the development system used.
40
41 Time Soldiers - Title screen is corrupt when set to 'Japanese language',
42 the real board does this too! (Battlefield is corrupt when set to English
43 too).
44
45 Paddle Mania is (c) 1988 but is crude hardware and there are probably
46 several earlier games running on it.
47
48 Emulation by Bryan McPhail, mish@tendril.co.uk
49
50 ***************************************************************************/
51
52 #include "driver.h"
53 #include "vidhrdw/generic.h"
54 #include "cpu/z80/z80.h"
55
56 int kouyakyu_vh_start(void);
57 int alpha68k_vh_start(void);
58 void kyros_vh_screenrefresh(struct osd_bitmap *bitmap, int full_refresh);
59 void sstingry_vh_screenrefresh(struct osd_bitmap *bitmap, int full_refresh);
60 void alpha68k_I_vh_screenrefresh(struct osd_bitmap *bitmap, int full_refresh);
61 void alpha68k_I_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
62 void kouyakyu_vh_screenrefresh(struct osd_bitmap *bitmap, int full_refresh);
63 void kyros_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
64 void alpha68k_II_vh_screenrefresh(struct osd_bitmap *bitmap, int full_refresh);
65 WRITE_HANDLER( alpha68k_II_video_bank_w );
66 void alpha68k_V_vh_screenrefresh(struct osd_bitmap *bitmap, int full_refresh);
67 void alpha68k_V_sb_vh_screenrefresh(struct osd_bitmap *bitmap, int full_refresh);
68 WRITE_HANDLER( alpha68k_V_video_bank_w );
69 WRITE_HANDLER( alpha68k_V_video_control_w );
70 WRITE_HANDLER( alpha68k_paletteram_w );
71 WRITE_HANDLER( alpha68k_flipscreen_w );
72 WRITE_HANDLER( alpha68k_videoram_w );
73 WRITE_HANDLER( kouyakyu_video_w );
74
75 static unsigned char *shared_ram,*sound_ram;
76 static int invert_controls,microcontroller_id;
77
78 /******************************************************************************/
79
READ_HANDLER(alpha68k_II_video_r)80 static READ_HANDLER( alpha68k_II_video_r )
81 {
82 return READ_WORD(&videoram[offset]);
83 }
84
READ_HANDLER(control_1_r)85 static READ_HANDLER( control_1_r )
86 {
87 if (invert_controls)
88 return ~(readinputport(0) + (readinputport(1) << 8));
89
90 return (readinputport(0) + (readinputport(1) << 8));
91 }
92
READ_HANDLER(control_2_r)93 static READ_HANDLER( control_2_r )
94 {
95 if (invert_controls)
96 return ~(readinputport(3) + ((~(1 << (readinputport(5) * 12 / 256))) << 8));
97
98 return readinputport(3) + /* Low byte of CN1 */
99 ((~(1 << (readinputport(5) * 12 / 256))) << 8);
100 }
101
READ_HANDLER(control_2_V_r)102 static READ_HANDLER( control_2_V_r )
103 {
104 return readinputport(3);
105 }
106
READ_HANDLER(kyros_dip_r)107 static READ_HANDLER( kyros_dip_r )
108 {
109 return readinputport(1)<<8;
110 }
111
READ_HANDLER(control_3_r)112 static READ_HANDLER( control_3_r )
113 {
114 if (invert_controls)
115 return ~((( ~(1 << (readinputport(6) * 12 / 256)) )<<8)&0xff00);
116
117 return (( ~(1 << (readinputport(6) * 12 / 256)) )<<8)&0xff00;
118 }
119
120 /* High 4 bits of CN1 & CN2 */
READ_HANDLER(control_4_r)121 static READ_HANDLER( control_4_r )
122 {
123 if (invert_controls)
124 return ~(((( ~(1 << (readinputport(6) * 12 / 256)) ) <<4)&0xf000)
125 + ((( ~(1 << (readinputport(5) * 12 / 256)) ) )&0x0f00));
126
127 return ((( ~(1 << (readinputport(6) * 12 / 256)) ) <<4)&0xf000)
128 + ((( ~(1 << (readinputport(5) * 12 / 256)) ) )&0x0f00);
129 }
130
131 /******************************************************************************/
132
WRITE_HANDLER(kyros_sound_w)133 static WRITE_HANDLER( kyros_sound_w )
134 {
135 soundlatch_w(0,(data>>8)&0xff);
136 }
137
WRITE_HANDLER(alpha68k_II_sound_w)138 static WRITE_HANDLER( alpha68k_II_sound_w )
139 {
140 soundlatch_w(0,data&0xff);
141 }
142
WRITE_HANDLER(alpha68k_V_sound_w)143 static WRITE_HANDLER( alpha68k_V_sound_w )
144 {
145 /* Sound & fix bank select are in the same word */
146 if ((data>>16)!=0xff) {
147 soundlatch_w(0,data&0xff);
148 } else {
149 alpha68k_V_video_bank_w(0,(data>>8)&0xff);
150 }
151 }
152
153 /******************************************************************************/
154
155 /* Time Soldiers, Sky Soldiers, Gold Medalist */
READ_HANDLER(alpha_II_trigger_r)156 static READ_HANDLER( alpha_II_trigger_r )
157 {
158 static int latch;
159 int source=READ_WORD(&shared_ram[offset]);
160
161 switch (offset) {
162 case 0: /* Dipswitch 2 */
163 WRITE_WORD(&shared_ram[0], (source&0xff00)| readinputport(4));
164 return 0;
165
166 case 0x44: /* Coin value */
167 WRITE_WORD(&shared_ram[0x44], (source&0xff00)|0x1);
168 return 0;
169
170 case 0x52: /* Query microcontroller for coin insert */
171 if ((readinputport(2)&0x3)==3) latch=0;
172 if ((readinputport(2)&0x1)==0 && !latch) {
173 WRITE_WORD(&shared_ram[0x52], (source&0xff00)|0x22);
174 WRITE_WORD(&shared_ram[0x44], (source&0xff00)|0x0);
175 latch=1;
176 } else if ((readinputport(2)&0x2)==0 && !latch) {
177 WRITE_WORD(&shared_ram[0x52], (source&0xff00)|0x22);
178 WRITE_WORD(&shared_ram[0x44], (source&0xff00)|0x0);
179 latch=1;
180 }
181 else
182 WRITE_WORD(&shared_ram[0x52], (source&0xff00)|0x00);
183 return 0;
184
185 case 0x1fc: /* Custom ID check, same for all games */
186 WRITE_WORD(&shared_ram[0x1fc], (source&0xff00)|0x87);
187 break;
188 case 0x1fe: /* Custom ID check, same for all games */
189 WRITE_WORD(&shared_ram[0x1fe], (source&0xff00)|0x13);
190 break;
191 }
192
193 //logerror("%04x: Alpha read trigger at %04x\n",cpu_get_pc(),offset);
194
195 return 0; /* Values returned don't matter */
196 }
197
198 /* Sky Adventure & Gang Wars */
READ_HANDLER(alpha_V_trigger_r)199 static READ_HANDLER( alpha_V_trigger_r )
200 {
201 static int latch;
202 int source=READ_WORD(&shared_ram[offset]);
203
204 switch (offset) {
205 case 0: /* Dipswitch 1 */
206 WRITE_WORD(&shared_ram[0], (source&0xff00)| readinputport(4));
207 return 0;
208
209 case 0x44: /* Coin value */
210 WRITE_WORD(&shared_ram[0x44], (source&0xff00)|0x1);
211 return 0;
212 case 0x52: /* Query microcontroller for coin insert */
213 if ((readinputport(2)&0x3)==3) latch=0;
214 if ((readinputport(2)&0x1)==0 && !latch) {
215 WRITE_WORD(&shared_ram[0x52], (source&0xff00)|0x23);
216 WRITE_WORD(&shared_ram[0x44], (source&0xff00)|0x0);
217 latch=1;
218 }
219 else if ((readinputport(2)&0x2)==0 && !latch) {
220 WRITE_WORD(&shared_ram[0x52], (source&0xff00)|0x24);
221 WRITE_WORD(&shared_ram[0x44], (source&0xff00)|0x0);
222 latch=1;
223 }
224 else
225 WRITE_WORD(&shared_ram[0x52], (source&0xff00)|0x00);
226 return 0;
227
228 // case 0x62: /* Sky Adventure - I don't think is correct, but it works */
229 // WRITE_WORD(&shared_ram[0x154], 0xffff);
230 // return 0;
231
232 case 0x1fc: /* Custom ID check */
233 WRITE_WORD(&shared_ram[0x1fc], (source&0xff00)|(microcontroller_id>>8));
234 break;
235 case 0x1fe: /* Custom ID check */
236 WRITE_WORD(&shared_ram[0x1fe], (source&0xff00)|(microcontroller_id&0xff));
237 break;
238
239 case 0x3e00: /* Dipswitch 1 */
240 WRITE_WORD(&shared_ram[0x3e00], (source&0xff00)| readinputport(4));
241 return 0;
242 case 0x3e52: /* Gang Wars - Query microcontroller for coin insert */
243 if ((readinputport(2)&0x3)==3) latch=0;
244 if ((readinputport(2)&0x1)==0 && !latch) {
245 WRITE_WORD(&shared_ram[0x3e52], (source&0xff00)|0x23);
246 WRITE_WORD(&shared_ram[0x3e44], (source&0xff00)|0x0);
247 latch=1;
248 }
249 else if ((readinputport(2)&0x2)==0 && !latch) {
250 WRITE_WORD(&shared_ram[0x3e52], (source&0xff00)|0x24);
251 WRITE_WORD(&shared_ram[0x3e44], (source&0xff00)|0x0);
252 latch=1;
253 }
254 else
255 WRITE_WORD(&shared_ram[0x3e52], (source&0xff00)|0x00);
256
257 /* The game expects the first dip to appear in RAM at 0x2c6, presumably
258 the microcontroller supplies it (it does for all the other games, but
259 usually to 0x0 in RAM) */
260 source=READ_WORD(&shared_ram[0x2c6]);
261 WRITE_WORD(&shared_ram[0x2c6], (source&0x00ff)| (readinputport(4)<<8));
262 return 0;
263
264 case 0x3ffc: /* Custom ID check, Gang Wars */
265 WRITE_WORD(&shared_ram[0x3ffc], (source&0xff00)|(microcontroller_id>>8));
266 break;
267 case 0x3ffe: /* Custom ID check, Gang Wars */
268 WRITE_WORD(&shared_ram[0x3ffe], (source&0xff00)|(microcontroller_id&0xff));
269 break;
270 }
271
272 //logerror("%04x: Alpha read trigger at %04x\n",cpu_get_pc(),offset);
273
274 return 0; /* Values returned don't matter */
275 }
276
WRITE_HANDLER(alpha_microcontroller_w)277 static WRITE_HANDLER( alpha_microcontroller_w )
278 {
279 //logerror("%04x: Alpha write trigger at %04x (%04x)\n",cpu_get_pc(),offset,data);
280 /* 0x44 = coin clear signal to microcontroller? */
281 if (offset==0x5a) alpha68k_flipscreen_w(0,data);
282 }
283
READ_HANDLER(kyros_alpha_trigger_r)284 static READ_HANDLER( kyros_alpha_trigger_r )
285 {
286 static int latch;
287 int source=READ_WORD(&shared_ram[offset]);
288
289 switch (offset) {
290 case 0x44: /* Coin value */
291 WRITE_WORD(&shared_ram[0x44], (source&0xff00)|0x1);
292 return 0;
293 case 0x52: /* Query microcontroller for coin insert */
294 if ((readinputport(2)&0x1)==1) latch=0;
295 if ((readinputport(2)&0x1)==0 && !latch) {
296 WRITE_WORD(&shared_ram[0x52], (source&0xff00)|0x22);
297 WRITE_WORD(&shared_ram[0x44], (source&0xff00)|0x0);
298 latch=1;
299 }
300 else
301 WRITE_WORD(&shared_ram[0x52], (source&0xff00)|0x00);
302 return 0;
303
304 case 0x1fe: /* Custom check, only used at bootup */
305 WRITE_WORD(&shared_ram[0x1fe], (source&0xff00)|microcontroller_id);
306 break;
307
308 }
309
310 //logerror("%04x: Alpha read trigger at %04x\n",cpu_get_pc(),offset);
311
312 return 0; /* Values returned don't matter */
313 }
314
315 /******************************************************************************/
316
317 static struct MemoryReadAddress kouyakyu_readmem[] =
318 {
319 { 0x000000, 0x01ffff, MRA_ROM },
320 { 0x040000, 0x040fff, MRA_BANK1 },
321 { 0x080000, 0x081fff, MRA_BANK2 },
322 { 0x0c0000, 0x0c0fff, MRA_BANK3 },
323 { 0x100000, 0x1007ff, MRA_BANK4 },
324 { 0x140000, 0x1407ff, MRA_BANK5 },
325 { -1 } /* end of table */
326 };
327
328 static struct MemoryWriteAddress kouyakyu_writemem[] =
329 {
330 { 0x000000, 0x01ffff, MWA_ROM },
331 { 0x040000, 0x040fff, MWA_BANK1, &shared_ram },
332 { 0x080000, 0x080fff, kouyakyu_video_w, &videoram },
333 { 0x0c0000, 0x0c0fff, MWA_BANK3, &spriteram },
334 { 0x100000, 0x1007ff, MWA_BANK4 },
335 { 0x140000, 0x1407ff, MWA_BANK5 },
336 { 0x780000, 0x780001, MWA_NOP }, /* Watchdog? */
337 { -1 } /* end of table */
338 };
339
340 static struct MemoryReadAddress kyros_readmem[] =
341 {
342 { 0x000000, 0x01ffff, MRA_ROM },
343 { 0x020000, 0x020fff, MRA_BANK1 },
344 { 0x040000, 0x041fff, MRA_BANK2 },
345 { 0x060000, 0x060001, MRA_NOP }, /* Watchdog? */
346 { 0x080000, 0x0801ff, kyros_alpha_trigger_r },
347 { 0x0c0000, 0x0c0001, input_port_0_r },
348 { 0x0e0000, 0x0e0001, kyros_dip_r },
349 { -1 } /* end of table */
350 };
351
352 static struct MemoryWriteAddress kyros_writemem[] =
353 {
354 { 0x000000, 0x01ffff, MWA_ROM },
355 { 0x020000, 0x020fff, MWA_BANK1, &shared_ram },
356 { 0x040000, 0x041fff, MWA_BANK2, &spriteram },
357 { 0x060000, 0x060001, alpha68k_II_sound_w }, /* Watchdog? */
358 { 0x0e0000, 0x0e0001, kyros_sound_w },
359 { -1 } /* end of table */
360 };
361
362 static struct MemoryReadAddress alpha68k_I_readmem[] =
363 {
364 { 0x000000, 0x03ffff, MRA_ROM },
365 { 0x080000, 0x083fff, MRA_BANK1 },
366 // { 0x180008, 0x180009, control_2_r }, /* 1 byte */
367 { 0x300000, 0x300001, control_1_r }, /* 2 */
368 { 0x340000, 0x340001, control_1_r }, /* 2 */
369 { 0x100000, 0x103fff, MRA_BANK2 },
370 { -1 } /* end of table */
371 };
372
373 static struct MemoryWriteAddress alpha68k_I_writemem[] =
374 {
375 { 0x000000, 0x03ffff, MWA_NOP },
376 { 0x080000, 0x083fff, MWA_BANK1, &shared_ram },
377 { 0x100000, 0x103fff, MWA_BANK2, &spriteram },
378 { 0x180000, 0x180001, MWA_NOP }, /* Watchdog */
379 { 0x380000, 0x380001, alpha68k_II_sound_w },
380 { -1 } /* end of table */
381 };
382
383 static struct MemoryReadAddress alpha68k_II_readmem[] =
384 {
385 { 0x000000, 0x03ffff, MRA_ROM },
386 { 0x040000, 0x040fff, MRA_BANK1 },
387 { 0x080000, 0x080001, control_1_r }, /* Joysticks */
388 { 0x0c0000, 0x0c0001, control_2_r }, /* CN1 & Dip 1 */
389 { 0x0c8000, 0x0c8001, control_3_r }, /* Bottom of CN2 */
390 { 0x0d0000, 0x0d0001, control_4_r }, /* Top of CN1 & CN2 */
391 { 0x0d8000, 0x0d8001, MRA_NOP }, /* IRQ ack? */
392 { 0x0e0000, 0x0e0001, MRA_NOP }, /* IRQ ack? */
393 { 0x0e8000, 0x0e8001, MRA_NOP }, /* watchdog? */
394 { 0x100000, 0x100fff, alpha68k_II_video_r },
395 { 0x200000, 0x207fff, MRA_BANK2 },
396 { 0x300000, 0x3001ff, alpha_II_trigger_r },
397 { 0x400000, 0x400fff, paletteram_word_r },
398 { 0x800000, 0x83ffff, MRA_BANK8 }, /* Extra code bank */
399 { -1 } /* end of table */
400 };
401
402 static struct MemoryWriteAddress alpha68k_II_writemem[] =
403 {
404 { 0x000000, 0x03ffff, MWA_NOP },
405 { 0x040000, 0x040fff, MWA_BANK1, &shared_ram },
406 { 0x080000, 0x080001, alpha68k_II_sound_w },
407 { 0x0c0000, 0x0c00ff, alpha68k_II_video_bank_w },
408 { 0x100000, 0x100fff, alpha68k_videoram_w, &videoram },
409 { 0x200000, 0x207fff, MWA_BANK2, &spriteram },
410 { 0x300000, 0x3001ff, alpha_microcontroller_w },
411 { 0x400000, 0x400fff, alpha68k_paletteram_w, &paletteram },
412 { -1 } /* end of table */
413 };
414
415 static struct MemoryReadAddress alpha68k_V_readmem[] =
416 {
417 { 0x000000, 0x03ffff, MRA_ROM },
418 { 0x040000, 0x043fff, MRA_BANK1 },
419 { 0x080000, 0x080001, control_1_r }, /* Joysticks */
420 { 0x0c0000, 0x0c0001, control_2_V_r }, /* Dip 2 */
421 { 0x0d8000, 0x0d8001, MRA_NOP }, /* IRQ ack? */
422 { 0x0e0000, 0x0e0001, MRA_NOP }, /* IRQ ack? */
423 { 0x0e8000, 0x0e8001, MRA_NOP }, /* watchdog? */
424 { 0x100000, 0x100fff, alpha68k_II_video_r },
425 { 0x200000, 0x207fff, MRA_BANK3 },
426 { 0x300000, 0x303fff, alpha_V_trigger_r },
427 { 0x400000, 0x401fff, paletteram_word_r },
428 { 0x800000, 0x83ffff, MRA_BANK8 },
429 { -1 } /* end of table */
430 };
431
432 static struct MemoryWriteAddress alpha68k_V_writemem[] =
433 {
434 { 0x000000, 0x03ffff, MWA_NOP },
435 { 0x040000, 0x043fff, MWA_BANK1, &shared_ram },
436 { 0x080000, 0x080001, alpha68k_V_sound_w },
437 { 0x0c0000, 0x0c00ff, alpha68k_V_video_control_w },
438 { 0x100000, 0x100fff, alpha68k_videoram_w, &videoram },
439 { 0x200000, 0x207fff, MWA_BANK3, &spriteram },
440 { 0x303e00, 0x303fff, alpha_microcontroller_w },
441 { 0x400000, 0x401fff, alpha68k_paletteram_w, &paletteram },
442 { -1 } /* end of table */
443 };
444
445 /******************************************************************************/
446
WRITE_HANDLER(sound_bank_w)447 static WRITE_HANDLER( sound_bank_w )
448 {
449 int bankaddress;
450 unsigned char *RAM = memory_region(REGION_CPU2);
451
452 bankaddress = 0x10000 + (data) * 0x4000;
453 cpu_setbank(7,&RAM[bankaddress]);
454 }
455
456 static struct MemoryReadAddress sound_readmem[] =
457 {
458 { 0x0000, 0x7fff, MRA_ROM },
459 { 0x8000, 0x87ff, MRA_RAM },
460 { 0xc000, 0xffff, MRA_BANK7 },
461 { -1 } /* end of table */
462 };
463
464 static struct MemoryWriteAddress sound_writemem[] =
465 {
466 { 0x0000, 0x7fff, MWA_ROM },
467 { 0x8000, 0x87ff, MWA_RAM },
468 { -1 } /* end of table */
469 };
470
471 static struct MemoryReadAddress kyros_sound_readmem[] =
472 {
473 { 0x0000, 0x7fff, MRA_ROM },
474 { 0xc000, 0xc7ff, MRA_RAM },
475 // { 0xe000, 0xe000, soundlatch_r },
476 // { 0xc000, 0xffff, MRA_BANK7 },
477 { -1 } /* end of table */
478 };
479
480 static struct MemoryWriteAddress kyros_sound_writemem[] =
481 {
482 { 0x0000, 0x7fff, MWA_ROM },
483 { 0xc000, 0xc7ff, MWA_RAM },
484 { -1 } /* end of table */
485 };
486
487 static struct MemoryReadAddress sstingry_sound_readmem[] =
488 {
489 { 0x0000, 0x7fff, MRA_ROM },
490 { 0x8000, 0x83ff, MRA_RAM },
491 // { 0xe000, 0xe000, soundlatch_r },
492 // { 0xc000, 0xffff, MRA_BANK7 },
493 { -1 } /* end of table */
494 };
495
496 /*static WRITE_HANDLER (soundram_mirror_w)
497 {
498 sound_ram[offset]=data;
499 }*/
500
501 static struct MemoryWriteAddress sstingry_sound_writemem[] =
502 {
503 { 0x0000, 0x7fff, MWA_ROM },
504 { 0x8000, 0x83ff, MWA_RAM, &sound_ram },
505 // { 0xc000, 0xc3ff, soundram_mirror_w },
506 { -1 } /* end of table */
507 };
508
509 static struct IOReadPort sound_readport[] =
510 {
511 { 0x00, 0x00, soundlatch_r },
512 { -1 }
513 };
514
515 static struct IOWritePort sound_writeport[] =
516 {
517 { 0x00, 0x00, soundlatch_clear_w },
518 { 0x08, 0x08, DAC_0_signed_data_w },
519 { 0x0a, 0x0a, YM2413_register_port_0_w },
520 { 0x0b, 0x0b, YM2413_data_port_0_w },
521 { 0x0c, 0x0c, YM2203_control_port_0_w },
522 { 0x0d, 0x0d, YM2203_write_port_0_w },
523 { 0x0e, 0x0e, sound_bank_w },
524 { -1 }
525 };
526
527 static struct IOWritePort kyros_sound_writeport[] =
528 {
529 // { 0x00, 0x00, soundlatch_clear_w },
530 // { 0x08, 0x08, DAC_0_data_w },
531 { 0x10, 0x10, YM2203_control_port_0_w },
532 { 0x11, 0x11, YM2203_write_port_0_w },
533 { 0x80, 0x80, AY8910_write_port_0_w },
534 { 0x81, 0x81, AY8910_control_port_0_w },
535 { 0x90, 0x90, AY8910_write_port_1_w },
536 { 0x91, 0x91, AY8910_control_port_1_w },
537 { -1 }
538 };
539
540 /******************************************************************************/
541
542 #define ALPHA68K_PLAYER1_INPUT \
543 PORT_START /* Player 1 controls */ \
544 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY ) \
545 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY ) \
546 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY ) \
547 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY ) \
548 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) \
549 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) \
550 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) /* Button 3 */ \
551 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) \
552
553 #define ALPHA68K_PLAYER2_INPUT \
554 PORT_START /* Player 2 controls */ \
555 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 ) \
556 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 ) \
557 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 ) \
558 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 ) \
559 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 ) \
560 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 ) \
561 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) /* Button 3 */ \
562 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
563
564 INPUT_PORTS_START( kyros )
565 PORT_START
566 PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY )
567 PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY )
568 PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
569 PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY )
570 PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 )
571 PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 )
572 PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 )
573 PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_START1 )
574 PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
575 PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
576 PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
577 PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT| IPF_8WAY | IPF_COCKTAIL )
578 PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
579 PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_COCKTAIL )
580 PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 | IPF_COCKTAIL )
581 PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_START2 )
582
583 PORT_START /* dipswitches */
584 PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
585 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
586 PORT_DIPSETTING( 0x01, DEF_STR( On ) )
587 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
588 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
589 PORT_DIPSETTING( 0x02, DEF_STR( On ) )
590 PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
591 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
592 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
593 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) // demo sound?
594 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
595 PORT_DIPSETTING( 0x08, DEF_STR( On ) )
596 PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
597 PORT_DIPSETTING( 0x00, "3" )
598 PORT_DIPSETTING( 0x10, "4" )
599 PORT_DIPSETTING( 0x20, "5" )
600 PORT_DIPSETTING( 0x30, "6" )
601 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
602 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
603 PORT_DIPSETTING( 0x40, DEF_STR( On ) )
604 PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
605 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
606 PORT_DIPSETTING( 0x80, DEF_STR( On ) )
607
608 PORT_START /* Coin input to microcontroller */
609 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
610 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
611 INPUT_PORTS_END
612
613 INPUT_PORTS_START( sstingry )
614 PORT_START
615 PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY )
616 PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY )
617 PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
618 PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY )
619 PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 )
620 PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 )
621 PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 )
622 PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_START1 )
623 PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
624 PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
625 PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
626 PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT| IPF_8WAY | IPF_COCKTAIL )
627 PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
628 PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_COCKTAIL )
629 PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 | IPF_COCKTAIL )
630 PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_START2 )
631
632 PORT_START /* Player 1 controls */
633 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
634 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
635 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
636 PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
637 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
638 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
639 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
640 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
641 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
642 PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
643 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
644 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
645 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
646 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
647 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
648 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
649 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
650 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
651 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
652 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
653 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
654 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
655 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
656 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
657
658 PORT_START /* Coin input to microcontroller */
659 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
660 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
661 INPUT_PORTS_END
662
663 INPUT_PORTS_START( timesold )
664 ALPHA68K_PLAYER1_INPUT
665 ALPHA68K_PLAYER2_INPUT
666
667 PORT_START /* Coin input to microcontroller */
668 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
669 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
670
671 PORT_START /* Service + dip */
672 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
673 PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
674
675 /* 2 physical sets of _6_ dip switches */
676 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Flip_Screen ) )
677 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
678 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
679 PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )
680 PORT_DIPSETTING( 0x00, "Easy" )
681 PORT_DIPSETTING( 0x18, "Normal" )
682 PORT_DIPSETTING( 0x10, "Difficult" )
683 PORT_DIPNAME( 0x20, 0x00, "Language" )
684 PORT_DIPSETTING( 0x00, "English" )
685 PORT_DIPSETTING( 0x20, "Japanese" )
686 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
687 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
688 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
689 PORT_BITX( 0x80, 0x80, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
690 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
691 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
692
693 PORT_START /* A 6 way dip switch */
694 PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
695 PORT_DIPSETTING( 0x00, "A 3C/2C B 8C/1C" )
696 PORT_DIPSETTING( 0x01, "A 2C/3C B 7C/1C" )
697 PORT_DIPSETTING( 0x07, "A 1C/1C B 1C/1C" )
698 PORT_DIPSETTING( 0x06, "A 1C/2C B 2C/1C" )
699 PORT_DIPSETTING( 0x05, "A 1C/3C B 3C/1C" )
700 PORT_DIPSETTING( 0x04, "A 1C/4C B 4C/1C" )
701 PORT_DIPSETTING( 0x03, "A 1C/5C B 5C/1C" )
702 PORT_DIPSETTING( 0x02, "A 1C/6C B 6C/1C" )
703 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
704 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
705 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
706 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
707 PORT_DIPSETTING( 0x30, "3" )
708 PORT_DIPSETTING( 0x20, "4" )
709 PORT_DIPSETTING( 0x10, "5" )
710 PORT_DIPSETTING( 0x00, "6" )
711 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
712 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
713
714 PORT_START /* player 1 12-way rotary control - converted in controls_r() */
715 PORT_ANALOGX( 0xff, 0x00, IPT_DIAL | IPF_REVERSE, 25, 8, 0, 0, JOYCODE_1_BUTTON5, JOYCODE_1_BUTTON6, 0, 0 )
716
717 PORT_START /* player 2 12-way rotary control - converted in controls_r() */
718 PORT_ANALOGX( 0xff, 0x00, IPT_DIAL | IPF_REVERSE | IPF_PLAYER2, 25, 8, 0, 0, JOYCODE_2_BUTTON5, JOYCODE_2_BUTTON6, 0, 0 )
719 INPUT_PORTS_END
720
721 INPUT_PORTS_START( btlfield )
722 ALPHA68K_PLAYER1_INPUT
723 ALPHA68K_PLAYER2_INPUT
724
725 PORT_START /* Coin input to microcontroller */
726 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
727 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
728
729 PORT_START /* Service + dip */
730 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
731 PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
732
733 /* 2 physical sets of _6_ dip switches */
734 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Flip_Screen ) )
735 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
736 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
737 PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )
738 PORT_DIPSETTING( 0x00, "Easy" )
739 PORT_DIPSETTING( 0x18, "Normal" )
740 PORT_DIPSETTING( 0x10, "Difficult" )
741 PORT_DIPNAME( 0x20, 0x20, "Language" )
742 PORT_DIPSETTING( 0x00, "English" )
743 PORT_DIPSETTING( 0x20, "Japanese" )
744 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
745 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
746 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
747 PORT_BITX( 0x80, 0x80, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
748 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
749 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
750
751 PORT_START /* A 6 way dip switch */
752 PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
753 PORT_DIPSETTING( 0x00, "A 3C/2C B 8C/1C" )
754 PORT_DIPSETTING( 0x01, "A 2C/3C B 7C/1C" )
755 PORT_DIPSETTING( 0x07, "A 1C/1C B 1C/1C" )
756 PORT_DIPSETTING( 0x06, "A 1C/2C B 2C/1C" )
757 PORT_DIPSETTING( 0x05, "A 1C/3C B 3C/1C" )
758 PORT_DIPSETTING( 0x04, "A 1C/4C B 4C/1C" )
759 PORT_DIPSETTING( 0x03, "A 1C/5C B 5C/1C" )
760 PORT_DIPSETTING( 0x02, "A 1C/6C B 6C/1C" )
761 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
762 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
763 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
764 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
765 PORT_DIPSETTING( 0x30, "3" )
766 PORT_DIPSETTING( 0x20, "4" )
767 PORT_DIPSETTING( 0x10, "5" )
768 PORT_DIPSETTING( 0x00, "6" )
769 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
770 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
771
772 PORT_START /* player 1 12-way rotary control - converted in controls_r() */
773 PORT_ANALOGX( 0xff, 0x00, IPT_DIAL | IPF_REVERSE, 25, 8, 0, 0, JOYCODE_1_BUTTON5, JOYCODE_1_BUTTON6, 0, 0 )
774
775 PORT_START /* player 2 12-way rotary control - converted in controls_r() */
776 PORT_ANALOGX( 0xff, 0x00, IPT_DIAL | IPF_REVERSE | IPF_PLAYER2, 25, 8, 0, 0, JOYCODE_2_BUTTON5, JOYCODE_2_BUTTON6, 0, 0 )
777 INPUT_PORTS_END
778
779 INPUT_PORTS_START( skysoldr )
780 ALPHA68K_PLAYER1_INPUT
781 ALPHA68K_PLAYER2_INPUT
782
783 PORT_START /* Coin input to microcontroller */
784 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
785 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
786
787 PORT_START /* Service + dip */
788 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
789 PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
790
791 /* 2 physical sets of _6_ dip switches */
792 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Flip_Screen ) )
793 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
794 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
795 PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )
796 PORT_DIPSETTING( 0x00, "Easy" )
797 PORT_DIPSETTING( 0x18, "Normal" ) /* 18 Normal */
798 PORT_DIPSETTING( 0x10, "Difficult" )
799 PORT_DIPNAME( 0x20, 0x00, "Language" )
800 PORT_DIPSETTING( 0x00, "English" )
801 PORT_DIPSETTING( 0x20, "Japanese" )
802 PORT_DIPNAME( 0x40, 0x40, "Manufacturer" )
803 PORT_DIPSETTING( 0x40, "SNK" )
804 PORT_DIPSETTING( 0x00, "Romstar" )
805 PORT_BITX( 0x80, 0x80, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
806 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
807 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
808
809 PORT_START /* A 6 way dip switch */
810 PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
811 PORT_DIPSETTING( 0x00, "A 3C/2C B 8C/1C" )
812 PORT_DIPSETTING( 0x01, "A 2C/3C B 7C/1C" )
813 PORT_DIPSETTING( 0x07, "A 1C/1C B 1C/1C" )
814 PORT_DIPSETTING( 0x06, "A 1C/2C B 2C/1C" )
815 PORT_DIPSETTING( 0x05, "A 1C/3C B 3C/1C" )
816 PORT_DIPSETTING( 0x04, "A 1C/4C B 4C/1C" )
817 PORT_DIPSETTING( 0x03, "A 1C/5C B 5C/1C" )
818 PORT_DIPSETTING( 0x02, "A 1C/6C B 6C/1C" )
819 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
820 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
821 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
822 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
823 PORT_DIPSETTING( 0x30, "3" )
824 PORT_DIPSETTING( 0x20, "4" )
825 PORT_DIPSETTING( 0x10, "5" )
826 PORT_DIPSETTING( 0x00, "6" )
827 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
828 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
829
830 PORT_START /* player 1 12-way rotary control */
831 PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
832
833 PORT_START /* player 2 12-way rotary control */
834 PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
835 INPUT_PORTS_END
836
837 INPUT_PORTS_START( goldmedl )
838 PORT_START /* 3 buttons per player, no joystick */
839 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
840 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
841 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
842 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
843 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
844 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2)
845 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START3 ) /* Doesn't work? */
846 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
847
848 PORT_START /* 3 buttons per player, no joystick */
849 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
850 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
851 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER4 )
852 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER4 )
853 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
854 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER4 )
855 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START4 )
856 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
857
858 PORT_START /* Coin input to microcontroller */
859 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
860 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
861
862 PORT_START /* Service + dip */
863 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
864 PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
865
866 /* 2 physical sets of _6_ dip switches */
867 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Flip_Screen ) )
868 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
869 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
870 PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )
871 PORT_DIPSETTING( 0x00, "Easy" )
872 PORT_DIPSETTING( 0x18, "Normal" )
873 PORT_DIPSETTING( 0x10, "Difficult" )
874 PORT_DIPNAME( 0x20, 0x00, "Language" )
875 PORT_DIPSETTING( 0x00, "English" )
876 PORT_DIPSETTING( 0x20, "Japanese" )
877 PORT_DIPNAME( 0x40, 0x40, "Manufacturer" )
878 PORT_DIPSETTING( 0x40, "SNK" )
879 PORT_DIPSETTING( 0x00, "Romstar" )
880 PORT_BITX( 0x80, 0x80, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
881 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
882 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
883
884 PORT_START /* A 6 way dip switch */
885 PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
886 PORT_DIPSETTING( 0x00, "A 3C/2C B 8C/1C" )
887 PORT_DIPSETTING( 0x01, "A 2C/3C B 7C/1C" )
888 PORT_DIPSETTING( 0x07, "A 1C/1C B 1C/1C" )
889 PORT_DIPSETTING( 0x06, "A 1C/2C B 2C/1C" )
890 PORT_DIPSETTING( 0x05, "A 1C/3C B 3C/1C" )
891 PORT_DIPSETTING( 0x04, "A 1C/4C B 4C/1C" )
892 PORT_DIPSETTING( 0x03, "A 1C/5C B 5C/1C" )
893 PORT_DIPSETTING( 0x02, "A 1C/6C B 6C/1C" )
894 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
895 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
896 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
897 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
898 PORT_DIPSETTING( 0x30, "3" )
899 PORT_DIPSETTING( 0x20, "4" )
900 PORT_DIPSETTING( 0x10, "5" )
901 PORT_DIPSETTING( 0x00, "6" )
902 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
903 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
904
905 PORT_START /* player 1 12-way rotary control */
906 PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
907
908 PORT_START /* player 2 12-way rotary control */
909 PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
910 INPUT_PORTS_END
911
912
913 INPUT_PORTS_START( skyadvnt )
914 ALPHA68K_PLAYER1_INPUT
915 ALPHA68K_PLAYER2_INPUT
916
917 PORT_START /* Coin input to microcontroller */
918 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
919 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
920
921 PORT_START /* Service + dip */
922 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
923 PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
924
925 /* Dip 2: 6 way dip switch */
926 PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
927 PORT_DIPSETTING( 0x08, "2" )
928 PORT_DIPSETTING( 0x0c, "3" )
929 PORT_DIPSETTING( 0x04, "4" )
930 PORT_DIPSETTING( 0x00, "5" )
931 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
932 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
933 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
934 PORT_DIPNAME( 0x60, 0x60, DEF_STR( Difficulty ) )
935 PORT_DIPSETTING( 0x40, "Easy" )
936 PORT_DIPSETTING( 0x60, "Normal" )
937 PORT_DIPSETTING( 0x20, "Hard" )
938 PORT_DIPSETTING( 0x00, "Hardest" )
939 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
940 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
941 PORT_DIPSETTING( 0x80, DEF_STR( On ) )
942
943 PORT_START /* A 6 way dip switch */
944 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
945 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
946 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
947 PORT_DIPNAME( 0x0e, 0x0e, DEF_STR( Coinage ) )
948 PORT_DIPSETTING( 0x00, "A 3C/2C B 8C/1C" )
949 PORT_DIPSETTING( 0x09, "A 2C/3C B 7C/1C" )
950 PORT_DIPSETTING( 0x0e, "A 1C/1C B 1C/1C" )
951 PORT_DIPSETTING( 0x0c, "A 1C/2C B 2C/1C" )
952 PORT_DIPSETTING( 0x0a, "A 1C/3C B 3C/1C" )
953 PORT_DIPSETTING( 0x08, "A 1C/4C B 4C/1C" )
954 PORT_DIPSETTING( 0x04, "A 1C/5C B 5C/1C" )
955 PORT_DIPSETTING( 0x02, "A 1C/6C B 6C/1C" )
956 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) )
957 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
958 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
959 PORT_DIPNAME( 0x20, 0x20, "Freeze" )
960 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
961 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
962 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
963 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
964 INPUT_PORTS_END
965
966 INPUT_PORTS_START( gangwars )
967 PORT_START /* Player 1 controls */
968 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
969 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
970 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
971 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
972 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
973 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
974 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
975 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
976
977 PORT_START /* Player 2 controls */
978 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
979 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
980 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
981 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
982 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
983 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
984 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
985 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
986
987 PORT_START /* Coin input to microcontroller */
988 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
989 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
990
991 PORT_START /* Service + dip */
992 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
993 PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
994
995 /* Dip 2: 6 way dip switch */
996 PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
997 PORT_DIPSETTING( 0x08, "2" )
998 PORT_DIPSETTING( 0x0c, "3" )
999 PORT_DIPSETTING( 0x04, "4" )
1000 PORT_DIPSETTING( 0x00, "5" )
1001 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1002 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
1003 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1004 PORT_DIPNAME( 0x60, 0x60, DEF_STR( Difficulty ) )
1005 PORT_DIPSETTING( 0x40, "Easy" )
1006 PORT_DIPSETTING( 0x60, "Normal" )
1007 PORT_DIPSETTING( 0x20, "Hard" )
1008 PORT_DIPSETTING( 0x00, "Hardest" )
1009 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
1010 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1011 PORT_DIPSETTING( 0x80, DEF_STR( On ) )
1012
1013 PORT_START /* A 6 way dip switch */
1014 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
1015 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
1016 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1017 PORT_DIPNAME( 0x0e, 0x0e, DEF_STR( Coinage ) )
1018 PORT_DIPSETTING( 0x00, "A 3C/2C B 8C/1C" )
1019 PORT_DIPSETTING( 0x09, "A 2C/3C B 7C/1C" )
1020 PORT_DIPSETTING( 0x0e, "A 1C/1C B 1C/1C" )
1021 PORT_DIPSETTING( 0x0c, "A 1C/2C B 2C/1C" )
1022 PORT_DIPSETTING( 0x0a, "A 1C/3C B 3C/1C" )
1023 PORT_DIPSETTING( 0x08, "A 1C/4C B 4C/1C" )
1024 PORT_DIPSETTING( 0x04, "A 1C/5C B 5C/1C" )
1025 PORT_DIPSETTING( 0x02, "A 1C/6C B 6C/1C" )
1026 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) )
1027 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
1028 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1029 PORT_DIPNAME( 0x20, 0x20, "Freeze" )
1030 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
1031 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1032 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1033 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1034 INPUT_PORTS_END
1035
1036 INPUT_PORTS_START( sbasebal )
1037 PORT_START /* Player 1 controls */
1038 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
1039 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
1040 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
1041 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
1042 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
1043 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
1044 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
1045 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
1046
1047 PORT_START /* Player 2 controls */
1048 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
1049 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
1050 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
1051 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
1052 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
1053 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
1054 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
1055 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
1056
1057 PORT_START /* Coin input to microcontroller */
1058 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1059 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1060
1061 PORT_START /* Service + dip */
1062 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
1063 PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
1064
1065 /* Dip 2: 6 way dip switch */
1066 PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
1067 PORT_DIPSETTING( 0x08, "2" )
1068 PORT_DIPSETTING( 0x0c, "3" )
1069 PORT_DIPSETTING( 0x04, "4" )
1070 PORT_DIPSETTING( 0x00, "5" )
1071 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1072 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
1073 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1074 PORT_DIPNAME( 0x60, 0x60, DEF_STR( Difficulty ) )
1075 PORT_DIPSETTING( 0x40, "Easy" )
1076 PORT_DIPSETTING( 0x60, "Normal" )
1077 PORT_DIPSETTING( 0x20, "Hard" )
1078 PORT_DIPSETTING( 0x00, "Hardest" )
1079 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
1080 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1081 PORT_DIPSETTING( 0x80, DEF_STR( On ) )
1082
1083 /*
1084
1085 PORT_DIPNAME( 0x20, 0x00, "Language" )
1086 PORT_DIPSETTING( 0x00, "English" )
1087 PORT_DIPSETTING( 0x20, "Japanese" )
1088 PORT_DIPNAME( 0x40, 0x40, "Manufacturer" )
1089 PORT_DIPSETTING( 0x40, "SNK" )
1090 PORT_DIPSETTING( 0x00, "Romstar" )
1091 PORT_DIPNAME( 0x80, 0x80, "Invincibility" )
1092 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
1093 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1094 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Flip_Screen ) )
1095 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
1096 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1097 */
1098
1099 PORT_START /* A 6 way dip switch */
1100 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1101 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1102 PORT_DIPNAME( 0x20, 0x20, "Freeze" )
1103 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
1104 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1105 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) )
1106 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
1107 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1108
1109 PORT_DIPNAME( 0x0e, 0x0e, DEF_STR( Coinage ) )
1110 PORT_DIPSETTING( 0x00, "A 3C/2C B 8C/1C" )
1111 PORT_DIPSETTING( 0x09, "A 2C/3C B 7C/1C" )
1112 PORT_DIPSETTING( 0x0e, "A 1C/1C B 1C/1C" )
1113 PORT_DIPSETTING( 0x0c, "A 1C/2C B 2C/1C" )
1114 PORT_DIPSETTING( 0x0a, "A 1C/3C B 3C/1C" )
1115 PORT_DIPSETTING( 0x08, "A 1C/4C B 4C/1C" )
1116 PORT_DIPSETTING( 0x04, "A 1C/5C B 5C/1C" )
1117 PORT_DIPSETTING( 0x02, "A 1C/6C B 6C/1C" )
1118
1119 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
1120 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
1121 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1122 INPUT_PORTS_END
1123
1124 /******************************************************************************/
1125
1126 static struct GfxLayout charlayout =
1127 {
1128 8,8, /* 8*8 chars */
1129 2048,
1130 4, /* 4 bits per pixel */
1131 { 0, 4, 0x8000*8, (0x8000*8)+4 },
1132 { 8*8+3, 8*8+2, 8*8+1, 8*8+0, 3, 2, 1, 0 },
1133 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1134 16*8 /* every char takes 8 consecutive bytes */
1135 };
1136
1137 /* You wouldn't believe how long it took me to figure this one out.. */
1138 static struct GfxLayout charlayout_V =
1139 {
1140 8,8,
1141 2048,
1142 4, /* 4 bits per pixel */
1143 { 0,1,2,3 },
1144 { 16*8+4, 16*8+0, 24*8+4, 24*8+0, 4, 0, 8*8+4, 8*8+0 },
1145 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1146 32*8 /* every sprite takes 16 consecutive bytes */
1147 };
1148
1149 static struct GfxLayout spritelayout =
1150 {
1151 16,16, /* 16*16 sprites */
1152 4096*4,
1153 4, /* 4 bits per pixel */
1154 { 0, 0x80000*8, 0x100000*8, 0x180000*8 },
1155 { 16*8+7, 16*8+6, 16*8+5, 16*8+4, 16*8+3, 16*8+2, 16*8+1, 16*8+0,
1156 7, 6, 5, 4, 3, 2, 1, 0 },
1157 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
1158 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
1159 8*32 /* every sprite takes 32 consecutive bytes */
1160 };
1161
1162 static struct GfxLayout spritelayout_V =
1163 {
1164 16,16, /* 16*16 sprites */
1165 0x5000,
1166 4, /* 4 bits per pixel */
1167 { 0, 0xa0000*8, 0x140000*8, 0x1e0000*8 },
1168 { 16*8+7, 16*8+6, 16*8+5, 16*8+4, 16*8+3, 16*8+2, 16*8+1, 16*8+0,
1169 7, 6, 5, 4, 3, 2, 1, 0 },
1170 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
1171 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
1172 8*32 /* every sprite takes 32 consecutive bytes */
1173 };
1174
1175 static struct GfxLayout paddle_layout =
1176 {
1177 8,8, /* 8*8 chars */
1178 0x4000,
1179 4, /* 4 bits per pixel */
1180 {
1181 //0x40000*8+4, 0x40000*8+0,4, 0,
1182 //0x40000*8+4, 4,0x40000*8+0, 0,
1183 // 4,0x40000*8+4,0, 0x40000*8+0,
1184 4,0,0x40000*8+4, 0x40000*8+0,
1185 //0x40000*8+0,0x40000*8+4, 0,4,
1186
1187 },
1188 { 8*8+3, 8*8+2, 8*8+1, 8*8+0, 3, 2, 1, 0 },
1189 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1190 16*8 /* every char takes 16 consecutive bytes */
1191 };
1192
1193 static struct GfxLayout sting_layout1 =
1194 {
1195 8,8, /* 8*8 chars */
1196 2048,
1197 3, /* 3 bits per pixel */
1198 { 4, 4+(0x8000*8), 0+(0x10000*4) },
1199 { 8*8+3, 8*8+2, 8*8+1, 8*8+0, 3, 2, 1, 0 },
1200 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1201 16*8 /* every char takes 16 consecutive bytes */
1202 };
1203
1204 static struct GfxLayout sting_layout2 =
1205 {
1206 8,8, /* 8*8 chars */
1207 2048,
1208 3, /* 3 bits per pixel */
1209 { 0, 0+(0x28000*8), 4+(0x28000*8) },
1210 { 8*8+3, 8*8+2, 8*8+1, 8*8+0, 3, 2, 1, 0 },
1211 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1212 16*8 /* every char takes 16 consecutive bytes */
1213 };
1214
1215 static struct GfxLayout sting_layout3 =
1216 {
1217 8,8, /* 8*8 chars */
1218 2048,
1219 3, /* 3 bits per pixel */
1220 { 0, 0+(0x10000*8), 4+(0x10000*8) },
1221 { 8*8+3, 8*8+2, 8*8+1, 8*8+0, 3, 2, 1, 0 },
1222 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1223 16*8 /* every char takes 16 consecutive bytes */
1224 };
1225
1226 static struct GfxLayout kyros_char_layout1 =
1227 {
1228 8,8, /* 8*8 chars */
1229 0x8000/16,
1230 3, /* 3 bits per pixel */
1231 { 4,0x8000*8,0x8000*8+4 },
1232 { 8*8+3, 8*8+2, 8*8+1, 8*8+0, 3, 2, 1, 0 },
1233 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1234 16*8 /* every char takes 16 consecutive bytes */
1235 };
1236
1237 static struct GfxLayout kyros_char_layout2 =
1238 {
1239 8,8, /* 8*8 chars */
1240 0x8000/16,
1241 3, /* 3 bits per pixel */
1242 { 0,0x10000*8,0x10000*8+4 },
1243 { 8*8+3, 8*8+2, 8*8+1, 8*8+0, 3, 2, 1, 0 },
1244 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1245 16*8 /* every char takes 16 consecutive bytes */
1246 };
1247
1248 static struct GfxLayout kouyakyu_layout0 =
1249 {
1250 8,8,
1251 256,
1252 2, /* 2 bits per pixel */
1253 { 0, 4 },
1254 { 8*8+3, 8*8+2, 8*8+1, 8*8, 3, 2, 1, 0 },
1255 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1256 16*8 /* every sprite takes 16 consecutive bytes */
1257 };
1258
1259 static struct GfxLayout kouyakyu_layout1 =
1260 {
1261 16,16,
1262 1024,
1263 2,
1264 { 0, 4, 0x10000*8 },
1265 { 16*8+3, 16*8+2, 16*8+1, 16*8+0, 32*8+3, 32*8+2 ,32*8+1 ,32*8+0,
1266 48*8+3 ,48*8+2 ,48*8+1 ,48*8+0, 3, 2, 1, 0
1267 },
1268 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
1269 64*8
1270 };
1271
1272 static struct GfxLayout kouyakyu_layout2 =
1273 {
1274 16,16,
1275 1024,
1276 2,
1277 { 0, 4, 0x10000*8+4 },
1278 { 16*8+3, 16*8+2, 16*8+1, 16*8+0, 32*8+3, 32*8+2 ,32*8+1 ,32*8+0,
1279 48*8+3 ,48*8+2 ,48*8+1 ,48*8+0, 3, 2, 1, 0
1280 },
1281 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
1282 64*8
1283 };
1284
1285 /******************************************************************************/
1286
1287 static struct GfxDecodeInfo alpha68k_II_gfxdecodeinfo[] =
1288 {
1289 { REGION_GFX1, 0, &charlayout, 0, 16 },
1290 { REGION_GFX2, 0, &spritelayout, 0, 128 },
1291 { -1 } /* end of array */
1292 };
1293
1294 static struct GfxDecodeInfo alpha68k_V_gfxdecodeinfo[] =
1295 {
1296 { REGION_GFX1, 0, &charlayout_V, 0, 16 },
1297 { REGION_GFX2, 0, &spritelayout_V, 0, 256 },
1298 { -1 } /* end of array */
1299 };
1300
1301 static struct GfxDecodeInfo paddle_gfxdecodeinfo[] =
1302 {
1303 { REGION_GFX1, 0, &paddle_layout, 0, 128 },
1304 { -1 } /* end of array */
1305 };
1306
1307 static struct GfxDecodeInfo sstingry_gfxdecodeinfo[] =
1308 {
1309 { REGION_GFX1, 0x00000, &sting_layout1, 0, 256 },
1310 { REGION_GFX1, 0x00000, &sting_layout2, 0, 256 },
1311 { REGION_GFX1, 0x10000, &sting_layout1, 0, 256 },
1312 { REGION_GFX1, 0x10000, &sting_layout3, 0, 256 },
1313 { -1 } /* end of array */
1314 };
1315
1316 static struct GfxDecodeInfo kyros_gfxdecodeinfo[] =
1317 {
1318 { REGION_GFX1, 0x00000, &kyros_char_layout1, 0, 32 },
1319 { REGION_GFX1, 0x00000, &kyros_char_layout2, 0, 32 },
1320 { REGION_GFX1, 0x18000, &kyros_char_layout1, 0, 32 },
1321 { REGION_GFX1, 0x18000, &kyros_char_layout2, 0, 32 },
1322 { REGION_GFX1, 0x30000, &kyros_char_layout1, 0, 32 },
1323 { REGION_GFX1, 0x30000, &kyros_char_layout2, 0, 32 },
1324 { REGION_GFX1, 0x48000, &kyros_char_layout1, 0, 32 },
1325 { REGION_GFX1, 0x48000, &kyros_char_layout2, 0, 32 },
1326 { -1 } /* end of array */
1327 };
1328
1329 static struct GfxDecodeInfo kouyakyu_gfxdecodeinfo[] =
1330 {
1331 { REGION_GFX1, 0x000000, &kouyakyu_layout0, 0, 256 },
1332 { REGION_GFX2, 0x000000, &kouyakyu_layout1, 0, 256 },
1333 { REGION_GFX2, 0x000000, &kouyakyu_layout2, 0, 256 },
1334 { -1 } /* end of array */
1335 };
1336
1337 /******************************************************************************/
1338
1339 static struct YM2413interface ym2413_interface=
1340 {
1341 1,
1342 8000000, /* ??? */
1343 { 50 },
1344 };
1345
1346 static struct YM2203interface ym2203_interface =
1347 {
1348 1,
1349 3000000, /* ??? */
1350 { YM2203_VOL(65,65) },
1351 { 0 },
1352 { 0 },
1353 { 0 },
1354 { 0 },
1355 { 0 }
1356 };
1357
1358 static struct AY8910interface ay8910_interface =
1359 {
1360 2, /* 2 chips */
1361 1500000,
1362 { 60, 60 },
1363 { 0 },
1364 { 0 },
1365 { 0 },
1366 { 0 }
1367 };
1368
1369 static struct DACinterface dac_interface =
1370 {
1371 1,
1372 { 100 }
1373 };
1374
kyros_interrupt(void)1375 static int kyros_interrupt(void)
1376 {
1377 if (cpu_getiloops() == 0)
1378 return 1;
1379 return 2;
1380 }
1381
1382 /******************************************************************************/
1383
1384
1385 static struct MachineDriver machine_driver_kouyakyu =
1386 {
1387 {
1388 {
1389 CPU_M68000,
1390 6000000, /* 12MHz/2? */
1391 kouyakyu_readmem,kouyakyu_writemem,0,0,
1392 kyros_interrupt,2
1393 },
1394 #if 0
1395 {
1396 CPU_Z80 | CPU_AUDIO_CPU,
1397 3579545, /* ? */
1398 sound_readmem,sound_writemem,sound_readport,sound_writeport,
1399 interrupt,1
1400 }
1401 #endif
1402 },
1403 60, DEFAULT_60HZ_VBLANK_DURATION,
1404 1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
1405 0,
1406
1407 /* video hardware */
1408 32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
1409 // 64*8, 64*8, { 0*8, 64*8-1, 2*8, 64*8-1 },
1410
1411 kouyakyu_gfxdecodeinfo,
1412 256, 256,
1413 0,
1414
1415 VIDEO_TYPE_RASTER,
1416 0,
1417 kouyakyu_vh_start,
1418 0,
1419 kouyakyu_vh_screenrefresh,
1420
1421 /* sound hardware */
1422 0,0,0,0,
1423 {
1424 {
1425 SOUND_YM2203,
1426 &ym2203_interface
1427 }
1428 }
1429 };
1430
1431 static struct MachineDriver machine_driver_kyros =
1432 {
1433 /* basic machine hardware */
1434 {
1435 {
1436 CPU_M68000,
1437 6000000, /* 24MHz/4? */
1438 kyros_readmem,kyros_writemem,0,0,
1439 kyros_interrupt,2
1440 },
1441 {
1442 CPU_Z80 | CPU_AUDIO_CPU,
1443 3579545, /* ? */
1444 kyros_sound_readmem,kyros_sound_writemem,0,kyros_sound_writeport,
1445 nmi_interrupt,8
1446 }
1447 },
1448 60, DEFAULT_60HZ_VBLANK_DURATION,
1449 1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
1450 0,
1451
1452 /* video hardware */
1453 32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
1454
1455 kyros_gfxdecodeinfo,
1456 256, 256,
1457 kyros_vh_convert_color_prom,
1458
1459 VIDEO_TYPE_RASTER,
1460 0,
1461 0,
1462 0,
1463 kyros_vh_screenrefresh,
1464
1465 /* sound hardware */
1466 0,0,0,0,
1467 {
1468 {
1469 SOUND_YM2203,
1470 &ym2203_interface
1471 },
1472 {
1473 SOUND_AY8910,
1474 &ay8910_interface
1475 }
1476 }
1477 };
1478
1479 static struct MachineDriver machine_driver_sstingry =
1480 {
1481 /* basic machine hardware */
1482 {
1483 {
1484 CPU_M68000,
1485 6000000, /* 24MHz/4? */
1486 kyros_readmem,kyros_writemem,0,0,
1487 kyros_interrupt,2
1488 },
1489 {
1490 CPU_Z80 | CPU_AUDIO_CPU,
1491 3579545, /* ? */
1492 sstingry_sound_readmem,sstingry_sound_writemem,0,kyros_sound_writeport,
1493 nmi_interrupt,32
1494 }
1495 },
1496 60, DEFAULT_60HZ_VBLANK_DURATION,
1497 1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
1498 0,
1499
1500 /* video hardware */
1501 32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
1502
1503 sstingry_gfxdecodeinfo,
1504 256, 256,
1505 alpha68k_I_vh_convert_color_prom,
1506
1507 VIDEO_TYPE_RASTER,
1508 0,
1509 0,
1510 0,
1511 sstingry_vh_screenrefresh,
1512
1513 /* sound hardware */
1514 0,0,0,0,
1515 {
1516 {
1517 SOUND_YM2203,
1518 &ym2203_interface
1519 },
1520 {
1521 SOUND_AY8910,
1522 &ay8910_interface
1523 }
1524 }
1525 };
1526
1527 static struct MachineDriver machine_driver_alpha68k_I =
1528 {
1529 /* basic machine hardware */
1530 {
1531 {
1532 CPU_M68000,
1533 6000000, /* 24MHz/4? */
1534 alpha68k_I_readmem,alpha68k_I_writemem,0,0,
1535 m68_level1_irq,1 /* VBL */
1536 },
1537 {
1538 CPU_Z80 | CPU_AUDIO_CPU,
1539 3579545, /* ? */
1540 sound_readmem,sound_writemem,sound_readport,sound_writeport,
1541 interrupt,1
1542 }
1543 },
1544 60, DEFAULT_60HZ_VBLANK_DURATION,
1545 1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
1546 0,
1547
1548 /* video hardware */
1549 32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
1550
1551 paddle_gfxdecodeinfo,
1552 256, 256,
1553 alpha68k_I_vh_convert_color_prom,
1554
1555 VIDEO_TYPE_RASTER,
1556 0,
1557 0,
1558 0,
1559 alpha68k_I_vh_screenrefresh,
1560
1561 /* sound hardware */
1562 0,0,0,0,
1563 {
1564 {
1565 SOUND_YM2203,
1566 &ym2203_interface
1567 }
1568 }
1569 };
1570
1571 static struct MachineDriver machine_driver_alpha68k_II =
1572 {
1573 /* basic machine hardware */
1574 {
1575 {
1576 CPU_M68000,
1577 8000000, /* Correct */
1578 alpha68k_II_readmem,alpha68k_II_writemem,0,0,
1579 m68_level3_irq,1 /* VBL */
1580 },
1581 {
1582 CPU_Z80 | CPU_AUDIO_CPU,
1583 //3579545, /* Correct?? */
1584 3579545*2, /* Unlikely but needed to stop nested NMI's */
1585 sound_readmem,sound_writemem,sound_readport,sound_writeport,
1586 nmi_interrupt,116
1587 }
1588 },
1589 60, DEFAULT_60HZ_VBLANK_DURATION,
1590 1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
1591 0,
1592
1593 /* video hardware */
1594 32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
1595
1596 alpha68k_II_gfxdecodeinfo,
1597 2048, 2048,
1598 0,
1599
1600 VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
1601 0,
1602 alpha68k_vh_start,
1603 0,
1604 alpha68k_II_vh_screenrefresh,
1605
1606 /* sound hardware */
1607 0,0,0,0,
1608 {
1609 {
1610 SOUND_YM2203,
1611 &ym2203_interface
1612 },
1613 {
1614 SOUND_YM2413,
1615 &ym2413_interface
1616 },
1617 {
1618 SOUND_DAC,
1619 &dac_interface
1620 }
1621 }
1622 };
1623
1624 static struct MachineDriver machine_driver_alpha68k_V =
1625 {
1626 /* basic machine hardware */
1627 {
1628 {
1629 CPU_M68000,
1630 10000000, /* ? */
1631 alpha68k_V_readmem,alpha68k_V_writemem,0,0,
1632 m68_level3_irq,1 /* VBL */
1633 },
1634 {
1635 CPU_Z80 | CPU_AUDIO_CPU,
1636 // 3579545,
1637 3579545*2, /* Unlikely but needed to stop nested NMI's */
1638 sound_readmem,sound_writemem,sound_readport,sound_writeport,
1639 nmi_interrupt,148
1640 }
1641 },
1642 60, DEFAULT_60HZ_VBLANK_DURATION,
1643 1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
1644 0,
1645
1646 /* video hardware */
1647 32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
1648
1649 alpha68k_V_gfxdecodeinfo,
1650 4096, 4096,
1651 0,
1652
1653 VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
1654 0,
1655 alpha68k_vh_start,
1656 0,
1657 alpha68k_V_vh_screenrefresh,
1658
1659 /* sound hardware */
1660 0,0,0,0,
1661 {
1662 {
1663 SOUND_YM2203,
1664 &ym2203_interface
1665 },
1666 {
1667 SOUND_YM2413,
1668 &ym2413_interface
1669 },
1670 {
1671 SOUND_DAC,
1672 &dac_interface
1673 }
1674 }
1675 };
1676
1677 static struct MachineDriver machine_driver_alpha68k_V_sb =
1678 {
1679 /* basic machine hardware */
1680 {
1681 {
1682 CPU_M68000,
1683 10000000, /* ? */
1684 alpha68k_V_readmem,alpha68k_V_writemem,0,0,
1685 m68_level3_irq,1 /* VBL */
1686 },
1687 {
1688 CPU_Z80 | CPU_AUDIO_CPU,
1689 // 3579545,
1690 3579545*2, /* Unlikely but needed to stop nested NMI's */
1691 sound_readmem,sound_writemem,sound_readport,sound_writeport,
1692 nmi_interrupt,112
1693 }
1694 },
1695 60, DEFAULT_60HZ_VBLANK_DURATION,
1696 1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
1697 0,
1698
1699 /* video hardware */
1700 32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
1701
1702 alpha68k_V_gfxdecodeinfo,
1703 4096, 4096,
1704 0,
1705
1706 VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
1707 0,
1708 alpha68k_vh_start,
1709 0,
1710 alpha68k_V_sb_vh_screenrefresh,
1711
1712 /* sound hardware */
1713 0,0,0,0,
1714 {
1715 {
1716 SOUND_YM2203,
1717 &ym2203_interface
1718 },
1719 {
1720 SOUND_YM2413,
1721 &ym2413_interface
1722 },
1723 {
1724 SOUND_DAC,
1725 &dac_interface
1726 }
1727 }
1728 };
1729
1730 /******************************************************************************/
1731
1732 ROM_START( kouyakyu )
1733 ROM_REGION( 0x10000, REGION_CPU1 ) /* 68000 code */
1734 ROM_LOAD_ODD ( "epr-6704.bin", 0x00000, 0x2000, 0xc7ac2292 )
1735 ROM_LOAD_EVEN( "epr-6707.bin", 0x00000, 0x2000, 0x9cb2962e )
1736 ROM_LOAD_ODD ( "epr-6705.bin", 0x04000, 0x2000, 0x985327cb )
1737 ROM_LOAD_EVEN( "epr-6708.bin", 0x04000, 0x2000, 0xf8863dc5 )
1738 ROM_LOAD_ODD ( "epr-6706.bin", 0x08000, 0x2000, 0x053a74f6 )
1739 ROM_LOAD_EVEN( "epr-6709.bin", 0x08000, 0x2000, 0xf41cb58c )
1740
1741 ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1742 ROM_LOAD( "epr-6710.bin", 0x000000, 0x1000, 0xaccda190 ) /* Chars */
1743
1744 ROM_REGION( 0x20000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1745 ROM_LOAD( "epr-6686.bin", 0x000000, 0x2000, 0x3d9e516f ) /* Tiles plane 1 & 2 */
1746 ROM_LOAD( "epr-6687.bin", 0x002000, 0x2000, 0x9c1f49df )
1747 ROM_LOAD( "epr-6688.bin", 0x004000, 0x2000, 0xceb76c5b )
1748 ROM_LOAD( "epr-6689.bin", 0x006000, 0x2000, 0x53bf7587 )
1749 ROM_LOAD( "epr-6690.bin", 0x008000, 0x2000, 0xa142a11d )
1750 ROM_LOAD( "epr-6691.bin", 0x00a000, 0x2000, 0xb640568c )
1751 ROM_LOAD( "epr-6692.bin", 0x00c000, 0x2000, 0xb91d8172 )
1752 ROM_LOAD( "epr-6693.bin", 0x00e000, 0x2000, 0x874e3acc )
1753
1754 ROM_LOAD( "epr-6694.bin", 0x010000, 0x2000, 0x51a7345e ) /* Tiles plane 3 */
1755 ROM_LOAD( "epr-6695.bin", 0x012000, 0x2000, 0x22bea465 )
1756 ROM_LOAD( "epr-6696.bin", 0x014000, 0x2000, 0x0625f48e )
1757 ROM_LOAD( "epr-6697.bin", 0x016000, 0x2000, 0xf18afabe )
1758
1759 ROM_REGION( 0x10000, REGION_CPU2 ) /* sound cpu */
1760 ROM_LOAD( "epr-6698.bin", 0x000000, 0x2000, 0x7adfd1ff )
1761 ROM_LOAD( "epr-6699.bin", 0x002000, 0x2000, 0x9bfa4a72 )
1762 ROM_LOAD( "epr-6700.bin", 0x004000, 0x2000, 0xee579266 )
1763 ROM_LOAD( "epr-6701.bin", 0x006000, 0x2000, 0x3c83588a )
1764 ROM_LOAD( "epr-6702.bin", 0x008000, 0x2000, 0x27ddf031 )
1765 ROM_LOAD( "epr-6703.bin", 0x00a000, 0x2000, 0xfbff3a86 )
1766
1767 ROM_REGION( 0x0420, REGION_PROMS )
1768 ROM_LOAD( "pr6627.bpr", 0x000000, 0x100, 0x5ec5480d )
1769 ROM_LOAD( "pr6628.bpr", 0x000100, 0x100, 0x8af247a4 )
1770 ROM_LOAD( "pr6629.bpr", 0x000200, 0x100, 0x29c7a393 )
1771 ROM_LOAD( "pr6630a.bpr", 0x000300, 0x100, 0xd6e202da ) /* Same as pr6630b,c,d */
1772 ROM_LOAD( "pr.bpr", 0x000400, 0x020, 0x33b98466 )
1773 ROM_END
1774
ROM_START(sstingry)1775 ROM_START( sstingry )
1776 ROM_REGION( 0x10000, REGION_CPU1 ) /* 68000 code */
1777 ROM_LOAD_EVEN( "ss_05.rom", 0x0000, 0x4000, 0xbfb28d53 )
1778 ROM_LOAD_ODD ( "ss_07.rom", 0x0000, 0x4000, 0xeb1b65c5 )
1779 ROM_LOAD_EVEN( "ss_04.rom", 0x8000, 0x4000, 0x2e477a79 )
1780 ROM_LOAD_ODD ( "ss_06.rom", 0x8000, 0x4000, 0x597620cb )
1781
1782 ROM_REGION( 0x10000, REGION_CPU2 ) /* sound cpu */
1783 ROM_LOAD( "ss_01.rom", 0x0000, 0x4000, 0xfef09a92 )
1784 ROM_LOAD( "ss_02.rom", 0x4000, 0x4000, 0xab4e8c01 )
1785
1786 ROM_REGION( 0x60000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1787 ROM_LOAD( "ss_12.rom", 0x00000, 0x4000, 0x74caa9e9 )
1788 ROM_LOAD( "ss_08.rom", 0x08000, 0x4000, 0x32368925 )
1789 ROM_LOAD( "ss_13.rom", 0x10000, 0x4000, 0x13da6203 )
1790 ROM_LOAD( "ss_10.rom", 0x18000, 0x4000, 0x2903234a )
1791 ROM_LOAD( "ss_11.rom", 0x20000, 0x4000, 0xd134302e )
1792 ROM_LOAD( "ss_09.rom", 0x28000, 0x4000, 0x6f9d938a )
1793
1794 ROM_REGION( 0x0300, REGION_PROMS )
1795 ROM_LOAD( "ic92", 0x0000, 0x0100, 0xe7ce1179 )
1796 ROM_LOAD( "ic91", 0x0100, 0x0100, 0xc3965079 )
1797 ROM_LOAD( "ic93", 0x0200, 0x0100, 0x9af8a375 )
1798 ROM_END
1799
1800 ROM_START( kyros )
1801 ROM_REGION( 0x20000, REGION_CPU1 )
1802 ROM_LOAD_EVEN( "2.10c", 0x00000, 0x4000, 0x4bd030b1 )
1803 ROM_CONTINUE ( 0x10000, 0x4000 | ROMFLAG_ALTERNATE )
1804 ROM_LOAD_ODD ( "1.13c", 0x00000, 0x4000, 0x75cfbc5e )
1805 ROM_CONTINUE ( 0x10001, 0x4000 | ROMFLAG_ALTERNATE )
1806 ROM_LOAD_EVEN( "4.10b", 0x08000, 0x4000, 0xbe2626c2 )
1807 ROM_CONTINUE ( 0x18000, 0x4000 | ROMFLAG_ALTERNATE )
1808 ROM_LOAD_ODD ( "3.13b", 0x08001, 0x4000, 0xfb25e71a )
1809 ROM_CONTINUE ( 0x18001, 0x4000 | ROMFLAG_ALTERNATE )
1810
1811 ROM_REGION( 0x20000, REGION_CPU2 ) /* Sound CPU */
1812 ROM_LOAD( "2s.1f", 0x00000, 0x4000, 0x800ceb27 )
1813 ROM_LOAD( "1s.1d", 0x10000, 0x8000, 0x87d3e719 ) /* todo */
1814 ROM_LOAD( "0.1t", 0x18000, 0x2000, 0x5d0acb4c ) /* todo */
1815
1816 ROM_REGION( 0x60000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1817 ROM_LOAD( "8.9pr", 0x00000, 0x8000, 0xc5290944 )
1818 ROM_LOAD( "11.11m", 0x08000, 0x8000, 0xfbd44f1e )
1819 ROM_LOAD( "12.11n", 0x10000, 0x8000, 0x10fed501 )
1820 ROM_LOAD( "9.9s", 0x18000, 0x8000, 0xdd40ca33 )
1821 ROM_LOAD( "13.11p", 0x20000, 0x8000, 0xe6a02030 )
1822 ROM_LOAD( "14.11r", 0x28000, 0x8000, 0x722ad23a )
1823 ROM_LOAD( "15.3t", 0x30000, 0x8000, 0x045fdda4 )
1824 ROM_LOAD( "17.7t", 0x38000, 0x8000, 0x7618ec00 )
1825 ROM_LOAD( "18.9t", 0x40000, 0x8000, 0x0ee74171 )
1826 ROM_LOAD( "16.5t", 0x48000, 0x8000, 0x2cf14824 )
1827 ROM_LOAD( "19.11t", 0x50000, 0x8000, 0x4f336306 )
1828 ROM_LOAD( "20.13t", 0x58000, 0x8000, 0xa165d06b )
1829
1830 ROM_REGION( 0x0500, REGION_PROMS )
1831 ROM_LOAD( "mb7114l.5r", 0x000, 0x100, 0x3628bf36 )
1832 ROM_LOAD( "mb7114l.4r", 0x100, 0x100, 0x850704e4 )
1833 ROM_LOAD( "mb7114l.6r", 0x200, 0x100, 0xa54f60d7 )
1834 ROM_LOAD( "mb7114l.5p", 0x300, 0x100, 0x1cc53765 )
1835 ROM_LOAD( "mb7114l.6p", 0x400, 0x100, 0xb0d6971f )
1836 ROM_END
1837
1838 ROM_START( paddlema )
1839 ROM_REGION( 0x40000, REGION_CPU1 )
1840 ROM_LOAD_EVEN( "padlem.6g", 0x00000, 0x10000, 0xc227a6e8 )
1841 ROM_LOAD_ODD ( "padlem.3g", 0x00000, 0x10000, 0xf11a21aa )
1842 ROM_LOAD_EVEN( "padlem.6h", 0x20000, 0x10000, 0x8897555f )
1843 ROM_LOAD_ODD ( "padlem.3h", 0x20000, 0x10000, 0xf0fe9b9d )
1844
1845 ROM_REGION( 0x10000, REGION_CPU2 ) /* Sound CPU */
1846 ROM_LOAD( "padlem.18c", 0x000000, 0x10000, 0x9269778d )
1847
1848 ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1849 ROM_LOAD( "padlem.16m", 0x00000, 0x10000, 0x0984fb4d )
1850 ROM_LOAD( "padlem.16n", 0x10000, 0x10000, 0x4249e047 )
1851 ROM_LOAD( "padlem.13m", 0x20000, 0x10000, 0xfd9dbc27 )
1852 ROM_LOAD( "padlem.13n", 0x30000, 0x10000, 0x1d460486 )
1853 ROM_LOAD( "padlem.9m", 0x40000, 0x10000, 0x4ee4970d )
1854 ROM_LOAD( "padlem.9n", 0x50000, 0x10000, 0xa1756f15 )
1855 ROM_LOAD( "padlem.6m", 0x60000, 0x10000, 0x3f47910c )
1856 ROM_LOAD( "padlem.6n", 0x70000, 0x10000, 0xfe337655 )
1857
1858 ROM_REGION( 0x8000, REGION_SOUND1 ) /* ADPCM samples? */
1859 ROM_LOAD( "padlem.18n", 0x0000, 0x8000, 0x06506200 )
1860
1861 ROM_REGION( 0x0300, REGION_PROMS )
1862 ROM_LOAD( "padlem.a", 0x0000, 0x0100, 0xcae6bcd6 )
1863 ROM_LOAD( "padlem.b", 0x0100, 0x0100, 0xb6df8dcb )
1864 ROM_LOAD( "padlem.c", 0x0200, 0x0100, 0x39ca9b86 )
1865 ROM_END
1866
1867 ROM_START( timesold )
1868 ROM_REGION( 0x40000, REGION_CPU1 )
1869 ROM_LOAD_EVEN( "bf.3", 0x00000, 0x10000, 0xa491e533 )
1870 ROM_LOAD_ODD ( "bf.4", 0x00000, 0x10000, 0x34ebaccc )
1871 ROM_LOAD_EVEN( "bf.1", 0x20000, 0x10000, 0x158f4cb3 )
1872 ROM_LOAD_ODD ( "bf.2", 0x20000, 0x10000, 0xaf01a718 )
1873
1874 ROM_REGION( 0x80000, REGION_CPU2 ) /* Sound CPU */
1875 ROM_LOAD( "bf.7", 0x00000, 0x08000, 0xf8b293b5 )
1876 ROM_CONTINUE( 0x18000, 0x08000 )
1877 ROM_LOAD( "bf.8", 0x30000, 0x10000, 0x8a43497b )
1878 ROM_LOAD( "bf.9", 0x50000, 0x10000, 0x1408416f )
1879
1880 ROM_REGION( 0x010000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
1881 ROM_LOAD( "bf.5", 0x00000, 0x08000, 0x3cec2f55 )
1882 ROM_LOAD( "bf.6", 0x08000, 0x08000, 0x086a364d )
1883
1884 ROM_REGION( 0x200000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* sprites */
1885 ROM_LOAD( "bf.10", 0x000000, 0x20000, 0x613313ba )
1886 ROM_LOAD( "bf.14", 0x020000, 0x20000, 0xefda5c45 )
1887 ROM_LOAD( "bf.18", 0x040000, 0x20000, 0xe886146a )
1888 ROM_LOAD( "bf.11", 0x080000, 0x20000, 0x92b42eba )
1889 ROM_LOAD( "bf.15", 0x0a0000, 0x20000, 0xba3b9f5a )
1890 ROM_LOAD( "bf.19", 0x0c0000, 0x20000, 0x8994bf10 )
1891 ROM_LOAD( "bf.12", 0x100000, 0x20000, 0x7ca8bb32 )
1892 ROM_LOAD( "bf.16", 0x120000, 0x20000, 0x2aa74125 )
1893 ROM_LOAD( "bf.20", 0x140000, 0x20000, 0xbab6a7c5 )
1894 ROM_LOAD( "bf.13", 0x180000, 0x20000, 0x56a3a26a )
1895 ROM_LOAD( "bf.17", 0x1a0000, 0x20000, 0x6b37d048 )
1896 ROM_LOAD( "bf.21", 0x1c0000, 0x20000, 0xbc3b3944 )
1897 ROM_END
1898
1899 ROM_START( timesol1 )
1900 ROM_REGION( 0x40000, REGION_CPU1 )
1901 ROM_LOAD_EVEN( "3", 0x00000, 0x10000, 0xbc069a29 )
1902 ROM_LOAD_ODD ( "4", 0x00000, 0x10000, 0xac7dca56 )
1903 ROM_LOAD_EVEN( "bf.1", 0x20000, 0x10000, 0x158f4cb3 )
1904 ROM_LOAD_ODD ( "bf.2", 0x20000, 0x10000, 0xaf01a718 )
1905
1906 ROM_REGION( 0x80000, REGION_CPU2 ) /* Sound CPU */
1907 ROM_LOAD( "bf.7", 0x00000, 0x08000, 0xf8b293b5 )
1908 ROM_CONTINUE( 0x18000, 0x08000 )
1909 ROM_LOAD( "bf.8", 0x30000, 0x10000, 0x8a43497b )
1910 ROM_LOAD( "bf.9", 0x50000, 0x10000, 0x1408416f )
1911
1912 ROM_REGION( 0x010000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
1913 ROM_LOAD( "bf.5", 0x00000, 0x08000, 0x3cec2f55 )
1914 ROM_LOAD( "bf.6", 0x08000, 0x08000, 0x086a364d )
1915
1916 ROM_REGION( 0x200000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* sprites */
1917 ROM_LOAD( "bf.10", 0x000000, 0x20000, 0x613313ba )
1918 ROM_LOAD( "bf.14", 0x020000, 0x20000, 0xefda5c45 )
1919 ROM_LOAD( "bf.18", 0x040000, 0x20000, 0xe886146a )
1920 ROM_LOAD( "bf.11", 0x080000, 0x20000, 0x92b42eba )
1921 ROM_LOAD( "bf.15", 0x0a0000, 0x20000, 0xba3b9f5a )
1922 ROM_LOAD( "bf.19", 0x0c0000, 0x20000, 0x8994bf10 )
1923 ROM_LOAD( "bf.12", 0x100000, 0x20000, 0x7ca8bb32 )
1924 ROM_LOAD( "bf.16", 0x120000, 0x20000, 0x2aa74125 )
1925 ROM_LOAD( "bf.20", 0x140000, 0x20000, 0xbab6a7c5 )
1926 ROM_LOAD( "bf.13", 0x180000, 0x20000, 0x56a3a26a )
1927 ROM_LOAD( "bf.17", 0x1a0000, 0x20000, 0x6b37d048 )
1928 ROM_LOAD( "bf.21", 0x1c0000, 0x20000, 0xbc3b3944 )
1929 ROM_END
1930
1931 ROM_START( btlfield )
1932 ROM_REGION( 0x40000, REGION_CPU1 )
1933 ROM_LOAD_EVEN( "bfv1_03.bin", 0x00000, 0x10000, 0x8720af0d )
1934 ROM_LOAD_ODD ( "bfv1_04.bin", 0x00000, 0x10000, 0x7dcccbe6 )
1935 ROM_LOAD_EVEN( "bf.1", 0x20000, 0x10000, 0x158f4cb3 )
1936 ROM_LOAD_ODD ( "bf.2", 0x20000, 0x10000, 0xaf01a718 )
1937
1938 ROM_REGION( 0x80000, REGION_CPU2 ) /* Sound CPU */
1939 ROM_LOAD( "bf.7", 0x00000, 0x08000, 0xf8b293b5 )
1940 ROM_CONTINUE( 0x18000, 0x08000 )
1941 ROM_LOAD( "bf.8", 0x30000, 0x10000, 0x8a43497b )
1942 ROM_LOAD( "bf.9", 0x50000, 0x10000, 0x1408416f )
1943
1944 ROM_REGION( 0x010000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
1945 ROM_LOAD( "bfv1_05.bin", 0x00000, 0x08000, 0xbe269dbf )
1946 ROM_LOAD( "bfv1_06.bin", 0x08000, 0x08000, 0x022b9de9 )
1947
1948 ROM_REGION( 0x200000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* sprites */
1949 ROM_LOAD( "bf.10", 0x000000, 0x20000, 0x613313ba )
1950 ROM_LOAD( "bf.14", 0x020000, 0x20000, 0xefda5c45 )
1951 ROM_LOAD( "bf.18", 0x040000, 0x20000, 0xe886146a )
1952 ROM_LOAD( "bf.11", 0x080000, 0x20000, 0x92b42eba )
1953 ROM_LOAD( "bf.15", 0x0a0000, 0x20000, 0xba3b9f5a )
1954 ROM_LOAD( "bf.19", 0x0c0000, 0x20000, 0x8994bf10 )
1955 ROM_LOAD( "bf.12", 0x100000, 0x20000, 0x7ca8bb32 )
1956 ROM_LOAD( "bf.16", 0x120000, 0x20000, 0x2aa74125 )
1957 ROM_LOAD( "bf.20", 0x140000, 0x20000, 0xbab6a7c5 )
1958 ROM_LOAD( "bf.13", 0x180000, 0x20000, 0x56a3a26a )
1959 ROM_LOAD( "bf.17", 0x1a0000, 0x20000, 0x6b37d048 )
1960 ROM_LOAD( "bf.21", 0x1c0000, 0x20000, 0xbc3b3944 )
1961 ROM_END
1962
1963 ROM_START( skysoldr )
1964 ROM_REGION( 0x80000, REGION_CPU1 )
1965 ROM_LOAD_EVEN( "ss.3", 0x00000, 0x10000, 0x7b88aa2e )
1966 ROM_CONTINUE ( 0x40000, 0x10000 | ROMFLAG_ALTERNATE )
1967 ROM_LOAD_ODD ( "ss.4", 0x00000, 0x10000, 0xf0283d43 )
1968 ROM_CONTINUE ( 0x40001, 0x10000 | ROMFLAG_ALTERNATE )
1969 ROM_LOAD_EVEN( "ss.1", 0x20000, 0x10000, 0x20e9dbc7 )
1970 ROM_CONTINUE ( 0x60000, 0x10000 | ROMFLAG_ALTERNATE )
1971 ROM_LOAD_ODD ( "ss.2", 0x20000, 0x10000, 0x486f3432 )
1972 ROM_CONTINUE ( 0x60001, 0x10000 | ROMFLAG_ALTERNATE )
1973
1974 ROM_REGION( 0x80000, REGION_CPU2 ) /* Sound CPU */
1975 ROM_LOAD( "ss.7", 0x00000, 0x08000, 0xb711fad4 )
1976 ROM_CONTINUE( 0x18000, 0x08000 )
1977 ROM_LOAD( "ss.8", 0x30000, 0x10000, 0xe5cf7b37 )
1978 ROM_LOAD( "ss.9", 0x50000, 0x10000, 0x76124ca2 )
1979
1980 ROM_REGION( 0x010000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
1981 ROM_LOAD( "ss.5", 0x00000, 0x08000, 0x928ba287 )
1982 ROM_LOAD( "ss.6", 0x08000, 0x08000, 0x93b30b55 )
1983
1984 ROM_REGION( 0x200000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* sprites */
1985 ROM_LOAD( "ss.10", 0x000000, 0x20000, 0xe48c1623 )
1986 ROM_LOAD( "ss.14", 0x020000, 0x20000, 0x190c8704 )
1987 ROM_LOAD( "ss.18", 0x040000, 0x20000, 0xcb6ff33a )
1988 ROM_LOAD( "ss.22", 0x060000, 0x20000, 0xe69b4485 )
1989 ROM_LOAD( "ss.11", 0x080000, 0x20000, 0x6c63e9c5 )
1990 ROM_LOAD( "ss.15", 0x0a0000, 0x20000, 0x55f71ab1 )
1991 ROM_LOAD( "ss.19", 0x0c0000, 0x20000, 0x312a21f5 )
1992 ROM_LOAD( "ss.23", 0x0e0000, 0x20000, 0x923c19c2 )
1993 ROM_LOAD( "ss.12", 0x100000, 0x20000, 0x63bb4e89 )
1994 ROM_LOAD( "ss.16", 0x120000, 0x20000, 0x138179f7 )
1995 ROM_LOAD( "ss.20", 0x140000, 0x20000, 0x268cc7b4 )
1996 ROM_LOAD( "ss.24", 0x160000, 0x20000, 0xf63b8417 )
1997 ROM_LOAD( "ss.13", 0x180000, 0x20000, 0x3506c06b )
1998 ROM_LOAD( "ss.17", 0x1a0000, 0x20000, 0xa7f524e0 )
1999 ROM_LOAD( "ss.21", 0x1c0000, 0x20000, 0xcb7bf5fe )
2000 ROM_LOAD( "ss.25", 0x1e0000, 0x20000, 0x65138016 )
2001
2002 ROM_REGION( 0x80000, REGION_USER1 ) /* Reload the code here for upper bank */
2003 ROM_LOAD_EVEN( "ss.3", 0x00000, 0x10000, 0x7b88aa2e )
2004 ROM_CONTINUE ( 0x40000, 0x10000 | ROMFLAG_ALTERNATE )
2005 ROM_LOAD_ODD ( "ss.4", 0x00000, 0x10000, 0xf0283d43 )
2006 ROM_CONTINUE ( 0x40001, 0x10000 | ROMFLAG_ALTERNATE )
2007 ROM_LOAD_EVEN( "ss.1", 0x20000, 0x10000, 0x20e9dbc7 )
2008 ROM_CONTINUE ( 0x60000, 0x10000 | ROMFLAG_ALTERNATE )
2009 ROM_LOAD_ODD ( "ss.2", 0x20000, 0x10000, 0x486f3432 )
2010 ROM_CONTINUE ( 0x60001, 0x10000 | ROMFLAG_ALTERNATE )
2011 ROM_END
2012
2013 ROM_START( goldmedl )
2014 ROM_REGION( 0x40000, REGION_CPU1 )
2015 ROM_LOAD_EVEN( "gm.3", 0x00000, 0x10000, 0xddf0113c )
2016 ROM_LOAD_ODD ( "gm.4", 0x00000, 0x10000, 0x16db4326 )
2017 ROM_LOAD_EVEN( "gm.1", 0x20000, 0x10000, 0x54a11e28 )
2018 ROM_LOAD_ODD ( "gm.2", 0x20000, 0x10000, 0x4b6a13e4 )
2019
2020 ROM_REGION( 0x90000, REGION_CPU2 ) /* Sound CPU */
2021 ROM_LOAD( "goldsnd0.c47", 0x00000, 0x08000, 0x031d27dc )
2022 ROM_CONTINUE( 0x18000, 0x78000 )
2023
2024 ROM_REGION( 0x010000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
2025 ROM_LOAD( "gm.5", 0x000000, 0x08000, 0x667f33f1 )
2026 ROM_LOAD( "gm.6", 0x008000, 0x08000, 0x56020b13 )
2027
2028 ROM_REGION( 0x200000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* sprites */
2029 ROM_LOAD( "goldchr3.c46", 0x000000, 0x80000, 0x6faaa07a )
2030 ROM_LOAD( "goldchr2.c45", 0x080000, 0x80000, 0xe6b0aa2c )
2031 ROM_LOAD( "goldchr1.c44", 0x100000, 0x80000, 0x55db41cd )
2032 ROM_LOAD( "goldchr0.c43", 0x180000, 0x80000, 0x76572c3f )
2033 ROM_END
2034
2035 ROM_START( goldmedb )
2036 ROM_REGION( 0x40000, REGION_CPU1 )
2037 ROM_LOAD_EVEN( "l_3.bin", 0x00000, 0x10000, 0x5e106bcf)
2038 ROM_LOAD_ODD ( "l_4.bin", 0x00000, 0x10000, 0xe19966af)
2039 ROM_LOAD_EVEN( "l_1.bin", 0x20000, 0x08000, 0x7eec7ee5)
2040 ROM_LOAD_ODD ( "l_2.bin", 0x20000, 0x08000, 0xbf59e4f9)
2041
2042 ROM_REGION( 0x88000, REGION_CPU2 ) /* Sound CPU */
2043 ROM_LOAD( "goldsnd0.c47", 0x00000, 0x08000, 0x031d27dc )
2044 ROM_CONTINUE( 0x10000, 0x78000 )
2045
2046 ROM_REGION( 0x010000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
2047 ROM_LOAD( "gm.5", 0x000000, 0x08000, 0x667f33f1 )
2048 ROM_LOAD( "gm.6", 0x008000, 0x08000, 0x56020b13 )
2049 // ROM_LOAD( "33.bin", 0x000000, 0x10000, 0x5600b13 )
2050
2051 /* I haven't yet verified if these are the same as the bootleg */
2052
2053 ROM_REGION( 0x200000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* sprites */
2054 ROM_LOAD( "goldchr3.c46", 0x000000, 0x80000, 0x6faaa07a )
2055 ROM_LOAD( "goldchr2.c45", 0x080000, 0x80000, 0xe6b0aa2c )
2056 ROM_LOAD( "goldchr1.c44", 0x100000, 0x80000, 0x55db41cd )
2057 ROM_LOAD( "goldchr0.c43", 0x180000, 0x80000, 0x76572c3f )
2058
2059 ROM_REGION( 0x10000, REGION_USER1 )
2060 ROM_LOAD_EVEN( "l_1.bin", 0x00000, 0x08000, 0x7eec7ee5)
2061 ROM_LOAD_ODD ( "l_2.bin", 0x00000, 0x08000, 0xbf59e4f9)
2062 ROM_END
2063
2064 ROM_START( skyadvnt )
2065 ROM_REGION( 0x40000, REGION_CPU1 )
2066 ROM_LOAD_EVEN( "sa_v3.1", 0x00000, 0x20000, 0x862393b5 )
2067 ROM_LOAD_ODD ( "sa_v3.2", 0x00000, 0x20000, 0xfa7a14d1 )
2068
2069 ROM_REGION( 0x90000, REGION_CPU2 ) /* Sound CPU */
2070 ROM_LOAD( "sa.3", 0x00000, 0x08000, 0x3d0b32e0 )
2071 ROM_CONTINUE( 0x18000, 0x08000 )
2072 ROM_LOAD( "sa.4", 0x30000, 0x10000, 0xc2e3c30c )
2073 ROM_LOAD( "sa.5", 0x50000, 0x10000, 0x11cdb868 )
2074 ROM_LOAD( "sa.6", 0x70000, 0x08000, 0x237d93fd )
2075
2076 ROM_REGION( 0x020000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
2077 ROM_LOAD( "sa.7", 0x000000, 0x08000, 0xea26e9c5 )
2078
2079 ROM_REGION( 0x280000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* sprites */
2080 ROM_LOAD( "sachr3", 0x000000, 0x80000, 0xa986b8d5 )
2081 ROM_LOAD( "sachr2", 0x0a0000, 0x80000, 0x504b07ae )
2082 ROM_LOAD( "sachr1", 0x140000, 0x80000, 0xe734dccd )
2083 ROM_LOAD( "sachr0", 0x1e0000, 0x80000, 0xe281b204 )
2084 ROM_END
2085
2086 ROM_START( gangwars )
2087 ROM_REGION( 0x40000, REGION_CPU1 )
2088 ROM_LOAD_EVEN( "u1", 0x00000, 0x20000, 0x11433507 )
2089 ROM_LOAD_ODD ( "u2", 0x00000, 0x20000, 0x44cc375f )
2090
2091 ROM_REGION( 0x90000, REGION_CPU2 ) /* Sound CPU */
2092 ROM_LOAD( "u12", 0x00000, 0x08000, 0x2620caa1 )
2093 ROM_CONTINUE( 0x18000, 0x08000 )
2094 ROM_LOAD( "u9", 0x70000, 0x10000, 0x9136745e )
2095 ROM_LOAD( "u10", 0x50000, 0x10000, 0x636978ae )
2096 ROM_LOAD( "u11", 0x30000, 0x10000, 0x2218ceb9 )
2097
2098 /*
2099
2100 These roms are from the bootleg version, the original graphics
2101 should be the same. The original uses 4 512k mask roms and 4 128k
2102 eeproms to store the same data. The 512k roms are not dumped but
2103 the 128k ones are and match these ones.
2104
2105 */
2106
2107 ROM_REGION( 0x020000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
2108 ROM_LOAD( "gwb_ic.m19", 0x000000, 0x10000, 0xb75bf1d0 )
2109
2110 ROM_REGION( 0x280000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* sprites */
2111 ROM_LOAD( "gwb_ic.308", 0x000000, 0x10000, 0x321a2fdd )
2112 ROM_LOAD( "gwb_ic.309", 0x010000, 0x10000, 0x4d908f65 )
2113 ROM_LOAD( "gwb_ic.310", 0x020000, 0x10000, 0xfc888541 )
2114 ROM_LOAD( "gwb_ic.311", 0x030000, 0x10000, 0x181b128b )
2115 ROM_LOAD( "gwb_ic.312", 0x040000, 0x10000, 0x930665f3 )
2116 ROM_LOAD( "gwb_ic.313", 0x050000, 0x10000, 0xc18f4ca8 )
2117 ROM_LOAD( "gwb_ic.314", 0x060000, 0x10000, 0xdfc44b60 )
2118 ROM_LOAD( "gwb_ic.307", 0x070000, 0x10000, 0x28082a7f )
2119 ROM_LOAD( "gwb_ic.320", 0x080000, 0x10000, 0x9a7b51d8 )
2120 ROM_LOAD( "gwb_ic.321", 0x090000, 0x10000, 0x6b421c7b )
2121 ROM_LOAD( "gwb_ic.300", 0x0a0000, 0x10000, 0xf3fa0877 )
2122 ROM_LOAD( "gwb_ic.301", 0x0b0000, 0x10000, 0xf8c866de )
2123 ROM_LOAD( "gwb_ic.302", 0x0c0000, 0x10000, 0x5b0d587d )
2124 ROM_LOAD( "gwb_ic.303", 0x0d0000, 0x10000, 0xd8c0e102 )
2125 ROM_LOAD( "gwb_ic.304", 0x0e0000, 0x10000, 0xb02bc9d8 )
2126 ROM_LOAD( "gwb_ic.305", 0x0f0000, 0x10000, 0x5e04a9aa )
2127 ROM_LOAD( "gwb_ic.306", 0x100000, 0x10000, 0xe2172955 )
2128 ROM_LOAD( "gwb_ic.299", 0x110000, 0x10000, 0xe39f5599 )
2129 ROM_LOAD( "gwb_ic.318", 0x120000, 0x10000, 0x9aeaddf9 )
2130 ROM_LOAD( "gwb_ic.319", 0x130000, 0x10000, 0xc5b862b7 )
2131 ROM_LOAD( "gwb_ic.292", 0x140000, 0x10000, 0xc125f7be )
2132 ROM_LOAD( "gwb_ic.293", 0x150000, 0x10000, 0xc04fce8e )
2133 ROM_LOAD( "gwb_ic.294", 0x160000, 0x10000, 0x4eda3df5 )
2134 ROM_LOAD( "gwb_ic.295", 0x170000, 0x10000, 0x6e60c475 )
2135 ROM_LOAD( "gwb_ic.296", 0x180000, 0x10000, 0x99b2a557 )
2136 ROM_LOAD( "gwb_ic.297", 0x190000, 0x10000, 0x10373f63 )
2137 ROM_LOAD( "gwb_ic.298", 0x1a0000, 0x10000, 0xdf37ec4d )
2138 ROM_LOAD( "gwb_ic.291", 0x1b0000, 0x10000, 0xbeb07a2e )
2139 ROM_LOAD( "gwb_ic.316", 0x1c0000, 0x10000, 0x655b1518 )
2140 ROM_LOAD( "gwb_ic.317", 0x1d0000, 0x10000, 0x1622fadd )
2141 ROM_LOAD( "gwb_ic.284", 0x1e0000, 0x10000, 0x4aa95d66 )
2142 ROM_LOAD( "gwb_ic.285", 0x1f0000, 0x10000, 0x3a1f3ce0 )
2143 ROM_LOAD( "gwb_ic.286", 0x200000, 0x10000, 0x886e298b )
2144 ROM_LOAD( "gwb_ic.287", 0x210000, 0x10000, 0xb9542e6a )
2145 ROM_LOAD( "gwb_ic.288", 0x220000, 0x10000, 0x8e620056 )
2146 ROM_LOAD( "gwb_ic.289", 0x230000, 0x10000, 0xc754d69f )
2147 ROM_LOAD( "gwb_ic.290", 0x240000, 0x10000, 0x306d1963 )
2148 ROM_LOAD( "gwb_ic.283", 0x250000, 0x10000, 0xb46e5761 )
2149 ROM_LOAD( "gwb_ic.280", 0x260000, 0x10000, 0x222b3dcd )
2150 ROM_LOAD( "gwb_ic.315", 0x270000, 0x10000, 0xe7c9b103 )
2151
2152 ROM_REGION( 0x40000, REGION_USER1 ) /* Extra code bank */
2153 ROM_LOAD_EVEN( "u3", 0x00000, 0x20000, 0xde6fd3c0 )
2154 ROM_LOAD_ODD ( "u4", 0x00000, 0x20000, 0x43f7f5d3 )
2155 ROM_END
2156
2157 ROM_START( gangwarb )
2158 ROM_REGION( 0x40000, REGION_CPU1 )
2159 ROM_LOAD_EVEN( "gwb_ic.m15", 0x00000, 0x20000, 0x7752478e )
2160 ROM_LOAD_ODD ( "gwb_ic.m16", 0x00000, 0x20000, 0xc2f3b85e )
2161
2162 ROM_REGION( 0x90000, REGION_CPU2 ) /* Sound CPU */
2163 ROM_LOAD( "gwb_ic.380", 0x00000, 0x08000, 0xe6d6c9cf )
2164 ROM_CONTINUE( 0x18000, 0x08000 )
2165 ROM_LOAD( "gwb_ic.419", 0x30000, 0x10000, 0x84e5c946 )
2166 ROM_LOAD( "gwb_ic.420", 0x50000, 0x10000, 0xeb305d42 )
2167 ROM_LOAD( "gwb_ic.421", 0x70000, 0x10000, 0x7b9f2608 )
2168
2169 ROM_REGION( 0x020000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
2170 ROM_LOAD( "gwb_ic.m19", 0x000000, 0x10000, 0xb75bf1d0 )
2171
2172 ROM_REGION( 0x280000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* sprites */
2173 ROM_LOAD( "gwb_ic.308", 0x000000, 0x10000, 0x321a2fdd )
2174 ROM_LOAD( "gwb_ic.309", 0x010000, 0x10000, 0x4d908f65 )
2175 ROM_LOAD( "gwb_ic.310", 0x020000, 0x10000, 0xfc888541 )
2176 ROM_LOAD( "gwb_ic.311", 0x030000, 0x10000, 0x181b128b )
2177 ROM_LOAD( "gwb_ic.312", 0x040000, 0x10000, 0x930665f3 )
2178 ROM_LOAD( "gwb_ic.313", 0x050000, 0x10000, 0xc18f4ca8 )
2179 ROM_LOAD( "gwb_ic.314", 0x060000, 0x10000, 0xdfc44b60 )
2180 ROM_LOAD( "gwb_ic.307", 0x070000, 0x10000, 0x28082a7f )
2181 ROM_LOAD( "gwb_ic.320", 0x080000, 0x10000, 0x9a7b51d8 )
2182 ROM_LOAD( "gwb_ic.321", 0x090000, 0x10000, 0x6b421c7b )
2183 ROM_LOAD( "gwb_ic.300", 0x0a0000, 0x10000, 0xf3fa0877 )
2184 ROM_LOAD( "gwb_ic.301", 0x0b0000, 0x10000, 0xf8c866de )
2185 ROM_LOAD( "gwb_ic.302", 0x0c0000, 0x10000, 0x5b0d587d )
2186 ROM_LOAD( "gwb_ic.303", 0x0d0000, 0x10000, 0xd8c0e102 )
2187 ROM_LOAD( "gwb_ic.304", 0x0e0000, 0x10000, 0xb02bc9d8 )
2188 ROM_LOAD( "gwb_ic.305", 0x0f0000, 0x10000, 0x5e04a9aa )
2189 ROM_LOAD( "gwb_ic.306", 0x100000, 0x10000, 0xe2172955 )
2190 ROM_LOAD( "gwb_ic.299", 0x110000, 0x10000, 0xe39f5599 )
2191 ROM_LOAD( "gwb_ic.318", 0x120000, 0x10000, 0x9aeaddf9 )
2192 ROM_LOAD( "gwb_ic.319", 0x130000, 0x10000, 0xc5b862b7 )
2193 ROM_LOAD( "gwb_ic.292", 0x140000, 0x10000, 0xc125f7be )
2194 ROM_LOAD( "gwb_ic.293", 0x150000, 0x10000, 0xc04fce8e )
2195 ROM_LOAD( "gwb_ic.294", 0x160000, 0x10000, 0x4eda3df5 )
2196 ROM_LOAD( "gwb_ic.295", 0x170000, 0x10000, 0x6e60c475 )
2197 ROM_LOAD( "gwb_ic.296", 0x180000, 0x10000, 0x99b2a557 )
2198 ROM_LOAD( "gwb_ic.297", 0x190000, 0x10000, 0x10373f63 )
2199 ROM_LOAD( "gwb_ic.298", 0x1a0000, 0x10000, 0xdf37ec4d )
2200 ROM_LOAD( "gwb_ic.291", 0x1b0000, 0x10000, 0xbeb07a2e )
2201 ROM_LOAD( "gwb_ic.316", 0x1c0000, 0x10000, 0x655b1518 )
2202 ROM_LOAD( "gwb_ic.317", 0x1d0000, 0x10000, 0x1622fadd )
2203 ROM_LOAD( "gwb_ic.284", 0x1e0000, 0x10000, 0x4aa95d66 )
2204 ROM_LOAD( "gwb_ic.285", 0x1f0000, 0x10000, 0x3a1f3ce0 )
2205 ROM_LOAD( "gwb_ic.286", 0x200000, 0x10000, 0x886e298b )
2206 ROM_LOAD( "gwb_ic.287", 0x210000, 0x10000, 0xb9542e6a )
2207 ROM_LOAD( "gwb_ic.288", 0x220000, 0x10000, 0x8e620056 )
2208 ROM_LOAD( "gwb_ic.289", 0x230000, 0x10000, 0xc754d69f )
2209 ROM_LOAD( "gwb_ic.290", 0x240000, 0x10000, 0x306d1963 )
2210 ROM_LOAD( "gwb_ic.283", 0x250000, 0x10000, 0xb46e5761 )
2211 ROM_LOAD( "gwb_ic.280", 0x260000, 0x10000, 0x222b3dcd )
2212 ROM_LOAD( "gwb_ic.315", 0x270000, 0x10000, 0xe7c9b103 )
2213
2214 ROM_REGION( 0x40000, REGION_USER1 ) /* Extra code bank */
2215 ROM_LOAD_EVEN( "gwb_ic.m17", 0x00000, 0x20000, 0x2a5fe86e )
2216 ROM_LOAD_ODD ( "gwb_ic.m18", 0x00000, 0x20000, 0xc8b60c53 )
2217 ROM_END
2218
2219 ROM_START( sbasebal )
2220 ROM_REGION( 0x40000, REGION_CPU1 )
2221 ROM_LOAD_EVEN( "snksb1.bin", 0x00000, 0x20000, 0x304fef2d )
2222 ROM_LOAD_ODD ( "snksb2.bin", 0x00000, 0x20000, 0x35821339 )
2223
2224 ROM_REGION( 0x90000, REGION_CPU2 ) /* Sound CPU */
2225 ROM_LOAD( "snksb3.bin", 0x00000, 0x08000, 0x89e12f25 )
2226 ROM_CONTINUE( 0x18000, 0x08000 )
2227 ROM_LOAD( "snksb4.bin", 0x30000, 0x10000, 0xcca2555d )
2228 ROM_LOAD( "snksb5.bin", 0x50000, 0x10000, 0xf45ee36f )
2229 ROM_LOAD( "snksb6.bin", 0x70000, 0x10000, 0x651c9472 )
2230
2231 ROM_REGION( 0x020000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars */
2232 ROM_LOAD( "snksb7.bin", 0x000000, 0x10000, 0x8f3c2e25 )
2233
2234 ROM_REGION( 0x280000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* sprites */
2235 ROM_LOAD( "kcbchr3.bin", 0x000000, 0x80000, 0x719071c7 )
2236 ROM_LOAD( "kcbchr2.bin", 0x0a0000, 0x80000, 0x014f0f90 )
2237 ROM_LOAD( "kcbchr1.bin", 0x140000, 0x80000, 0xa5ce1e10 )
2238 ROM_LOAD( "kcbchr0.bin", 0x1e0000, 0x80000, 0xb8a1a088 )
2239 ROM_END
2240
2241 /******************************************************************************/
2242
2243 static READ_HANDLER( timesold_cycle_r )
2244 {
2245 int ret=READ_WORD(&shared_ram[0x8]);
2246
2247 if (cpu_get_pc()==0x9ea2 && (ret&0xff00)==0) {
2248 cpu_spinuntil_int();
2249 return 0x100 | (ret&0xff);
2250 }
2251
2252 return ret;
2253 }
2254
READ_HANDLER(skysoldr_cycle_r)2255 static READ_HANDLER( skysoldr_cycle_r )
2256 {
2257 int ret=READ_WORD(&shared_ram[0x8]);
2258
2259 if (cpu_get_pc()==0x1f4e && (ret&0xff00)==0) {
2260 cpu_spinuntil_int();
2261 return 0x100 | (ret&0xff);
2262 }
2263
2264 return ret;
2265 }
2266
READ_HANDLER(gangwars_cycle_r)2267 static READ_HANDLER( gangwars_cycle_r )
2268 {
2269 int ret=READ_WORD(&shared_ram[0x206]);
2270
2271 if (cpu_get_pc()==0xbbca || cpu_get_pc()==0xbbb6) {
2272 cpu_spinuntil_int();
2273 return (ret+2)&0xff;
2274 }
2275
2276 return ret;
2277 }
2278
init_timesold(void)2279 static void init_timesold(void)
2280 {
2281 install_mem_read_handler(0, 0x40008, 0x40009, timesold_cycle_r);
2282 invert_controls=0;
2283 }
2284
init_skysoldr(void)2285 static void init_skysoldr(void)
2286 {
2287 install_mem_read_handler(0, 0x40008, 0x40009, skysoldr_cycle_r);
2288 cpu_setbank(8, (memory_region(REGION_USER1))+0x40000);
2289 invert_controls=0;
2290 }
2291
init_goldmedb(void)2292 static void init_goldmedb(void)
2293 {
2294 cpu_setbank(8, memory_region(REGION_USER1));
2295 invert_controls=0;
2296 }
2297
init_gangwars(void)2298 static void init_gangwars(void)
2299 {
2300 install_mem_read_handler(0, 0x40206, 0x40207, gangwars_cycle_r);
2301 cpu_setbank(8, memory_region(REGION_USER1));
2302 invert_controls=0;
2303 microcontroller_id=0x8512;
2304 }
2305
init_btlfield(void)2306 static void init_btlfield(void)
2307 {
2308 invert_controls=1;
2309 }
2310
init_sbasebal(void)2311 static void init_sbasebal(void)
2312 {
2313 unsigned char *RAM = memory_region(REGION_CPU1);
2314
2315 /* Game hangs on divide by zero?! Patch it */
2316 WRITE_WORD (&RAM[0xb672],0x4E71);
2317
2318 /* And patch the ROM checksums */
2319 WRITE_WORD (&RAM[0x44e],0x4E71);
2320 WRITE_WORD (&RAM[0x450],0x4E71);
2321 WRITE_WORD (&RAM[0x458],0x4E71);
2322 WRITE_WORD (&RAM[0x45a],0x4E71);
2323
2324 microcontroller_id=0x8512;
2325 invert_controls=0;
2326 }
2327
init_skyadvnt(void)2328 static void init_skyadvnt(void)
2329 {
2330 microcontroller_id=0x8814;
2331 invert_controls=0;
2332 }
2333
init_kyros(void)2334 static void init_kyros(void)
2335 {
2336 microcontroller_id=0x12;
2337 }
2338
init_sstingry(void)2339 static void init_sstingry(void)
2340 {
2341 microcontroller_id=0xff;
2342 }
2343
init_goldmedl(void)2344 static void init_goldmedl(void)
2345 {
2346 invert_controls=0;
2347 }
2348
2349 /******************************************************************************/
2350
2351 GAMEX(1985, kouyakyu, 0, kouyakyu, sstingry, 0, ROT0, "Alpha Denshi Co.", "The Koukouyakyuh", GAME_NOT_WORKING )
2352 GAMEX(1986, sstingry, 0, sstingry, sstingry, sstingry, ROT90, "Alpha Denshi Co.", "Super Stingray", GAME_WRONG_COLORS | GAME_NO_SOUND )
2353 GAMEX(1987, kyros, 0, kyros, kyros, kyros, ROT90, "World Games Inc", "Kyros", GAME_WRONG_COLORS | GAME_NO_SOUND )
2354 GAMEX(1988, paddlema, 0, alpha68k_I, timesold, 0, ROT90, "SNK", "Paddle Mania", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
2355 GAME( 1987, timesold, 0, alpha68k_II, timesold, timesold, ROT90, "SNK / Romstar", "Time Soldiers (US Rev 3)" )
2356 GAME( 1987, timesol1, timesold, alpha68k_II, timesold, btlfield, ROT90, "SNK / Romstar", "Time Soldiers (US Rev 1)" )
2357 GAME( 1987, btlfield, timesold, alpha68k_II, btlfield, btlfield, ROT90, "SNK", "Battle Field (Japan)" )
2358 GAME( 1988, skysoldr, 0, alpha68k_II, skysoldr, skysoldr, ROT90, "SNK / Romstar", "Sky Soldiers (US)" )
2359 GAMEX(1988, goldmedl, 0, alpha68k_II, goldmedl, goldmedl, ROT0, "SNK", "Gold Medalist", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
2360 GAMEX(1988, goldmedb, goldmedl, alpha68k_II, goldmedl, goldmedb, ROT0, "bootleg", "Gold Medalist (bootleg)", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
2361 GAMEX(1989, skyadvnt, 0, alpha68k_V, skyadvnt, skyadvnt, ROT90, "SNK of America (licensed from Alpha)", "Sky Adventure (US)", GAME_NO_COCKTAIL )
2362 GAME( 1989, gangwars, 0, alpha68k_V, gangwars, gangwars, ROT0_16BIT, "Alpha Denshi Co.", "Gang Wars (US)" )
2363 GAME( 1989, gangwarb, gangwars, alpha68k_V, gangwars, gangwars, ROT0_16BIT, "bootleg", "Gang Wars (bootleg)" )
2364 GAMEX(1989, sbasebal, 0, alpha68k_V_sb, sbasebal, sbasebal, ROT0, "SNK of America (licensed from Alpha)", "Super Champion Baseball", GAME_NO_COCKTAIL )
2365
2366 /*
2367 Super Baseball and Sky Adventure don't write to their flipscreen ports - I'm not yet sure if this
2368 is a microcontroller protection issue (flipscreen is controlled by the Alpha microcontroller) or these
2369 games simply don't support it.
2370 */
2371