1 /*******************************************************************
2 Rolling Thunder
3 (C) 1986 Namco
4
5 To Do:
6 -----
7 Remove sprite lag (watch the "bullets" signs on the walls during scrolling).
8 Increasing vblank_duration does it but some sprites flicker.
9
10 Add correct dipswitches and potentially fix controls in Wonder Momo.
11
12 Notes:
13 -----
14 PCM roms sample tables:
15 At the beggining of each PCM sound ROM you can find a 2 byte
16 offset to the beggining of each sample in the rom. Since the
17 table is not in sequential order, it is possible that the order
18 of the table is actually the sound number. Each sample ends in
19 a 0xff mark.
20
21 *******************************************************************/
22
23 #include "driver.h"
24 #include "cpu/m6809/m6809.h"
25 #include "cpu/m6800/m6800.h"
26
27 extern unsigned char *rthunder_videoram1, *rthunder_videoram2, *spriteram, *dirtybuffer;
28
29 /*******************************************************************/
30
31 PALETTE_INIT( namcos86 );
32 VIDEO_START( namcos86 );
33 VIDEO_UPDATE( namcos86 );
34 READ_HANDLER( rthunder_videoram1_r );
35 WRITE_HANDLER( rthunder_videoram1_w );
36 READ_HANDLER( rthunder_videoram2_r );
37 WRITE_HANDLER( rthunder_videoram2_w );
38 WRITE_HANDLER( rthunder_scroll0_w );
39 WRITE_HANDLER( rthunder_scroll1_w );
40 WRITE_HANDLER( rthunder_scroll2_w );
41 WRITE_HANDLER( rthunder_scroll3_w );
42 WRITE_HANDLER( rthunder_backcolor_w );
43 WRITE_HANDLER( rthunder_tilebank_select_0_w );
44 WRITE_HANDLER( rthunder_tilebank_select_1_w );
45
46
47
48 /*******************************************************************/
49
50 /* Sampled voices (Modified and Added by Takahiro Nogi. 1999/09/26) */
51
52 /* signed/unsigned 8-bit conversion macros */
53 #define AUDIO_CONV(A) ((A)^0x80)
54
55 static int rt_totalsamples[7];
56 static int rt_decode_mode;
57
58
rt_decode_sample(const struct MachineSound * msound)59 static int rt_decode_sample(const struct MachineSound *msound)
60 {
61 struct GameSamples *samples;
62 unsigned char *src, *scan, *dest, last=0;
63 int size, n = 0, j;
64 int decode_mode;
65
66 j = memory_region_length(REGION_SOUND1);
67 if (j == 0) return 0; /* no samples in this game */
68 else if (j == 0x80000) /* genpeitd */
69 rt_decode_mode = 1;
70 else
71 rt_decode_mode = 0;
72
73 log_cb(RETRO_LOG_DEBUG, LOGPRE "pcm decode mode:%d\n", rt_decode_mode );
74 if (rt_decode_mode != 0) {
75 decode_mode = 6;
76 } else {
77 decode_mode = 4;
78 }
79
80 /* get amount of samples */
81 for ( j = 0; j < decode_mode; j++ ) {
82 src = memory_region(REGION_SOUND1)+ ( j * 0x10000 );
83 rt_totalsamples[j] = ( ( src[0] << 8 ) + src[1] ) / 2;
84 n += rt_totalsamples[j];
85 log_cb(RETRO_LOG_DEBUG, LOGPRE "rt_totalsamples[%d]:%d\n", j, rt_totalsamples[j] );
86 }
87
88 /* calculate the amount of headers needed */
89 size = sizeof( struct GameSamples ) + n * sizeof( struct GameSamples * );
90
91 /* allocate */
92 if ( ( Machine->samples = auto_malloc( size ) ) == NULL )
93 return 1;
94
95 samples = Machine->samples;
96 samples->total = n;
97
98 for ( n = 0; n < samples->total; n++ ) {
99 int indx, start, offs;
100
101 if ( n < rt_totalsamples[0] ) {
102 src = memory_region(REGION_SOUND1);
103 indx = n;
104 } else
105 if ( ( n - rt_totalsamples[0] ) < rt_totalsamples[1] ) {
106 src = memory_region(REGION_SOUND1)+0x10000;
107 indx = n - rt_totalsamples[0];
108 } else
109 if ( ( n - ( rt_totalsamples[0] + rt_totalsamples[1] ) ) < rt_totalsamples[2] ) {
110 src = memory_region(REGION_SOUND1)+0x20000;
111 indx = n - ( rt_totalsamples[0] + rt_totalsamples[1] );
112 } else
113 if ( ( n - ( rt_totalsamples[0] + rt_totalsamples[1] + rt_totalsamples[2] ) ) < rt_totalsamples[3] ) {
114 src = memory_region(REGION_SOUND1)+0x30000;
115 indx = n - ( rt_totalsamples[0] + rt_totalsamples[1] + rt_totalsamples[2] );
116 } else
117 if ( ( n - ( rt_totalsamples[0] + rt_totalsamples[1] + rt_totalsamples[2] + rt_totalsamples[3] ) ) < rt_totalsamples[4] ) {
118 src = memory_region(REGION_SOUND1)+0x40000;
119 indx = n - ( rt_totalsamples[0] + rt_totalsamples[1] + rt_totalsamples[2] + rt_totalsamples[3] );
120 } else
121 if ( ( n - ( rt_totalsamples[0] + rt_totalsamples[1] + rt_totalsamples[2] + rt_totalsamples[3] + rt_totalsamples[4] ) ) < rt_totalsamples[5] ) {
122 src = memory_region(REGION_SOUND1)+0x50000;
123 indx = n - ( rt_totalsamples[0] + rt_totalsamples[1] + rt_totalsamples[2] + rt_totalsamples[3] + rt_totalsamples[4] );
124 } else {
125 src = memory_region(REGION_SOUND1)+0x60000;
126 indx = n - ( rt_totalsamples[0] + rt_totalsamples[1] + rt_totalsamples[2] + rt_totalsamples[3] + rt_totalsamples[4] + rt_totalsamples[5] );
127 }
128
129 /* calculate header offset */
130 offs = indx * 2;
131
132 /* get sample start offset */
133 start = ( src[offs] << 8 ) + src[offs+1];
134
135 /* calculate the sample size */
136 scan = &src[start];
137 size = 0;
138
139 while ( *scan != 0xff ) {
140 if ( *scan == 0x00 ) { /* run length encoded data start tag */
141 /* get RLE size */
142 size += scan[1] + 1;
143 scan += 2;
144 } else {
145 size++;
146 scan++;
147 }
148 }
149
150 /* allocate sample */
151 if ( ( samples->sample[n] = auto_malloc( sizeof( struct GameSample ) + size * sizeof( unsigned char ) ) ) == NULL )
152 return 1;
153
154 /* fill up the sample info */
155 samples->sample[n]->length = size;
156 samples->sample[n]->smpfreq = 6000; /* 6 kHz */
157 samples->sample[n]->resolution = 8; /* 8 bit */
158
159 /* unpack sample */
160 dest = (unsigned char *)samples->sample[n]->data;
161 scan = &src[start];
162
163 while ( *scan != 0xff ) {
164 if ( *scan == 0x00 ) { /* run length encoded data start tag */
165 int i;
166 for ( i = 0; i <= scan[1]; i++ ) /* unpack RLE */
167 *dest++ = last;
168
169 scan += 2;
170 } else {
171 last = AUDIO_CONV( scan[0] );
172 *dest++ = last;
173 scan++;
174 }
175 }
176 }
177
178 return 0; /* no errors */
179 }
180
181
182 /* play voice sample (Modified and Added by Takahiro Nogi. 1999/09/26) */
183 static int voice[2];
184
namco_voice_play(int offset,int data,int ch)185 static void namco_voice_play( int offset, int data, int ch ) {
186
187 if ( voice[ch] == -1 )
188 sample_stop( ch );
189 else
190 sample_start( ch, voice[ch], 0 );
191 }
192
WRITE_HANDLER(namco_voice0_play_w)193 static WRITE_HANDLER( namco_voice0_play_w ) {
194
195 namco_voice_play(offset, data, 0);
196 }
197
WRITE_HANDLER(namco_voice1_play_w)198 static WRITE_HANDLER( namco_voice1_play_w ) {
199
200 namco_voice_play(offset, data, 1);
201 }
202
203 /* select voice sample (Modified and Added by Takahiro Nogi. 1999/09/26) */
namco_voice_select(int offset,int data,int ch)204 static void namco_voice_select( int offset, int data, int ch ) {
205
206 log_cb(RETRO_LOG_DEBUG, LOGPRE "Voice %d mode: %d select: %02x\n", ch, rt_decode_mode, data );
207
208 if ( data == 0 )
209 sample_stop( ch );
210
211 if (rt_decode_mode != 0) {
212 switch ( data & 0xe0 ) {
213 case 0x00:
214 break;
215
216 case 0x20:
217 data &= 0x1f;
218 data += rt_totalsamples[0];
219 break;
220
221 case 0x40:
222 data &= 0x1f;
223 data += rt_totalsamples[0] + rt_totalsamples[1];
224 break;
225
226 case 0x60:
227 data &= 0x1f;
228 data += rt_totalsamples[0] + rt_totalsamples[1] + rt_totalsamples[2];
229 break;
230
231 case 0x80:
232 data &= 0x1f;
233 data += rt_totalsamples[0] + rt_totalsamples[1] + rt_totalsamples[2] + rt_totalsamples[3];
234 break;
235
236 case 0xa0:
237 data &= 0x1f;
238 data += rt_totalsamples[0] + rt_totalsamples[1] + rt_totalsamples[2] + rt_totalsamples[3] + rt_totalsamples[4];
239 break;
240
241 case 0xc0:
242 data &= 0x1f;
243 data += rt_totalsamples[0] + rt_totalsamples[1] + rt_totalsamples[2] + rt_totalsamples[3] + rt_totalsamples[4] + rt_totalsamples[5];
244 break;
245
246 case 0xe0:
247 data &= 0x1f;
248 data += rt_totalsamples[0] + rt_totalsamples[1] + rt_totalsamples[2] + rt_totalsamples[3] + rt_totalsamples[4] + rt_totalsamples[5] + rt_totalsamples[6];
249 break;
250 }
251 } else {
252 switch ( data & 0xc0 ) {
253 case 0x00:
254 break;
255
256 case 0x40:
257 data &= 0x3f;
258 data += rt_totalsamples[0];
259 break;
260
261 case 0x80:
262 data &= 0x3f;
263 data += rt_totalsamples[0] + rt_totalsamples[1];
264 break;
265
266 case 0xc0:
267 data &= 0x3f;
268 data += rt_totalsamples[0] + rt_totalsamples[1] + rt_totalsamples[2];
269 break;
270 }
271 }
272
273 voice[ch] = data - 1;
274 }
275
WRITE_HANDLER(namco_voice0_select_w)276 static WRITE_HANDLER( namco_voice0_select_w ) {
277
278 namco_voice_select(offset, data, 0);
279 }
280
WRITE_HANDLER(namco_voice1_select_w)281 static WRITE_HANDLER( namco_voice1_select_w ) {
282
283 namco_voice_select(offset, data, 1);
284 }
285 /*******************************************************************/
286
287 /* shared memory area with the mcu */
288 static unsigned char *shared1;
READ_HANDLER(shared1_r)289 static READ_HANDLER( shared1_r ) { return shared1[offset]; }
WRITE_HANDLER(shared1_w)290 static WRITE_HANDLER( shared1_w ) { shared1[offset] = data; }
291
292
293
WRITE_HANDLER(spriteram_w)294 static WRITE_HANDLER( spriteram_w )
295 {
296 spriteram[offset] = data;
297 }
READ_HANDLER(spriteram_r)298 static READ_HANDLER( spriteram_r )
299 {
300 return spriteram[offset];
301 }
302
WRITE_HANDLER(bankswitch1_w)303 static WRITE_HANDLER( bankswitch1_w )
304 {
305 unsigned char *base = memory_region(REGION_CPU1) + 0x10000;
306
307 /* if the ROM expansion module is available, don't do anything. This avoids conflict */
308 /* with bankswitch1_ext_w() in wndrmomo */
309 if (memory_region(REGION_USER1)) return;
310
311 cpu_setbank(1,base + ((data & 0x03) * 0x2000));
312 }
313
WRITE_HANDLER(bankswitch1_ext_w)314 static WRITE_HANDLER( bankswitch1_ext_w )
315 {
316 unsigned char *base = memory_region(REGION_USER1);
317
318 if (base == 0) return;
319
320 cpu_setbank(1,base + ((data & 0x1f) * 0x2000));
321 }
322
WRITE_HANDLER(bankswitch2_w)323 static WRITE_HANDLER( bankswitch2_w )
324 {
325 unsigned char *base = memory_region(REGION_CPU2) + 0x10000;
326
327 cpu_setbank(2,base + ((data & 0x03) * 0x2000));
328 }
329
330 /* Stubs to pass the correct Dip Switch setup to the MCU */
READ_HANDLER(dsw0_r)331 static READ_HANDLER( dsw0_r )
332 {
333 int rhi, rlo;
334
335 rhi = ( readinputport( 2 ) & 0x01 ) << 4;
336 rhi |= ( readinputport( 2 ) & 0x04 ) << 3;
337 rhi |= ( readinputport( 2 ) & 0x10 ) << 2;
338 rhi |= ( readinputport( 2 ) & 0x40 ) << 1;
339
340 rlo = ( readinputport( 3 ) & 0x01 );
341 rlo |= ( readinputport( 3 ) & 0x04 ) >> 1;
342 rlo |= ( readinputport( 3 ) & 0x10 ) >> 2;
343 rlo |= ( readinputport( 3 ) & 0x40 ) >> 3;
344
345 return ~( rhi | rlo ) & 0xff; /* Active Low */
346 }
347
READ_HANDLER(dsw1_r)348 static READ_HANDLER( dsw1_r )
349 {
350 int rhi, rlo;
351
352 rhi = ( readinputport( 2 ) & 0x02 ) << 3;
353 rhi |= ( readinputport( 2 ) & 0x08 ) << 2;
354 rhi |= ( readinputport( 2 ) & 0x20 ) << 1;
355 rhi |= ( readinputport( 2 ) & 0x80 );
356
357 rlo = ( readinputport( 3 ) & 0x02 ) >> 1;
358 rlo |= ( readinputport( 3 ) & 0x08 ) >> 2;
359 rlo |= ( readinputport( 3 ) & 0x20 ) >> 3;
360 rlo |= ( readinputport( 3 ) & 0x80 ) >> 4;
361
362 return ~( rhi | rlo ) & 0xff; /* Active Low */
363 }
364
365 static int int_enabled[2];
366
WRITE_HANDLER(int_ack1_w)367 static WRITE_HANDLER( int_ack1_w )
368 {
369 int_enabled[0] = 1;
370 }
371
WRITE_HANDLER(int_ack2_w)372 static WRITE_HANDLER( int_ack2_w )
373 {
374 int_enabled[1] = 1;
375 }
376
INTERRUPT_GEN(namco86_interrupt1)377 static INTERRUPT_GEN( namco86_interrupt1 )
378 {
379 if (int_enabled[0])
380 {
381 int_enabled[0] = 0;
382 cpu_set_irq_line(0, 0, HOLD_LINE);
383 }
384 }
385
INTERRUPT_GEN(namco86_interrupt2)386 static INTERRUPT_GEN( namco86_interrupt2 )
387 {
388 if (int_enabled[1])
389 {
390 int_enabled[1] = 0;
391 cpu_set_irq_line(1, 0, HOLD_LINE);
392 }
393 }
394
WRITE_HANDLER(namcos86_coin_w)395 static WRITE_HANDLER( namcos86_coin_w )
396 {
397 coin_lockout_global_w(data & 1);
398 coin_counter_w(0,~data & 2);
399 coin_counter_w(1,~data & 4);
400 }
401
WRITE_HANDLER(namcos86_led_w)402 static WRITE_HANDLER( namcos86_led_w )
403 {
404 set_led_status(0,data & 0x08);
405 set_led_status(1,data & 0x10);
406 }
407
408
409 /*******************************************************************/
410
MEMORY_READ_START(readmem1)411 static MEMORY_READ_START( readmem1 )
412 { 0x0000, 0x1fff, rthunder_videoram1_r },
413 { 0x2000, 0x3fff, rthunder_videoram2_r },
414 { 0x4000, 0x40ff, namcos1_wavedata_r }, /* PSG device, shared RAM */
415 { 0x4100, 0x413f, namcos1_sound_r }, /* PSG device, shared RAM */
416 { 0x4000, 0x43ff, shared1_r },
417 { 0x4400, 0x5fff, spriteram_r },
418 { 0x6000, 0x7fff, MRA_BANK1 },
419 { 0x8000, 0xffff, MRA_ROM },
420 MEMORY_END
421
422 static MEMORY_WRITE_START( writemem1 )
423 { 0x0000, 0x1fff, rthunder_videoram1_w, &rthunder_videoram1 },
424 { 0x2000, 0x3fff, rthunder_videoram2_w, &rthunder_videoram2 },
425
426 { 0x4000, 0x40ff, namcos1_wavedata_w, &namco_wavedata }, /* PSG device, shared RAM */
427 { 0x4100, 0x413f, namcos1_sound_w, &namco_soundregs }, /* PSG device, shared RAM */
428 { 0x4000, 0x43ff, shared1_w, &shared1 },
429
430 { 0x4400, 0x5fff, spriteram_w, &spriteram },
431
432 { 0x6000, 0x6000, namco_voice0_play_w },
433 { 0x6200, 0x6200, namco_voice0_select_w },
434 { 0x6400, 0x6400, namco_voice1_play_w },
435 { 0x6600, 0x6600, namco_voice1_select_w },
436 { 0x6800, 0x6800, bankswitch1_ext_w },
437 /* { 0x6c00, 0x6c00, MWA_NOP }, // ??? /*/
438 /* { 0x6e00, 0x6e00, MWA_NOP }, // ??? /*/
439
440 { 0x8000, 0x8000, watchdog_reset_w },
441 { 0x8400, 0x8400, int_ack1_w }, /* IRQ acknowledge */
442 { 0x8800, 0x8800, rthunder_tilebank_select_0_w },
443 { 0x8c00, 0x8c00, rthunder_tilebank_select_1_w },
444
445 { 0x9000, 0x9002, rthunder_scroll0_w }, /* scroll + priority */
446 { 0x9003, 0x9003, bankswitch1_w },
447 { 0x9004, 0x9006, rthunder_scroll1_w }, /* scroll + priority */
448
449 { 0x9400, 0x9402, rthunder_scroll2_w }, /* scroll + priority */
450 /* { 0x9403, 0x9403 } sub CPU rom bank select would be here*/
451 { 0x9404, 0x9406, rthunder_scroll3_w }, /* scroll + priority */
452
453 { 0xa000, 0xa000, rthunder_backcolor_w },
454
455 { 0x8000, 0xffff, MWA_ROM },
456 MEMORY_END
457
458
459 #define CPU2_MEMORY(NAME,ADDR_SPRITE,ADDR_VIDEO1,ADDR_VIDEO2,ADDR_ROM,ADDR_BANK,ADDR_WDOG,ADDR_INT) \
460 static MEMORY_READ_START( NAME##_readmem2 ) \
461 { ADDR_SPRITE+0x0000, ADDR_SPRITE+0x03ff, MRA_RAM }, \
462 { ADDR_SPRITE+0x0400, ADDR_SPRITE+0x1fff, spriteram_r }, \
463 { ADDR_VIDEO1+0x0000, ADDR_VIDEO1+0x1fff, rthunder_videoram1_r }, \
464 { ADDR_VIDEO2+0x0000, ADDR_VIDEO2+0x1fff, rthunder_videoram2_r }, \
465 { ADDR_ROM+0x0000, ADDR_ROM+0x1fff, MRA_BANK2 }, \
466 { 0x8000, 0xffff, MRA_ROM }, \
467 MEMORY_END \
468 \
469 static MEMORY_WRITE_START( NAME##_writemem2 ) \
470 { ADDR_SPRITE+0x0000, ADDR_SPRITE+0x03ff, MWA_RAM }, \
471 { ADDR_SPRITE+0x0400, ADDR_SPRITE+0x1fff, spriteram_w }, \
472 { ADDR_VIDEO1+0x0000, ADDR_VIDEO1+0x1fff, rthunder_videoram1_w }, \
473 { ADDR_VIDEO2+0x0000, ADDR_VIDEO2+0x1fff, rthunder_videoram2_w }, \
474 /* { ADDR_BANK+0x00, ADDR_BANK+0x02 } layer 2 scroll registers would be here */ \
475 { ADDR_BANK+0x03, ADDR_BANK+0x03, bankswitch2_w }, \
476 /* { ADDR_BANK+0x04, ADDR_BANK+0x06 } layer 3 scroll registers would be here */ \
477 { ADDR_WDOG, ADDR_WDOG, watchdog_reset_w }, \
478 { ADDR_INT, ADDR_INT, int_ack2_w }, /* IRQ acknowledge */ \
479 { ADDR_ROM+0x0000, ADDR_ROM+0x1fff, MWA_ROM }, \
480 { 0x8000, 0xffff, MWA_ROM }, \
481 MEMORY_END
482
483 #define UNUSED 0x4000
484 /* SPRITE VIDEO1 VIDEO2 ROM BANK WDOG IRQACK */
485 CPU2_MEMORY( hopmappy, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, 0x9000, UNUSED )
486 CPU2_MEMORY( skykiddx, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, 0x9000, 0x9400 )
487 CPU2_MEMORY( roishtar, 0x0000, 0x6000, 0x4000, UNUSED, UNUSED, 0xa000, 0xb000 )
488 CPU2_MEMORY( genpeitd, 0x4000, 0x0000, 0x2000, UNUSED, UNUSED, 0xb000, 0x8800 )
489 CPU2_MEMORY( rthunder, 0x0000, 0x2000, 0x4000, 0x6000, 0xd800, 0x8000, 0x8800 )
490 CPU2_MEMORY( wndrmomo, 0x2000, 0x4000, 0x6000, UNUSED, UNUSED, 0xc000, 0xc800 )
491 #undef UNUSED
492
493
494 #define MCU_MEMORY(NAME,ADDR_LOWROM,ADDR_INPUT,ADDR_UNK1,ADDR_UNK2) \
495 static MEMORY_READ_START( NAME##_mcu_readmem ) \
496 { 0x0000, 0x001f, hd63701_internal_registers_r }, \
497 { 0x0080, 0x00ff, MRA_RAM }, \
498 { 0x1000, 0x10ff, namcos1_wavedata_r }, /* PSG device, shared RAM */ \
499 { 0x1100, 0x113f, namcos1_sound_r }, /* PSG device, shared RAM */ \
500 { 0x1000, 0x13ff, shared1_r }, \
501 { 0x1400, 0x1fff, MRA_RAM }, \
502 { ADDR_INPUT+0x00, ADDR_INPUT+0x01, YM2151_status_port_0_r }, \
503 { ADDR_INPUT+0x20, ADDR_INPUT+0x20, input_port_0_r }, \
504 { ADDR_INPUT+0x21, ADDR_INPUT+0x21, input_port_1_r }, \
505 { ADDR_INPUT+0x30, ADDR_INPUT+0x30, dsw0_r }, \
506 { ADDR_INPUT+0x31, ADDR_INPUT+0x31, dsw1_r }, \
507 { ADDR_LOWROM, ADDR_LOWROM+0x3fff, MRA_ROM }, \
508 { 0x8000, 0xbfff, MRA_ROM }, \
509 { 0xf000, 0xffff, MRA_ROM }, \
510 MEMORY_END \
511 \
512 static MEMORY_WRITE_START( NAME##_mcu_writemem ) \
513 { 0x0000, 0x001f, hd63701_internal_registers_w }, \
514 { 0x0080, 0x00ff, MWA_RAM }, \
515 { 0x1000, 0x10ff, namcos1_wavedata_w }, /* PSG device, shared RAM */ \
516 { 0x1100, 0x113f, namcos1_sound_w }, /* PSG device, shared RAM */ \
517 { 0x1000, 0x13ff, shared1_w }, \
518 { 0x1400, 0x1fff, MWA_RAM }, \
519 { ADDR_INPUT+0x00, ADDR_INPUT+0x00, YM2151_register_port_0_w }, \
520 { ADDR_INPUT+0x01, ADDR_INPUT+0x01, YM2151_data_port_0_w }, \
521 { ADDR_UNK1, ADDR_UNK1, MWA_NOP }, /* ??? written (not always) at end of interrupt */ \
522 { ADDR_UNK2, ADDR_UNK2, MWA_NOP }, /* ??? written (not always) at end of interrupt */ \
523 { ADDR_LOWROM, ADDR_LOWROM+0x3fff, MWA_ROM }, \
524 { 0x8000, 0xbfff, MWA_ROM }, \
525 { 0xf000, 0xffff, MWA_ROM }, \
526 MEMORY_END
527
528 #define UNUSED 0x4000
529 /* LOWROM INPUT UNK1 UNK2 */
530 MCU_MEMORY( hopmappy, UNUSED, 0x2000, 0x8000, 0x8800 )
531 MCU_MEMORY( skykiddx, UNUSED, 0x2000, 0x8000, 0x8800 )
532 MCU_MEMORY( roishtar, 0x0000, 0x6000, 0x8000, 0x9800 )
533 MCU_MEMORY( genpeitd, 0x4000, 0x2800, 0xa000, 0xa800 )
534 MCU_MEMORY( rthunder, 0x4000, 0x2000, 0xb000, 0xb800 )
535 MCU_MEMORY( wndrmomo, 0x4000, 0x3800, 0xc000, 0xc800 )
536 #undef UNUSED
537
538
539 static READ_HANDLER( readFF )
540 {
541 return 0xff;
542 }
543
PORT_READ_START(mcu_readport)544 static PORT_READ_START( mcu_readport )
545 { HD63701_PORT1, HD63701_PORT1, input_port_4_r },
546 { HD63701_PORT2, HD63701_PORT2, readFF }, /* leds won't work otherwise */
547 PORT_END
548
549 static PORT_WRITE_START( mcu_writeport )
550 { HD63701_PORT1, HD63701_PORT1, namcos86_coin_w },
551 { HD63701_PORT2, HD63701_PORT2, namcos86_led_w },
552 PORT_END
553
554
555 /*******************************************************************/
556
557 INPUT_PORTS_START( hopmappy )
558 PORT_START
559 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 3 player 2 */
560 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 2 player 1 */
561 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
562 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
563 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
564 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
565 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
566 PORT_BITX( 0x80, 0x80, IPT_SERVICE, "Service Switch", KEYCODE_F1, IP_JOY_NONE )
567
568 PORT_START
569 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 3 player 1 */
570 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 2 player 2 */
571 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
572 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
573 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
574 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
575 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
576 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
577
578 PORT_START /* DSWA */
579 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_B ) )
580 PORT_DIPSETTING( 0x03, DEF_STR( 3C_1C ) )
581 PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
582 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
583 PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
584 PORT_DIPNAME( 0x04, 0x00, "Allow Continue" )
585 PORT_DIPSETTING( 0x04, DEF_STR( No ) )
586 PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
587 PORT_DIPNAME( 0x18, 0x00, DEF_STR( Lives ) )
588 PORT_DIPSETTING( 0x08, "1" )
589 PORT_DIPSETTING( 0x10, "2" )
590 PORT_DIPSETTING( 0x00, "3" )
591 PORT_DIPSETTING( 0x18, "5" )
592 PORT_DIPNAME( 0x60, 0x00, DEF_STR( Coin_A ) )
593 PORT_DIPSETTING( 0x60, DEF_STR( 3C_1C ) )
594 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
595 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
596 PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
597 PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
598
599 PORT_START /* DSWB */
600 PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
601 PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
602 PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) )
603 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
604 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
605 PORT_DIPSETTING( 0x02, DEF_STR( On ) )
606 PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
607 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
608 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
609 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
610 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
611 PORT_DIPSETTING( 0x08, DEF_STR( On ) )
612 PORT_BITX( 0x10, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Level Select", IP_KEY_NONE, IP_JOY_NONE )
613 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
614 PORT_DIPSETTING( 0x10, DEF_STR( On ) )
615 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Flip_Screen ) )
616 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
617 PORT_DIPSETTING( 0x20, DEF_STR( On ) )
618 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
619 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
620 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
621 PORT_DIPNAME( 0x80, 0x00, DEF_STR( Difficulty ) )
622 PORT_DIPSETTING( 0x00, "Easy" )
623 PORT_DIPSETTING( 0x80, "Hard" )
624
625 PORT_START
626 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin lockout */
627 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin counter 1 */
628 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin counter 2 */
629 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
630 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
631 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
632 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
633 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
634 INPUT_PORTS_END
635
636 INPUT_PORTS_START( skykiddx )
637 PORT_START
638 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 3 player 2 */
639 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
640 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
641 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
642 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
643 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
644 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
645 PORT_BITX( 0x80, 0x80, IPT_SERVICE, "Service Switch", KEYCODE_F1, IP_JOY_NONE )
646
647 PORT_START
648 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 3 player 1 */
649 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
650 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
651 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
652 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
653 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
654 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
655 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
656
657 PORT_START /* DSWA */
658 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_B ) )
659 PORT_DIPSETTING( 0x03, DEF_STR( 3C_1C ) )
660 PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
661 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
662 PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
663 PORT_DIPNAME( 0x04, 0x00, "Freeze" )
664 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
665 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
666 PORT_BITX( 0x08, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Level Select", IP_KEY_NONE, IP_JOY_NONE )
667 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
668 PORT_DIPSETTING( 0x08, DEF_STR( On ) )
669 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) )
670 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
671 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
672 PORT_DIPNAME( 0x60, 0x00, DEF_STR( Coin_A ) )
673 PORT_DIPSETTING( 0x60, DEF_STR( 3C_1C ) )
674 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
675 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
676 PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
677 PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
678
679 PORT_START /* DSWB */
680 PORT_DIPNAME( 0x01, 0x00, DEF_STR( Flip_Screen ) )
681 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
682 PORT_DIPSETTING( 0x01, DEF_STR( On ) )
683 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
684 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
685 PORT_DIPSETTING( 0x02, DEF_STR( On ) )
686 PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
687 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
688 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
689 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
690 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
691 PORT_DIPSETTING( 0x08, DEF_STR( On ) )
692 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
693 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
694 PORT_DIPSETTING( 0x10, DEF_STR( On ) )
695 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Bonus_Life ) )
696 PORT_DIPSETTING( 0x20, "20000 80000" )
697 PORT_DIPSETTING( 0x00, "30000 90000" )
698 PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Lives ) )
699 PORT_DIPSETTING( 0x40, "1" )
700 PORT_DIPSETTING( 0x80, "2" )
701 PORT_DIPSETTING( 0x00, "3" )
702 PORT_DIPSETTING( 0xc0, "5" )
703
704 PORT_START
705 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin lockout */
706 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin counter 1 */
707 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin counter 2 */
708 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
709 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
710 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
711 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
712 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
713 INPUT_PORTS_END
714
715 INPUT_PORTS_START( roishtar )
716 PORT_START
717 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 3 player 2 */
718 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
719 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN | IPF_8WAY )
720 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN | IPF_8WAY )
721 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT | IPF_8WAY )
722 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
723 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
724 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
725
726 PORT_START
727 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 3 player 1 */
728 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
729 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP | IPF_8WAY )
730 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP | IPF_8WAY )
731 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
732 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
733 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
734 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
735
736 PORT_START /* DSWA */
737 PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coin_A ) )
738 PORT_DIPSETTING( 0x07, DEF_STR( 3C_1C ) )
739 PORT_DIPSETTING( 0x05, DEF_STR( 2C_1C ) )
740 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
741 PORT_DIPSETTING( 0x06, DEF_STR( 2C_3C ) )
742 PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
743 PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) )
744 PORT_DIPSETTING( 0x03, DEF_STR( 1C_5C ) )
745 PORT_DIPSETTING( 0x04, DEF_STR( 1C_6C ) )
746 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
747 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
748 PORT_DIPSETTING( 0x08, DEF_STR( On ) )
749 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
750 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
751 PORT_DIPSETTING( 0x10, DEF_STR( On ) )
752 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
753 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
754 PORT_DIPSETTING( 0x20, DEF_STR( On ) )
755 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
756 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
757 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
758 PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
759
760 PORT_START /* DSWB */
761 PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coin_B ) )
762 PORT_DIPSETTING( 0x07, DEF_STR( 3C_1C ) )
763 PORT_DIPSETTING( 0x05, DEF_STR( 2C_1C ) )
764 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
765 PORT_DIPSETTING( 0x06, DEF_STR( 2C_3C ) )
766 PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
767 PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) )
768 PORT_DIPSETTING( 0x03, DEF_STR( 1C_5C ) )
769 PORT_DIPSETTING( 0x04, DEF_STR( 1C_6C ) )
770 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
771 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
772 PORT_DIPSETTING( 0x08, DEF_STR( On ) )
773 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
774 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
775 PORT_DIPSETTING( 0x10, DEF_STR( On ) )
776 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
777 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
778 PORT_DIPSETTING( 0x20, DEF_STR( On ) )
779 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
780 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
781 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
782 PORT_DIPNAME( 0x80, 0x00, "Freeze" )
783 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
784 PORT_DIPSETTING( 0x80, DEF_STR( On ) )
785
786 PORT_START
787 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin lockout */
788 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin counter 1 */
789 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin counter 2 */
790 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
791 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT | IPF_8WAY )
792 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT | IPF_8WAY )
793 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
794 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT | IPF_8WAY )
795 INPUT_PORTS_END
796
797 INPUT_PORTS_START( genpeitd )
798 PORT_START
799 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 3 player 2 */
800 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
801 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
802 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
803 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
804 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
805 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
806 PORT_BITX( 0x80, 0x80, IPT_SERVICE, "Service Switch", KEYCODE_F1, IP_JOY_NONE )
807
808 PORT_START
809 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 3 player 1 */
810 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
811 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
812 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
813 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
814 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
815 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
816 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
817
818 PORT_START /* DSWA */
819 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_B ) )
820 PORT_DIPSETTING( 0x03, DEF_STR( 3C_1C ) )
821 PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
822 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
823 PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
824 PORT_DIPNAME( 0x04, 0x00, "Freeze" )
825 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
826 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
827 PORT_DIPNAME( 0x08, 0x00, "Allow Continue" )
828 PORT_DIPSETTING( 0x08, DEF_STR( No ) )
829 PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
830 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) )
831 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
832 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
833 PORT_DIPNAME( 0x60, 0x00, DEF_STR( Coin_A ) )
834 PORT_DIPSETTING( 0x60, DEF_STR( 3C_1C ) )
835 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
836 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
837 PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
838 PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
839
840 PORT_START /* DSWB */
841 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
842 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
843 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
844 PORT_DIPNAME( 0x02, 0x02, DEF_STR( Cabinet ) )
845 PORT_DIPSETTING( 0x02, DEF_STR( Upright ) )
846 PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
847 PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
848 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
849 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
850 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
851 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
852 PORT_DIPSETTING( 0x08, DEF_STR( On ) )
853 PORT_DIPNAME( 0x30, 0x00, DEF_STR( Difficulty ) )
854 PORT_DIPSETTING( 0x10, "Easy" )
855 PORT_DIPSETTING( 0x00, "Normal" )
856 PORT_DIPSETTING( 0x20, "Hard" )
857 PORT_DIPSETTING( 0x30, "Hardest" )
858 PORT_DIPNAME( 0xc0, 0x00, "Candle" )
859 PORT_DIPSETTING( 0x40, "40" )
860 PORT_DIPSETTING( 0x00, "50" )
861 PORT_DIPSETTING( 0x80, "60" )
862 PORT_DIPSETTING( 0xc0, "70" )
863
864 PORT_START
865 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin lockout */
866 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin counter 1 */
867 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin counter 2 */
868 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
869 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
870 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
871 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
872 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
873 INPUT_PORTS_END
874
875 INPUT_PORTS_START( rthunder )
876 PORT_START
877 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 3 player 2 */
878 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
879 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
880 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY | IPF_PLAYER2 )
881 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER2 )
882 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
883 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
884 PORT_BITX( 0x80, 0x80, IPT_SERVICE, "Service Switch", KEYCODE_F1, IP_JOY_NONE )
885
886 PORT_START
887 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 3 player 1 */
888 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
889 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
890 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY | IPF_PLAYER2 )
891 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
892 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
893 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
894 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
895
896 PORT_START /* DSWA */
897 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_B ) )
898 PORT_DIPSETTING( 0x03, DEF_STR( 3C_1C ) )
899 PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
900 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
901 PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
902 PORT_DIPNAME( 0x04, 0x00, "Freeze" )
903 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
904 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
905 PORT_BITX( 0x08, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
906 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
907 PORT_DIPSETTING( 0x08, DEF_STR( On ) )
908 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) )
909 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
910 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
911 PORT_DIPNAME( 0x60, 0x00, DEF_STR( Coin_A ) )
912 PORT_DIPSETTING( 0x60, DEF_STR( 3C_1C ) )
913 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
914 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
915 PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
916 PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
917
918 PORT_START /* DSWB */
919 PORT_DIPNAME( 0x01, 0x00, "Continues" )
920 PORT_DIPSETTING( 0x01, "3" )
921 PORT_DIPSETTING( 0x00, "6" )
922 PORT_DIPNAME( 0x06, 0x00, DEF_STR( Cabinet ) )
923 PORT_DIPSETTING( 0x00, "Upright 1 Player" )
924 /* PORT_DIPSETTING( 0x04, "Upright 1 Player" ) */
925 PORT_DIPSETTING( 0x02, "Upright 2 Players" )
926 PORT_DIPSETTING( 0x06, DEF_STR( Cocktail ) )
927 PORT_DIPNAME( 0x08, 0x08, "Level Select" )
928 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
929 PORT_DIPSETTING( 0x08, DEF_STR( On ) )
930 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Difficulty ) )
931 PORT_DIPSETTING( 0x00, "Normal" )
932 PORT_DIPSETTING( 0x10, "Easy" )
933 PORT_DIPNAME( 0x20, 0x20, "Timer value" )
934 PORT_DIPSETTING( 0x00, "120 secs" )
935 PORT_DIPSETTING( 0x20, "150 secs" )
936 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Bonus_Life ) )
937 PORT_DIPSETTING( 0x00, "70k, 200k" )
938 PORT_DIPSETTING( 0x40, "100k, 300k" )
939 PORT_DIPNAME( 0x80, 0x00, DEF_STR( Lives ) )
940 PORT_DIPSETTING( 0x00, "3" )
941 PORT_DIPSETTING( 0x80, "5" )
942
943 PORT_START
944 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin lockout */
945 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin counter 1 */
946 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin counter 2 */
947 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
948 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
949 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
950 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
951 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY | IPF_PLAYER2 )
952 INPUT_PORTS_END
953
954 INPUT_PORTS_START( rthundro )
955 PORT_START
956 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 3 player 2 */
957 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
958 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
959 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY | IPF_PLAYER2 )
960 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER2 )
961 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
962 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
963 PORT_BITX( 0x80, 0x80, IPT_SERVICE, "Service Switch", KEYCODE_F1, IP_JOY_NONE )
964
965 PORT_START
966 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 3 player 1 */
967 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
968 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
969 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY | IPF_PLAYER2 )
970 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
971 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
972 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
973 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
974
975 PORT_START /* DSWA */
976 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_B ) )
977 PORT_DIPSETTING( 0x03, DEF_STR( 3C_1C ) )
978 PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
979 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
980 PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
981 PORT_DIPNAME( 0x04, 0x00, "Freeze" )
982 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
983 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
984 PORT_BITX( 0x08, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
985 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
986 PORT_DIPSETTING( 0x08, DEF_STR( On ) )
987 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) )
988 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
989 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
990 PORT_DIPNAME( 0x60, 0x00, DEF_STR( Coin_A ) )
991 PORT_DIPSETTING( 0x60, DEF_STR( 3C_1C ) )
992 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
993 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
994 PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
995 PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
996
997 PORT_START /* DSWB */
998 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
999 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
1000 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1001 PORT_DIPNAME( 0x02, 0x02, DEF_STR( Cabinet ) )
1002 PORT_DIPSETTING( 0x02, DEF_STR( Upright ) )
1003 PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
1004 PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
1005 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1006 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
1007 PORT_BITX( 0x08, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Level Select", IP_KEY_NONE, IP_JOY_NONE )
1008 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1009 PORT_DIPSETTING( 0x08, DEF_STR( On ) )
1010 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
1011 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1012 PORT_DIPSETTING( 0x10, DEF_STR( On ) )
1013 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
1014 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1015 PORT_DIPSETTING( 0x20, DEF_STR( On ) )
1016 PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Lives ) )
1017 PORT_DIPSETTING( 0x40, "1" )
1018 PORT_DIPSETTING( 0x80, "2" )
1019 PORT_DIPSETTING( 0x00, "3" )
1020 PORT_DIPSETTING( 0xc0, "5" )
1021
1022 PORT_START
1023 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin lockout */
1024 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin counter 1 */
1025 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin counter 2 */
1026 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
1027 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
1028 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
1029 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
1030 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY | IPF_PLAYER2 )
1031 INPUT_PORTS_END
1032
1033 INPUT_PORTS_START( wndrmomo )
1034 PORT_START
1035 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 3 player 2 */
1036 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
1037 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
1038 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY | IPF_PLAYER2 )
1039 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER2 )
1040 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
1041 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
1042 PORT_BITX( 0x80, 0x80, IPT_SERVICE, "Service Switch", KEYCODE_F1, IP_JOY_NONE )
1043
1044 PORT_START
1045 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button 3 player 1 */
1046 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
1047 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
1048 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY | IPF_PLAYER2 )
1049 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
1050 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
1051 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
1052 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
1053
1054 PORT_START /* DSWA */
1055 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_B ) )
1056 PORT_DIPSETTING( 0x03, DEF_STR( 3C_1C ) )
1057 PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
1058 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
1059 PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
1060 PORT_DIPNAME( 0x04, 0x00, "Freeze" )
1061 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1062 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
1063 PORT_DIPNAME( 0x08, 0x08, "Level Select" )
1064 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1065 PORT_DIPSETTING( 0x08, DEF_STR( On ) )
1066 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) )
1067 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
1068 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1069 PORT_DIPNAME( 0x60, 0x00, DEF_STR( Coin_A ) )
1070 PORT_DIPSETTING( 0x60, DEF_STR( 3C_1C ) )
1071 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
1072 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
1073 PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
1074 PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
1075
1076 PORT_START /* DSWB */
1077 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
1078 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
1079 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
1080 PORT_DIPNAME( 0x06, 0x00, DEF_STR( Cabinet ) )
1081 PORT_DIPSETTING( 0x00, "Type A" )
1082 PORT_DIPSETTING( 0x02, "Type B" )
1083 PORT_DIPSETTING( 0x04, "Type C" )
1084 /* PORT_DIPSETTING( 0x06, "Type A" )*/
1085 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
1086 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1087 PORT_DIPSETTING( 0x08, DEF_STR( On ) )
1088 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
1089 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1090 PORT_DIPSETTING( 0x10, DEF_STR( On ) )
1091 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
1092 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1093 PORT_DIPSETTING( 0x20, DEF_STR( On ) )
1094 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
1095 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1096 PORT_DIPSETTING( 0x40, DEF_STR( On ) )
1097 PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
1098 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1099 PORT_DIPSETTING( 0x80, DEF_STR( On ) )
1100
1101 PORT_START
1102 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin lockout */
1103 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin counter 1 */
1104 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) /* OUT:coin counter 2 */
1105 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
1106 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
1107 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
1108 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
1109 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY | IPF_PLAYER2 )
1110 INPUT_PORTS_END
1111
1112
1113 /*******************************************************************/
1114
1115 static struct GfxLayout tilelayout =
1116 {
1117 8,8,
1118 RGN_FRAC(1,3),
1119 3,
1120 { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
1121 { 0, 1, 2, 3, 4, 5, 6, 7 },
1122 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1123 8*8
1124 };
1125
1126 #define SPRITELAYOUT(NUM) static struct GfxLayout spritelayout_##NUM = \
1127 { \
1128 16,16, /* 16*16 sprites */ \
1129 NUM, /* NUM sprites */ \
1130 4, /* 4 bits per pixel */ \
1131 { 0, 1, 2, 3 }, \
1132 { 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4, \
1133 8*4, 9*4, 10*4, 11*4, 12*4, 13*4, 14*4, 15*4 }, \
1134 { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, \
1135 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 }, \
1136 16*64 \
1137 }
1138
1139 SPRITELAYOUT(256);
1140 SPRITELAYOUT(512);
1141 SPRITELAYOUT(1024);
1142
1143
1144 #define GFXDECODE(SPRITE) \
1145 static struct GfxDecodeInfo gfxdecodeinfo_##SPRITE[] = \
1146 { \
1147 { REGION_GFX1, 0x00000, &tilelayout, 2048*0, 256 }, \
1148 { REGION_GFX2, 0x00000, &tilelayout, 2048*0, 256 }, \
1149 { REGION_GFX3, 0*128*SPRITE, &spritelayout_##SPRITE, 2048*1, 128 }, \
1150 { REGION_GFX3, 1*128*SPRITE, &spritelayout_##SPRITE, 2048*1, 128 }, \
1151 { REGION_GFX3, 2*128*SPRITE, &spritelayout_##SPRITE, 2048*1, 128 }, \
1152 { REGION_GFX3, 3*128*SPRITE, &spritelayout_##SPRITE, 2048*1, 128 }, \
1153 { REGION_GFX3, 4*128*SPRITE, &spritelayout_##SPRITE, 2048*1, 128 }, \
1154 { REGION_GFX3, 5*128*SPRITE, &spritelayout_##SPRITE, 2048*1, 128 }, \
1155 { REGION_GFX3, 6*128*SPRITE, &spritelayout_##SPRITE, 2048*1, 128 }, \
1156 { REGION_GFX3, 7*128*SPRITE, &spritelayout_##SPRITE, 2048*1, 128 }, \
1157 { -1 } \
1158 };
1159
1160 GFXDECODE( 256)
1161 GFXDECODE( 512)
1162 GFXDECODE(1024)
1163
1164 /*******************************************************************/
1165
1166 static struct YM2151interface ym2151_interface =
1167 {
1168 1, /* 1 chip */
1169 3579580, /* 3.579580 MHz ? */
1170 { YM3012_VOL(0,MIXER_PAN_CENTER,60,MIXER_PAN_CENTER) }, /* only right channel is connected */
1171 { 0 },
1172 { 0 }
1173 };
1174
1175 static struct namco_interface namco_interface =
1176 {
1177 49152000/2048, /* 24000Hz */
1178 8, /* number of voices */
1179 50, /* playback volume */
1180 -1, /* memory region */
1181 0 /* stereo */
1182 };
1183
1184 static struct Samplesinterface samples_interface =
1185 {
1186 2, /* 2 channels for voice effects */
1187 40 /* volume */
1188 };
1189
1190 static struct CustomSound_interface custom_interface =
1191 {
1192 rt_decode_sample,
1193 0,
1194 0
1195 };
1196
1197
MACHINE_INIT(namco86)1198 static MACHINE_INIT( namco86 )
1199 {
1200 unsigned char *base = memory_region(REGION_CPU1) + 0x10000;
1201
1202 cpu_setbank(1,base);
1203
1204 int_enabled[0] = int_enabled[1] = 1;
1205 }
1206
1207
1208 static MACHINE_DRIVER_START( hopmappy )
1209
1210 /* basic machine hardware */
1211 MDRV_CPU_ADD_TAG("cpu1", M6809, 6000000/4) /*49152000/32, rthunder doesn't work with this */
MDRV_CPU_MEMORY(readmem1,writemem1)1212 MDRV_CPU_MEMORY(readmem1,writemem1)
1213 MDRV_CPU_VBLANK_INT(namco86_interrupt1,1)
1214
1215 MDRV_CPU_ADD_TAG("cpu2", M6809, 49152000/32)
1216 MDRV_CPU_MEMORY(hopmappy_readmem2,hopmappy_writemem2)
1217 MDRV_CPU_VBLANK_INT(namco86_interrupt2,1)
1218
1219 MDRV_CPU_ADD_TAG("mcu", HD63701, 49152000/32) /* or compatible 6808 with extra instructions */
1220 MDRV_CPU_MEMORY(hopmappy_mcu_readmem,hopmappy_mcu_writemem)
1221 MDRV_CPU_PORTS(mcu_readport,mcu_writeport)
1222 MDRV_CPU_VBLANK_INT(irq0_line_hold,1) /* ??? */
1223
1224 MDRV_FRAMES_PER_SECOND(60.606060)
1225 MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
1226 MDRV_INTERLEAVE(100)
1227
1228 MDRV_MACHINE_INIT(namco86)
1229
1230 /* video hardware */
1231 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
1232 MDRV_SCREEN_SIZE(36*8, 28*8)
1233 MDRV_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
1234 MDRV_GFXDECODE(gfxdecodeinfo_256)
1235 MDRV_PALETTE_LENGTH(512)
1236 MDRV_COLORTABLE_LENGTH(4096)
1237
1238 MDRV_PALETTE_INIT(namcos86)
1239 MDRV_VIDEO_START(namcos86)
1240 MDRV_VIDEO_UPDATE(namcos86)
1241
1242 /* sound hardware */
1243 MDRV_SOUND_ADD(YM2151, ym2151_interface)
1244 MDRV_SOUND_ADD(NAMCO_15XX, namco_interface)
1245 MDRV_SOUND_ADD(SAMPLES, samples_interface)
1246 MDRV_SOUND_ADD(CUSTOM, custom_interface)
1247 MACHINE_DRIVER_END
1248
1249
1250 static MACHINE_DRIVER_START( skykiddx )
1251
1252 /* basic machine hardware */
1253 MDRV_IMPORT_FROM(hopmappy)
1254 MDRV_CPU_MODIFY("cpu2")
1255 MDRV_CPU_MEMORY(skykiddx_readmem2,skykiddx_writemem2)
1256
1257 MDRV_CPU_MODIFY("mcu")
1258 MDRV_CPU_MEMORY(skykiddx_mcu_readmem,skykiddx_mcu_writemem)
1259 MACHINE_DRIVER_END
1260
1261
1262 static MACHINE_DRIVER_START( roishtar )
1263
1264 /* basic machine hardware */
1265 MDRV_IMPORT_FROM(hopmappy)
1266 MDRV_CPU_MODIFY("cpu2")
1267 MDRV_CPU_MEMORY(roishtar_readmem2,roishtar_writemem2)
1268
1269 MDRV_CPU_MODIFY("mcu")
1270 MDRV_CPU_MEMORY(roishtar_mcu_readmem,roishtar_mcu_writemem)
1271 MACHINE_DRIVER_END
1272
1273
1274 static MACHINE_DRIVER_START( genpeitd )
1275
1276 /* basic machine hardware */
1277 MDRV_IMPORT_FROM(hopmappy)
1278 MDRV_CPU_MODIFY("cpu2")
1279 MDRV_CPU_MEMORY(genpeitd_readmem2,genpeitd_writemem2)
1280
1281 MDRV_CPU_MODIFY("mcu")
1282 MDRV_CPU_MEMORY(genpeitd_mcu_readmem,genpeitd_mcu_writemem)
1283
1284 /* video hardware */
1285 MDRV_GFXDECODE(gfxdecodeinfo_1024)
1286 MACHINE_DRIVER_END
1287
1288
1289 static MACHINE_DRIVER_START( rthunder )
1290
1291 /* basic machine hardware */
1292 MDRV_IMPORT_FROM(hopmappy)
1293 MDRV_CPU_MODIFY("cpu2")
1294 MDRV_CPU_MEMORY(rthunder_readmem2,rthunder_writemem2)
1295
1296 MDRV_CPU_MODIFY("mcu")
1297 MDRV_CPU_MEMORY(rthunder_mcu_readmem,rthunder_mcu_writemem)
1298
1299 /* video hardware */
1300 MDRV_GFXDECODE(gfxdecodeinfo_512)
1301 MACHINE_DRIVER_END
1302
1303
1304 static MACHINE_DRIVER_START( wndrmomo )
1305
1306 /* basic machine hardware */
1307 MDRV_IMPORT_FROM(hopmappy)
1308 MDRV_CPU_MODIFY("cpu2")
1309 MDRV_CPU_MEMORY(wndrmomo_readmem2,wndrmomo_writemem2)
1310
1311 MDRV_CPU_MODIFY("mcu")
1312 MDRV_CPU_MEMORY(wndrmomo_mcu_readmem,wndrmomo_mcu_writemem)
1313
1314 /* video hardware */
1315 MDRV_GFXDECODE(gfxdecodeinfo_512)
1316 MACHINE_DRIVER_END
1317
1318
1319
1320 /***************************************************************************
1321
1322 Game driver(s)
1323
1324 ***************************************************************************/
1325
1326 ROM_START( hopmappy )
1327 ROM_REGION( 0x18000, REGION_CPU1, 0 )
1328 ROM_LOAD( "hm1", 0x08000, 0x8000, CRC(1a83914e) SHA1(6cb96b2518f4b867e20bd5d31ac6913d09c95f06) )
1329 /* 9d empty */
1330
1331 /* the CPU1 ROM expansion board is not present in this game */
1332
1333 ROM_REGION( 0x18000, REGION_CPU2, 0 )
1334 ROM_LOAD( "hm2", 0xc000, 0x4000, CRC(c46cda65) SHA1(1131b4aa0a446569e1eb9f59964548058c7993e2) )
1335 /* 12d empty */
1336
1337 ROM_REGION( 0x06000, REGION_GFX1, ROMREGION_DISPOSE )
1338 ROM_LOAD( "hm6", 0x00000, 0x04000, CRC(fd0e8887) SHA1(b76737d22bb1c1ae4d700ea6796e8d91f6ffa275) ) /* plane 1,2 */
1339 ROM_FILL( 0x04000, 0x02000, 0 ) /* no plane 3 */
1340
1341 ROM_REGION( 0x06000, REGION_GFX2, ROMREGION_DISPOSE )
1342 ROM_LOAD( "hm5", 0x00000, 0x04000, CRC(9c4f31ae) SHA1(1c7072355d6f98b8e8554da19eab0512fdd9e2e1) ) /* plane 1,2 */
1343 ROM_FILL( 0x04000, 0x02000, 0 ) /* no plane 3 */
1344
1345 ROM_REGION( 0x40000, REGION_GFX3, ROMREGION_DISPOSE )
1346 ROM_LOAD( "hm4", 0x00000, 0x8000, CRC(78719c52) SHA1(06d7bb9f29ccdbf563b3bf13c0290510b26e186f) )
1347 /* 12k/l/m/p/r/t/u empty */
1348
1349 ROM_REGION( 0x1420, REGION_PROMS, 0 )
1350 ROM_LOAD( "hm11.bpr", 0x0000, 0x0200, CRC(cc801088) SHA1(d2c39ac1694d9b8c426e253702ecd096e68c6db9) ) /* red & green components */
1351 ROM_LOAD( "hm12.bpr", 0x0200, 0x0200, CRC(a1cb71c5) SHA1(d8c33c2e52d64ebf4a07d8a26453e7b872cae413) ) /* blue component */
1352 ROM_LOAD( "hm13.bpr", 0x0400, 0x0800, CRC(e362d613) SHA1(16d87711c1ac4ac2b649a32a5627cbd62cc5031f) ) /* tiles colortable */
1353 ROM_LOAD( "hm14.bpr", 0x0c00, 0x0800, CRC(678252b4) SHA1(9e2f7328532be3ac4b48bd5d52cd993108558452) ) /* sprites colortable */
1354 ROM_LOAD( "hm15.bpr", 0x1400, 0x0020, CRC(475bf500) SHA1(7e6a91e57d3709a5c70786c8e3ed545ee6026d03) ) /* tile address decoder (used at runtime) */
1355
1356 ROM_REGION( 0x10000, REGION_CPU3, 0 )
1357 ROM_LOAD( "hm3", 0x08000, 0x2000, CRC(6496e1db) SHA1(f990fb3b2f93295282e8dee4488a4c3fc5ef83d1) )
1358 ROM_LOAD( "pl1-mcu.bin", 0x0f000, 0x1000, CRC(6ef08fb3) SHA1(4842590d60035a0059b0899eb2d5f58ae72c2529) )
1359
1360 /* the PCM expansion board is not present in this game */
1361 ROM_END
1362
1363 ROM_START( skykiddx )
1364 ROM_REGION( 0x18000, REGION_CPU1, 0 )
1365 ROM_LOAD( "sk3_1b.9c", 0x08000, 0x8000, CRC(767b3514) SHA1(7b85e520e56924235d1f4987333f183c914fafc1) )
1366 ROM_LOAD( "sk3_2.9d", 0x10000, 0x8000, CRC(74b8f8e2) SHA1(0c9f0a283c764d5db59abea17a7f3285718b4501) )
1367
1368 /* the CPU1 ROM expansion board is not present in this game */
1369
1370 ROM_REGION( 0x18000, REGION_CPU2, 0 )
1371 ROM_LOAD( "sk3_3.12c", 0x8000, 0x8000, CRC(6d1084c4) SHA1(0045e01cbeb750c50a561420f1577de8cd881894) )
1372 /* 12d empty */
1373
1374 ROM_REGION( 0x0c000, REGION_GFX1, ROMREGION_DISPOSE )
1375 ROM_LOAD( "sk3_9.7r", 0x00000, 0x08000, CRC(48675b17) SHA1(434babcf5454364a17e529daae16e6f623ca75dd) ) /* plane 1,2 */
1376 ROM_LOAD( "sk3_10.7s", 0x08000, 0x04000, CRC(7418465a) SHA1(e8236c3d077af147a7d5f8f9cd519d030c073aaf) ) /* plane 3 */
1377
1378 ROM_REGION( 0x0c000, REGION_GFX2, ROMREGION_DISPOSE )
1379 ROM_LOAD( "sk3_7.4r", 0x00000, 0x08000, CRC(4036b735) SHA1(4177f3f37feb83fab63a1160a939c8d566bbe16c) ) /* plane 1,2 */
1380 ROM_LOAD( "sk3_8.4s", 0x08000, 0x04000, CRC(044bfd21) SHA1(4fbb72fbf041cb256377952d860147376fc1d05b) ) /* plane 3 */
1381
1382 ROM_REGION( 0x40000, REGION_GFX3, ROMREGION_DISPOSE )
1383 ROM_LOAD( "sk3_5.12h", 0x00000, 0x8000, CRC(5c7d4399) SHA1(9c57e2510b1a01f618364ddaa9b9fa0ce9ae7340) )
1384 ROM_LOAD( "sk3_6.12k", 0x08000, 0x8000, CRC(c908a3b2) SHA1(5fd5304c314443fb3351e7a2d50a72a0fede7e6d) )
1385 /* 12l/m/p/r/t/u empty */
1386
1387 ROM_REGION( 0x1420, REGION_PROMS, 0 )
1388 ROM_LOAD( "sk3-1.3r", 0x0000, 0x0200, CRC(9e81dedd) SHA1(9d2ddf51788d22ed65db9070684e586b2f64f99e) ) /* red & green components */
1389 ROM_LOAD( "sk3-2.3s", 0x0200, 0x0200, CRC(cbfec4dd) SHA1(98adf5db270a853ab2a2e1cdd9edfd5657287a96) ) /* blue component */
1390 ROM_LOAD( "sk3-3.4v", 0x0400, 0x0800, CRC(81714109) SHA1(577e513369a4368b7dd29dff80904eb0ac2004ff) ) /* tiles colortable */
1391 ROM_LOAD( "sk3-4.5v", 0x0c00, 0x0800, CRC(1bf25acc) SHA1(a8db254ba4cbb85efc232a5bf9b268534455ad4a) ) /* sprites colortable */
1392 ROM_LOAD( "sk3-5.6u", 0x1400, 0x0020, CRC(e4130804) SHA1(e1a3e1383186d036fba6dc8a8681f48f24f59281) ) /* tile address decoder (used at runtime) */
1393
1394 ROM_REGION( 0x10000, REGION_CPU3, 0 )
1395 ROM_LOAD( "sk3_4.6b", 0x08000, 0x4000, CRC(e6cae2d6) SHA1(b6598aaee0136b0980e13326cb2835aadadd9543) )
1396 ROM_LOAD( "rt1-mcu.bin", 0x0f000, 0x1000, CRC(6ef08fb3) SHA1(4842590d60035a0059b0899eb2d5f58ae72c2529) )
1397
1398 /* the PCM expansion board is not present in this game */
1399 ROM_END
1400
1401 ROM_START( skykiddo )
1402 ROM_REGION( 0x18000, REGION_CPU1, 0 )
1403 ROM_LOAD( "sk3-1.9c", 0x08000, 0x8000, CRC(5722a291) SHA1(0b3ca2585bf5c18214c1337dce8f92027e9d78c2) )
1404 ROM_LOAD( "sk3_2.9d", 0x10000, 0x8000, CRC(74b8f8e2) SHA1(0c9f0a283c764d5db59abea17a7f3285718b4501) )
1405
1406 /* the CPU1 ROM expansion board is not present in this game */
1407
1408 ROM_REGION( 0x18000, REGION_CPU2, 0 )
1409 ROM_LOAD( "sk3_3.12c", 0x8000, 0x8000, CRC(6d1084c4) SHA1(0045e01cbeb750c50a561420f1577de8cd881894) )
1410 /* 12d empty */
1411
1412 ROM_REGION( 0x0c000, REGION_GFX1, ROMREGION_DISPOSE )
1413 ROM_LOAD( "sk3_9.7r", 0x00000, 0x08000, CRC(48675b17) SHA1(434babcf5454364a17e529daae16e6f623ca75dd) ) /* plane 1,2 */
1414 ROM_LOAD( "sk3_10.7s", 0x08000, 0x04000, CRC(7418465a) SHA1(e8236c3d077af147a7d5f8f9cd519d030c073aaf) ) /* plane 3 */
1415
1416 ROM_REGION( 0x0c000, REGION_GFX2, ROMREGION_DISPOSE )
1417 ROM_LOAD( "sk3_7.4r", 0x00000, 0x08000, CRC(4036b735) SHA1(4177f3f37feb83fab63a1160a939c8d566bbe16c) ) /* plane 1,2 */
1418 ROM_LOAD( "sk3_8.4s", 0x08000, 0x04000, CRC(044bfd21) SHA1(4fbb72fbf041cb256377952d860147376fc1d05b) ) /* plane 3 */
1419
1420 ROM_REGION( 0x40000, REGION_GFX3, ROMREGION_DISPOSE )
1421 ROM_LOAD( "sk3_5.12h", 0x00000, 0x8000, CRC(5c7d4399) SHA1(9c57e2510b1a01f618364ddaa9b9fa0ce9ae7340) )
1422 ROM_LOAD( "sk3_6.12k", 0x08000, 0x8000, CRC(c908a3b2) SHA1(5fd5304c314443fb3351e7a2d50a72a0fede7e6d) )
1423 /* 12l/m/p/r/t/u empty */
1424
1425 ROM_REGION( 0x1420, REGION_PROMS, 0 )
1426 ROM_LOAD( "sk3-1.3r", 0x0000, 0x0200, CRC(9e81dedd) SHA1(9d2ddf51788d22ed65db9070684e586b2f64f99e) ) /* red & green components */
1427 ROM_LOAD( "sk3-2.3s", 0x0200, 0x0200, CRC(cbfec4dd) SHA1(98adf5db270a853ab2a2e1cdd9edfd5657287a96) ) /* blue component */
1428 ROM_LOAD( "sk3-3.4v", 0x0400, 0x0800, CRC(81714109) SHA1(577e513369a4368b7dd29dff80904eb0ac2004ff) ) /* tiles colortable */
1429 ROM_LOAD( "sk3-4.5v", 0x0c00, 0x0800, CRC(1bf25acc) SHA1(a8db254ba4cbb85efc232a5bf9b268534455ad4a) ) /* sprites colortable */
1430 ROM_LOAD( "sk3-5.6u", 0x1400, 0x0020, CRC(e4130804) SHA1(e1a3e1383186d036fba6dc8a8681f48f24f59281) ) /* tile address decoder (used at runtime) */
1431
1432 ROM_REGION( 0x10000, REGION_CPU3, 0 )
1433 ROM_LOAD( "sk3_4.6b", 0x08000, 0x4000, CRC(e6cae2d6) SHA1(b6598aaee0136b0980e13326cb2835aadadd9543) )
1434 ROM_LOAD( "rt1-mcu.bin", 0x0f000, 0x1000, CRC(6ef08fb3) SHA1(4842590d60035a0059b0899eb2d5f58ae72c2529) )
1435
1436 /* the PCM expansion board is not present in this game */
1437 ROM_END
1438
1439 ROM_START( roishtar )
1440 ROM_REGION( 0x18000, REGION_CPU1, 0 )
1441 ROM_LOAD( "ri1-1c.9c", 0x08000, 0x8000, CRC(14acbacb) SHA1(3c6130f9e5a4ba84be0cc3547c1086707ee3b8e9) )
1442 ROM_LOAD( "ri1-2.9d", 0x14000, 0x2000, CRC(fcd58d91) SHA1(e7b6d7afd7cf6c374ee90d6499ea0f205e742b21) )
1443
1444 /* the CPU1 ROM expansion board is not present in this game */
1445
1446 ROM_REGION( 0x18000, REGION_CPU2, 0 )
1447 ROM_LOAD( "ri1-3.12c", 0x8000, 0x8000, CRC(a39829f7) SHA1(e08114d5154367a3cc36f1485253f18044a1888d) )
1448 /* 12d empty */
1449
1450 ROM_REGION( 0x06000, REGION_GFX1, ROMREGION_DISPOSE )
1451 ROM_LOAD( "ri1-14.7r", 0x00000, 0x04000, CRC(de8154b4) SHA1(70a65e4656cf9fcf5c54e84c628ec95393e856fb) ) /* plane 1,2 */
1452 ROM_LOAD( "ri1-15.7s", 0x04000, 0x02000, CRC(4298822b) SHA1(5aad41fd719c2f310ae485caaacda129c9f2ac94) ) /* plane 3 */
1453
1454 ROM_REGION( 0x06000, REGION_GFX2, ROMREGION_DISPOSE )
1455 ROM_LOAD( "ri1-12.4r", 0x00000, 0x04000, CRC(557e54d3) SHA1(d22969deefcb3c3443d08a215f1ec2e874650b19) ) /* plane 1,2 */
1456 ROM_LOAD( "ri1-13.4s", 0x04000, 0x02000, CRC(9ebe8e32) SHA1(5990a86bfbf2669e512e8ca875c69b4c60c4d108) ) /* plane 3 */
1457
1458 ROM_REGION( 0x40000, REGION_GFX3, ROMREGION_DISPOSE )
1459 ROM_LOAD( "ri1-5.12h", 0x00000, 0x8000, CRC(46b59239) SHA1(bb08e57cd5864f41e27a07dcf449896570d2203d) )
1460 ROM_LOAD( "ri1-6.12k", 0x08000, 0x8000, CRC(94d9ef48) SHA1(a13b345b8fe30dea8e85698782674859c385e79a) )
1461 ROM_LOAD( "ri1-7.12l", 0x10000, 0x8000, CRC(da802b59) SHA1(b6551db5cd9c3d674cdf1dc59f581ee435a7eeb7) )
1462 ROM_LOAD( "ri1-8.12m", 0x18000, 0x8000, CRC(16b88b74) SHA1(9ef3ebf686a539e911bb7a3a4c02d0e2dca616d0) )
1463 ROM_LOAD( "ri1-9.12p", 0x20000, 0x8000, CRC(f3de3c2a) SHA1(02705bfd37f8996c5fc9c5bf2a99e859083a75e6) )
1464 ROM_LOAD( "ri1-10.12r", 0x28000, 0x8000, CRC(6dacc70d) SHA1(c7db40a0e90c9717f8a2f1507daff997856a3b91) )
1465 ROM_LOAD( "ri1-11.12t", 0x30000, 0x8000, CRC(fb6bc533) SHA1(a840af58d6db66518520bc7d88867a09a2e502c2) )
1466 /* 12u empty */
1467
1468 ROM_REGION( 0x1420, REGION_PROMS, 0 )
1469 ROM_LOAD( "ri1-1.3r", 0x0000, 0x0200, CRC(29cd0400) SHA1(a9b0d09492710e72e34155cd6a7b7c1a34c56b20) ) /* red & green components */
1470 ROM_LOAD( "ri1-2.3s", 0x0200, 0x0200, CRC(02fd278d) SHA1(db104fc7acf2739def902180981eb7ba10ec3dda) ) /* blue component */
1471 ROM_LOAD( "ri1-3.4v", 0x0400, 0x0800, CRC(cbd7e53f) SHA1(77ef70be4e8a21948d697649352a5e3527086cf2) ) /* tiles colortable */
1472 ROM_LOAD( "ri1-4.5v", 0x0c00, 0x0800, CRC(22921617) SHA1(7304cb5a86f524f912feb8b58801393cce5d3b09) ) /* sprites colortable */
1473 ROM_LOAD( "ri1-5.6u", 0x1400, 0x0020, CRC(e2188075) SHA1(be079ace2070433d4d90c757aef3e415b4e21455) ) /* tile address decoder (used at runtime) */
1474
1475 ROM_REGION( 0x10000, REGION_CPU3, 0 )
1476 ROM_LOAD( "ri1-4.6b", 0x00000, 0x4000, CRC(552172b8) SHA1(18b35cb116baba362831fc046241895198b07a53) )
1477 ROM_CONTINUE( 0x08000, 0x4000 )
1478 ROM_LOAD( "rt1-mcu.bin", 0x0f000, 0x1000, CRC(6ef08fb3) SHA1(4842590d60035a0059b0899eb2d5f58ae72c2529) )
1479
1480 /* the PCM expansion board is not present in this game */
1481 ROM_END
1482
1483 ROM_START( genpeitd )
1484 ROM_REGION( 0x18000, REGION_CPU1, 0 )
1485 ROM_LOAD( "gt1-1b.9c", 0x08000, 0x8000, CRC(75396194) SHA1(2a526064fb91b2796c913f3050867352ac63e643) )
1486 /* 9d empty */
1487
1488 ROM_REGION( 0x40000, REGION_USER1, 0 ) /* bank switched data for CPU1 */
1489 ROM_LOAD( "gt1-10b.f1", 0x00000, 0x10000, CRC(5721ad0d) SHA1(f16afb3f468957a9de270366605592e14837b8c2) )
1490 /* h1 empty */
1491 /* k1 empty */
1492 /* m1 empty */
1493
1494 ROM_REGION( 0x18000, REGION_CPU2, 0 )
1495 ROM_LOAD( "gt1-2.12c", 0xc000, 0x4000, CRC(302f2cb6) SHA1(19c39afb7d49d80aeaaf67a837cd02bfd3d64fbd) )
1496 /* 12d empty */
1497
1498 ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE )
1499 ROM_LOAD( "gt1-7.7r", 0x00000, 0x10000, CRC(ea77a211) SHA1(32b8ae11723b6223b42225805acd0dcab65516a5) ) /* plane 1,2 */
1500 ROM_LOAD( "gt1-6.7s", 0x10000, 0x08000, CRC(1b128a2e) SHA1(6d7b95326919420538b509a119c26e9109e5539e) ) /* plane 3 */
1501
1502 ROM_REGION( 0x0c000, REGION_GFX2, ROMREGION_DISPOSE )
1503 ROM_LOAD( "gt1-5.4r", 0x00000, 0x08000, CRC(44d58b06) SHA1(9663f026092484a4041e486bad23e8e58a4dbf95) ) /* plane 1,2 */
1504 ROM_LOAD( "gt1-4.4s", 0x08000, 0x04000, CRC(db8d45b0) SHA1(fd4ebdf442e8b9ccc026079c29a975b1fa6e8dd6) ) /* plane 3 */
1505
1506 ROM_REGION( 0x100000, REGION_GFX3, ROMREGION_DISPOSE )
1507 ROM_LOAD( "gt1-11.12h", 0x00000, 0x20000, CRC(3181a5fe) SHA1(a98b8609afe3a41ed7b1432b3c2850e8de2c428b) )
1508 ROM_LOAD( "gt1-12.12k", 0x20000, 0x20000, CRC(76b729ab) SHA1(d75aeca1ddbb690ff7442dee3b1d44331d220758) )
1509 ROM_LOAD( "gt1-13.12l", 0x40000, 0x20000, CRC(e332a36e) SHA1(fa06da1e4f7ef3adf8e87d8d4d95aa7e0eb2d7b2) )
1510 ROM_LOAD( "gt1-14.12m", 0x60000, 0x20000, CRC(e5ffaef5) SHA1(0db1fd0b7553f69a480fcf2d312c6a8cd99ed777) )
1511 ROM_LOAD( "gt1-15.12p", 0x80000, 0x20000, CRC(198b6878) SHA1(3f42a80199192412171445dd4fe5c4a3a19a5672) )
1512 ROM_LOAD( "gt1-16.12r", 0xa0000, 0x20000, CRC(801e29c7) SHA1(4f1dd17f04f56153cd090887e841e3baa1287755) )
1513 ROM_LOAD( "gt1-8.12t", 0xc0000, 0x10000, CRC(ad7bc770) SHA1(babce324189b9380e1a71b63499362e276c99ea8) )
1514 ROM_LOAD( "gt1-9.12u", 0xe0000, 0x10000, CRC(d95a5fd7) SHA1(819ac376ac0eb6ffa69153d579a9c11ae5feb6a4) )
1515
1516 ROM_REGION( 0x1420, REGION_PROMS, 0 )
1517 ROM_LOAD( "gt1-1.3r", 0x0000, 0x0200, CRC(2f0ddddb) SHA1(27fa45c0baf9a48002db11be9b3c0472ecfd986c) ) /* red & green components */
1518 ROM_LOAD( "gt1-2.3s", 0x0200, 0x0200, CRC(87d27025) SHA1(a50f969d48a99c6d29141458fb3e34b23cf5e67c) ) /* blue component */
1519 ROM_LOAD( "gt1-3.4v", 0x0400, 0x0800, CRC(c178de99) SHA1(67289ef9e5068636023316560f9f1690a8384bfb) ) /* tiles colortable */
1520 ROM_LOAD( "gt1-4.5v", 0x0c00, 0x0800, CRC(9f48ef17) SHA1(78c813dd57326f3f5ab785005ef89ba96303adeb) ) /* sprites colortable */
1521 ROM_LOAD( "gt1-5.6u", 0x1400, 0x0020, CRC(e4130804) SHA1(e1a3e1383186d036fba6dc8a8681f48f24f59281) ) /* tile address decoder (used at runtime) */
1522
1523 ROM_REGION( 0x10000, REGION_CPU3, 0 )
1524 ROM_LOAD( "gt1-3.6b", 0x04000, 0x8000, CRC(315cd988) SHA1(87b1a90b2a53571f7d8f9a475125f3f31ed3cb5d) )
1525 ROM_LOAD( "rt1-mcu.bin", 0x0f000, 0x1000, CRC(6ef08fb3) SHA1(4842590d60035a0059b0899eb2d5f58ae72c2529) )
1526
1527 ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* PCM samples for Hitachi CPU */
1528 ROM_LOAD( "gt1-17.f3", 0x00000, 0x20000, CRC(26181ff8) SHA1(c97a0e6282b2af88d960c71e3af5283608493d31) )
1529 ROM_LOAD( "gt1-18.h3", 0x20000, 0x20000, CRC(7ef9e5ea) SHA1(0464d43b39903ce373d70854bbcd5da05896ecae) )
1530 ROM_LOAD( "gt1-19.k3", 0x40000, 0x20000, CRC(38e11f6c) SHA1(52dea9d444d5a0421db4a8bf5c79a9d901b6f005) )
1531 /* m3 empty */
1532 ROM_END
1533
1534 ROM_START( rthunder )
1535 ROM_REGION( 0x18000, REGION_CPU1, 0 )
1536 ROM_LOAD( "rt3-1b.9c", 0x8000, 0x8000, CRC(7d252a1b) SHA1(cb92709e94eb273b3ce44c55cd252170ad1017f4) )
1537 /* 9d empty */
1538
1539 ROM_REGION( 0x40000, REGION_USER1, 0 ) /* bank switched data for CPU1 */
1540 ROM_LOAD( "rt1-17.f1", 0x00000, 0x10000, CRC(766af455) SHA1(8c71772795e783d6c4b88af9a311d55e363c298a) )
1541 ROM_LOAD( "rt1-18.h1", 0x10000, 0x10000, CRC(3f9f2f5d) SHA1(541b8f80800cb55e4b81ac48771d00fe10c90743) )
1542 ROM_LOAD( "rt1-19.k1", 0x20000, 0x10000, CRC(c16675e9) SHA1(e31c28cb95ffa85392c74e1d81bfa89acbaefeb9) )
1543 ROM_LOAD( "rt1-20.m1", 0x30000, 0x10000, CRC(c470681b) SHA1(87f8d8509c3e8207f34c6001aaf4d0afdad82d0d) )
1544
1545 ROM_REGION( 0x18000, REGION_CPU2, 0 )
1546 ROM_LOAD( "rt3-2b.12c", 0x08000, 0x8000, CRC(a7ea46ee) SHA1(52e8757aacb4e01f8432125729e2323c48ebc4f5) )
1547 ROM_LOAD( "rt3-3.12d", 0x10000, 0x8000, CRC(a13f601c) SHA1(8987174e364d20eeab706c3e0d4e0d3c2b96723c) )
1548
1549 ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE )
1550 ROM_LOAD( "rt1-7.7r", 0x00000, 0x10000, CRC(a85efa39) SHA1(1ed63b421a93960668cb4558c1ca1b3c86b1f6be) ) /* plane 1,2 */
1551 ROM_LOAD( "rt1-8.7s", 0x10000, 0x08000, CRC(f7a95820) SHA1(82fe0adf6c5b3abef19031646e1eca1585dcc481) ) /* plane 3 */
1552
1553 ROM_REGION( 0x0c000, REGION_GFX2, ROMREGION_DISPOSE )
1554 ROM_LOAD( "rt1-5.4r", 0x00000, 0x08000, CRC(d0fc470b) SHA1(70f7f1e29527044eae405f58af08bad3097990bd) ) /* plane 1,2 */
1555 ROM_LOAD( "rt1-6.4s", 0x08000, 0x04000, CRC(6b57edb2) SHA1(4a8f1e024e5be4d76f2c99d506ae7da86af3d1f5) ) /* plane 3 */
1556
1557 ROM_REGION( 0x80000, REGION_GFX3, ROMREGION_DISPOSE )
1558 ROM_LOAD( "rt1-9.12h", 0x00000, 0x10000, CRC(8e070561) SHA1(483b4de79f2429236f45c32ec56b97a9a90574a3) )
1559 ROM_LOAD( "rt1-10.12k", 0x10000, 0x10000, CRC(cb8fb607) SHA1(ba9400fb19d29a285897cc3a2d4d739ce845f897) )
1560 ROM_LOAD( "rt1-11.12l", 0x20000, 0x10000, CRC(2bdf5ed9) SHA1(a771e922ad868ca1e008d08a8ff5fdf28aa315fc) )
1561 ROM_LOAD( "rt1-12.12m", 0x30000, 0x10000, CRC(e6c6c7dc) SHA1(ead143c2730a77911839a25734550188533c7b96) )
1562 ROM_LOAD( "rt1-13.12p", 0x40000, 0x10000, CRC(489686d7) SHA1(a04b57424acbf2584f736b55740d613a1aae2b8b) )
1563 ROM_LOAD( "rt1-14.12r", 0x50000, 0x10000, CRC(689e56a8) SHA1(b4d6de4eec47856a62f396f55d531fbf345cf12a) )
1564 ROM_LOAD( "rt1-15.12t", 0x60000, 0x10000, CRC(1d8bf2ca) SHA1(949ae8b00b94bfa5bc2d07888aafbaaaea559b06) )
1565 ROM_LOAD( "rt1-16.12u", 0x70000, 0x10000, CRC(1bbcf37b) SHA1(8d27c49b36d5e23dd446c150ada3853eec75e4c1) )
1566
1567 ROM_REGION( 0x1420, REGION_PROMS, 0 )
1568 ROM_LOAD( "mb7124e.3r", 0x0000, 0x0200, CRC(8ef3bb9d) SHA1(4636d6b8ba7611b11d4863fab02475dc4a619eaf) ) /* red & green components */
1569 ROM_LOAD( "mb7116e.3s", 0x0200, 0x0200, CRC(6510a8f2) SHA1(935f140bfa7e6f8cebafa7f1b0de99dd319273d4) ) /* blue component */
1570 ROM_LOAD( "mb7138h.4v", 0x0400, 0x0800, CRC(95c7d944) SHA1(ca5fea028674882a61507ac7c89ada96f5b2674d) ) /* tiles colortable */
1571 ROM_LOAD( "mb7138h.6v", 0x0c00, 0x0800, CRC(1391fec9) SHA1(8ca94e22110b20d2ecdf03610bcc89ff4245920f) ) /* sprites colortable */
1572 ROM_LOAD( "mb7112e.6u", 0x1400, 0x0020, CRC(e4130804) SHA1(e1a3e1383186d036fba6dc8a8681f48f24f59281) ) /* tile address decoder (used at runtime) */
1573
1574 ROM_REGION( 0x10000, REGION_CPU3, 0 )
1575 ROM_LOAD( "rt1-4.6b", 0x04000, 0x8000, CRC(00cf293f) SHA1(bc441d21bb4c54a01d2393fbe99201714cd4439d) )
1576 ROM_LOAD( "rt1-mcu.bin", 0x0f000, 0x1000, CRC(6ef08fb3) SHA1(4842590d60035a0059b0899eb2d5f58ae72c2529) )
1577
1578 ROM_REGION( 0x40000, REGION_SOUND1, 0 ) /* PCM samples for Hitachi CPU */
1579 ROM_LOAD( "rt1-21.f3", 0x00000, 0x10000, CRC(454968f3) SHA1(e0a679353491190b6d4f0355324456a1bd7c8a7a) )
1580 ROM_LOAD( "rt1-22.h3", 0x10000, 0x10000, CRC(fe963e72) SHA1(4c9ce4e4c8e756a743c541f670a6741b520125e3) )
1581 /* k3 empty */
1582 /* m3 empty */
1583 ROM_END
1584
1585 ROM_START( rthundro )
1586 ROM_REGION( 0x18000, REGION_CPU1, 0 )
1587 ROM_LOAD( "r1", 0x8000, 0x8000, CRC(6f8c1252) SHA1(586f2e33dd16f31131e4ae9423d639fdc6555c9c) )
1588 /* 9d empty */
1589
1590 ROM_REGION( 0x40000, REGION_USER1, 0 ) /* bank switched data for CPU1 */
1591 ROM_LOAD( "rt1-17.f1", 0x00000, 0x10000, CRC(766af455) SHA1(8c71772795e783d6c4b88af9a311d55e363c298a) )
1592 ROM_LOAD( "rt1-18.h1", 0x10000, 0x10000, CRC(3f9f2f5d) SHA1(541b8f80800cb55e4b81ac48771d00fe10c90743) )
1593 ROM_LOAD( "r19", 0x20000, 0x10000, CRC(fe9343b0) SHA1(ae8e5ee11eaf7dc1e8f814b0a0beef97731f042b) )
1594 ROM_LOAD( "r20", 0x30000, 0x10000, CRC(f8518d4f) SHA1(3a8551d46ffdf82844b2eb1b2c01cf2d8423a49e) )
1595
1596 ROM_REGION( 0x18000, REGION_CPU2, 0 )
1597 ROM_LOAD( "r2", 0x08000, 0x8000, CRC(f22a03d8) SHA1(5b81fc82813978d5cb69402be72b9ccc585fa1d0) )
1598 ROM_LOAD( "r3", 0x10000, 0x8000, CRC(aaa82885) SHA1(fc2bec3cf7e2de5f90174a2ed3bacfa94b6819f4) )
1599
1600 ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE )
1601 ROM_LOAD( "rt1-7.7r", 0x00000, 0x10000, CRC(a85efa39) SHA1(1ed63b421a93960668cb4558c1ca1b3c86b1f6be) ) /* plane 1,2 */
1602 ROM_LOAD( "rt1-8.7s", 0x10000, 0x08000, CRC(f7a95820) SHA1(82fe0adf6c5b3abef19031646e1eca1585dcc481) ) /* plane 3 */
1603
1604 ROM_REGION( 0x0c000, REGION_GFX2, ROMREGION_DISPOSE )
1605 ROM_LOAD( "rt1-5.4r", 0x00000, 0x08000, CRC(d0fc470b) SHA1(70f7f1e29527044eae405f58af08bad3097990bd) ) /* plane 1,2 */
1606 ROM_LOAD( "rt1-6.4s", 0x08000, 0x04000, CRC(6b57edb2) SHA1(4a8f1e024e5be4d76f2c99d506ae7da86af3d1f5) ) /* plane 3 */
1607
1608 ROM_REGION( 0x80000, REGION_GFX3, ROMREGION_DISPOSE )
1609 ROM_LOAD( "rt1-9.12h", 0x00000, 0x10000, CRC(8e070561) SHA1(483b4de79f2429236f45c32ec56b97a9a90574a3) )
1610 ROM_LOAD( "rt1-10.12k", 0x10000, 0x10000, CRC(cb8fb607) SHA1(ba9400fb19d29a285897cc3a2d4d739ce845f897) )
1611 ROM_LOAD( "rt1-11.12l", 0x20000, 0x10000, CRC(2bdf5ed9) SHA1(a771e922ad868ca1e008d08a8ff5fdf28aa315fc) )
1612 ROM_LOAD( "rt1-12.12m", 0x30000, 0x10000, CRC(e6c6c7dc) SHA1(ead143c2730a77911839a25734550188533c7b96) )
1613 ROM_LOAD( "rt1-13.12p", 0x40000, 0x10000, CRC(489686d7) SHA1(a04b57424acbf2584f736b55740d613a1aae2b8b) )
1614 ROM_LOAD( "rt1-14.12r", 0x50000, 0x10000, CRC(689e56a8) SHA1(b4d6de4eec47856a62f396f55d531fbf345cf12a) )
1615 ROM_LOAD( "rt1-15.12t", 0x60000, 0x10000, CRC(1d8bf2ca) SHA1(949ae8b00b94bfa5bc2d07888aafbaaaea559b06) )
1616 ROM_LOAD( "rt1-16.12u", 0x70000, 0x10000, CRC(1bbcf37b) SHA1(8d27c49b36d5e23dd446c150ada3853eec75e4c1) )
1617
1618 ROM_REGION( 0x1420, REGION_PROMS, 0 )
1619 ROM_LOAD( "mb7124e.3r", 0x0000, 0x0200, CRC(8ef3bb9d) SHA1(4636d6b8ba7611b11d4863fab02475dc4a619eaf) ) /* red & green components */
1620 ROM_LOAD( "mb7116e.3s", 0x0200, 0x0200, CRC(6510a8f2) SHA1(935f140bfa7e6f8cebafa7f1b0de99dd319273d4) ) /* blue component */
1621 ROM_LOAD( "mb7138h.4v", 0x0400, 0x0800, CRC(95c7d944) SHA1(ca5fea028674882a61507ac7c89ada96f5b2674d) ) /* tiles colortable */
1622 ROM_LOAD( "mb7138h.6v", 0x0c00, 0x0800, CRC(1391fec9) SHA1(8ca94e22110b20d2ecdf03610bcc89ff4245920f) ) /* sprites colortable */
1623 ROM_LOAD( "mb7112e.6u", 0x1400, 0x0020, CRC(e4130804) SHA1(e1a3e1383186d036fba6dc8a8681f48f24f59281) ) /* tile address decoder (used at runtime) */
1624
1625 ROM_REGION( 0x10000, REGION_CPU3, 0 )
1626 ROM_LOAD( "r4", 0x04000, 0x8000, CRC(0387464f) SHA1(ce7f521bc2ecc6525880da2551daf595a394a275) )
1627 ROM_LOAD( "rt1-mcu.bin", 0x0f000, 0x1000, CRC(6ef08fb3) SHA1(4842590d60035a0059b0899eb2d5f58ae72c2529) )
1628
1629 ROM_REGION( 0x40000, REGION_SOUND1, 0 ) /* PCM samples for Hitachi CPU */
1630 ROM_LOAD( "rt1-21.f3", 0x00000, 0x10000, CRC(454968f3) SHA1(e0a679353491190b6d4f0355324456a1bd7c8a7a) )
1631 ROM_LOAD( "rt1-22.h3", 0x10000, 0x10000, CRC(fe963e72) SHA1(4c9ce4e4c8e756a743c541f670a6741b520125e3) )
1632 /* k3 empty */
1633 /* m3 empty */
1634 ROM_END
1635
1636 ROM_START( wndrmomo )
1637 ROM_REGION( 0x18000, REGION_CPU1, 0 )
1638 ROM_LOAD( "wm1-1.9c", 0x8000, 0x8000, CRC(34b50bf0) SHA1(112c8c8a0a16382008cacd2e484f91fa9338d10a) )
1639 /* 9d empty */
1640
1641 ROM_REGION( 0x40000, REGION_USER1, 0 ) /* bank switched data for CPU1 */
1642 ROM_LOAD( "wm1-16.f1", 0x00000, 0x10000, CRC(e565f8f3) SHA1(e1f417003ef9f700f9d5ed091484463c704c8b9f) )
1643 /* h1 empty */
1644 /* k1 empty */
1645 /* m1 empty */
1646
1647 ROM_REGION( 0x18000, REGION_CPU2, 0 )
1648 ROM_LOAD( "wm1-2.12c", 0x8000, 0x8000, CRC(3181efd0) SHA1(01a2e0e4c8ced6f48b6e70393a3c4152b079e9b0) )
1649 /* 12d empty */
1650
1651 ROM_REGION( 0x0c000, REGION_GFX1, ROMREGION_DISPOSE )
1652 ROM_LOAD( "wm1-6.7r", 0x00000, 0x08000, CRC(93955fbb) SHA1(cffd457886c40bf709b573237165ae8fa9784e32) ) /* plane 1,2 */
1653 ROM_LOAD( "wm1-7.7s", 0x08000, 0x04000, CRC(7d662527) SHA1(09d1dc46a402c67dddcdd4cc90f32948c7a28795) ) /* plane 3 */
1654
1655 ROM_REGION( 0x0c000, REGION_GFX2, ROMREGION_DISPOSE )
1656 ROM_LOAD( "wm1-4.4r", 0x00000, 0x08000, CRC(bbe67836) SHA1(bc998c2ddc2664db614e7c487f77073a5be69e89) ) /* plane 1,2 */
1657 ROM_LOAD( "wm1-5.4s", 0x08000, 0x04000, CRC(a81b481f) SHA1(b5a029e432b29e157505b975ea57cd4b5da361a7) ) /* plane 3 */
1658
1659 ROM_REGION( 0x80000, REGION_GFX3, ROMREGION_DISPOSE )
1660 ROM_LOAD( "wm1-8.12h", 0x00000, 0x10000, CRC(14f52e72) SHA1(0f8f58cd13e3393a113817593816f53a218f3ce4) )
1661 ROM_LOAD( "wm1-9.12k", 0x10000, 0x10000, CRC(16f8cdae) SHA1(8281b4c66157580f34aec7c035d06f721f77b3d5) )
1662 ROM_LOAD( "wm1-10.12l", 0x20000, 0x10000, CRC(bfbc1896) SHA1(0308cf907c77417ad3f84326b074567a00245998) )
1663 ROM_LOAD( "wm1-11.12m", 0x30000, 0x10000, CRC(d775ddb2) SHA1(8f1a6efbdaeec9049624be56078e843b3094a277) )
1664 ROM_LOAD( "wm1-12.12p", 0x40000, 0x10000, CRC(de64c12f) SHA1(c867e03d6b249ce0c9b3554797ccebaeb2778f73) )
1665 ROM_LOAD( "wm1-13.12r", 0x50000, 0x10000, CRC(cfe589ad) SHA1(3289cd1571fefe5266ca1e8bd75069d386919ae5) )
1666 ROM_LOAD( "wm1-14.12t", 0x60000, 0x10000, CRC(2ae21a53) SHA1(ef3e5e4fa8580f7891d9e1825d2eda4c387db732) )
1667 ROM_LOAD( "wm1-15.12u", 0x70000, 0x10000, CRC(b5c98be0) SHA1(bdd6e0e02632866eea60a6bdeff3af8b6cd08d68) )
1668
1669 ROM_REGION( 0x1420, REGION_PROMS, 0 )
1670 ROM_LOAD( "wm1-1.3r", 0x0000, 0x0200, CRC(1af8ade8) SHA1(1aa0d314c34abc4154092d4b588214afb0b21e22) ) /* red & green components */
1671 ROM_LOAD( "wm1-2.3s", 0x0200, 0x0200, CRC(8694e213) SHA1(f00d692e587c3706e71b6eeef21e1ea87c9dd921) ) /* blue component */
1672 ROM_LOAD( "wm1-3.4v", 0x0400, 0x0800, CRC(2ffaf9a4) SHA1(2002df3cc38e05f3e127d05c244cb101d1f1d85f) ) /* tiles colortable */
1673 ROM_LOAD( "wm1-4.5v", 0x0c00, 0x0800, CRC(f4e83e0b) SHA1(b000d884c6e0373b0403bc9d63eb0452c1197491) ) /* sprites colortable */
1674 ROM_LOAD( "wm1-5.6u", 0x1400, 0x0020, CRC(e4130804) SHA1(e1a3e1383186d036fba6dc8a8681f48f24f59281) ) /* tile address decoder (used at runtime) */
1675
1676 ROM_REGION( 0x10000, REGION_CPU3, 0 )
1677 ROM_LOAD( "wm1-3.6b", 0x04000, 0x8000, CRC(55f01df7) SHA1(c11574a8b51bf965790b97895452e9fa9ab6b752) )
1678 ROM_LOAD( "rt1-mcu.bin", 0x0f000, 0x1000, CRC(6ef08fb3) SHA1(4842590d60035a0059b0899eb2d5f58ae72c2529) )
1679
1680 ROM_REGION( 0x40000, REGION_SOUND1, 0 ) /* PCM samples for Hitachi CPU */
1681 ROM_LOAD( "wm1-17.f3", 0x00000, 0x10000, CRC(bea3c318) SHA1(50b6e4c546ce056d68fbb2e52cb88397daa615aa) )
1682 ROM_LOAD( "wm1-18.h3", 0x10000, 0x10000, CRC(6d73bcc5) SHA1(fccd83bb3a872b4cd8bd9f11f5cdf5926cb9b74e) )
1683 ROM_LOAD( "wm1-19.k3", 0x20000, 0x10000, CRC(d288e912) SHA1(d0db58d7ed3d8cf895e031901f91f810f0e18709) )
1684 ROM_LOAD( "wm1-20.m3", 0x30000, 0x10000, CRC(076a72cb) SHA1(0d0d74a6b11b07a2d768567e7bc06cf08bbcd68f) )
1685 ROM_END
1686
1687
1688
1689 static DRIVER_INIT( namco86 )
1690 {
1691 int size;
1692 unsigned char *gfx;
1693 unsigned char *buffer;
1694
1695 /* shuffle tile ROMs so regular gfx unpack routines can be used */
1696 gfx = memory_region(REGION_GFX1);
1697 size = memory_region_length(REGION_GFX1) * 2 / 3;
1698 buffer = malloc( size );
1699
1700 if ( buffer )
1701 {
1702 unsigned char *dest1 = gfx;
1703 unsigned char *dest2 = gfx + ( size / 2 );
1704 unsigned char *mono = gfx + size;
1705 int i;
1706
1707 memcpy( buffer, gfx, size );
1708
1709 for ( i = 0; i < size; i += 2 )
1710 {
1711 unsigned char data1 = buffer[i];
1712 unsigned char data2 = buffer[i+1];
1713 *dest1++ = ( data1 << 4 ) | ( data2 & 0xf );
1714 *dest2++ = ( data1 & 0xf0 ) | ( data2 >> 4 );
1715
1716 *mono ^= 0xff; mono++;
1717 }
1718
1719 free( buffer );
1720 }
1721
1722 gfx = memory_region(REGION_GFX2);
1723 size = memory_region_length(REGION_GFX2) * 2 / 3;
1724 buffer = malloc( size );
1725
1726 if ( buffer )
1727 {
1728 unsigned char *dest1 = gfx;
1729 unsigned char *dest2 = gfx + ( size / 2 );
1730 unsigned char *mono = gfx + size;
1731 int i;
1732
1733 memcpy( buffer, gfx, size );
1734
1735 for ( i = 0; i < size; i += 2 )
1736 {
1737 unsigned char data1 = buffer[i];
1738 unsigned char data2 = buffer[i+1];
1739 *dest1++ = ( data1 << 4 ) | ( data2 & 0xf );
1740 *dest2++ = ( data1 & 0xf0 ) | ( data2 >> 4 );
1741
1742 *mono ^= 0xff; mono++;
1743 }
1744
1745 free( buffer );
1746 }
1747 }
1748
1749
1750
WRITE_HANDLER(roishtar_semaphore_w)1751 WRITE_HANDLER( roishtar_semaphore_w )
1752 {
1753 rthunder_videoram1_w(0x7e24-0x6000+offset,data);
1754
1755 if (data == 0x02)
1756 cpu_spinuntil_int();
1757 }
1758
DRIVER_INIT(roishtar)1759 static DRIVER_INIT( roishtar )
1760 {
1761 /* install hook to avoid hang at game over */
1762 install_mem_write_handler(1, 0x7e24, 0x7e24, roishtar_semaphore_w);
1763
1764 init_namco86();
1765 }
1766
1767
1768
1769 GAME( 1986, hopmappy, 0, hopmappy, hopmappy, namco86, ROT0, "Namco", "Hopping Mappy" )
1770 GAME( 1986, skykiddx, 0, skykiddx, skykiddx, namco86, ROT180, "Namco", "Sky Kid Deluxe (set 1)" )
1771 GAME( 1986, skykiddo, skykiddx, skykiddx, skykiddx, namco86, ROT180, "Namco", "Sky Kid Deluxe (set 2)" )
1772 GAME( 1986, roishtar, 0, roishtar, roishtar, roishtar, ROT0, "Namco", "The Return of Ishtar" )
1773 GAME( 1986, genpeitd, 0, genpeitd, genpeitd, namco86, ROT0, "Namco", "Genpei ToumaDen" )
1774 GAME( 1986, rthunder, 0, rthunder, rthunder, namco86, ROT0, "Namco", "Rolling Thunder (new version)" )
1775 GAME( 1986, rthundro, rthunder, rthunder, rthundro, namco86, ROT0, "Namco", "Rolling Thunder (old version)" )
1776 GAME( 1987, wndrmomo, 0, wndrmomo, wndrmomo, namco86, ROT0, "Namco", "Wonder Momo" )
1777