1 /***************************************************************************
2
3 -= Psikyo Games =-
4
5 driver by Luca Elia (l.elia@tin.it)
6
7
8 CPU: 68EC020 + PIC16C57 [Optional MCU]
9
10 Sound: Z80A + YM2610
11 Or: LZ8420M (Z80 core) + YMF286-K (YM2610 compatible)
12
13 Chips: PS2001B
14 PS3103
15 PS3204
16 PS3305
17
18 ---------------------------------------------------------------------------
19 Name Year Board Notes
20 ---------------------------------------------------------------------------
21 Sengoku Ace (J) 1993 SH201B
22 Gun Bird (J) 1994 KA302C
23 Battle K-Road (J) 1994 ""
24 Strikers 1945 (J) 1995 SH403/SH404 SH403 is similiar to KA302C
25 Tengai (J) 1996 SH404 SH404 has MCU, ymf278-b for sound and gfx banking
26 ---------------------------------------------------------------------------
27
28 To Do:
29
30 - Flip Screen support
31
32 ***************************************************************************/
33
34 /***** Gun Bird Japan Crash Notes
35
36 The Following Section of Code in Gunbird causes reads from the
37 0x080000 - 0x0fffff region
38
39 002894: E2817000 asr.l #1, D1
40 002896: 70001030 moveq #$0, D0
41 002898: 10301804 move.b ($4,A0,D1.l), D0 <-- *
42 00289C: 60183202 bra 28b6
43 00289E: 3202C2C7 move.w D2, D1
44 0028A0: C2C77000 mulu.w D7, D1
45 0028A2: 70003005 moveq #$0, D0
46 0028A4: 3005D280 move.w D5, D0
47 0028A6: D280E281 add.l D0, D1
48 0028A8: E2812071 asr.l #1, D1
49 0028AA: 20713515 movea.l ([A1],D3.w*4), A0
50 0028AE: 70001030 moveq #$0, D0
51 0028B0: 10301804 move.b ($4,A0,D1.l), D0 <-- *
52 0028B4: E880720F asr.l #4, D0
53 0028B6: 720FC041 moveq #$f, D1
54
55 This causes Gunbird to crash if the ROM Region Size
56 allocated during loading is smaller than the MRA32_ROM
57 region as it trys to read beyond the allocated rom region
58
59 This was pointed out by Bart Puype
60
61 *****/
62
63 #include "driver.h"
64 #include "vidhrdw/generic.h"
65
66
67 /* Variables defined in vidhrdw */
68
69 extern data32_t *psikyo_vram_0, *psikyo_vram_1, *psikyo_vregs;
70 extern int psikyo_ka302c_banking;
71
72 /* Functions defined in vidhrdw */
73
74 WRITE32_HANDLER( psikyo_vram_0_w );
75 WRITE32_HANDLER( psikyo_vram_1_w );
76
77 VIDEO_START( psikyo );
78 VIDEO_EOF( psikyo );
79 VIDEO_UPDATE( psikyo );
80
81 extern void psikyo_switch_banks( int tilemap, int bank );
82
83 /* Variables only used here */
84
85 static int ack_latch;
86
87
88 /***************************************************************************
89
90
91 Main CPU
92
93
94 ***************************************************************************/
95
READ32_HANDLER(sngkace_input_r)96 READ32_HANDLER( sngkace_input_r )
97 {
98 switch(offset)
99 {
100 case 0x0: return (readinputport(0) << 16) | 0xffff;
101 case 0x1: return (readinputport(2) << 16) | readinputport(4);
102 case 0x2:
103 {
104 const int bit = 0x80;
105 int ret = ack_latch ? bit : 0;
106 if (Machine->sample_rate == 0) ret = 0;
107 return (((readinputport(1) & ~bit) | ret) << 16) | readinputport(3);
108 }
109 default: log_cb(RETRO_LOG_DEBUG, LOGPRE "PC %06X - Read input %02X !\n", activecpu_get_pc(), offset*2);
110 return 0;
111 }
112 }
113
READ32_HANDLER(gunbird_input_r)114 READ32_HANDLER( gunbird_input_r )
115 {
116 switch(offset)
117 {
118 case 0x0:
119 {
120 const int bit = 0x80;
121 int ret = ack_latch ? bit : 0;
122
123 if (Machine->sample_rate == 0) ret = 0;
124 return (readinputport(0) << 16) | (readinputport(1) & ~bit) | ret;
125 }
126 case 0x1: return (readinputport(2) << 16) | readinputport(3);
127 default: log_cb(RETRO_LOG_DEBUG, LOGPRE "PC %06X - Read input %02X !\n", activecpu_get_pc(), offset*2);
128 return 0;
129 }
130 }
131
132
WRITE32_HANDLER(psikyo_soundlatch_w)133 WRITE32_HANDLER( psikyo_soundlatch_w )
134 {
135 if (ACCESSING_LSB32)
136 {
137 if (Machine->sample_rate == 0) return;
138
139 ack_latch = 1;
140 soundlatch_w(0, data & 0xff);
141 cpu_set_nmi_line(1,PULSE_LINE);
142 cpu_spinuntil_time(TIME_IN_USEC(50)); /* Allow the other cpu to reply*/
143 }
144 }
145
146 /***************************************************************************
147 Strikers 1945 / Tengai
148 ***************************************************************************/
149
WRITE32_HANDLER(s1945_soundlatch_w)150 WRITE32_HANDLER( s1945_soundlatch_w )
151 {
152 if (!(mem_mask & 0x00ff0000))
153 {
154 if (Machine->sample_rate == 0) return;
155
156 ack_latch = 1;
157 soundlatch_w(0, (data >> 16) & 0xff);
158 cpu_set_nmi_line(1,PULSE_LINE);
159 cpu_spinuntil_time(TIME_IN_USEC(50)); /* Allow the other cpu to reply*/
160 }
161 }
162
163 static UINT8 s1945_table[256] = {
164 0x00, 0x00, 0x64, 0xae, 0x00, 0x00, 0x26, 0x2c, 0x00, 0x00, 0x2c, 0xda, 0x00, 0x00, 0x2c, 0xbc,
165 0x00, 0x00, 0x2c, 0x9e, 0x00, 0x00, 0x2f, 0x0e, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0xc5, 0x1e,
166 0x00, 0x00, 0x32, 0x90, 0x00, 0x00, 0xac, 0x5c, 0x00, 0x00, 0x2b, 0xc0
167 };
168
169 static UINT8 s1945j_table[256] = {
170 0x00, 0x00, 0x64, 0xb6, 0x00, 0x00, 0x26, 0x2c, 0x00, 0x00, 0x2c, 0xda, 0x00, 0x00, 0x2c, 0xbc,
171 0x00, 0x00, 0x2c, 0x9e, 0x00, 0x00, 0x2f, 0x0e, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0xc5, 0x92,
172 0x00, 0x00, 0x32, 0x90, 0x00, 0x00, 0xac, 0x64, 0x00, 0x00, 0x2b, 0xc0
173 };
174
175 static UINT8 s1945_mcu_direction, s1945_mcu_latch1, s1945_mcu_latch2, s1945_mcu_inlatch, s1945_mcu_index;
176 static UINT8 s1945_mcu_latching, s1945_mcu_mode, s1945_mcu_direction, s1945_mcu_control, s1945_mcu_bctrl;
177 static const UINT8 *s1945_mcu_table;
178
s1945_mcu_init(const UINT8 * mcu_table)179 static void s1945_mcu_init(const UINT8 *mcu_table)
180 {
181 s1945_mcu_direction = 0x00;
182 s1945_mcu_inlatch = 0xff;
183 s1945_mcu_latch1 = 0xff;
184 s1945_mcu_latch2 = 0xff;
185 s1945_mcu_latching = 0x5;
186 s1945_mcu_control = 0xff;
187 s1945_mcu_index = 0;
188 s1945_mcu_mode = 0;
189 s1945_mcu_table = mcu_table;
190 s1945_mcu_bctrl = 0x00;
191 }
192
WRITE32_HANDLER(s1945_mcu_w)193 WRITE32_HANDLER( s1945_mcu_w )
194 {
195 /* Accesses are always bytes, so resolve it*/
196 int suboff;
197 for(suboff=0; suboff < 3; suboff++)
198 if(!((0xff << (8*suboff)) & mem_mask))
199 break;
200 data >>= 8*suboff;
201 offset = offset*4+4+(3-suboff);
202
203 switch(offset) {
204 case 0x06:
205 s1945_mcu_inlatch = data;
206 break;
207 case 0x08:
208 s1945_mcu_control = data;
209 break;
210 case 0x09:
211 s1945_mcu_direction = data;
212 break;
213 case 0x07:
214 psikyo_switch_banks(1, (data >> 6) & 3);
215 psikyo_switch_banks(0, (data >> 4) & 3);
216 s1945_mcu_bctrl = data;
217 break;
218 case 0x0b:
219 switch(data | (s1945_mcu_direction ? 0x100 : 0)) {
220 case 0x11c:
221 s1945_mcu_latching = 5;
222 s1945_mcu_index = s1945_mcu_inlatch;
223 break;
224 case 0x013:
225 /* log_cb(RETRO_LOG_DEBUG, LOGPRE "MCU: Table read index %02x\n", s1945_mcu_index);*/
226 s1945_mcu_latching = 1;
227 s1945_mcu_latch1 = s1945_mcu_table[s1945_mcu_index];
228 break;
229 case 0x113:
230 s1945_mcu_mode = s1945_mcu_inlatch;
231 if(s1945_mcu_mode == 1) {
232 s1945_mcu_latching &= ~1;
233 s1945_mcu_latch2 = 0x55;
234 } else {
235 /* Go figure.*/
236 s1945_mcu_latching &= ~1;
237 s1945_mcu_latching |= 2;
238 }
239 s1945_mcu_latching &= ~4;
240 s1945_mcu_latch1 = s1945_mcu_inlatch;
241 break;
242 case 0x010:
243 case 0x110:
244 s1945_mcu_latching |= 4;
245 break;
246 default:
247 /* log_cb(RETRO_LOG_DEBUG, LOGPRE "MCU: function %02x, direction %02x, latch1 %02x, latch2 %02x (%x)\n", data, s1945_mcu_direction, s1945_mcu_latch1, s1945_mcu_latch2, activecpu_get_pc());*/
248 break;
249 }
250 break;
251 default:
252 /* log_cb(RETRO_LOG_DEBUG, LOGPRE "MCU.w %x, %02x (%x)\n", offset, data, activecpu_get_pc());*/
253 ;
254 }
255 }
256
READ32_HANDLER(s1945_mcu_r)257 READ32_HANDLER( s1945_mcu_r )
258 {
259 switch(offset) {
260 case 0: {
261 UINT32 res;
262 if(s1945_mcu_control & 16) {
263 res = s1945_mcu_latching & 4 ? 0x0000ff00 : s1945_mcu_latch1 << 8;
264 s1945_mcu_latching |= 4;
265 } else {
266 res = s1945_mcu_latching & 1 ? 0x0000ff00 : s1945_mcu_latch2 << 8;
267 s1945_mcu_latching |= 1;
268 }
269 res |= s1945_mcu_bctrl & 0xf0;
270 return res;
271 }
272 case 1:
273 return (s1945_mcu_latching << 24) | 0x08000000;
274 }
275 return 0;
276 }
277
READ32_HANDLER(s1945_input_r)278 READ32_HANDLER( s1945_input_r )
279 {
280 switch(offset)
281 {
282 case 0x0:
283 {
284 const int bit = 0x04;
285 int ret = ack_latch ? bit : 0;
286 if (Machine->sample_rate == 0) ret = 0;
287 return (readinputport(0) << 16) | (readinputport(1) & ~bit) | ret;
288 }
289 case 0x1: return (((readinputport(2) << 16) | readinputport(3)) & 0xffff000f) | s1945_mcu_r(offset-1, mem_mask);
290 case 0x2: return s1945_mcu_r(offset-1, mem_mask);
291 default: log_cb(RETRO_LOG_DEBUG, LOGPRE "PC %06X - Read input %02X !\n", activecpu_get_pc(), offset*2);
292 return 0;
293 }
294 }
295
296
297 /***************************************************************************
298
299
300 Memory Map
301
302
303 ***************************************************************************/
304
WRITE32_HANDLER(paletteram32_xRRRRRGGGGGBBBBB_dword_w)305 static WRITE32_HANDLER( paletteram32_xRRRRRGGGGGBBBBB_dword_w )
306 {
307 paletteram16 = (data16_t *)paletteram32;
308 if (ACCESSING_MSW32)
309 paletteram16_xRRRRRGGGGGBBBBB_word_w(offset*2, data >> 16, mem_mask >> 16);
310 if (ACCESSING_LSW32)
311 paletteram16_xRRRRRGGGGGBBBBB_word_w(offset*2+1, data, mem_mask);
312 }
313
MEMORY_READ32_START(psikyo_readmem)314 static MEMORY_READ32_START( psikyo_readmem )
315 { 0x000000, 0x0fffff, MRA32_ROM }, /* ROM (not all used)*/
316 { 0x400000, 0x401fff, MRA32_RAM }, /* Sprites Data*/
317 { 0x600000, 0x601fff, MRA32_RAM }, /* Palette*/
318 { 0x800000, 0x801fff, MRA32_RAM }, /* Layer 0*/
319 { 0x802000, 0x803fff, MRA32_RAM }, /* Layer 1*/
320 { 0x804000, 0x807fff, MRA32_RAM }, /* RAM + Vregs*/
321 /* { 0xc00000, 0xc0000b, psikyo_input_r }, Depends on board, see DRIVER_INIT*/
322 { 0xfe0000, 0xffffff, MRA32_RAM }, /* RAM*/
323 MEMORY_END
324
325 static MEMORY_WRITE32_START( psikyo_writemem )
326 { 0x000000, 0x0fffff, MWA32_ROM }, /* ROM (not all used)*/
327 { 0x400000, 0x401fff, MWA32_RAM, &spriteram32, &spriteram_size }, /* Sprites, buffered by two frames (list buffered + fb buffered)*/
328 { 0x600000, 0x601fff, paletteram32_xRRRRRGGGGGBBBBB_dword_w, &paletteram32 }, /* Palette*/
329 { 0x800000, 0x801fff, psikyo_vram_0_w, &psikyo_vram_0 }, /* Layer 0*/
330 { 0x802000, 0x803fff, psikyo_vram_1_w, &psikyo_vram_1 }, /* Layer 1*/
331 { 0x804000, 0x807fff, MWA32_RAM, &psikyo_vregs }, /* RAM + Vregs*/
332 /* { 0xc00004, 0xc0000b, s1945_mcu_w }, MCU on sh404, see DRIVER_INIT*/
333 /* { 0xc00010, 0xc00013, psikyo_soundlatch_w }, Depends on board, see DRIVER_INIT*/
334 { 0xfe0000, 0xffffff, MWA32_RAM }, /* RAM*/
335 MEMORY_END
336
337
338
339 /***************************************************************************
340
341
342 Sound CPU
343
344
345 ***************************************************************************/
346
347 static void sound_irq( int irq )
348 {
349 cpu_set_irq_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE);
350 }
351
WRITE_HANDLER(psikyo_ack_latch_w)352 WRITE_HANDLER( psikyo_ack_latch_w )
353 {
354 ack_latch = 0;
355 }
356
357 /***************************************************************************
358 Sengoku Ace / Samurai Aces
359 ***************************************************************************/
360
WRITE_HANDLER(sngkace_sound_bankswitch_w)361 WRITE_HANDLER( sngkace_sound_bankswitch_w )
362 {
363 unsigned char *RAM = memory_region(REGION_CPU2);
364 int bank = data & 3;
365 cpu_setbank(1, &RAM[bank * 0x8000 + 0x10000]);
366 }
367
MEMORY_READ_START(sngkace_sound_readmem)368 static MEMORY_READ_START( sngkace_sound_readmem )
369 { 0x0000, 0x77ff, MRA_ROM }, /* ROM*/
370 { 0x7800, 0x7fff, MRA_RAM }, /* RAM*/
371 { 0x8000, 0xffff, MRA_BANK1 }, /* Banked ROM*/
372 MEMORY_END
373
374 static MEMORY_WRITE_START( sngkace_sound_writemem )
375 { 0x0000, 0x77ff, MWA_ROM }, /* ROM*/
376 { 0x7800, 0x7fff, MWA_RAM }, /* RAM*/
377 { 0x8000, 0xffff, MWA_ROM }, /* Banked ROM*/
378 MEMORY_END
379
380
381 static PORT_READ_START( sngkace_sound_readport )
382 { 0x00, 0x00, YM2610_status_port_0_A_r },
383 { 0x02, 0x02, YM2610_status_port_0_B_r },
384 { 0x08, 0x08, soundlatch_r },
385 PORT_END
386
387 static PORT_WRITE_START( sngkace_sound_writeport )
388 { 0x00, 0x00, YM2610_control_port_0_A_w },
389 { 0x01, 0x01, YM2610_data_port_0_A_w },
390 { 0x02, 0x02, YM2610_control_port_0_B_w },
391 { 0x03, 0x03, YM2610_data_port_0_B_w },
392 { 0x04, 0x04, sngkace_sound_bankswitch_w },
393 { 0x0c, 0x0c, psikyo_ack_latch_w },
394 PORT_END
395
396
397 /***************************************************************************
398 Gun Bird
399 ***************************************************************************/
400
401 WRITE_HANDLER( gunbird_sound_bankswitch_w )
402 {
403 unsigned char *RAM = memory_region(REGION_CPU2);
404 int bank = (data >> 4) & 3;
405
406 /* The banked rom is seen at 8200-ffff, so the last 0x200 bytes
407 of the rom not reachable. */
408
409 cpu_setbank(1, &RAM[bank * 0x8000 + 0x10000 + 0x200]);
410 }
411
MEMORY_READ_START(gunbird_sound_readmem)412 static MEMORY_READ_START( gunbird_sound_readmem )
413 { 0x0000, 0x7fff, MRA_ROM }, /* ROM*/
414 { 0x8000, 0x81ff, MRA_RAM }, /* RAM*/
415 { 0x8200, 0xffff, MRA_BANK1 }, /* Banked ROM*/
416 MEMORY_END
417
418 static MEMORY_WRITE_START( gunbird_sound_writemem )
419 { 0x0000, 0x7fff, MWA_ROM }, /* ROM*/
420 { 0x8000, 0x81ff, MWA_RAM }, /* RAM*/
421 { 0x8200, 0xffff, MWA_ROM }, /* Banked ROM*/
422 MEMORY_END
423
424
425 static PORT_READ_START( gunbird_sound_readport )
426 { 0x04, 0x04, YM2610_status_port_0_A_r },
427 { 0x06, 0x06, YM2610_status_port_0_B_r },
428 { 0x08, 0x08, soundlatch_r },
429 PORT_END
430
431 static PORT_WRITE_START( gunbird_sound_writeport )
432 { 0x00, 0x00, gunbird_sound_bankswitch_w },
433 { 0x04, 0x04, YM2610_control_port_0_A_w },
434 { 0x05, 0x05, YM2610_data_port_0_A_w },
435 { 0x06, 0x06, YM2610_control_port_0_B_w },
436 { 0x07, 0x07, YM2610_data_port_0_B_w },
437 { 0x0c, 0x0c, psikyo_ack_latch_w },
438 PORT_END
439
440
441
442 /***************************************************************************
443 Strikers 1945 / Tengai
444 ***************************************************************************/
445
446 static PORT_READ_START( s1945_sound_readport )
447 { 0x08, 0x08, YMF278B_status_port_0_r },
448 { 0x10, 0x10, soundlatch_r },
449 PORT_END
450
451 static PORT_WRITE_START( s1945_sound_writeport )
452 { 0x00, 0x00, gunbird_sound_bankswitch_w },
453 { 0x02, 0x03, IOWP_NOP },
454 { 0x08, 0x08, YMF278B_control_port_0_A_w },
455 { 0x09, 0x09, YMF278B_data_port_0_A_w },
456 { 0x0a, 0x0a, YMF278B_control_port_0_B_w },
457 { 0x0b, 0x0b, YMF278B_data_port_0_B_w },
458 { 0x0c, 0x0c, YMF278B_control_port_0_C_w },
459 { 0x0d, 0x0d, YMF278B_data_port_0_C_w },
460 { 0x18, 0x18, psikyo_ack_latch_w },
461 PORT_END
462
463
464 /***************************************************************************
465
466
467 Input Ports
468
469
470 ***************************************************************************/
471
472 #define PSIKYO_PORT_PLAYER1 \
473 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) \
474 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 ) \
475 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 ) \
476 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 ) \
477 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER1 ) \
478 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 ) \
479 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER1 ) \
480 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER1 )
481
482 #define PSIKYO_PORT_PLAYER2 \
483 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) \
484 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 ) \
485 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 ) \
486 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 ) \
487 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 ) \
488 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 ) \
489 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 ) \
490 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
491
492 #define PSIKYO_PORT_COIN \
493 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) \
494 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) \
495 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
496 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
497 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE1 ) \
498 PORT_BITX(0x0020, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE ) \
499 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_TILT ) \
500 PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* From Sound CPU*/
501
502
503 /***************************************************************************
504 Samurai Aces / Sengoku Ace (Japan)
505 ***************************************************************************/
506
507 INPUT_PORTS_START( samuraia )
508
509 PORT_START /* IN0 - c00000&1*/
510 PSIKYO_PORT_PLAYER2
511
512 PSIKYO_PORT_PLAYER1
513
514 PORT_START /* IN1 - c00008&9*/
515 PSIKYO_PORT_COIN
516
517 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused?*/
518 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
519 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
520 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
521 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
522 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
523 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
524 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
525
526 PORT_START /* IN2 - c00004&5*/
527 PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) )
528 PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
529 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
530 PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Demo_Sounds ) )
531 PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
532 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
533 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) )
534 PORT_DIPSETTING( 0x0008, "Easy" )
535 PORT_DIPSETTING( 0x000c, "Normal" )
536 PORT_DIPSETTING( 0x0004, "Hard" )
537 PORT_DIPSETTING( 0x0000, "Hardest" )
538 PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) )
539 PORT_DIPSETTING( 0x0020, "1" )
540 PORT_DIPSETTING( 0x0010, "2" )
541 PORT_DIPSETTING( 0x0030, "3" )
542 PORT_DIPSETTING( 0x0000, "4" )
543 PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Bonus_Life ) )
544 PORT_DIPSETTING( 0x0040, "400K" )
545 PORT_DIPSETTING( 0x0000, "600K" )
546 PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
547
548 PORT_DIPNAME( 0x0100, 0x0100, "Credits/Coinage" ) /* [Free Play] on all for free play*/
549 PORT_DIPSETTING( 0x0100, "A+B/A&B" )
550 PORT_DIPSETTING( 0x0000, "A&B/A [Free Play]" )
551 PORT_DIPNAME( 0x0e00, 0x0e00, DEF_STR( Coin_A ) )
552 PORT_DIPSETTING( 0x0a00, DEF_STR( 3C_1C ) )
553 PORT_DIPSETTING( 0x0c00, DEF_STR( 2C_1C ) )
554 PORT_DIPSETTING( 0x0e00, DEF_STR( 1C_1C ) )
555 PORT_DIPSETTING( 0x0800, DEF_STR( 1C_2C ) )
556 PORT_DIPSETTING( 0x0600, DEF_STR( 1C_3C ) )
557 PORT_DIPSETTING( 0x0400, DEF_STR( 1C_4C ) )
558 PORT_DIPSETTING( 0x0200, DEF_STR( 1C_5C ) )
559 PORT_DIPSETTING( 0x0000, "1C 6C [Free Play]" )
560 PORT_DIPNAME( 0x7000, 0x7000, DEF_STR( Coin_B ) )
561 PORT_DIPSETTING( 0x5000, DEF_STR( 3C_1C ) )
562 PORT_DIPSETTING( 0x6000, DEF_STR( 2C_1C ) )
563 PORT_DIPSETTING( 0x7000, DEF_STR( 1C_1C ) )
564 PORT_DIPSETTING( 0x4000, DEF_STR( 1C_2C ) )
565 PORT_DIPSETTING( 0x3000, DEF_STR( 1C_3C ) )
566 PORT_DIPSETTING( 0x2000, DEF_STR( 1C_4C ) )
567 PORT_DIPSETTING( 0x1000, DEF_STR( 1C_5C ) )
568 PORT_DIPSETTING( 0x0000, "1C 6C [Free Play]" )
569 PORT_DIPNAME( 0x8000, 0x8000, "2C Start, 1C Continue" )
570 PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
571 PORT_DIPSETTING( 0x0000, "On [Free Play]" ) /* Forces 1C_1C*/
572
573 PORT_START /* IN3 - c00002&3*/
574 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_VBLANK ) /* vblank*/
575 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused?*/
576 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
577 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
578 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
579 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
580 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
581 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
582
583 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused?*/
584 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
585 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
586 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
587 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
588 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
589 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
590 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
591
592 PORT_START /* IN4 - c00006&7*/
593
594 /***********************************************
595
596 This Dip port is bit based:
597
598 Bit 0 1 2 3
599 1 1 1 1 World
600
601 0 1 1 1 USA With FBI logo
602 1 0 1 1 Korea With FBI logo??
603 1 1 0 1 Hong Kong With FBI logo??
604 1 1 1 0 Taiwan With FBI logo??
605
606 ************************************************/
607
608 PORT_DIPNAME( 0x00ff, 0x00ff, "Country" )
609 PORT_DIPSETTING( 0x00ff, "World" )
610 PORT_DIPSETTING( 0x00ef, "USA & Canada" )
611 PORT_DIPSETTING( 0x00df, "Korea" )
612 PORT_DIPSETTING( 0x00bf, "Hong Kong" )
613 PORT_DIPSETTING( 0x007f, "Taiwan" )
614
615 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused?*/
616 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
617 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
618 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
619 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
620 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
621 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
622 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
623
624 INPUT_PORTS_END
625
626 INPUT_PORTS_START( sngkace )
627
628 PORT_START /* IN0 - c00000&1*/
629 PSIKYO_PORT_PLAYER2
630
631 PSIKYO_PORT_PLAYER1
632
633 PORT_START /* IN1 - c00008&9*/
634 PSIKYO_PORT_COIN
635
636 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused?*/
637 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
638 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
639 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
640 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
641 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
642 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
643 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
644
645 PORT_START /* IN2 - c00004&5*/
646 PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) )
647 PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
648 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
649 PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Demo_Sounds ) )
650 PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
651 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
652 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) )
653 PORT_DIPSETTING( 0x0008, "Easy" )
654 PORT_DIPSETTING( 0x000c, "Normal" )
655 PORT_DIPSETTING( 0x0004, "Hard" )
656 PORT_DIPSETTING( 0x0000, "Hardest" )
657 PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) )
658 PORT_DIPSETTING( 0x0020, "1" )
659 PORT_DIPSETTING( 0x0010, "2" )
660 PORT_DIPSETTING( 0x0030, "3" )
661 PORT_DIPSETTING( 0x0000, "4" )
662 PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Bonus_Life ) )
663 PORT_DIPSETTING( 0x0040, "400K" )
664 PORT_DIPSETTING( 0x0000, "600K" )
665 PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
666
667 PORT_DIPNAME( 0x0100, 0x0100, "Credits/Coinage" ) /* [Free Play] on all for free play*/
668 PORT_DIPSETTING( 0x0100, "A+B/A&B" )
669 PORT_DIPSETTING( 0x0000, "A&B/A [Free Play]" )
670 PORT_DIPNAME( 0x0e00, 0x0e00, DEF_STR( Coin_A ) )
671 PORT_DIPSETTING( 0x0a00, DEF_STR( 3C_1C ) )
672 PORT_DIPSETTING( 0x0c00, DEF_STR( 2C_1C ) )
673 PORT_DIPSETTING( 0x0e00, DEF_STR( 1C_1C ) )
674 PORT_DIPSETTING( 0x0800, DEF_STR( 1C_2C ) )
675 PORT_DIPSETTING( 0x0600, DEF_STR( 1C_3C ) )
676 PORT_DIPSETTING( 0x0400, DEF_STR( 1C_4C ) )
677 PORT_DIPSETTING( 0x0200, DEF_STR( 1C_5C ) )
678 PORT_DIPSETTING( 0x0000, "1C 6C [Free Play]" )
679 PORT_DIPNAME( 0x7000, 0x7000, DEF_STR( Coin_B ) )
680 PORT_DIPSETTING( 0x5000, DEF_STR( 3C_1C ) )
681 PORT_DIPSETTING( 0x6000, DEF_STR( 2C_1C ) )
682 PORT_DIPSETTING( 0x7000, DEF_STR( 1C_1C ) )
683 PORT_DIPSETTING( 0x4000, DEF_STR( 1C_2C ) )
684 PORT_DIPSETTING( 0x3000, DEF_STR( 1C_3C ) )
685 PORT_DIPSETTING( 0x2000, DEF_STR( 1C_4C ) )
686 PORT_DIPSETTING( 0x1000, DEF_STR( 1C_5C ) )
687 PORT_DIPSETTING( 0x0000, "1C 6C [Free Play]" )
688 PORT_DIPNAME( 0x8000, 0x8000, "2C Start, 1C Continue" )
689 PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
690 PORT_DIPSETTING( 0x0000, "On [Free Play]" ) /* Forces 1C_1C*/
691
692 PORT_START /* IN3 - c00002&3*/
693 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_VBLANK ) /* vblank*/
694 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused?*/
695 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
696 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
697 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
698 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
699 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
700 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
701
702 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused?*/
703 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
704 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
705 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
706 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
707 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
708 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
709 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
710
711 PORT_START /* IN4 - c00006&7*/
712
713 /***********************************************
714
715 This Dip port is bit based:
716
717 Bit 0 1 2 3
718 1 1 1 1 Japan
719
720 0 1 1 1 USA With FBI logo
721 1 0 1 1 Korea
722 1 1 0 1 Hong Kong
723 1 1 1 0 Taiwan
724
725 ************************************************/
726
727 #if 0 /* See Patch in MACHINE_INIT, only text not logo*/
728 PORT_DIPNAME( 0x00ff, 0x00ff, "Country" )
729 PORT_DIPSETTING( 0x00ff, "Japan" )
730 PORT_DIPSETTING( 0x00ef, "USA & Canada" )
731 PORT_DIPSETTING( 0x00df, "Korea" )
732 PORT_DIPSETTING( 0x00bf, "Hong Kong" )
733 PORT_DIPSETTING( 0x007f, "Taiwan" )
734 #endif
735 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused?*/
736 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
737 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
738 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
739 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
740 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
741 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
742 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
743
744 INPUT_PORTS_END
745
746
747 /***************************************************************************
748 Battle K-Road
749 ***************************************************************************/
750
751 INPUT_PORTS_START( btlkroad )
752
753 PORT_START /* IN0 - c00000&1*/
754 PSIKYO_PORT_PLAYER2
755
756 PSIKYO_PORT_PLAYER1
757
758 PORT_START /* IN1 - c00002&3*/
759 PSIKYO_PORT_COIN
760
761 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
762 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON6 | IPF_PLAYER2 )
763 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER2 )
764 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 )
765 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
766 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON6 | IPF_PLAYER1 )
767 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER1 )
768 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )
769
770 PORT_START /* IN2 - c00004&5*/
771 PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) )
772 PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
773 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
774 PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Demo_Sounds ) )
775 PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
776 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
777 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) )
778 PORT_DIPSETTING( 0x0008, "Easy" )
779 PORT_DIPSETTING( 0x000c, "Normal" )
780 PORT_DIPSETTING( 0x0004, "Hard" )
781 PORT_DIPSETTING( 0x0000, "Hardest" )
782 PORT_DIPNAME( 0x0010, 0x0010, "Unknown 2-4" ) /* used*/
783 PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
784 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
785 PORT_DIPNAME( 0x0020, 0x0020, "Unknown 2-5" ) /* used (energy lost?)*/
786 PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
787 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
788 PORT_DIPNAME( 0x0040, 0x0040, "Use DSW 3 (Debug)" )
789 PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
790 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
791 PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
792
793 PORT_DIPNAME( 0x0100, 0x0100, "Credits/Coinage" ) /* [Free Play] on all for free play*/
794 PORT_DIPSETTING( 0x0100, "A+B/A&B" )
795 PORT_DIPSETTING( 0x0000, "A&B/A [Free Play]" )
796 PORT_DIPNAME( 0x0e00, 0x0e00, DEF_STR( Coin_A ) )
797 PORT_DIPSETTING( 0x0a00, DEF_STR( 3C_1C ) )
798 PORT_DIPSETTING( 0x0c00, DEF_STR( 2C_1C ) )
799 PORT_DIPSETTING( 0x0e00, DEF_STR( 1C_1C ) )
800 PORT_DIPSETTING( 0x0800, DEF_STR( 1C_2C ) )
801 PORT_DIPSETTING( 0x0600, DEF_STR( 1C_3C ) )
802 PORT_DIPSETTING( 0x0400, DEF_STR( 1C_4C ) )
803 PORT_DIPSETTING( 0x0200, DEF_STR( 1C_5C ) )
804 PORT_DIPSETTING( 0x0000, "1C 6C [Free Play]" )
805 PORT_DIPNAME( 0x7000, 0x7000, DEF_STR( Coin_B ) )
806 PORT_DIPSETTING( 0x5000, DEF_STR( 3C_1C ) )
807 PORT_DIPSETTING( 0x6000, DEF_STR( 2C_1C ) )
808 PORT_DIPSETTING( 0x7000, DEF_STR( 1C_1C ) )
809 PORT_DIPSETTING( 0x4000, DEF_STR( 1C_2C ) )
810 PORT_DIPSETTING( 0x3000, DEF_STR( 1C_3C ) )
811 PORT_DIPSETTING( 0x2000, DEF_STR( 1C_4C ) )
812 PORT_DIPSETTING( 0x1000, DEF_STR( 1C_5C ) )
813 PORT_DIPSETTING( 0x0000, "1C 6C [Free Play]" )
814 PORT_DIPNAME( 0x8000, 0x8000, "2C Start, 1C Continue" )
815 PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
816 PORT_DIPSETTING( 0x0000, "On [Free Play]" ) /* Forces 1C_1C*/
817
818 /***********************************************
819
820 Bit 0 1 2 3
821 1 1 1 1 Japan
822
823 0 1 1 1 USA & Canada
824 0 0 1 1 Korea
825 0 1 0 1 Hong Kong
826 0 1 1 0 Taiwan
827 Other World
828
829 ************************************************/
830
831 PORT_START /* IN3 - c00006&7*/
832 PORT_DIPNAME( 0x000f, 0x0000, "Copyright (Country)" )
833 PORT_DIPSETTING( 0x000f, "Psikyo (Japan)" )
834 PORT_DIPSETTING( 0x000e, "Jaleco+Psikyo (USA & Canada)" )
835 PORT_DIPSETTING( 0x000c, "Psikyo (Korea)" )
836 PORT_DIPSETTING( 0x000a, "Psikyo (Hong Kong)" )
837 PORT_DIPSETTING( 0x0006, "Psikyo (Taiwan)" )
838 PORT_DIPSETTING( 0x0000, "Psikyo (World)" )
839
840 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
841 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
842 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
843 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_VBLANK ) /* vblank*/
844
845 /* This DSW is used for debugging the game*/
846 PORT_DIPNAME( 0x0100, 0x0100, "Unknown 3-0" ) /* tested!*/
847 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
848 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
849 PORT_DIPNAME( 0x0200, 0x0200, "Unknown 3-1" ) /* tested!*/
850 PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
851 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
852 PORT_DIPNAME( 0x0400, 0x0400, "Unknown 3-2" )
853 PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
854 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
855 PORT_DIPNAME( 0x0800, 0x0800, "Unknown 3-3" )
856 PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
857 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
858 PORT_DIPNAME( 0x1000, 0x1000, "Unknown 3-4" ) /* tested!*/
859 PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
860 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
861 PORT_DIPNAME( 0x2000, 0x2000, "Unknown 3-5" )
862 PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
863 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
864 PORT_DIPNAME( 0x4000, 0x4000, "Unknown 3-6" )
865 PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
866 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
867 PORT_DIPNAME( 0x8000, 0x8000, "Unknown 3-7" ) /* tested!*/
868 PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
869 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
870
871 INPUT_PORTS_END
872
873
874 /***************************************************************************
875 Gun Bird
876 ***************************************************************************/
877
878 INPUT_PORTS_START( gunbird )
879
880 PORT_START /* IN0 - c00000&1*/
881 PSIKYO_PORT_PLAYER2
882
883 PSIKYO_PORT_PLAYER1
884
885 PORT_START /* IN1 - c00002&3*/
886 PSIKYO_PORT_COIN
887
888 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
889 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
890 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
891 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
892 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
893 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
894 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
895 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
896
897 PORT_START /* IN2 - c00004&5*/
898 PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) )
899 PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
900 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
901 PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Demo_Sounds ) )
902 PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
903 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
904 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) )
905 PORT_DIPSETTING( 0x0008, "Easy" )
906 PORT_DIPSETTING( 0x000c, "Normal" )
907 PORT_DIPSETTING( 0x0004, "Hard" )
908 PORT_DIPSETTING( 0x0000, "Hardest" )
909 PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) )
910 PORT_DIPSETTING( 0x0020, "1" )
911 PORT_DIPSETTING( 0x0010, "2" )
912 PORT_DIPSETTING( 0x0030, "3" )
913 PORT_DIPSETTING( 0x0000, "4" )
914 PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Bonus_Life ) )
915 PORT_DIPSETTING( 0x0040, "400K" )
916 PORT_DIPSETTING( 0x0000, "600K" )
917 PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
918
919 PORT_DIPNAME( 0x0100, 0x0100, "Credits/Coinage" ) /* [Free Play] on all for free play*/
920 PORT_DIPSETTING( 0x0100, "A+B/A&B" )
921 PORT_DIPSETTING( 0x0000, "A&B/A [Free Play]" )
922 PORT_DIPNAME( 0x0e00, 0x0e00, DEF_STR( Coin_A ) )
923 PORT_DIPSETTING( 0x0a00, DEF_STR( 3C_1C ) )
924 PORT_DIPSETTING( 0x0c00, DEF_STR( 2C_1C ) )
925 PORT_DIPSETTING( 0x0e00, DEF_STR( 1C_1C ) )
926 PORT_DIPSETTING( 0x0800, DEF_STR( 1C_2C ) )
927 PORT_DIPSETTING( 0x0600, DEF_STR( 1C_3C ) )
928 PORT_DIPSETTING( 0x0400, DEF_STR( 1C_4C ) )
929 PORT_DIPSETTING( 0x0200, DEF_STR( 1C_5C ) )
930 PORT_DIPSETTING( 0x0000, "1C 6C [Free Play]" )
931 PORT_DIPNAME( 0x7000, 0x7000, DEF_STR( Coin_B ) )
932 PORT_DIPSETTING( 0x5000, DEF_STR( 3C_1C ) )
933 PORT_DIPSETTING( 0x6000, DEF_STR( 2C_1C ) )
934 PORT_DIPSETTING( 0x7000, DEF_STR( 1C_1C ) )
935 PORT_DIPSETTING( 0x4000, DEF_STR( 1C_2C ) )
936 PORT_DIPSETTING( 0x3000, DEF_STR( 1C_3C ) )
937 PORT_DIPSETTING( 0x2000, DEF_STR( 1C_4C ) )
938 PORT_DIPSETTING( 0x1000, DEF_STR( 1C_5C ) )
939 PORT_DIPSETTING( 0x0000, "1C 6C [Free Play]" )
940 PORT_DIPNAME( 0x8000, 0x8000, "2C Start, 1C Continue" )
941 PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
942 PORT_DIPSETTING( 0x0000, "On [Free Play]" ) /* Forces 1C_1C*/
943
944 PORT_START /* IN3 - c00006&7*/
945
946 /***********************************************
947
948 This Dip port is bit based:
949
950 Bit 0 1 2 3
951 1 1 1 1 World (No "For use in ...." screen)
952
953 0 x x x USA With FBI logo
954 1 0 x x Korea
955 1 1 0 x Hong Kong
956 1 1 1 0 Taiwan
957
958 x = Doesn't Matter, see routine starting at 0108A4:
959
960 Japan is listed in the code but how do you activate it?
961
962 Has no effects on Japan or Korea versions.
963
964 ************************************************/
965
966 PORT_DIPNAME( 0x000f, 0x000f, "Country" )
967 PORT_DIPSETTING( 0x000f, "World" )
968 PORT_DIPSETTING( 0x000e, "USA" )
969 PORT_DIPSETTING( 0x000d, "Korea" )
970 PORT_DIPSETTING( 0x000b, "Hong Kong" )
971 PORT_DIPSETTING( 0x0007, "Taiwan" )
972 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
973 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
974 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
975 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_VBLANK ) /* vblank*/
976
977 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
978 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
979 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* tested!*/
980 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
981 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
982 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
983 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
984 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* tested!*/
985
986 INPUT_PORTS_END
987
988 INPUT_PORTS_START( gunbirdj )
989
990 PORT_START /* IN0 - c00000&1*/
991 PSIKYO_PORT_PLAYER2
992
993 PSIKYO_PORT_PLAYER1
994
995 PORT_START /* IN1 - c00002&3*/
996 PSIKYO_PORT_COIN
997
998 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
999 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
1000 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
1001 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
1002 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1003 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1004 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1005 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1006
1007 PORT_START /* IN2 - c00004&5*/
1008 PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) )
1009 PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
1010 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1011 PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Demo_Sounds ) )
1012 PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
1013 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1014 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) )
1015 PORT_DIPSETTING( 0x0008, "Easy" )
1016 PORT_DIPSETTING( 0x000c, "Normal" )
1017 PORT_DIPSETTING( 0x0004, "Hard" )
1018 PORT_DIPSETTING( 0x0000, "Hardest" )
1019 PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) )
1020 PORT_DIPSETTING( 0x0020, "1" )
1021 PORT_DIPSETTING( 0x0010, "2" )
1022 PORT_DIPSETTING( 0x0030, "3" )
1023 PORT_DIPSETTING( 0x0000, "4" )
1024 PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Bonus_Life ) )
1025 PORT_DIPSETTING( 0x0040, "400K" )
1026 PORT_DIPSETTING( 0x0000, "600K" )
1027 PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
1028
1029 PORT_DIPNAME( 0x0100, 0x0100, "Credits/Coinage" ) /* [Free Play] on all for free play*/
1030 PORT_DIPSETTING( 0x0100, "A+B/A&B" )
1031 PORT_DIPSETTING( 0x0000, "A&B/A [Free Play]" )
1032 PORT_DIPNAME( 0x0e00, 0x0e00, DEF_STR( Coin_A ) )
1033 PORT_DIPSETTING( 0x0a00, DEF_STR( 3C_1C ) )
1034 PORT_DIPSETTING( 0x0c00, DEF_STR( 2C_1C ) )
1035 PORT_DIPSETTING( 0x0e00, DEF_STR( 1C_1C ) )
1036 PORT_DIPSETTING( 0x0800, DEF_STR( 1C_2C ) )
1037 PORT_DIPSETTING( 0x0600, DEF_STR( 1C_3C ) )
1038 PORT_DIPSETTING( 0x0400, DEF_STR( 1C_4C ) )
1039 PORT_DIPSETTING( 0x0200, DEF_STR( 1C_5C ) )
1040 PORT_DIPSETTING( 0x0000, "1C 6C [Free Play]" )
1041 PORT_DIPNAME( 0x7000, 0x7000, DEF_STR( Coin_B ) )
1042 PORT_DIPSETTING( 0x5000, DEF_STR( 3C_1C ) )
1043 PORT_DIPSETTING( 0x6000, DEF_STR( 2C_1C ) )
1044 PORT_DIPSETTING( 0x7000, DEF_STR( 1C_1C ) )
1045 PORT_DIPSETTING( 0x4000, DEF_STR( 1C_2C ) )
1046 PORT_DIPSETTING( 0x3000, DEF_STR( 1C_3C ) )
1047 PORT_DIPSETTING( 0x2000, DEF_STR( 1C_4C ) )
1048 PORT_DIPSETTING( 0x1000, DEF_STR( 1C_5C ) )
1049 PORT_DIPSETTING( 0x0000, "1C 6C [Free Play]" )
1050 PORT_DIPNAME( 0x8000, 0x8000, "2C Start, 1C Continue" )
1051 PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
1052 PORT_DIPSETTING( 0x0000, "On [Free Play]" ) /* Forces 1C_1C*/
1053
1054 PORT_START /* IN3 - c00006&7*/
1055
1056 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
1057 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
1058 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
1059 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
1060 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
1061 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1062 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1063 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_VBLANK ) /* vblank*/
1064
1065 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
1066 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
1067 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* tested!*/
1068 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
1069 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1070 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1071 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1072 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* tested!*/
1073
1074 INPUT_PORTS_END
1075
1076
1077 /***************************************************************************
1078 Strikers 1945
1079 ***************************************************************************/
1080
1081 INPUT_PORTS_START( s1945 )
1082
1083 PORT_START /* IN0 - c00000&1*/
1084 PSIKYO_PORT_PLAYER2
1085
1086 PSIKYO_PORT_PLAYER1
1087
1088 PORT_START /* IN1 - c00002&3*/
1089 PSIKYO_PORT_COIN
1090
1091 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
1092 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
1093 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
1094 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
1095 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1096 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1097 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1098 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1099
1100 PORT_START /* IN2 - c00004&5*/
1101 PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) )
1102 PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
1103 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1104 PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Demo_Sounds ) )
1105 PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
1106 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1107 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) )
1108 PORT_DIPSETTING( 0x0008, "Easy" )
1109 PORT_DIPSETTING( 0x000c, "Normal" )
1110 PORT_DIPSETTING( 0x0004, "Hard" )
1111 PORT_DIPSETTING( 0x0000, "Hardest" )
1112 PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) )
1113 PORT_DIPSETTING( 0x0020, "1" )
1114 PORT_DIPSETTING( 0x0010, "2" )
1115 PORT_DIPSETTING( 0x0030, "3" )
1116 PORT_DIPSETTING( 0x0000, "4" )
1117 PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Bonus_Life ) )
1118 PORT_DIPSETTING( 0x0040, "600K" )
1119 PORT_DIPSETTING( 0x0000, "800K" )
1120 PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
1121
1122 PORT_DIPNAME( 0x0100, 0x0100, "Credits/Coinage" ) /* No freeplay for s1945*/
1123 PORT_DIPSETTING( 0x0100, "A+B/A&B" )
1124 PORT_DIPSETTING( 0x0000, "A&B/A" )
1125 PORT_DIPNAME( 0x0e00, 0x0e00, DEF_STR( Coin_A ) )
1126 PORT_DIPSETTING( 0x0a00, DEF_STR( 3C_1C ) )
1127 PORT_DIPSETTING( 0x0c00, DEF_STR( 2C_1C ) )
1128 PORT_DIPSETTING( 0x0e00, DEF_STR( 1C_1C ) )
1129 PORT_DIPSETTING( 0x0800, DEF_STR( 1C_2C ) )
1130 PORT_DIPSETTING( 0x0600, DEF_STR( 1C_3C ) )
1131 PORT_DIPSETTING( 0x0400, DEF_STR( 1C_4C ) )
1132 PORT_DIPSETTING( 0x0200, DEF_STR( 1C_5C ) )
1133 PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) )
1134 PORT_DIPNAME( 0x7000, 0x7000, DEF_STR( Coin_B ) )
1135 PORT_DIPSETTING( 0x5000, DEF_STR( 3C_1C ) )
1136 PORT_DIPSETTING( 0x6000, DEF_STR( 2C_1C ) )
1137 PORT_DIPSETTING( 0x7000, DEF_STR( 1C_1C ) )
1138 PORT_DIPSETTING( 0x4000, DEF_STR( 1C_2C ) )
1139 PORT_DIPSETTING( 0x3000, DEF_STR( 1C_3C ) )
1140 PORT_DIPSETTING( 0x2000, DEF_STR( 1C_4C ) )
1141 PORT_DIPSETTING( 0x1000, DEF_STR( 1C_5C ) )
1142 PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) )
1143 PORT_DIPNAME( 0x8000, 0x8000, "2C Start, 1C Continue" )
1144 PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
1145 PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) /* Forces 1C_1C*/
1146
1147 PORT_START /* IN3 - c00006&7*/
1148
1149 /***********************************************
1150
1151 This Dip port is bit based:
1152
1153 Bit 0 1 2 3
1154 1 1 1 1 World (No "For use in ...." screen), see:
1155 0149B8: tst.w $fffe58a0.l
1156
1157 0 1 1 1 USA & Canada
1158 1 0 1 1 Korea
1159 1 1 0 1 Hong Kong
1160 1 1 1 0 Taiwan
1161 Other regions check see:
1162 005594: move.w $fffe58a0.l, D0
1163
1164 Came from a Japan board apparently!!!
1165 Japan is listed in the code but how do you activate it?
1166 No effect on set s1945
1167
1168 ************************************************/
1169
1170 PORT_DIPNAME( 0x000f, 0x000f, "Country" )
1171 PORT_DIPSETTING( 0x000f, "World" )
1172 PORT_DIPSETTING( 0x000e, "U.S.A & Canada" )
1173 PORT_DIPSETTING( 0x000d, "Korea" )
1174 PORT_DIPSETTING( 0x000b, "Hong Kong" )
1175 PORT_DIPSETTING( 0x0007, "Taiwan" )
1176 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
1177 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1178 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1179 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_VBLANK ) /* vblank*/
1180
1181 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
1182 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
1183 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* tested!*/
1184 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
1185 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1186 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1187 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1188 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* tested!*/
1189
1190 INPUT_PORTS_END
1191
1192 INPUT_PORTS_START( s1945j )
1193
1194 PORT_START /* IN0 - c00000&1*/
1195 PSIKYO_PORT_PLAYER2
1196
1197 PSIKYO_PORT_PLAYER1
1198
1199 PORT_START /* IN1 - c00002&3*/
1200 PSIKYO_PORT_COIN
1201
1202 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
1203 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
1204 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
1205 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
1206 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1207 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1208 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1209 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1210
1211 PORT_START /* IN2 - c00004&5*/
1212 PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) )
1213 PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
1214 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1215 PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Demo_Sounds ) )
1216 PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
1217 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1218 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) )
1219 PORT_DIPSETTING( 0x0008, "Easy" )
1220 PORT_DIPSETTING( 0x000c, "Normal" )
1221 PORT_DIPSETTING( 0x0004, "Hard" )
1222 PORT_DIPSETTING( 0x0000, "Hardest" )
1223 PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) )
1224 PORT_DIPSETTING( 0x0020, "1" )
1225 PORT_DIPSETTING( 0x0010, "2" )
1226 PORT_DIPSETTING( 0x0030, "3" )
1227 PORT_DIPSETTING( 0x0000, "4" )
1228 PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Bonus_Life ) )
1229 PORT_DIPSETTING( 0x0040, "600K" )
1230 PORT_DIPSETTING( 0x0000, "800K" )
1231 PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
1232
1233 PORT_DIPNAME( 0x0100, 0x0100, "Credits/Coinage" ) /* No freeplay for s1945?*/
1234 PORT_DIPSETTING( 0x0100, "A+B/A&B" )
1235 PORT_DIPSETTING( 0x0000, "A&B/A" )
1236 PORT_DIPNAME( 0x0e00, 0x0e00, DEF_STR( Coin_A ) )
1237 PORT_DIPSETTING( 0x0a00, DEF_STR( 3C_1C ) )
1238 PORT_DIPSETTING( 0x0c00, DEF_STR( 2C_1C ) )
1239 PORT_DIPSETTING( 0x0e00, DEF_STR( 1C_1C ) )
1240 PORT_DIPSETTING( 0x0800, DEF_STR( 1C_2C ) )
1241 PORT_DIPSETTING( 0x0600, DEF_STR( 1C_3C ) )
1242 PORT_DIPSETTING( 0x0400, DEF_STR( 1C_4C ) )
1243 PORT_DIPSETTING( 0x0200, DEF_STR( 1C_5C ) )
1244 PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) )
1245 PORT_DIPNAME( 0x7000, 0x7000, DEF_STR( Coin_B ) )
1246 PORT_DIPSETTING( 0x5000, DEF_STR( 3C_1C ) )
1247 PORT_DIPSETTING( 0x6000, DEF_STR( 2C_1C ) )
1248 PORT_DIPSETTING( 0x7000, DEF_STR( 1C_1C ) )
1249 PORT_DIPSETTING( 0x4000, DEF_STR( 1C_2C ) )
1250 PORT_DIPSETTING( 0x3000, DEF_STR( 1C_3C ) )
1251 PORT_DIPSETTING( 0x2000, DEF_STR( 1C_4C ) )
1252 PORT_DIPSETTING( 0x1000, DEF_STR( 1C_5C ) )
1253 PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) )
1254 PORT_DIPNAME( 0x8000, 0x8000, "2C Start, 1C Continue" )
1255 PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
1256 PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) /* Forces 1C_1C*/
1257
1258 PORT_START /* IN3 - c00006&7*/
1259
1260 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
1261 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
1262 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
1263 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
1264 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
1265 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1266 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1267 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_VBLANK ) /* vblank*/
1268
1269 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
1270 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
1271 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* tested!*/
1272 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
1273 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1274 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1275 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1276 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* tested!*/
1277
1278 INPUT_PORTS_END
1279
1280
1281 /***************************************************************************
1282 Tengai
1283 ***************************************************************************/
1284
1285 INPUT_PORTS_START( tengai )
1286
1287 PORT_START /* IN0 - c00000&1*/
1288 PSIKYO_PORT_PLAYER2
1289
1290 PSIKYO_PORT_PLAYER1
1291
1292 PORT_START /* IN1 - c00002&3*/
1293 PSIKYO_PORT_COIN
1294
1295 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
1296 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
1297 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
1298 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
1299 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1300 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1301 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1302 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1303
1304 PORT_START /* IN2 - c00004&5*/
1305 PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) )
1306 PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
1307 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1308 PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Demo_Sounds ) )
1309 PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
1310 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1311 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) )
1312 PORT_DIPSETTING( 0x0008, "Easy" )
1313 PORT_DIPSETTING( 0x000c, "Normal" )
1314 PORT_DIPSETTING( 0x0004, "Hard" )
1315 PORT_DIPSETTING( 0x0000, "Hardest" )
1316 PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) )
1317 PORT_DIPSETTING( 0x0020, "1" )
1318 PORT_DIPSETTING( 0x0010, "2" )
1319 PORT_DIPSETTING( 0x0030, "3" )
1320 PORT_DIPSETTING( 0x0000, "4" )
1321 PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Bonus_Life ) )
1322 PORT_DIPSETTING( 0x0040, "600K" )
1323 PORT_DIPSETTING( 0x0000, "800K" )
1324 PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
1325
1326 PORT_DIPNAME( 0x0100, 0x0100, "Credits/Coinage" ) /* [Free Play] on all for free play*/
1327 PORT_DIPSETTING( 0x0100, "A+B/A&B" )
1328 PORT_DIPSETTING( 0x0000, "A&B/A [Free Play]" )
1329 PORT_DIPNAME( 0x0e00, 0x0e00, DEF_STR( Coin_A ) )
1330 PORT_DIPSETTING( 0x0a00, DEF_STR( 3C_1C ) )
1331 PORT_DIPSETTING( 0x0c00, DEF_STR( 2C_1C ) )
1332 PORT_DIPSETTING( 0x0e00, DEF_STR( 1C_1C ) )
1333 PORT_DIPSETTING( 0x0800, DEF_STR( 1C_2C ) )
1334 PORT_DIPSETTING( 0x0600, DEF_STR( 1C_3C ) )
1335 PORT_DIPSETTING( 0x0400, DEF_STR( 1C_4C ) )
1336 PORT_DIPSETTING( 0x0200, DEF_STR( 1C_5C ) )
1337 PORT_DIPSETTING( 0x0000, "1C 6C [Free Play]" )
1338 PORT_DIPNAME( 0x7000, 0x7000, DEF_STR( Coin_B ) )
1339 PORT_DIPSETTING( 0x5000, DEF_STR( 3C_1C ) )
1340 PORT_DIPSETTING( 0x6000, DEF_STR( 2C_1C ) )
1341 PORT_DIPSETTING( 0x7000, DEF_STR( 1C_1C ) )
1342 PORT_DIPSETTING( 0x4000, DEF_STR( 1C_2C ) )
1343 PORT_DIPSETTING( 0x3000, DEF_STR( 1C_3C ) )
1344 PORT_DIPSETTING( 0x2000, DEF_STR( 1C_4C ) )
1345 PORT_DIPSETTING( 0x1000, DEF_STR( 1C_5C ) )
1346 PORT_DIPSETTING( 0x0000, "1C 6C [Free Play]" )
1347 PORT_DIPNAME( 0x8000, 0x8000, "2C Start, 1C Continue" )
1348 PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
1349 PORT_DIPSETTING( 0x0000, "On [Free Play]" ) /* Forces 1C_1C*/
1350
1351 PORT_START /* IN3 - c00006&7*/
1352
1353 /***********************************************
1354
1355 This Dip port is bit based:
1356
1357 If any of the bits are set it becomes World.
1358 Text for other regions is present though.
1359
1360 ************************************************/
1361
1362 PORT_DIPNAME( 0x000f, 0x000e, "Country" )
1363 PORT_DIPSETTING( 0x000f, "Japan" )
1364 PORT_DIPSETTING( 0x000e, "World" )
1365
1366 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
1367 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1368 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1369 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_VBLANK ) /* vblank*/
1370
1371 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
1372 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
1373 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* tested!*/
1374 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
1375 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1376 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1377 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1378 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* tested!*/
1379
1380 INPUT_PORTS_END
1381
1382
1383 /***************************************************************************
1384
1385
1386 Gfx Layouts
1387
1388
1389 ***************************************************************************/
1390
1391 static struct GfxLayout layout_16x16x4 =
1392 {
1393 16,16,
1394 RGN_FRAC(1,1),
1395 4,
1396 {0,1,2,3},
1397 {2*4,3*4,0*4,1*4,6*4,7*4,4*4,5*4,
1398 10*4,11*4,8*4,9*4,14*4,15*4,12*4,13*4},
1399 {0*64,1*64,2*64,3*64,4*64,5*64,6*64,7*64,
1400 8*64,9*64,10*64,11*64,12*64,13*64,14*64,15*64},
1401 16*16*4
1402 };
1403
1404 static struct GfxDecodeInfo psikyo_gfxdecodeinfo[] =
1405 {
1406 { REGION_GFX1, 0, &layout_16x16x4, 0x000, 0x20 }, /* [0] Sprites*/
1407 { REGION_GFX2, 0, &layout_16x16x4, 0x800, 0x48 }, /* [1] Layer 0 + 1*/
1408 { -1 }
1409 };
1410
1411
1412
1413 /***************************************************************************
1414
1415
1416 Machine Drivers
1417
1418
1419 ***************************************************************************/
1420
1421 /***************************************************************************
1422 Samurai Ace / Sengoku Aces
1423 ***************************************************************************/
1424
1425
1426 struct YM2610interface sngkace_ym2610_interface =
1427 {
1428 1,
1429 8000000, /* ? */
1430 { MIXERG(30,MIXER_GAIN_4x,MIXER_PAN_CENTER) },
1431 { 0 }, /* A_r */
1432 { 0 }, /* B_r */
1433 { 0 }, /* A_w */
1434 { 0 }, /* B_w */
1435 { sound_irq }, /* irq */
1436 { REGION_SOUND1 }, /* delta_t */
1437 { REGION_SOUND1 }, /* adpcm */
1438 { YM3012_VOL(100,MIXER_PAN_LEFT,100,MIXER_PAN_RIGHT) }
1439 };
1440
1441 static MACHINE_DRIVER_START( sngkace )
1442
1443 /* basic machine hardware */
1444 MDRV_CPU_ADD(M68EC020, 16000000)
1445 MDRV_CPU_MEMORY(psikyo_readmem,psikyo_writemem)
1446 MDRV_CPU_VBLANK_INT(irq1_line_hold,1)
1447
1448 MDRV_CPU_ADD(Z80, 4000000)
1449 MDRV_CPU_FLAGS(CPU_AUDIO_CPU) /* ? */
1450 MDRV_CPU_MEMORY(sngkace_sound_readmem,sngkace_sound_writemem)
1451 MDRV_CPU_PORTS(sngkace_sound_readport,sngkace_sound_writeport)
1452
1453 MDRV_FRAMES_PER_SECOND(59.3)
1454 MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION) /* we're using IPT_VBLANK*/
1455
1456 /* video hardware */
1457 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
1458 MDRV_SCREEN_SIZE(320, 256)
1459 MDRV_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
1460 MDRV_GFXDECODE(psikyo_gfxdecodeinfo)
1461 MDRV_PALETTE_LENGTH(0x1000)
1462
1463 MDRV_VIDEO_START(psikyo)
1464 MDRV_VIDEO_EOF(psikyo)
1465 MDRV_VIDEO_UPDATE(psikyo)
1466
1467 /* sound hardware */
1468 MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
1469 MDRV_SOUND_ADD(YM2610, sngkace_ym2610_interface)
1470 MACHINE_DRIVER_END
1471
1472
1473
1474 /***************************************************************************
1475 Gun Bird / Battle K-Road / Strikers 1945 (Japan, unprotected)
1476 ***************************************************************************/
1477
1478
1479 struct YM2610interface gunbird_ym2610_interface =
1480 {
1481 1,
1482 8000000, /* ? */
1483 { MIXERG(30,MIXER_GAIN_4x,MIXER_PAN_CENTER) },
1484 { 0 }, /* A_r */
1485 { 0 }, /* B_r */
1486 { 0 }, /* A_w */
1487 { 0 }, /* B_w */
1488 { sound_irq }, /* irq */
1489 { REGION_SOUND1 }, /* delta_t */
1490 { REGION_SOUND2 }, /* adpcm */
1491 { YM3012_VOL(100,MIXER_PAN_LEFT,100,MIXER_PAN_RIGHT) }
1492 };
1493
1494 static MACHINE_DRIVER_START( gunbird )
1495
1496 /* basic machine hardware */
1497 MDRV_CPU_ADD(M68EC020, 16000000)
MDRV_CPU_MEMORY(psikyo_readmem,psikyo_writemem)1498 MDRV_CPU_MEMORY(psikyo_readmem,psikyo_writemem)
1499 MDRV_CPU_VBLANK_INT(irq1_line_hold,1)
1500
1501 MDRV_CPU_ADD(Z80, 4000000) /* ! LZ8420M (Z80 core) ! */
1502 MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
1503 MDRV_CPU_MEMORY(gunbird_sound_readmem,gunbird_sound_writemem)
1504 MDRV_CPU_PORTS(gunbird_sound_readport,gunbird_sound_writeport)
1505
1506 MDRV_FRAMES_PER_SECOND(59.3)
1507 MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION) /* we're using IPT_VBLANK*/
1508
1509 /* video hardware */
1510 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
1511 MDRV_SCREEN_SIZE(320, 256)
1512 MDRV_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
1513 MDRV_GFXDECODE(psikyo_gfxdecodeinfo)
1514 MDRV_PALETTE_LENGTH(0x1000)
1515
1516 MDRV_VIDEO_START(psikyo)
1517 MDRV_VIDEO_EOF(psikyo)
1518 MDRV_VIDEO_UPDATE(psikyo)
1519
1520 /* sound hardware */
1521 MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
1522 MDRV_SOUND_ADD(YM2610, gunbird_ym2610_interface)
1523 MACHINE_DRIVER_END
1524
1525
1526
1527
1528 /***************************************************************************
1529 Strikers 1945 / Tengai
1530 ***************************************************************************/
1531
1532
1533 static void irqhandler(int linestate)
1534 {
1535 if (linestate)
1536 cpu_set_irq_line(1, 0, ASSERT_LINE);
1537 else
1538 cpu_set_irq_line(1, 0, CLEAR_LINE);
1539 }
1540
1541 static struct YMF278B_interface ymf278b_interface =
1542 {
1543 1,
1544 { YMF278B_STD_CLOCK },
1545 { REGION_SOUND1 },
1546 { YM3012_VOL(100, MIXER_PAN_CENTER, 100, MIXER_PAN_CENTER) },
1547 { irqhandler }
1548 };
1549
1550 static MACHINE_DRIVER_START( s1945 )
1551
1552 /* basic machine hardware */
1553 MDRV_CPU_ADD(M68EC020, 16000000)
MDRV_CPU_MEMORY(psikyo_readmem,psikyo_writemem)1554 MDRV_CPU_MEMORY(psikyo_readmem,psikyo_writemem)
1555 MDRV_CPU_VBLANK_INT(irq1_line_hold,1)
1556
1557 MDRV_CPU_ADD(Z80, 4000000) /* ! LZ8420M (Z80 core) ! */
1558 MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
1559 MDRV_CPU_MEMORY(gunbird_sound_readmem,gunbird_sound_writemem)
1560 MDRV_CPU_PORTS(s1945_sound_readport,s1945_sound_writeport)
1561
1562 /* MCU should go here */
1563
1564 MDRV_FRAMES_PER_SECOND(59.3)
1565 MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION) /* we're using IPT_VBLANK*/
1566
1567 /* video hardware */
1568 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
1569 MDRV_SCREEN_SIZE(320, 256)
1570 MDRV_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
1571 MDRV_GFXDECODE(psikyo_gfxdecodeinfo)
1572 MDRV_PALETTE_LENGTH(0x1000)
1573
1574 MDRV_VIDEO_START(psikyo)
1575 MDRV_VIDEO_EOF(psikyo)
1576 MDRV_VIDEO_UPDATE(psikyo)
1577
1578 /* sound hardware */
1579 MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
1580 MDRV_SOUND_ADD(YMF278B, ymf278b_interface)
1581 MACHINE_DRIVER_END
1582
1583
1584
1585
1586
1587 /***************************************************************************
1588
1589
1590 ROMs Loading
1591
1592
1593 ***************************************************************************/
1594
1595
1596 /***************************************************************************
1597
1598 Samurai Aces
1599 ( WORLD/USA/HK/KOREA/TAIWAN Ver.)
1600
1601 Sengoku Ace
1602 (Samurai Aces JPN Ver.)
1603
1604 Board: SH201B
1605 CPU: TMP68EC020F-16
1606 Sound: Z80A + YM2610
1607 OSC: 32.000, 14.31818 MHz
1608
1609 ***************************************************************************/
1610
1611 ROM_START( samuraia )
1612
1613 ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Main CPU Code */
1614 ROM_LOAD32_WORD_SWAP( "4-u127.bin", 0x000000, 0x040000, CRC(8c9911ca) SHA1(821ba648b9a1d495c600cbf4606f2dbddc6f9e6f) ) /* 1&0*/
1615 ROM_LOAD32_WORD_SWAP( "5-u126.bin", 0x000002, 0x040000, CRC(d20c3ef0) SHA1(264e5a7e45e130a9e7152468733337668dc5b65f) ) /* 3&2*/
1616
1617 ROM_REGION( 0x030000, REGION_CPU2, 0 ) /* Sound CPU Code */
1618 ROM_LOAD( "3-u58.bin", 0x00000, 0x20000, CRC(310f5c76) SHA1(dbfd1c5a7a514bccd89fc4f7191744cf76bb745d) )
1619 ROM_RELOAD( 0x10000, 0x20000 )
1620
1621 ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE ) /* Sprites */
1622 ROM_LOAD( "u14.bin", 0x000000, 0x200000, CRC(00a546cb) SHA1(30a8679b49928d5fcbe58b5eecc2ebd08173adf8) )
1623
1624 ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* Layers 0 + 1 */
1625 ROM_LOAD( "u34.bin", 0x000000, 0x100000, CRC(e6a75bd8) SHA1(1aa84ea54584b6c8b2846194b48bf6d2afa67fee) )
1626 ROM_LOAD( "u35.bin", 0x100000, 0x100000, CRC(c4ca0164) SHA1(c75422de2e0127cdc23d8c223b674a5bd85b00fb) )
1627
1628 /* ROM_REGION( 0x100000, REGION_SOUND1, ROMREGION_SOUNDONLY ) // Samples /*/
1629 ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* Samples */
1630 ROM_LOAD( "u68.bin", 0x000000, 0x100000, CRC(9a7f6c34) SHA1(c549b209bce1d2c6eeb512db198ad20c3f5fb0ea) )
1631
1632 ROM_REGION( 0x040000, REGION_USER1, 0 ) /* Sprites LUT */
1633 ROM_LOAD( "u11.bin", 0x000000, 0x040000, CRC(11a04d91) SHA1(5d146a9a39a70f2ee212ceab9a5469598432449e) ) /* x1xxxxxxxxxxxxxxxx = 0xFF*/
1634
1635 ROM_END
1636
1637 ROM_START( sngkace )
1638
1639 ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Main CPU Code */
1640 ROM_LOAD32_WORD_SWAP( "1-u127.bin", 0x000000, 0x040000, CRC(6c45b2f8) SHA1(08473297e174f3a6d67043f3b16f4e6b9c68b826) ) /* 1&0*/
1641 ROM_LOAD32_WORD_SWAP( "2-u126.bin", 0x000002, 0x040000, CRC(845a6760) SHA1(3b8fed294e28d9d8ef5cb5ec88b9ade396146a48) ) /* 3&2*/
1642
1643 ROM_REGION( 0x030000, REGION_CPU2, 0 ) /* Sound CPU Code */
1644 ROM_LOAD( "3-u58.bin", 0x00000, 0x20000, CRC(310f5c76) SHA1(dbfd1c5a7a514bccd89fc4f7191744cf76bb745d) )
1645 ROM_RELOAD( 0x10000, 0x20000 )
1646
1647 ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE ) /* Sprites */
1648 ROM_LOAD( "u14.bin", 0x000000, 0x200000, CRC(00a546cb) SHA1(30a8679b49928d5fcbe58b5eecc2ebd08173adf8) )
1649
1650 ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* Layers 0 + 1 */
1651 ROM_LOAD( "u34.bin", 0x000000, 0x100000, CRC(e6a75bd8) SHA1(1aa84ea54584b6c8b2846194b48bf6d2afa67fee) )
1652 ROM_LOAD( "u35.bin", 0x100000, 0x100000, CRC(c4ca0164) SHA1(c75422de2e0127cdc23d8c223b674a5bd85b00fb) )
1653
1654 /* ROM_REGION( 0x100000, REGION_SOUND1, ROMREGION_SOUNDONLY ) // Samples /*/
1655 ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* Samples */
1656 ROM_LOAD( "u68.bin", 0x000000, 0x100000, CRC(9a7f6c34) SHA1(c549b209bce1d2c6eeb512db198ad20c3f5fb0ea) )
1657
1658 ROM_REGION( 0x040000, REGION_USER1, 0 ) /* Sprites LUT */
1659 ROM_LOAD( "u11.bin", 0x000000, 0x040000, CRC(11a04d91) SHA1(5d146a9a39a70f2ee212ceab9a5469598432449e) ) /* x1xxxxxxxxxxxxxxxx = 0xFF*/
1660
1661 ROM_END
1662
1663 DRIVER_INIT( sngkace )
1664 {
1665 {
1666 unsigned char *RAM = memory_region(REGION_SOUND1);
1667 int len = memory_region_length(REGION_SOUND1);
1668 int i;
1669
1670 /* Bit 6&7 of the samples are swapped. Naughty, naughty... */
1671 for (i=0;i<len;i++)
1672 {
1673 int x = RAM[i];
1674 RAM[i] = ((x & 0x40) << 1) | ((x & 0x80) >> 1) | (x & 0x3f);
1675 }
1676 }
1677
1678 /* input ports */
1679 install_mem_read32_handler(0, 0xc00000, 0xc0000b, sngkace_input_r);
1680
1681 /* sound latch */
1682 install_mem_write32_handler(0, 0xc00010, 0xc00013, psikyo_soundlatch_w);
1683
1684 psikyo_ka302c_banking = 0; /* SH201B doesn't have any gfx banking*/
1685 psikyo_switch_banks(0, 0); /* sngkace / samuraia don't use banking*/
1686 psikyo_switch_banks(1, 1); /* They share REGION_GFX2 to save memory on other boards*/
1687
1688 /* Enable other regions */
1689 #if 0
1690 if (!strcmp(Machine->gamedrv->name,"sngkace"))
1691 {
1692 unsigned char *ROM = memory_region(REGION_CPU1);
1693 ROM[0x995] = 0x4e;
1694 ROM[0x994] = 0x71;
1695 ROM[0x997] = 0x4e;
1696 ROM[0x996] = 0x71;
1697
1698 }
1699 #endif
1700 }
1701
1702
1703 /***************************************************************************
1704
1705 Gun Bird (Korea)
1706 Gun Bird (Japan)
1707 Battle K-Road (Japan)
1708
1709 Board: KA302C
1710 CPU: MC68EC020FG16
1711 Sound: LZ8420M (Z80 core) + YMF286-K
1712 OSC: 16.000, 14.31818 MHz
1713
1714 Chips: PS2001B
1715 PS3103
1716 PS3204
1717 PS3305
1718
1719 ***************************************************************************/
1720
1721 ROM_START( gunbird )
1722
1723 ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Main CPU Code */
CRC(b78ec99d)1724 ROM_LOAD32_WORD_SWAP( "4-u46.bin", 0x000000, 0x040000, CRC(b78ec99d) SHA1(399b79931652d9df1632cd4d7ec3d214e473a5c3) ) /* 1&0*/
1725 ROM_LOAD32_WORD_SWAP( "5-u39.bin", 0x000002, 0x040000, CRC(925f095d) SHA1(301a536119a0320a756e9c6e51fb10e36b90ef16) ) /* 3&2*/
1726
1727 ROM_REGION( 0x030000, REGION_CPU2, 0 ) /* Sound CPU Code */
1728 ROM_LOAD( "3-u71.bin", 0x00000, 0x20000, CRC(2168e4ba) SHA1(ca7ad6acb5f806ce2528e7b52c19e8cceecb8543) )
1729 ROM_RELOAD( 0x10000, 0x20000 )
1730
1731 ROM_REGION( 0x700000, REGION_GFX1, ROMREGION_DISPOSE ) /* Sprites */
1732 ROM_LOAD( "u14.bin", 0x000000, 0x200000, CRC(7d7e8a00) SHA1(9f35f5b54ae928e9bf2aa6ad4604f669857955ec) )
1733 ROM_LOAD( "u24.bin", 0x200000, 0x200000, CRC(5e3ffc9d) SHA1(c284eb9ef56c8e6261fe11f91a10c5c5a56c9803) )
1734 ROM_LOAD( "u15.bin", 0x400000, 0x200000, CRC(a827bfb5) SHA1(6e02436e12085016cf1982c9ae07b6c6dec82f1b) )
1735 ROM_LOAD( "u25.bin", 0x600000, 0x100000, CRC(ef652e0c) SHA1(6dd994a15ced31d1bbd1a3b0e9d8d86eca33e217) )
1736
1737 ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* Layers 0 + 1 */
1738 ROM_LOAD( "u33.bin", 0x000000, 0x200000, CRC(54494e6b) SHA1(f5d090d2d34d908b56b53a246def194929eba990) )
1739
1740 ROM_REGION( 0x080000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* DELTA-T Samples */
1741 ROM_LOAD( "u64.bin", 0x000000, 0x080000, CRC(e187ed4f) SHA1(05060723d89b1d05714447a14b5f5888ff3c2306) )
1742
1743 ROM_REGION( 0x100000, REGION_SOUND2, ROMREGION_SOUNDONLY ) /* ADPCM Samples */
1744 ROM_LOAD( "u56.bin", 0x000000, 0x100000, CRC(9e07104d) SHA1(3bc54cb755bb3194197706965b532d62b48c4d12) )
1745
1746 ROM_REGION( 0x040000, REGION_USER1, 0 ) /* Sprites LUT */
1747 ROM_LOAD( "u3.bin", 0x000000, 0x040000, CRC(0905aeb2) SHA1(8cca09f7dfe3f804e77515f7b1b1bdbeb7bb3d80) )
1748
1749 ROM_END
1750
1751 ROM_START( gunbirdk )
1752
1753 ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Main CPU Code */
1754 ROM_LOAD32_WORD_SWAP( "1k-u46.bin", 0x000000, 0x080000, CRC(745cee52) SHA1(6c5bb92c92c55f882484417bc1aa580684019610) ) /* 1&0*/
1755 ROM_LOAD32_WORD_SWAP( "2k-u39.bin", 0x000002, 0x080000, CRC(669632fb) SHA1(885dea42e6da35e9166a208b18dbd930642c26cd) ) /* 3&2*/
1756
1757 ROM_REGION( 0x030000, REGION_CPU2, 0 ) /* Sound CPU Code */
1758 ROM_LOAD( "k3-u71.bin", 0x00000, 0x20000, CRC(11994055) SHA1(619776c178361f23de37ff14e87284ec0f1f4f10) )
1759 ROM_RELOAD( 0x10000, 0x20000 )
1760
1761 ROM_REGION( 0x700000, REGION_GFX1, ROMREGION_DISPOSE ) /* Sprites */
1762 ROM_LOAD( "u14.bin", 0x000000, 0x200000, CRC(7d7e8a00) SHA1(9f35f5b54ae928e9bf2aa6ad4604f669857955ec) )
1763 ROM_LOAD( "u24.bin", 0x200000, 0x200000, CRC(5e3ffc9d) SHA1(c284eb9ef56c8e6261fe11f91a10c5c5a56c9803) )
1764 ROM_LOAD( "u15.bin", 0x400000, 0x200000, CRC(a827bfb5) SHA1(6e02436e12085016cf1982c9ae07b6c6dec82f1b) )
1765 ROM_LOAD( "u25.bin", 0x600000, 0x100000, CRC(ef652e0c) SHA1(6dd994a15ced31d1bbd1a3b0e9d8d86eca33e217) )
1766
1767 ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* Layers 0 + 1 */
1768 ROM_LOAD( "u33.bin", 0x000000, 0x200000, CRC(54494e6b) SHA1(f5d090d2d34d908b56b53a246def194929eba990) )
1769
1770 ROM_REGION( 0x080000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* DELTA-T Samples */
1771 ROM_LOAD( "u64.bin", 0x000000, 0x080000, CRC(e187ed4f) SHA1(05060723d89b1d05714447a14b5f5888ff3c2306) )
1772
1773 ROM_REGION( 0x100000, REGION_SOUND2, ROMREGION_SOUNDONLY ) /* ADPCM Samples */
1774 ROM_LOAD( "u56.bin", 0x000000, 0x100000, CRC(9e07104d) SHA1(3bc54cb755bb3194197706965b532d62b48c4d12) )
1775
1776 ROM_REGION( 0x040000, REGION_USER1, 0 ) /* Sprites LUT */
1777 ROM_LOAD( "u3.bin", 0x000000, 0x040000, CRC(0905aeb2) SHA1(8cca09f7dfe3f804e77515f7b1b1bdbeb7bb3d80) )
1778
1779 ROM_END
1780
1781 ROM_START( gunbirdj )
1782
1783 ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Main CPU Code */
1784 ROM_LOAD32_WORD_SWAP( "1-u46.bin", 0x000000, 0x040000, CRC(474abd69) SHA1(27f37333075f9c92849101aad4875e69004d747b) ) /* 1&0*/
1785 ROM_LOAD32_WORD_SWAP( "2-u39.bin", 0x000002, 0x040000, CRC(3e3e661f) SHA1(b5648546f390539b0f727a9a62d1b9516254ae21) ) /* 3&2*/
1786
1787 ROM_REGION( 0x030000, REGION_CPU2, 0 ) /* Sound CPU Code */
1788 ROM_LOAD( "3-u71.bin", 0x00000, 0x20000, CRC(2168e4ba) SHA1(ca7ad6acb5f806ce2528e7b52c19e8cceecb8543) )
1789 ROM_RELOAD( 0x10000, 0x20000 )
1790
1791 ROM_REGION( 0x700000, REGION_GFX1, ROMREGION_DISPOSE ) /* Sprites */
1792 ROM_LOAD( "u14.bin", 0x000000, 0x200000, CRC(7d7e8a00) SHA1(9f35f5b54ae928e9bf2aa6ad4604f669857955ec) )
1793 ROM_LOAD( "u24.bin", 0x200000, 0x200000, CRC(5e3ffc9d) SHA1(c284eb9ef56c8e6261fe11f91a10c5c5a56c9803) )
1794 ROM_LOAD( "u15.bin", 0x400000, 0x200000, CRC(a827bfb5) SHA1(6e02436e12085016cf1982c9ae07b6c6dec82f1b) )
1795 ROM_LOAD( "u25.bin", 0x600000, 0x100000, CRC(ef652e0c) SHA1(6dd994a15ced31d1bbd1a3b0e9d8d86eca33e217) )
1796
1797 ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* Layers 0 + 1 */
1798 ROM_LOAD( "u33.bin", 0x000000, 0x200000, CRC(54494e6b) SHA1(f5d090d2d34d908b56b53a246def194929eba990) )
1799
1800 ROM_REGION( 0x080000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* DELTA-T Samples */
1801 ROM_LOAD( "u64.bin", 0x000000, 0x080000, CRC(e187ed4f) SHA1(05060723d89b1d05714447a14b5f5888ff3c2306) )
1802
1803 ROM_REGION( 0x100000, REGION_SOUND2, ROMREGION_SOUNDONLY ) /* ADPCM Samples */
1804 ROM_LOAD( "u56.bin", 0x000000, 0x100000, CRC(9e07104d) SHA1(3bc54cb755bb3194197706965b532d62b48c4d12) )
1805
1806 ROM_REGION( 0x040000, REGION_USER1, 0 ) /* Sprites LUT */
1807 ROM_LOAD( "u3.bin", 0x000000, 0x040000, CRC(0905aeb2) SHA1(8cca09f7dfe3f804e77515f7b1b1bdbeb7bb3d80) )
1808
1809 ROM_END
1810
1811
1812 ROM_START( btlkroad )
1813
1814 ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Main CPU Code */
1815 ROM_LOAD32_WORD_SWAP( "4-u46.bin", 0x000000, 0x040000, CRC(8a7a28b4) SHA1(f7197be673dfd0ddf46998af81792b81d8fe9fbf) ) /* 1&0*/
1816 ROM_LOAD32_WORD_SWAP( "5-u39.bin", 0x000002, 0x040000, CRC(933561fa) SHA1(f6f3b1e14b1cfeca26ef8260ac4771dc1531c357) ) /* 3&2*/
1817
1818 ROM_REGION( 0x030000, REGION_CPU2, 0 ) /* Sound CPU Code */
1819 ROM_LOAD( "3-u71.bin", 0x00000, 0x20000, CRC(22411fab) SHA1(1094cb51712e40ae65d0082b408572bdec06ae8b) )
1820 ROM_RELOAD( 0x10000, 0x20000 )
1821
1822 ROM_REGION( 0x700000, REGION_GFX1, ROMREGION_DISPOSE ) /* Sprites */
1823 ROM_LOAD( "u14.bin", 0x000000, 0x200000, CRC(282d89c3) SHA1(3b4b17f4a37efa2f7e232488aaba7c77d10c84d2) )
1824 ROM_LOAD( "u24.bin", 0x200000, 0x200000, CRC(bbe9d3d1) SHA1(9da0b0b993e8271a8119e9c2f602e52325983f79) )
1825 ROM_LOAD( "u15.bin", 0x400000, 0x200000, CRC(d4d1b07c) SHA1(232109db8f6e137fbc8826f38a96057067cb19dc) )
1826 /* ROM_LOAD( "u25.bin", CRC(00600000) , 0x100000 NOT PRESENT*/
1827
1828 ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* Layers 0 + 1 */
1829 ROM_LOAD( "u33.bin", 0x000000, 0x200000, CRC(4c8577f1) SHA1(d27043514632954a06667ac63f4a4e4a31870511) )
1830
1831 ROM_REGION( 0x080000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* DELTA-T Samples */
1832 ROM_LOAD( "u64.bin", 0x000000, 0x080000, CRC(0f33049f) SHA1(ca4fd5f3906685ace1af40b75f5678231d7324e8) )
1833
1834 ROM_REGION( 0x100000, REGION_SOUND2, ROMREGION_SOUNDONLY ) /* ADPCM Samples */
1835 ROM_LOAD( "u56.bin", 0x000000, 0x100000, CRC(51d73682) SHA1(562038d08e9a4389ffa39f3a659b2a29b94dc156) )
1836
1837 ROM_REGION( 0x040000, REGION_USER1, 0 ) /* Sprites LUT */
1838 ROM_LOAD( "u3.bin", 0x000000, 0x040000, CRC(30d541ed) SHA1(6f7fb5f5ecbce7c086185392de164ebb6887e780) )
1839
1840 ROM_END
1841
1842
1843
1844 DRIVER_INIT( gunbird )
1845 {
1846 /* input ports */
1847 install_mem_read32_handler(0, 0xc00000, 0xc0000b, gunbird_input_r);
1848
1849 /* sound latch */
1850 install_mem_write32_handler(0, 0xc00010, 0xc00013, psikyo_soundlatch_w);
1851
1852 psikyo_ka302c_banking = 1;
1853 }
1854
1855
1856 /***************************************************************************
1857
1858 Strikers 1945 (Japan, unprotected)
1859
1860 Board: SH403 (Similiar to KA302C)
1861 CPU: MC68EC020FG16
1862 Sound: LZ8420M (Z80 core) + YMF286-K?
1863 OSC: 16.000, 14.31818 MHz
1864
1865 Chips: PS2001B
1866 PS3103
1867 PS3204
1868 PS3305
1869
1870 ***************************************************************************/
1871
1872 ROM_START( s1945jn )
1873
1874 ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Main CPU Code */
1875 ROM_LOAD32_WORD_SWAP( "1-u46.bin", 0x000000, 0x080000, CRC(45fa8086) SHA1(f1753b9420596f4b828c77e877a044ba5fb01b28) ) /* 1&0*/
1876 ROM_LOAD32_WORD_SWAP( "2-u39.bin", 0x000002, 0x080000, CRC(0152ab8c) SHA1(2aef4cb88341b35f20bb551716f1e5ac2731e9ba) ) /* 3&2*/
1877
1878 ROM_REGION( 0x030000, REGION_CPU2, 0 ) /* Sound CPU Code */
CRC(e3e366bd)1879 ROM_LOAD( "3-u71.bin", 0x00000, 0x20000, CRC(e3e366bd) SHA1(1f5b5909745802e263a896265ea365df76d3eaa5) )
1880 ROM_RELOAD( 0x10000, 0x20000 )
1881
1882 ROM_REGION( 0x800000, REGION_GFX1, ROMREGION_DISPOSE ) /* Sprites */
1883 ROM_LOAD( "u20.bin", 0x000000, 0x200000, CRC(28a27fee) SHA1(913f3bc4d0c6fb6b776a020c8099bf96f16fd06f) )
1884 ROM_LOAD( "u22.bin", 0x200000, 0x200000, CRC(ca152a32) SHA1(63efee83cb5982c77ca473288b3d1a96b89e6388) )
1885 ROM_LOAD( "u21.bin", 0x400000, 0x200000, CRC(c5d60ea9) SHA1(e5ce90788211c856172e5323b01b2c7ab3d3fe50) )
1886 ROM_LOAD( "u23.bin", 0x600000, 0x200000, CRC(48710332) SHA1(db38b732a09b31ce55a96ec62987baae9b7a00c1) )
1887
1888 ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* Layer 0 + 1 */
1889 ROM_LOAD( "u34.bin", 0x000000, 0x200000, CRC(aaf83e23) SHA1(1c75d09ff42c0c215f8c66c699ca75688c95a05e) )
1890
1891 ROM_REGION( 0x080000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* DELTA-T Samples */
1892 ROM_LOAD( "u64.bin", 0x000000, 0x080000, CRC(a44a4a9b) SHA1(5378256752d709daed0b5f4199deebbcffe84e10) )
1893
1894 ROM_REGION( 0x100000, REGION_SOUND2, ROMREGION_SOUNDONLY ) /* ADPCM Samples */
1895 ROM_LOAD( "u56.bin", 0x000000, 0x100000, CRC(fe1312c2) SHA1(8339a96a0885518d6e22cb3bdb9c2f82d011d86d) )
1896
1897 ROM_REGION( 0x040000, REGION_USER1, 0 ) /* */
1898 ROM_LOAD( "u1.bin", 0x000000, 0x040000, CRC(dee22654) SHA1(5df05b0029ff7b1f7f04b41da7823d2aa8034bd2) )
1899
1900 ROM_END
1901
1902 DRIVER_INIT( s1945jn )
1903 {
1904 /* input ports */
1905 install_mem_read32_handler(0, 0xc00000, 0xc0000b, gunbird_input_r);
1906
1907 /* sound latch */
1908 install_mem_write32_handler(0, 0xc00010, 0xc00013, s1945_soundlatch_w);
1909
1910 psikyo_ka302c_banking = 1;
1911 }
1912
1913
1914 /***************************************************************************
1915
1916 Strikers 1945 (Japan)
1917
1918 Board: SH404
1919 CPU: MC68EC020FG16
1920 Sound: LZ8420M (Z80 core)
1921 YMF278B-F
1922 OSC: 16.000MHz
1923 14.3181MHz
1924 33.8688MHz (YMF)
1925 4.000MHz (PIC)
1926
1927 Chips: PS2001B
1928 PS3103
1929 PS3204
1930 PS3305
1931
1932
1933 1-U59 security (PIC16C57; not dumped)
1934
1935 ***************************************************************************/
1936
1937 ROM_START( s1945 )
1938
1939 ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Main CPU Code */
1940 ROM_LOAD32_WORD_SWAP( "2s.u40", 0x000000, 0x040000, CRC(9b10062a) SHA1(cf963bba157422b659d8d64b4493eb7d69cd07b7) ) /* 1&0*/
CRC(f87e871a)1941 ROM_LOAD32_WORD_SWAP( "3s.u41", 0x000002, 0x040000, CRC(f87e871a) SHA1(567167c7fcfb622f78e211d74b04060c3d29d6b7) ) /* 3&2*/
1942
1943 ROM_REGION( 0x030000, REGION_CPU2, 0 ) /* Sound CPU Code */
1944 ROM_LOAD( "3-u63.bin", 0x00000, 0x20000, CRC(42d40ae1) SHA1(530a5a3f78ac489b84a631ea6ce21010a4f4d31b) )
1945 ROM_RELOAD( 0x10000, 0x20000 )
1946
1947 ROM_REGION( 0x000100, REGION_CPU3, 0 ) /* MCU? */
1948 /* ROM_LOAD( "4-u59.bin", 0x00000, 0x00100, NO_DUMP )*/
1949
1950 ROM_REGION( 0x800000, REGION_GFX1, ROMREGION_DISPOSE ) /* Sprites */
1951 ROM_LOAD( "u20.bin", 0x000000, 0x200000, CRC(28a27fee) SHA1(913f3bc4d0c6fb6b776a020c8099bf96f16fd06f) )
1952 ROM_LOAD( "u22.bin", 0x200000, 0x200000, CRC(ca152a32) SHA1(63efee83cb5982c77ca473288b3d1a96b89e6388) )
1953 ROM_LOAD( "u21.bin", 0x400000, 0x200000, CRC(c5d60ea9) SHA1(e5ce90788211c856172e5323b01b2c7ab3d3fe50) )
1954 ROM_LOAD( "u23.bin", 0x600000, 0x200000, CRC(48710332) SHA1(db38b732a09b31ce55a96ec62987baae9b7a00c1) )
1955
1956 ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* Layer 0 + 1 */
1957 ROM_LOAD( "u34.bin", 0x000000, 0x200000, CRC(aaf83e23) SHA1(1c75d09ff42c0c215f8c66c699ca75688c95a05e) )
1958
1959 ROM_REGION( 0x200000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* Samples */
1960 ROM_LOAD( "u61.bin", 0x000000, 0x200000, CRC(a839cf47) SHA1(e179eb505c80d5bb3ccd9e228f2cf428c62b72ee) ) /* 8 bit signed pcm (16KHz)*/
1961
1962 ROM_REGION( 0x040000, REGION_USER1, 0 ) /* */
1963 ROM_LOAD( "u1.bin", 0x000000, 0x040000, CRC(dee22654) SHA1(5df05b0029ff7b1f7f04b41da7823d2aa8034bd2) )
1964
1965 ROM_END
1966
1967 ROM_START( s1945j )
1968
1969 ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Main CPU Code */
1970 ROM_LOAD32_WORD_SWAP( "1-u40.bin", 0x000000, 0x040000, CRC(c00eb012) SHA1(080dae010ca83548ebdb3324585d15e48baf0541) ) /* 1&0*/
1971 ROM_LOAD32_WORD_SWAP( "2-u41.bin", 0x000002, 0x040000, CRC(3f5a134b) SHA1(18bb3bb1e1adadcf522795f5cf7d4dc5a5dd1f30) ) /* 3&2*/
1972
1973 ROM_REGION( 0x030000, REGION_CPU2, 0 ) /* Sound CPU Code */
1974 ROM_LOAD( "3-u63.bin", 0x00000, 0x20000, CRC(42d40ae1) SHA1(530a5a3f78ac489b84a631ea6ce21010a4f4d31b) )
1975 ROM_RELOAD( 0x10000, 0x20000 )
1976
1977 ROM_REGION( 0x000100, REGION_CPU3, 0 ) /* MCU */
1978 /* ROM_LOAD( "4-u59.bin", 0x00000, 0x00100, NO_DUMP )*/
1979
1980 ROM_REGION( 0x800000, REGION_GFX1, ROMREGION_DISPOSE ) /* Sprites */
1981 ROM_LOAD( "u20.bin", 0x000000, 0x200000, CRC(28a27fee) SHA1(913f3bc4d0c6fb6b776a020c8099bf96f16fd06f) )
1982 ROM_LOAD( "u22.bin", 0x200000, 0x200000, CRC(ca152a32) SHA1(63efee83cb5982c77ca473288b3d1a96b89e6388) )
1983 ROM_LOAD( "u21.bin", 0x400000, 0x200000, CRC(c5d60ea9) SHA1(e5ce90788211c856172e5323b01b2c7ab3d3fe50) )
1984 ROM_LOAD( "u23.bin", 0x600000, 0x200000, CRC(48710332) SHA1(db38b732a09b31ce55a96ec62987baae9b7a00c1) )
1985
1986 ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* Layer 0 + 1 */
1987 ROM_LOAD( "u34.bin", 0x000000, 0x200000, CRC(aaf83e23) SHA1(1c75d09ff42c0c215f8c66c699ca75688c95a05e) )
1988
1989 ROM_REGION( 0x200000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* Samples */
1990 ROM_LOAD( "u61.bin", 0x000000, 0x200000, CRC(a839cf47) SHA1(e179eb505c80d5bb3ccd9e228f2cf428c62b72ee) ) /* 8 bit signed pcm (16KHz)*/
1991
1992 ROM_REGION( 0x040000, REGION_USER1, 0 ) /* */
1993 ROM_LOAD( "u1.bin", 0x000000, 0x040000, CRC(dee22654) SHA1(5df05b0029ff7b1f7f04b41da7823d2aa8034bd2) )
1994
1995 ROM_END
1996
1997 DRIVER_INIT( s1945 )
1998 {
1999 /* input ports */
2000 install_mem_read32_handler(0, 0xc00000, 0xc0000b, s1945_input_r);
2001
2002 /* sound latch */
2003 install_mem_write32_handler(0, 0xc00010, 0xc00013, s1945_soundlatch_w);
2004
2005 /* protection and tile bank switching */
2006 install_mem_write32_handler(0, 0xc00004, 0xc0000b, s1945_mcu_w);
2007 s1945_mcu_init(s1945_table);
2008
2009 psikyo_ka302c_banking = 0; /* Banking is controlled by mcu*/
2010 }
2011
DRIVER_INIT(s1945j)2012 DRIVER_INIT( s1945j )
2013 {
2014 /* input ports*/
2015 install_mem_read32_handler(0, 0xc00000, 0xc0000b, s1945_input_r);
2016
2017 /* sound latch */
2018 install_mem_write32_handler(0, 0xc00010, 0xc00013, s1945_soundlatch_w);
2019
2020 /* protection and tile bank switching */
2021 install_mem_write32_handler(0, 0xc00004, 0xc0000b, s1945_mcu_w);
2022 s1945_mcu_init(s1945j_table);
2023
2024 psikyo_ka302c_banking = 0; /* Banking is controlled by mcu*/
2025 }
2026
2027 /***************************************************************************
2028
2029 Tengai (World) / Sengoku Blade (Japan)
2030
2031 Board: SH404
2032 CPU: MC68EC020FG16
2033 Sound: LZ8420M (Z80 core)
2034 YMF278B-F
2035 OSC: 16.000MHz
2036 14.3181MHz
2037 33.8688MHz (YMF)
2038 4.000MHz (PIC)
2039 Chips: PS2001B
2040 PS3103
2041 PS3204
2042 PS3305
2043
2044 4-U59 security (PIC16C57; not dumped)
2045
2046 ***************************************************************************/
2047
2048 ROM_START( tengai )
2049
2050 ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Main CPU Code */
CRC(ab6fe58a)2051 ROM_LOAD32_WORD_SWAP( "2-u40.bin", 0x000000, 0x080000, CRC(ab6fe58a) SHA1(6687a3af192b3eab60d75ca286ebb8e0636297b5) ) /* 1&0*/
2052 ROM_LOAD32_WORD_SWAP( "3-u41.bin", 0x000002, 0x080000, CRC(02e42e39) SHA1(6cdb7b1cebab50c0a44cd60cd437f0e878ccac5c) ) /* 3&2*/
2053
2054 ROM_REGION( 0x030000, REGION_CPU2, 0 ) /* Sound CPU Code */
2055 ROM_LOAD( "1-u63.bin", 0x00000, 0x20000, CRC(2025e387) SHA1(334b0eb3b416d46ccaadff3eee6f1abba63285fb) )
2056 ROM_RELOAD( 0x10000, 0x20000 )
2057
2058 ROM_REGION( 0x000100, REGION_CPU3, 0 ) /* MCU */
2059 /* ROM_LOAD( "4-u59.bin", 0x00000, 0x00100, NO_DUMP )*/
2060
2061 ROM_REGION( 0x600000, REGION_GFX1, ROMREGION_DISPOSE ) /* Sprites */
2062 ROM_LOAD16_WORD_SWAP( "u20.bin", 0x000000, 0x200000, CRC(ed42ef73) SHA1(74693fcc83a2654ddb18fd513d528033863d6116) )
2063 ROM_LOAD16_WORD_SWAP( "u22.bin", 0x200000, 0x200000, CRC(8d21caee) SHA1(2a68af8b2be2158dcb152c434e91a75871478d41) )
2064 ROM_LOAD16_WORD_SWAP( "u21.bin", 0x400000, 0x200000, CRC(efe34eed) SHA1(7891495b443a5acc7b2f17fe694584f6cb0afacc) )
2065
2066 ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) /* Layer 0 + 1 */
2067 ROM_LOAD16_WORD_SWAP( "u34.bin", 0x000000, 0x400000, CRC(2a2e2eeb) SHA1(f1d99353c0affc5c908985e6f2a5724e5223cccc) ) /* four banks of 0x100000 */
2068
2069 ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* Samples */
2070 ROM_LOAD( "u61.bin", 0x000000, 0x200000, CRC(a63633c5) SHA1(89e75a40518926ebcc7d88dea86c01ba0bb496e5) ) /* 8 bit signed pcm (16KHz)*/
2071 ROM_LOAD( "u62.bin", 0x200000, 0x200000, CRC(3ad0c357) SHA1(35f78cfa2eafa93ab96b24e336f569ee84af06b6) )
2072
2073 ROM_REGION( 0x040000, REGION_USER1, 0 ) /* Sprites LUT */
2074 ROM_LOAD( "u1.bin", 0x000000, 0x040000, CRC(681d7d55) SHA1(b0b28471440d747adbc4d22d1918f89f6ede1615) )
2075
2076 ROM_END
2077
2078 DRIVER_INIT( tengai )
2079 {
2080 /* input ports */
2081 install_mem_read32_handler(0, 0xc00000, 0xc0000b, s1945_input_r);
2082
2083 /* sound latch */
2084 install_mem_write32_handler(0, 0xc00010, 0xc00013, s1945_soundlatch_w);
2085
2086 /* protection */
2087 install_mem_write32_handler(0, 0xc00004, 0xc0000b, s1945_mcu_w);
2088 s1945_mcu_init(0);
2089
2090 psikyo_ka302c_banking = 0; /* Banking is controlled by mcu*/
2091 }
2092
2093
2094 /***************************************************************************
2095
2096
2097 Game Drivers
2098
2099
2100 ***************************************************************************/
2101
2102 /* Working Games */
2103 GAME ( 1993, samuraia, 0, sngkace, samuraia, sngkace, ROT270, "Psikyo", "Samurai Aces (World)" ) /* Banpresto?*/
2104 GAME ( 1993, sngkace, samuraia, sngkace, sngkace, sngkace, ROT270, "Psikyo", "Sengoku Ace (Japan)" ) /* Banpresto?*/
2105 GAME ( 1994, gunbird, 0, gunbird, gunbird, gunbird, ROT270, "Psikyo", "Gunbird (World)" )
2106 GAME ( 1994, gunbirdk, gunbird, gunbird, gunbirdj, gunbird, ROT270, "Psikyo", "Gunbird (Korea)" )
2107 GAME ( 1994, gunbirdj, gunbird, gunbird, gunbirdj, gunbird, ROT270, "Psikyo", "Gunbird (Japan)" )
2108 GAME ( 1994, btlkroad, 0, gunbird, btlkroad, gunbird, ROT0, "Psikyo", "Battle K-Road" )
2109 GAME ( 1995, s1945, 0, s1945, s1945, s1945, ROT270, "Psikyo", "Strikers 1945" )
2110 GAME ( 1995, s1945j, s1945, s1945, s1945j, s1945j, ROT270, "Psikyo", "Strikers 1945 (Japan)" )
2111 GAME ( 1995, s1945jn, s1945, gunbird, s1945j, s1945jn, ROT270, "Psikyo", "Strikers 1945 (Japan, unprotected)" )
2112 GAME ( 1996, tengai, 0, s1945, tengai, tengai, ROT0, "Psikyo", "Tengai - Sengoku Blade - Sengoku Ace Episode II" )
2113