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