1 // license:BSD-3-Clause
2 // copyright-holders:Ville Linde
3 /*
4 Konami 'ZR107' Hardware
5 Konami, 1995-1996
6
7 Driver by Ville Linde
8
9
10 Hardware overview:
11
12 ZR107 CPU board:
13 ----------------
14 IBM PowerPC 403GA at 32MHz (main CPU)
15 Motorola MC68EC000 at 8MHz (sound CPU)
16 Konami K056800 (MIRAC), sound system interface
17 Konami K056230 (LANC), LAN interface
18 Konami K058141 sound chip (same as 2x K054539)
19
20 ZR107 GFX board:
21 ----------------
22 Analog Devices ADSP-21062 SHARC DSP at 36MHz
23 Konami K056832 tilemap chip
24 KS10071 (custom 3D pixel unit)
25 KS10081 (custom 3D texel unit)
26
27 GN678 GFX board (same as in gticlub.cpp):
28 ----------------
29 Analog Devices ADSP-21062 SHARC DSP at 36MHz
30 Konami K001604 (2D tilemaps + 2x ROZ)
31 2x KS10071 (custom 3D pixel unit)
32 2x KS10081 (custom 3D texel unit)
33
34
35 Known games on this hardware:
36
37 Game | Year | ID | CPU PCB | CG Board(s)
38 --------------------------------------------------------------------------
39 Midnight Run | 1995 | GX476 | ZR107 | ZR107
40 Winding Heat | 1996 | GX677 | ZR107 | ZR107
41 Jet Wave / Wave Shark | 1996 | GX678 | ZR107 | GN678
42
43
44 PCB Layouts
45 -----------
46
47 Top Board
48
49 ZR107 PWB(A)300769A
50 |------------------------------------------------------------|
51 | MASKROM.3R |
52 | MASKROM.5N MASKROM.5R |
53 |056602 056800 058141 68EC000FN8 TSOP56 DIP42 |
54 | RESET_SW TSOP56 DIP42 |
55 |058232 |
56 | PAL(001535) PAL(001536) 8464 8464 EPROM.13U |
57 | |
58 | SOJ40 EPROM.15U |
59 | |
60 | DIP32 SOJ40 EPROM.17U |
61 | EPROM.19L 18.432MHz |
62 | 93C46.20E EPROM.20U |
63 | LED 814260-70 |
64 | PAL(001534) |
65 | ADC0838 |
66 | PAL(001533) 814260-70 |
67 | TEST_SW |
68 | PAL(001532) |
69 | PAL(056787A) |
70 | |
71 | 8464 |--------| |
72 | |IBM | |
73 | 64MHz |POWERPC | |
74 | 056230 QFP44 |403GA | |
75 | |--------| |
76 | DSW(4) |
77 |------------------------------------------------------------|
78 Notes:
79 403GA: clock 32.000MHz (64/2)
80 68000: clock 8.000MHz (64/8)
81 TSOP56: Unpopulated position for 2Mx8 TSOP56 FlashROM
82 DIP42: Unpopulated position for 2Mx8 DIP42 mask ROM
83 DIP32: Unpopulated position for 512kx8 EPROM
84 SOJ40: Unpopulated position for DRAM 814260-70
85 QFP44: Unpopulated position for MB89371FL
86 056230: Konami custom, also marked KS40011, used for network functions
87 058141: Konami custom
88 056800: Konami custom
89 058232: Konami custom filter/DAC?
90 056602: Konami custom sound ceramic module (contains a small IC, some OP amps, resistors, caps etc)
91 8464: 8kx8 SRAM (NDIP28)
92 814260: 256kx16 DRAM (SOJ40)
93 LED: 2 digit alpha-numeric 7-segment LED
94
95 ROM Usage
96 ---------
97 |-------------------------- ROM Locations -------------------------------|
98 Game 5R 3R 5N 13U 15U 17U 20U 19L
99 ------------------------------------------------------------------------------------------------------
100 Midnight Run 477A08 477A09 477A10 476EA1A04 476EA1A03 476EA1A02 476EA1A01 477A07
101 Jet Wave 678A08 678A09 678A10 678UAB04 678UAB03 678UAB02 678UAB01 678A07
102 Winding Heat 677A08 677A09 677A10 677UBC04 677UBC03 677UBC02 677UBC01 677A07
103
104
105 Bottom Board
106
107 ZR107 PWB(B)300816D
108 |------------------------------------------------------------|
109 | |-------| |
110 | DIP42 MASKROM.2H |KS10081| 81141622 81141622 |
111 | |-------| |
112 | DIP42 MASKROM.5H |---------| 81141622 |
113 | | KS10071 | |
114 | DIP42 MASKROM.7H | | 81141622 |
115 | |---------| |
116 | DIP42 MASKROM.9H 81141622 |
117 | |
118 | MC88916 |
119 | PAL(001785) AM7203 AM7203 AM7203 AM7203 |
120 | |
121 | |
122 | PAL(001782) |
123 | PAL(001781)|
124 | |
125 | |
126 | MC44200 CY7C128 CY7C128 CY7C199 CY7C199 |
127 | CY7C199 CY7C199 36MHz |
128 | MACH110 |
129 |(001779) 056832 |---------| |
130 | |ADSP21062| |
131 | PAL(001784) 058143 |SHARC | |
132 |MASKROM.35A MACH110 |KS-160 | |
133 | 62256 62256 (001780) |---------| |
134 |MASKROM.35B 62256 CY7C109 CY7C109 |
135 | DSW(4) CY7C109 CY7C109 |
136 |------------------------------------------------------------|
137 Notes:
138 KS10081 : Konami custom video chip, also marked 001006
139 KS10071 : Konami custom video chip, also marked 001005. Chip is heatsinked
140 056832 : Konami custom
141 058143 : Konami custom
142 AM7203 : AMD AM7203 2kx9 FIFO (PLCC32)
143 MACH110 : MACH110 CPLD stamped 001779 & 001780
144 DSW(4) : 4 position DIP SWITCH
145 PAL : PALCE16V8H stamped 001781, 001782, 001784, 001785
146 81141622: 256kx16 SDRAM
147 CY7C128 : 2kx8 SRAM
148 CY7C199 : 32kx8 SRAM
149 CY7C109 : 128kx8 SRAM
150 62256 : 32kx8 SRAM
151 DIP42 : Unpopulated position for 1Mx8 DIP42 mask ROM
152 MC88916 : Motorola MC88916 Low Skew CMOS PLL Clock Driver
153
154 ROM Usage
155 ---------
156 |--------------- ROM Locations ---------------|
157 Game 35A 35B 2H 5H 7H 9H
158 ---------------------------------------------------------------
159 Midnight Run 477A12 477A11 477A16 477A15 477A14 477A13
160 Jet Wave - see note -
161 Winding Heat 677A12 677A11 677A16 677A15 677A14 677A13
162
163 Note: Jet Wave uses the lower board from GTI Club (GN678), and a ZR107(PWB(A)300769A top board.
164 Check drivers/gticlub.cpp for details on the bottom board.
165
166 */
167
168 #include "emu.h"
169 #include "cpu/m68000/m68000.h"
170 #include "cpu/powerpc/ppc.h"
171 #include "cpu/sharc/sharc.h"
172 #include "machine/konppc.h"
173 #include "machine/adc083x.h"
174 #include "machine/k056230.h"
175 #include "machine/eepromser.h"
176 #include "machine/watchdog.h"
177 #include "sound/k056800.h"
178 #include "sound/k054539.h"
179 #include "video/k001604.h"
180 #include "video/k001005.h"
181 #include "video/k001006.h"
182 #include "video/k054156_k054157_k056832.h"
183 #include "video/konami_helper.h"
184 #include "emupal.h"
185 #include "speaker.h"
186
187
188 class zr107_state : public driver_device
189 {
190 public:
zr107_state(const machine_config & mconfig,device_type type,const char * tag)191 zr107_state(const machine_config &mconfig, device_type type, const char *tag)
192 : driver_device(mconfig, type, tag),
193 m_maincpu(*this, "maincpu"),
194 m_audiocpu(*this, "audiocpu"),
195 m_dsp(*this, "dsp"),
196 m_watchdog(*this, "watchdog"),
197 m_k056800(*this, "k056800"),
198 m_workram(*this, "workram"),
199 m_k001005(*this, "k001005"),
200 m_k001006_1(*this, "k001006_1"),
201 m_in0(*this, "IN0"),
202 m_in1(*this, "IN1"),
203 m_in2(*this, "IN2"),
204 m_in3(*this, "IN3"),
205 m_in4(*this, "IN4"),
206 m_out4(*this, "OUT4"),
207 m_eepromout(*this, "EEPROMOUT"),
208 m_analog1(*this, "ANALOG1"),
209 m_analog2(*this, "ANALOG2"),
210 m_analog3(*this, "ANALOG3"),
211 m_pcb_digit(*this, "pcbdigit%u", 0U),
212 m_screen(*this, "screen"),
213 m_palette(*this, "palette"),
214 m_generic_paletteram_32(*this, "paletteram"),
215 m_konppc(*this, "konppc")
216 { }
217
218 void zr107(machine_config &config);
219
220 virtual void driver_init() override;
221
222 protected:
223 required_device<ppc_device> m_maincpu;
224 required_device<cpu_device> m_audiocpu;
225 required_device<adsp21062_device> m_dsp;
226 required_device<watchdog_timer_device> m_watchdog;
227 required_device<k056800_device> m_k056800;
228 required_shared_ptr<uint32_t> m_workram;
229 required_device<k001005_device> m_k001005;
230 required_device<k001006_device> m_k001006_1;
231 required_ioport m_in0, m_in1, m_in2, m_in3, m_in4, m_out4, m_eepromout, m_analog1, m_analog2, m_analog3;
232 output_finder<2> m_pcb_digit;
233 required_device<screen_device> m_screen;
234 required_device<palette_device> m_palette;
235 required_shared_ptr<uint32_t> m_generic_paletteram_32;
236 required_device<konppc_device> m_konppc;
237
238 std::unique_ptr<uint32_t[]> m_sharc_dataram;
239 int m_ccu_vcth;
240 int m_ccu_vctl;
241 uint8_t m_sound_ctrl;
242 uint8_t m_sound_intck;
243
244 void paletteram32_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
245 uint8_t sysreg_r(offs_t offset);
246 void sysreg_w(offs_t offset, uint8_t data);
247 uint32_t ccu_r(offs_t offset, uint32_t mem_mask = ~0);
248 void ccu_w(uint32_t data);
249 uint32_t dsp_dataram_r(offs_t offset);
250 void dsp_dataram_w(offs_t offset, uint32_t data);
251 void sound_ctrl_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
252
253 WRITE_LINE_MEMBER(vblank);
254 WRITE_LINE_MEMBER(k054539_irq_gen);
255 double adc0838_callback(uint8_t input);
256
257 void sharc_memmap(address_map &map);
258 void sound_memmap(address_map &map);
259
260 virtual void machine_start() override;
261 virtual void machine_reset() override;
262 };
263
264 class midnrun_state : public zr107_state
265 {
266 public:
midnrun_state(const machine_config & mconfig,device_type type,const char * tag)267 midnrun_state(const machine_config &mconfig, device_type type, const char *tag)
268 : zr107_state(mconfig, type, tag),
269 m_k056832(*this, "k056832")
270 { }
271
272 void midnrun(machine_config &config);
273
274 private:
275 virtual void video_start() override;
276
277 void main_memmap(address_map &map);
278
279 K056832_CB_MEMBER(tile_callback);
280
281 required_device<k056832_device> m_k056832;
282
283 uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
284 };
285
286 class jetwave_state : public zr107_state
287 {
288 public:
jetwave_state(const machine_config & mconfig,device_type type,const char * tag)289 jetwave_state(const machine_config &mconfig, device_type type, const char *tag)
290 : zr107_state(mconfig, type, tag),
291 m_k001604(*this, "k001604"),
292 m_k001006_2(*this, "k001006_2")
293 { }
294
295 void jetwave(machine_config &config);
296
297 private:
298 void palette_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
299
300 void main_memmap(address_map &map);
301
302 uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
303
304 required_device<k001604_device> m_k001604;
305 required_device<k001006_device> m_k001006_2;
306 };
307
screen_update(screen_device & screen,bitmap_rgb32 & bitmap,const rectangle & cliprect)308 uint32_t jetwave_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
309 {
310 bitmap.fill(m_palette->pen(0), cliprect);
311
312 m_k001604->draw_back_layer(bitmap, cliprect);
313 m_k001005->draw(bitmap, cliprect);
314 m_k001604->draw_front_layer(screen, bitmap, cliprect);
315
316 return 0;
317 }
318
319
320 /*****************************************************************************/
321
paletteram32_w(offs_t offset,uint32_t data,uint32_t mem_mask)322 void zr107_state::paletteram32_w(offs_t offset, uint32_t data, uint32_t mem_mask)
323 {
324 COMBINE_DATA(&m_generic_paletteram_32[offset]);
325 data = m_generic_paletteram_32[offset];
326 m_palette->set_pen_color((offset * 2) + 0, pal5bit(data >> 26), pal5bit(data >> 21), pal5bit(data >> 16));
327 m_palette->set_pen_color((offset * 2) + 1, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
328 }
329
K056832_CB_MEMBER(midnrun_state::tile_callback)330 K056832_CB_MEMBER(midnrun_state::tile_callback)
331 {
332 *color += layer * 0x40;
333 }
334
video_start()335 void midnrun_state::video_start()
336 {
337 m_k056832->set_layer_offs(0, -29, -27);
338 m_k056832->set_layer_offs(1, -29, -27);
339 m_k056832->set_layer_offs(2, -29, -27);
340 m_k056832->set_layer_offs(3, -29, -27);
341 m_k056832->set_layer_offs(4, -29, -27);
342 m_k056832->set_layer_offs(5, -29, -27);
343 m_k056832->set_layer_offs(6, -29, -27);
344 m_k056832->set_layer_offs(7, -29, -27);
345 }
346
screen_update(screen_device & screen,bitmap_rgb32 & bitmap,const rectangle & cliprect)347 uint32_t midnrun_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
348 {
349 bitmap.fill(m_palette->pen(0), cliprect);
350
351 m_k056832->tilemap_draw(screen, bitmap, cliprect, 1, 0, 0);
352 m_k001005->draw(bitmap, cliprect);
353 m_k056832->tilemap_draw(screen, bitmap, cliprect, 0, 0, 0);
354
355 return 0;
356 }
357
358 /******************************************************************/
359
sysreg_r(offs_t offset)360 uint8_t zr107_state::sysreg_r(offs_t offset)
361 {
362 uint32_t r = 0;
363
364 switch (offset)
365 {
366 case 0: /* I/O port 0 */
367 r = m_in0->read();
368 break;
369 case 1: /* I/O port 1 */
370 r = m_in1->read();
371 break;
372 case 2: /* I/O port 2 */
373 r = m_in2->read();
374 break;
375 case 3: /* System Port 0 */
376 r = m_in3->read();
377 break;
378 case 4: /* System Port 1 */
379 r = m_in4->read();
380 break;
381 case 5: /* Parallel data port */
382 break;
383 default:
384 break;
385 }
386 return r;
387 }
388
sysreg_w(offs_t offset,uint8_t data)389 void zr107_state::sysreg_w(offs_t offset, uint8_t data)
390 {
391 switch (offset)
392 {
393 case 0: /* 7seg LEDs on PCB */
394 case 1:
395 m_pcb_digit[offset] = bitswap<7>(~data,0,1,2,3,4,5,6);
396 break;
397
398 case 2: /* Parallel data register */
399 osd_printf_debug("Parallel data = %02X\n", data);
400 break;
401
402 case 3: /* System Register 0 */
403 /*
404 0x80 = unused
405 0x40 = COINREQ1
406 0x20 = COINREQ2
407 0x10 = SNDRES
408 0x08 = unused
409 0x04 = EEPCS
410 0x02 = EEPCLK
411 0x01 = EEPDI
412 */
413 m_eepromout->write(data & 0x07, 0xff);
414 m_audiocpu->set_input_line(INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
415 osd_printf_debug("System register 0 = %02X\n", data);
416 break;
417
418 case 4: /* System Register 1 */
419 /*
420 0x80 = EXRES1
421 0x40 = EXRES0
422 0x20 = EXID1
423 0x10 = EXID0
424 0x08 = unused
425 0x04 = ADCS (ADC CS)
426 0x02 = ADDI (ADC DI)
427 0x01 = ADDSCLK (ADC SCLK)
428 */
429 if (data & 0x80) /* CG Board 1 IRQ Ack */
430 m_maincpu->set_input_line(INPUT_LINE_IRQ1, CLEAR_LINE);
431 if (data & 0x40) /* CG Board 0 IRQ Ack */
432 m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
433 m_konppc->set_cgboard_id((data >> 4) & 3);
434 m_out4->write(data, 0xff);
435 osd_printf_debug("System register 1 = %02X\n", data);
436 break;
437
438 case 5: /* System Register 2 */
439 /*
440 0x01 = AFE
441 */
442 if (data & 0x01)
443 m_watchdog->watchdog_reset();
444 break;
445
446 default:
447 break;
448 }
449 }
450
ccu_r(offs_t offset,uint32_t mem_mask)451 uint32_t zr107_state::ccu_r(offs_t offset, uint32_t mem_mask)
452 {
453 uint32_t r = 0;
454 switch (offset)
455 {
456 case 0x1c/4:
457 {
458 // Midnight Run polls the vertical counter in vblank
459 if (ACCESSING_BITS_24_31)
460 {
461 m_ccu_vcth ^= 0xff;
462 r |= m_ccu_vcth << 24;
463 }
464 if (ACCESSING_BITS_8_15)
465 {
466 m_ccu_vctl++;
467 m_ccu_vctl &= 0x1ff;
468 r |= (m_ccu_vctl >> 2) << 8;
469 }
470 }
471 }
472
473 return r;
474 }
475
ccu_w(uint32_t data)476 void zr107_state::ccu_w(uint32_t data)
477 {
478 }
479
480 /******************************************************************/
481
machine_start()482 void zr107_state::machine_start()
483 {
484 m_pcb_digit.resolve();
485
486 /* set conservative DRC options */
487 m_maincpu->ppcdrc_set_options(PPCDRC_COMPATIBLE_OPTIONS);
488
489 /* configure fast RAM regions for DRC */
490 m_maincpu->ppcdrc_add_fastram(0x00000000, 0x000fffff, false, m_workram);
491 }
492
main_memmap(address_map & map)493 void midnrun_state::main_memmap(address_map &map)
494 {
495 map(0x00000000, 0x000fffff).ram().share("workram"); /* Work RAM */
496 map(0x74000000, 0x74003fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w));
497 map(0x74020000, 0x7402003f).rw(m_k056832, FUNC(k056832_device::word_r), FUNC(k056832_device::word_w));
498 map(0x74060000, 0x7406003f).rw(FUNC(midnrun_state::ccu_r), FUNC(midnrun_state::ccu_w));
499 map(0x74080000, 0x74081fff).ram().w(FUNC(midnrun_state::paletteram32_w)).share("paletteram");
500 map(0x740a0000, 0x740a3fff).r(m_k056832, FUNC(k056832_device::rom_word_r));
501 map(0x78000000, 0x7800ffff).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_r_ppc), FUNC(konppc_device::cgboard_dsp_shared_w_ppc)); /* 21N 21K 23N 23K */
502 map(0x78010000, 0x7801ffff).w(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_w_ppc));
503 map(0x78040000, 0x7804000f).rw(m_k001006_1, FUNC(k001006_device::read), FUNC(k001006_device::write));
504 map(0x780c0000, 0x780c0007).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_comm_r_ppc), FUNC(konppc_device::cgboard_dsp_comm_w_ppc));
505 map(0x7e000000, 0x7e003fff).rw(FUNC(midnrun_state::sysreg_r), FUNC(midnrun_state::sysreg_w));
506 map(0x7e008000, 0x7e009fff).rw("k056230", FUNC(k056230_device::read), FUNC(k056230_device::write)); /* LANC registers */
507 map(0x7e00a000, 0x7e00bfff).rw("k056230", FUNC(k056230_device::lanc_ram_r), FUNC(k056230_device::lanc_ram_w)); /* LANC Buffer RAM (27E) */
508 map(0x7e00c000, 0x7e00c00f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w));
509 map(0x7f800000, 0x7f9fffff).rom().share("share2");
510 map(0x7fe00000, 0x7fffffff).rom().region("user1", 0).share("share2"); /* Program ROM */
511 }
512
513
palette_w(offs_t offset,uint32_t data,uint32_t mem_mask)514 void jetwave_state::palette_w(offs_t offset, uint32_t data, uint32_t mem_mask)
515 {
516 COMBINE_DATA(&m_generic_paletteram_32[offset]);
517 data = m_generic_paletteram_32[offset];
518 m_palette->set_pen_color(offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
519 }
520
main_memmap(address_map & map)521 void jetwave_state::main_memmap(address_map &map)
522 {
523 map(0x00000000, 0x000fffff).ram().share("workram"); /* Work RAM */
524 map(0x74000000, 0x740000ff).rw(m_k001604, FUNC(k001604_device::reg_r), FUNC(k001604_device::reg_w));
525 map(0x74010000, 0x7401ffff).ram().w(FUNC(jetwave_state::palette_w)).share("paletteram");
526 map(0x74020000, 0x7403ffff).rw(m_k001604, FUNC(k001604_device::tile_r), FUNC(k001604_device::tile_w));
527 map(0x74040000, 0x7407ffff).rw(m_k001604, FUNC(k001604_device::char_r), FUNC(k001604_device::char_w));
528 map(0x78000000, 0x7800ffff).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_r_ppc), FUNC(konppc_device::cgboard_dsp_shared_w_ppc)); /* 21N 21K 23N 23K */
529 map(0x78010000, 0x7801ffff).w(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_w_ppc));
530 map(0x78040000, 0x7804000f).rw(m_k001006_1, FUNC(k001006_device::read), FUNC(k001006_device::write));
531 map(0x78080000, 0x7808000f).rw(m_k001006_2, FUNC(k001006_device::read), FUNC(k001006_device::write));
532 map(0x780c0000, 0x780c0007).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_comm_r_ppc), FUNC(konppc_device::cgboard_dsp_comm_w_ppc));
533 map(0x7e000000, 0x7e003fff).rw(FUNC(jetwave_state::sysreg_r), FUNC(jetwave_state::sysreg_w));
534 map(0x7e008000, 0x7e009fff).rw("k056230", FUNC(k056230_device::read), FUNC(k056230_device::write)); /* LANC registers */
535 map(0x7e00a000, 0x7e00bfff).rw("k056230", FUNC(k056230_device::lanc_ram_r), FUNC(k056230_device::lanc_ram_w)); /* LANC Buffer RAM (27E) */
536 map(0x7e00c000, 0x7e00c00f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w));
537 map(0x7f000000, 0x7f3fffff).rom().region("user2", 0);
538 map(0x7f800000, 0x7f9fffff).rom().share("share2");
539 map(0x7fe00000, 0x7fffffff).rom().region("user1", 0).share("share2"); /* Program ROM */
540 }
541
542
543
544 /**********************************************************************/
545
sound_ctrl_w(offs_t offset,uint16_t data,uint16_t mem_mask)546 void zr107_state::sound_ctrl_w(offs_t offset, uint16_t data, uint16_t mem_mask)
547 {
548 if (ACCESSING_BITS_0_7)
549 {
550 if (!(data & 1))
551 m_audiocpu->set_input_line(M68K_IRQ_2, CLEAR_LINE);
552
553 m_sound_ctrl = data;
554 }
555 }
556
sound_memmap(address_map & map)557 void zr107_state::sound_memmap(address_map &map)
558 {
559 map(0x000000, 0x01ffff).rom();
560 map(0x100000, 0x103fff).ram(); /* Work RAM */
561 map(0x200000, 0x2004ff).rw("k054539_1", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0xff00);
562 map(0x200000, 0x2004ff).rw("k054539_2", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0x00ff);
563 map(0x400000, 0x40001f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)).umask16(0x00ff);
564 map(0x500000, 0x500001).w(FUNC(zr107_state::sound_ctrl_w));
565 map(0x580000, 0x580001).nopw(); // 'NRES' - D2: K056602 /RESET
566 }
567
568 /*****************************************************************************/
569
570
dsp_dataram_r(offs_t offset)571 uint32_t zr107_state::dsp_dataram_r(offs_t offset)
572 {
573 return m_sharc_dataram[offset] & 0xffff;
574 }
575
dsp_dataram_w(offs_t offset,uint32_t data)576 void zr107_state::dsp_dataram_w(offs_t offset, uint32_t data)
577 {
578 m_sharc_dataram[offset] = data;
579 }
580
sharc_memmap(address_map & map)581 void zr107_state::sharc_memmap(address_map &map)
582 {
583 map(0x400000, 0x41ffff).rw(m_konppc, FUNC(konppc_device::cgboard_0_shared_sharc_r), FUNC(konppc_device::cgboard_0_shared_sharc_w));
584 map(0x500000, 0x5fffff).rw(FUNC(zr107_state::dsp_dataram_r), FUNC(zr107_state::dsp_dataram_w));
585 map(0x600000, 0x6fffff).rw(m_k001005, FUNC(k001005_device::read), FUNC(k001005_device::write));
586 map(0x700000, 0x7000ff).rw(m_konppc, FUNC(konppc_device::cgboard_0_comm_sharc_r), FUNC(konppc_device::cgboard_0_comm_sharc_w));
587 }
588
589 /*****************************************************************************/
590
591
592 static INPUT_PORTS_START( zr107 )
593 PORT_START("IN0")
594 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start/View")
595 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_NAME("Shift Up")
596 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_NAME("Shift Down")
597 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("AT/MT Switch") PORT_TOGGLE
PORT_CODE(KEYCODE_9)598 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_9)
599 PORT_BIT( 0x0b, IP_ACTIVE_LOW, IPT_UNKNOWN )
600
601 PORT_START("IN1")
602 PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
603
604 PORT_START("IN2")
605 PORT_BIT( 0x7f, IP_ACTIVE_HIGH, IPT_UNKNOWN )
606 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("adc0838", adc083x_device, do_read)
607
608 PORT_START("IN4")
609 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* PARAACK */
610 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
611 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("adc0838", adc083x_device, sars_read)
612 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
613
614 PORT_START("EEPROMOUT")
615 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
616 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
617 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
618
619 PORT_START("OUT4")
620 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("adc0838", adc083x_device, cs_write)
621 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("adc0838", adc083x_device, di_write)
622 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("adc0838", adc083x_device, clk_write)
623 INPUT_PORTS_END
624
625 static INPUT_PORTS_START( midnrun )
626 PORT_INCLUDE( zr107 )
627
628 PORT_START("IN3")
629 PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
630 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
631 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
632 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
633 PORT_DIPNAME( 0x0c, 0x0c, "Network ID" ) PORT_DIPLOCATION("SW:4,3")
634 PORT_DIPSETTING( 0x0c, "1" )
635 PORT_DIPSETTING( 0x08, "2" )
636 PORT_DIPSETTING( 0x04, "3" )
637 PORT_DIPSETTING( 0x00, "4" )
638 PORT_DIPNAME( 0x02, 0x02, "Transmission Type" ) PORT_DIPLOCATION("SW:2")
639 PORT_DIPSETTING( 0x02, "Button" )
640 PORT_DIPSETTING( 0x00, "'T'Gate" ) //unused
641 PORT_DIPNAME( 0x01, 0x01, "CG Board Type" ) PORT_DIPLOCATION("SW:1")
642 PORT_DIPSETTING( 0x01, "Single" )
643 PORT_DIPSETTING( 0x00, "Twin" ) //unused
644
645 PORT_START("ANALOG1")
646 PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_NAME("Steering Wheel") PORT_MINMAX(0x00,0xff) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)
647
648 PORT_START("ANALOG2")
649 PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_NAME("Gas Pedal") PORT_MINMAX(0x00,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)
650
651 PORT_START("ANALOG3")
652 PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_NAME("Brake Pedal") PORT_MINMAX(0x00,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)
653 INPUT_PORTS_END
654
655 static INPUT_PORTS_START( jetwave )
656 PORT_INCLUDE( zr107 )
657
658 PORT_MODIFY("IN0")
659 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start/View")
660 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("T-Center") //Non-analog acell
661 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Angle")
662 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_NAME("Left Turn") //Non-analog left
663 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_NAME("Right Turn") //Non-analog right
664 PORT_BIT( 0x07, IP_ACTIVE_LOW, IPT_UNKNOWN )
665
666 PORT_START("IN3")
667 PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
668 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_9)
669 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
670 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
671 PORT_DIPNAME( 0x0c, 0x0c, "Network ID" ) PORT_DIPLOCATION("SW:4,3")
672 PORT_DIPSETTING( 0x0c, "1" )
673 PORT_DIPSETTING( 0x08, "2" )
674 PORT_DIPSETTING( 0x04, "3" )
675 PORT_DIPSETTING( 0x00, "4" )
676 PORT_DIPNAME( 0x02, 0x00, "Drive System" ) PORT_DIPLOCATION("SW:2") //Sensors for force feedback. Todo: "Disable" the sensors so this switch can be set to off without errors.
677 PORT_DIPSETTING( 0x02, "On" ) // Enables the sensors/normal use.
678 PORT_DIPSETTING( 0x00, "Off" ) //Disables and bypasses all sensor checks. This disables the force feedback on actual hardware.
679 PORT_DIPNAME( 0x01, 0x01, "Running Mode" ) PORT_DIPLOCATION("SW:1")
680 PORT_DIPSETTING( 0x01, "Product" ) //Enables the analog inputs; normal usage
681 PORT_DIPSETTING( 0x00, "Check" ) //Disables them for use with a JAMMA interface; intended for development purposes.
682
683 PORT_START("ANALOG1")
684 PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_NAME("Steering") PORT_MINMAX(0x20,0xe0) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_REVERSE
685
686 PORT_START("ANALOG2")
687 PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_NAME("Accelerator") PORT_MINMAX(0x00,0x90) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)
688
689 PORT_START("ANALOG3") //actually required else MAME will crash if this port is removed.
690 PORT_BIT( 0xff, 0x00, IPT_UNUSED )
691 INPUT_PORTS_END
692
693
694 /* ADC0838 Interface */
695
696 double zr107_state::adc0838_callback(uint8_t input)
697 {
698 switch (input)
699 {
700 case ADC083X_CH0:
701 return (double)(5 * m_analog1->read()) / 255.0;
702 case ADC083X_CH1:
703 return (double)(5 * m_analog2->read()) / 255.0;
704 case ADC083X_CH2:
705 return (double)(5 * m_analog3->read()) / 255.0;
706 case ADC083X_VREF:
707 return 5;
708 default:
709 return 0;
710 }
711 }
712
713
714
WRITE_LINE_MEMBER(zr107_state::k054539_irq_gen)715 WRITE_LINE_MEMBER(zr107_state::k054539_irq_gen)
716 {
717 if (m_sound_ctrl & 1)
718 {
719 // Trigger an interrupt on the rising edge
720 if (!m_sound_intck && state)
721 m_audiocpu->set_input_line(M68K_IRQ_2, ASSERT_LINE);
722 }
723
724 m_sound_intck = state;
725 }
726
727
728 /* PowerPC interrupts
729
730 IRQ0: Vblank
731 IRQ2: LANC
732 DMA0
733
734 */
WRITE_LINE_MEMBER(zr107_state::vblank)735 WRITE_LINE_MEMBER(zr107_state::vblank)
736 {
737 if (state)
738 {
739 m_maincpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
740 m_dsp->set_flag_input(1, ASSERT_LINE);
741 }
742 }
743
machine_reset()744 void zr107_state::machine_reset()
745 {
746 m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
747 }
748
zr107(machine_config & config)749 void zr107_state::zr107(machine_config &config)
750 {
751 /* basic machine hardware */
752 PPC403GA(config, m_maincpu, XTAL(64'000'000)/2); /* PowerPC 403GA 32MHz */
753
754 M68000(config, m_audiocpu, XTAL(64'000'000)/8); /* 8MHz */
755 m_audiocpu->set_addrmap(AS_PROGRAM, &zr107_state::sound_memmap);
756
757 ADSP21062(config, m_dsp, XTAL(36'000'000));
758 m_dsp->set_boot_mode(adsp21062_device::BOOT_MODE_EPROM);
759 m_dsp->set_addrmap(AS_DATA, &zr107_state::sharc_memmap);
760
761 EEPROM_93C46_16BIT(config, "eeprom");
762
763 K056230(config, "k056230", m_maincpu);
764
765 WATCHDOG_TIMER(config, m_watchdog);
766
767 /* video hardware */
768 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
769 m_screen->set_refresh_hz(60);
770 m_screen->set_size(64*8, 48*8);
771 m_screen->set_visarea(0*8, 64*8-1, 0*8, 48*8-1);
772 m_screen->screen_vblank().set(FUNC(zr107_state::vblank));
773
774 PALETTE(config, m_palette).set_entries(65536);
775
776 K001005(config, m_k001005, 0, m_k001006_1);
777
778 K001006(config, m_k001006_1, 0);
779 m_k001006_1->set_gfx_region("gfx1");
780
781 K056800(config, m_k056800, XTAL(18'432'000));
782 m_k056800->int_callback().set_inputline(m_audiocpu, M68K_IRQ_1);
783
784 SPEAKER(config, "lspeaker").front_left();
785 SPEAKER(config, "rspeaker").front_right();
786
787 k054539_device &k054539_1(K054539(config, "k054539_1", XTAL(18'432'000)));
788 k054539_1.set_device_rom_tag("k054539");
789 k054539_1.timer_handler().set(FUNC(zr107_state::k054539_irq_gen));
790 k054539_1.add_route(0, "lspeaker", 0.75);
791 k054539_1.add_route(1, "rspeaker", 0.75);
792
793 k054539_device &k054539_2(K054539(config, "k054539_2", XTAL(18'432'000)));
794 k054539_2.set_device_rom_tag("k054539");
795 k054539_2.add_route(0, "lspeaker", 0.75);
796 k054539_2.add_route(1, "rspeaker", 0.75);
797
798 adc0838_device &adc(ADC0838(config, "adc0838"));
799 adc.set_input_callback(FUNC(zr107_state::adc0838_callback));
800
801 KONPPC(config, m_konppc, 0);
802 m_konppc->set_num_boards(1);
803 m_konppc->set_cbboard_type(konppc_device::CGBOARD_TYPE_ZR107);
804 }
805
midnrun(machine_config & config)806 void midnrun_state::midnrun(machine_config &config)
807 {
808 zr107(config);
809 m_maincpu->set_addrmap(AS_PROGRAM, &midnrun_state::main_memmap);
810
811 config.set_maximum_quantum(attotime::from_hz(750000)); // Very high sync needed to prevent lockups - why?
812
813 /* video hardware */
814 m_screen->set_screen_update(FUNC(midnrun_state::screen_update));
815
816 K056832(config, m_k056832, 0);
817 m_k056832->set_tile_callback(FUNC(midnrun_state::tile_callback));
818 m_k056832->set_config(K056832_BPP_8, 1, 0);
819 m_k056832->set_palette(m_palette);
820 }
821
jetwave(machine_config & config)822 void jetwave_state::jetwave(machine_config &config)
823 {
824 zr107(config);
825 m_maincpu->set_addrmap(AS_PROGRAM, &jetwave_state::main_memmap);
826
827 config.set_maximum_quantum(attotime::from_hz(2000000)); // Very high sync needed to prevent lockups - why?
828
829 /* video hardware */
830 m_screen->set_screen_update(FUNC(jetwave_state::screen_update));
831
832 K001604(config, m_k001604, 0);
833 m_k001604->set_layer_size(0);
834 m_k001604->set_roz_size(0);
835 m_k001604->set_txt_mem_offset(0);
836 m_k001604->set_roz_mem_offset(0x4000);
837 m_k001604->set_palette(m_palette);
838
839 // The second K001006 chip connects to the second K001005 chip.
840 // Hook this up when the K001005 separation is understood (seems the load balancing is done on hardware).
841 K001006(config, m_k001006_2, 0);
842 m_k001006_2->set_gfx_region("gfx1");
843
844 m_konppc->set_cbboard_type(konppc_device::CGBOARD_TYPE_GTICLUB);
845 }
846
847 /*****************************************************************************/
848
driver_init()849 void zr107_state::driver_init()
850 {
851 m_sharc_dataram = std::make_unique<uint32_t[]>(0x100000/4);
852 m_ccu_vcth = m_ccu_vctl = 0;
853
854 m_dsp->enable_recompiler();
855 }
856
857 /*****************************************************************************/
858
859 ROM_START( midnrun )
860 ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
861 ROM_LOAD32_BYTE( "476ea1a01.20u", 0x000003, 0x80000, CRC(ea70edf2) SHA1(51c882383a150ba118ccd39eb869525fcf5eee3c) ) /* Program version EAA, v1.11 (EUR) */
862 ROM_LOAD32_BYTE( "476ea1a02.17u", 0x000002, 0x80000, CRC(1462994f) SHA1(c8614c6c416f81737cc77c46eea6d8d440bc8cf3) )
863 ROM_LOAD32_BYTE( "476ea1a03.15u", 0x000001, 0x80000, CRC(b770ae46) SHA1(c61daa8353802957eb1c2e2c6204c3a98569627e) )
864 ROM_LOAD32_BYTE( "476ea1a04.13u", 0x000000, 0x80000, CRC(9644b277) SHA1(b9cb812b6035dfd93032d277c8aa0037cf6b3dbe) )
865
866 ROM_REGION(0x20000, "audiocpu", 0) /* M68K program */
867 ROM_LOAD16_WORD_SWAP( "477a07.19l", 0x000000, 0x20000, CRC(a82c0ba1) SHA1(dad69f2e5e75009d70cc2748477248ec47627c30) )
868
869 ROM_REGION(0x100000, "k056832", 0) /* Tilemap */
870 ROM_LOAD16_BYTE( "477a11.35b", 0x000000, 0x80000, CRC(85eef04b) SHA1(02e26d2d4a8b29894370f28d2a49fdf5c7d23f95) )
871 ROM_LOAD16_BYTE( "477a12.35a", 0x000001, 0x80000, CRC(451d7777) SHA1(0bf280ca475100778bbfd3f023547bf0413fc8b7) )
872
873 ROM_REGION(0x800000, "gfx1", 0) /* Texture data */
874 ROM_LOAD64_WORD( "477a13.9h", 0x000000, 0x200000, CRC(b1ee901d) SHA1(b1432cb1379b35d99d3f2b7f6409db6f7e88121d) )
875 ROM_LOAD64_WORD( "477a14.7h", 0x000002, 0x200000, CRC(9ffa8cc5) SHA1(eaa19e26df721bec281444ca1c5ccc9e48df1b0b) )
876 ROM_LOAD64_WORD( "477a15.5h", 0x000004, 0x200000, CRC(e337fce7) SHA1(c84875f3275efd47273508b340231721f5a631d2) )
877 ROM_LOAD64_WORD( "477a16.2h", 0x000006, 0x200000, CRC(2c03ee63) SHA1(6b74d340dddf92bb4e4b1e037f003d58c65d8d9b) )
878
879 ROM_REGION(0x600000, "k054539", 0) /* Sound data */
880 ROM_LOAD( "477a08.5r", 0x000000, 0x200000, CRC(d320dbde) SHA1(eb602cad6ac7c7151c9f29d39b10041d5a354164) )
881 ROM_LOAD( "477a09.3r", 0x200000, 0x200000, CRC(f431e29f) SHA1(e6082d88f86abb63d02ac34e70873b58f88b0ddc) )
882 ROM_LOAD( "477a10.5n", 0x400000, 0x200000, CRC(8db31bd4) SHA1(d662d3bb6e8b44a01ffa158f5d7425454aad49a3) )
883 ROM_END
884
885 ROM_START( midnrunj )
886 ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
887 ROM_LOAD32_BYTE( "476ja1d01.20u", 0x000003, 0x80000, CRC(68d05950) SHA1(d0ff9b9b628563e18a3eaa7b96b7e9e442c001a9) ) /* Program version JAD, v1.10 (JPN) */
888 ROM_LOAD32_BYTE( "476ja1d02.17u", 0x000002, 0x80000, CRC(b12a14be) SHA1(d65281791874b90351442b94173d96582cfacd10) )
889 ROM_LOAD32_BYTE( "476ja1d03.15u", 0x000001, 0x80000, CRC(f768c8f1) SHA1(b8242995bdb4f9ac078fd59ffc70c31014396c92) )
890 ROM_LOAD32_BYTE( "476ja1d04.13u", 0x000000, 0x80000, CRC(6fd4fce7) SHA1(0ef25ec98a13f7beca1231db5a4db9004caadb0b) )
891
892 ROM_REGION(0x20000, "audiocpu", 0) /* M68K program */
893 ROM_LOAD16_WORD_SWAP( "477a07.19l", 0x000000, 0x20000, CRC(a82c0ba1) SHA1(dad69f2e5e75009d70cc2748477248ec47627c30) )
894
895 ROM_REGION(0x100000, "k056832", 0) /* Tilemap */
896 ROM_LOAD16_BYTE( "477a11.35b", 0x000000, 0x80000, CRC(85eef04b) SHA1(02e26d2d4a8b29894370f28d2a49fdf5c7d23f95) )
897 ROM_LOAD16_BYTE( "477a12.35a", 0x000001, 0x80000, CRC(451d7777) SHA1(0bf280ca475100778bbfd3f023547bf0413fc8b7) )
898
899 ROM_REGION(0x800000, "gfx1", 0) /* Texture data */
900 ROM_LOAD64_WORD( "477a13.9h", 0x000000, 0x200000, CRC(b1ee901d) SHA1(b1432cb1379b35d99d3f2b7f6409db6f7e88121d) )
901 ROM_LOAD64_WORD( "477a14.7h", 0x000002, 0x200000, CRC(9ffa8cc5) SHA1(eaa19e26df721bec281444ca1c5ccc9e48df1b0b) )
902 ROM_LOAD64_WORD( "477a15.5h", 0x000004, 0x200000, CRC(e337fce7) SHA1(c84875f3275efd47273508b340231721f5a631d2) )
903 ROM_LOAD64_WORD( "477a16.2h", 0x000006, 0x200000, CRC(2c03ee63) SHA1(6b74d340dddf92bb4e4b1e037f003d58c65d8d9b) )
904
905 ROM_REGION(0x600000, "k054539", 0) /* Sound data */
906 ROM_LOAD( "477a08.5r", 0x000000, 0x200000, CRC(d320dbde) SHA1(eb602cad6ac7c7151c9f29d39b10041d5a354164) )
907 ROM_LOAD( "477a09.3r", 0x200000, 0x200000, CRC(f431e29f) SHA1(e6082d88f86abb63d02ac34e70873b58f88b0ddc) )
908 ROM_LOAD( "477a10.5n", 0x400000, 0x200000, CRC(8db31bd4) SHA1(d662d3bb6e8b44a01ffa158f5d7425454aad49a3) )
909 ROM_END
910
911 ROM_START( midnruna )
912 ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
913 ROM_LOAD32_BYTE( "477aaa01.20u", 0x000003, 0x80000, CRC(3aa31517) SHA1(315d9c3c930493e39bc497ceafa0c4ef6fa64e4d) ) /* Program version AAA, v1.10 (ASA) */
914 ROM_LOAD32_BYTE( "477aaa02.17u", 0x000002, 0x80000, CRC(c506bd3d) SHA1(d44ed2cb39f0da44f681190132c7603dfca813d9) )
915 ROM_LOAD32_BYTE( "477aaa03.15u", 0x000001, 0x80000, CRC(53f8e898) SHA1(ba83a60a411bb307cb0e424099716ccf888a4f39) )
916 ROM_LOAD32_BYTE( "477aaa04.13u", 0x000000, 0x80000, CRC(0eb264b7) SHA1(179a3d58c0f554fd1b283ee3640ce09d5142b288) )
917
918 ROM_REGION(0x20000, "audiocpu", 0) /* M68K program */
919 ROM_LOAD16_WORD_SWAP( "477a07.19l", 0x000000, 0x20000, CRC(a82c0ba1) SHA1(dad69f2e5e75009d70cc2748477248ec47627c30) )
920
921 ROM_REGION(0x100000, "k056832", 0) /* Tilemap */
922 ROM_LOAD16_BYTE( "477a11.35b", 0x000000, 0x80000, CRC(85eef04b) SHA1(02e26d2d4a8b29894370f28d2a49fdf5c7d23f95) )
923 ROM_LOAD16_BYTE( "477a12.35a", 0x000001, 0x80000, CRC(451d7777) SHA1(0bf280ca475100778bbfd3f023547bf0413fc8b7) )
924
925 ROM_REGION(0x800000, "gfx1", 0) /* Texture data */
926 ROM_LOAD64_WORD( "477a13.9h", 0x000000, 0x200000, CRC(b1ee901d) SHA1(b1432cb1379b35d99d3f2b7f6409db6f7e88121d) )
927 ROM_LOAD64_WORD( "477a14.7h", 0x000002, 0x200000, CRC(9ffa8cc5) SHA1(eaa19e26df721bec281444ca1c5ccc9e48df1b0b) )
928 ROM_LOAD64_WORD( "477a15.5h", 0x000004, 0x200000, CRC(e337fce7) SHA1(c84875f3275efd47273508b340231721f5a631d2) )
929 ROM_LOAD64_WORD( "477a16.2h", 0x000006, 0x200000, CRC(2c03ee63) SHA1(6b74d340dddf92bb4e4b1e037f003d58c65d8d9b) )
930
931 ROM_REGION(0x600000, "k054539", 0) /* Sound data */
932 ROM_LOAD( "477a08.5r", 0x000000, 0x200000, CRC(d320dbde) SHA1(eb602cad6ac7c7151c9f29d39b10041d5a354164) )
933 ROM_LOAD( "477a09.3r", 0x200000, 0x200000, CRC(f431e29f) SHA1(e6082d88f86abb63d02ac34e70873b58f88b0ddc) )
934 ROM_LOAD( "477a10.5n", 0x400000, 0x200000, CRC(8db31bd4) SHA1(d662d3bb6e8b44a01ffa158f5d7425454aad49a3) )
935 ROM_END
936
937 ROM_START( midnruna2 )
938 ROM_REGION(0x200000, "user1", 0) // PowerPC program roms
939 ROM_LOAD32_BYTE( "477ab1d01.20u", 0x000003, 0x80000, CRC(3aa31517) SHA1(315d9c3c930493e39bc497ceafa0c4ef6fa64e4d) ) // labeled AB1, but still program version AAA, v1.10 (ASA)
940 ROM_LOAD32_BYTE( "477ab1d02.17u", 0x000002, 0x80000, CRC(c506bd3d) SHA1(d44ed2cb39f0da44f681190132c7603dfca813d9) )
941 ROM_LOAD32_BYTE( "477ab1d03.15u", 0x000001, 0x80000, CRC(53f8e898) SHA1(ba83a60a411bb307cb0e424099716ccf888a4f39) )
942 ROM_LOAD32_BYTE( "477ab1d04.13u", 0x000000, 0x80000, CRC(0eb264b7) SHA1(179a3d58c0f554fd1b283ee3640ce09d5142b288) )
943
944 ROM_REGION(0x20000, "audiocpu", 0) // M68K program
945 ROM_LOAD16_WORD_SWAP( "477b07.19l", 0x000000, 0x20000, CRC(2d00cf76) SHA1(152bed061c59e29864d735f8beba2a49136f7212) )
946
947 ROM_REGION(0x100000, "k056832", 0) // Tilemap
948 ROM_LOAD16_BYTE( "477a11.35b", 0x000000, 0x80000, CRC(85eef04b) SHA1(02e26d2d4a8b29894370f28d2a49fdf5c7d23f95) )
949 ROM_LOAD16_BYTE( "477a12.35a", 0x000001, 0x80000, CRC(451d7777) SHA1(0bf280ca475100778bbfd3f023547bf0413fc8b7) )
950
951 ROM_REGION(0x800000, "gfx1", 0) // Texture data
952 ROM_LOAD64_WORD( "477a13.9h", 0x000000, 0x200000, CRC(b1ee901d) SHA1(b1432cb1379b35d99d3f2b7f6409db6f7e88121d) )
953 ROM_LOAD64_WORD( "477a14.7h", 0x000002, 0x200000, CRC(9ffa8cc5) SHA1(eaa19e26df721bec281444ca1c5ccc9e48df1b0b) )
954 ROM_LOAD64_WORD( "477a15.5h", 0x000004, 0x200000, CRC(e337fce7) SHA1(c84875f3275efd47273508b340231721f5a631d2) )
955 ROM_LOAD64_WORD( "477a16.2h", 0x000006, 0x200000, CRC(2c03ee63) SHA1(6b74d340dddf92bb4e4b1e037f003d58c65d8d9b) )
956
957 ROM_REGION(0x600000, "k054539", 0) // Sound data
958 ROM_LOAD( "477a08.5r", 0x000000, 0x200000, CRC(d320dbde) SHA1(eb602cad6ac7c7151c9f29d39b10041d5a354164) )
959 ROM_LOAD( "477a09.3r", 0x200000, 0x200000, CRC(f431e29f) SHA1(e6082d88f86abb63d02ac34e70873b58f88b0ddc) )
960 ROM_LOAD( "477a10.5n", 0x400000, 0x200000, CRC(8db31bd4) SHA1(d662d3bb6e8b44a01ffa158f5d7425454aad49a3) )
961 ROM_END
962
963 ROM_START( windheat )
964 ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
965 ROM_LOAD32_BYTE( "677eaa01.20u", 0x000003, 0x080000, CRC(500b61f4) SHA1(ec39165412978c0dbd3cbf1f7b6989b5d7ba20a0) ) /* Program version EAA, v2.11 (EUR) */
966 ROM_LOAD32_BYTE( "677eaa02.17u", 0x000002, 0x080000, CRC(99f9fd3b) SHA1(aaec5d7f4e46648aab3738ab09e46b312caee58f) )
967 ROM_LOAD32_BYTE( "677eaa03.15u", 0x000001, 0x080000, CRC(c46eba6b) SHA1(80fea082d09071875d30a6a838736cf3a3e4501d) )
968 ROM_LOAD32_BYTE( "677eaa04.13u", 0x000000, 0x080000, CRC(20dfcf4e) SHA1(4de8e22507f4719441f14fe96e25f0e0712dfa95) )
969
970 ROM_REGION(0x20000, "audiocpu", 0) /* M68K program */
971 ROM_LOAD16_WORD_SWAP( "677a07.19l", 0x000000, 0x020000, CRC(05b14f2d) SHA1(3753f71173594ee741980e08eed0f7c3fc3588c9) )
972
973 ROM_REGION(0x100000, "k056832", 0) /* Tilemap */
974 ROM_LOAD16_BYTE( "677a11.35b", 0x000000, 0x080000, CRC(bf34f00f) SHA1(ca0d390c8b30d0cfdad4cfe5a601cc1f6e8c263d) )
975 ROM_LOAD16_BYTE( "677a12.35a", 0x000001, 0x080000, CRC(458f0b1d) SHA1(8e11023c75c80b496dfc62b6645cfedcf2a80db4) )
976
977 ROM_REGION(0x800000, "gfx1", 0) /* Texture data */
978 ROM_LOAD64_WORD( "677a13.9h", 0x000000, 0x200000, CRC(7937d226) SHA1(c2ba777292c293e31068eeb3a27353ad2595b413) )
979 ROM_LOAD64_WORD( "677a14.7h", 0x000002, 0x200000, CRC(2568cf41) SHA1(6ed01922943486dafbdc863b76b2036c1fbe5281) )
980 ROM_LOAD64_WORD( "677a15.5h", 0x000004, 0x200000, CRC(62e2c3dd) SHA1(c9127ed70bdff947c3da2908a08974091615a685) )
981 ROM_LOAD64_WORD( "677a16.2h", 0x000006, 0x200000, CRC(7cc75539) SHA1(4bd8d88debf7489f30008bd4cbded67cb1a20ab0) )
982
983 ROM_REGION(0x600000, "k054539", 0) /* Sound data */
984 ROM_LOAD( "677a08.5r", 0x000000, 0x200000, CRC(bde38850) SHA1(aaf1bdfc25ecdffc1f6076c9c1b2edbe263171d2) )
985 ROM_LOAD( "677a09.3r", 0x200000, 0x200000, CRC(4dfc1ea9) SHA1(4ab264c1902b522bc0589766e42f2b6ca276808d) )
986 ROM_LOAD( "677a10.5n", 0x400000, 0x200000, CRC(d8f77a68) SHA1(ff251863ef096f0864f6cbe6caa43b0aa299d9ee) )
987 ROM_END
988
989 ROM_START( windheatu )
990 ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
991 ROM_LOAD32_BYTE( "677ubc01.20u", 0x000003, 0x080000, CRC(63198721) SHA1(7f34131bf51d573d0c683b28df2567a0b911c98c) ) /* Program version UBC, v2.22 (USA) */
992 ROM_LOAD32_BYTE( "677ubc02.17u", 0x000002, 0x080000, CRC(bdb00e2d) SHA1(c54b2250047576e12e9936300989e40494b4659d) )
993 ROM_LOAD32_BYTE( "677ubc03.15u", 0x000001, 0x080000, CRC(0f7d8c1f) SHA1(63de03c7be794b6dae8d0af69e894ac573dbbc11) )
994 ROM_LOAD32_BYTE( "677ubc04.13u", 0x000000, 0x080000, CRC(4e42791c) SHA1(a53c6374c6b46db578be4ced2ee7c2af7062d961) )
995
996 ROM_REGION(0x20000, "audiocpu", 0) /* M68K program */
997 ROM_LOAD16_WORD_SWAP( "677a07.19l", 0x000000, 0x020000, CRC(05b14f2d) SHA1(3753f71173594ee741980e08eed0f7c3fc3588c9) )
998
999 ROM_REGION(0x100000, "k056832", 0) /* Tilemap */
1000 ROM_LOAD16_BYTE( "677a11.35b", 0x000000, 0x080000, CRC(bf34f00f) SHA1(ca0d390c8b30d0cfdad4cfe5a601cc1f6e8c263d) )
1001 ROM_LOAD16_BYTE( "677a12.35a", 0x000001, 0x080000, CRC(458f0b1d) SHA1(8e11023c75c80b496dfc62b6645cfedcf2a80db4) )
1002
1003 ROM_REGION(0x800000, "gfx1", 0) /* Texture data */
1004 ROM_LOAD64_WORD( "677a13.9h", 0x000000, 0x200000, CRC(7937d226) SHA1(c2ba777292c293e31068eeb3a27353ad2595b413) )
1005 ROM_LOAD64_WORD( "677a14.7h", 0x000002, 0x200000, CRC(2568cf41) SHA1(6ed01922943486dafbdc863b76b2036c1fbe5281) )
1006 ROM_LOAD64_WORD( "677a15.5h", 0x000004, 0x200000, CRC(62e2c3dd) SHA1(c9127ed70bdff947c3da2908a08974091615a685) )
1007 ROM_LOAD64_WORD( "677a16.2h", 0x000006, 0x200000, CRC(7cc75539) SHA1(4bd8d88debf7489f30008bd4cbded67cb1a20ab0) )
1008
1009 ROM_REGION(0x600000, "k054539", 0) /* Sound data */
1010 ROM_LOAD( "677a08.5r", 0x000000, 0x200000, CRC(bde38850) SHA1(aaf1bdfc25ecdffc1f6076c9c1b2edbe263171d2) )
1011 ROM_LOAD( "677a09.3r", 0x200000, 0x200000, CRC(4dfc1ea9) SHA1(4ab264c1902b522bc0589766e42f2b6ca276808d) )
1012 ROM_LOAD( "677a10.5n", 0x400000, 0x200000, CRC(d8f77a68) SHA1(ff251863ef096f0864f6cbe6caa43b0aa299d9ee) )
1013 ROM_END
1014
1015 ROM_START( windheatj )
1016 ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
1017 ROM_LOAD32_BYTE( "677jaa01.20u", 0x000003, 0x080000, CRC(559b8def) SHA1(6f2e8f29b0d9a950e71015270560813adc20b689) ) /* Program version JAA, v2.11 (JPN) */
1018 ROM_LOAD32_BYTE( "677jaa02.17u", 0x000002, 0x080000, CRC(cc230575) SHA1(be2da67600ab5edad2e8b7711c4cf985befe28bf) )
1019 ROM_LOAD32_BYTE( "677jaa03.15u", 0x000001, 0x080000, CRC(20b04701) SHA1(463be36c7f65b4aa3c3f2b1f37d1e6c1f5106cbb) )
1020 ROM_LOAD32_BYTE( "677jaa04.13u", 0x000000, 0x080000, CRC(f563b2a5) SHA1(b55b486b6af926eff4729f402116d45b61c5d25a) )
1021
1022 ROM_REGION(0x20000, "audiocpu", 0) /* M68K program */
1023 ROM_LOAD16_WORD_SWAP( "677a07.19l", 0x000000, 0x020000, CRC(05b14f2d) SHA1(3753f71173594ee741980e08eed0f7c3fc3588c9) )
1024
1025 ROM_REGION(0x100000, "k056832", 0) /* Tilemap */
1026 ROM_LOAD16_BYTE( "677a11.35b", 0x000000, 0x080000, CRC(bf34f00f) SHA1(ca0d390c8b30d0cfdad4cfe5a601cc1f6e8c263d) )
1027 ROM_LOAD16_BYTE( "677a12.35a", 0x000001, 0x080000, CRC(458f0b1d) SHA1(8e11023c75c80b496dfc62b6645cfedcf2a80db4) )
1028
1029 ROM_REGION(0x800000, "gfx1", 0) /* Texture data */
1030 ROM_LOAD64_WORD( "677a13.9h", 0x000000, 0x200000, CRC(7937d226) SHA1(c2ba777292c293e31068eeb3a27353ad2595b413) )
1031 ROM_LOAD64_WORD( "677a14.7h", 0x000002, 0x200000, CRC(2568cf41) SHA1(6ed01922943486dafbdc863b76b2036c1fbe5281) )
1032 ROM_LOAD64_WORD( "677a15.5h", 0x000004, 0x200000, CRC(62e2c3dd) SHA1(c9127ed70bdff947c3da2908a08974091615a685) )
1033 ROM_LOAD64_WORD( "677a16.2h", 0x000006, 0x200000, CRC(7cc75539) SHA1(4bd8d88debf7489f30008bd4cbded67cb1a20ab0) )
1034
1035 ROM_REGION(0x600000, "k054539", 0) /* Sound data */
1036 ROM_LOAD( "677a08.5r", 0x000000, 0x200000, CRC(bde38850) SHA1(aaf1bdfc25ecdffc1f6076c9c1b2edbe263171d2) )
1037 ROM_LOAD( "677a09.3r", 0x200000, 0x200000, CRC(4dfc1ea9) SHA1(4ab264c1902b522bc0589766e42f2b6ca276808d) )
1038 ROM_LOAD( "677a10.5n", 0x400000, 0x200000, CRC(d8f77a68) SHA1(ff251863ef096f0864f6cbe6caa43b0aa299d9ee) )
1039 ROM_END
1040
1041 ROM_START( windheata )
1042 ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
1043 ROM_LOAD32_BYTE( "677aaa01.20u", 0x000003, 0x080000, CRC(0d88d0e2) SHA1(93da258bfdb2baa1796916ea8350fff521d43373) ) /* Program version AAA, 2.11 (ASA) */
1044 ROM_LOAD32_BYTE( "677aaa02.17u", 0x000002, 0x080000, CRC(f71044a3) SHA1(a88990d4a65b610f695f4a6ff42868d04f6ba1b3) )
1045 ROM_LOAD32_BYTE( "677aaa03.15u", 0x000001, 0x080000, CRC(3c897588) SHA1(718b0eb57f23a3117d2ad3c58e53196f72fc61bf) )
1046 ROM_LOAD32_BYTE( "677aaa04.13u", 0x000000, 0x080000, CRC(aee84b7d) SHA1(b69a44e51e21f28bcd5cd87297066fc7ba7b5043) )
1047
1048 ROM_REGION(0x20000, "audiocpu", 0) /* M68K program */
1049 ROM_LOAD16_WORD_SWAP( "677a07.19l", 0x000000, 0x020000, CRC(05b14f2d) SHA1(3753f71173594ee741980e08eed0f7c3fc3588c9) )
1050
1051 ROM_REGION(0x100000, "k056832", 0) /* Tilemap */
1052 ROM_LOAD16_BYTE( "677a11.35b", 0x000000, 0x080000, CRC(bf34f00f) SHA1(ca0d390c8b30d0cfdad4cfe5a601cc1f6e8c263d) )
1053 ROM_LOAD16_BYTE( "677a12.35a", 0x000001, 0x080000, CRC(458f0b1d) SHA1(8e11023c75c80b496dfc62b6645cfedcf2a80db4) )
1054
1055 ROM_REGION(0x800000, "gfx1", 0) /* Texture data */
1056 ROM_LOAD64_WORD( "677a13.9h", 0x000000, 0x200000, CRC(7937d226) SHA1(c2ba777292c293e31068eeb3a27353ad2595b413) )
1057 ROM_LOAD64_WORD( "677a14.7h", 0x000002, 0x200000, CRC(2568cf41) SHA1(6ed01922943486dafbdc863b76b2036c1fbe5281) )
1058 ROM_LOAD64_WORD( "677a15.5h", 0x000004, 0x200000, CRC(62e2c3dd) SHA1(c9127ed70bdff947c3da2908a08974091615a685) )
1059 ROM_LOAD64_WORD( "677a16.2h", 0x000006, 0x200000, CRC(7cc75539) SHA1(4bd8d88debf7489f30008bd4cbded67cb1a20ab0) )
1060
1061 ROM_REGION(0x600000, "k054539", 0) /* Sound data */
1062 ROM_LOAD( "677a08.5r", 0x000000, 0x200000, CRC(bde38850) SHA1(aaf1bdfc25ecdffc1f6076c9c1b2edbe263171d2) )
1063 ROM_LOAD( "677a09.3r", 0x200000, 0x200000, CRC(4dfc1ea9) SHA1(4ab264c1902b522bc0589766e42f2b6ca276808d) )
1064 ROM_LOAD( "677a10.5n", 0x400000, 0x200000, CRC(d8f77a68) SHA1(ff251863ef096f0864f6cbe6caa43b0aa299d9ee) )
1065 ROM_END
1066
1067 ROM_START( jetwave )
1068 ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
1069 ROM_LOAD32_BYTE( "678eab01.20u", 0x000003, 0x080000, CRC(bc657198) SHA1(e521bb2c1b1a3ae934c98ce1656d35821fc287c9) ) /* Program version EAB, EUR v1.04 */
1070 ROM_LOAD32_BYTE( "678eab02.17u", 0x000002, 0x080000, CRC(a9a57090) SHA1(ae0273b00c64687f8f835aba531580654edd1097) )
1071 ROM_LOAD32_BYTE( "678eab03.15u", 0x000001, 0x080000, CRC(483aaff0) SHA1(86e011337532f6ff0174393758784b276143ba10) )
1072 ROM_LOAD32_BYTE( "678eab04.13u", 0x000000, 0x080000, CRC(c7580d72) SHA1(6a5652365a85917ac48b0f1ced70b9c311e89a4f) )
1073
1074 ROM_REGION(0x20000, "audiocpu", 0) /* M68K program */
1075 ROM_LOAD16_WORD_SWAP( "678a07.19l", 0x000000, 0x020000, CRC(bb3f5875) SHA1(97f80d9b55d4177217b7cd1ba14e8ed2d64376bb) )
1076
1077 ROM_REGION32_BE(0x400000, "user2", 0) /* data roms */
1078 ROM_LOAD32_WORD_SWAP( "685a05.10u", 0x000000, 0x200000, CRC(00e59741) SHA1(d799910d4e85482b0e92a3cc9043f81d97b2fb02) )
1079 ROM_LOAD32_WORD_SWAP( "685a06.8u", 0x000002, 0x200000, CRC(fc98c6a5) SHA1(a84583bb7296fa9e0c284b2ac59e2dc7b2689eee) )
1080
1081 ROM_REGION(0x800000, "gfx1", 0) /* Texture data */
1082 ROM_LOAD64_WORD( "678a13.18d", 0x000000, 0x200000, CRC(ccf75722) SHA1(f48d21dfc4f82adbb4c9c841a809267cfd028a3d) )
1083 ROM_LOAD64_WORD( "678a14.13d", 0x000002, 0x200000, CRC(333a1ab4) SHA1(79df4a98b7871eba4157307a7709da8f8b5da39b) )
1084 ROM_LOAD64_WORD( "678a15.9d", 0x000004, 0x200000, CRC(58b670f8) SHA1(5d4facb00e34de3ad11ed60c19835918a9cf6cb9) )
1085 ROM_LOAD64_WORD( "678a16.4d", 0x000006, 0x200000, CRC(137b9bff) SHA1(5052c1fa30cc1d6affd78f48d483415dca89d10b) )
1086
1087 ROM_REGION(0x600000, "k054539", 0) /* Sound data */
1088 ROM_LOAD( "678a08.5r", 0x000000, 0x200000, CRC(4aeb61ad) SHA1(ec6872cb2e4776849963f48c1c245ca7697849e0) )
1089 ROM_LOAD( "678a09.3r", 0x200000, 0x200000, CRC(39baef23) SHA1(9f7bda0f9c06eee94703f9ceb06975c8e28338cc) )
1090 ROM_LOAD( "678a10.5n", 0x400000, 0x200000, CRC(0508280e) SHA1(a36c5dc377b0ba597f131bd9dfc6019e7fc2d243) )
1091 ROM_END
1092
1093 ROM_START( waveshrk )
1094 ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
1095 ROM_LOAD32_BYTE( "678uab01.20u", 0x000003, 0x080000, CRC(a9b9ceed) SHA1(36f0d18481d7c3e7358e02473e54bc6b52d5c26b) ) /* Program version UAB, USA v1.04 */
1096 ROM_LOAD32_BYTE( "678uab02.17u", 0x000002, 0x080000, CRC(5ed24ac8) SHA1(d659c751558d4f8d89314466a37c04ac2df46879) )
1097 ROM_LOAD32_BYTE( "678uab03.15u", 0x000001, 0x080000, CRC(f4a595e7) SHA1(e05e7ea6613ecf70d8470af5fe0c6a7274c6e45b) )
1098 ROM_LOAD32_BYTE( "678uab04.13u", 0x000000, 0x080000, CRC(fd3320a7) SHA1(03a50a7bba9eb7cdb9f84953d6fb5c09f2d4b2db) )
1099
1100 ROM_REGION(0x20000, "audiocpu", 0) /* M68K program */
1101 ROM_LOAD16_WORD_SWAP( "678a07.19l", 0x000000, 0x020000, CRC(bb3f5875) SHA1(97f80d9b55d4177217b7cd1ba14e8ed2d64376bb) )
1102
1103 ROM_REGION32_BE(0x400000, "user2", 0) /* data roms */
1104 ROM_LOAD32_WORD_SWAP( "685a05.10u", 0x000000, 0x200000, CRC(00e59741) SHA1(d799910d4e85482b0e92a3cc9043f81d97b2fb02) )
1105 ROM_LOAD32_WORD_SWAP( "685a06.8u", 0x000002, 0x200000, CRC(fc98c6a5) SHA1(a84583bb7296fa9e0c284b2ac59e2dc7b2689eee) )
1106
1107 ROM_REGION(0x800000, "gfx1", 0) /* Texture data */
1108 ROM_LOAD64_WORD( "678a13.18d", 0x000000, 0x200000, CRC(ccf75722) SHA1(f48d21dfc4f82adbb4c9c841a809267cfd028a3d) )
1109 ROM_LOAD64_WORD( "678a14.13d", 0x000002, 0x200000, CRC(333a1ab4) SHA1(79df4a98b7871eba4157307a7709da8f8b5da39b) )
1110 ROM_LOAD64_WORD( "678a15.9d", 0x000004, 0x200000, CRC(58b670f8) SHA1(5d4facb00e34de3ad11ed60c19835918a9cf6cb9) )
1111 ROM_LOAD64_WORD( "678a16.4d", 0x000006, 0x200000, CRC(137b9bff) SHA1(5052c1fa30cc1d6affd78f48d483415dca89d10b) )
1112
1113 ROM_REGION(0x600000, "k054539", 0) /* Sound data */
1114 ROM_LOAD( "678a08.5r", 0x000000, 0x200000, CRC(4aeb61ad) SHA1(ec6872cb2e4776849963f48c1c245ca7697849e0) )
1115 ROM_LOAD( "678a09.3r", 0x200000, 0x200000, CRC(39baef23) SHA1(9f7bda0f9c06eee94703f9ceb06975c8e28338cc) )
1116 ROM_LOAD( "678a10.5n", 0x400000, 0x200000, CRC(0508280e) SHA1(a36c5dc377b0ba597f131bd9dfc6019e7fc2d243) )
1117 ROM_END
1118
1119 ROM_START( jetwavej )
1120 ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
1121 ROM_LOAD32_BYTE( "678jab01.20u", 0x000003, 0x080000, CRC(fa3da5cc) SHA1(33307e701e6eb28d44e0653ac3f1de47fc17779d) ) /* Program version JAB, JPN v1.04 */
1122 ROM_LOAD32_BYTE( "678jab02.17u", 0x000002, 0x080000, CRC(01c6713e) SHA1(68e27c018f974e820ba2e99d89a743e53faf1e65) )
1123 ROM_LOAD32_BYTE( "678jab03.15u", 0x000001, 0x080000, CRC(21c757cb) SHA1(1de6df8e4c52d40882cbf771ff7215ed7b53f251) )
1124 ROM_LOAD32_BYTE( "678jab04.13u", 0x000000, 0x080000, CRC(fdcc1ecc) SHA1(206cb98a6587cd8e5a9287037d85f392bd2f6e82) )
1125
1126 ROM_REGION(0x20000, "audiocpu", 0) /* M68K program */
1127 ROM_LOAD16_WORD_SWAP( "678a07.19l", 0x000000, 0x020000, CRC(bb3f5875) SHA1(97f80d9b55d4177217b7cd1ba14e8ed2d64376bb) )
1128
1129 ROM_REGION32_BE(0x400000, "user2", 0) /* data roms */
1130 ROM_LOAD32_WORD_SWAP( "685a05.10u", 0x000000, 0x200000, CRC(00e59741) SHA1(d799910d4e85482b0e92a3cc9043f81d97b2fb02) )
1131 ROM_LOAD32_WORD_SWAP( "685a06.8u", 0x000002, 0x200000, CRC(fc98c6a5) SHA1(a84583bb7296fa9e0c284b2ac59e2dc7b2689eee) )
1132
1133 ROM_REGION(0x800000, "gfx1", 0) /* Texture data */
1134 ROM_LOAD64_WORD( "678a13.18d", 0x000000, 0x200000, CRC(ccf75722) SHA1(f48d21dfc4f82adbb4c9c841a809267cfd028a3d) )
1135 ROM_LOAD64_WORD( "678a14.13d", 0x000002, 0x200000, CRC(333a1ab4) SHA1(79df4a98b7871eba4157307a7709da8f8b5da39b) )
1136 ROM_LOAD64_WORD( "678a15.9d", 0x000004, 0x200000, CRC(58b670f8) SHA1(5d4facb00e34de3ad11ed60c19835918a9cf6cb9) )
1137 ROM_LOAD64_WORD( "678a16.4d", 0x000006, 0x200000, CRC(137b9bff) SHA1(5052c1fa30cc1d6affd78f48d483415dca89d10b) )
1138
1139 ROM_REGION(0x600000, "k054539", 0) /* Sound data */
1140 ROM_LOAD( "678a08.5r", 0x000000, 0x200000, CRC(4aeb61ad) SHA1(ec6872cb2e4776849963f48c1c245ca7697849e0) )
1141 ROM_LOAD( "678a09.3r", 0x200000, 0x200000, CRC(39baef23) SHA1(9f7bda0f9c06eee94703f9ceb06975c8e28338cc) )
1142 ROM_LOAD( "678a10.5n", 0x400000, 0x200000, CRC(0508280e) SHA1(a36c5dc377b0ba597f131bd9dfc6019e7fc2d243) )
1143 ROM_END
1144
1145 /*****************************************************************************/
1146
1147 GAME( 1995, midnrun, 0, midnrun, midnrun, midnrun_state, driver_init, ROT0, "Konami", "Midnight Run: Road Fighter 2 (EAA, Euro v1.11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN )
1148 GAME( 1995, midnrunj, midnrun, midnrun, midnrun, midnrun_state, driver_init, ROT0, "Konami", "Midnight Run: Road Fighter 2 (JAD, Japan v1.10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN )
1149 GAME( 1995, midnruna, midnrun, midnrun, midnrun, midnrun_state, driver_init, ROT0, "Konami", "Midnight Run: Road Fighter 2 (AAA, Asia v1.10, older sound program)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN )
1150 GAME( 1995, midnruna2, midnrun, midnrun, midnrun, midnrun_state, driver_init, ROT0, "Konami", "Midnight Run: Road Fighter 2 (AAA, Asia v1.10, newer sound program)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN )
1151 GAME( 1996, windheat, 0, midnrun, midnrun, midnrun_state, driver_init, ROT0, "Konami", "Winding Heat (EAA, Euro v2.11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN )
1152 GAME( 1996, windheatu, windheat, midnrun, midnrun, midnrun_state, driver_init, ROT0, "Konami", "Winding Heat (UBC, USA v2.22)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN )
1153 GAME( 1996, windheatj, windheat, midnrun, midnrun, midnrun_state, driver_init, ROT0, "Konami", "Winding Heat (JAA, Japan v2.11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN )
1154 GAME( 1996, windheata, windheat, midnrun, midnrun, midnrun_state, driver_init, ROT0, "Konami", "Winding Heat (AAA, Asia v2.11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN )
1155 GAME( 1996, jetwave, 0, jetwave, jetwave, jetwave_state, driver_init, ROT0, "Konami", "Jet Wave (EAB, Euro v1.04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN )
1156 GAME( 1996, waveshrk, jetwave, jetwave, jetwave, jetwave_state, driver_init, ROT0, "Konami", "Wave Shark (UAB, USA v1.04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN )
1157 GAME( 1996, jetwavej, jetwave, jetwave, jetwave, jetwave_state, driver_init, ROT0, "Konami", "Jet Wave (JAB, Japan v1.04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN )
1158