1 // license:BSD-3-Clause
2 // copyright-holders:Philip Bennett
3 /***************************************************************************
4 
5     MAYGAY MV1 hardware
6 
7     preliminary driver by Phil Bennett
8 
9     Games supported:
10         * Screen Play
11 
12     Other games on this hardware (incomplete dumps)
13         * Believe it or not?
14         * Caesar's Palace (reel to video)
15         * Crossword Quiz
16         * Give us a Clue
17         * Special Effects (reel to video)
18         * World Cup (reel to video)
19 
20 
21 Main MV1 board:
22 
23 U1 ST 8901 TS68000CP12
24 U2 ST M74HC04B1 99135R
25 U3 ST 16S25HB1 9235 (think this is the gal chip)
26 U4 ST M74HC138B1 99131R
27 U5 P8948G MM74HC05N
28 U6 ST M74HC74B1 99144R
29 U7 ST M74HC08B1 99135R
30 U8 ST NE556N 99135
31 U9 ST M74HC259B1 99148R
32 U10 ST M74HC237B1 99148R
33 U11 ULN2803A 9135
34 U12 ST M74HC74B1 99144R
35 U13 ST M74HC32B1 99041R
36 U14 ST M74HCO4B1 99135R
37 U15 27C010 (Game Rom)
38 U16 27C010 (Game Rom)
39 U17 27C010 (Game Rom)
40 U18 27C010 (Game Rom)
41 U19 HYUNDAI HY6264ALP- 10 9147T
42 U20 HYUNDAI HY6264ALP- 10 9147T
43 U21 NEC IRELAND D8279C- 2 9135X8006]
44 U22 ULN2803A 9135
45 U23 ULN2803A 9135
46 U24 TEXAS INSTRUMENT F 9140 AN SN74HC148N
47 U25 ST 2 9148 EF68B21P
48 U26 Can't see one on the board!
49 U27 MOTOROLA MC68681P 14PT18715
50 U28 ST MC1488P 99136
51 U29 ST MC1489AP 99148
52 U30 ST HCF 4514 BE 2 9049
53 U31 MOTOROLA MC74F139N XXAA9145
54 U32 TEXAS INSTRUMENT TMS4464- 12NL IHE 9145
55 U33 TEXAS INSTRUMENT TMS4464- 12NL IHE 9114
56 U34 TEXAS INSTRUMENT TMS4464- 12NL IHE 9145
57 U35 TEXAS INSTRUMENT TMS4464- 12NL IHE 9114
58 U36 MHS S-82716-4 9210
59 U37 TEXAS INSTRUMENT TMS4464- 12NL IHE 9114
60 U38 TEXAS INSTRUMENT TMS4464- 12NL IHE 9145
61 U39 TEXAS INSTRUMENT TMS4464- 12NL IHE 9145
62 U40 TEXAS INSTRUMENT TMS4464- 12NL IHE 9114
63 U41 ST M74HC244B1 99131R
64 U42 ST M74HC244B1 99131R
65 U43 ST M74HC245B1 99136R
66 U44 ST M74HC245B1 99136R
67 U45 ST M74HC00B1 99135R
68 U46 ULN2803A 9135
69 U47 ULN2803A 9135
70 U48 YM2413 9127 HADG
71 U49 78L05 .194
72 
73 The memory card that plugs in has 4 M27C010 game roms on.
74 
75 The extra digital and reel board has the following:
76 
77 U1 GS G06 KOREA GD74HC245
78 U2 SIEMENS SAB 8032B-P SINGAPORE BB INTEL 80 9148
79 U3 M27C512 (reels rom)
80 U4 ST M74HC373B1 99205R
81 U5 TEXAS INSTRUMENT 14530QT SN75155P
82 U6 ULN 2803A 9203
83 U7 ST M74HC374B1 99205R
84 U8 ST M74HC374B1 99205R
85 U9 ULN 2803A 9203
86 U10 ULN 2803A 9203
87 U11 ULN 2803A 9203
88 U12 M27C010 (Sound Rom)
89 U13 NEC JAPAN D7759C 9015KP009
90 U14 ST M74HC373B1 99205R
91 U15 Can't see one on the board!
92 U16 MOTOROLA MC74HC04AN FFA09202
93 
94 
95 
96 
97 upd7759 change:
98 
99 * Only accept FIFO bytes when the chip is playing!!!
100 
101 Port 1 is connected directly to the upd bus.
102 upd /CE is grounded
103 /WR bit is
104 
105 Toggle reset pin
106 Write data on port 1
107 Toggle WR bit...
108 
109 Then, it goes off to write.
110 
111 INT1  Power failure?
112 INT2  -
113 INT3  V Sync
114 INT4  -
115 INT5  68681 DUART
116 INT6  -
117 INT7  -
118 
119 
120 DUART: 0 = Power failure
121 
122 M68681 Output port drives slides
123 
124 Todo:
125 
126 Find lamps/reels after UPD changes.
127 ***************************************************************************/
128 
129 #include "emu.h"
130 #include "video/awpvid.h"
131 
132 #include "cpu/m68000/m68000.h"
133 #include "cpu/mcs51/mcs51.h"
134 #include "machine/6821pia.h"
135 #include "machine/i8279.h"
136 #include "machine/mc68681.h"
137 #include "machine/nvram.h"
138 #include "sound/upd7759.h"
139 #include "sound/ym2413.h"
140 
141 #include "emupal.h"
142 #include "screen.h"
143 #include "speaker.h"
144 
145 
146 /*************************************
147  *
148  *  Defines
149  *
150  *************************************/
151 
152 #define DUART_CLOCK     XTAL(3'686'400)
153 #define PIXEL_CLOCK     0
154 #define MASTER_CLOCK    XTAL(16'000'000)
155 #define SOUND_CLOCK     XTAL(11'059'200)
156 
157 /*************************************
158  *
159  *  Video hardware
160  *
161  *************************************/
162 
163 
164 #define VREG(a)     i82716.r[a]
165 
166 enum
167 {
168 	VCR0 = 0,
169 	VCR1,
170 	RWBA,
171 	DWBA,
172 	DWSLM,
173 	DSBA,
174 	PAQ,
175 	ODTBA,
176 	ATBA,
177 	CTBA,
178 	CBASE,
179 	ATBAC,
180 	HVCONST0,
181 	HVCONST1,
182 	HVCONST2,
183 	HVCONST3
184 };
185 
186 #define VCR0_UCF            0x0001
187 #define VCR0_DEI            0x0002
188 #define VCR0_SAB            0x0004
189 #define VCR0_DEN            0x0008
190 #define VCR0_HRS            0x0010
191 #define VCR0_DOF            0x0020
192 
193 #define VCR0_DS_MASK        0x00c0
194 #define VCR0_DS_SHIFT       6
195 #define VCR0_BLINK_MASK     0x1f00
196 #define VCR0_BLINK_SHIFT    8
197 #define VCR0_DUTY_MASK      0xe000
198 #define VCR0_DUTY_SHIFT     13
199 
200 static const uint32_t banks[4] = { 0, 0x40000/2, 0x20000/2, 0x60000/2 };
201 
202 #define DRAM_BANK_SEL       (banks[(VREG(DSBA) >> 7) & 3])
203 
204 struct i82716_t
205 {
206 	uint16_t  r[16];
207 	std::unique_ptr<uint16_t[]>  dram;
208 
209 	std::unique_ptr<uint8_t[]>   line_buf;  // there's actually two
210 };
211 
212 
213 class maygayv1_state : public driver_device
214 {
215 public:
maygayv1_state(const machine_config & mconfig,device_type type,const char * tag)216 	maygayv1_state(const machine_config &mconfig, device_type type, const char *tag) :
217 		driver_device(mconfig, type, tag),
218 		m_maincpu(*this, "maincpu"),
219 		m_soundcpu(*this, "soundcpu"),
220 		m_upd7759(*this, "upd"),
221 		m_duart68681(*this, "duart68681"),
222 		m_palette(*this, "palette"),
223 		m_kbd_ports(*this, "STROBE%u", 1U),
224 		m_lamp(*this, "lamp%u", 0U)
225 	{ }
226 
227 	void maygayv1(machine_config &config);
228 
229 	void init_screenpl();
230 
231 private:
232 	void i82716_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
233 	uint16_t i82716_r(offs_t offset);
234 	void write_odd(uint16_t data);
235 	uint16_t read_odd();
236 	void vsync_int_ctrl(uint16_t data);
237 	uint8_t mcu_r(offs_t offset);
238 	void mcu_w(offs_t offset, uint8_t data);
239 	uint8_t b_read();
240 	void b_writ(uint8_t data);
241 	void strobe_w(uint8_t data);
242 	void lamp_data_w(uint8_t data);
243 	uint8_t kbd_r();
244 	uint32_t screen_update_maygayv1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
245 	DECLARE_WRITE_LINE_MEMBER(screen_vblank_maygayv1);
246 	void data_from_i8031(uint8_t data);
247 	uint8_t data_to_i8031();
248 	DECLARE_WRITE_LINE_MEMBER(duart_irq_handler);
249 	DECLARE_WRITE_LINE_MEMBER(duart_txa);
250 	void main_map(address_map &map);
251 	void sound_data(address_map &map);
252 	void sound_io(address_map &map);
253 	void sound_prg(address_map &map);
254 	void cpu_space_map(address_map &map);
255 
256 	virtual void machine_start() override;
257 	virtual void machine_reset() override;
258 	virtual void video_start() override;
259 
260 	required_device<cpu_device> m_maincpu;
261 	required_device<i8052_device> m_soundcpu;
262 	required_device<upd7759_device> m_upd7759;
263 	required_device<mc68681_device> m_duart68681;
264 	required_device<palette_device> m_palette;
265 	required_ioport_array<8> m_kbd_ports;
266 
267 	int m_lamp_strobe;
268 	int m_old_lamp_strobe;
269 	int m_vsync_latch_preset;
270 	uint8_t m_p1;
271 	uint8_t m_p3;
272 	int m_d68681_val;
273 	i82716_t m_i82716;
274 	output_finder<8 * 256> m_lamp;
275 };
276 
277 
278 
279 
i82716_w(offs_t offset,uint16_t data,uint16_t mem_mask)280 void maygayv1_state::i82716_w(offs_t offset, uint16_t data, uint16_t mem_mask)
281 {
282 	i82716_t &i82716 = m_i82716;
283 	// Accessing register window?
284 	if ((VREG(RWBA) & 0xfff0) == (offset & 0xfff0))
285 	{
286 		// Register segment is fixed at start of DRAM
287 		COMBINE_DATA(&i82716.dram[offset & 0xf]);
288 	}
289 
290 	// Accessing data window?
291 	// TODO: mask
292 	if (offset >= (VREG(DWBA) & 0xf800))
293 	{
294 		offset -= (VREG(DWBA) & 0xf800);
295 		COMBINE_DATA(&i82716.dram[DRAM_BANK_SEL + (VREG(DSBA) & 0xf800) + offset]);
296 	}
297 }
298 
i82716_r(offs_t offset)299 uint16_t maygayv1_state::i82716_r(offs_t offset)
300 {
301 	i82716_t &i82716 = m_i82716;
302 	// Accessing register window?
303 	if ((VREG(RWBA) & ~0xf) == (offset & ~0xf))
304 	{
305 		return(i82716.r[offset & 0xf]);
306 	}
307 
308 	// Accessing data window? TODO: mask?
309 	if (VREG(VCR1) & 4)
310 	{
311 		if (offset >= (VREG(DWBA) & 0xf800))
312 		{
313 			offset -= (VREG(DWBA) & 0xf800);
314 			return i82716.dram[DRAM_BANK_SEL +(VREG(DSBA) & 0xf800) + (offset)];
315 		}
316 	}
317 
318 	return 0;
319 }
320 
video_start()321 void maygayv1_state::video_start()
322 {
323 }
324 
325 
screen_update_maygayv1(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)326 uint32_t maygayv1_state::screen_update_maygayv1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
327 {
328 	i82716_t &i82716 = m_i82716;
329 	uint16_t *atable = &i82716.dram[VREG(ATBA)];
330 	uint16_t *otable = &i82716.dram[VREG(ODTBA) & 0xfc00];  // both must be bank 0
331 
332 	int slmask = 0xffff;     // TODO: Save if using scanline callbacks
333 	int xbound = (VREG(DWBA) & 0x3f8) | 7;
334 
335 	/* Sign extend to 10 bits */
336 	xbound = (xbound & 0x3ff) - (xbound & 0x400);
337 
338 	/* If screen output is disabled, fill with black */
339 	if (!(VREG(VCR0) & VCR0_DEN))
340 	{
341 		bitmap.fill(m_palette->black_pen(), cliprect);
342 		return 0;
343 	}
344 
345 	/* For every scanline... */
346 	for (int sl = cliprect.min_x; sl <= cliprect.max_y; ++sl)
347 	{
348 		uint16_t aflags = atable[sl];
349 		uint16_t slmask_old = slmask;
350 
351 		uint16_t *bmp_ptr = &bitmap.pix(sl);
352 
353 		slmask = 0xffff ^ (slmask ^ aflags);
354 
355 		/* Clear the frame buffer on each line to BG colour (palette entry 2) */
356 		/* 4bpp only ! */
357 		memset(i82716.line_buf.get(), 0x22, 512);
358 
359 		/* Parse the list of 16 objects */
360 		for (int obj = 0; obj < 16; ++obj)
361 		{
362 			int offs = obj * 4;
363 
364 			// Draw on this line?
365 			if ( !BIT(slmask, obj) )
366 			{
367 				uint32_t  objbase, trans, width;
368 				int32_t   xpos;
369 				uint16_t  w0, w1, w2;
370 				uint16_t  *objptr;
371 				uint8_t *bmpptr; // ?
372 
373 				/* Get object table entry words */
374 				w0 = otable[offs];
375 				w1 = otable[offs + 1];
376 				w2 = otable[offs + 2];
377 
378 				/* Blanked */
379 				if ( BIT(w0, 4) )
380 					break;
381 
382 //              if ( BIT(w0, 5) )
383 //                  printf("Blinking\n");
384 
385 				/* Resolution: either 4bpp or 2bpp */
386 //              res = (w0 >> 9) & 3;
387 
388 
389 				/* Expand 2bpp to 3bpp */
390 				//cspec = (w0 & 3) << 2;
391 
392 				if ( BIT(w0, 11) )
393 				{
394 					logerror("i82716: Characters not supported\n");
395 					break;
396 				}
397 
398 				/* 10-bit signed - in terms of bytes */
399 				xpos = (w1 & 0x3ff);
400 				xpos = (xpos & 0x3ff) - (xpos & 0x400);
401 
402 				/* Transparency detect enable */
403 				trans = BIT(w0, 2);
404 
405 				/* Width is expressed in units of 64-bit words */
406 				width = (w1 >> 10) & 0x3f;
407 
408 				/* First scanline? Clear current object entry address */
409 				if ( BIT(slmask_old, obj) )
410 					otable[offs + 3] = 0;
411 
412 				/* Bitmap data pointer */
413 				objbase = ((w0 & 0x00c0) << 10) | w2;
414 				objptr = &i82716.dram[objbase + ((4 * width) * otable[offs + 3])];
415 
416 				// endian alert
417 				bmpptr = (uint8_t*)objptr;
418 
419 				// 4bpp
420 				for (int x = xpos; x < std::min(xbound, int(xpos + width * 8)); ++x)
421 				{
422 					if (x >= 0)
423 					{
424 						uint8_t p1 = *bmpptr & 0xf;
425 						uint8_t p2 = *bmpptr >> 4;
426 
427 						if (!trans || p1)
428 							i82716.line_buf[x] = p1;
429 
430 						if (!trans || p2)
431 							i82716.line_buf[x] |= p2 << 4;
432 					}
433 					bmpptr++;
434 				}
435 
436 				/* Update scanline pointer - WRONG */
437 				otable[offs + 3]++;
438 			}
439 		}
440 
441 		// Write it out
442 		for (int sx = cliprect.min_x; sx < cliprect.max_x; sx += 2)
443 		{
444 			uint8_t pix = i82716.line_buf[sx / 2];
445 
446 			bmp_ptr[sx + 0] = pix & 0xf;
447 			bmp_ptr[sx + 1] = pix >> 4;
448 		}
449 	}
450 
451 	return 0;
452 }
453 
WRITE_LINE_MEMBER(maygayv1_state::screen_vblank_maygayv1)454 WRITE_LINE_MEMBER(maygayv1_state::screen_vblank_maygayv1)
455 {
456 	// rising edge
457 	if (state)
458 	{
459 		i82716_t &i82716 = m_i82716;
460 		// UCF
461 		if (VREG(VCR0) & VCR0_UCF)
462 		{
463 			int i;
464 
465 			for (i = 0; i < 16; ++i)
466 				VREG(i) = i82716.dram[i];
467 		}
468 		else
469 		{
470 			VREG(VCR0) = i82716.dram[VCR0];
471 			VREG(ATBA) = i82716.dram[ATBA];
472 		}
473 
474 		if (!(VREG(VCR0) & VCR0_DEI))
475 		{
476 			int i;
477 			uint16_t *palbase = &i82716.dram[VREG(CTBA)];
478 
479 			for (i = 0; i < 16; ++i)
480 			{
481 				uint16_t entry = *palbase++;
482 				m_palette->set_pen_color(entry & 0xf, pal4bit(entry >> 12), pal4bit(entry >> 8), pal4bit(entry >> 4));
483 			}
484 		}
485 
486 		if (m_vsync_latch_preset)
487 			m_maincpu->set_input_line(3, ASSERT_LINE);
488 	}
489 }
490 
491 
492 
493 /*************************************
494  *
495  *  68000 CPU memory handlers
496  *
497  *************************************/
498 
499 /*
500     68681
501     YM2413
502     68B21
503     8279C
504 
505     8a0008 0xe0
506     8a000c 0x7
507     8a000e 0x33
508     8a000a 0x8
509     8a001c 0xff R/W
510 */
511 
512 
513 
write_odd(uint16_t data)514 void maygayv1_state::write_odd(uint16_t data)
515 {
516 }
517 
518 //;860008 is a latch of some sort
read_odd()519 uint16_t maygayv1_state::read_odd()
520 {
521 	return 0;
522 }
523 
524 /*************************************
525  *
526  *  8279 display/keyboard driver
527  *
528  *************************************/
529 
strobe_w(uint8_t data)530 void maygayv1_state::strobe_w(uint8_t data)
531 {
532 	m_lamp_strobe = data;
533 }
534 
lamp_data_w(uint8_t data)535 void maygayv1_state::lamp_data_w(uint8_t data)
536 {
537 	//The two A/B ports are merged back into one, to make one row of 8 lamps.
538 
539 	if (m_old_lamp_strobe != m_lamp_strobe)
540 	{
541 		// Because of the nature of the lamping circuit, there is an element of persistance
542 		// As a consequence, the lamp column data can change before the input strobe without
543 		// causing the relevant lamps to black out.
544 
545 		for (int i = 0; i < 8; i++)
546 		{
547 			m_lamp[(8*m_lamp_strobe)+i] = BIT(data, i);
548 		}
549 		m_old_lamp_strobe = m_lamp_strobe;
550 	}
551 
552 }
553 
kbd_r()554 uint8_t maygayv1_state::kbd_r()
555 {
556 	return m_kbd_ports[m_lamp_strobe & 0x07]->read();
557 }
558 
vsync_int_ctrl(uint16_t data)559 void maygayv1_state::vsync_int_ctrl(uint16_t data)
560 {
561 	m_vsync_latch_preset = data & 0x0100;
562 
563 	// Active low
564 	if (!(m_vsync_latch_preset))
565 		m_maincpu->set_input_line(3, CLEAR_LINE);
566 }
567 
main_map(address_map & map)568 void maygayv1_state::main_map(address_map &map)
569 {
570 	map(0x000000, 0x07ffff).rom();
571 	map(0x080000, 0x083fff).ram().share("nvram");
572 	map(0x100000, 0x17ffff).rom().region("maincpu", 0x80000);
573 	map(0x800000, 0x800003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0xff00);
574 	map(0x820000, 0x820003).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)).umask16(0x00ff);
575 	map(0x860000, 0x86000d).rw(FUNC(maygayv1_state::read_odd), FUNC(maygayv1_state::write_odd));
576 	map(0x86000e, 0x86000f).w(FUNC(maygayv1_state::vsync_int_ctrl));
577 	map(0x880000, 0x89ffff).rw(FUNC(maygayv1_state::i82716_r), FUNC(maygayv1_state::i82716_w));
578 	map(0x8a0000, 0x8a001f).rw(m_duart68681, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
579 	map(0x8c0000, 0x8c000f).r("pia", FUNC(pia6821_device::read)).umask16(0x00ff);
580 	map(0x8c0000, 0x8c000f).w("pia", FUNC(pia6821_device::write)).umask16(0xff00);
581 }
582 
583 
584 /*************************************
585  *
586  *  8032 CPU memory handlers
587  *
588  *************************************/
589 
590 /*
591  74HC245 @ U1 read port
592  (P3.4 = /ENABLE)
593  P1.0 = Reel 1 optic (I)
594  P1.1 = Reel 2 optic (I)
595  P1.2 = Reel 3 optic (I)
596  P1.3
597  P1.4 = DIPSWITCH (GND/ON by default)
598  P1.5 = DIPSWITCH (GND/ON by default)
599  P1.6 = DIPSWITCH (GND/ON by default)
600  P1.7 = DIPSWITCH (GND/ON by default)
601 
602  WRITE
603  P1.0 - 7 => D7759C
604           => 74HC374 @ U8 write port (CLK = 3.7)
605 
606  P3.0 = RXD
607  P3.1 = TXD
608  P3.2 = /UPD_RESET
609  P3.3 = !(/UPD_BUSY)
610  P3.4 = U1 /ENABLE
611  P3.5 = Status LED (inverted twice)
612  P3.6 = (WR) /UPD_START
613  P3.7 = (RD) U8 CLK - for writing! P1
614 
615 
616 
617 */
618 
mcu_r(offs_t offset)619 uint8_t maygayv1_state::mcu_r(offs_t offset)
620 {
621 	switch (offset)
622 	{
623 		case 1:
624 		{
625 			if ( !BIT(m_p3, 4) )
626 				return (ioport("REEL")->read());    // Reels???
627 			else
628 				return 0;
629 		}
630 
631 		case 3: return m_upd7759->busy_r() ? 0 : 0x08;
632 	}
633 	return 0;
634 }
635 
mcu_w(offs_t offset,uint8_t data)636 void maygayv1_state::mcu_w(offs_t offset, uint8_t data)
637 {
638 			logerror("O %x D %x",offset,data);
639 
640 	switch (offset)
641 	{
642 		// Bottom nibble = UPD
643 		case 1:
644 			m_p1 = data;
645 //          m_upd7759->msg_w(data);//?
646 			break;
647 		case 3:
648 			m_upd7759->reset_w (BIT(data, 2));
649 			m_upd7759->start_w(BIT(data, 6));
650 
651 //          if ( !BIT(m_p3, 7) && BIT(data, 7) )
652 				// P1 propagates to outputs
653 
654 			m_p3 = data;
655 			break;
656 	}
657 }
658 
659 
sound_prg(address_map & map)660 void maygayv1_state::sound_prg(address_map &map)
661 {
662 	map(0x0000, 0xffff).rom();
663 }
664 
sound_data(address_map & map)665 void maygayv1_state::sound_data(address_map &map)
666 {
667 }
668 
sound_io(address_map & map)669 void maygayv1_state::sound_io(address_map &map)
670 {
671 	map(0x00, 0xff).rw(FUNC(maygayv1_state::mcu_r), FUNC(maygayv1_state::mcu_w));
672 }
673 
674 
675 /*************************************
676  *
677  *  Port definitions
678  *
679  *************************************/
680 
681 static INPUT_PORTS_START( screenpl )
682 	PORT_START("STROBE1")
683 	PORT_DIPNAME( 0x01, 0x01, "DSW01")
DEF_STR(Off)684 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
685 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
686 	PORT_DIPNAME( 0x02, 0x02, "DSW02")
687 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
688 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
689 	PORT_DIPNAME( 0x04, 0x04, "DSW03")
690 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
691 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
692 	PORT_DIPNAME( 0x08, 0x08, "DSW04")
693 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
694 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
695 	PORT_DIPNAME( 0x10, 0x10, "Stake selection?")
696 	PORT_DIPSETTING(    0x10, "5p" )
697 	PORT_DIPSETTING(    0x00, "10p" )
698 	PORT_DIPNAME( 0x20, 0x20, "DSW06")
699 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
700 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
701 	PORT_DIPNAME( 0x40, 0x40, "DSW07")
702 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
703 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
704 	PORT_DIPNAME( 0x80, 0x80, "DSW08")
705 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
706 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
707 
708 	PORT_START("STROBE2")
709 	PORT_DIPNAME( 0x01, 0x01, "Test")
710 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
711 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
712 	PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
713 
714 	PORT_START("STROBE3")
715 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Unknown 1")
716 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Nudge 1")
717 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Nudge 2")
718 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Nudge 3")
719 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME("Unknown 2")
720 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Collect")
721 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON10 ) PORT_NAME("Unknown 3")
722 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON11 ) PORT_NAME("Spin")
723 
724 	PORT_START("STROBE4")
725 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Red")
726 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Yellow")
727 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Green")
728 	PORT_DIPNAME( 0x08, 0x08, "DSW34")
729 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
730 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
731 	PORT_DIPNAME( 0x10, 0x10, "DSW35")
732 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
733 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
734 	PORT_DIPNAME( 0x20, 0x20, "Jackpot Selection")
735 	PORT_DIPSETTING(    0x20, "600p" )
736 	PORT_DIPSETTING(    0x00, "300p" )
737 	PORT_DIPNAME( 0x40, 0x40, "Reset?")
738 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
739 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
740 	PORT_DIPNAME( 0x80, 0x00, "Cash door")
741 	PORT_DIPSETTING(    0x80, "Open"   )
742 	PORT_DIPSETTING(    0x00, "Closed" )
743 
744 	PORT_START("STROBE5")
745 	PORT_DIPNAME( 0x01, 0x01, "DSW41")
746 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
747 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
748 	PORT_DIPNAME( 0x02, 0x02, "Re-fill key")
749 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
750 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
751 	PORT_DIPNAME( 0x04, 0x04, "DSW43")
752 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
753 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
754 	PORT_DIPNAME( 0x08, 0x08, "DSW44")
755 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
756 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
757 	PORT_DIPNAME( 0x10, 0x10, "DSW45")
758 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
759 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
760 	PORT_DIPNAME( 0x20, 0x20, "DSW46")
761 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
762 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
763 	PORT_DIPNAME( 0x40, 0x40, "DSW47")
764 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
765 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
766 	PORT_DIPNAME( 0x80, 0x80, "DSW48")
767 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
768 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
769 
770 	PORT_START("STROBE6")
771 	PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
772 
773 	PORT_START("STROBE7")
774 	PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
775 
776 	PORT_START("STROBE8")
777 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN5 ) PORT_NAME("Token")
778 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_NAME("100p")
779 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("50p")
780 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("20p")
781 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("10p")
782 	PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
783 
784 	PORT_START("REEL")
785 	PORT_DIPNAME( 0x01, 0x00, "REEL 1")
786 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
787 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
788 	PORT_DIPNAME( 0x02, 0x00, "REEL 2")
789 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
790 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
791 	PORT_DIPNAME( 0x04, 0x00, "REEL 3")
792 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
793 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
794 	PORT_DIPNAME( 0x08, 0x00, "REEL 4")
795 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
796 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
797 	PORT_DIPNAME( 0x10, 0x00, "MCU DIP1")
798 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
799 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
800 	PORT_DIPNAME( 0x20, 0x00, "MCU DIP2")
801 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
802 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
803 	PORT_DIPNAME( 0x40, 0x00, "MCU DIP3")
804 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
805 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
806 	PORT_DIPNAME( 0x80, 0x00, "MCU DIP4")
807 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
808 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
809 INPUT_PORTS_END
810 
811 
812 /*************************************
813  *
814  *  Machine driver
815  *
816  *************************************/
817 
818 /***************************************************************************
819 
820     68681 DUART
821 
822 ***************************************************************************/
823 
824 void maygayv1_state::cpu_space_map(address_map &map)
825 {
826 	map(0xfffff0, 0xffffff).m(m_maincpu, FUNC(m68000_base_device::autovectors_map));
827 	map(0xfffffa, 0xfffffb).lr16(NAME([this] () -> u16 { return m_duart68681->get_irq_vector(); }));
828 }
829 
WRITE_LINE_MEMBER(maygayv1_state::duart_irq_handler)830 WRITE_LINE_MEMBER(maygayv1_state::duart_irq_handler)
831 {
832 	m_maincpu->set_input_line(5, state);
833 }
834 
835 
WRITE_LINE_MEMBER(maygayv1_state::duart_txa)836 WRITE_LINE_MEMBER(maygayv1_state::duart_txa)
837 {
838 	m_d68681_val = state;
839 	m_soundcpu->set_input_line(MCS51_RX_LINE, ASSERT_LINE);  // ?
840 }
841 
data_to_i8031()842 uint8_t maygayv1_state::data_to_i8031()
843 {
844 	return m_d68681_val;
845 }
846 
data_from_i8031(uint8_t data)847 void maygayv1_state::data_from_i8031(uint8_t data)
848 {
849 	m_duart68681->rx_a_w(data);
850 }
851 
b_read()852 uint8_t maygayv1_state::b_read()
853 {
854 	// Meters - upper nibble?
855 	return 0xff;
856 }
857 
b_writ(uint8_t data)858 void maygayv1_state::b_writ(uint8_t data)
859 {
860 	logerror("B WRITE %x\n",data);
861 }
862 
863 
machine_start()864 void maygayv1_state::machine_start()
865 {
866 	m_lamp.resolve();
867 	i82716_t &i82716 = m_i82716;
868 	i82716.dram = std::make_unique<uint16_t[]>(0x80000/2);   // ???
869 	i82716.line_buf = std::make_unique<uint8_t[]>(512);
870 
871 	save_pointer(NAME(i82716.dram), 0x40000);
872 }
873 
machine_reset()874 void maygayv1_state::machine_reset()
875 {
876 	i82716_t &i82716 = m_i82716;
877 	// ?
878 	memset(i82716.dram.get(), 0, 0x40000);
879 	i82716.r[RWBA] = 0x0200;
880 }
881 
882 
maygayv1(machine_config & config)883 void maygayv1_state::maygayv1(machine_config &config)
884 {
885 	M68000(config, m_maincpu, MASTER_CLOCK / 2);
886 	m_maincpu->set_addrmap(AS_PROGRAM, &maygayv1_state::main_map);
887 	m_maincpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &maygayv1_state::cpu_space_map);
888 
889 	I8052(config, m_soundcpu, SOUND_CLOCK);
890 	m_soundcpu->set_addrmap(AS_PROGRAM, &maygayv1_state::sound_prg);
891 	m_soundcpu->set_addrmap(AS_DATA, &maygayv1_state::sound_data);
892 	m_soundcpu->set_addrmap(AS_IO, &maygayv1_state::sound_io);
893 	m_soundcpu->serial_tx_cb().set(FUNC(maygayv1_state::data_from_i8031));
894 	m_soundcpu->serial_rx_cb().set(FUNC(maygayv1_state::data_to_i8031));
895 
896 	/* U25 ST 2 9148 EF68B21P */
897 	pia6821_device &pia(PIA6821(config, "pia", 0));
898 	pia.readpa_handler().set(FUNC(maygayv1_state::b_read));
899 	pia.readpb_handler().set(FUNC(maygayv1_state::b_read));
900 	pia.writepa_handler().set(FUNC(maygayv1_state::b_writ));
901 	pia.writepb_handler().set(FUNC(maygayv1_state::b_writ));
902 
903 	NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
904 
905 	/* TODO: Use real video timings */
906 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
907 	screen.set_refresh_hz(60);
908 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
909 	screen.set_size(640, 300);
910 	screen.set_visarea(0, 640 - 1, 0, 300 - 1);
911 	screen.set_screen_update(FUNC(maygayv1_state::screen_update_maygayv1));
912 	screen.screen_vblank().set(FUNC(maygayv1_state::screen_vblank_maygayv1));
913 	screen.set_palette("palette");
914 
915 	PALETTE(config, "palette").set_entries(16);
916 
917 	MC68681(config, m_duart68681, DUART_CLOCK);
918 	m_duart68681->irq_cb().set(FUNC(maygayv1_state::duart_irq_handler));
919 	m_duart68681->a_tx_cb().set(FUNC(maygayv1_state::duart_txa));
920 
921 	i8279_device &kbdc(I8279(config, "i8279", MASTER_CLOCK/4));         // unknown clock
922 	kbdc.out_sl_callback().set(FUNC(maygayv1_state::strobe_w));         // scan SL lines
923 	kbdc.out_disp_callback().set(FUNC(maygayv1_state::lamp_data_w));    // display A&B
924 	kbdc.in_rl_callback().set(FUNC(maygayv1_state::kbd_r));             // kbd RL lines
925 
926 	SPEAKER(config, "mono").front_center();
927 
928 	YM2413(config, "ymsnd", MASTER_CLOCK / 4).add_route(ALL_OUTPUTS, "mono", 0.8);
929 
930 	UPD7759(config, m_upd7759).add_route(ALL_OUTPUTS, "mono", 0.50);
931 }
932 
933 
934 /*************************************
935  *
936  *  ROM definitions
937  *
938  *************************************/
939 
940 ROM_START( screenpl )
941 	ROM_REGION( 0x100000, "maincpu", 0 )
942 	ROM_LOAD16_BYTE( "20p6pnd_u15.bin", 0x00000, 0x20000, CRC(4334453c) SHA1(5c18acf29c7b3f44589b92d74b79ac66730db810) )
943 	ROM_LOAD16_BYTE( "20p6pnd_u16.bin", 0x00001, 0x20000, CRC(90b3f67c) SHA1(a58a0bc4ccccf083fe3222f02eb06ee5fa6f386a) )
CRC(ba576b11)944 	ROM_LOAD16_BYTE( "20p6pnd_u17.bin", 0x40000, 0x20000, CRC(ba576b11) SHA1(3ba7bcaf4e3cc4eaeeece6e3f4957c3a8dfd5752) )
945 	ROM_LOAD16_BYTE( "20p6pnd_u18.bin", 0x40001, 0x20000, CRC(24dd1aff) SHA1(833c59e5b75130a8dc3a63027e09c0f5c7ed17f5) )
946 
947 	ROM_LOAD16_BYTE( "20p6pnd_u2.bin",  0x80000, 0x20000, CRC(ee51ed98) SHA1(262e773cdb1465983a8f931698bc73de7c324088) )
948 	ROM_LOAD16_BYTE( "20p6pnd_u1.bin",  0x80001, 0x20000, CRC(d57bbe69) SHA1(b7cd93cef4828418328ca4ff16c496da7b2065e2) )
949 	ROM_LOAD16_BYTE( "20p6pnd_u4.bin",  0xc0000, 0x20000, CRC(01aafd7e) SHA1(d2161066655218468da8eae8aa9da8a80c07c489) )
950 	ROM_LOAD16_BYTE( "20p6pnd_u3.bin",  0xc0001, 0x20000, CRC(aa02dc54) SHA1(a05c8c26480f3bae671428380c7684b9c29b5a53) )
951 
952 	ROM_REGION( 0x10000, "soundcpu", 0 )
953 	ROM_LOAD( "reels.bin", 0x0000, 0x10000, CRC(1319cf82) SHA1(7a233072890361bcf384de4f90170c2ca713b1de) )
954 
955 	ROM_REGION( 0x20000, "upd", 0 )
956 	ROM_LOAD( "sound.bin", 0x00000, 0x20000, CRC(498dd74f) SHA1(80bb204b3e9cadcecbfa75c78c52fb9908566c5e) )
957 ROM_END
958 
959 ROM_START( screenp1 )
960 	ROM_REGION( 0x100000, "maincpu", 0 )
961 	ROM_LOAD16_BYTE( "sa4-379.u15", 0x00000, 0x20000, CRC(e21b120d) SHA1(bcdebf797381b0c585dbd3511b5e984f22de2206) )
962 	ROM_LOAD16_BYTE( "sa4-379.u16", 0x00001, 0x20000, CRC(b04588b7) SHA1(1f9b933e441969c95bbbabbfbe44349bd945c326) )
963 	ROM_LOAD16_BYTE( "sa4-379.u17", 0x40000, 0x20000, CRC(4b6cdc43) SHA1(1d6a4796ce67d0d00fe74a6bafd8b731450cdaab) )
964 	ROM_LOAD16_BYTE( "sa4-379.u18", 0x40001, 0x20000, CRC(d986355f) SHA1(86d3f1712cd1bcc90a54945a2baccae2596de691) )
965 
966 	ROM_LOAD16_BYTE( "sq3-458.u2",  0x80000, 0x20000, CRC(7091dfcd) SHA1(d28abd70db5c49baa93f0488e443f29c27a7a559) )
967 	ROM_LOAD16_BYTE( "sq3-458.u1",  0x80001, 0x20000, CRC(1bb0efbf) SHA1(59d7e2e51928df149764502bc4bd5736463f40d7) )
968 	ROM_LOAD16_BYTE( "sq3-458.u4",  0xc0000, 0x20000, CRC(0fb0fc84) SHA1(e7ef68130f9627a842849f41f67accf8593a0819) )
969 	ROM_LOAD16_BYTE( "sq3-458.u3",  0xc0001, 0x20000, CRC(ef4617d8) SHA1(48231405a775585451bf970db5bb57ec2f238250) )
970 
971 	ROM_REGION( 0x10000, "soundcpu", 0 )
972 	ROM_LOAD( "sr2-002", 0x0000, 0x10000, CRC(1319cf82) SHA1(7a233072890361bcf384de4f90170c2ca713b1de) )
973 
974 	ROM_REGION( 0x20000, "upd", 0 )
975 	ROM_LOAD( "dig2-001.u12", 0x00000, 0x20000, CRC(498dd74f) SHA1(80bb204b3e9cadcecbfa75c78c52fb9908566c5e) )
976 ROM_END
977 
978 ROM_START( screenp1a ) // the same as screenp1 apart from the rom at u15
979 	ROM_REGION( 0x100000, "maincpu", 0 )
980 	ROM_LOAD16_BYTE( "sa4-378.u15", 0x00000, 0x20000, CRC(a5c0e623) SHA1(cd3215db924bbee80f5b3fbbd391c7246ad88c69) )
981 	ROM_LOAD16_BYTE( "sa4-378.u16", 0x00001, 0x20000, CRC(b04588b7) SHA1(1f9b933e441969c95bbbabbfbe44349bd945c326) )
982 	ROM_LOAD16_BYTE( "sa4-378.u17", 0x40000, 0x20000, CRC(4b6cdc43) SHA1(1d6a4796ce67d0d00fe74a6bafd8b731450cdaab) )
983 	ROM_LOAD16_BYTE( "sa4-378.u18", 0x40001, 0x20000, CRC(d986355f) SHA1(86d3f1712cd1bcc90a54945a2baccae2596de691) )
984 
985 	ROM_LOAD16_BYTE( "sq3-458.u2",  0x80000, 0x20000, CRC(7091dfcd) SHA1(d28abd70db5c49baa93f0488e443f29c27a7a559) )
986 	ROM_LOAD16_BYTE( "sq3-458.u1",  0x80001, 0x20000, CRC(1bb0efbf) SHA1(59d7e2e51928df149764502bc4bd5736463f40d7) )
987 	ROM_LOAD16_BYTE( "sq3-458.u4",  0xc0000, 0x20000, CRC(0fb0fc84) SHA1(e7ef68130f9627a842849f41f67accf8593a0819) )
988 	ROM_LOAD16_BYTE( "sq3-458.u3",  0xc0001, 0x20000, CRC(ef4617d8) SHA1(48231405a775585451bf970db5bb57ec2f238250) )
989 
990 	ROM_REGION( 0x10000, "soundcpu", 0 )
991 	ROM_LOAD( "sr2-002", 0x0000, 0x10000, CRC(1319cf82) SHA1(7a233072890361bcf384de4f90170c2ca713b1de) )
992 
993 	ROM_REGION( 0x20000, "upd", 0 )
994 	ROM_LOAD( "dig2-001.u12", 0x00000, 0x20000, CRC(498dd74f) SHA1(80bb204b3e9cadcecbfa75c78c52fb9908566c5e) )
995 ROM_END
996 
997 ROM_START( screenp2 ) // exactly the same set has been seen with code sa5-196
998 	ROM_REGION( 0x100000, "maincpu", 0 )
999 	ROM_LOAD16_BYTE( "sa4-280.u15", 0x00000, 0x20000, CRC(d7206438) SHA1(70e7dc7d58bfa7dfe00250ab46fa71e951dbf901) )
1000 	ROM_LOAD16_BYTE( "sa4-280.u16", 0x00001, 0x20000, CRC(f99e972f) SHA1(b01c8796967ff7f27269b31ef983b5fb26b03aab) )
1001 	ROM_LOAD16_BYTE( "sa4-280.u17", 0x40000, 0x20000, CRC(cbde5343) SHA1(e341d642d8537bc221b3ca9803c221dc0cdf86c3) )
1002 	ROM_LOAD16_BYTE( "sa4-280.u18", 0x40001, 0x20000, CRC(885b887b) SHA1(9cfb145c8cca49450fabbf4efab9c70f98ecd2af) )
1003 
1004 	ROM_LOAD16_BYTE( "u2.bin", 0x80000, 0x20000, CRC(7091dfcd) SHA1(d28abd70db5c49baa93f0488e443f29c27a7a559) )
1005 	ROM_LOAD16_BYTE( "u1.bin", 0x80001, 0x20000, CRC(1bb0efbf) SHA1(59d7e2e51928df149764502bc4bd5736463f40d7) )
1006 	ROM_LOAD16_BYTE( "u4.bin", 0xc0000, 0x20000, CRC(0fb0fc84) SHA1(e7ef68130f9627a842849f41f67accf8593a0819) )
1007 	ROM_LOAD16_BYTE( "u3.bin", 0xc0001, 0x20000, CRC(ef4617d8) SHA1(48231405a775585451bf970db5bb57ec2f238250) )
1008 
1009 	ROM_REGION( 0x10000, "soundcpu", 0 )
1010 	ROM_LOAD( "reels.bin", 0x00000, 0x10000, CRC(1319cf82) SHA1(7a233072890361bcf384de4f90170c2ca713b1de) )
1011 
1012 	ROM_REGION( 0x20000, "upd", 0 )
1013 	ROM_LOAD( "dig2-001.u12", 0x00000, 0x20000, CRC(498dd74f) SHA1(80bb204b3e9cadcecbfa75c78c52fb9908566c5e) )
1014 ROM_END
1015 
1016 ROM_START( screenp2a ) // the same as screenp2 apart from the rom at u15
1017 	ROM_REGION( 0x100000, "maincpu", 0 )
1018 	ROM_LOAD16_BYTE( "sa5-197.u15", 0x00000, 0x20000, CRC(4c067b11) SHA1(2364421b2f92669c3c164a170017bdf255134004) )
1019 	ROM_LOAD16_BYTE( "sa5-197.u16", 0x00001, 0x20000, CRC(f99e972f) SHA1(b01c8796967ff7f27269b31ef983b5fb26b03aab) )
1020 	ROM_LOAD16_BYTE( "sa5-197.u17", 0x40000, 0x20000, CRC(cbde5343) SHA1(e341d642d8537bc221b3ca9803c221dc0cdf86c3) )
1021 	ROM_LOAD16_BYTE( "sa5-197.u18", 0x40001, 0x20000, CRC(885b887b) SHA1(9cfb145c8cca49450fabbf4efab9c70f98ecd2af) )
1022 
1023 	ROM_LOAD16_BYTE( "u2.bin", 0x80000, 0x20000, CRC(7091dfcd) SHA1(d28abd70db5c49baa93f0488e443f29c27a7a559) )
1024 	ROM_LOAD16_BYTE( "u1.bin", 0x80001, 0x20000, CRC(1bb0efbf) SHA1(59d7e2e51928df149764502bc4bd5736463f40d7) )
1025 	ROM_LOAD16_BYTE( "u4.bin", 0xc0000, 0x20000, CRC(0fb0fc84) SHA1(e7ef68130f9627a842849f41f67accf8593a0819) )
1026 	ROM_LOAD16_BYTE( "u3.bin", 0xc0001, 0x20000, CRC(ef4617d8) SHA1(48231405a775585451bf970db5bb57ec2f238250) )
1027 
1028 	ROM_REGION( 0x10000, "soundcpu", 0 )
1029 	ROM_LOAD( "reels.bin", 0x00000, 0x10000, CRC(1319cf82) SHA1(7a233072890361bcf384de4f90170c2ca713b1de) )
1030 
1031 	ROM_REGION( 0x20000, "upd", 0 )
1032 	ROM_LOAD( "dig2-001.u12", 0x00000, 0x20000, CRC(498dd74f) SHA1(80bb204b3e9cadcecbfa75c78c52fb9908566c5e) )
1033 ROM_END
1034 
1035 ROM_START( screenp3 )
1036 	ROM_REGION( 0x100000, "maincpu", 0 )
1037 	ROM_LOAD16_BYTE( "sa5-082.u15", 0x00000, 0x20000, CRC(ef98977d) SHA1(1cbbd4024b2076adc672b2a53fc8696615ce6eac) )
1038 	ROM_LOAD16_BYTE( "sa5-082.u16", 0x00001, 0x20000, CRC(214823be) SHA1(db98ff915f1956e275425b48c4d829c407c81ed6) )
1039 	ROM_LOAD16_BYTE( "sa5-082.u17", 0x40000, 0x20000, CRC(6e3b5259) SHA1(fb0e42a995768dfc08549a75021306978740ff85) )
1040 	ROM_LOAD16_BYTE( "sa5-082.u18", 0x40001, 0x20000, CRC(fb1af777) SHA1(afc4123bc61900d41bd321aa7eb7fb0f982a9501) )
1041 
1042 	ROM_LOAD16_BYTE( "u2.bin", 0x80000, 0x20000, CRC(7091dfcd) SHA1(d28abd70db5c49baa93f0488e443f29c27a7a559) )
1043 	ROM_LOAD16_BYTE( "u1.bin", 0x80001, 0x20000, CRC(1bb0efbf) SHA1(59d7e2e51928df149764502bc4bd5736463f40d7) )
1044 	ROM_LOAD16_BYTE( "u4.bin", 0xc0000, 0x20000, CRC(0fb0fc84) SHA1(e7ef68130f9627a842849f41f67accf8593a0819) )
1045 	ROM_LOAD16_BYTE( "u3.bin", 0xc0001, 0x20000, CRC(ef4617d8) SHA1(48231405a775585451bf970db5bb57ec2f238250) )
1046 
1047 	ROM_REGION( 0x10000, "soundcpu", 0 )
1048 	ROM_LOAD( "reels.bin", 0x00000, 0x10000, CRC(1319cf82) SHA1(7a233072890361bcf384de4f90170c2ca713b1de) )
1049 
1050 	ROM_REGION( 0x20000, "upd", 0 )
1051 	ROM_LOAD( "dig2-001.u12", 0x00000, 0x20000, CRC(498dd74f) SHA1(80bb204b3e9cadcecbfa75c78c52fb9908566c5e) )
1052 ROM_END
1053 
1054 ROM_START( screenp3a )
1055 	ROM_REGION( 0x100000, "maincpu", 0 ) // only  u16 differs from above set
1056 	ROM_LOAD16_BYTE( "sa5-083.u15", 0x00000, 0x20000, CRC(ef98977d) SHA1(1cbbd4024b2076adc672b2a53fc8696615ce6eac) )
1057 	ROM_LOAD16_BYTE( "sa5-083.u16", 0x00001, 0x20000, CRC(84e17aa1) SHA1(cbc77315cb311a217d2b9092ffb3e3aee07a9633) )
1058 	ROM_LOAD16_BYTE( "sa5-083.u17", 0x40000, 0x20000, CRC(6e3b5259) SHA1(fb0e42a995768dfc08549a75021306978740ff85) )
1059 	ROM_LOAD16_BYTE( "sa5-083.u18", 0x40001, 0x20000, CRC(fb1af777) SHA1(afc4123bc61900d41bd321aa7eb7fb0f982a9501) )
1060 
1061 	ROM_LOAD16_BYTE( "u2.bin", 0x80000, 0x20000, CRC(7091dfcd) SHA1(d28abd70db5c49baa93f0488e443f29c27a7a559) )
1062 	ROM_LOAD16_BYTE( "u1.bin", 0x80001, 0x20000, CRC(1bb0efbf) SHA1(59d7e2e51928df149764502bc4bd5736463f40d7) )
1063 	ROM_LOAD16_BYTE( "u4.bin", 0xc0000, 0x20000, CRC(0fb0fc84) SHA1(e7ef68130f9627a842849f41f67accf8593a0819) )
1064 	ROM_LOAD16_BYTE( "u3.bin", 0xc0001, 0x20000, CRC(ef4617d8) SHA1(48231405a775585451bf970db5bb57ec2f238250) )
1065 
1066 	ROM_REGION( 0x10000, "soundcpu", 0 )
1067 	ROM_LOAD( "reels.bin", 0x00000, 0x10000, CRC(1319cf82) SHA1(7a233072890361bcf384de4f90170c2ca713b1de) )
1068 
1069 	ROM_REGION( 0x20000, "upd", 0 )
1070 	ROM_LOAD( "dig2-001.u12", 0x00000, 0x20000, CRC(498dd74f) SHA1(80bb204b3e9cadcecbfa75c78c52fb9908566c5e) )
1071 ROM_END
1072 
1073 ROM_START( screenp4 )
1074 	ROM_REGION( 0x100000, "maincpu", 0 )
1075 	ROM_LOAD16_BYTE( "sply5p15", 0x00000, 0x20000, CRC(c1e956d8) SHA1(364bfa7d3d90bcbb50720e02b3330503002e6fe3) )
1076 	ROM_LOAD16_BYTE( "sply5p16", 0x00001, 0x20000, CRC(e23e7e33) SHA1(0c73a5da1e52ae74427222acdbe81c16f0ba334c) )
1077 	// not sure which other roms these pair with.. but the ones below work
1078 	ROM_LOAD16_BYTE( "sa4-280.u17", 0x40000, 0x20000, CRC(cbde5343) SHA1(e341d642d8537bc221b3ca9803c221dc0cdf86c3) )
1079 	ROM_LOAD16_BYTE( "sa4-280.u18", 0x40001, 0x20000, CRC(885b887b) SHA1(9cfb145c8cca49450fabbf4efab9c70f98ecd2af) )
1080 
1081 	ROM_LOAD16_BYTE( "u2.bin", 0x80000, 0x20000, CRC(7091dfcd) SHA1(d28abd70db5c49baa93f0488e443f29c27a7a559) )
1082 	ROM_LOAD16_BYTE( "u1.bin", 0x80001, 0x20000, CRC(1bb0efbf) SHA1(59d7e2e51928df149764502bc4bd5736463f40d7) )
1083 	ROM_LOAD16_BYTE( "u4.bin", 0xc0000, 0x20000, CRC(0fb0fc84) SHA1(e7ef68130f9627a842849f41f67accf8593a0819) )
1084 	ROM_LOAD16_BYTE( "u3.bin", 0xc0001, 0x20000, CRC(ef4617d8) SHA1(48231405a775585451bf970db5bb57ec2f238250) )
1085 
1086 	ROM_REGION( 0x10000, "soundcpu", 0 )
1087 	ROM_LOAD( "reels.bin", 0x00000, 0x10000, CRC(1319cf82) SHA1(7a233072890361bcf384de4f90170c2ca713b1de) )
1088 
1089 	ROM_REGION( 0x20000, "upd", 0 )
1090 	ROM_LOAD( "dig2-001.u12", 0x00000, 0x20000, CRC(498dd74f) SHA1(80bb204b3e9cadcecbfa75c78c52fb9908566c5e) )
1091 ROM_END
1092 
1093 // are these actually missing from all the other sets, or not used by those games?
1094 #define MV1_MISSING_ROMS \
1095 	ROM_REGION( 0x10000, "soundcpu", 0 ) \
1096 	ROM_LOAD( "reels.bin", 0x00000, 0x10000, NO_DUMP ) \
1097 	ROM_REGION( 0x20000, "upd", 0 ) \
1098 	ROM_LOAD( "upd.bin", 0x00000, 0x20000, NO_DUMP )
1099 #define MV1_MISSING_ROMSU1U4 \
1100 	ROM_LOAD16_BYTE( "u2.bin", 0x80000, 0x20000, NO_DUMP ) \
1101 	ROM_LOAD16_BYTE( "u1.bin", 0x80001, 0x20000, NO_DUMP ) \
1102 	ROM_LOAD16_BYTE( "u4.bin", 0xc0000, 0x20000, NO_DUMP ) \
1103 	ROM_LOAD16_BYTE( "u3.bin", 0xc0001, 0x20000, NO_DUMP )
1104 
1105 ROM_START( mv1bon )
1106 	ROM_REGION( 0x100000, "maincpu", 0 )
1107 	ROM_LOAD16_BYTE( "sw3-418.u15", 0x00000, 0x020000, CRC(0716a47b) SHA1(acbe903c270d2bb20c408d378007136803f96805) )
1108 	ROM_LOAD16_BYTE( "sw3-418.u16", 0x00001, 0x020000, CRC(0d02369b) SHA1(4acbffb31bf6e98156e0b581e4e81459b33a845e) )
1109 	ROM_LOAD16_BYTE( "sw3-418.u17", 0x40000, 0x020000, CRC(f1ddf287) SHA1(c1f7e92188995e9dbf47d50947bb7941b523b916) )
1110 	ROM_LOAD16_BYTE( "sw3-418.u18", 0x40001, 0x020000, CRC(b81dbac9) SHA1(9549596169cff9b2bbbe12db551122e4d874b274) )
1111 	MV1_MISSING_ROMSU1U4 // complains U1 is bad, so missing.
1112 
1113 	MV1_MISSING_ROMS
1114 ROM_END
1115 
1116 
1117 ROM_START( mv1cpc )
1118 	ROM_REGION( 0x100000, "maincpu", 0 )
1119 	ROM_LOAD16_BYTE( "sc4-066.u15", 0x00000, 0x020000, CRC(05599f6c) SHA1(3e2d5bc12c61b23ffbce40fcb1612611241f6db3) )
1120 	ROM_LOAD16_BYTE( "sc4-066.u16", 0x00001, 0x020000, CRC(6e485115) SHA1(1288b83df9cbf8813ff07f53dcf03d3637d42f0e) )
1121 	ROM_LOAD16_BYTE( "sc4-066.u17", 0x40000, 0x020000, CRC(ee7894e6) SHA1(070e1fed8b1b0f2876dbb5ef70b439baf9bbd2d7) )
1122 	ROM_LOAD16_BYTE( "sc4-066.u18", 0x40001, 0x020000, CRC(a2320921) SHA1(424d26368b9452af9aa1760a98474c5b45edf6dd) )
1123 	ROM_LOAD16_BYTE( "sq3-432.u2", 0x80000, 0x020000, CRC(4918a9e1) SHA1(6599c5f0b2ce5dc78758917195c04ae4bb078e94) )
1124 	ROM_LOAD16_BYTE( "sq3-432.u1", 0x80001, 0x020000, CRC(2ee77952) SHA1(8f17d28220a25ad232aab029166a7535d5b5618b) )
1125 	ROM_LOAD16_BYTE( "sq3-432.u4", 0xc0000, 0x020000, CRC(abd2df4d) SHA1(16b3df060094bef0ac41cb3cc71e910323d687f2) )
1126 	ROM_LOAD16_BYTE( "sq3-432.u3", 0xc0001, 0x020000, CRC(7eb80747) SHA1(23158c400497f01ac7eddecf259ed988b6683eb9) )
1127 
1128 	MV1_MISSING_ROMS
1129 ROM_END
1130 
1131 
1132 
1133 ROM_START( mv1cpca )
1134 	ROM_REGION( 0x100000, "maincpu", 0 )
1135 	ROM_LOAD16_BYTE( "sc4-067.u15", 0x00000, 0x020000, CRC(05599f6c) SHA1(3e2d5bc12c61b23ffbce40fcb1612611241f6db3) )
1136 	ROM_LOAD16_BYTE( "sc4-067.u16", 0x00001, 0x020000, CRC(4068eac8) SHA1(8c9a762c827118b96ec6d257ab828436224a2123) )
1137 	ROM_LOAD16_BYTE( "sc4-067.u17", 0x40000, 0x020000, CRC(ee7894e6) SHA1(070e1fed8b1b0f2876dbb5ef70b439baf9bbd2d7) )
1138 	ROM_LOAD16_BYTE( "sc4-067.u18", 0x40001, 0x020000, CRC(a2320921) SHA1(424d26368b9452af9aa1760a98474c5b45edf6dd) )
1139 	ROM_LOAD16_BYTE( "sq3-432.u2", 0x80000, 0x020000, CRC(4918a9e1) SHA1(6599c5f0b2ce5dc78758917195c04ae4bb078e94) )
1140 	ROM_LOAD16_BYTE( "sq3-432.u1", 0x80001, 0x020000, CRC(2ee77952) SHA1(8f17d28220a25ad232aab029166a7535d5b5618b) )
1141 	ROM_LOAD16_BYTE( "sq3-432.u4", 0xc0000, 0x020000, CRC(abd2df4d) SHA1(16b3df060094bef0ac41cb3cc71e910323d687f2) )
1142 	ROM_LOAD16_BYTE( "sq3-432.u3", 0xc0001, 0x020000, CRC(7eb80747) SHA1(23158c400497f01ac7eddecf259ed988b6683eb9) )
1143 
1144 	MV1_MISSING_ROMS
1145 ROM_END
1146 
1147 
1148 
1149 ROM_START( mv1cpcb )
1150 	ROM_REGION( 0x100000, "maincpu", 0 )
1151 	ROM_LOAD16_BYTE( "sc5-007.u15", 0x00000, 0x020000, CRC(d7e969ff) SHA1(2cf7bd0b7ae55f5570b699ff1a3a325658409c5c) )
1152 	ROM_LOAD16_BYTE( "sc5-007.u16", 0x00001, 0x020000, CRC(bbc579c7) SHA1(ef1edd28f7015819f470cdf6736377268eee617c) )
1153 	ROM_LOAD16_BYTE( "sc5-007.u17", 0x40000, 0x020000, CRC(f69bbac9) SHA1(27c6d06673a349bd2d0cd44692e0a0482b37c29f) )
1154 	ROM_LOAD16_BYTE( "sc5-007.u18", 0x40001, 0x020000, CRC(6f3979b2) SHA1(09e74d05fb564293e0314e5dcdfb8edde4f1f9ec) )
1155 	ROM_LOAD16_BYTE( "sq3-432.u2", 0x80000, 0x020000, CRC(4918a9e1) SHA1(6599c5f0b2ce5dc78758917195c04ae4bb078e94) )
1156 	ROM_LOAD16_BYTE( "sq3-432.u1", 0x80001, 0x020000, CRC(2ee77952) SHA1(8f17d28220a25ad232aab029166a7535d5b5618b) )
1157 	ROM_LOAD16_BYTE( "sq3-432.u4", 0xc0000, 0x020000, CRC(abd2df4d) SHA1(16b3df060094bef0ac41cb3cc71e910323d687f2) )
1158 	ROM_LOAD16_BYTE( "sq3-432.u3", 0xc0001, 0x020000, CRC(7eb80747) SHA1(23158c400497f01ac7eddecf259ed988b6683eb9) )
1159 
1160 	MV1_MISSING_ROMS
1161 ROM_END
1162 
1163 
1164 
1165 ROM_START( mv1cwq )
1166 	ROM_REGION( 0x100000, "maincpu", 0 )
1167 	ROM_LOAD16_BYTE( "sw2-319.u15", 0x00000, 0x020000, CRC(0a591eb7) SHA1(dad833711a5779300757e3e0fbe8f55073470724) )
1168 	ROM_LOAD16_BYTE( "sw2-319.u16", 0x00001, 0x020000, CRC(8460cb55) SHA1(793c7e31619e5a30ad8bf851253c8cfcbddefbd7) )
1169 	ROM_LOAD16_BYTE( "sw2-319.u17", 0x40000, 0x020000, CRC(f065c219) SHA1(b83a835a107740e2e846d31b4988237f1e60db78) )
1170 	ROM_LOAD16_BYTE( "sw2-319.u18", 0x40001, 0x020000, CRC(0c291cb3) SHA1(aa7740a7a34e653e9b39a0ce64b344ace9d74e19) )
1171 	MV1_MISSING_ROMSU1U4 // complains U1 is bad, so missing.
1172 
1173 	MV1_MISSING_ROMS
1174 ROM_END
1175 
1176 
1177 ROM_START( mv1cwqa )
1178 	ROM_REGION( 0x100000, "maincpu", 0 )
1179 	ROM_LOAD16_BYTE( "sw2-320.u15", 0x00000, 0x020000, CRC(02679239) SHA1(9c3f2ca7048a6ef716dbdd20f9a921e1d505638f) )
1180 	ROM_LOAD16_BYTE( "sw2-320.u16", 0x00001, 0x020000, CRC(8460cb55) SHA1(793c7e31619e5a30ad8bf851253c8cfcbddefbd7) )
1181 	ROM_LOAD16_BYTE( "sw2-320.u17", 0x40000, 0x020000, CRC(f065c219) SHA1(b83a835a107740e2e846d31b4988237f1e60db78) )
1182 	ROM_LOAD16_BYTE( "sw2-320.u18", 0x40001, 0x020000, CRC(0c291cb3) SHA1(aa7740a7a34e653e9b39a0ce64b344ace9d74e19) )
1183 	MV1_MISSING_ROMSU1U4 // complains U1 is bad, so missing.
1184 
1185 	MV1_MISSING_ROMS
1186 ROM_END
1187 
1188 
1189 ROM_START( mv1guac )
1190 	ROM_REGION( 0x100000, "maincpu", 0 )
1191 	ROM_LOAD16_BYTE( "sw3-146.u15", 0x00000, 0x020000, CRC(faa7ffa9) SHA1(db7e555727d126c266b6e973b61d1df205256c38) )
1192 	ROM_LOAD16_BYTE( "sw3-146.u16", 0x00001, 0x020000, CRC(1f7209d9) SHA1(b512e28cef973c9b6e0a8b630500a5de08206f32) )
1193 	ROM_LOAD16_BYTE( "sw3-146.u17", 0x40000, 0x020000, CRC(0ecdd43b) SHA1(f666281d4c2a67675d75fc07f7dfd6b53558468a) )
1194 	ROM_LOAD16_BYTE( "sw3-146.u18", 0x40001, 0x020000, CRC(a107f3a9) SHA1(35de6636f2ca07e5db0fc7527b6d94940242e2a3) )
1195 	MV1_MISSING_ROMSU1U4 // complains U1 is bad, so missing.
1196 
1197 	MV1_MISSING_ROMS
1198 
1199 ROM_END
1200 
1201 
1202 ROM_START( mv1guaca )
1203 	ROM_REGION( 0x100000, "maincpu", 0 )
1204 	ROM_LOAD16_BYTE( "sw3-147.u15", 0x00000, 0x020000, CRC(c2d420ad) SHA1(3fe046fbb5eb51e85926707662e6009732f2d588) )
1205 	ROM_LOAD16_BYTE( "sw3-147.u16", 0x00001, 0x020000, CRC(1f7209d9) SHA1(b512e28cef973c9b6e0a8b630500a5de08206f32) )
1206 	ROM_LOAD16_BYTE( "sw3-147.u17", 0x40000, 0x020000, CRC(0ecdd43b) SHA1(f666281d4c2a67675d75fc07f7dfd6b53558468a) )
1207 	ROM_LOAD16_BYTE( "sw3-147.u18", 0x40001, 0x020000, CRC(a107f3a9) SHA1(35de6636f2ca07e5db0fc7527b6d94940242e2a3) )
1208 	MV1_MISSING_ROMSU1U4 // complains U1 is bad, so missing.
1209 
1210 	MV1_MISSING_ROMS
1211 ROM_END
1212 
1213 ROM_START( mv1sfx )
1214 	ROM_REGION( 0x100000, "maincpu", 0 )
1215 	ROM_LOAD16_BYTE( "sa4-005.u15", 0x00000, 0x020000, CRC(07d2cd6a) SHA1(97bf2384241cbd0df4a3a0878c6022bee392611b) )
1216 	ROM_LOAD16_BYTE( "sa4-005.u16", 0x00001, 0x020000, CRC(11c8f456) SHA1(81c6aa0b60c256236416a65c1199afa30b05ff1b) )
1217 	ROM_LOAD16_BYTE( "sa4-005.u17", 0x40000, 0x020000, CRC(f34a0d24) SHA1(377c067068f7a6a73d3c5c6cdb62409116246e71) )
1218 	ROM_LOAD16_BYTE( "sa4-005.u18", 0x40001, 0x020000, CRC(e13c544a) SHA1(206151ad83af5cf939f917bcec6600ca6ffb4544) )
1219 
1220 	MV1_MISSING_ROMS
1221 ROM_END
1222 
1223 
1224 ROM_START( mv1sfxa )
1225 	ROM_REGION( 0x100000, "maincpu", 0 )
1226 	ROM_LOAD16_BYTE( "sa4-006.u15", 0x00000, 0x020000, CRC(3fa1126e) SHA1(1f94aa796b065f4b63aac31df5f8368623a587ef) )
1227 	ROM_LOAD16_BYTE( "sa4-006.u16", 0x00001, 0x020000, CRC(11c8f456) SHA1(81c6aa0b60c256236416a65c1199afa30b05ff1b) )
1228 	ROM_LOAD16_BYTE( "sa4-006.u17", 0x40000, 0x020000, CRC(f34a0d24) SHA1(377c067068f7a6a73d3c5c6cdb62409116246e71) )
1229 	ROM_LOAD16_BYTE( "sa4-006.u18", 0x40001, 0x020000, CRC(e13c544a) SHA1(206151ad83af5cf939f917bcec6600ca6ffb4544) )
1230 
1231 	MV1_MISSING_ROMS
1232 ROM_END
1233 
1234 ROM_START( mv1sfx2 )
1235 	ROM_REGION( 0x100000, "maincpu", 0 )
1236 	ROM_LOAD16_BYTE( "fx28.u15", 0x00000, 0x020000, CRC(70e52fa5) SHA1(353bcc610c73ca3d4c14bd9802cf1f394ed702a8) )
1237 	ROM_LOAD16_BYTE( "fx28.u16", 0x00001, 0x020000, CRC(9095fdce) SHA1(2c9db9cc613c6660dad5054f2bef04fec8d6bb17) )
1238 	ROM_LOAD16_BYTE( "fx28.u17", 0x40000, 0x020000, CRC(0015cd0a) SHA1(788dbdbda8e28427f994527a2564ee2fffa38533) )
1239 	ROM_LOAD16_BYTE( "fx28.u18", 0x40001, 0x020000, CRC(d9234071) SHA1(af45a2acc3d10df46a4e096777813fc70a099aee) )
1240 	ROM_LOAD16_BYTE( "sq2-407.u2", 0x80000, 0x020000, CRC(d9f072e0) SHA1(175bee58255dc4b0f840d1bf0a246539fe8f9ba0) )
1241 	ROM_LOAD16_BYTE( "sq2-407.u1", 0x80001, 0x020000, CRC(6a96a535) SHA1(fb1e7986f078f52a1db2707b150727a21c7877fc) )
1242 	ROM_LOAD16_BYTE( "sq2-407.u4", 0xc0000, 0x020000, CRC(4670e71b) SHA1(742d0f0881e0b2e0e66c454c7a2c31da9f65cf08) )
1243 	ROM_LOAD16_BYTE( "sq2-407.u3", 0xc0001, 0x020000, CRC(3e719d35) SHA1(4b6fe1e6a037102588162923fce87e0a67e5a109) )
1244 
1245 	MV1_MISSING_ROMS //Looks like dump was complete otherwise
1246 ROM_END
1247 
1248 ROM_START( mv1wc )
1249 	ROM_REGION( 0x100000, "maincpu", 0 )
1250 	ROM_LOAD16_BYTE( "sa3-196.u15", 0x00000, 0x020000, CRC(ee78e8e6) SHA1(16cb3fb0ff23f054644d706583036dae44dac792) )
1251 	ROM_LOAD16_BYTE( "sa3-196.u16", 0x00001, 0x020000, CRC(96beaa01) SHA1(b61487fbe470c776076cbdf7cd68063b56fde81d) )
1252 	ROM_LOAD16_BYTE( "sa3-196.u17", 0x40000, 0x020000, CRC(d583ad06) SHA1(94d86d5481367624576bf489cd5347f1b4979646) )
1253 	ROM_LOAD16_BYTE( "sa3-196.u18", 0x40001, 0x020000, CRC(84739f41) SHA1(a26d4df72fe723fceaf8471cdf89e4bd77585f0f) )
1254 	MV1_MISSING_ROMSU1U4 // probably missing (no error, but hangs)
1255 
1256 	MV1_MISSING_ROMS
1257 ROM_END
1258 
1259 
1260 /*************************************
1261  *
1262  *  Game driver(s)
1263  *
1264  *************************************/
1265 
1266 void maygayv1_state::init_screenpl()
1267 {
1268 	m_p1 = m_p3 = 0xff;
1269 }
1270 
1271 #define GAME_FLAGS MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK
1272 
1273 GAME( 1991, screenpl,  0,         maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Screen Play (Maygay, MV1 Video, ver. 4.0)",               GAME_FLAGS )
1274 GAME( 1991, screenp1,  screenpl,  maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Screen Play (Maygay, MV1 Video, ver. 1.9, set 1)",               GAME_FLAGS )
1275 GAME( 1991, screenp1a, screenpl,  maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Screen Play (Maygay, MV1 Video, ver. 1.9, set 2)",               GAME_FLAGS )
1276 GAME( 1991, screenp2,  screenpl,  maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Screen Play (Maygay, MV1 Video, ver. 1.9, Isle of Man, set 1)",  GAME_FLAGS )
1277 GAME( 1991, screenp2a, screenpl,  maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Screen Play (Maygay, MV1 Video, ver. 1.9, Isle of Man, set 2)",  GAME_FLAGS )
1278 GAME( 1991, screenp3,  screenpl,  maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Screen Play (Maygay, MV1 Video, SA5-082)",  GAME_FLAGS )
1279 GAME( 1991, screenp3a, screenpl,  maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Screen Play (Maygay, MV1 Video, SA5-083)",  GAME_FLAGS )
1280 GAME( 1991, screenp4,  screenpl,  maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Screen Play (Maygay, MV1 Video, ver. ?.?)",  GAME_FLAGS )
1281 
1282 // incomplete sets
1283 GAME( 199?, mv1bon,    0,         maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Believe It Or Not (Maygay, MV1 Video)",  GAME_FLAGS )
1284 GAME( 199?, mv1cpc,    0,         maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Caesar's Palace Club (Maygay, MV1 Video, set 1)",  GAME_FLAGS )
1285 GAME( 199?, mv1cpca,   mv1cpc,    maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Caesar's Palace Club (Maygay, MV1 Video, set 2)",  GAME_FLAGS )
1286 GAME( 199?, mv1cpcb,   mv1cpc,    maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Caesar's Palace Club (Maygay, MV1 Video, set 3)",  GAME_FLAGS )
1287 GAME( 199?, mv1cwq,    0,         maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Crossword Quiz (Maygay, MV1 Video, set 1)",  GAME_FLAGS )
1288 GAME( 199?, mv1cwqa,   mv1cwq,    maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Crossword Quiz (Maygay, MV1 Video, set 2)",  GAME_FLAGS )
1289 GAME( 199?, mv1guac,   0,         maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Give Us A Clue (Maygay, MV1 Video, set 1)",  GAME_FLAGS )
1290 GAME( 199?, mv1guaca,  mv1guac,   maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Give Us A Clue (Maygay, MV1 Video, set 2)",  GAME_FLAGS )
1291 GAME( 199?, mv1sfx,    0,         maygayv1, screenpl, maygayv1_state, init_screenpl, ROT90, "Maygay", "Special Effects (Maygay, MV1 Video, set 1)",  GAME_FLAGS )
1292 GAME( 199?, mv1sfxa,   mv1sfx,    maygayv1, screenpl, maygayv1_state, init_screenpl, ROT90, "Maygay", "Special Effects (Maygay, MV1 Video, set 2)",  GAME_FLAGS )
1293 GAME( 199?, mv1sfx2,   0,         maygayv1, screenpl, maygayv1_state, init_screenpl, ROT90, "Maygay", "Special Effects V2 (Maygay, MV1 Video)",  GAME_FLAGS )
1294 GAME( 199?, mv1wc,     0,         maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "World Cup (Maygay, MV1 Video)",  GAME_FLAGS )
1295