1 /**************************************************************************
2 *
3 * konamigx.c - Konami System GX
4 * Driver by R. Belmont, Acho A. Tang, and Phil Stroffolino.
5 * ESC protection emulation and TMS57002 skipper by Olivier Galibert.
6 *
7 * Basic hardware consists of:
8 * - MC68EC020 main CPU at 24 MHz
9 * - MC68000 sound CPU with 2x K054539 PCM chips plus a TMS57002 DASP for effects
10 *
11 * Tilemaps are handled by the old familiar K054156 with a new partner K056832.
12 * This combination is mostly compatible with the 156/157 combo but now sports
13 * up to 8 bits per pixel as well as larger 128x64 tile planes.
14 *
15 * Sprites are handled by a K053246 combined with a K055673. This combo was
16 * actually used on some 16 bit Konami games as well. It appears identical
17 * to the standard 246/247 combo except with 5-8 bits per pixel.
18 *
19 * Video output is handled by a K055555 mixer/priority encoder. This is a much
20 * more capable beast than the earlier 53251, supporting a background gradient
21 * and flexible priority handling among other features. It's combined with the
22 * 54338 alpha blending engine first seen in Xexex for flexible blending.
23 *
24 * There are actually 4 types of System GX hardware, which are differentiated
25 * by their ROM board. The most common is the "Type 2".
26 *
27 * 68020 memory map for Type 2:
28 * 000000: BIOS ROM (128k)
29 * 200000: game program ROM (1 meg, possibly up to 2)
30 * 400000: data ROMs
31 * c00000: Work RAM (128k)
32 * cc0000: Protection chip
33 * d00000: 054157 ROM readback for memory test
34 * d20000: sprite RAM (4k)
35 * d40000: 054157/056832 tilemap generator (VACSET)
36 * d44000: tile bank selectors (VSCCS)
37 * d48000: 053246/055673 sprite generator (OBJSET1)
38 * d4a000: more readback for sprite generator (OBJSET2)
39 * d4c000: CCU1 registers (CCUS1)
40 * 00: HCH 6M/288 8M/384 12M/576 224 256
41 * 02: HCL HCH 01 01 02 VCH 01 01
42 * 04: HFPH HCL 7f ff ff VCL 07 20
43 * 06: HFPL HFPH 00 00 00 VFP 11 0c
44 * 08: HBPH HFPL 10 19 23 VBP 0e 0e
45 * 0A: HBPL HBPH 00 00 00 VSW 07 05
46 * 10: VCH HBPL 30 3f 4d
47 * 12: VCL HSW 03 04 09
48 * 14: VFP
49 * 16: VBP
50 * 18: VSW/HSW
51 * 1A: INT TIME
52 * 1C: INT1ACK (read VCTH) INT1 = V blank
53 * 1E: INT2ACK (read VCTL) INT2 = H blank
54 * d4e000: CCU2 registers (CCUS2)
55 * d50000: K055555 8-bit-per-pixel priority encoder (PCUCS)
56 * d52000: shared RAM with audio 68000 (SOUNDCS)
57 * d56000: EEPROM comms, bit 7 is watchdog, bit 5 is frame?? (WRPOR1)
58 * d56001: IRQ acknowledge (bits 0->3 = irq 1->4), IRQ enable in hi nibble (bits 4->7 = irq 1->4)
59 * d58000: control register (OBJCHA, 68000 enable/disable, probably more) (WRPOR2)
60 * d5a000: dipswitch bank 1 (RDPORT1)
61 * d5a001: dipswitch bank 2
62 * d5a002: input port (service switch)
63 * d5a003: EEPROM data/ready in bit 0
64 * d5c000: player 1 inputs (RDPORT2)
65 * d5c001: player 2 inputs
66 * d5e000: test switch (RDPORT3)
67 * d80000: K054338 alpha blender registers
68 * d90000: palette RAM for tilemaps
69 * da0000: tilemap RAM (8k window, bankswitched by d40033)
70 * dc0000: LANCRAMCS
71 * dd0000: LANCIOCS
72 * dd2000: RS232C-1
73 * dd4000: RS232C-2
74 * dd6000: trackball 1
75 * dd8000: trackball 2
76 * dda000: ADC-WRPORT
77 * ddc000: ADC-RDPORT
78 * dde000: EXT-WRPORT
79 * de0000: EXT_RDPORT
80 * e00000: type3/4: PSAC2 registers
81 * e20000: type3/4: unk. register
82 * e40000: type3/4: unk. register
83 * e60000: type3/4: PSAC2 linecontrol RAM
84 * e80000: type3/4: main monitor's palette
85 * ea0000: type3/4: sub monitor's palette
86 * ec0000: type3/4: frame flag
87 * f00000: 32k of RnG2 additional RAM
88 *
89 * IRQs:
90 * 1: VBL (at 60 Hz)
91 * 2: HBL
92 * 3: Sprite DMA complete
93 * 4: from protection device, indicates command completion for "ESC" chip
94 *
95 */
96
97 #define GX_DEBUG 0
98 #define GX_SKIPIDLE 1
99
100 #include "driver.h"
101 #include "state.h"
102
103 #include "vidhrdw/generic.h"
104 #include "vidhrdw/konamiic.h"
105 #include "cpu/m68000/m68000.h"
106 /* #include "cpu/z80/z80.h" */
107 #include "machine/eeprom.h"
108 #include "sound/k054539.h"
109 #include "machine/konamigx.h"
110
111 VIDEO_START(konamigx_5bpp);
112 VIDEO_START(konamigx_6bpp);
113 VIDEO_START(konamigx_6bpp_2);
114 VIDEO_START(konamigx_type3);
115 VIDEO_START(konamigx_type4);
116 VIDEO_START(le2);
117 VIDEO_START(dragoonj);
118 VIDEO_START(winspike);
119 VIDEO_START(opengolf);
120 VIDEO_START(racinfrc);
121 VIDEO_UPDATE(konamigx);
122
123 MACHINE_INIT(konamigx);
124
125 WRITE32_HANDLER( konamigx_palette_w );
126 WRITE32_HANDLER( konamigx_palette2_w );
127 WRITE32_HANDLER( konamigx_555_palette_w );
128 WRITE32_HANDLER( konamigx_555_palette2_w );
129 WRITE32_HANDLER( konamigx_tilebank_w );
130
131 data32_t *gx_psacram, *gx_subpaletteram32;
132 WRITE32_HANDLER( konamigx_t1_psacmap_w );
133 WRITE32_HANDLER( konamigx_t4_psacmap_w );
134
135 int konamigx_cfgport;
136
137 static data32_t *gx_workram; /* workram pointer for ESC protection fun */
138 static data16_t *gx_sndram;
139 static int gx_rdport1_3, gx_syncen;
140
141 static void *dmadelay_timer;
142
143 /**********************************************************************************/
144 /*
145 Konami ESC (E Security Chip) protection chip found on:
146 - Salamander 2
147 - Sexy Parodius
148 - Twinbee Yahhoo
149 - Dragoon Might
150 - Daisu-Kiss
151
152 The ESC is a custom microcontroller with external SRAM connected
153 to it. It's microprogram is uploaded by the host game. The ESC
154 has complete DMA access to the entire 68020 address space, like
155 most Konami protection devices.
156
157 Most games use the same or a compatible microprogram. This
158 program gathers the sprite information scattered around work RAM
159 and builds a sprite list in sprite RAM which is properly sorted
160 in priority order. The Japanese version of Gokujou Parodius
161 contains a 68020 version of this program at 0x2a285c. The code
162 below is almost a direct translation into C of that routine.
163
164 Salamander 2 uses a different work RAM format and a different
165 ESC program, and Dragoon Might uses a third format and program.
166 These games haven't been reverse-engineered yet and so have
167 no sprites.
168
169 Winning Spike and the Type 4 games use a new protection chip
170 made from a Xilinx FPGA. See type4_prot_w for details.
171
172 */
173
174 /* constant names mostly taken from sexy parodius, which includes
175 a debug protection routine with asserts intact! Cracking the ESC
176 would have been much more difficult without it.
177 */
178
179 #define ESC_INIT_CONSTANT 0x0108db04
180 #define ESC_OBJECT_MAGIC_ID 0xfef724fb
181 #define ESTATE_END 2
182 #define ESTATE_ERROR 3
183
184 /* opcode 1*/
185 /* dragoonj*/
186 /* ESC Opcode 1 : 000000xx 000000xx 00000xx0 00000000*/
187 /* tbyahhoo sprites at c00000*/
188 /* ESC Opcode 1 : 0000ffff 0000ffff 0000ffff 0000000e*/
189 /* sexyparo sprites at c00604*/
190 /* ESC Opcode 1 : 00000000 00000000 00d20000 00000000*/
191 /* ESC Opcode 1 : 00000000 00000000 00d21000 00000000*/
192 /* salmndr2*/
193 /* ESC Opcode 1 : 00c1f7f8 0022002c 00c00060 00010014*/
194 /* tokkae*/
195 /* ESC Opcode 1 : 00c00000 0000000x 00000023 0000ffff*/
196 /* puzldama*/
197 /* ESC Opcode 1 : 002xxxxx 00236102 xxxxxx01 xxxxxxxx*/
198
199 /* Say hello to gokuparo at 0x2a285c*/
200
201 static struct sprite_entry {
202 int pri;
203 unsigned int adr;
204 } sprites[0x100];
205
generate_sprites(UINT32 src,UINT32 spr,int count)206 static void generate_sprites(UINT32 src, UINT32 spr, int count)
207 {
208 int i;
209 int scount;
210 int ecount;
211 scount = 0;
212 ecount = 0;
213
214 for(i=0; i<count; i++) {
215 unsigned int adr = src + 0x100*i;
216 int pri;
217 if(!cpu_readmem24bedw_word(adr+2))
218 continue;
219 pri = cpu_readmem24bedw_word(adr+28);
220
221 if(pri < 256) {
222 sprites[ecount].pri = pri;
223 sprites[ecount].adr = adr;
224 ecount++;
225 }
226 }
227 /*qsort(sprites, ecount, sizeof(struct sprite_entry), pri_comp);*/
228
229 for(i=0; i<ecount; i++) {
230 unsigned int adr = sprites[i].adr;
231 if(adr) {
232 unsigned int set =(cpu_readmem24bedw_word(adr) << 16)|cpu_readmem24bedw_word(adr+2);
233 unsigned short glob_x = cpu_readmem24bedw_word(adr+4);
234 unsigned short glob_y = cpu_readmem24bedw_word(adr+8);
235 unsigned short flip_x = cpu_readmem24bedw_word(adr+12) ? 0x1000 : 0x0000;
236 unsigned short flip_y = cpu_readmem24bedw_word(adr+14) ? 0x2000 : 0x0000;
237 unsigned short glob_f = flip_x | (flip_y ^ 0x2000);
238 unsigned short zoom_x = cpu_readmem24bedw_word(adr+20);
239 unsigned short zoom_y = cpu_readmem24bedw_word(adr+22);
240 unsigned short color_val = 0x0000;
241 unsigned short color_mask = 0xffff;
242 unsigned short color_set = 0x0000;
243 unsigned short color_rotate = 0x0000;
244 unsigned short v;
245
246 v = cpu_readmem24bedw_word(adr+24);
247 if(v & 0x8000) {
248 color_mask = 0xf3ff;
249 color_val |= (v & 3) << 10;
250 }
251
252 v = cpu_readmem24bedw_word(adr+26);
253 if(v & 0x8000) {
254 color_mask &= 0xfcff;
255 color_val |= (v & 3) << 8;
256 }
257
258 v = cpu_readmem24bedw_word(adr+18);
259 if(v & 0x8000) {
260 color_mask &= 0xff1f;
261 color_val |= v & 0xe0;
262 }
263
264 v = cpu_readmem24bedw_word(adr+16);
265 if(v & 0x8000)
266 color_set = v & 0x1f;
267 if(v & 0x4000)
268 color_rotate = v & 0x1f;
269
270 if(!zoom_x)
271 zoom_x = 0x40;
272 if(!zoom_y)
273 zoom_y = 0x40;
274
275 if(set >= 0x200000 && set < 0xd00000)
276 {
277 unsigned short count2 = cpu_readmem24bedw_word(set);
278 set += 2;
279 while(count2) {
280 unsigned short idx = cpu_readmem24bedw_word(set);
281 unsigned short flip = cpu_readmem24bedw_word(set+2);
282 unsigned short col = cpu_readmem24bedw_word(set+4);
283 short y = cpu_readmem24bedw_word(set+6);
284 short x = cpu_readmem24bedw_word(set+8);
285
286 if(idx == 0xffff) {
287 set = (flip<<16) | col;
288 if(set >= 0x200000 && set < 0xd00000)
289 continue;
290 else
291 break;
292 }
293
294 if(zoom_y != 0x40)
295 y = y*0x40/zoom_y;
296 if(zoom_x != 0x40)
297 x = x*0x40/zoom_x;
298
299 if(flip_x)
300 x = glob_x - x;
301 else
302 x = glob_x + x;
303 if(x < -256 || x > 512+32)
304 goto next;
305
306 if(flip_y)
307 y = glob_y - y;
308 else
309 y = glob_y + y;
310 if(y < -256 || y > 512)
311 goto next;
312
313 col = (col & color_mask) | color_val;
314 if(color_set)
315 col = (col & 0xffe0) | color_set;
316 if(color_rotate)
317 col = (col & 0xffe0) | ((col + color_rotate) & 0x1f);
318
319 cpu_writemem24bedw_word(spr , (flip ^ glob_f) | sprites[i].pri);
320 cpu_writemem24bedw_word(spr+ 2, idx);
321 cpu_writemem24bedw_word(spr+ 4, y);
322 cpu_writemem24bedw_word(spr+ 6, x);
323 cpu_writemem24bedw_word(spr+ 8, zoom_y);
324 cpu_writemem24bedw_word(spr+10, zoom_x);
325 cpu_writemem24bedw_word(spr+12, col);
326 spr += 16;
327 scount++;
328 if(scount == 256)
329 return;
330 next:
331 count2--;
332 set += 10;
333 }
334 }
335 }
336 }
337 while(scount < 256) {
338 cpu_writemem24bedw_word(spr, scount);
339 scount++;
340 spr += 16;
341 }
342 }
343
tkmmpzdm_esc(UINT32 p1,UINT32 p2,UINT32 p3,UINT32 p4)344 static void tkmmpzdm_esc(UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
345 {
346 konamigx_esc_alert(gx_workram, 0x0142, 0x100, 0);
347 }
348
dragoonj_esc(UINT32 p1,UINT32 p2,UINT32 p3,UINT32 p4)349 static void dragoonj_esc(UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
350 {
351 konamigx_esc_alert(gx_workram, 0x5c00, 0x100, 0);
352 }
353
sal2_esc(UINT32 p1,UINT32 p2,UINT32 p3,UINT32 p4)354 static void sal2_esc(UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
355 {
356 konamigx_esc_alert(gx_workram, 0x1c8c, 0x172, 1);
357 }
358
sexyparo_esc(UINT32 p1,UINT32 p2,UINT32 p3,UINT32 p4)359 static void sexyparo_esc(UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
360 {
361 /* The d20000 should probably be p3*/
362 generate_sprites(0xc00604, 0xd20000, 0xfc);
363 }
364
tbyahhoo_esc(UINT32 p1,UINT32 p2,UINT32 p3,UINT32 p4)365 static void tbyahhoo_esc(UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
366 {
367 generate_sprites(0xc00000, 0xd20000, 0x100);
368 }
369
daiskiss_esc(UINT32 p1,UINT32 p2,UINT32 p3,UINT32 p4)370 static void daiskiss_esc(UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
371 {
372 generate_sprites(0xc00000, 0xd20000, 0x100);
373 }
374
375 static unsigned char esc_program[4096];
376 static void (*esc_cb)(UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
377
WRITE32_HANDLER(esc_w)378 static WRITE32_HANDLER( esc_w )
379 {
380 unsigned int opcode;
381 unsigned int params;
382
383 /* ignore NULL writes to the ESC (these appear to be "keepalives" on the real hardware) */
384 if (!data)
385 {
386 return;
387 }
388
389 /* ignore out-of-range addresses */
390 if ((data < 0xc00000) || (data > 0xc1ffff))
391 {
392 return;
393 }
394
395 /* the master opcode can be at an unaligned address, so get it "safely" */
396 opcode = (cpu_readmem24bedw_word(data+2))|(cpu_readmem24bedw_word(data)<<16);
397
398 /* if there's an OBJECT_MAGIC_ID, that means
399 there is a valid ESC command packet. */
400 if (opcode == ESC_OBJECT_MAGIC_ID)
401 {
402 int i;
403 /* get the subop now */
404 opcode = cpu_readmem24bedw(data+8);
405 params = (cpu_readmem24bedw_word(data+12) << 16) | cpu_readmem24bedw_word(data+14);
406
407 switch(opcode) {
408 case 5: /* Reset*/
409 break;
410 case 2: /* Load program*/
411 for(i=0; i<4096; i++)
412 esc_program[i] = cpu_readmem24bedw(params+i);
413 /*
414 {
415 FILE *f;
416
417 f = fopen("esc.bin", "wb");
418 fwrite(esc_program, 4096, 1, f);
419 fclose(f);
420
421 log_cb(RETRO_LOG_DEBUG, LOGPRE "Dumping ESC program\n");
422 }
423 */
424 break;
425 case 1: /* Run program*/
426 if(esc_cb) {
427 UINT32 p1 = (cpu_readmem24bedw_word(params+0)<<16) | cpu_readmem24bedw_word(params+2);
428 UINT32 p2 = (cpu_readmem24bedw_word(params+4)<<16) | cpu_readmem24bedw_word(params+6);
429 UINT32 p3 = (cpu_readmem24bedw_word(params+8)<<16) | cpu_readmem24bedw_word(params+10);
430 UINT32 p4 = (cpu_readmem24bedw_word(params+12)<<16) | cpu_readmem24bedw_word(params+14);
431 esc_cb(p1, p2, p3, p4);
432 }
433 break;
434 default:
435 /* log_cb(RETRO_LOG_DEBUG, LOGPRE "Unknown ESC opcode %d\n", opcode);*/
436 break;
437 }
438 cpu_writemem24bedw(data+9, ESTATE_END);
439
440 if (konamigx_wrport1_1 & 0x10)
441 {
442 gx_rdport1_3 &= ~8;
443 cpu_set_irq_line(0, 4, HOLD_LINE);
444 }
445 }
446 else
447 {
448 /* INIT_CONSTANT means just for the ESC to initialize itself,
449 there is not normal command parsing here. */
450 if (opcode == ESC_INIT_CONSTANT)
451 {
452 /* log_cb(RETRO_LOG_DEBUG, LOGPRE "Got ESC_INIT_CONSTANT, 'booting' ESC\n");*/
453 return;
454 }
455
456 /* unknown constant (never been seen in any game..) */
457 }
458 }
459
460
461 /**********************************************************************************/
462 /* NVRAM and EEPROM handlers */
463
464 static int init_eeprom_count;
465
NVRAM_HANDLER(konamigx_93C46)466 static NVRAM_HANDLER(konamigx_93C46)
467 {
468 if (read_or_write)
469 EEPROM_save(file);
470 else
471 {
472 EEPROM_init(&eeprom_interface_93C46);
473
474 if (file)
475 {
476 init_eeprom_count = 0;
477 EEPROM_load(file);
478 }
479 else
480 init_eeprom_count = 10;
481 }
482 }
483
READ32_HANDLER(eeprom_r)484 static READ32_HANDLER( eeprom_r )
485 {
486 /* d5a000 = DIP switches #1 (RDPORT1)*/
487 /* d5a001 = DIP switches #2*/
488 /* d5a002 = input port: service4/3/2/1 coin 4/3/2/1*/
489 /* d5a003 = objint stat, exioint stat, trackint stat, excgint stat, escint stat,*/
490 /* excpuint stat, objdma stat, eeprom do*/
491
492 /* note: racin' force expects bit 1 of the eeprom port to toggle*/
493 return(readinputport(6)<<24 | readinputport(7)<<16 | readinputport(0)<<8 | EEPROM_read_bit() | gx_rdport1_3);
494 }
495
WRITE32_HANDLER(eeprom_w)496 static WRITE32_HANDLER( eeprom_w )
497 {
498 data32_t odata;
499
500 if (!(mem_mask & 0xff000000))
501 {
502 odata = data >> 24;
503 /*
504 bit 7: afr
505 bit 6: objscan
506 bit 5: background color select: 0 = 338 solid color, 1 = 5^5 gradient
507 bit 4: coin counter 2
508 bit 3: coin counter 1
509 bit 2: eeprom clock
510 bit 1: eeprom chip select
511 bit 0: eeprom data
512 */
513
514 EEPROM_write_bit((odata&0x01) ? 1 : 0);
515 EEPROM_set_cs_line((odata&0x02) ? CLEAR_LINE : ASSERT_LINE);
516 EEPROM_set_clock_line((odata&0x04) ? ASSERT_LINE : CLEAR_LINE);
517
518 konamigx_wrport1_0 = odata;
519 }
520
521 if (!(mem_mask & 0xff0000))
522 {
523 /*
524 bit 7 = mask all IRQ
525 bit 6 = LAN IRQ enable
526 bit 5 = CCU2 IRQ enable
527 bit 4 = ESC IRQ enable
528 bit 3 = EXCPU IRQ enable
529 bit 2 = OBJ IRQ enable
530 bit 1 = CCU1-INT2 enable
531 bit 0 = CCU1-INT1 enable
532 */
533
534 konamigx_wrport1_1 = (data>>16)&0xff;
535 /* log_cb(RETRO_LOG_DEBUG, LOGPRE "write %x to IRQ register (PC=%x)\n", konamigx_wrport1_1, activecpu_get_pc());*/
536
537 /* gx_syncen is to ensure each IRQ is trigger at least once after being enabled*/
538 if (konamigx_wrport1_1 & 0x80) gx_syncen |= konamigx_wrport1_1 & 0x1f;
539 }
540 }
541
WRITE32_HANDLER(control_w)542 static WRITE32_HANDLER( control_w )
543 {
544 /*logerror("write %x to control register (mask=%x)\n", data, mem_mask);*/
545
546 /* known controls:*/
547 /* bit 23 = reset graphics chips*/
548 /* bit 22 = 0 to halt 68000, 1 to let it run (SOUNDRESET)*/
549 /* bit 21 = VRAM-CHARD 0=VRAM, 1=ROM*/
550 /* bit 20 = OBJCHA line for '246*/
551 /* bit 19 = select top 2 sprite priority bits to be 14/15 or 16/17 of the*/
552 /* spritelist "color" word.*/
553 /* bit 18 = if 0, the top 2 sprite priority bits are "11" else use bit 19's*/
554 /* results.*/
555 /* bit 17 = DOTSEL1 : 0 = 6M, 1=8M, 2=12M, 3=16M*/
556 /* bit 16 = DOTSEL0*/
557 if (!(mem_mask & 0x00ff0000))
558 {
559 if (data & 0x400000)
560 {
561 /* enable 68k*/
562 /* clear the halt condition and reset the 68000*/
563 cpu_set_halt_line(1, CLEAR_LINE);
564 cpu_set_reset_line(1, PULSE_LINE);
565 }
566 else
567 {
568 /* disable 68k*/
569 cpu_set_halt_line(1, ASSERT_LINE);
570 }
571
572 K053246_set_OBJCHA_line((data&0x100000) ? ASSERT_LINE : CLEAR_LINE);
573
574 konamigx_wrport2 = (data>>16)&0xff;
575 }
576 }
577
578
579 /**********************************************************************************/
580 /* IRQ controllers */
581
582 #define ADD_SKIPPER32(PC, BASE, START, END, DATA, MASK){ \
583 waitskip.pc = PC; \
584 waitskip.offs = START/4; \
585 waitskip.data = DATA; \
586 waitskip.mask = MASK; \
587 resume_trigger= 1000; \
588 install_mem_read32_handler \
589 (0, (BASE+START)&~3, (BASE+END)|3, waitskip_r);}
590
591 static struct { UINT32 offs, pc, mask, data; } waitskip;
592 static int suspension_active, resume_trigger;
593
READ32_HANDLER(waitskip_r)594 static READ32_HANDLER(waitskip_r)
595 {
596 data32_t data = gx_workram[waitskip.offs+offset];
597 mem_mask = ~mem_mask;
598
599 if (activecpu_get_pc() == waitskip.pc && (data & mem_mask) == (waitskip.data & mem_mask))
600 {
601 cpu_spinuntil_trigger(resume_trigger);
602 suspension_active = 1;
603 }
604
605 return(data);
606 }
607
608
READ32_HANDLER(ccu_r)609 static READ32_HANDLER( ccu_r )
610 {
611 /* the routine at 204abe in opengolf polls to see if we're in vblank (it wants values between 0x111 and 0x1df)*/
612 if (offset == 0x1c/4)
613 {
614 return 0x01002000;
615 }
616 else
617 {
618 /* log_cb(RETRO_LOG_DEBUG, LOGPRE "Read unhandled CCU register %x\n", offset);*/
619 }
620
621 return 0;
622 }
623
WRITE32_HANDLER(ccu_w)624 static WRITE32_HANDLER( ccu_w )
625 {
626 if (offset == 0x1c/4)
627 {
628 /* vblank interrupt ACK*/
629 if (!(mem_mask & 0xff000000))
630 {
631 cpu_set_irq_line(0, 1, CLEAR_LINE);
632 gx_syncen |= 0x20;
633 }
634
635 /* hblank interrupt ACK*/
636 if (!(mem_mask & 0x0000ff00))
637 {
638 cpu_set_irq_line(0, 2, CLEAR_LINE);
639 gx_syncen |= 0x40;
640 }
641 }
642 }
643
644
645 /*
646 GX object DMA timings:
647
648 6Mhz dotclock: 42.7us(clear) / 341.3us(transfer)
649 8Mhz dotclock: 32.0us(clear) / 256.0us(transfer)
650 12Mhz dotclock: 42.7us(clear) / 341.3us(transfer)
651 */
652
dmaend_callback(int data)653 static void dmaend_callback(int data)
654 {
655 /* foul-proof (CPU0 could be deactivated while we wait)*/
656 if (resume_trigger && suspension_active) { suspension_active = 0; cpu_trigger(resume_trigger); }
657
658 /* DMA busy flag must be cleared before triggering IRQ 3*/
659 gx_rdport1_3 &= ~2;
660
661 /* IRQ 3 is the "object DMA end" IRQ also happens during vblank*/
662 if ((konamigx_wrport1_1 & 0x84) == 0x84 || (gx_syncen & 4))
663 {
664 gx_syncen &= ~4;
665
666 /* lower OBJINT-REQ flag and trigger interrupt*/
667 gx_rdport1_3 &= ~0x80;
668 cpu_set_irq_line(0, 3, HOLD_LINE);
669 }
670 }
671
dmastart_callback(int data)672 static void dmastart_callback(int data)
673 {
674 /* raise the DMA busy flag*/
675 gx_rdport1_3 |= 2;
676
677 /* begin transfer if DMAEN(bit4 of OBJSET1) is set (see p.48)*/
678 if (K053246_read_register(5) & 0x10)
679 {
680 /* disabled by default since it doesn't work too well in MAME*/
681 konamigx_objdma();
682 }
683
684 /* simulate DMA delay*/
685 timer_adjust(dmadelay_timer, TIME_IN_USEC(120), 0, 0);
686 }
687
688
INTERRUPT_GEN(konamigx_vbinterrupt)689 static INTERRUPT_GEN(konamigx_vbinterrupt)
690 {
691 /* lift idle suspension*/
692 if (resume_trigger && suspension_active) { suspension_active = 0; cpu_trigger(resume_trigger); }
693
694 /* IRQ 1 is the main 60hz vblank interrupt*/
695 if (gx_syncen & 0x20)
696 {
697 gx_syncen &= ~0x20;
698
699 if ((konamigx_wrport1_1 & 0x81) == 0x81 || (gx_syncen & 1))
700 {
701 gx_syncen &= ~1;
702 cpu_set_irq_line(0, 1, HOLD_LINE);
703 }
704 }
705
706 dmastart_callback(0);
707 }
708
INTERRUPT_GEN(konamigx_vbinterrupt_type4)709 static INTERRUPT_GEN(konamigx_vbinterrupt_type4)
710 {
711 /* lift idle suspension*/
712 if (resume_trigger && suspension_active) { suspension_active = 0; cpu_trigger(resume_trigger); }
713
714 /* IRQ 1 is the main 60hz vblank interrupt*/
715 /* the gx_syncen & 0x20 test doesn't work on type 3 or 4 ROM boards, likely because the ROM board*/
716 /* generates the timing in those cases. With this change, rushing heroes and rng2 boot :)*/
717 if (1) /* gx_syncen & 0x20)*/
718 {
719 gx_syncen &= ~0x20;
720
721 if ((konamigx_wrport1_1 & 0x81) == 0x81 || (gx_syncen & 1))
722 {
723 gx_syncen &= ~1;
724 cpu_set_irq_line(0, 1, HOLD_LINE);
725 }
726 }
727
728 dmastart_callback(0);
729 }
730
INTERRUPT_GEN(konamigx_hbinterrupt)731 static INTERRUPT_GEN(konamigx_hbinterrupt)
732 {
733 if (!cpu_getiloops())
734 {
735 konamigx_vbinterrupt_type4();
736 }
737 else /* hblank*/
738 {
739 /* IRQ 2 is a programmable interrupt with scanline resolution*/
740 if (gx_syncen & 0x40)
741 {
742 gx_syncen &= ~0x40;
743
744 if ((konamigx_wrport1_1 & 0x82) == 0x82 || (gx_syncen & 2))
745 {
746 gx_syncen &= ~2;
747 cpu_set_irq_line(0, 2, HOLD_LINE);
748 }
749 }
750 }
751 }
752
753
754 /**********************************************************************************/
755 /* sound communication handlers */
756
757 static data8_t sndto000[16], sndto020[16]; /* read/write split mapping */
758 static int snd020_hack;
759
READ32_HANDLER(sound020_r)760 static READ32_HANDLER( sound020_r )
761 {
762 data32_t reg, MSW, LSW, rv = 0;
763
764 reg = offset << 1;
765
766 if (!(mem_mask & 0xff000000))
767 {
768 MSW = sndto020[reg];
769 if (reg == 2) MSW &= ~3; /* supress VOLWR busy flags*/
770 rv |= MSW<<24;
771 }
772
773 if (!(mem_mask & 0x0000ff00))
774 {
775 LSW = sndto020[reg+1];
776 rv |= LSW<<8;
777 }
778
779 /* log_cb(RETRO_LOG_DEBUG, LOGPRE "Read 68k @ %x (PC=%x)\n", reg, activecpu_get_pc());*/
780
781 /* we clearly have some problem because some games require these hacks*/
782 /* perhaps 68000/68020 timing is skewed?*/
783 switch (snd020_hack)
784 {
785 case 1: /* Lethal Enforcer init*/
786 if (reg == 0) rv |= 0xff00;
787 break;
788 case 2: /* Winning Spike*/
789 if (activecpu_get_pc() == 0x2026fe) rv = 0xc0c0c0c0;
790 break;
791 case 3: /* Run'n Gun 2*/
792 if (activecpu_get_pc() == 0x24f122) rv = 0xc0c0c0c0;
793 break;
794 case 4: /* Rushing Heroes*/
795 if (activecpu_get_pc() == 0x20eda6) rv = 0xc0c0c0c0;
796 break;
797 case 5: /* Vs. Net Soccer*/
798 if (activecpu_get_pc() == 0x24c63e) rv = 0xc0c0c0c0;
799 break;
800 case 6: /* Slam Dunk 2*/
801 if (activecpu_get_pc() == 0x24f21c) rv = 0xc0c0c0c0;
802 break;
803 }
804
805 return(rv);
806 }
807
write_snd_020(int reg,int val)808 static INLINE void write_snd_020(int reg, int val)
809 {
810 sndto000[reg] = val;
811
812 if (reg == 7)
813 {
814 cpu_set_irq_line(1, 1, HOLD_LINE);
815 }
816 }
817
WRITE32_HANDLER(sound020_w)818 static WRITE32_HANDLER( sound020_w )
819 {
820 int reg=0, val=0;
821
822 if (!(mem_mask & 0xff000000))
823 {
824 reg = offset<<1;
825 val = data>>24;
826 write_snd_020(reg, val);
827 }
828
829 if (!(mem_mask & 0x0000ff00))
830 {
831 reg = (offset<<1)+1;
832 val = (data>>8)&0xff;
833 write_snd_020(reg, val);
834 }
835 }
836
837
838 /**********************************************************************************/
839 /* input handlers */
840
841 /* National Semiconductor ADC0834 4-channel serial ADC emulation */
842 static int analog_prevclk;
843 static int analog_val = 0;
844 static int analog_latch;
845 static int analog_state = 0;
846 static int analog_cmd = 0;
847
READ32_HANDLER(adc0834_r)848 static READ32_HANDLER( adc0834_r )
849 {
850 return analog_val;
851 }
852
WRITE32_HANDLER(adc0834_w)853 static WRITE32_HANDLER( adc0834_w )
854 {
855 int clk, cs, di;
856
857 clk = (data >> 24)&1; /* clock*/
858 di = (data >> 25)&1; /* data in*/
859 cs = ((data >> 26)^1)&1; /* chip select*/
860
861 /* resync states if CS drops*/
862 if (!cs)
863 {
864 analog_state = 0;
865 analog_prevclk = 0;
866 return;
867 }
868
869 /* CS is up, we act on the rising edge of CLK*/
870 if ((clk) && (!analog_prevclk))
871 {
872 switch (analog_state)
873 {
874 case 0: /* wait for addr*/
875 case 1:
876 case 2:
877 case 3:
878 case 4:
879 analog_cmd <<= 1;
880 analog_cmd |= di;
881 analog_state++;
882 break;
883
884 case 5: /* got command, latch in the proper analog read*/
885 if (analog_cmd & 4)
886 {
887 analog_latch = readinputport(10); /* gas*/
888 }
889 else
890 {
891 analog_latch = readinputport(9); /* steer*/
892 }
893 analog_val = (analog_latch & 0x80)<<17;
894 analog_latch <<= 1;
895 analog_state++;
896 break;
897
898 case 6: /* clock out the data*/
899 analog_val = (analog_latch & 0x80)<<17;
900 analog_latch <<= 1;
901 break;
902 }
903 }
904
905 analog_prevclk = clk;
906 }
907
READ32_HANDLER(le2_gun_H_r)908 static READ32_HANDLER( le2_gun_H_r )
909 {
910 int p1x = readinputport(9)*287/0xff+22;
911 int p2x = readinputport(11)*287/0xff+22;
912
913 return (p1x<<16)|p2x;
914 }
915
READ32_HANDLER(le2_gun_V_r)916 static READ32_HANDLER( le2_gun_V_r )
917 {
918 int p1y = readinputport(10)*223/0xff+1;
919 int p2y = readinputport(12)*223/0xff+1;
920
921 return (p1y<<16)|p2y;
922 }
923
READ32_HANDLER(service_r)924 static READ32_HANDLER( service_r )
925 {
926 int res = (readinputport(1)<<24) | (readinputport(8)<<8);
927
928 if (init_eeprom_count)
929 {
930 init_eeprom_count--;
931 res &= ~0x08000000;
932 }
933
934 return res;
935 }
936
READ32_HANDLER(players_r)937 static READ32_HANDLER( players_r )
938 {
939 return (readinputport(2)<<24) | (readinputport(3)<<16) | (readinputport(4)<<8) | (readinputport(5));
940 }
941
942
943 /**********************************************************************************/
944 /* system or game dependent handlers */
945
READ32_HANDLER(gx5bppspr_r)946 static READ32_HANDLER( gx5bppspr_r )
947 {
948 return (K055673_rom_word_r(offset*2+1, 0xffff) | K055673_rom_word_r(offset*2, 0xffff)<<16);
949 }
950
READ32_HANDLER(gx6bppspr_r)951 static READ32_HANDLER( gx6bppspr_r )
952 {
953 return (K055673_GX6bpp_rom_word_r(offset*2+1, 0xffff) | K055673_GX6bpp_rom_word_r(offset*2, 0xffff)<<16);
954 }
955
READ32_HANDLER(type1_roz_r1)956 static READ32_HANDLER( type1_roz_r1 )
957 {
958 data32_t *ROM = (data32_t *)memory_region(REGION_GFX3);
959
960 return ROM[offset];
961 }
962
READ32_HANDLER(type1_roz_r2)963 static READ32_HANDLER( type1_roz_r2 )
964 {
965 data32_t *ROM = (data32_t *)memory_region(REGION_GFX3);
966
967 ROM += (0x600000/2);
968
969 return ROM[offset];
970 }
971
972 static int sync_frame = 0;
973
READ32_HANDLER(type3_sync_r)974 static READ32_HANDLER( type3_sync_r )
975 {
976 sync_frame ^= 0xffffffff;
977
978 return sync_frame;
979 }
980
981 static int last_prot_op = -1, last_prot_clk;
982
983 /*
984 Run and Gun 2, Rushing Heroes, Winning Spike, and Vs. Net Soccer contain a XILINX FPGA that serves as security.
985
986 RnG2's version is stamped "K002204", while Rushing Heroes' is "K0000035891". Vs Net's is unknown at this time.
987 Winning Spike's is "0000032652".
988
989 RnG2's is used to generate the sprite list just like the ESC, among other tasks. (RnG2 sends many commands per frame to the protection).
990
991 Rushing Heroes is much simpler and uses only 1 command during gameplay. They set up a giant table of pointers
992 at C10200->C102EF (see the routine at 2043CE. C10001 contains which monitor they want to update (main or sub)
993 and it changes the pointers accordingly). This sets up the palettes, the sprite list, and the ROZ tilemap, from the looks of things.
994
995 Here are the lists constructed by Rushing Heroes (I've reordered the original code so it's in linear address order).
996 Vs. Net Soccer does the same thing starting at 2064DC (in fact, Rushing Heroes appears to be heavily based on Vs. Net's code).
997
998 main monitor (2043da) sub monitor (204616)
999 move.l #$C0C000,($C10200).l move.l #$C1C000,($C10200).l
1000 move.l #$C10000,($C10204).l move.l #$C20000,($C10204).l
1001 move.l #$C0C000,($C10208).l move.l #$C1C000,($C10208).l
1002 move.l #$C0C200,($C1020C).l move.l #$C1C200,($C1020C).l
1003 move.l #$C0C200,($C10210).l move.l #$C1C200,($C10210).l
1004 move.l #$C0D800,($C10214).l move.l #$C1D800,($C10214).l
1005 move.l #$C0D800,($C10218).l move.l #$C1D800,($C10218).l
1006 move.l #$C0EE00,($C1021C).l move.l #$C1EE00,($C1021C).l
1007 move.l #$C0EE00,($C10220).l move.l #$C1EE00,($C10220).l
1008 move.l #$C0F200,($C10224).l move.l #$C1F200,($C10224).l
1009 move.l #$C0EE00,($C10228).l move.l #$C1EE00,($C10228).l
1010 move.l #$C0EE00,($C1022C).l move.l #$C1EE00,($C1022C).l
1011 move.l #$C0F000,($C10230).l move.l #$C1F000,($C10230).l
1012 move.l #$C1C200,($C10234).l move.l #$C0C200,($C10234).l
1013 move.l #$C1EE00,($C10238).l move.l #$C0EE00,($C10238).l
1014 move.l #$C0A000,($C1023C).l move.l #$C1A000,($C1023C).l
1015 move.l #$C0C000,($C10240).l move.l #$C1C000,($C10240).l
1016 move.l #$C0A000,($C10244).l move.l #$C1A000,($C10244).l
1017 move.l #$C10000,($C10248).l move.l #$C20000,($C10248).l
1018 move.l #$C0FA00,($C1024C).l move.l #$C1FA00,($C1024C).l
1019 move.l #$C1A000,($C10250).l move.l #$C0A000,($C10250).l
1020 move.l #$C00000,($C10260).l move.l #$C10000,($C10260).l
1021 move.l #$C10000,($C10264).l move.l #$C00000,($C10264).l
1022 move.l #$C00800,($C10268).l move.l #$C10800,($C10268).l
1023 move.l #$C01000,($C1026C).l move.l #$C11000,($C1026C).l
1024 move.l #$C00500,($C10270).l move.l #$C10500,($C10270).l
1025 move.l #$C00520,($C10274).l move.l #$C10520,($C10274).l
1026 move.l #$C00540,($C10278).l move.l #$C10540,($C10278).l
1027 move.l #$C00560,($C1027C).l move.l #$C10560,($C1027C).l
1028 move.l #$C100C0,($C10280).l move.l #$C100E0,($C10280).l
1029 move.l #$C100D0,($C10284).l move.l #$C100F0,($C10284).l
1030 move.l #$C100E0,($C10288).l move.l #$C100C0,($C10288).l
1031 move.l #$C100F0,($C1028C).l move.l #$C100D0,($C1028C).l
1032 move.l #$E82000,($C10290).l move.l #$EA2000,($C10290).l palette segment (E80000 = main monitor palette, EA0000 = sub monitor palette)
1033 move.l #$E83000,($C10294).l move.l #$EA3000,($C10294).l palette segment
1034 move.l #$E84000,($C10298).l move.l #$EA4000,($C10298).l palette segment
1035 move.l #$E85000,($C1029C).l move.l #$EA5000,($C1029C).l palette segment
1036 move.l #$E80000,($C102A0).l move.l #$EA0000,($C102A0).l palette segment
1037 move.l #$E86000,($C102A4).l move.l #$EA6000,($C102A4).l palette segment
1038 move.l #$E86800,($C102A8).l move.l #$EA6800,($C102A8).l palette segment
1039 move.l #$D20000,($C102B0).l move.l #$D21000,($C102B0).l sprite list
1040 move.l #$D21000,($C102B4).l move.l #$D22000,($C102B4).l sprite end
1041 move.l #$C09000,($C102B8).l move.l #$C19000,($C102B8).l
1042 move.l #$C0A000,($C102BC).l move.l #$C1A000,($C102BC).l
1043 move.l #$C00700,($C102C0).l move.l #$C10700,($C102C0).l
1044 move.l #$C00780,($C102C4).l move.l #$C10780,($C102C4).l
1045 move.l #$C10700,($C102C8).l move.l #$C00700,($C102C8).l
1046 move.l #$C10780,($C102CC).l move.l #$C00780,($C102CC).l
1047 move.l #$C02070,($C102D0).l move.l #$C12070,($C102D0).l
1048 move.l #$C09000,($C102D4).l move.l #$C19000,($C102D4).l
1049 move.l #$C12070,($C102D8).l move.l #$C02070,($C102D8).l
1050 move.l #$C19000,($C102DC).l move.l #$C09000,($C102DC).l
1051 move.l #$C12000,($C102E0).l move.l #$C12000,($C102E0).l
1052 move.l #$C20000,($C102E4).l move.l #$C20000,($C102E4).l
1053 move.l #$C10300,($C102E8).l move.l #$C10300,($C102E8).l
1054 move.l #$C10400,($C102EC).l move.l #$C10400,($C102EC).l
1055 */
1056
WRITE32_HANDLER(type4_prot_w)1057 static WRITE32_HANDLER( type4_prot_w )
1058 {
1059 int clk;
1060 int i;
1061
1062 if (offset == 1)
1063 {
1064 last_prot_op = data>>16;
1065 }
1066 else
1067 {
1068 data >>= 16;
1069
1070 clk = data & 0x200;
1071 if ((clk == 0) && (last_prot_clk != 0))
1072 {
1073 if (last_prot_op != -1)
1074 {
1075 /*
1076 known commands:
1077 rng2 rushhero vsnet winspike what
1078 ------------------------------------------------------------------------------
1079 0a56 0d96 0d14 0d1c memcpy from c01000 to c01400 for 0x400 bytes
1080 0b16 generate sprite list at c01000 or c08400 (not sure entirely, see routine at 209922 in rungun2)
1081 0d97 0515 parse big DMA list at c10200
1082 */
1083
1084 if ((last_prot_op == 0xa56) || (last_prot_op == 0xd96) || (last_prot_op == 0xd14) || (last_prot_op == 0xd1c))
1085 {
1086 /* memcpy from c01000 to c01400 for 0x400 bytes (startup check for type 4 games)*/
1087 for (i = 0; i < 0x400; i += 2)
1088 {
1089 cpu_writemem24bedw_word(0xc01400+i, cpu_readmem24bedw_word(0xc01000+i));
1090 }
1091 }
1092 else
1093 {
1094 log_cb(RETRO_LOG_DEBUG, LOGPRE "GXT4: unknown protection command %x (PC=%x)\n", last_prot_op, activecpu_get_pc());
1095 }
1096
1097 if (konamigx_wrport1_1 & 0x10)
1098 {
1099 gx_rdport1_3 &= ~8;
1100 cpu_set_irq_line(0, 4, HOLD_LINE);
1101 }
1102
1103 /* don't accidentally do a phony command*/
1104 last_prot_op = -1;
1105 }
1106 }
1107 last_prot_clk = clk;
1108 }
1109 }
1110
1111 /* cabinet lamps for type 1 games*/
WRITE32_HANDLER(type1_cablamps_w)1112 static WRITE32_HANDLER( type1_cablamps_w )
1113 {
1114 set_led_status(0, (data>>24)&1);
1115 }
1116
1117 /**********************************************************************************/
1118 /* 68020 memory handlers */
1119
MEMORY_READ32_START(readmem)1120 static MEMORY_READ32_START( readmem )
1121 { 0x000000, 0x01ffff, MRA32_ROM }, /* bios*/
1122 { 0x200000, 0x2fffff, MRA32_ROM }, /* game program*/
1123 { 0x400000, 0x5fffff, MRA32_ROM }, /* data ROM*/
1124 { 0xc00000, 0xc1ffff, MRA32_RAM }, /* work ram*/
1125 { 0xd00000, 0xd01fff, K056832_5bpp_rom_long_r }, /* tile ROM readthrough (for test menu)*/
1126 { 0xd20000, 0xd20fff, K053247_long_r }, /* sprite RAM*/
1127 { 0xd21000, 0xd23fff, MRA32_RAM }, /* additional RAM in the sprite region*/
1128 { 0xd44000, 0xd44003, le2_gun_H_r }, /* gun horizontal position*/
1129 { 0xd44004, 0xd44007, le2_gun_V_r }, /* gun vertical position*/
1130 { 0xd4c000, 0xd4c01f, ccu_r }, /* CRT control unit*/
1131 { 0xd52010, 0xd5201f, sound020_r }, /* shared RAM with sound 68000*/
1132 { 0xd5a000, 0xd5a003, eeprom_r }, /* EEPROM read*/
1133 { 0xd5c000, 0xd5c003, players_r }, /* player 1 & 2 JAMMA inputs*/
1134 { 0xd5e000, 0xd5e003, service_r }, /* service switch*/
1135 { 0xd90000, 0xd97fff, MRA32_RAM }, /* palette RAM*/
1136 { 0xda0000, 0xda1fff, K056832_ram_long_r }, /* tilemap RAM*/
1137 { 0xda2000, 0xda3fff, K056832_ram_long_r }, /* tilemap RAM mirror read*/
1138 #if GX_DEBUG
1139 { 0xd40000, 0xd4003f, K056832_long_r },
1140 { 0xd50000, 0xd500ff, K055555_long_r },
1141 { 0xd4a010, 0xd4a01f, K053247_reg_long_r },
1142 #endif
1143 MEMORY_END
1144
1145 static MEMORY_WRITE32_START( writemem )
1146 { 0xc00000, 0xc1ffff, MWA32_RAM, &gx_workram },
1147 { 0xcc0000, 0xcc0003, esc_w },
1148 { 0xd20000, 0xd20fff, K053247_long_w },
1149 { 0xd21000, 0xd23fff, MWA32_RAM },
1150 { 0xd40000, 0xd4003f, K056832_long_w }, /* VACSET*/
1151 { 0xd44000, 0xd4400f, konamigx_tilebank_w },/* VSCCS*/
1152 { 0xd48000, 0xd48007, K053246_long_w }, /* OBJSET1*/
1153 { 0xd4a010, 0xd4a01f, K053247_reg_long_w }, /* OBJSET2*/
1154 { 0xd4c000, 0xd4c01f, ccu_w }, /* CCU1(ccu_w)*/
1155 { 0xd4e000, 0xd4e01f, MWA32_NOP }, /* CCU2(not used by GX)*/
1156 { 0xd50000, 0xd500ff, K055555_long_w }, /* PCU2*/
1157 { 0xd52000, 0xd5200f, sound020_w },
1158 { 0xd56000, 0xd56003, eeprom_w },
1159 { 0xd58000, 0xd58003, control_w },
1160 { 0xd80000, 0xd8001f, K054338_long_w }, /* CLTC*/
1161 { 0xda0000, 0xda1fff, K056832_ram_long_w },
1162 { 0xda2000, 0xda3fff, K056832_ram_long_w }, /* tilemap RAM mirror write*/
1163 { 0xd90000, 0xd97fff, konamigx_palette_w, &paletteram32 },
1164 MEMORY_END
1165
1166 static MEMORY_READ32_START( type1readmem )
1167 { 0x000000, 0x01ffff, MRA32_ROM }, /* bios*/
1168 { 0x200000, 0x2fffff, MRA32_ROM }, /* game program*/
1169 { 0x400000, 0x7fffff, MRA32_ROM }, /* data ROM*/
1170 { 0xc00000, 0xc1ffff, MRA32_RAM }, /* work ram*/
1171 { 0xd00000, 0xd01fff, K056832_6bpp_rom_long_r },
1172 { 0xd20000, 0xd20fff, K053247_long_r }, /* sprite RAM*/
1173 { 0xd21000, 0xd23fff, MRA32_RAM }, /* additional RAM in the sprite region*/
1174 { 0xd4a000, 0xd4a01f, gx6bppspr_r }, /* sprite ROM readback*/
1175 { 0xd4c000, 0xd4c01f, ccu_r }, /* CRT control unit*/
1176 { 0xd52010, 0xd5201f, sound020_r }, /* shared RAM with sound 68000*/
1177 { 0xd5a000, 0xd5a003, eeprom_r }, /* EEPROM read*/
1178 { 0xd5c000, 0xd5c003, players_r }, /* player 1 & 2 JAMMA inputs*/
1179 { 0xd5e000, 0xd5e003, service_r }, /* service switch*/
1180 { 0xd90000, 0xd97fff, MRA32_RAM }, /* palette RAM*/
1181 { 0xda0000, 0xda1fff, K056832_ram_long_r }, /* tilemap RAM*/
1182 { 0xda2000, 0xda3fff, K056832_ram_long_r }, /* tilemap RAM mirror read*/
1183 { 0xdc0000, 0xdc1fff, MRA32_RAM }, /* LAN? (Racin Force has, KOG doesn't)*/
1184 { 0xdd0000, 0xdd00ff, MRA32_NOP }, /* LAN board*/
1185 { 0xddc000, 0xddcfff, adc0834_r },
1186 { 0xe80000, 0xe81fff, MRA32_RAM }, /* chips 21L+19L / S*/
1187 { 0xec0000, 0xedffff, MRA32_RAM }, /* chips 20J+23J+18J / S*/
1188 { 0xf00000, 0xf3ffff, type1_roz_r1 }, /* ROM readback*/
1189 { 0xf40000, 0xf7ffff, type1_roz_r2 }, /* ROM readback*/
1190 { 0xf80000, 0xf80fff, MRA32_RAM }, /* chip 21Q / S*/
1191 { 0xfc0000, 0xfc00ff, MRA32_RAM }, /* chip 22N / S*/
1192 MEMORY_END
1193
1194 static MEMORY_WRITE32_START( type1writemem )
1195 { 0xc00000, 0xc1ffff, MWA32_RAM, &gx_workram },
1196 { 0xcc0000, 0xcc0003, esc_w },
1197 { 0xd20000, 0xd20fff, K053247_long_w },
1198 { 0xd21000, 0xd23fff, MWA32_RAM },
1199 { 0xd40000, 0xd4003f, K056832_long_w }, /* VACSET*/
1200 { 0xd44000, 0xd4400f, konamigx_tilebank_w }, /* VSCCS*/
1201 { 0xd48000, 0xd48007, K053246_long_w }, /* OBJSET1*/
1202 { 0xd4a010, 0xd4a01f, K053247_reg_long_w }, /* OBJSET2*/
1203 { 0xd4c000, 0xd4c01f, ccu_w }, /* CCU1(ccu_w)*/
1204 { 0xd4e000, 0xd4e01f, MWA32_NOP }, /* CCU2(not used by GX)*/
1205 { 0xd50000, 0xd500ff, K055555_long_w }, /* PCU2*/
1206 { 0xd52000, 0xd5200f, sound020_w },
1207 { 0xd56000, 0xd56003, eeprom_w },
1208 { 0xd58000, 0xd58003, control_w },
1209 { 0xd80000, 0xd8001f, K054338_long_w }, /* CLTC*/
1210 { 0xda0000, 0xda1fff, K056832_ram_long_w },
1211 { 0xda2000, 0xda3fff, K056832_ram_long_w }, /* tilemap RAM mirror write*/
1212 { 0xd90000, 0xd97fff, konamigx_palette_w, &paletteram32 },
1213 { 0xdc0000, 0xdc1fff, MWA32_RAM }, /* LAN? (Racin Force has, KOG doesn't)*/
1214 { 0xdd0000, 0xdd00ff, MWA32_NOP }, /* LAN board*/
1215 { 0xdda000, 0xddafff, adc0834_w },
1216 { 0xdde000, 0xdde003, type1_cablamps_w },
1217 { 0xe00000, 0xe0001f, MWA32_RAM, (data32_t**)&K053936_1_ctrl },
1218 { 0xe20000, 0xe2000f, MWA32_NOP },
1219 { 0xe40000, 0xe40003, MWA32_NOP },
1220 { 0xe80000, 0xe81fff, MWA32_RAM, (data32_t**)&K053936_1_linectrl },
1221 { 0xec0000, 0xedffff, konamigx_t1_psacmap_w, &gx_psacram },
1222 { 0xf80000, 0xf80fff, MWA32_RAM },
1223 { 0xfc0000, 0xfc00ff, MWA32_RAM },
1224 MEMORY_END
1225
1226 static MEMORY_READ32_START( type3readmem )
1227 { 0x000000, 0x01ffff, MRA32_ROM }, /* bios*/
1228 { 0x200000, 0x2fffff, MRA32_ROM }, /* game program*/
1229 { 0x400000, 0x5fffff, MRA32_ROM }, /* data ROM*/
1230 { 0xc00000, 0xc1ffff, MRA32_RAM }, /* work ram*/
1231 { 0xd00000, 0xd01fff, K056832_rom_long_r }, /* tile ROM readthrough (for test menu)*/
1232 { 0xd20000, 0xd20fff, K053247_long_r }, /* sprite RAM*/
1233 { 0xd21000, 0xd23fff, MRA32_RAM }, /* additional RAM in the sprite region*/
1234 /* { 0xd4a000, 0xd4bfff, K053246_long_r }, */ /* sprite ROM readthrough (for test menu)*/
1235 { 0xd4c000, 0xd4c01f, ccu_r }, /* CRT control unit*/
1236 { 0xd52010, 0xd5201f, sound020_r }, /* shared RAM with sound 68000*/
1237 { 0xd5a000, 0xd5a003, eeprom_r }, /* EEPROM read*/
1238 { 0xd5c000, 0xd5c003, players_r }, /* player 1 & 2 JAMMA inputs*/
1239 { 0xd5e000, 0xd5e003, service_r }, /* service switch*/
1240 { 0xd90000, 0xd97fff, MRA32_RAM }, /* palette RAM*/
1241 { 0xda0000, 0xda1fff, K056832_ram_long_r }, /* tilemap RAM*/
1242 { 0xe60000, 0xe60fff, MRA32_RAM },
1243 { 0xe80000, 0xe87fff, MRA32_RAM },
1244 { 0xea0000, 0xea3fff, MRA32_RAM },
1245 { 0xec0000, 0xec0003, type3_sync_r },
1246 { 0xf00000, 0xf07fff, MRA32_RAM },
1247 MEMORY_END
1248
1249 static MEMORY_WRITE32_START( type3writemem )
1250 { 0xc00000, 0xc1ffff, MWA32_RAM, &gx_workram },
1251 { 0xcc0000, 0xcc0007, type4_prot_w },
1252 { 0xd20000, 0xd20fff, K053247_long_w },
1253 { 0xd21000, 0xd23fff, MWA32_RAM },
1254 { 0xd44000, 0xd4400f, konamigx_tilebank_w },
1255 { 0xd4a018, 0xd4a01b, MWA32_NOP },
1256 { 0xd4c01c, 0xd4c01f, MWA32_NOP },
1257 { 0xd50000, 0xd5007f, K055555_long_w },
1258 { 0xd52000, 0xd5200f, sound020_w },
1259 { 0xd40000, 0xd4003f, K056832_long_w },
1260 { 0xd48000, 0xd4803f, K053246_long_w },
1261 { 0xd56000, 0xd56003, eeprom_w },
1262 { 0xd58000, 0xd58003, control_w },
1263 { 0xd80000, 0xd800ff, K054338_long_w },
1264 { 0xda0000, 0xda1fff, K056832_ram_long_w },
1265 { 0xd90000, 0xd97fff, MWA32_RAM },
1266 { 0xe00000, 0xe0001f, MWA32_RAM, (data32_t**)&K053936_1_ctrl },
1267 { 0xe20000, 0xe20003, MWA32_NOP },
1268 { 0xe40000, 0xe40003, MWA32_NOP },
1269 { 0xe60000, 0xe60fff, MWA32_RAM, (data32_t**)&K053936_1_linectrl },
1270 { 0xe80000, 0xe87fff, konamigx_555_palette_w, &paletteram32 }, /* main monitor palette (twice as large as reality)*/
1271 { 0xea0000, 0xea3fff, konamigx_555_palette2_w, &gx_subpaletteram32 }, /* sub monitor palette*/
1272 { 0xf00000, 0xf07fff, MWA32_RAM },
1273 MEMORY_END
1274
1275 static MEMORY_READ32_START( type4readmem )
1276 { 0x000000, 0x01ffff, MRA32_ROM }, /* bios*/
1277 { 0x200000, 0x2fffff, MRA32_ROM }, /* game program*/
1278 { 0x400000, 0x5fffff, MRA32_ROM }, /* data ROM*/
1279 { 0xc00000, 0xc1ffff, MRA32_RAM }, /* work ram*/
1280 { 0xd00000, 0xd01fff, K056832_rom_long_r }, /* tile ROM readthrough (for test menu)*/
1281 { 0xd20000, 0xd20fff, K053247_long_r }, /* sprite RAM*/
1282 { 0xd21000, 0xd23fff, MRA32_RAM }, /* additional RAM in the sprite region*/
1283 { 0xd4a000, 0xd4bfff, K053246_long_r }, /* sprite ROM readthrough (for test menu)*/
1284 { 0xd4c000, 0xd4c01f, ccu_r }, /* CRT control unit*/
1285 { 0xd52010, 0xd5201f, sound020_r }, /* shared RAM with sound 68000*/
1286 { 0xd5a000, 0xd5a003, eeprom_r }, /* EEPROM read*/
1287 { 0xd5c000, 0xd5c003, players_r }, /* player 1 & 2 JAMMA inputs*/
1288 { 0xd5e000, 0xd5e003, service_r }, /* service switch*/
1289 { 0xd90000, 0xd97fff, MRA32_RAM }, /* palette RAM*/
1290 { 0xda0000, 0xda1fff, K056832_ram_long_r }, /* tilemap RAM*/
1291 { 0xe60000, 0xe60fff, MRA32_RAM },
1292 { 0xe80000, 0xe8ffff, MRA32_RAM },
1293 { 0xea0000, 0xea7fff, MRA32_RAM },
1294 { 0xec0000, 0xec0003, type3_sync_r }, /* type 4 polls this too*/
1295 { 0xf00000, 0xf07fff, MRA32_RAM },
1296 MEMORY_END
1297
1298 static MEMORY_WRITE32_START( type4writemem )
1299 { 0xc00000, 0xc1ffff, MWA32_RAM, &gx_workram },
1300 { 0xcc0000, 0xcc0007, type4_prot_w },
1301 { 0xd44000, 0xd4400f, konamigx_tilebank_w },
1302 { 0xd4a018, 0xd4a01b, MWA32_NOP },
1303 { 0xd4c01c, 0xd4c01f, MWA32_NOP },
1304 { 0xd50000, 0xd5007f, K055555_long_w },
1305 { 0xd20000, 0xd20fff, K053247_long_w },
1306 { 0xd21000, 0xd23fff, MWA32_RAM },
1307 { 0xd52000, 0xd5200f, sound020_w },
1308 { 0xd40000, 0xd4003f, K056832_long_w },
1309 { 0xd48000, 0xd4803f, K053246_long_w },
1310 { 0xd56000, 0xd56003, eeprom_w },
1311 { 0xd58000, 0xd58003, control_w },
1312 { 0xd80000, 0xd800ff, K054338_long_w },
1313 { 0xd90000, 0xd97fff, MWA32_RAM },
1314 { 0xda0000, 0xda1fff, K056832_ram_long_w },
1315 { 0xe00000, 0xe0001f, MWA32_RAM, (data32_t**)&K053936_1_ctrl },
1316 { 0xe20000, 0xe20003, MWA32_NOP },
1317 { 0xe40000, 0xe40003, MWA32_NOP },
1318 { 0xe60000, 0xe60fff, MWA32_RAM, (data32_t**)&K053936_1_linectrl }, /* 29C & 29G (PSAC2 line control)*/
1319 { 0xe80000, 0xe8ffff, konamigx_palette_w, &paletteram32 }, /* 11G/13G/15G (main screen palette RAM) (twice as large as reality)*/
1320 { 0xea0000, 0xea7fff, konamigx_palette2_w, &gx_subpaletteram32 }, /* 5G/7G/9G (sub screen palette RAM)*/
1321 { 0xf00000, 0xf07fff, konamigx_t4_psacmap_w, &gx_psacram }, /* PSAC2 tilemap*/
1322 MEMORY_END
1323
1324 /**********************************************************************************/
1325 /* Sound handling */
1326
1327 static READ16_HANDLER( dual539_r )
1328 {
1329 data16_t ret = 0;
1330
1331 if (ACCESSING_LSB16)
1332 ret |= K054539_1_r(offset);
1333 if (ACCESSING_MSB16)
1334 ret |= K054539_0_r(offset)<<8;
1335
1336 return ret;
1337 }
1338
WRITE16_HANDLER(dual539_w)1339 static WRITE16_HANDLER( dual539_w )
1340 {
1341 if (ACCESSING_LSB16)
1342 K054539_1_w(offset, data);
1343 if (ACCESSING_MSB16)
1344 K054539_0_w(offset, data>>8);
1345 }
1346
READ16_HANDLER(sndcomm68k_r)1347 static READ16_HANDLER( sndcomm68k_r )
1348 {
1349 return sndto000[offset];
1350 }
1351
WRITE16_HANDLER(sndcomm68k_w)1352 static WRITE16_HANDLER( sndcomm68k_w )
1353 {
1354 /* log_cb(RETRO_LOG_DEBUG, LOGPRE "68K: write %x to %x\n", data, offset);*/
1355 sndto020[offset] = data;
1356 }
1357
1358 /* 68000 memory handling */
MEMORY_READ16_START(sndreadmem)1359 static MEMORY_READ16_START( sndreadmem )
1360 { 0x000000, 0x03ffff, MRA16_ROM },
1361 { 0x100000, 0x10ffff, MRA16_RAM },
1362 { 0x200000, 0x2004ff, dual539_r },
1363 { 0x300000, 0x300001, tms57002_data_word_r },
1364 { 0x400010, 0x40001f, sndcomm68k_r },
1365 { 0x500000, 0x500001, tms57002_status_word_r },
1366 MEMORY_END
1367
1368 static MEMORY_WRITE16_START( sndwritemem )
1369 { 0x100000, 0x10ffff, MWA16_RAM, &gx_sndram },
1370 { 0x200000, 0x2004ff, dual539_w },
1371 { 0x300000, 0x300001, tms57002_data_word_w },
1372 { 0x400000, 0x40000f, sndcomm68k_w },
1373 { 0x500000, 0x500001, tms57002_control_word_w },
1374 { 0x580000, 0x580001, MWA16_NOP }, /* unknown write*/
1375 MEMORY_END
1376
1377 /* 68000 timer interrupt controller */
1378 static INTERRUPT_GEN(gxaudio_interrupt)
1379 {
1380 cpu_set_irq_line(1, 2, HOLD_LINE);
1381 }
1382
1383 static struct K054539interface k054539_interface =
1384 {
1385 2, /* 2 chips */
1386 48000,
1387 { REGION_SOUND1, REGION_SOUND1 },
1388 { { 100, 100 }, { 100, 100 } },
1389 { NULL }
1390 };
1391
1392
1393 /**********************************************************************************/
1394 /* hardware definitions */
1395
1396 /* i think we could reduce the number of machine drivers with different visible areas by adjusting the sprite
1397 positioning on a per game basis too */
1398
1399 static struct GfxLayout bglayout_8bpp =
1400 {
1401 16,16,
1402 RGN_FRAC(1,1),
1403 8,
1404 { 0, 1, 2, 3, 4, 5, 6, 7 },
1405 { 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 },
1406 { 0*128, 1*128, 2*128, 3*128, 4*128, 5*128, 6*128, 7*128, 8*128, 9*128, 10*128, 11*128, 12*128, 13*128, 14*128, 15*128 },
1407 16*128
1408 };
1409
1410 struct GfxLayout t1_charlayout6 =
1411 {
1412 16, 16,
1413 RGN_FRAC(1,1),
1414 6,
1415 { 20, 16, 12, 8, 4, 0 },
1416 { 3, 2, 1, 0, 27, 26, 25, 24, 51, 50, 49, 48, 75, 74, 73, 72 },
1417 { 0, 12*8, 12*8*2, 12*8*3, 12*8*4, 12*8*5, 12*8*6, 12*8*7,
1418 12*8*8, 12*8*9, 12*8*10, 12*8*11, 12*8*12, 12*8*13, 12*8*14, 12*8*15 },
1419 16*16*6
1420 };
1421
1422 struct GfxLayout t1_charlayout8 =
1423 {
1424 16, 16,
1425 RGN_FRAC(1,1),
1426 8,
1427 { 28, 24, 20, 16, 12, 8, 4, 0 },
1428 { 3, 2, 1, 0, 35, 34, 33, 32, 67, 66, 65, 64, 99, 98, 97, 96 },
1429 { 0, 16*8, 16*8*2, 16*8*3, 16*8*4, 16*8*5, 16*8*6, 16*8*7,
1430 16*8*8, 16*8*9, 16*8*10, 16*8*11, 16*8*12, 16*8*13, 16*8*14, 16*8*15 },
1431 16*16*8
1432 };
1433
1434 /* type 1 (opengolf + racinfrc) use 6 and 8 bpp planar layouts for the 53936 */
1435 static struct GfxDecodeInfo gfxdecodeinfo_opengolf[] =
1436 {
1437 { REGION_GFX3, 0, &t1_charlayout8, 0x0000, 8 },
1438 { REGION_GFX4, 0, &t1_charlayout6, 0x0000, 8 },
1439 { -1 } /* end of array */
1440 };
1441
1442 static struct GfxDecodeInfo gfxdecodeinfo_racinfrc[] =
1443 {
1444 { REGION_GFX3, 0, &t1_charlayout6, 0x0000, 8 },
1445 { REGION_GFX4, 0, &t1_charlayout6, 0x0000, 8 },
1446 { -1 } /* end of array */
1447 };
1448
1449 /* type 3 & 4 games use a simple 8bpp decode for the 53936 */
1450 static struct GfxDecodeInfo gfxdecodeinfo_type34[] =
1451 {
1452 { REGION_GFX3, 0, &bglayout_8bpp, 0x0000, 8 },
1453 { -1 } /* end of array */
1454 };
1455
1456 static MACHINE_DRIVER_START( konamigx )
1457 /* basic machine hardware */
1458 MDRV_CPU_ADD_TAG("main", M68EC020, 24000000)
1459 MDRV_CPU_MEMORY(readmem,writemem)
1460 MDRV_CPU_VBLANK_INT(konamigx_vbinterrupt, 1)
1461
1462 /* note: part is a -8, crystals are 18.4 and 32.0 MHz, and
1463 twinbee yahhoo will not pass POST if the 68000 isn't
1464 running at least this fast. so the higher speed is probably a HACK... */
1465 MDRV_CPU_ADD_TAG("sound", M68000, 9200000)
1466 MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
1467 MDRV_CPU_MEMORY(sndreadmem,sndwritemem)
1468 MDRV_CPU_PERIODIC_INT(irq2_line_hold, 480)
1469
1470 MDRV_INTERLEAVE(32);
1471 MDRV_FRAMES_PER_SECOND(60)
1472 MDRV_VBLANK_DURATION(600)
1473
MDRV_MACHINE_INIT(konamigx)1474 MDRV_MACHINE_INIT(konamigx)
1475 MDRV_NVRAM_HANDLER(konamigx_93C46)
1476
1477 /* video hardware */
1478 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_NEEDS_6BITS_PER_GUN | VIDEO_RGB_DIRECT | VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
1479 MDRV_SCREEN_SIZE(64*8, 32*8)
1480 MDRV_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
1481 MDRV_PALETTE_LENGTH(8192)
1482
1483 MDRV_VIDEO_START(konamigx_5bpp)
1484 MDRV_VIDEO_UPDATE(konamigx)
1485
1486 /* sound hardware */
1487 MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
1488 MDRV_SOUND_ADD(K054539, k054539_interface)
1489 MACHINE_DRIVER_END
1490
1491 static MACHINE_DRIVER_START( dragoonj )
1492 MDRV_IMPORT_FROM(konamigx)
1493 MDRV_CPU_REPLACE("main", M68EC020, 26400000) /* needs higher clock to stop sprite flickerings*/
1494 MDRV_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
1495 MDRV_VIDEO_START(dragoonj)
1496 MACHINE_DRIVER_END
1497
1498 static MACHINE_DRIVER_START( le2 )
1499 MDRV_IMPORT_FROM(konamigx)
1500 MDRV_VIDEO_START(le2)
1501 MACHINE_DRIVER_END
1502
1503 static MACHINE_DRIVER_START( konamigx_6bpp )
1504 MDRV_IMPORT_FROM(konamigx)
1505 MDRV_VIDEO_START(konamigx_6bpp)
1506 MACHINE_DRIVER_END
1507
1508 static MACHINE_DRIVER_START( konamigx_6bpp_2 )
1509 MDRV_IMPORT_FROM(konamigx)
1510 MDRV_VIDEO_START(konamigx_6bpp_2)
1511 MACHINE_DRIVER_END
1512
1513 static MACHINE_DRIVER_START( opengolf )
1514 MDRV_IMPORT_FROM(konamigx)
1515 MDRV_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
1516 MDRV_GFXDECODE(gfxdecodeinfo_opengolf)
1517 MDRV_VIDEO_START(opengolf)
1518
1519 MDRV_CPU_MODIFY("main")
1520 MDRV_CPU_MEMORY(type1readmem, type1writemem)
1521 MACHINE_DRIVER_END
1522
1523 static MACHINE_DRIVER_START( racinfrc )
1524 MDRV_IMPORT_FROM(konamigx)
1525 MDRV_VISIBLE_AREA(32, 32+384-1, 16, 16+224-1)
1526 MDRV_GFXDECODE(gfxdecodeinfo_racinfrc)
1527 MDRV_VIDEO_START(racinfrc)
1528
1529 MDRV_CPU_MODIFY("main")
1530 MDRV_CPU_MEMORY(type1readmem, type1writemem)
1531 MACHINE_DRIVER_END
1532
1533 static MACHINE_DRIVER_START( gxtype3 )
1534 MDRV_IMPORT_FROM(konamigx)
1535
1536 MDRV_CPU_MODIFY("main")
1537 MDRV_CPU_MEMORY(type3readmem, type3writemem)
1538 MDRV_CPU_VBLANK_INT(konamigx_hbinterrupt, 262)
1539
1540 MDRV_VIDEO_START(konamigx_type3)
1541 MDRV_PALETTE_LENGTH(16384)
1542 MDRV_SCREEN_SIZE(64*8, 32*8)
1543 MDRV_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
1544 MDRV_GFXDECODE(gfxdecodeinfo_type34)
1545 MACHINE_DRIVER_END
1546
1547 static MACHINE_DRIVER_START( gxtype4 )
1548 MDRV_IMPORT_FROM(konamigx)
1549
1550 MDRV_CPU_MODIFY("main")
1551 MDRV_CPU_MEMORY(type4readmem, type4writemem)
1552 MDRV_CPU_VBLANK_INT(konamigx_hbinterrupt, 262)
1553
1554 MDRV_SCREEN_SIZE(64*8, 32*8)
1555 MDRV_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
1556 MDRV_PALETTE_LENGTH(16384)
1557 MDRV_GFXDECODE(gfxdecodeinfo_type34)
1558 MDRV_VIDEO_START(konamigx_type4)
1559 MACHINE_DRIVER_END
1560
1561 static MACHINE_DRIVER_START( winspike )
1562 MDRV_IMPORT_FROM(konamigx)
1563
1564 MDRV_VISIBLE_AREA(38, 38+384-1, 16, 16+224-1)
1565 MDRV_VIDEO_START(winspike)
1566 MACHINE_DRIVER_END
1567
1568 /**********************************************************************************/
1569 /* port maps */
1570
1571 INPUT_PORTS_START( konamigx )
1572 PORT_START
1573 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1574 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1575 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1576 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1577 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
1578 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 )
1579 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1580 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1581
1582 PORT_START
1583 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1584 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1585 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 ) /* for gun games */
1586 PORT_BITX(0x08, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
1587 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1588 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1589 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1590 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1591
1592 PORT_START
1593 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
1594 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
1595 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
1596 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
1597 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
1598 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
1599 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
1600 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
1601
1602 PORT_START
1603 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
1604 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
1605 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
1606 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
1607 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
1608 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
1609 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
1610 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
1611
1612 PORT_START
1613 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER3 )
1614 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
1615 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER3 )
1616 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER3 )
1617 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
1618 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
1619 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
1620 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
1621
1622 PORT_START
1623 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER4 )
1624 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER4 )
1625 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER4 )
1626 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER4 )
1627 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER4 )
1628 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER4 )
1629 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER4 )
1630 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 )
1631
1632 PORT_START
1633 PORT_DIPNAME( 0x01, 0x00, "Stereo")
1634 PORT_DIPSETTING( 0x00, "Stereo")
1635 PORT_DIPSETTING( 0x01, "Mono")
1636 PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
1637 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
1638 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1639 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1640 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
1641 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1642 PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1643 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
1644 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1645 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1646 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
1647 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1648 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1649 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
1650 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1651 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1652 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
1653 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1654 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1655 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
1656 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1657
1658 PORT_START
1659 PORT_DIPNAME( 0x01, 0x01, "Foo")
1660 PORT_DIPSETTING( 0x00, "Foo")
1661 PORT_DIPSETTING( 0x01, "Bar")
1662 PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
1663 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
1664 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1665 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1666 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
1667 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1668 PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1669 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
1670 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1671 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1672 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
1673 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1674 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1675 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
1676 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1677 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1678 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
1679 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1680 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1681 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
1682 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1683 INPUT_PORTS_END
1684
1685
1686 INPUT_PORTS_START( racinfrc )
1687 PORT_START
1688 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1689 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1690 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1691 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1692 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
1693 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 )
1694 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1695 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1696
1697 PORT_START
1698 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1699 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1700 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 ) /* for gun games */
1701 PORT_BITX(0x08, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
1702 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1703 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1704 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1705 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1706
1707 PORT_START
1708 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
1709 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
1710 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
1711 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
1712 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
1713 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
1714 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
1715 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
1716
1717 PORT_START
1718 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
1719 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
1720 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
1721 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
1722 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 ) /* racin force needs this set to get past the calibration screen*/
1723 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
1724 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
1725 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
1726
1727 PORT_START
1728 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER3 )
1729 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
1730 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER3 )
1731 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER3 )
1732 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
1733 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
1734 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
1735 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
1736
1737 PORT_START
1738 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER4 )
1739 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER4 )
1740 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER4 )
1741 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER4 )
1742 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER4 )
1743 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER4 )
1744 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER4 )
1745 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 )
1746
1747 PORT_START
1748 PORT_DIPNAME( 0x01, 0x00, "Stereo")
1749 PORT_DIPSETTING( 0x00, "Stereo")
1750 PORT_DIPSETTING( 0x01, "Mono")
1751 PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
1752 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
1753 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1754 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1755 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
1756 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1757 PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1758 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
1759 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1760 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1761 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
1762 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1763 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1764 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
1765 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1766 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1767 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
1768 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1769 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1770 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
1771 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1772
1773 PORT_START
1774 PORT_DIPNAME( 0x01, 0x01, "Foo")
1775 PORT_DIPSETTING( 0x00, "Foo")
1776 PORT_DIPSETTING( 0x01, "Bar")
1777 PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
1778 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
1779 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1780 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1781 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
1782 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1783 PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1784 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
1785 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1786 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1787 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
1788 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1789 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1790 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
1791 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1792 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1793 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
1794 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1795 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1796 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
1797 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1798
1799 PORT_START /* no gun */
1800
1801 PORT_START /* mask default type sens delta min max */
1802 PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X | IPF_CENTER, 35, 5, 0x38, 0xc8 )
1803
1804 PORT_START
1805 PORT_ANALOGX( 0xff, 0x00, IPT_PEDAL, 35, 5, 0, 0x68, KEYCODE_LCONTROL, IP_JOY_DEFAULT, IP_KEY_DEFAULT, IP_JOY_DEFAULT )
1806 INPUT_PORTS_END
1807
1808 INPUT_PORTS_START( le2 )
1809 PORT_START
1810 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1811 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1812 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1813 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1814 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
1815 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 )
1816 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1817 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1818
1819 PORT_START
1820 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1821 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1822 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 ) /* for gun games */
1823 PORT_BITX(0x08, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
1824 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1825 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1826 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1827 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1828
1829 PORT_START
1830 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
1831 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
1832 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
1833 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
1834 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
1835 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
1836 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
1837 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
1838
1839 PORT_START
1840 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
1841 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
1842 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
1843 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
1844 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
1845 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
1846 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
1847 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
1848
1849 PORT_START
1850 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER3 )
1851 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
1852 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER3 )
1853 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER3 )
1854 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
1855 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
1856 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
1857 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
1858
1859 PORT_START
1860 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER4 )
1861 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER4 )
1862 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER4 )
1863 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER4 )
1864 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER4 )
1865 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER4 )
1866 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER4 )
1867 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 )
1868
1869 PORT_START
1870 PORT_DIPNAME( 0x01, 0x01, "Stereo")
1871 PORT_DIPSETTING( 0x01, "Stereo")
1872 PORT_DIPSETTING( 0x00, "Mono")
1873 PORT_DIPNAME( 0x02, 0x02, "Coin Mechanism")
1874 PORT_DIPSETTING( 0x02, "Common")
1875 PORT_DIPSETTING( 0x00, "Independant")
1876 PORT_DIPNAME( 0x04, 0x04, "Stage Select" )
1877 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
1878 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1879 PORT_DIPNAME( 0x08, 0x00, "Mirror" )
1880 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1881 PORT_DIPSETTING( 0x08, DEF_STR( On ) )
1882 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) )
1883 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
1884 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1885 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1886 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
1887 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1888 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1889 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
1890 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1891 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1892 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
1893 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1894
1895 PORT_START
1896 PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
1897
1898 PORT_START
1899 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1900 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1901 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 ) /* for gun games */
1902 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1903 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1904 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1905 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1906 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1907
1908 PORT_START /* mask default type sens delta min max */
1909 PORT_ANALOG( 0xff, 0x00, IPT_LIGHTGUN_X | IPF_PLAYER1, 35, 15, 0, 0xff )
1910
1911 PORT_START
1912 PORT_ANALOG( 0xff, 0x00, IPT_LIGHTGUN_Y | IPF_PLAYER1, 35, 15, 0, 0xff )
1913
1914 PORT_START
1915 PORT_ANALOG( 0xff, 0x00, IPT_LIGHTGUN_X | IPF_PLAYER2, 35, 15, 0, 0xff )
1916
1917 PORT_START
1918 PORT_ANALOG( 0xff, 0x00, IPT_LIGHTGUN_Y | IPF_PLAYER2, 35, 15, 0, 0xff )
1919 INPUT_PORTS_END
1920
1921
1922 INPUT_PORTS_START( gokuparo )
1923 PORT_START
1924 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1925 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1926 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1927 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1928 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
1929 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 )
1930 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1931 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1932
1933 PORT_START
1934 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1935 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1936 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1937 PORT_BITX(0x08, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
1938 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1939 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1940 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1941 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1942
1943 PORT_START
1944 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
1945 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
1946 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
1947 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
1948 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
1949 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
1950 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
1951 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
1952
1953 PORT_START
1954 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
1955 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
1956 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
1957 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
1958 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
1959 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
1960 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
1961 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
1962
1963 PORT_START
1964 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER3 )
1965 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
1966 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER3 )
1967 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER3 )
1968 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
1969 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
1970 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
1971 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
1972
1973 PORT_START
1974 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER4 )
1975 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER4 )
1976 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER4 )
1977 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER4 )
1978 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER4 )
1979 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER4 )
1980 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER4 )
1981 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 )
1982
1983 PORT_START
1984 PORT_DIPNAME( 0x01, 0x00, "Stereo")
1985 PORT_DIPSETTING( 0x00, "Stereo")
1986 PORT_DIPSETTING( 0x01, "Mono")
1987 PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
1988 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
1989 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1990 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1991 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
1992 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1993 PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1994 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
1995 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1996 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1997 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
1998 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1999 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
2000 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
2001 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2002 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
2003 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
2004 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2005 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
2006 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
2007 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2008 INPUT_PORTS_END
2009
2010 INPUT_PORTS_START( puzldama )
2011 PORT_START
2012 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
2013 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
2014 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2015 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2016 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
2017 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 )
2018 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2019 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2020
2021 PORT_START
2022 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2023 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2024 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2025 PORT_BITX(0x08, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
2026 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2027 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2028 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2029 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2030
2031 PORT_START
2032 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
2033 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
2034 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
2035 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
2036 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
2037 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
2038 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
2039 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
2040
2041 PORT_START
2042 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
2043 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
2044 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
2045 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
2046 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
2047 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
2048 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
2049 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
2050
2051 PORT_START
2052 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER3 )
2053 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
2054 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER3 )
2055 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER3 )
2056 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
2057 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
2058 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
2059 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
2060
2061 PORT_START
2062 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER4 )
2063 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER4 )
2064 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER4 )
2065 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER4 )
2066 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER4 )
2067 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER4 )
2068 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER4 )
2069 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 )
2070
2071 PORT_START
2072 PORT_DIPNAME( 0x01, 0x00, "Stereo")
2073 PORT_DIPSETTING( 0x00, "Stereo")
2074 PORT_DIPSETTING( 0x01, "Mono")
2075 PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
2076 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
2077 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2078 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Flip_Screen ) )
2079 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
2080 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2081 PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) )
2082 PORT_DIPSETTING( 0x08, DEF_STR( Upright ) )
2083 PORT_DIPSETTING( 0x00, "Vs. cabinet" )
2084 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
2085 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
2086 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2087 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
2088 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
2089 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2090 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
2091 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
2092 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2093 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
2094 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
2095 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2096 PORT_DIPSETTING( 0x02, "High" )
2097 INPUT_PORTS_END
2098
2099 INPUT_PORTS_START( dragoonj )
2100 PORT_START
2101 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
2102 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
2103 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2104 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2105 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
2106 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 )
2107 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2108 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2109
2110 PORT_START
2111 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2112 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2113 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2114 PORT_BITX(0x08, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
2115 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2116 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2117 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2118 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2119
2120 PORT_START
2121 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
2122 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
2123 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
2124 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
2125 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
2126 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
2127 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
2128 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
2129
2130 PORT_START
2131 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
2132 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
2133 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
2134 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
2135 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
2136 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
2137 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
2138 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
2139
2140 PORT_START
2141 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )
2142 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER1 )
2143 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON6 | IPF_PLAYER1 )
2144 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
2145 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 )
2146 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER2 )
2147 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 | IPF_PLAYER2 )
2148 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
2149
2150 PORT_START
2151 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
2152 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
2153 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
2154 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
2155 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
2156 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
2157 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
2158 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
2159
2160 PORT_START
2161 PORT_DIPNAME( 0x01, 0x00, "Stereo")
2162 PORT_DIPSETTING( 0x00, "Stereo")
2163 PORT_DIPSETTING( 0x01, "Mono")
2164 PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
2165 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
2166 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2167 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Flip_Screen ) )
2168 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
2169 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2170 PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) )
2171 PORT_DIPSETTING( 0x08, DEF_STR( Upright ) )
2172 PORT_DIPSETTING( 0x00, "Vs. cabinet" )
2173 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
2174 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
2175 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2176 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
2177 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
2178 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2179 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
2180 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
2181 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2182 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
2183 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
2184 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2185 PORT_DIPSETTING( 0x02, "High" )
2186 INPUT_PORTS_END
2187
2188 INPUT_PORTS_START( type3 )
2189 PORT_START
2190 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
2191 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
2192 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2193 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2194 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
2195 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 )
2196 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2197 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2198
2199 PORT_START
2200 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2201 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2202 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2203 PORT_BITX(0x08, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
2204 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2205 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2206 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2207 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2208
2209 PORT_START
2210 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
2211 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
2212 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
2213 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
2214 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
2215 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
2216 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
2217 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
2218
2219 PORT_START
2220 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
2221 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
2222 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
2223 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
2224 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
2225 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
2226 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
2227 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
2228
2229 PORT_START
2230 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER3 )
2231 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
2232 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER3 )
2233 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER3 )
2234 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
2235 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
2236 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
2237 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
2238
2239 PORT_START
2240 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER4 )
2241 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER4 )
2242 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER4 )
2243 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER4 )
2244 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER4 )
2245 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER4 )
2246 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER4 )
2247 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 )
2248
2249 PORT_START
2250 PORT_DIPNAME( 0x01, 0x00, "Stereo")
2251 PORT_DIPSETTING( 0x00, "Stereo")
2252 PORT_DIPSETTING( 0x01, "Mono")
2253 PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
2254 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
2255 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2256 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Flip_Screen ) )
2257 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
2258 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2259 PORT_DIPNAME( 0x08, 0x08, "Screens" )
2260 PORT_DIPSETTING( 0x08, "1" )
2261 PORT_DIPSETTING( 0x00, "2" )
2262 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
2263 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
2264 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2265 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
2266 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
2267 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2268 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
2269 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
2270 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2271 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
2272 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
2273 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
2274 PORT_DIPSETTING( 0x02, "High" )
2275 INPUT_PORTS_END
2276
2277
2278 /**********************************************************************************/
2279 /* BIOS and ROM maps */
2280
2281 #define GX_BIOS ROM_LOAD("300a01.34k", 0x000000, 128*1024, CRC(d5fa95f5) SHA1(c483aa98ff8ef40cdac359c19ad23fea5ecc1906) )
2282
2283 ROM_START(konamigx)
2284 ROM_REGION( 0x10000, REGION_CPU1, 0)
2285 GX_BIOS
2286 ROM_END
2287
2288 #define SPR_WOR_DROM_LOAD(name,offset,length,crc) ROMX_LOAD(name, offset, length, crc, ROM_GROUPSIZE(2) | ROM_SKIP(5))
2289 #define SPR_5TH_ROM_LOAD(name,offset,length,crc) ROMX_LOAD(name, offset, length, crc, ROM_GROUPSIZE(1) | ROM_SKIP(5))
2290
2291 #define TILE_WORD_ROM_LOAD(name,offset,length,crc) ROMX_LOAD(name, offset, length, crc, ROM_GROUPDWORD | ROM_SKIP(1))
2292 #define TILE_BYTE_ROM_LOAD(name,offset,length,crc) ROMX_LOAD(name, offset, length, crc, ROM_GROUPBYTE | ROM_SKIP(4))
2293
2294 #define TILE_WORDS2_ROM_LOAD(name,offset,length,crc) ROMX_LOAD(name, offset, length, crc, ROM_GROUPDWORD | ROM_SKIP(2))
2295 #define TILE_BYTES2_ROM_LOAD(name,offset,length,crc) ROMX_LOAD(name, offset, length, crc, ROM_GROUPWORD | ROM_SKIP(4))
2296
2297 #define T1_PSAC6_ROM_LOAD(name,offset,length,crc) ROMX_LOAD(name, offset, length, crc, ROM_GROUPBYTE | ROM_SKIP(2))
2298 #define T1_PSAC8_ROM_LOAD(name,offset,length,crc) ROMX_LOAD(name, offset, length, crc, ROM_GROUPBYTE | ROM_SKIP(3))
2299
2300 #define _48_WORD_ROM_LOAD(name,offset,length,crc) ROMX_LOAD(name, offset, length, crc, ROM_GROUPWORD | ROM_SKIP(4))
2301 #define _64_WORD_ROM_LOAD(name,offset,length,crc) ROMX_LOAD(name, offset, length, crc, ROM_GROUPWORD | ROM_SKIP(6))
2302
2303
2304 /* Gokujou Parodius */
2305 ROM_START( gokuparo )
2306 /* main program */
2307 ROM_REGION( 0x300000, REGION_CPU1, 0 )
2308 GX_BIOS
2309 ROM_LOAD32_WORD_SWAP( "321jad02.31b", 0x200002, 512*1024, CRC(c2e548c0) SHA1(48fbcc96d1f56bb3abb5098400536a18a676d934) )
2310 ROM_LOAD32_WORD_SWAP( "321jad04.27b", 0x200000, 512*1024, CRC(916a7951) SHA1(d6f56ff5f6c6708939767e69a3ebc7c7eddb6003) )
2311
2312 /* sound program */
2313 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2314 ROM_LOAD16_BYTE("321_b06.9c", 0x000000, 128*1024, CRC(da810554) SHA1(f253e1aa137eecf283d8b083ef2b3b049e8366f4) )
2315 ROM_LOAD16_BYTE("321_b07.7c", 0x000001, 128*1024, CRC(c47634c0) SHA1(20e4105df5bbc33edd01894e78f74ed5f173576e) )
2316
2317 /* tiles */
2318 ROM_REGION( 0x600000, REGION_GFX1, ROMREGION_ERASE00 )
2319 TILE_WORD_ROM_LOAD( "fj-jap.17h", 0x000000, 2*1024*1024, CRC(437d0057) SHA1(30c449200e0510dc664289b527bade6e10dbe57a) )
2320 TILE_BYTE_ROM_LOAD( "321b12.13g", 0x000004, 512*1024, CRC(5f9edfa0) SHA1(36d54c5fe498a4d0fa64757cef11c56c67518258) )
2321
2322 /* sprites */
2323 ROM_REGION( 0x500000, REGION_GFX2, ROMREGION_ERASE00 )
2324 ROM_LOAD32_WORD( "fj-jap.25g", 0x000000, 2*1024*1024, CRC(c6e2e74d) SHA1(3875a50923e46e2986dbe2573453af5c7fa726f7) )
2325 ROM_LOAD32_WORD( "fj-jap.28g", 0x000002, 2*1024*1024, CRC(ea9f8c48) SHA1(b5e880015887308a5f1c1c623011d9b0903e848f) )
2326 ROM_LOAD( "321b09.30g", 0x400000, 1*1024*1024, CRC(94add237) SHA1(9a6d0a9727e7fa02d91ece220b145074a6741a95) )
2327
2328 /* sound data */
2329 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2330 ROM_LOAD( "321b17.9g", 0x000000, 2*1024*1024, CRC(b3e8d5d8) SHA1(6644a414e7f0e69ded9aa1bf892566002cebae26) )
2331 ROM_LOAD( "321b18.7g", 0x200000, 2*1024*1024, CRC(2c561ad0) SHA1(6265054072ba1c2837dd96e0259b20bc50457160) )
2332 ROM_END
2333
2334 /* Fantastic Journey (US version) */
2335 ROM_START( fantjour )
2336 /* main program */
2337 ROM_REGION( 0x300000, REGION_CPU1, 0 )
2338 GX_BIOS
2339 ROM_LOAD32_WORD_SWAP( "fsus31b.bin", 0x200002, 512*1024, CRC(afaf9d17) SHA1(a12214c6e634862d6507f56719b55d4a23a0ef0f) )
2340 ROM_LOAD32_WORD_SWAP( "fsus27b.bin", 0x200000, 512*1024, CRC(b2cfe225) SHA1(7fd43acb1dd853a7980e7fcf48971ae28175e421) )
2341
2342 /* sound program */
2343 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2344 ROM_LOAD16_BYTE("321_b06.9c", 0x000000, 128*1024, CRC(da810554) SHA1(f253e1aa137eecf283d8b083ef2b3b049e8366f4) )
2345 ROM_LOAD16_BYTE("321_b07.7c", 0x000001, 128*1024, CRC(c47634c0) SHA1(20e4105df5bbc33edd01894e78f74ed5f173576e) )
2346
2347 /* tiles */
2348 ROM_REGION( 0x600000, REGION_GFX1, ROMREGION_ERASE00 )
2349 TILE_WORD_ROM_LOAD( "fj-jap.17h", 0x000000, 2*1024*1024, CRC(437d0057) SHA1(30c449200e0510dc664289b527bade6e10dbe57a) )
2350 TILE_BYTE_ROM_LOAD( "321b12.13g", 0x000004, 512*1024, CRC(5f9edfa0) SHA1(36d54c5fe498a4d0fa64757cef11c56c67518258) )
2351
2352 /* sprites */
2353 ROM_REGION( 0x500000, REGION_GFX2, ROMREGION_ERASE00 )
2354 ROM_LOAD32_WORD( "fj-jap.25g", 0x000000, 2*1024*1024, CRC(c6e2e74d) SHA1(3875a50923e46e2986dbe2573453af5c7fa726f7) )
2355 ROM_LOAD32_WORD( "fj-jap.28g", 0x000002, 2*1024*1024, CRC(ea9f8c48) SHA1(b5e880015887308a5f1c1c623011d9b0903e848f) )
2356 ROM_LOAD( "321b09.30g", 0x400000, 1*1024*1024, CRC(94add237) SHA1(9a6d0a9727e7fa02d91ece220b145074a6741a95) )
2357
2358 /* sound data */
2359 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2360 ROM_LOAD( "321b17.9g", 0x000000, 2*1024*1024, CRC(b3e8d5d8) SHA1(6644a414e7f0e69ded9aa1bf892566002cebae26) )
2361 ROM_LOAD( "321b18.7g", 0x200000, 2*1024*1024, CRC(2c561ad0) SHA1(6265054072ba1c2837dd96e0259b20bc50457160) )
2362 ROM_END
2363
2364 /* Salamander 2 */
2365 ROM_START( salmndr2 )
2366 /* main program */
2367 ROM_REGION( 0x300000, REGION_CPU1, 0 )
2368 GX_BIOS
2369 ROM_LOAD32_WORD_SWAP( "521jaa02.31b", 0x200002, 512*1024, CRC(f6c3a95b) SHA1(c4ef3631eca898e5787fb2d356355da7e5d475eb) )
2370 ROM_LOAD32_WORD_SWAP( "521jaa03.27b", 0x200000, 512*1024, CRC(c3be5e0a) SHA1(13bbce62c4d04a657de4594cc4d258e2468a59a4) )
2371
2372 /* sound program */
2373 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2374 ROM_LOAD16_BYTE("521-a04.9c", 0x000000, 64*1024, CRC(efddca7a) SHA1(ac6b45044b6abeb2455ec21a61322185bf1c7219) )
2375 ROM_LOAD16_BYTE("521-a05.7c", 0x000001, 64*1024, CRC(51a3af2c) SHA1(94d220ae619d53747bd3e762000ed59cf1b4d305) )
2376
2377 /* tiles */
2378 ROM_REGION( 0x800000, REGION_GFX1, ROMREGION_ERASE00 )
2379 TILE_WORDS2_ROM_LOAD("521-a09.17h", 0x000000, 2*1024*1024, CRC(fb9e2f5e) SHA1(acb41616625d6976ad50e184787ab74e29f86039) )
2380 TILE_WORDS2_ROM_LOAD("521-a11.15h", 0x300000, 1*1024*1024, CRC(25e0a6e5) SHA1(592e9f183f077e9272a4f0ead441b5bfd8029816) )
2381 TILE_BYTES2_ROM_LOAD("521-a13.13c", 0x000004, 2*1024*1024, CRC(3ed7441b) SHA1(57e3e8035c056cf46a383d228c76a7da7def134f) )
2382
2383 /* sprites */
2384 ROM_REGION( 0x600000, REGION_GFX2, ROMREGION_ERASE00 )
2385 _48_WORD_ROM_LOAD( "521-a08.25g", 0x000000, 2*1024*1024, CRC(f24f76bd) SHA1(823f614d436901241743c923206cb61d8bbb5c58) )
2386 _48_WORD_ROM_LOAD( "521-a07.28g", 0x000002, 2*1024*1024, CRC(50ef9b7a) SHA1(104eac2bce43e99d4adc208145afe7be9156628e) )
2387 _48_WORD_ROM_LOAD( "521-a06.30g", 0x000004, 2*1024*1024, CRC(cba5db2c) SHA1(505efdf8571ae28d8788dcafbfffcfb67e3189ce) )
2388
2389 /* sound data */
2390 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2391 ROM_LOAD( "521-a12.9g", 0x000000, 2*1024*1024, CRC(66614d3b) SHA1(e1e5ebe546bced6ab74b0af500acf0f3308902a4) )
2392 ROM_LOAD( "521-a13.7g", 0x200000, 1*1024*1024, CRC(c3322475) SHA1(1774524ff031e0c4a7f3432810e968d37f9c6331) )
2393 ROM_END
2394
2395 /* Twinbee Yahoo! */
2396 ROM_START( tbyahhoo )
2397 /* main program */
2398 ROM_REGION( 0x300000, REGION_CPU1, 0 )
2399 GX_BIOS
2400 ROM_LOAD32_WORD_SWAP( "426jaa02.31b", 0x200002, 512*1024, CRC(0416ad78) SHA1(a94c37a95e431c8f8cc3db66713faed406ab27c4) )
2401 ROM_LOAD32_WORD_SWAP( "424jaa04.27b", 0x200000, 512*1024, CRC(bcbe0e40) SHA1(715f72a172a0662e6e65a57baa1f5a18d6210389) )
2402
2403 /* sound program */
2404 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2405 ROM_LOAD16_BYTE("424a06.9c", 0x000000, 128*1024, CRC(a4760e14) SHA1(78dbd309f3f7fa61e92c9554e594449a7d4eed5a) )
2406 ROM_LOAD16_BYTE("424a07.7c", 0x000001, 128*1024, CRC(fa90d7e2) SHA1(6b6dee29643309005834416bdfdb18d74f34cb1b) )
2407
2408 /* tiles */
2409 ROM_REGION( 0x500000, REGION_GFX1, ROMREGION_ERASE00 )
2410 TILE_WORD_ROM_LOAD( "424a14.17h", 0x000000, 2*1024*1024, CRC(b1d9fce8) SHA1(143ed2f03ac10a0f18d878c0ee0509a5714e4664) )
2411 TILE_BYTE_ROM_LOAD( "424a12.13g", 0x000004, 512*1024, CRC(7f9cb8b1) SHA1(f5e18d70fcb572bb85f9b064995fc0ab0bb581e8) )
2412
2413 /* sprites */
2414 ROM_REGION( 0x500000, REGION_GFX2, ROMREGION_ERASE00 )
2415 ROM_LOAD32_WORD( "424a11.25g", 0x000000, 2*1024*1024, CRC(29592688) SHA1(a4b44e9153988a510915af83116e3c18dd15642f) )
2416 ROM_LOAD32_WORD( "424a10.28g", 0x000002, 2*1024*1024, CRC(cf24e5e3) SHA1(095bf2ae4f47c6e4768515ae5e22c982fbc660a5) )
2417 ROM_LOAD( "424a09.30g", 0x400000, 1*1024*1024, CRC(daa07224) SHA1(198cafa3d0ead2aa2593be066c6f372e66c11c44) )
2418
2419 /* sound data */
2420 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2421 ROM_LOAD( "424a17.9g", 0x000000, 2*1024*1024, CRC(e9dd9692) SHA1(c289019c8d1dd71b3cec26479c39b649de804707) )
2422 ROM_LOAD( "424a18.7g", 0x200000, 2*1024*1024, CRC(0f0d9f3a) SHA1(57f6b113b80f06964b7e672ad517c1654c5569c5) )
2423 ROM_END
2424
2425 /* Daisu-Kiss */
2426 ROM_START( daiskiss )
2427 /* main program */
2428 ROM_REGION( 0x300000, REGION_CPU1, 0 )
2429 GX_BIOS
2430 ROM_LOAD32_WORD_SWAP( "535jaa02.31b", 0x200002, 512*1024, CRC(e5b3e0e5) SHA1(94910d79299e99022a1759998304b87440694ca0) )
2431 ROM_LOAD32_WORD_SWAP( "535jaa03.27b", 0x200000, 512*1024, CRC(9dc10140) SHA1(0c4cc20b2c8ff5080fbd4ceb9446e6940b12cc53) )
2432
2433 /* sound program */
2434 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2435 ROM_LOAD16_BYTE("535a08.9c", 0x000000, 128*1024, CRC(449416a7) SHA1(c79bf0d68c8639f67eb17f24f1bc10dd867a4c37) )
2436 ROM_LOAD16_BYTE("535a09.7c", 0x000001, 128*1024, CRC(8ec57ab4) SHA1(bd8e12c796d42d2cb27c1e47dc6253bfb74a2887) )
2437
2438 /* tiles */
2439 ROM_REGION( 0x500000, REGION_GFX1, ROMREGION_ERASE00 )
2440 TILE_WORD_ROM_LOAD( "535a19.17h", 0x000000, 2*1024*1024, CRC(fa1c59d1) SHA1(7344afab2b8101f979c35ff9ec8d9c18475bb821) )
2441 TILE_BYTE_ROM_LOAD( "535a18.13g", 0x000004, 512*1024, CRC(d02e5103) SHA1(43c63a718a034636bad29d2def054d8b48f071e3) )
2442
2443 /* sprites */
2444 ROM_REGION( 0x500000, REGION_GFX2, ROMREGION_ERASE00 )
2445 ROM_LOAD32_WORD( "535a17.25g", 0x000000, 1*1024*1024, CRC(b12070e2) SHA1(51a763bf0e2c1d5c2b9983fcd4304d74c7fe6dd1) )
2446 ROM_LOAD32_WORD( "535a13.28g", 0x000002, 1*1024*1024, CRC(10cf9d05) SHA1(6c6e51082ce340643d381863fec9b220e3d0ac53) )
2447 ROM_LOAD( "535a11.30g", 0x400000, 512*1024, CRC(2b176b0f) SHA1(ecf4114d95a308be8f96a5c602c0f5ed5ffc8f29) )
2448
2449 /* sound data */
2450 ROM_REGION( 0x200000, REGION_SOUND1, 0 )
2451 ROM_LOAD( "535a22.9g", 0x000000, 2*1024*1024, CRC(7ee59acb) SHA1(782bf15f205e9fe7bd069f6445eb8187837dee32) )
2452 ROM_END
2453
2454 /* Sexy Parodius Japan */
2455 ROM_START( sexyparo )
2456 /* main program */
2457 ROM_REGION( 0x300000, REGION_CPU1, 0 )
2458 GX_BIOS
2459 ROM_LOAD32_WORD_SWAP( "533jaa02.31b", 0x200002, 512*1024, CRC(b8030abc) SHA1(ee0add1513f620e35583a6ec1e773f53ea27e455) )
2460 ROM_LOAD32_WORD_SWAP( "533jaa03.27b", 0x200000, 512*1024, CRC(4a95e80d) SHA1(ff0aef613745c07b5891e66b6b1759e048599214) )
2461
2462 /* sound program */
2463 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2464 ROM_LOAD16_BYTE("533a08.9c", 0x000000, 128*1024, CRC(06d14cff) SHA1(21c01a06eabfacc4ac1d83bfad389f3dfa41b95f) )
2465 ROM_LOAD16_BYTE("533a09.7c", 0x000001, 128*1024, CRC(a93c6f0b) SHA1(bee1abab985c7163212cad1a4bc0a427804dfed3) )
2466
2467 /* tiles */
2468 ROM_REGION( 0x500000, REGION_GFX1, ROMREGION_ERASE00 )
2469 TILE_WORD_ROM_LOAD( "533a19.17h", 0x000000, 2*1024*1024, CRC(3ec1843e) SHA1(5d2c37f1eb299c846daa63f35ccd5334a516a1f5) )
2470 TILE_BYTE_ROM_LOAD( "533-ja.13g", 0x000004, 512*1024, CRC(d3e0d058) SHA1(c50bdb3493501bfbbe092d01f5d4c38bfa3412f8) )
2471
2472 /* sprites */
2473 ROM_REGION( 0x600000, REGION_GFX2, ROMREGION_ERASE00 )
2474 ROM_LOAD32_WORD( "533a17.25g", 0x000000, 2*1024*1024, CRC(9947af57) SHA1(a8f67cb49cf55e8402de352bb530c7c90c643144) )
2475 ROM_LOAD32_WORD( "533a13.28g", 0x000002, 2*1024*1024, CRC(58f1fc38) SHA1(9662b4fb036ffe90f294ee36fa52a0c1e1dbd116) )
2476 ROM_LOAD( "533a11.30g", 0x400000, 2*1024*1024, CRC(983105e1) SHA1(c688f6f73fab16107f01523081558a2e02a5311c) )
2477
2478 /* sound data */
2479 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2480 ROM_LOAD( "533a22.9g", 0x000000, 2*1024*1024, CRC(97233814) SHA1(dba20a81517796b7baf7c82551bd7f1c1a8ecd7e) )
2481 ROM_LOAD( "533a23.7g", 0x200000, 2*1024*1024, CRC(1bb7552b) SHA1(3c6f96b4ab97737c3634c08b94dd304d5517d88d) )
2482 ROM_END
2483
2484 /* Sexy Parodius Asia */
2485 ROM_START( sexyparoa )
2486 /* main program */
2487 ROM_REGION( 0x300000, REGION_CPU1, 0 )
2488 GX_BIOS
2489 ROM_LOAD32_WORD_SWAP( "533aaa02.31b", 0x200002, 512*1024, CRC(4fdc4298) SHA1(6aa0d6d00dada9d1bfe2b29cd342b11e2d42bf5a) )
2490 ROM_LOAD32_WORD_SWAP( "533aaa03.27b", 0x200000, 512*1024, CRC(9c5e07cb) SHA1(4d7dbd9b0e47d501ab3f22c48942bb9e54450d87) )
2491
2492 /* sound program */
2493 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2494 ROM_LOAD16_BYTE("533aaa08.9c", 0x000000, 128*1024, CRC(f2e2c963) SHA1(5b4ac1df208467cfac2927ce0b340090d631f190) )
2495 ROM_LOAD16_BYTE("533aaa09.7c", 0x000001, 128*1024, CRC(49086451) SHA1(8fdbeb5889e476dfd3f31619d5b5280a0494de69) )
2496
2497 /* tiles */
2498 ROM_REGION( 0x500000, REGION_GFX1, ROMREGION_ERASE00 )
2499 TILE_WORD_ROM_LOAD( "533a19.17h", 0x000000, 2*1024*1024, CRC(3ec1843e) SHA1(5d2c37f1eb299c846daa63f35ccd5334a516a1f5) )
2500 TILE_BYTE_ROM_LOAD( "533-ja.13g", 0x000004, 512*1024, CRC(d3e0d058) SHA1(c50bdb3493501bfbbe092d01f5d4c38bfa3412f8) )
2501
2502 /* sprites */
2503 ROM_REGION( 0x600000, REGION_GFX2, ROMREGION_ERASE00 )
2504 ROM_LOAD32_WORD( "533a17.25g", 0x000000, 2*1024*1024, CRC(9947af57) SHA1(a8f67cb49cf55e8402de352bb530c7c90c643144) )
2505 ROM_LOAD32_WORD( "533a13.28g", 0x000002, 2*1024*1024, CRC(58f1fc38) SHA1(9662b4fb036ffe90f294ee36fa52a0c1e1dbd116) )
2506 ROM_LOAD( "533a11.30g", 0x400000, 2*1024*1024, CRC(983105e1) SHA1(c688f6f73fab16107f01523081558a2e02a5311c) )
2507
2508 /* sound data */
2509 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2510 ROM_LOAD( "533a22.9g", 0x000000, 2*1024*1024, CRC(97233814) SHA1(dba20a81517796b7baf7c82551bd7f1c1a8ecd7e) )
2511 ROM_LOAD( "533a23.7g", 0x200000, 2*1024*1024, CRC(1bb7552b) SHA1(3c6f96b4ab97737c3634c08b94dd304d5517d88d) )
2512 ROM_END
2513
2514 /* Run and Gun 2 */
2515 ROM_START( rungun2 )
2516 /* main program */
2517 ROM_REGION( 0x600000, REGION_CPU1, 0 )
2518 GX_BIOS
2519 ROM_LOAD32_WORD_SWAP( "505uaa02.31b", 0x200002, 512*1024, CRC(cfca23f7) SHA1(dfea871f0aaf6b2db6d924ddfd4174e7a14333e8))
2520 ROM_LOAD32_WORD_SWAP( "505uaa03.27b", 0x200000, 512*1024, CRC(ad7f9ded) SHA1(824448daeb6109b822667e54baa1c73484642ac9))
2521
2522 /* data roms */
2523 ROM_LOAD32_WORD_SWAP( "505a04.31r", 0x400000, 1024*1024, CRC(11a73f01) SHA1(0738f347f1b639130d512f31034888d2063767c0) )
2524 ROM_LOAD32_WORD_SWAP( "505a05.29r", 0x400002, 1024*1024, CRC(5da5d695) SHA1(02bfbfa4ba0213a23819828a9be02923740dccd6) )
2525
2526 /* sound program */
2527 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2528 ROM_LOAD16_BYTE("505a06.9m", 0x000000, 128*1024, CRC(920013f1) SHA1(6bd7f2bdeaa777412d12eeef4ba6c7f952805739) )
2529 ROM_LOAD16_BYTE("505a07.7m", 0x000001, 128*1024, CRC(5641c603) SHA1(1af1f92032e7f870e1668e8d720742fb53c4d0e2) )
2530
2531 /* tiles */
2532 ROM_REGION( 0x600000, REGION_GFX1, ROMREGION_ERASE00 )
2533 ROM_LOAD16_BYTE( "505a21.11r", 0x000000, 1024*1024, CRC(03fda175) SHA1(4fdf7cfaa0d4024a2c40bba1f229c41e0627b8c8) )
2534 ROM_LOAD16_BYTE( "505a20.11m", 0x000001, 1024*1024, CRC(a6a300fb) SHA1(290d97c6ec36e3cab8e6fcd5310030e00fb0ce07) )
2535
2536 /* sprites */
2537 ROM_REGION( 0x1800000, REGION_GFX2, ROMREGION_ERASE00 )
2538 ROM_LOAD32_WORD( "505a19.14r", 0x0000000, 2*1024*1024, CRC(ffde4f17) SHA1(df93853f7bd3c775a15836b0ca9042f75eb65630) )
2539 ROM_LOAD32_WORD( "505a15.18r", 0x0000002, 2*1024*1024, CRC(d9ab1e6c) SHA1(748a61d939bd335c1b50f440e819303552b3d5a1) )
2540 ROM_LOAD32_WORD( "505a18.18m", 0x0400000, 2*1024*1024, CRC(c12bacfe) SHA1(5b5f4dd9a51c7a305dd4de1354cd1df2ce75c932) )
2541 ROM_LOAD32_WORD( "505a14.14m", 0x0400002, 2*1024*1024, CRC(356a75b0) SHA1(5f8b7a9d06d4207f19ed0f7c89513226488afde1) )
2542 ROM_LOAD32_WORD( "505a13.21r", 0x0800000, 2*1024*1024, CRC(e60c5191) SHA1(02a8af81682838800489aa1123a453045d70acd8) )
2543 ROM_LOAD32_WORD( "505a17.16r", 0x0800002, 2*1024*1024, CRC(8176f2f5) SHA1(d7944314b35bcd5301bbfba8a5b1ed6b35b9b888) )
2544 ROM_LOAD32_WORD( "505a12.21m", 0x0c00000, 2*1024*1024, CRC(421d5034) SHA1(f7a85b7e41f3ddf9ddbdc6f8b6d3dbf8ba40d61b) )
2545 ROM_LOAD32_WORD( "505a16.16m", 0x0c00002, 2*1024*1024, CRC(ca9c2193) SHA1(cc3fb558b834e0b7914879ab47c3750170d257f4) )
2546 ROM_LOAD32_WORD( "505a11.23r", 0x1000000, 2*1024*1024, CRC(75c13df0) SHA1(6680f75a67ca510fac29b65bce32fef64e844695) )
2547 ROM_LOAD32_WORD( "505a10.23m", 0x1000002, 2*1024*1024, CRC(fc315ee0) SHA1(4dab661e0bd8e5386e52d514a1511ceba6e5b7bd) )
2548 ROM_LOAD32_WORD( "505a09.25r", 0x1400000, 2*1024*1024, CRC(3e1d5a15) SHA1(ec4d46c2f2cc57e6193865357ffb3d62a9eecd4f) )
2549 ROM_LOAD32_WORD( "505a08.25m", 0x1400002, 2*1024*1024, CRC(442ed3ec) SHA1(d44e1c4e9f8c63a8f754f8d20064cec15ae0b6d6) )
2550
2551 /* PSAC2 tiles */
2552 ROM_REGION( 0x200000, REGION_GFX3, 0 )
2553 ROM_LOAD("505a24.22h", 0x000000, 2*1024*1024, CRC(70e906da) SHA1(4b1a412a71910633f48c6a0b9fd6949dcc82e365) )
2554
2555 /* sound data */
2556 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2557 ROM_LOAD( "505a23.7r", 0x000000, 2*1024*1024, CRC(67f03445) SHA1(9b5c1d1bb7b0ee275862d10effd9daed49568af4) )
2558 ROM_LOAD( "505a22.9r", 0x200000, 2*1024*1024, CRC(c2b67a9d) SHA1(9ff091972d7fad50bf0df2b3d8b5ee989e3df27f) )
2559 ROM_END
2560
2561 /* Slam Dunk 2 */
2562 ROM_START( slamdnk2 )
2563 /* main program */
2564 ROM_REGION( 0x600000, REGION_CPU1, 0 )
2565 GX_BIOS
2566 ROM_LOAD32_WORD_SWAP( "505jaa02.31m", 0x200002, 512*1024, CRC(9f72d48e) SHA1(6dd0520d0f0312e46f21ad4f6c41e47f3b5cb16b) )
2567 ROM_LOAD32_WORD_SWAP( "505jaa03.29m", 0x200000, 512*1024, CRC(52513794) SHA1(8a8fadb0eb582db53163620982dd53d1e5f8ca4c) )
2568
2569 /* data roms */
2570 ROM_LOAD32_WORD_SWAP( "505a04.31r", 0x400000, 1024*1024, CRC(11a73f01) SHA1(0738f347f1b639130d512f31034888d2063767c0) )
2571 ROM_LOAD32_WORD_SWAP( "505a05.29r", 0x400002, 1024*1024, CRC(5da5d695) SHA1(02bfbfa4ba0213a23819828a9be02923740dccd6) )
2572
2573 /* sound program */
2574 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2575 ROM_LOAD16_BYTE("505a06.9m", 0x000000, 128*1024, CRC(920013f1) SHA1(6bd7f2bdeaa777412d12eeef4ba6c7f952805739) )
2576 ROM_LOAD16_BYTE("505a07.7m", 0x000001, 128*1024, CRC(5641c603) SHA1(1af1f92032e7f870e1668e8d720742fb53c4d0e2) )
2577
2578 /* tiles */
2579 ROM_REGION( 0x600000, REGION_GFX1, ROMREGION_ERASE00 )
2580 ROM_LOAD16_BYTE( "505a21.11r", 0x000000, 1024*1024, CRC(03fda175) SHA1(4fdf7cfaa0d4024a2c40bba1f229c41e0627b8c8) )
2581 ROM_LOAD16_BYTE( "505a20.11m", 0x000001, 1024*1024, CRC(a6a300fb) SHA1(290d97c6ec36e3cab8e6fcd5310030e00fb0ce07) )
2582
2583 /* sprites */
2584 ROM_REGION( 0x1800000, REGION_GFX2, ROMREGION_ERASE00 )
2585 ROM_LOAD32_WORD( "505a19.14r", 0x0000000, 2*1024*1024, CRC(ffde4f17) SHA1(df93853f7bd3c775a15836b0ca9042f75eb65630) )
2586 ROM_LOAD32_WORD( "505a15.18r", 0x0000002, 2*1024*1024, CRC(d9ab1e6c) SHA1(748a61d939bd335c1b50f440e819303552b3d5a1) )
2587 ROM_LOAD32_WORD( "505a18.18m", 0x0400000, 2*1024*1024, CRC(c12bacfe) SHA1(5b5f4dd9a51c7a305dd4de1354cd1df2ce75c932) )
2588 ROM_LOAD32_WORD( "505a14.14m", 0x0400002, 2*1024*1024, CRC(356a75b0) SHA1(5f8b7a9d06d4207f19ed0f7c89513226488afde1) )
2589 ROM_LOAD32_WORD( "505a13.21r", 0x0800000, 2*1024*1024, CRC(e60c5191) SHA1(02a8af81682838800489aa1123a453045d70acd8) )
2590 ROM_LOAD32_WORD( "505a17.16r", 0x0800002, 2*1024*1024, CRC(8176f2f5) SHA1(d7944314b35bcd5301bbfba8a5b1ed6b35b9b888) )
2591 ROM_LOAD32_WORD( "505a12.21m", 0x0c00000, 2*1024*1024, CRC(421d5034) SHA1(f7a85b7e41f3ddf9ddbdc6f8b6d3dbf8ba40d61b) )
2592 ROM_LOAD32_WORD( "505a16.16m", 0x0c00002, 2*1024*1024, CRC(ca9c2193) SHA1(cc3fb558b834e0b7914879ab47c3750170d257f4) )
2593 ROM_LOAD32_WORD( "505a11.23r", 0x1000000, 2*1024*1024, CRC(75c13df0) SHA1(6680f75a67ca510fac29b65bce32fef64e844695) )
2594 ROM_LOAD32_WORD( "505a10.23m", 0x1000002, 2*1024*1024, CRC(fc315ee0) SHA1(4dab661e0bd8e5386e52d514a1511ceba6e5b7bd) )
2595 ROM_LOAD32_WORD( "505a09.25r", 0x1400000, 2*1024*1024, CRC(3e1d5a15) SHA1(ec4d46c2f2cc57e6193865357ffb3d62a9eecd4f) )
2596 ROM_LOAD32_WORD( "505a08.25m", 0x1400002, 2*1024*1024, CRC(442ed3ec) SHA1(d44e1c4e9f8c63a8f754f8d20064cec15ae0b6d6) )
2597
2598 /* PSAC2 tiles */
2599 ROM_REGION( 0x200000, REGION_GFX3, 0 )
2600 ROM_LOAD("505a24.22h", 0x000000, 2*1024*1024, CRC(70e906da) SHA1(4b1a412a71910633f48c6a0b9fd6949dcc82e365) )
2601
2602 /* sound data */
2603 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2604 ROM_LOAD( "505a23.7r", 0x000000, 2*1024*1024, CRC(67f03445) SHA1(9b5c1d1bb7b0ee275862d10effd9daed49568af4) )
2605 ROM_LOAD( "505a22.9r", 0x200000, 2*1024*1024, CRC(c2b67a9d) SHA1(9ff091972d7fad50bf0df2b3d8b5ee989e3df27f) )
2606 ROM_END
2607
2608 /* Rushing Heroes */
2609 ROM_START( rushhero )
2610 /* main program */
2611 ROM_REGION( 0x600000, REGION_CPU1, 0 )
2612 GX_BIOS
2613 ROM_LOAD32_WORD_SWAP( "605b02.31m", 0x200002, 512*1024, CRC(94c3d835) SHA1(f48d34987fa6575a2c41d3ca3359e9e2cbc817e0) )
2614 ROM_LOAD32_WORD_SWAP( "605b03.29m", 0x200000, 512*1024, CRC(c5b8d31d) SHA1(6c5b359e1fcf511c50d6a876946631fc38a6dade) )
2615
2616 /* data roms */
2617 ROM_LOAD32_WORD_SWAP( "605a04.31r", 0x400000, 1024*1024, CRC(f6788154) SHA1(093c145d5348b4f10193acc258f5539bd59138a1))
2618 ROM_LOAD32_WORD_SWAP( "605a05.29r", 0x400002, 1024*1024, CRC(9bca4297) SHA1(c20be1ffcee8bd56f69d4fcc19d0035b3f74b8f2))
2619
2620 /* sound program */
2621 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2622 ROM_LOAD16_BYTE("605a06.9m", 0x000000, 128*1024, CRC(9ca03dce) SHA1(008106e864d8390d7ae8645a2fe06d0eaaa746e0))
2623 ROM_LOAD16_BYTE("605a07.7m", 0x000001, 128*1024, CRC(3116a8b0) SHA1(f0899d7027464d9aad45ffa6a464288a51a80dc1))
2624
2625 /* tiles */
2626 ROM_REGION( 0x600000, REGION_GFX1, ROMREGION_ERASE00 )
2627 ROM_LOAD16_BYTE( "605a21.11r", 0x000000, 1024*1024, CRC(0e5add29) SHA1(f80d81ff8110825ba19ebc3cf50480b8cf275571))
2628 ROM_LOAD16_BYTE( "605a20.11m", 0x000001, 1024*1024, CRC(a8fb4288) SHA1(b0ee6c2add5a8063f771ac8bbdfd78c0382a5036))
2629
2630 /* sprites */
2631 ROM_REGION( 0x3000000, REGION_GFX2, ROMREGION_ERASE00 )
2632 ROM_LOAD32_WORD( "605a19.14r", 0x0000000, 4*1024*1024, CRC(293427d0) SHA1(c31f93797bda09ea7e990100a5556eb0fde64968) )
2633 ROM_LOAD32_WORD( "605a15.18r", 0x0000002, 4*1024*1024, CRC(19e6e356) SHA1(b2568e14d6fb9a9792f95aafcf694dbf00c0d2c8) )
2634 ROM_LOAD32_WORD( "605a18.18m", 0x0800000, 4*1024*1024, CRC(b5115d76) SHA1(48c3119afb649c58d4df36806fe5530ddd379782) )
2635 ROM_LOAD32_WORD( "605a14.14m", 0x0800002, 4*1024*1024, CRC(4d4dbecb) SHA1(7c3cb2739d6b729d855d652b1991c7af6cd79d1c) )
2636 ROM_LOAD32_WORD( "605a13.21r", 0x1000000, 4*1024*1024, CRC(08137923) SHA1(c1af6b55c1c08e16384d2660b2210ccf3b955be9) )
2637 ROM_LOAD32_WORD( "605a17.16r", 0x1000002, 4*1024*1024, CRC(42e6dc6f) SHA1(8035b7160267a988a1aa2690423c68b6f1975f1a) )
2638 ROM_LOAD32_WORD( "605a12.21m", 0x1800000, 4*1024*1024, CRC(194ffad0) SHA1(1c56f4e89bfe72b435793b907e7ca3e62ecddf4b) )
2639 ROM_LOAD32_WORD( "605a16.16m", 0x1800002, 4*1024*1024, CRC(aab542ca) SHA1(9728b028f48768236f47a7a9bddb27944297b583) )
2640 ROM_LOAD32_WORD( "605a11.23r", 0x2000000, 4*1024*1024, CRC(bc61339c) SHA1(77a5737501bf8ffd7ae4192a6e5924c479eb6655) )
2641 ROM_LOAD32_WORD( "605a10.23m", 0x2000002, 4*1024*1024, CRC(4f47d434) SHA1(c4503993c738e1b8df6f045f5a82504363682db7) )
2642 ROM_LOAD32_WORD( "605a09.25r", 0x2800000, 4*1024*1024, CRC(624fd486) SHA1(edd81d5487f8239ffa89b931430cf41f06a17cf6) )
2643 ROM_LOAD32_WORD( "605a08.25m", 0x2800002, 4*1024*1024, CRC(ea80ddfd) SHA1(4be61af09bcc80c97505196a6f43797753d14f85) )
2644
2645 /* PSAC2 tiles */
2646 ROM_REGION( 0x200000, REGION_GFX3, 0 )
2647 ROM_LOAD("605a24.22h", 0x000000, 1024*1024, CRC(e5ba1bb7) SHA1(d677e03b418a8bde7a4e4932fd452924768e7d72))
2648
2649 /* sound data */
2650 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2651 ROM_LOAD( "605a23.7r", 0x000000, 4*1024*1024, CRC(992c4751) SHA1(18ecfc21138f9dc62f0658750808bbef649510f7))
2652 ROM_END
2653
2654 /* Taisen Tokkae-dama */
2655 ROM_START( tokkae )
2656 /* main program */
2657 ROM_REGION( 0x300000, REGION_CPU1, 0 )
2658 GX_BIOS
2659 ROM_LOAD32_WORD_SWAP( "615jaa02.31b", 0x200002, 512*1024, CRC(f66d6dbf) SHA1(16c4a84e37475d3773b505f33f8a0ee8168f282f) )
2660 ROM_LOAD32_WORD_SWAP( "615jaa03.27b", 0x200000, 512*1024, CRC(b7760e2b) SHA1(7903d8c2d32ef7d324e965e52544a9a41abf62fd) )
2661
2662 /* sound program */
2663 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2664 ROM_LOAD16_BYTE("615a08.9c", 0x000000, 128*1024, CRC(a5340de4) SHA1(96d74624f44423e57fe8fcecadecdd76d91c27bc) )
2665 ROM_LOAD16_BYTE("615a09.7c", 0x000001, 128*1024, CRC(c61f954c) SHA1(5242a2872db1db9ab4edd9951c2ac2d872f06dc7) )
2666
2667 /* tiles */
2668 ROM_REGION( 0x500000, REGION_GFX1, ROMREGION_ERASE00 )
2669 TILE_WORDS2_ROM_LOAD( "615a19.17h", 0x000000, 1*1024*1024, CRC(07749e1e) SHA1(79a5f979b1dc7fa92ae37af03447edf4885ecdf8) )
2670 TILE_BYTES2_ROM_LOAD( "615a20.13c", 0x000004, 512*1024, CRC(9911b5a1) SHA1(7dc9348fd23331ca7614db27dc5f280610f87a20) )
2671
2672 /* sprites */
2673 ROM_REGION( 0xa00000, REGION_GFX2, ROMREGION_ERASE00 )
2674 ROM_LOAD32_WORD( "615a17.25g", 0x000000, 2*1024*1024, CRC(b864654b) SHA1(bbd74c992ba3c3c629520e68687d7c8f3c26d0b9) )
2675 ROM_LOAD32_WORD( "615a13.28g", 0x000002, 2*1024*1024, CRC(4e8afa1a) SHA1(d980104ddf9670e689236f381db3345471aff6fd) )
2676 ROM_LOAD32_WORD( "615a16.18h", 0x400000, 2*1024*1024, CRC(dfa0f0fe) SHA1(4f68767f8329f6348055a472d923557e7dec3154) )
2677 ROM_LOAD32_WORD( "615a12.27g", 0x400002, 2*1024*1024, CRC(fbc563fd) SHA1(19a6544297e0eade09e69741b9e3d8b32c7e2794) )
2678
2679 ROM_LOAD( "615a11.30g", 0x800000, 2*1024*1024, CRC(f25946e4) SHA1(e7744cdbeccc7325fdb31e134fed71d4cf8f9b0a) )
2680
2681 /* sound data */
2682 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2683 ROM_LOAD( "615a22.9g", 0x000000, 2*1024*1024, CRC(ea7e47dd) SHA1(5bf5bad9427b083757c400eaf58c63a6267c1caf) )
2684 ROM_LOAD( "615a23.7g", 0x200000, 2*1024*1024, CRC(22d71f36) SHA1(3f24bb4cd8e1d693b42219e05960ad0c756b08cb) )
2685 ROM_END
2686
2687 /* Tokimeki Memorial Taisen Puzzle-dama */
2688 ROM_START( tkmmpzdm )
2689 /* main program */
2690 ROM_REGION( 0x300000, REGION_CPU1, 0 )
2691 GX_BIOS
2692 ROM_LOAD32_WORD_SWAP( "515jab02.31b", 0x200002, 512*1024, CRC(60d4d577) SHA1(5320ce2e004f01ca73e2f2048a622f14ab7a053d) )
2693 ROM_LOAD32_WORD_SWAP( "515jab03.27b", 0x200000, 512*1024, CRC(c383413d) SHA1(1227e4c8bfdb5149896da81efa0109a55ae62708) )
2694
2695 /* sound program */
2696 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2697 ROM_LOAD16_BYTE("515a04.9c", 0x000000, 128*1024, CRC(a9b7bb45) SHA1(ad11a7b5c24a03658ff4309dbd8c7334f4adf7b4) )
2698 ROM_LOAD16_BYTE("515a05.7c", 0x000001, 128*1024, CRC(dea4ca2f) SHA1(5d11469a93293381228233baad6896e098994d9b) )
2699
2700 /* tiles */
2701 ROM_REGION( 0x500000, REGION_GFX1, ROMREGION_ERASE00 )
2702 TILE_WORDS2_ROM_LOAD( "515a11.17h", 0x000000, 1024*1024, CRC(8689852d) SHA1(42ba16a9dfba47132fe07c6b1d044c5b32753220) )
2703 TILE_BYTES2_ROM_LOAD( "515a12.13c", 0x000004, 512*1024, CRC(6936f94a) SHA1(e2c7fc327638ee39eef6109c4f164eaf98972f00) )
2704
2705 /* sprites */
2706 ROM_REGION( 0xa00000, REGION_GFX2, ROMREGION_ERASE00 )
2707 ROM_LOAD32_WORD( "515a10.25g", 0x000000, 2*1024*1024, CRC(e6e7ab7e) SHA1(3f7ddab4b814673264b542d2a8761c56f82f2180) )
2708 ROM_LOAD32_WORD( "515a08.28g", 0x000002, 2*1024*1024, CRC(5613daea) SHA1(43480c8104582cc27d8ab6920ec113e660de5ae7) )
2709 ROM_LOAD32_WORD( "515a09.18h", 0x400000, 2*1024*1024, CRC(28ffdb48) SHA1(8511def7bb151f912755c2bbcb0cae1a2e52f405) )
2710 ROM_LOAD32_WORD( "515a07.27g", 0x400002, 2*1024*1024, CRC(246e6cb1) SHA1(a320e0820895717c765d07f80cf7983b502af8f0) )
2711 ROM_LOAD( "515a06.30g", 0x800000, 2*1024*1024, CRC(13b7b953) SHA1(4393c5b3515f3ded9db3ac5d59308f99f40f2b76) )
2712
2713 /* sound data */
2714 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2715 ROM_LOAD( "515a13.9g", 0x000000, 2*1024*1024, CRC(4b066b00) SHA1(874dd49847b10e6d9c39decb81557534baa36d79) )
2716 ROM_LOAD( "515a14.7g", 0x200000, 2*1024*1024, CRC(128cc944) SHA1(b0cd2ec1b9a2ac936d57b6d6c2a70f9c13dc97a5) )
2717 ROM_END
2718
2719 /* Winning Spike */
2720 ROM_START( winspike )
2721 /* main program */
2722 ROM_REGION( 0x300000, REGION_CPU1, 0 )
2723 GX_BIOS
2724 ROM_LOAD32_WORD_SWAP( "705jaa02.31b", 0x200002, 512*1024, CRC(85f11b03) SHA1(ab597d16df654179050cc029179aaf946f0426c5) )
2725 ROM_LOAD32_WORD_SWAP( "705jaa03.27b", 0x200000, 512*1024, CRC(1d5e3922) SHA1(b5e1fd1ea4f872159522e64c2725bf8441a58ef9) )
2726
2727 /* sound program */
2728 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2729 ROM_LOAD16_BYTE("705a08.9c", 0x000000, 128*1024, CRC(0d531639) SHA1(14a72925f75528e7b4d6b701b2b51f4557f031f0) )
2730 ROM_LOAD16_BYTE("705a09.7c", 0x000001, 128*1024, CRC(24e58845) SHA1(a01caced5bad9d98a3f33d72ca5eb9096c45e4ba) )
2731
2732 /* tiles: length of 1 meg each is TRUSTED by the internal checksum code */
2733 /* do NOT change these to the 4 meg dumps again, those are WRONG!!!!!!! */
2734 ROM_REGION( 0x800000, REGION_GFX1, ROMREGION_ERASE00 )
2735 ROM_LOAD16_BYTE( "705a19.17h", 0x000000, 0x100000, CRC(bab84b30) SHA1(8522a0dc5e37524f51d632e9d975e949a14c0dc3) )
2736 ROM_LOAD16_BYTE( "705a18.22h", 0x000001, 0x100000, CRC(eb97fb5f) SHA1(13de0ad060fd6f1312fa10edde1fef6481e8df64) )
2737
2738 /* sprites */
2739 ROM_REGION( 0x1000000, REGION_GFX2, ROMREGION_ERASE00 )
2740 _64_WORD_ROM_LOAD( "705a10.33g", 0x000000, 0x400000, CRC(fc4dc78b) SHA1(520cdcf9ca20ec1c84be734e06e183e7a871090b) )
2741 _64_WORD_ROM_LOAD( "705a11.30g", 0x000002, 0x400000, CRC(68542ce9) SHA1(a4294da1d1026e3a9d070575e5855935389a705f) )
2742 _64_WORD_ROM_LOAD( "705a13.28g", 0x000004, 0x400000, CRC(3b62584b) SHA1(69718f47ff1e8d65a11972af1ed5068db175f625) )
2743 _64_WORD_ROM_LOAD( "705a17.25g", 0x000006, 0x400000, CRC(971d2812) SHA1(ee0819faf6f6c8420d5d3742cb39dfb76b9ce7a4) )
2744
2745 /* sound data */
2746 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2747 ROM_LOAD( "705a22.9g", 0x000000, 4*1024*1024, CRC(1a9246f6) SHA1(a40ff43310d035f7b88c4e397a4ee75151578c17) )
2748 ROM_END
2749
2750 /* Taisen Puzzle-dama */
2751 ROM_START( puzldama )
2752 /* main program */
2753 ROM_REGION( 0x300000, REGION_CPU1, 0 )
2754 GX_BIOS
2755 ROM_LOAD32_WORD_SWAP( "315jaa02.31b", 0x200002, 512*1024, CRC(e0a35c7d) SHA1(6f35dc0c43fa331fc71968c67f111fb73e5add2f) )
2756 ROM_LOAD32_WORD_SWAP( "315jaa04.27b", 0x200000, 512*1024, CRC(abe4f0e7) SHA1(ece76088c61eddcad2efb554937d24d642d38be6) )
2757
2758 /* sound program */
2759 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2760 ROM_LOAD16_BYTE("315a06.9c", 0x000000, 128*1024, CRC(06580a9f) SHA1(75e13aa13e3c1060cdd630c101d6644b3904317f) )
2761 ROM_LOAD16_BYTE("315a07.7c", 0x000001, 128*1024, CRC(431c58f3) SHA1(4888e305875d56cca5e1d792bdf27e57b3e42b03) )
2762
2763 /* tiles */
2764 ROM_REGION( 0xa00000, REGION_GFX1, ROMREGION_ERASE00 )
2765 TILE_WORD_ROM_LOAD( "315a14.17h", 0x000000, 512*1024, CRC(0ab731e0) SHA1(1f7d6ce40e689e1dddfee656bb46bd044012c2d6) )
2766 TILE_BYTE_ROM_LOAD( "315a12.13g", 0x000004, 2*1024*1024, CRC(3047b8d2) SHA1(99fa4d20ee5aae89b9093ceb581f187bc9acc0ae) )
2767
2768 /* sprites */
2769 ROM_REGION( 0x500000, REGION_GFX2, ROMREGION_ERASE00 )
2770 ROM_LOAD32_WORD( "315a11.25g", 0x000000, 2*1024*1024, CRC(b8a99c29) SHA1(60086f663aa6cbfc3fb378caeb2509c65637564e) )
2771 ROM_LOAD32_WORD( "315a10.28g", 0x000002, 2*1024*1024, CRC(77d175dc) SHA1(73506df30db5ce38a9a21a1dce3e8b4cc1dfa7be) )
2772 ROM_LOAD( "315a09.30g", 0x400000, 1*1024*1024, CRC(82580329) SHA1(99749a67f1843dfd0fe93cc6bbcbc126b7bb7fb4) )
2773
2774 /* sound data */
2775 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2776 ROM_LOAD( "315a17.9g", 0x000000, 2*1024*1024, CRC(ea763d61) SHA1(2a7dcb2a2a23c9fea62fb82ffc18949bf15b9f6f) )
2777 ROM_LOAD( "315a18.7g", 0x200000, 2*1024*1024, CRC(6e416cee) SHA1(145a766ad2fa2b692692053dd36e0caf51d67a56) )
2778 ROM_END
2779
2780 /* Dragoon Might */
2781 ROM_START( dragoonj )
2782 /* main program */
2783 ROM_REGION( 0x600000, REGION_CPU1, 0 )
2784 GX_BIOS
2785 ROM_LOAD32_WORD_SWAP( "417jaa02.31b", 0x200002, 512*1024, CRC(533cbbd5) SHA1(4b7a0345ce0e503c647c7cde6f284ad0ee10f0ff) )
2786 ROM_LOAD32_WORD_SWAP( "417jaa03.27b", 0x200000, 512*1024, CRC(8e1f883f) SHA1(e9f25c0fae7491c55812fda336436a2884c4d417) )
2787
2788 /* data roms */
2789 ROM_LOAD32_WORD_SWAP( "417a04.26c", 0x400002, 1024*1024, CRC(dc574747) SHA1(43cbb6a08c27bb96bb25568c3b636c44fff3e08e) )
2790 ROM_LOAD32_WORD_SWAP( "417a05.23c", 0x400000, 1024*1024, CRC(2ee2c587) SHA1(a1b2b288c375a3406d4b12e66c973484c03fe26e) )
2791
2792 /* sound program */
2793 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2794 ROM_LOAD16_BYTE("417a06.9c", 0x000000, 128*1024, CRC(8addbbee) SHA1(fdb38fab1fd65b7362578b108bf6128e926b5f13) )
2795 ROM_LOAD16_BYTE("417a07.7c", 0x000001, 128*1024, CRC(c1fd7584) SHA1(1b204165ef07b6b53f47adc16eed69d11dab53b2) )
2796
2797 /* tiles */
2798 ROM_REGION( 0x400000, REGION_GFX1, ROMREGION_ERASE00 )
2799 TILE_WORD_ROM_LOAD( "417a16.17h", 0x000000, 2*1024*1024, CRC(88b2213b) SHA1(ac4ac57618cf98d7486b147f5494e6943bff1a4d) )
2800
2801 /* sprites */
2802 ROM_REGION( 0x1000000, REGION_GFX2, ROMREGION_ERASE00 )
2803 ROM_LOAD32_WORD( "417a15.25g", 0x000000, 2*1024*1024, CRC(83bccd01) SHA1(c0e65c43115164c3f64ac14a449c65c4e3e3c4cf) )
2804 ROM_LOAD32_WORD( "417a11.28g", 0x000002, 2*1024*1024, CRC(624a7c4c) SHA1(5fda37cd02b4dcb328b80b29041214c685c77a78) )
2805 ROM_LOAD32_WORD( "417a14.18h", 0x400000, 2*1024*1024, CRC(fbf551f1) SHA1(871c5804aba9845aa04596db51def3ba3b8bae30) )
2806 ROM_LOAD32_WORD( "417a10.27g", 0x400002, 2*1024*1024, CRC(18fde49f) SHA1(f85b2981172be2cddc5d691bb803f0133a36cb1a) )
2807 ROM_LOAD32_WORD( "417a13.20h", 0x800000, 2*1024*1024, CRC(d2e3959d) SHA1(efe516e6b84c67c0a154726a0f7f7054ee866738) )
2808 ROM_LOAD32_WORD( "417a09.30g", 0x800002, 2*1024*1024, CRC(b5653e24) SHA1(ffa44d6b65feef298fa4dcc064ebd173c7cc22aa) )
2809 ROM_LOAD32_WORD( "417a12.23h", 0xc00000, 2*1024*1024, CRC(25496115) SHA1(e53164f8ad95187011059c465a67fff1d18ba888) )
2810 ROM_LOAD32_WORD( "417a08.33g", 0xc00002, 2*1024*1024, CRC(801e9d93) SHA1(9364d802b4ca03e652b25304c8298be8de8936b4) )
2811
2812 /* sound data */
2813 ROM_REGION( 0x200000, REGION_SOUND1, 0 )
2814 ROM_LOAD( "417a17.9g", 0x000000, 2*1024*1024, CRC(88d47dfd) SHA1(b5d6dd7ee9ac0c427dc3e714a97945c954260913) )
2815 ROM_END
2816
2817 /* Soccer Superstars */
2818 ROM_START( soccerss )
2819 /* main program */
2820 ROM_REGION( 0x600000, REGION_CPU1, 0 )
2821 GX_BIOS
2822 ROM_LOAD32_WORD_SWAP( "427jaa02.28m", 0x200000, 512*1024, CRC(210f9ba7) SHA1(766fc821d1c7aaf9e306c6e2379d85e7aa50738c) )
2823 ROM_LOAD32_WORD_SWAP( "427jaa03.30m", 0x200002, 512*1024, CRC(f76add04) SHA1(755dff41ce3b0488ed8f9f5feebfe95a22b70d16) )
2824
2825 /* data roms */
2826 ROM_LOAD32_WORD_SWAP( "427a04.28r", 0x400000, 0x080000, CRC(c7d3e1a2) SHA1(5e1e4f4c97def36902ad853248014a7af62e0c5e) )
2827 ROM_LOAD32_WORD_SWAP( "427a05.30r", 0x400002, 0x080000, CRC(5372f0a5) SHA1(36e8d0a73918cbd018c1865d1a05445daba8997c) )
2828
2829 /* sound program */
2830 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2831 ROM_LOAD16_BYTE("427a07.6m", 0x000000, 128*1024, CRC(8dbaf4c7) SHA1(cb69bf94090a4871b35e7ba1f58e3225077b82cd) )
2832 ROM_LOAD16_BYTE("427a06.9m", 0x000001, 128*1024, CRC(979df65d) SHA1(7499e9a27aa562692bd3a296789696492a6254bc) )
2833
2834 /* tiles */
2835 ROM_REGION( 0x500000, REGION_GFX1, ROMREGION_ERASE00 )
2836 TILE_WORDS2_ROM_LOAD( "427a15.11r", 0x000000, 0x100000, CRC(33ce2b8e) SHA1(b0936386cdc7c41f33b1d7b4f5ce25fe618d1286) )
2837 TILE_BYTES2_ROM_LOAD( "427a14.143", 0x000004, 0x080000, CRC(7575a0ed) SHA1(92fda2747ac090f93e60cff8478af6721b949dc2) )
2838
2839 /* sprites */
2840 ROM_REGION( 0xc00000, REGION_GFX2, ROMREGION_ERASE00 )
2841 ROM_LOAD32_WORD( "427a08.140", 0x000000, 2*1024*1024, CRC(221250af) SHA1(fd24e7f0e3024df5aa08506523953c5e35d2267b) )
2842 ROM_LOAD32_WORD( "427a09.137", 0x000002, 2*1024*1024, CRC(56bdd480) SHA1(01d164aedc77f71f6310cfd739c00b33289a2e7e) )
2843 ROM_LOAD32_WORD( "427a10.25r", 0x400000, 2*1024*1024, CRC(6b3ccb41) SHA1(b246ef350a430e60f0afd1b80ff48139c325e926) )
2844 ROM_LOAD32_WORD( "427a11.23r", 0x400002, 2*1024*1024, CRC(c1ca74c1) SHA1(b7286df8e59f8f1939ebf17aaf9345a857b0b100) )
2845 ROM_LOAD32_WORD( "427a12.21r", 0x800000, 2*1024*1024, CRC(97d6fd38) SHA1(8d2895850cafdea95db08c84e7eeea90a1921515) )
2846 ROM_LOAD32_WORD( "427a13.18r", 0x800002, 2*1024*1024, CRC(815a9b87) SHA1(7d9d5932fff7dd7aa4cbccf0c8d3784dc8042e70) )
2847
2848 /* PSAC2 tiles */
2849 ROM_REGION( 0x100000, REGION_GFX3, ROMREGION_ERASE00 )
2850 ROM_LOAD( "427a18.145", 0x000000, 0x100000, CRC(bb6e6ec6) SHA1(aa1365a4318866d9e7e74461a6e6c113f83b6771) )
2851
2852 /* PSAC2 map data */
2853 ROM_REGION( 0x080000, REGION_GFX4, ROMREGION_ERASE00 )
2854 ROM_LOAD( "427a17.24c", 0x000000, 0x080000, CRC(fb6eb01f) SHA1(28cdb30ff70ee5fc7624e18fe048dd85dfa49ace) )
2855
2856 /* sound data */
2857 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2858 ROM_LOAD( "427a16.9r", 0x000000, 2*1024*1024, CRC(39547265) SHA1(c0efd68c0c1ea59141045150842f36d43e1f01d8) )
2859 ROM_END
2860
2861 /* Vs. Net Soccer */
2862 ROM_START(vsnetscr)
2863 /* main program */
2864 ROM_REGION( 0x600000, REGION_CPU1, 0 )
2865 GX_BIOS
2866 ROM_LOAD32_WORD_SWAP( "627uab03.29m", 0x200000, 512*1024, CRC(53ca7eec) SHA1(d2d5a491417849c31aaff61a93da4ab2e94495d4) )
2867 ROM_LOAD32_WORD_SWAP( "627uab02.31m", 0x200002, 512*1024, CRC(c352cc6f) SHA1(d8d0d802eb6bd0910e35dcc6b81b7ac9036e32ea) )
2868
2869 /* data roms */
2870 ROM_LOAD32_WORD_SWAP( "627a05.31r", 0x400000, 1024*1024, CRC(be4e7b3c) SHA1(f44e7b1913aa54f759bd31bb86fdedbb9747b2d5) )
2871 ROM_LOAD32_WORD_SWAP( "627a04.29r", 0x400002, 1024*1024, CRC(17334e9a) SHA1(82cdba016c29160550c43feee7a4feff6e1184aa) )
2872
2873 /* sound program */
2874 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2875 ROM_LOAD16_BYTE("627b06.9m", 0x000000, 128*1024, CRC(c8337b9d) SHA1(574c674676f493ca4b5a135728ce01e664d1293d) )
2876 ROM_LOAD16_BYTE("627b07.7m", 0x000001, 128*1024, CRC(d7d92579) SHA1(929b8e90cfef2ef14d84173267b637e4efdb6867) )
2877
2878 /* tiles */
2879 ROM_REGION( 0x500000, REGION_GFX1, ROMREGION_ERASE00 )
2880 ROM_LOAD16_BYTE( "627a21.11r", 0x000000, 1024*1024, CRC(d0755fb8) SHA1(de37ea2a7969a97b6f2abccb7dc2a58950482bf0) )
2881 ROM_LOAD16_BYTE( "627a20.11m", 0x000001, 1024*1024, CRC(f68b28f2) SHA1(1463717ed581494fcab77a80dc6ffd3ab82ab1fa) )
2882
2883 /* sprites */
2884 ROM_REGION( 0xc00000, REGION_GFX2, ROMREGION_ERASE00 )
2885 ROM_LOAD32_WORD( "627a19.14r", 0x000000, 2*1024*1024, CRC(5efaa3bc) SHA1(95314c1054ccf5b9626f0b06f9e1c857a127e2ca) )
2886 ROM_LOAD32_WORD( "627a15.18r", 0x000002, 2*1024*1024, CRC(5180ca06) SHA1(d5569f6fc6b0374cd111f8313f635e4b7c49351f) )
2887 ROM_LOAD32_WORD( "627a13.21r", 0x400000, 2*1024*1024, CRC(af48849d) SHA1(c43981883ef042968444b6d993a640edc429daae) )
2888 ROM_LOAD32_WORD( "627a17.16r", 0x400002, 2*1024*1024, CRC(ca99d29c) SHA1(919dfb029dbc7d2c5e420d54df36eef3ec3bb1a2) )
2889 ROM_LOAD32_WORD( "627a11.23r", 0x800000, 2*1024*1024, CRC(a2e507f2) SHA1(ceaaccbac22fecef32fa34f887568bb18464265d) )
2890 ROM_LOAD32_WORD( "627a09.25r", 0x800002, 2*1024*1024, CRC(312cf8a4) SHA1(107456fc1a1906a60b5b50f4ca6b7e8cd258e6ee) )
2891
2892 /* PSAC2 tiles */
2893 ROM_REGION( 0x200000, REGION_GFX3, ROMREGION_ERASE00)
2894 ROM_LOAD( "627a24.22h", 0x000000, 0x200000, CRC(2cd73305) SHA1(5a46148c08198499639adc4b6936af0b2b530bc9) )
2895
2896 /* sound data */
2897 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2898 /* probably should be 4M byte mode like Rushing Heroes*/
2899 ROM_LOAD( "627a23.7r", 0x000000, 0x200000, BAD_DUMP CRC(b0266eb6) SHA1(65fafcee4b8f9a6e9f05df6f1fb4db519e97f776) )
2900 ROM_END
2901
2902 /* Lethal Enforcers II */
2903 ROM_START( le2 )
2904 /* main program */
2905 ROM_REGION( 0x300000, REGION_CPU1, 0 )
2906 GX_BIOS
2907 ROM_LOAD32_BYTE( "312eaa05.26b", 0x200000, 128*1024, CRC(875f6561) SHA1(8ede0697ff91134011f9fb5eb26e596cbc6e8f12) )
2908 ROM_LOAD32_BYTE( "312eaa04.28b", 0x200001, 128*1024, CRC(d5fb8d30) SHA1(824d6a43bed5aff2f65096922620ff5bff3b29f9) )
2909 ROM_LOAD32_BYTE( "312eaa03.30b", 0x200002, 128*1024, CRC(cfe07036) SHA1(cd7181ace76feb0e684a51db488b64b86ced5f55) )
2910 ROM_LOAD32_BYTE( "312eaa02.33b", 0x200003, 128*1024, CRC(5094b965) SHA1(cb597b663c49d0f63af770fd6ce344e5df9a1ed9) )
2911
2912 /* sound program */
2913 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2914 ROM_LOAD16_BYTE("312b06.9c", 0x000000, 128*1024, CRC(a6f62539) SHA1(b333e02c55237a0429d8c5386ec68b67797a1107) )
2915 ROM_LOAD16_BYTE("312b07.7c", 0x000001, 128*1024, CRC(1aa19c41) SHA1(5b879fb17ac514f266e63db6af50f2f4af7da32c) )
2916
2917 /* tiles */
2918 ROM_REGION( 0x800000, REGION_GFX1, ROMREGION_ERASE00 )
2919 ROM_LOAD16_BYTE( "312a14.17h", 0x000000, 2*1024*1024, CRC(dc862f19) SHA1(8ec9f8715b622462fb8c79a48162c161eb9fe13b) )
2920 ROM_LOAD16_BYTE( "312a12.22h", 0x000001, 2*1024*1024, CRC(98c04ddd) SHA1(7bc7af21625466e75003da9fd950437249e75b78) )
2921 ROM_LOAD16_BYTE( "312a15.15h", 0x400000, 2*1024*1024, CRC(516f2941) SHA1(07415fec2d96fe6b707f801a9e9e963186d83d6a) )
2922 ROM_LOAD16_BYTE( "312a13.20h", 0x400001, 2*1024*1024, CRC(16e5fdaa) SHA1(f04e09ee4207eb2bd67533997d36f4b3cf42a439) )
2923
2924 /* sprites */
2925 ROM_REGION( 0x800000, REGION_GFX2, ROMREGION_ERASE00 )
2926 _64_WORD_ROM_LOAD( "312a08.33g", 0x000000, 2*1024*1024, CRC(29015d56) SHA1(7273270804ecefd8f59469c2c2a8a89fb045a12b) )
2927 _64_WORD_ROM_LOAD( "312a09.30g", 0x000002, 2*1024*1024, CRC(b2c5d6d5) SHA1(8248612275ca862c6688de5c6f24f37aeb3f9fe5) )
2928 _64_WORD_ROM_LOAD( "312a10.28g", 0x000004, 2*1024*1024, CRC(3c570d04) SHA1(ebbf7d28726e98c8895c9bf901f8b2dd38018c77) )
2929 _64_WORD_ROM_LOAD( "312a11.25g", 0x000006, 2*1024*1024, CRC(5f474357) SHA1(1f6d99f1ea69e07a65731ea4eae5917452cfcab6) )
2930
2931 /* sound data */
2932 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2933 ROM_LOAD( "312a17.9g", 0x000000, 2*1024*1024, CRC(ed101448) SHA1(ef1342f37fbbb092eddee0c237b40989ad42cf26) )
2934 ROM_LOAD( "312a18.7g", 0x200000, 1*1024*1024, CRC(5717abd7) SHA1(d304d733e7fca0363ea6b3872c2d3bbe4edf1179) )
2935 ROM_END
2936
2937 /* Lethal Enforcers II (US Version) */
2938 ROM_START( le2u )
2939 /* main program */
2940 ROM_REGION( 0x300000, REGION_CPU1, 0 )
2941 GX_BIOS
2942 ROM_LOAD32_BYTE( "312uaa05.26b", 0x200000, 128*1024, CRC(973aa500) SHA1(ad834b0fed37502ff3e3fe7f608fd5dbe172f452) )
2943 ROM_LOAD32_BYTE( "312uaa04.28b", 0x200001, 128*1024, CRC(cba39552) SHA1(243f2115047d9e646f69368d78b18be47b7eacc6) )
2944 ROM_LOAD32_BYTE( "312uaa03.30b", 0x200002, 128*1024, CRC(20bc94e6) SHA1(652ca7b3b7ece9e702134691373e913ce3651401) )
2945 ROM_LOAD32_BYTE( "312uaa02.33b", 0x200003, 128*1024, CRC(04f3bd9e) SHA1(0617fd065efeae8c5fa665a65ed69a246d7a8ed7) )
2946
2947 /* sound program */
2948 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2949 ROM_LOAD16_BYTE("312a06.9c", 0x000000, 128*1024, CRC(ff6f2cd4) SHA1(a52cab6b64b54bd60e96437ed91277c76293af2d) )
2950 ROM_LOAD16_BYTE("312a07.7c", 0x000001, 128*1024, CRC(3d31e989) SHA1(1fdf205b0f9c21093bc6147aaacdf178aa628508) )
2951
2952 /* tiles */
2953 ROM_REGION( 0x800000, REGION_GFX1, ROMREGION_ERASE00 )
2954 ROM_LOAD16_BYTE( "312a14.17h", 0x000000, 2*1024*1024, CRC(dc862f19) SHA1(8ec9f8715b622462fb8c79a48162c161eb9fe13b) )
2955 ROM_LOAD16_BYTE( "312a12.22h", 0x000001, 2*1024*1024, CRC(98c04ddd) SHA1(7bc7af21625466e75003da9fd950437249e75b78) )
2956 ROM_LOAD16_BYTE( "312a15.15h", 0x400000, 2*1024*1024, CRC(516f2941) SHA1(07415fec2d96fe6b707f801a9e9e963186d83d6a) )
2957 ROM_LOAD16_BYTE( "312a13.20h", 0x400001, 2*1024*1024, CRC(16e5fdaa) SHA1(f04e09ee4207eb2bd67533997d36f4b3cf42a439) )
2958
2959 /* sprites */
2960 ROM_REGION( 0x800000, REGION_GFX2, ROMREGION_ERASE00 )
2961 _64_WORD_ROM_LOAD( "312a08.33g", 0x000000, 2*1024*1024, CRC(29015d56) SHA1(7273270804ecefd8f59469c2c2a8a89fb045a12b) )
2962 _64_WORD_ROM_LOAD( "312a09.30g", 0x000002, 2*1024*1024, CRC(b2c5d6d5) SHA1(8248612275ca862c6688de5c6f24f37aeb3f9fe5) )
2963 _64_WORD_ROM_LOAD( "312a10.28g", 0x000004, 2*1024*1024, CRC(3c570d04) SHA1(ebbf7d28726e98c8895c9bf901f8b2dd38018c77) )
2964 _64_WORD_ROM_LOAD( "312a11.25g", 0x000006, 2*1024*1024, CRC(5f474357) SHA1(1f6d99f1ea69e07a65731ea4eae5917452cfcab6) )
2965
2966 /* sound data */
2967 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
2968 ROM_LOAD( "312a17.9g", 0x000000, 2*1024*1024, CRC(ed101448) SHA1(ef1342f37fbbb092eddee0c237b40989ad42cf26) )
2969 ROM_LOAD( "312a18.7g", 0x200000, 1*1024*1024, CRC(5717abd7) SHA1(d304d733e7fca0363ea6b3872c2d3bbe4edf1179) )
2970 ROM_END
2971
2972 /* Racin' Force */
2973 ROM_START( racinfrc )
2974 /* main program */
2975 ROM_REGION( 0x800000, REGION_CPU1, 0 )
2976 GX_BIOS
2977 ROM_LOAD32_WORD_SWAP( "250uab02.34n", 0x200000, 512*1024, CRC(315040c6) SHA1(940d54c1eb898d9a44d823f9f5ae9e91a20f746f) )
2978 ROM_LOAD32_WORD_SWAP( "250uab03.31n", 0x200002, 512*1024, CRC(171134ab) SHA1(308b7e76a80c3d860a15408a144b1e0f76fcee87) )
2979
2980 /* data roms */
2981 ROM_LOAD32_WORD_SWAP( "250a04.34s", 0x400000, 2*1024*1024, CRC(45e4d43c) SHA1(a668431d53b50fd41e1fa3c8959c0dc96e50c52b) )
2982 ROM_LOAD32_WORD_SWAP( "250a05.31s", 0x400002, 2*1024*1024, CRC(a235af3e) SHA1(381cd16552f007ccb508411a03fdfd18e32203d0) )
2983
2984 /* sound program */
2985 ROM_REGION( 0x40000, REGION_CPU2, 0 )
2986 ROM_LOAD16_BYTE("250a06.8p", 0x000000, 128*1024, CRC(2d0a3ff1) SHA1(ce4261d5f86821e98e971a35403c793506d0566b) )
2987 ROM_LOAD16_BYTE("250a07.6p", 0x000001, 128*1024, CRC(612b670a) SHA1(255515fa5096fcc4681b32defa0ae855286d8ed1) )
2988
2989 /* tiles */
2990 ROM_REGION( 0x300000, REGION_GFX1, ROMREGION_ERASE00 )
2991 TILE_WORDS2_ROM_LOAD( "250a15.19y", 0x000000, 0x100000, CRC(60abc472) SHA1(ff360d81222e2d8cd55b907ca5a9947f958aaaab) )
2992 TILE_BYTES2_ROM_LOAD( "250a14.21y", 0x000004, 0x080000, CRC(d14abf98) SHA1(14827a01deb659c96fd38a5c76f1c9cead5f83c7) )
2993
2994 /* sprites */
2995 ROM_REGION( 0xa00000, REGION_GFX2, ROMREGION_ERASE00 )
2996 ROM_LOAD32_WORD( "250a12.26y", 0x000000, 0x200000, CRC(e4ca3cff) SHA1(5dfddda4b5257e98a53fb8669714004ae3aeb3a7) )
2997 ROM_LOAD32_WORD( "250a10.31y", 0x000002, 0x200000, CRC(75c02d12) SHA1(3ca471d887b92261b1c3f50777903df13f07b1a9) )
2998 ROM_LOAD32_WORD( "250a13.24y", 0x400000, 0x200000, CRC(7aeef929) SHA1(9f656e2ede27aea7d51f0f0a3a91a8f2c2d250c0) )
2999 ROM_LOAD32_WORD( "250a11.28y", 0x400002, 0x200000, CRC(dfbce309) SHA1(831444e7a7588833ffc9b712412f7aef34a7fa2e) )
3000 ROM_LOAD( "250a08.36y", 0x800000, 0x200000, CRC(25ff6414) SHA1(0af4ef7fe00d7da5fcb5dd0770d470a556c62d61) )
3001
3002 /* K053936 tiles (CROM and HROM from the schematics) */
3003 ROM_REGION( 0x300000, REGION_GFX3, ROMREGION_ERASE00 )
3004 T1_PSAC6_ROM_LOAD( "250a20.10d", 0x000000, 0x100000, CRC(26a2fcaf) SHA1(d2e38dc0c61e6fed93441dfe2b811993ac9f0ad3) )
3005 T1_PSAC6_ROM_LOAD( "250a21.7d", 0x000001, 0x100000, CRC(370d7771) SHA1(59ab52287d5aca37baa68d941db165d8da212c69) )
3006 T1_PSAC6_ROM_LOAD( "250a22.5d", 0x000002, 0x100000, CRC(c66a7775) SHA1(80087b2a3a221f8b2d6c4d1c1c535602e611b561) )
3007
3008 ROM_REGION( 0x300000, REGION_GFX4, ROMREGION_ERASE00 )
3009 T1_PSAC6_ROM_LOAD( "250a24.10h", 0x000000, 0x100000, CRC(a14547da) SHA1(a379ff2f62b340a6ea46c84878a865ccff0d132c) )
3010 T1_PSAC6_ROM_LOAD( "250a25.7h", 0x000001, 0x100000, CRC(58310501) SHA1(e0be82f112fd86cdb448c9c8ceda0ad4cc03e3e4) )
3011 T1_PSAC6_ROM_LOAD( "250a26.5h", 0x000002, 0x100000, CRC(f72e4cbe) SHA1(822895b42fe4dc8fc1c55501009b6d6e57ee46a1) )
3012
3013 /* sound data */
3014 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
3015 ROM_LOAD( "250a17.14y", 0x000000, 2*1024*1024, CRC(adefa079) SHA1(d25911e3a02d92dc936c3d7e9d76fc270bd1a75a) )
3016 ROM_LOAD( "250a18.12y", 0x200000, 2*1024*1024, CRC(8014a2eb) SHA1(d82f0a7d559340ae05a78ecc8bb69bb35b9c0658) )
3017 ROM_END
3018
3019 /* Konami Open Golf Championship */
3020 ROM_START( opengolf )
3021 /* main program */
3022 ROM_REGION( 0x800000, REGION_CPU1, 0 )
3023 GX_BIOS
3024 ROM_LOAD32_WORD_SWAP( "218ead02.34n", 0x200000, 512*1024, CRC(eeb58816) SHA1(fe88a4515b552975f78897543bc564495b69dd68) )
3025 ROM_LOAD32_WORD_SWAP( "218ead03.31n", 0x200002, 512*1024, CRC(5c36f84c) SHA1(8dcbc9e1a8857be9d407a9d0e962a62b963e7187) )
3026
3027 /* data roms */
3028 ROM_LOAD32_WORD_SWAP( "218a04.34s", 0x400000, 512*1024, CRC(e50043a7) SHA1(d3a8e214362c34c4151408f422c9b1c723f7f01c) )
3029 ROM_LOAD32_WORD_SWAP( "218a05.31s", 0x400002, 512*1024, CRC(46c6b5d3) SHA1(e59c6d2dac9db635589149e4b4852e5f6a9c3c4f) )
3030
3031 /* sound program */
3032 ROM_REGION( 0x40000, REGION_CPU2, 0 )
3033 ROM_LOAD16_BYTE("218a06.8p", 0x000000, 128*1024, CRC(6755ccf9) SHA1(3bcb18302c385a937c748cf586970c12cef21b38) )
3034 ROM_LOAD16_BYTE("218a07.6p", 0x000001, 128*1024, CRC(221e5293) SHA1(44b0b4fa37da4c19c29d4d2e5b93b94fbec03633) )
3035
3036 /* tiles */
3037 ROM_REGION( 0x600000, REGION_GFX1, ROMREGION_ERASE00 )
3038 TILE_WORD_ROM_LOAD( "218a15.19y", 0x000000, 2*1024*1024, CRC(78ddc8af) SHA1(24313881dbf7e1b06da008080b0143c3ca5e15b1) )
3039 TILE_WORD_ROM_LOAD( "218a16.16y", 0x280000, 512*1024, CRC(a41a3ec8) SHA1(dfef4c3e4d6d4e453a4958f2bd52788497c64093) )
3040 TILE_BYTE_ROM_LOAD( "218a14.22y", 0x000004, 1*1024*1024, CRC(508cd75e) SHA1(adfaac92bc55f60b178a5817c48774a664d8980d) )
3041
3042 /* sprites */
3043 ROM_REGION( 0x900000, REGION_GFX2, ROMREGION_ERASE00 )
3044 _48_WORD_ROM_LOAD( "218a12.26y", 0x000000, 2*1024*1024, CRC(83158653) SHA1(b7e43d63f12a793b18ce9fc9cc2c38352d211905) )
3045 _48_WORD_ROM_LOAD( "218a10.31y", 0x000002, 2*1024*1024, CRC(059bfee3) SHA1(e7f4621313b7f9a6cad81d455700172654bc7404) )
3046 _48_WORD_ROM_LOAD( "218a08.35y", 0x000004, 2*1024*1024, CRC(5b7098f3) SHA1(91bedf731e94d1554f9a8f86f79425a2c58bbaf9) )
3047 _48_WORD_ROM_LOAD( "218a13.24y", 0x600000, 1*1024*1024, CRC(b9ffd12a) SHA1(f8a689957b8ff966a38f999a679cdbf18a6dfc77) )
3048 _48_WORD_ROM_LOAD( "218a11.28y", 0x600002, 1*1024*1024, CRC(b57231e5) SHA1(e1cd1854e909ca53dc2c32b27e5f9bb2217b0e4c) )
3049 _48_WORD_ROM_LOAD( "218a09.33y", 0x600004, 1*1024*1024, CRC(13627443) SHA1(b51758e19ed7d6bb1e313f7c8a509ad1aad8b22c) )
3050
3051 /* K053936 tiles (CROM and HROM from the schematics) */
3052 ROM_REGION( 0x800000, REGION_GFX3, ROMREGION_ERASE00 )
3053 T1_PSAC8_ROM_LOAD( "218a20.10d", 0x000000, 0x200000, CRC(f0ac2d6f) SHA1(acae9e20d663932a9a44a2e1089546338442c71f) )
3054 T1_PSAC8_ROM_LOAD( "218a21.7d", 0x000001, 0x200000, CRC(cb15122a) SHA1(2d159dcfbd4a7fc6e824c1be0cc5b81dee7ce8a3) )
3055 T1_PSAC8_ROM_LOAD( "218a22.5d", 0x000002, 0x200000, CRC(1b08d7dc) SHA1(2b963dbc415a30d3545ea730e47a592798f30a45) )
3056 T1_PSAC8_ROM_LOAD( "218a23.3d", 0x000003, 0x200000, CRC(1e4224b5) SHA1(f34849d500a35001944da6b8864c796e7a0a7224) )
3057
3058 ROM_REGION( 0x600000, REGION_GFX4, ROMREGION_ERASE00 )
3059 T1_PSAC6_ROM_LOAD( "218a24.10h", 0x000000, 0x200000, CRC(e938d96a) SHA1(176a9bfd252f01bc034ca348d018705926a1a545) )
3060 T1_PSAC6_ROM_LOAD( "218a25.7h", 0x000001, 0x200000, CRC(11600c2d) SHA1(721c9361761dd20810ff18c63543b222c98a47a4) )
3061 T1_PSAC6_ROM_LOAD( "218a26.5h", 0x000002, 0x200000, CRC(b37e4b7a) SHA1(3d21e540a366f6ef8ba761855fceecd8591179d7) )
3062
3063 /* sound data */
3064 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
3065 ROM_LOAD( "218a17.14y", 0x000000, 2*1024*1024, CRC(0b525127) SHA1(218b306c12e1094a676815b7dddaf13bf19be2d5) )
3066 ROM_LOAD( "218a18.12y", 0x200000, 1*1024*1024, CRC(98ec4cfb) SHA1(638753f9d9269719a37133b9c39c242507fdd8ac) )
3067 ROM_END
3068
3069 /* Golfing Greats 2 */
3070 ROM_START( ggreats2 )
3071 /* main program */
3072 ROM_REGION( 0x800000, REGION_CPU1, 0 )
3073 GX_BIOS
3074 ROM_LOAD32_WORD_SWAP( "218jac02.34n", 0x200000, 0x080000, CRC(e4d47f92) SHA1(4761cf69670d97db548b146b127c9af04f8809d6) )
3075 ROM_LOAD32_WORD_SWAP( "218jac03.31n", 0x200002, 0x080000, CRC(ec10c0b2) SHA1(4084d8420c53e73630786adf1a4f0fde548fa212) )
3076
3077 /* data roms */
3078 ROM_LOAD32_WORD_SWAP( "218a04.34s", 0x400000, 512*1024, CRC(e50043a7) SHA1(d3a8e214362c34c4151408f422c9b1c723f7f01c) )
3079 ROM_LOAD32_WORD_SWAP( "218a05.31s", 0x400002, 512*1024, CRC(46c6b5d3) SHA1(e59c6d2dac9db635589149e4b4852e5f6a9c3c4f) )
3080
3081 /* sound program */
3082 ROM_REGION( 0x40000, REGION_CPU2, 0 )
3083 ROM_LOAD16_BYTE("218a06.8p", 0x000000, 128*1024, CRC(6755ccf9) SHA1(3bcb18302c385a937c748cf586970c12cef21b38) )
3084 ROM_LOAD16_BYTE("218a07.6p", 0x000001, 128*1024, CRC(221e5293) SHA1(44b0b4fa37da4c19c29d4d2e5b93b94fbec03633) )
3085
3086 /* tiles */
3087 ROM_REGION( 0x600000, REGION_GFX1, ROMREGION_ERASE00 )
3088 TILE_WORD_ROM_LOAD( "218a15.19y", 0x000000, 2*1024*1024, CRC(78ddc8af) SHA1(24313881dbf7e1b06da008080b0143c3ca5e15b1) )
3089 TILE_WORD_ROM_LOAD( "218a16.16y", 0x280000, 512*1024, CRC(a41a3ec8) SHA1(dfef4c3e4d6d4e453a4958f2bd52788497c64093) )
3090 TILE_BYTE_ROM_LOAD( "218a14.22y", 0x000004, 1*1024*1024, CRC(508cd75e) SHA1(adfaac92bc55f60b178a5817c48774a664d8980d) )
3091
3092 /* sprites */
3093 ROM_REGION( 0x900000, REGION_GFX2, ROMREGION_ERASE00 )
3094 _48_WORD_ROM_LOAD( "218a12.26y", 0x000000, 2*1024*1024, CRC(83158653) SHA1(b7e43d63f12a793b18ce9fc9cc2c38352d211905) )
3095 _48_WORD_ROM_LOAD( "218a10.31y", 0x000002, 2*1024*1024, CRC(059bfee3) SHA1(e7f4621313b7f9a6cad81d455700172654bc7404) )
3096 _48_WORD_ROM_LOAD( "218a08.35y", 0x000004, 2*1024*1024, CRC(5b7098f3) SHA1(91bedf731e94d1554f9a8f86f79425a2c58bbaf9) )
3097 _48_WORD_ROM_LOAD( "218a13.24y", 0x600000, 1*1024*1024, CRC(b9ffd12a) SHA1(f8a689957b8ff966a38f999a679cdbf18a6dfc77) )
3098 _48_WORD_ROM_LOAD( "218a11.28y", 0x600002, 1*1024*1024, CRC(b57231e5) SHA1(e1cd1854e909ca53dc2c32b27e5f9bb2217b0e4c) )
3099 _48_WORD_ROM_LOAD( "218a09.33y", 0x600004, 1*1024*1024, CRC(13627443) SHA1(b51758e19ed7d6bb1e313f7c8a509ad1aad8b22c) )
3100
3101 /* K053936 tiles (CROM and HROM from the schematics) */
3102 ROM_REGION( 0x800000, REGION_GFX3, ROMREGION_ERASE00 )
3103 T1_PSAC8_ROM_LOAD( "218a20.10d", 0x000000, 0x200000, CRC(f0ac2d6f) SHA1(acae9e20d663932a9a44a2e1089546338442c71f) )
3104 T1_PSAC8_ROM_LOAD( "218a21.7d", 0x000001, 0x200000, CRC(cb15122a) SHA1(2d159dcfbd4a7fc6e824c1be0cc5b81dee7ce8a3) )
3105 T1_PSAC8_ROM_LOAD( "218a22.5d", 0x000002, 0x200000, CRC(1b08d7dc) SHA1(2b963dbc415a30d3545ea730e47a592798f30a45) )
3106 T1_PSAC8_ROM_LOAD( "218a23.3d", 0x000003, 0x200000, CRC(1e4224b5) SHA1(f34849d500a35001944da6b8864c796e7a0a7224) )
3107
3108 ROM_REGION( 0x600000, REGION_GFX4, ROMREGION_ERASE00 )
3109 T1_PSAC6_ROM_LOAD( "218a24.10h", 0x000000, 0x200000, CRC(e938d96a) SHA1(176a9bfd252f01bc034ca348d018705926a1a545) )
3110 T1_PSAC6_ROM_LOAD( "218a25.7h", 0x000001, 0x200000, CRC(11600c2d) SHA1(721c9361761dd20810ff18c63543b222c98a47a4) )
3111 T1_PSAC6_ROM_LOAD( "218a26.5h", 0x000002, 0x200000, CRC(b37e4b7a) SHA1(3d21e540a366f6ef8ba761855fceecd8591179d7) )
3112
3113 /* sound data */
3114 ROM_REGION( 0x400000, REGION_SOUND1, 0 )
3115 ROM_LOAD( "218a17.14y", 0x000000, 2*1024*1024, CRC(0b525127) SHA1(218b306c12e1094a676815b7dddaf13bf19be2d5) )
3116 ROM_LOAD( "218a18.12y", 0x200000, 1*1024*1024, CRC(98ec4cfb) SHA1(638753f9d9269719a37133b9c39c242507fdd8ac) )
3117 ROM_END
3118
3119 /**********************************************************************************/
3120 /* initializers */
3121
3122 MACHINE_INIT(konamigx)
3123 {
3124 konamigx_wrport1_0 = konamigx_wrport1_1 = 0;
3125 konamigx_wrport2 = 0;
3126
3127 /*
3128 bit0 : EEPROM data(don't care)
3129 bit1 : DMA busy (cleared)
3130 bit2-7: IRQ ready (all set)
3131 */
3132 gx_rdport1_3 = 0xfc;
3133 gx_syncen = 0;
3134 suspension_active = 0;
3135
3136 memset(sndto000, 0, 16);
3137 memset(sndto020, 0, 16);
3138
3139 tms57002_init();
3140
3141 /* sound CPU initially disabled?*/
3142 cpu_set_halt_line(1, ASSERT_LINE);
3143 }
3144
DRIVER_INIT(konamigx)3145 static DRIVER_INIT(konamigx)
3146 {
3147 #define BPP5 1
3148 #define BPP6 2
3149 #define BPP66 3
3150
3151 int readback = 0;
3152
3153 konamigx_cfgport = -1;
3154 last_prot_op = -1;
3155 last_prot_clk = 0;
3156
3157 esc_cb = 0;
3158 snd020_hack = 0;
3159 resume_trigger = 0;
3160
3161 state_save_register_UINT8("KonamiGX", 0, "IRQ enable", &konamigx_wrport1_1, 1);
3162 state_save_register_UINT8("KonamiGX", 0, "Sound comms 1", sndto020, 16);
3163 state_save_register_UINT8("KonamiGX", 0, "Sound comms 2", sndto000, 16);
3164
3165 dmadelay_timer = timer_alloc(dmaend_callback);
3166
3167 /* running down the list is not a good idea but easier than maintaining individual drivers*/
3168 if (!strcmp(Machine->gamedrv->name, "racinfrc"))
3169 {
3170 konamigx_cfgport = 11;
3171 }
3172
3173 else if (!strcmp(Machine->gamedrv->name, "opengolf"))
3174 {
3175 konamigx_cfgport = 11;
3176 }
3177
3178 else if (!strcmp(Machine->gamedrv->name, "le2") || !strcmp(Machine->gamedrv->name, "le2u"))
3179 {
3180 #if GX_SKIPIDLE
3181 ADD_SKIPPER32(0x2010f0, 0xc00000, 0xfe, 0x13f, -1, 0xff)
3182 #endif
3183
3184 install_mem_read32_handler(0, 0xd44000, 0xd44003, le2_gun_H_r );
3185 install_mem_read32_handler(0, 0xd44004, 0xd44007, le2_gun_V_r );
3186
3187 snd020_hack = 1;
3188 konamigx_cfgport = 13;
3189 }
3190
3191 else if (!strcmp(Machine->gamedrv->name, "gokuparo") || !strcmp(Machine->gamedrv->name, "fantjour"))
3192 {
3193 #if GX_SKIPIDLE
3194 ADD_SKIPPER32(0x2a0a66, 0xc00000, 0xd400, 0xd400, 0, 0xffff0000)
3195 #endif
3196
3197 readback = BPP5;
3198 konamigx_cfgport = 7;
3199 }
3200
3201 else if (!strcmp(Machine->gamedrv->name, "puzldama"))
3202 {
3203 #if GX_SKIPIDLE
3204 #endif
3205 ADD_SKIPPER32(0x20d494, 0xc00000, 0x540, 0x6ff, -1, 0xffff)
3206
3207 readback = BPP5;
3208 konamigx_cfgport = 7;
3209 }
3210
3211 else if (!strcmp(Machine->gamedrv->name, "tbyahhoo"))
3212 {
3213 #if GX_SKIPIDLE
3214 ADD_SKIPPER32(0x297b9a, 0xc00000, 0xf800, 0xf800, 0, 0xffff0000)
3215 #endif
3216
3217 esc_cb = tbyahhoo_esc;
3218 readback = BPP5;
3219 konamigx_cfgport = 7;
3220 }
3221
3222 else if (!strcmp(Machine->gamedrv->name, "tkmmpzdm"))
3223 {
3224 int i;
3225 data32_t *rom = (data32_t*)memory_region(REGION_CPU1);
3226
3227 /* The display is initialized after POST but the copyright screen disabled*/
3228 /* planes B,C,D and didn't bother restoring them. I've spent a good*/
3229 /* amount of time chasing this bug but the cause remains inconclusive.*/
3230 /* My guess is the CCU somehow masked or delayed vblank interrupts*/
3231 /* during the copyright message.*/
3232 rom[0x810f1] &= ~1; /* fix checksum*/
3233 rom[0x872ea] |= 0xe0000; /* enable plane B,C,D*/
3234
3235 #if GX_SKIPIDLE
3236 ADD_SKIPPER32(0x2060d4, 0xc00000, 0x13e48, 0x14027, 0, -1)
3237 #endif
3238
3239 esc_cb = tkmmpzdm_esc;
3240 readback = BPP6;
3241 konamigx_cfgport = 7;
3242
3243 /* boost voice(chip 1 channel 3-7)*/
3244 for (i=3; i<=7; i++) K054539_set_gain(1, i, 2.0);
3245 }
3246
3247 else if (!strcmp(Machine->gamedrv->name, "dragoonj"))
3248 {
3249 int i;
3250 esc_cb = dragoonj_esc;
3251 konamigx_cfgport = 7;
3252
3253 /* soften percussions(chip 1 channel 0-3), boost voice(chip 1 channel 4-7)*/
3254 for (i=0; i<=3; i++)
3255 {
3256 K054539_set_gain(1, i, 0.8);
3257 K054539_set_gain(1, i+4, 2.0);
3258 }
3259 }
3260
3261 else if (!strcmp(Machine->gamedrv->name, "sexyparo") || !strcmp(Machine->gamedrv->name, "sexyparoa"))
3262 {
3263 #if GX_SKIPIDLE
3264 ADD_SKIPPER32(0x289baa, 0xc00000, 0x10204, 0x10204, 0, 0xffff0000)
3265 #endif
3266
3267 esc_cb = sexyparo_esc;
3268 readback = BPP5;
3269 konamigx_cfgport = 7;
3270 }
3271
3272 else if (!strcmp(Machine->gamedrv->name, "daiskiss"))
3273 {
3274 #if GX_SKIPIDLE
3275 ADD_SKIPPER32(0x28707e, 0xc00000, 0x8400, 0x8400, 0, 0xffff0000)
3276 #endif
3277
3278 esc_cb = daiskiss_esc;
3279 readback = BPP5;
3280 konamigx_cfgport = 7;
3281 }
3282
3283 else if (!strcmp(Machine->gamedrv->name, "tokkae"))
3284 {
3285 #if GX_SKIPIDLE
3286 ADD_SKIPPER32(0x206b94, 0xc00000, 0x142ac, 0x142ac, 0, 0xff000000)
3287 #endif
3288
3289 readback = BPP5;
3290 konamigx_cfgport = 7;
3291 }
3292
3293 else if (!strcmp(Machine->gamedrv->name, "salmndr2"))
3294 {
3295 #if GX_SKIPIDLE
3296 ADD_SKIPPER32(0x220070, 0xc00000, 0xbe8, 0xbe8, 0, 0x0000ffff)
3297 #endif
3298
3299 esc_cb = sal2_esc;
3300 readback = BPP66;
3301 konamigx_cfgport = 7;
3302 }
3303
3304 else if (!strcmp(Machine->gamedrv->name, "winspike"))
3305 {
3306 snd020_hack = 2;
3307 konamigx_cfgport = 8;
3308 /* Winning Spike uses the type 4 Xilinx protection*/
3309 install_mem_write32_handler(0, 0xcc0000, 0xcc0007, type4_prot_w );
3310 }
3311
3312 else if (!strcmp(Machine->gamedrv->name, "soccerss"))
3313 {
3314 konamigx_cfgport = 7;
3315 }
3316
3317 else if (!strcmp(Machine->gamedrv->name, "vsnetscr"))
3318 {
3319 snd020_hack = 5;
3320 konamigx_cfgport = 7;
3321 }
3322
3323 else if (!strcmp(Machine->gamedrv->name, "rungun2"))
3324 {
3325 snd020_hack = 3;
3326 konamigx_cfgport = 7;
3327 }
3328
3329 else if (!strcmp(Machine->gamedrv->name, "slamdnk2"))
3330 {
3331 snd020_hack = 6;
3332 konamigx_cfgport = 7;
3333 }
3334
3335 else if (!strcmp(Machine->gamedrv->name, "rushhero"))
3336 {
3337 snd020_hack = 4;
3338 konamigx_cfgport = 7;
3339 }
3340
3341 switch (readback)
3342 {
3343 case BPP5:
3344 install_mem_read32_handler(0, 0xd4a000, 0xd4a00f, gx5bppspr_r);
3345 break;
3346
3347 case BPP66:
3348 install_mem_read32_handler(0, 0xd00000, 0xd01fff, K056832_6bpp_rom_long_r);
3349
3350 case BPP6:
3351 install_mem_read32_handler(0, 0xd4a000, 0xd4a00f, gx6bppspr_r);
3352 break;
3353 }
3354
3355 #undef BPP5
3356 #undef BPP6
3357 #undef BPP66
3358 }
3359
3360 /**********************************************************************************/
3361 /* year ROM parent machine inp init */
3362
3363 /* dummy parent for the BIOS */
3364 GAMEX(1994, konamigx, 0, konamigx, konamigx, konamigx, ROT0, "Konami", "System GX", NOT_A_DRIVER )
3365
3366
3367 /* Type 1: standard with an add-on 53936 on the ROM board, analog inputs, and LAN (link) capability */
3368 /* needs the 53936 to be playable */
3369 GAMEX( 1994, racinfrc, konamigx, racinfrc, racinfrc, konamigx, ROT0, "Konami", "Racin' Force (ver UAB)", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
3370 GAMEX( 1994, opengolf, konamigx, opengolf, racinfrc, konamigx, ROT0, "Konami", "Konami's Open Golf Championship (ver EAD)", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
3371 GAMEX( 1994, ggreats2, opengolf, opengolf, racinfrc, konamigx, ROT0, "Konami", "Golfing Greats 2 (ver JAC)", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
3372
3373
3374 /* Type 2: totally stock, sometimes with funny protection chips on the ROM board */
3375 /* these games work and are playable with minor graphics glitches */
3376 GAMEX( 1994, le2, konamigx, le2, le2, konamigx, ROT0, "Konami", "Lethal Enforcers II - Gun Fighters (ver EAA)", GAME_IMPERFECT_GRAPHICS )
3377 GAMEX( 1994, le2u, le2, le2, le2, konamigx, ROT0, "Konami", "Lethal Enforcers II - Gun Fighters (ver UAA)", GAME_IMPERFECT_GRAPHICS )
3378 GAMEX( 1994, gokuparo, konamigx, konamigx, gokuparo, konamigx, ROT0, "Konami", "Gokujyou Parodius (ver JAD)", GAME_IMPERFECT_GRAPHICS )
3379 GAMEX( 1994, puzldama, konamigx, konamigx, puzldama, konamigx, ROT0, "Konami", "Taisen Puzzle-dama (ver JAA)", GAME_IMPERFECT_GRAPHICS )
3380 GAMEX( 1995, tbyahhoo, konamigx, konamigx, gokuparo, konamigx, ROT0, "Konami", "Twin Bee Yahhoo! (ver JAA)", GAME_IMPERFECT_GRAPHICS )
3381 GAMEX( 1995, tkmmpzdm, konamigx, konamigx_6bpp, puzldama, konamigx, ROT0, "Konami", "Tokimeki Memorial Taisen Puzzle-dama (ver JAB)", GAME_IMPERFECT_GRAPHICS )
3382 GAMEX( 1995, dragoonj, konamigx, dragoonj, dragoonj, konamigx, ROT0, "Konami", "Dragoon Might (ver JAA)", GAME_IMPERFECT_GRAPHICS )
3383 GAMEX( 1996, sexyparo, konamigx, konamigx, gokuparo, konamigx, ROT0, "Konami", "Sexy Parodius (ver JAA)", GAME_IMPERFECT_GRAPHICS )
3384 GAMEX( 1996, sexyparoa,sexyparo, konamigx, gokuparo, konamigx, ROT0, "Konami", "Sexy Parodius (ver AAA)", GAME_IMPERFECT_GRAPHICS )
3385 GAMEX( 1996, daiskiss, konamigx, konamigx, gokuparo, konamigx, ROT0, "Konami", "Daisu-Kiss (ver JAA)", GAME_IMPERFECT_GRAPHICS )
3386 GAMEX( 1996, tokkae, konamigx, konamigx_6bpp, puzldama, konamigx, ROT0, "Konami", "Taisen Tokkae-dama (ver JAA)", GAME_IMPERFECT_GRAPHICS )
3387 GAMEX( 1996, salmndr2, konamigx, konamigx_6bpp_2, gokuparo, konamigx, ROT0, "Konami", "Salamander 2 (ver JAA)", GAME_IMPERFECT_GRAPHICS|GAME_UNEMULATED_PROTECTION )
3388
3389 /* these games are unplayable due to protection (winspike has the same FPGA protection as the type 4 games) */
3390 GAMEX( 1994, fantjour, gokuparo, konamigx, gokuparo, konamigx, ROT0, "Konami", "Fantastic Journey", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3391 GAMEX( 1997, winspike, konamigx, winspike, konamigx, konamigx, ROT0, "Konami", "Winning Spike (ver JAA)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
3392
3393
3394 /* Type 3: dual monitor output and 53936 on the ROM board, external palette RAM */
3395 GAMEX( 1994, soccerss, konamigx, gxtype3, type3, konamigx, ROT0, "Konami", "Soccer Superstars (ver JAA)", GAME_NOT_WORKING )
3396
3397
3398 /* Type 4: dual monitor output and 53936 on the ROM board, external palette RAM, DMA protection */
3399 GAMEX( 1996, vsnetscr, konamigx, gxtype4, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver UAB)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3400 GAMEX( 1996, rungun2, konamigx, gxtype4, type3, konamigx, ROT0, "Konami", "Run and Gun 2 (ver UAA)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3401 GAMEX( 1996, slamdnk2, rungun2, gxtype4, type3, konamigx, ROT0, "Konami", "Slam Dunk 2 (ver JAA)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3402 GAMEX( 1996, rushhero, konamigx, gxtype4, type3, konamigx, ROT0, "Konami", "Rushing Heroes (ver UAB)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
3403