1 /***************************************************************************
2 
3 Homedata Games
4 
5 driver by Phil Stroffolino and Nicola Salmoria
6 
7 
8 *1987 X77 Mahjong Hourouki Part1 -Seisyun Hen-
9 *1987 X72 Mahjong Hourouki Gaiden
10  1988     Mahjong Joshi Pro-wres -Give up 5 byou mae-
11 *1988 A74 Mahjong Hourouki Okite
12 *1988 X80 Mahjong Clinic
13 *1988 M81 Mahjong Rokumeikan
14 *1988 J82 Reikai Doushi / Chinese Exorcist
15 *1989 X83 Mahjong Kojin Kyouju (Private Teacher)
16  1989     Battle Cry (not released in Japan)
17 *1989 X90 Mahjong Vitamin C
18 *1989 X91 Mahjong Yougo no Kiso Tairyoku
19 *1990 X02 Mahjong Lemon Angel
20 *1991 X07 Mahjong Kinjirareta Asobi -Ike Ike Kyoushi no Yokubou-
21 
22 Games from other companies:
23 
24 *1991 M15 Mahjong Ikagadesuka     (c) Mitchell
25 *19??     Mahjong Jogakuen        (c) Windom
26 
27 
28 These games use only tilemaps for graphics.  These tilemaps are organized into
29 two pages (a visible page and a backbuffer) which are automatically swapped by the
30 hardware at vblank.
31 
32 Some of the tiles are written directly by the CPU, others are written by a "blitter"
33 which unpacks RLE data from a ROM.
34 
35 
36 In games using the uPD7807CW, the coprocessor manages input ports and sound/music.
37 
38 
39 Notes:
40 
41 - To access service mode in the older mahjong games, keep F2 pressed during boot.
42   Service mode doesn't work in hourouki because it needs an additional "check" ROM.
43 
44 - The "help" button some games ask you to press is the start button.
45 
46 - The games can change visible area at runtime. The meaning of the control registers
47   isn't understood, but it supported enough to give the correct visible area to all
48   games.
49   mjkinjas sets the registers to values different from all the other games; it also
50   has a 11MHz xtal instead of the 9MHz of all the others, so the two things are
51   probably related.
52 
53 - the ROM for the uPD7807 is divided in 4 0x10000 banks. The first three just
54   contain a simple sample player, followed by the PCM data. The fourth bank contains
55   the main program. The program literally changes banks under its own feet. However,
56   the portions of code executed while the bank switch happens are identical in all
57   banks, so it still works with MAME's standard MRA_BANK handling.
58 
59 
60 TODO:
61 - Dip switches! They might be right for mjhokite, but I haven't verified the other
62   games.
63 
64 - I'm not sure service mode in the newer mahjong games is working as it's supposed to.
65   dip switch changes are not reported, and keypresses only work after you insert a coin.
66 
67 - Sound and inputs don't work in mjikaga. CPU communication issue?
68   Coins and dip switches *do* work however.
69   Also note that bit 2 of bankswitch_w() and bit 7 of pteacher_blitter_bank_w() might
70   have some other function, since the ROMs are smaller.
71 
72 - wrong gfx in mrokumei at the beginning of a game. It is selecting the wrong gfx bank;
73   the bank handling seems correct in all other games, so I don't know what's wrong here.
74 
75 - mjikaga shows some imperfections with horizontal placement of the screen.
76 
77 - in attract mode, hourouki draws a horizontal black bar on the bottom right side of
78   the display.
79 
80 
81 ----------------------------------------------------------------------------
82 Mahjong Hourouki
83 (c)1987 Home Data
84 
85 Board:  A77-PWB-A-(A)
86 
87 CPU:    68B09E Z80-A
88 Sound:  SN76489AN DAC
89 OSC:    9.000MHz 16.000MHz
90 Custom:	GX61A01
91 
92 ----------------------------------------------------------------------------
93 Mahjong Hourouki Gaiden
94 (c)1987 Home Data
95 
96 Board:  A77-PWB-A-(A)
97 
98 CPU:    68B09E Z80-A
99 Sound:  SN76489AN DAC
100 OSC:    9.000MHz 16.000MHz
101 Custom:	GX61A01
102 
103 ----------------------------------------------------------------------------
104 Mahjong Hourouki Okite
105 (c)1988 Homedata
106 
107 Almost same board as "Mahjong Clinic"
108 
109 Board:  X77-PWB-A-(A) A74 PWB-B
110 
111 CPU:    Hitachi HD68B09EP (location 14G), Sharp LH0080A (Z80A, location 10K)
112 Sound:  SN76489 DAC?
113 OSC:    16.000MHz (OSC1) 9.000MHz (OSC2)
114 Custom: HOMEDATA GX61A01 102 8728KK (100pin PQFP, location 8C)
115 
116 ----------------------------------------------------------------------------
117 Mahjong Rokumeikan
118 (c)1988 Home Data
119 
120 Board:  A74-PWB-A-(A) (main) A74 PWB-B     (sub)
121 
122 CPU:    68B09E Z80-A
123 Sound:  SN76489AN DAC
124 OSC:    9.000MHz 16.000MHz
125 Custom: GX61A01
126 
127 ----------------------------------------------------------------------------
128 ----------------------------------------------------------------------------
129 Reikai Doushi (Chinese Exorcist)
130 aka Last Apostle Puppet Show (US)
131 (c)1988 HOME DATA
132 
133 CPU   : 68B09E
134 SOUND : YM2203
135 OSC.  : 16.000MHz 9.000MHz
136 
137 ----------------------------------------------------------------------------
138 ----------------------------------------------------------------------------
139 Mahjong Kojinkyouju (Private Teacher)
140 (c)1989 HOME DATA
141 
142 Board:  X73-PWB-A(C)
143 
144 CPU:    6809 uPC324C
145 Sound:  SN76489
146 OSC:    16.000MHz 9.000MHz
147 
148 ----------------------------------------------------------------------------
149 Mahjong Vitamin C
150 (c)1989 Home Data
151 
152 Board:  X73-PWB-A(A)
153 
154 CPU:    68B09E uPD7807CW(?)
155 Sound:  SN76489AN DAC
156 OSC:    9.000MHz 16.000MHz
157 Custom: GX61A01
158 
159 ----------------------------------------------------------------------------
160 Mahjong-yougo no Kisotairyoku
161 (c)1989 Home Data
162 
163 Board:  X83-PWB-A(A)
164 
165 CPU:    68B09E uPD7807CW(?)
166 Sound:  SN76489AN DAC
167 OSC:    9.000MHz 16.000MHz
168 Custom: GX61A01
169 
170 ----------------------------------------------------------------------------
171 Mahjong Kinjirareta Asobi
172 (c)1990 Home Data
173 
174 Board:  X83-PWB-A(A)
175 
176 CPU:    68B09E uPD7807CW
177 Sound:  SN76489AN
178         DAC
179 OSC:    11.000MHz 16.000MHz
180 Custom: GX61A01
181 
182 ----------------------------------------------------------------------------
183 Mahjong Jogakuen
184 (c)19?? Windom
185 
186 Board:  X83-PWB-A(A)
187 
188 CPU:    68B09E uPD7807CW(?)
189 Sound:  SN76489AN DAC
190 OSC:    9.000MHz 16.000MHz
191 Custom: GX61A01
192 
193 ----------------------------------------------------------------------------
194 ----------------------------------------------------------------------------
195 Mahjong Lemon Angel
196 (c)1990 Homedata
197 
198 Board:  X83-PWB-A(A)
199 
200 CPU:    Fujitsu MBL68B09E (16G)
201         (surface scratched 64pin DIP device on location 12G) [probably uPD7807CW]
202 Sound:  SN76489
203 OSC:    16.0000MHz (XTAL1) 9.000MHz (XTAL2)
204 Custom: HOMEDATA GX61A01 102 8842KK
205 
206 ----------------------------------------------------------------------------
207 Mahjong Ikagadesuka
208 (c)1991 Mitchell
209 
210 Board:  X83-PWB-A(A)
211 
212 CPU:    68B09E uPD7807CW
213 Sound:  SN76489AN DAC
214 OSC:    9.000MHz 16.000MHz
215 Custom: GX61A01
216 
217 ***************************************************************************/
218 
219 #include "driver.h"
220 #include "vidhrdw/generic.h"
221 #include "cpu/m6809/m6809.h"
222 #include "cpu/upd7810/upd7810.h"
223 #include "homedata.h"
224 
225 
226 
227 /********************************************************************************/
228 
229 
230 static int vblank;
231 
INTERRUPT_GEN(homedata_irq)232 static INTERRUPT_GEN( homedata_irq )
233 {
234 	vblank = 1;
235 	cpu_set_irq_line(0,M6809_FIRQ_LINE,HOLD_LINE);
236 }
237 
INTERRUPT_GEN(upd7807_irq)238 static INTERRUPT_GEN( upd7807_irq )
239 {
240 	cpu_set_irq_line(1,UPD7810_INTF1,HOLD_LINE);
241 }
242 
243 
244 /********************************************************************************
245 
246   Older Mahjong games:
247 
248   single CPU, handling SN76489 + DAC and inputs
249 
250  ********************************************************************************/
251 
252 static int keyb;
253 
READ_HANDLER(mrokumei_keyboard_r)254 static READ_HANDLER( mrokumei_keyboard_r )
255 {
256 	int res = 0x3f,i;
257 
258 	/* offset 0 is player 1, offset 1 player 2 (not supported) */
259 	if (offset == 0)
260 	{
261 		for (i = 0;i < 5;i++)
262 		{
263 			if (keyb & (1 << i))
264 			{
265 				res = readinputport(3+i) & 0x3f;
266 				break;
267 			}
268 		}
269 	}
270 
271 	if (offset == 0)
272 	{
273 		/* bit 7: visible page
274 		 * bit 6: vblank
275 		 * other bits are inputs
276 		 */
277 		res |= homedata_visible_page << 7;
278 
279 		if (vblank) res |= 0x40;
280 
281 		vblank = 0;
282 	}
283 
284 	return res;
285 }
286 
WRITE_HANDLER(mrokumei_keyboard_select_w)287 static WRITE_HANDLER( mrokumei_keyboard_select_w )
288 {
289 	keyb = data;
290 }
291 
292 
293 
294 static int sndbank;
295 
READ_HANDLER(mrokumei_sound_io_r)296 static READ_HANDLER( mrokumei_sound_io_r )
297 {
298 	if (sndbank & 4)
299 		return(soundlatch_r(0));
300 	else
301 		return memory_region(REGION_CPU2)[0x10000 + offset + (sndbank & 1) * 0x10000];
302 }
303 
WRITE_HANDLER(mrokumei_sound_bank_w)304 static WRITE_HANDLER( mrokumei_sound_bank_w )
305 {
306 	/* bit 0 = ROM bank
307 	   bit 2 = ROM or soundlatch
308 	 */
309 	sndbank = data;
310 }
311 
WRITE_HANDLER(mrokumei_sound_io_w)312 static WRITE_HANDLER( mrokumei_sound_io_w )
313 {
314 	switch (offset & 0xff)
315 	{
316 		case 0x40:
317 			DAC_signed_data_w(0,data);
318 			break;
319 		default:
320 			logerror("%04x: I/O write to port %04x\n",activecpu_get_pc(),offset);
321 			break;
322 	}
323 }
324 
WRITE_HANDLER(mrokumei_sound_cmd_w)325 static WRITE_HANDLER( mrokumei_sound_cmd_w )
326 {
327 	soundlatch_w(offset,data);
328 	cpu_set_irq_line(1,0,HOLD_LINE);
329 }
330 
331 
332 /********************************************************************************
333 
334   Reikai Doushi:
335 
336   slave uPD7807, handling YM2203 + DAC and inputs
337 
338  ********************************************************************************/
339 
340 static int upd7807_porta,upd7807_portc;
341 
READ_HANDLER(reikaids_upd7807_porta_r)342 static READ_HANDLER( reikaids_upd7807_porta_r )
343 {
344 	return upd7807_porta;
345 }
346 
WRITE_HANDLER(reikaids_upd7807_porta_w)347 static WRITE_HANDLER( reikaids_upd7807_porta_w )
348 {
349 	upd7807_porta = data;
350 }
351 
WRITE_HANDLER(reikaids_upd7807_portc_w)352 static WRITE_HANDLER( reikaids_upd7807_portc_w )
353 {
354 	/* port C layout:
355 	   7 coin counter
356 	   6 to main CPU (data)
357 	   5 YM2203 write clock
358 	   4 YM2203 read clock
359 	   3 YM2203 address (0 = register select 1 = data)
360 	   2 to main CPU (status)
361 	   1 \ ROM bank
362 	   0 /
363 	  */
364 //	logerror("%04x: port C wr %02x (STATUS %d DATA %d)\n",activecpu_get_pc(),data,BIT(data,2),BIT(data,6));
365 
366 
367 	cpu_setbank(2,memory_region(REGION_CPU2) + 0x10000 * (data & 0x03));
368 
369 	coin_counter_w(0,~data & 0x80);
370 
371 	if (BIT(upd7807_portc,5) && !BIT(data,5))	/* write clock 1->0 */
372 	{
373 		if (BIT(data,3))
374 			YM2203_write_port_0_w(0,upd7807_porta);
375 		else
376 			YM2203_control_port_0_w(0,upd7807_porta);
377 	}
378 
379 	if (BIT(upd7807_portc,4) && !BIT(data,4))	/* read clock 1->0 */
380 	{
381 		if (BIT(data,3))
382 			upd7807_porta = YM2203_read_port_0_r(0);
383 		else
384 			upd7807_porta = YM2203_status_port_0_r(0);
385 	}
386 
387 	upd7807_portc = data;
388 }
389 
MACHINE_INIT(reikaids_upd7807)390 static MACHINE_INIT( reikaids_upd7807 )
391 {
392 	/* on reset, ports are set as input (high impedance), therefore 0xff output */
393 	reikaids_which=homedata_priority;
394 	reikaids_upd7807_portc_w(0,0xff);
395 }
396 
READ_HANDLER(reikaids_io_r)397 READ_HANDLER( reikaids_io_r )
398 {
399 	int res = readinputport(2);	// bit 4 = coin, bit 5 = service
400 
401 	res |= BIT(upd7807_portc,2) * 0x01;		// bit 0 = upd7807 status
402 	res |= BIT(upd7807_portc,6) * 0x02;		// bit 1 = upd7807 data
403 	if (vblank) res |= 0x04;				// bit 2 = vblank
404 	res |= homedata_visible_page * 0x08;	// bit 3 = visible page
405 
406 	vblank = 0;
407 
408 //logerror("%04x: io_r %02x\n",activecpu_get_pc(),res);
409 
410 	return res;
411 }
412 
413 static int snd_command;
414 
READ_HANDLER(reikaids_snd_command_r)415 static READ_HANDLER( reikaids_snd_command_r )
416 {
417 //logerror("%04x: sndmcd_r (%02x)\n",activecpu_get_pc(),snd_command);
418 	return snd_command;
419 }
420 
WRITE_HANDLER(reikaids_snd_command_w)421 static WRITE_HANDLER( reikaids_snd_command_w )
422 {
423 	snd_command = data;
424 //logerror("%04x: coprocessor_command_w %02x\n",activecpu_get_pc(),data);
425 }
426 
427 
428 
429 /********************************************************************************
430 
431   Newer Mahjong games:
432 
433   slave uPD7807, handling SN76489 + DAC and inputs
434 
435  ********************************************************************************/
436 
437 static int to_cpu,from_cpu;
438 
WRITE_HANDLER(pteacher_snd_command_w)439 static WRITE_HANDLER( pteacher_snd_command_w )
440 {
441 //logerror("%04x: snd_command_w %02x\n",activecpu_get_pc(),data);
442 	from_cpu = data;
443 }
444 
READ_HANDLER(pteacher_snd_r)445 static READ_HANDLER( pteacher_snd_r )
446 {
447 //logerror("%04x: pteacher_snd_r %02x\n",activecpu_get_pc(),to_cpu);
448 	return to_cpu;
449 }
450 
READ_HANDLER(pteacher_io_r)451 static READ_HANDLER( pteacher_io_r )
452 {
453 	/* bit 6: !vblank
454 	 * bit 7: visible page
455 	 * other bits seem unused
456 	 */
457 
458 	int res = (homedata_visible_page ^ 1) << 7;
459 
460 	if (!vblank) res |= 0x40;
461 
462 	vblank = 0;
463 
464 	return res;
465 }
466 
READ_HANDLER(pteacher_keyboard_r)467 static READ_HANDLER( pteacher_keyboard_r )
468 {
469 	int dips = readinputport(0);
470 
471 //	logerror("%04x: keyboard_r with port A = %02x\n",activecpu_get_pc(),upd7807_porta);
472 
473 	if (upd7807_porta & 0x80)
474 	{
475 		/* player 1 + dip switches */
476 		int row = (upd7807_porta & 0x07);
477 		return readinputport(2 + row) | (((dips >> row) & 1) << 5);	// 0-5
478 	}
479 	if (upd7807_porta & 0x08)
480 	{
481 		/* player 2 (not supported) + dip switches */
482 		int row = ((upd7807_porta >> 4) & 0x07);
483 		return 0xdf | (((dips >> (row+5)) & 1) << 5);	// 6-11
484 	}
485 
486 	return 0xff;
487 }
488 
READ_HANDLER(pteacher_upd7807_porta_r)489 static READ_HANDLER( pteacher_upd7807_porta_r )
490 {
491 	if (!BIT(upd7807_portc,6))
492 		upd7807_porta = from_cpu;
493 	else
494 logerror("%04x: read PA with PC *not* clear\n",activecpu_get_pc());
495 
496 	return upd7807_porta;
497 }
498 
WRITE_HANDLER(pteacher_snd_answer_w)499 static WRITE_HANDLER( pteacher_snd_answer_w )
500 {
501 	to_cpu = data;
502 //logerror("%04x: to_cpu = %02x\n",activecpu_get_pc(),to_cpu);
503 }
504 
WRITE_HANDLER(pteacher_upd7807_porta_w)505 static WRITE_HANDLER( pteacher_upd7807_porta_w )
506 {
507 	upd7807_porta = data;
508 }
509 
WRITE_HANDLER(pteacher_upd7807_portc_w)510 static WRITE_HANDLER( pteacher_upd7807_portc_w )
511 {
512 	/* port C layout:
513 	   7 coin counter
514 	   6 enable message from main CPU on port A
515 	   5 clock latch for 76489 command
516 	   4
517 	   3 \ ROM bank
518 	   2 /
519 	   1 input (service)
520 	   0 input (coin)
521 	  */
522 
523 //	logerror("%04x: port C wr %02x\n",activecpu_get_pc(),data);
524 
525 	cpu_setbank(2,memory_region(REGION_CPU2) + 0x10000 * ((data & 0x0c) >> 2));
526 
527 	coin_counter_w(0,~data & 0x80);
528 
529 	if (BIT(upd7807_portc,5) && !BIT(data,5))	/* clock 1->0 */
530 		SN76496_0_w(0,upd7807_porta);
531 
532 	upd7807_portc = data;
533 }
534 
MACHINE_INIT(pteacher_upd7807)535 static MACHINE_INIT( pteacher_upd7807 )
536 {
537 	/* on reset, ports are set as input (high impedance), therefore 0xff output */
538 	pteacher_upd7807_portc_w(0,0xff);
539 }
540 
541 
542 /********************************************************************************/
543 
544 
WRITE_HANDLER(bankswitch_w)545 static WRITE_HANDLER( bankswitch_w )
546 {
547 	data8_t *rom = memory_region(REGION_CPU1);
548 	int len = memory_region_length(REGION_CPU1) - 0x10000+0x4000;
549 	int offs = (data * 0x4000) & (len-1);
550 
551 	/* last bank is fixed */
552 	if (offs < len - 0x4000)
553 	{
554 		cpu_setbank(1, &rom[offs + 0x10000]);
555 	}
556 	else
557 	{
558 		cpu_setbank(1, &rom[0xc000]);
559 	}
560 }
561 
562 
563 /********************************************************************************/
564 
565 
MEMORY_READ_START(mrokumei_readmem)566 MEMORY_READ_START( mrokumei_readmem )
567 	{ 0x0000, 0x3fff, MRA_RAM }, /* videoram */
568 	{ 0x4000, 0x5fff, MRA_RAM },
569 	{ 0x6000, 0x6fff, MRA_RAM }, /* work ram */
570 	{ 0x7800, 0x7800, MRA_RAM }, /* only used to store the result of the ROM check */
571 	{ 0x7801, 0x7802, mrokumei_keyboard_r },	// also vblank and active page
572 	{ 0x7803, 0x7803, input_port_2_r },	// coin, service
573 	{ 0x7804, 0x7804, input_port_0_r },	// DSW1
574 	{ 0x7805, 0x7805, input_port_1_r },	// DSW2
575 	{ 0x7ffe, 0x7ffe, MRA_NOP },	// ??? read every vblank, value discarded
576 	{ 0x8000, 0xffff, MRA_ROM },
577 MEMORY_END
578 
579 MEMORY_WRITE_START( mrokumei_writemem )
580 	{ 0x0000, 0x3fff, mrokumei_videoram_w, &videoram },
581 	{ 0x4000, 0x5fff, MWA_RAM },
582 	{ 0x6000, 0x6fff, MWA_RAM },
583 	{ 0x7800, 0x7800, MWA_RAM }, /* only used to store the result of the ROM check */
584 	{ 0x7ff0, 0x7ffd, MWA_RAM, &homedata_vreg },
585 	{ 0x8000, 0x8000, mrokumei_blitter_start_w },	// in some games also ROM bank switch to access service ROM
586 	{ 0x8001, 0x8001, mrokumei_keyboard_select_w },
587 	{ 0x8002, 0x8002, mrokumei_sound_cmd_w },
588 	{ 0x8003, 0x8003, SN76496_0_w },
589 	{ 0x8006, 0x8006, homedata_blitter_param_w },
590 	{ 0x8007, 0x8007, mrokumei_blitter_bank_w },
591 	{ 0x8000, 0xffff, MWA_ROM },
592 MEMORY_END
593 
594 MEMORY_READ_START( mrokumei_sound_readmem )
595 	{ 0x0000, 0x7fff, MRA_ROM },
596 MEMORY_END
597 
598 MEMORY_WRITE_START( mrokumei_sound_writemem )
599 	{ 0x0000, 0x7fff, MWA_ROM },
600 	{ 0xfffc, 0xfffd, MWA_NOP },	/* stack writes happen here, but there's no RAM */
601 	{ 0x8080, 0x8080, mrokumei_sound_bank_w },
602 MEMORY_END
603 
604 static PORT_READ_START( mrokumei_sound_readport )
605 	{ 0x0000, 0xffff, mrokumei_sound_io_r },
606 MEMORY_END
607 
608 static PORT_WRITE_START( mrokumei_sound_writeport )
609 	{ 0x0000, 0xffff, mrokumei_sound_io_w },	/* read address is 16-bit, write address is only 8-bit */
610 MEMORY_END
611 
612 /********************************************************************************/
613 
614 MEMORY_READ_START( reikaids_readmem )
615 	{ 0x0000, 0x3fff, MRA_RAM }, /* videoram */
616 	{ 0x4000, 0x5fff, MRA_RAM },
617 	{ 0x6000, 0x6fff, MRA_RAM }, /* work ram */
618 	{ 0x7800, 0x7800, MRA_RAM },
619 	{ 0x7801, 0x7801, input_port_0_r },
620 	{ 0x7802, 0x7802, input_port_1_r },
621 	{ 0x7803, 0x7803, reikaids_io_r },	// coin, blitter, upd7807
622 	{ 0x8000, 0xbfff, MRA_BANK1 },
623 	{ 0xc000, 0xffff, MRA_ROM },
624 MEMORY_END
625 
626 MEMORY_WRITE_START( reikaids_writemem )
627 	{ 0x0000, 0x3fff, reikaids_videoram_w, &videoram },
628 	{ 0x4000, 0x5fff, MWA_RAM },
629 	{ 0x6000, 0x6fff, MWA_RAM },
630 	{ 0x7800, 0x7800, MWA_RAM },	/* behaves as normal RAM */
631 	{ 0x7ff0, 0x7ffd, MWA_RAM, &homedata_vreg },
632 	{ 0x7ffe, 0x7ffe, reikaids_blitter_bank_w },
633 	{ 0x7fff, 0x7fff, reikaids_blitter_start_w },
634 	{ 0x8000, 0x8000, bankswitch_w },
635 	{ 0x8002, 0x8002, reikaids_snd_command_w },
636 	{ 0x8005, 0x8005, reikaids_gfx_bank_w },
637 	{ 0x8006, 0x8006, homedata_blitter_param_w },
638 	{ 0x8000, 0xffff, MWA_ROM },
639 MEMORY_END
640 
641 static MEMORY_READ_START( reikaids_upd7807_readmem )
642 	{ 0x0000, 0xfeff, MRA_BANK2 },	/* External ROM (Banked) */
643 	{ 0xff00, 0xffff, MRA_RAM },	/* Internal RAM */
644 MEMORY_END
645 
646 static MEMORY_WRITE_START( reikaids_upd7807_writemem )
647 	{ 0x0000, 0xfeff, MWA_ROM },
648 	{ 0xff00, 0xffff, MWA_RAM },
649 MEMORY_END
650 
651 static PORT_READ_START( reikaids_upd7807_readport )
652 	{ UPD7807_PORTA, UPD7807_PORTA, reikaids_upd7807_porta_r },
653 	{ UPD7807_PORTT, UPD7807_PORTT, reikaids_snd_command_r },
654 PORT_END
655 
656 static PORT_WRITE_START( reikaids_upd7807_writeport )
657 	{ UPD7807_PORTA, UPD7807_PORTA, reikaids_upd7807_porta_w },
658 	{ UPD7807_PORTB, UPD7807_PORTB, DAC_0_signed_data_w },
659 	{ UPD7807_PORTC, UPD7807_PORTC, reikaids_upd7807_portc_w },
660 PORT_END
661 
662 
663 /**************************************************************************/
664 
665 
666 MEMORY_READ_START( pteacher_readmem )
667 	{ 0x0000, 0x3fff, MRA_RAM },
668 	{ 0x4000, 0x5fff, MRA_RAM },
669 	{ 0x6000, 0x6fff, MRA_RAM }, /* work ram */
670 	{ 0x7800, 0x7800, MRA_RAM },
671 	{ 0x7801, 0x7801, pteacher_io_r },	// vblank, visible page
672 	{ 0x7ff2, 0x7ff2, pteacher_snd_r },
673 	{ 0x8000, 0xbfff, MRA_BANK1 },
674 	{ 0xc000, 0xffff, MRA_ROM },
675 MEMORY_END
676 
677 MEMORY_WRITE_START( pteacher_writemem )
678 	{ 0x0000, 0x3fff, pteacher_videoram_w, &videoram },
679 	{ 0x4000, 0x5eff, MWA_RAM },
680 	{ 0x5f00, 0x5fff, MWA_RAM },
681 	{ 0x6000, 0x6fff, MWA_RAM },
682 	{ 0x7800, 0x7800, MWA_RAM },	/* behaves as normal RAM */
683 	{ 0x7ff0, 0x7ffd, MWA_RAM, &homedata_vreg },
684 	{ 0x7fff, 0x7fff, pteacher_blitter_start_w },
685 	{ 0x8000, 0x8000, bankswitch_w },
686 	{ 0x8002, 0x8002, pteacher_snd_command_w },
687 	{ 0x8005, 0x8005, pteacher_blitter_bank_w },
688 	{ 0x8006, 0x8006, homedata_blitter_param_w },
689 	{ 0x8007, 0x8007, pteacher_gfx_bank_w },
690 	{ 0x8000, 0xffff, MWA_ROM },
691 MEMORY_END
692 
693 static MEMORY_READ_START( pteacher_upd7807_readmem )
694 	{ 0x0000, 0xfeff, MRA_BANK2 },	/* External ROM (Banked) */
695 	{ 0xff00, 0xffff, MRA_RAM },	/* Internal RAM */
696 MEMORY_END
697 
698 static MEMORY_WRITE_START( pteacher_upd7807_writemem )
699 	{ 0x0000, 0x0000, pteacher_snd_answer_w },
700 	{ 0x0000, 0xfeff, MWA_ROM },
701 	{ 0xff00, 0xffff, MWA_RAM },
702 MEMORY_END
703 
704 static PORT_READ_START( pteacher_upd7807_readport )
705 	{ UPD7807_PORTA, UPD7807_PORTA, pteacher_upd7807_porta_r },
706 	{ UPD7807_PORTT, UPD7807_PORTT, pteacher_keyboard_r },
707 	{ UPD7807_PORTC, UPD7807_PORTC, input_port_1_r },
708 PORT_END
709 
710 static PORT_WRITE_START( pteacher_upd7807_writeport )
711 	{ UPD7807_PORTA, UPD7807_PORTA, pteacher_upd7807_porta_w },
712 	{ UPD7807_PORTB, UPD7807_PORTB, DAC_0_signed_data_w },
713 	{ UPD7807_PORTC, UPD7807_PORTC, pteacher_upd7807_portc_w },
714 PORT_END
715 
716 
717 /**************************************************************************/
718 
719 
720 INPUT_PORTS_START( mjhokite )
721 	PORT_START
722 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
723 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
724 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
725 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
726 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
727 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
728 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coinage ) )
729 	PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
730 	PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
731 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
732 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
733 	PORT_DIPNAME( 0x10, 0x10, "Initial Score" )
734 	PORT_DIPSETTING(    0x10, "1000" )
735 	PORT_DIPSETTING(    0x00, "2000" )
736 	PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Difficulty ) )
737 	PORT_DIPSETTING(    0xe0, "1 (easiest)" )
738 	PORT_DIPSETTING(    0xc0, "2" )
739 	PORT_DIPSETTING(    0xa0, "3" )
740 	PORT_DIPSETTING(    0x80, "4" )
741 	PORT_DIPSETTING(    0x60, "5" )
742 	PORT_DIPSETTING(    0x40, "6" )
743 	PORT_DIPSETTING(    0x20, "7" )
744 	PORT_DIPSETTING(    0x00, "8 (hardest)" )
745 
746 	PORT_START
747 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
748 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
749 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
750 	PORT_DIPNAME( 0x02, 0x00, "Girl Voice" )
751 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
752 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
753 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
754 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
755 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
756 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
757 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
758 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
759 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
760 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
761 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
762 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
763 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
764 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
765 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
766 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
767 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
768 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
769 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
770 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
771 
772 	PORT_START
773 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
774 	PORT_DIPNAME( 0x02, 0x02, "Freeze?" )
775 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
776 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
777 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT )	// doesn't work in all games
778 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
779 	PORT_BITX(0x10, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
780 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
781 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
782 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
783 
784 	PORT_START
785 	PORT_BITX(0x01, IP_ACTIVE_LOW, 0, "A",   KEYCODE_A,        IP_JOY_NONE )
786 	PORT_BITX(0x02, IP_ACTIVE_LOW, 0, "E",   KEYCODE_E,        IP_JOY_NONE )
787 	PORT_BITX(0x04, IP_ACTIVE_LOW, 0, "I",   KEYCODE_I,        IP_JOY_NONE )
788 	PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "M",   KEYCODE_M,        IP_JOY_NONE )
789 	PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "Kan", KEYCODE_LCONTROL, IP_JOY_NONE )
790 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1                              )
791 
792 	PORT_START
793 	PORT_BITX(0x01, IP_ACTIVE_LOW, 0, "B",     KEYCODE_B,        IP_JOY_NONE )
794 	PORT_BITX(0x02, IP_ACTIVE_LOW, 0, "F",     KEYCODE_F,        IP_JOY_NONE )
795 	PORT_BITX(0x04, IP_ACTIVE_LOW, 0, "J",     KEYCODE_J,        IP_JOY_NONE )
796 	PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "N",     KEYCODE_N,        IP_JOY_NONE )
797 	PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "Reach", KEYCODE_LSHIFT,   IP_JOY_NONE )
798 	PORT_BITX(0x20, IP_ACTIVE_LOW, 0, "Bet",   KEYCODE_RCONTROL, IP_JOY_NONE )
799 
800 	PORT_START
801 	PORT_BITX(0x01, IP_ACTIVE_LOW, 0, "C",   KEYCODE_C,     IP_JOY_NONE )
802 	PORT_BITX(0x02, IP_ACTIVE_LOW, 0, "G",   KEYCODE_G,     IP_JOY_NONE )
803 	PORT_BITX(0x04, IP_ACTIVE_LOW, 0, "K",   KEYCODE_K,     IP_JOY_NONE )
804 	PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "Chi", KEYCODE_SPACE, IP_JOY_NONE )
805 	PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "Ron", KEYCODE_Z,     IP_JOY_NONE )
806 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
807 
808 	PORT_START
809 	PORT_BITX(0x01, IP_ACTIVE_LOW, 0, "D",   KEYCODE_D,    IP_JOY_NONE )
810 	PORT_BITX(0x02, IP_ACTIVE_LOW, 0, "H",   KEYCODE_H,    IP_JOY_NONE )
811 	PORT_BITX(0x04, IP_ACTIVE_LOW, 0, "L",   KEYCODE_L,    IP_JOY_NONE )
812 	PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "Pon", KEYCODE_LALT, IP_JOY_NONE )
813 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
814 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
815 
816 	PORT_START
817 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
818 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
819 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
820 	PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "Flip",   KEYCODE_X,        IP_JOY_NONE )
821 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
822 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
823 INPUT_PORTS_END
824 
825 INPUT_PORTS_START( reikaids )
826 	PORT_START	// IN0  - 0x7801
827 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_PLAYER1 )
828 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_PLAYER1 )
829 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_PLAYER1 )
830 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER1 )
831 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 ) /* punch */
832 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 ) /* kick */
833 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 ) /* jump */
834 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_START1 )
835 
836 	PORT_START	// IN1 - 0x7802
837 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_PLAYER2 )
838 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_PLAYER2 )
839 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_PLAYER2 )
840 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER2 )
841 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 ) /* punch */
842 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 ) /* kick */
843 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 ) /* jump */
844 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_START2 )
845 
846 	PORT_START	// IN2 - 0x7803
847 	PORT_BIT(  0x01, IP_ACTIVE_HIGH,IPT_SPECIAL ) /* coprocessor status */
848 	PORT_BIT(  0x02, IP_ACTIVE_HIGH,IPT_SPECIAL ) /* coprocessor data */
849 	PORT_BIT(  0x04, IP_ACTIVE_HIGH,IPT_SPECIAL ) /* vblank */
850 	PORT_BIT(  0x08, IP_ACTIVE_HIGH,IPT_SPECIAL ) /* visible page */
851 	PORT_BIT(  0x10, IP_ACTIVE_LOW,	IPT_COIN1    )
852 	PORT_BIT(  0x20, IP_ACTIVE_LOW,	IPT_SERVICE1 )
853 	PORT_BIT(  0x40, IP_ACTIVE_LOW,	IPT_UNKNOWN  )
854 	PORT_BIT(  0x80, IP_ACTIVE_LOW,	IPT_UNKNOWN  )
855 
856 	PORT_START	// DSW1
857 	PORT_DIPNAME( 0x01, 0x01, "Allow Continue" )
858 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
859 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
860 	PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )
861 	PORT_DIPSETTING(    0x06, "20k then every 60k" )
862 	PORT_DIPSETTING(    0x04, "30k then every 80k" )
863 	PORT_DIPSETTING(    0x02, "20k" )
864 	PORT_DIPSETTING(    0x00, "30k" )
865 	PORT_DIPNAME( 0x18, 0x10, DEF_STR( Lives ) )
866 	PORT_DIPSETTING(    0x18, "2" )
867 	PORT_DIPSETTING(    0x10, "3" )
868 	PORT_DIPSETTING(    0x08, "4" )
869 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
870 	PORT_DIPNAME( 0x20, 0x20, "Time" )
871 	PORT_DIPSETTING(    0x20, "60" )
872 	PORT_DIPSETTING(    0x00, "45" )
873 	PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6" )
874 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
875 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
876 	PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" )
877 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
878 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
879 
880 	PORT_START	// DSW2
881 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
882 	PORT_DIPSETTING(    0x03, "Easy" )
883 	PORT_DIPSETTING(    0x02, "Normal" )
884 	PORT_DIPSETTING(    0x01, "Hard" )
885 	PORT_DIPSETTING(    0x00, "Hardest" )
886 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Demo_Sounds ) )
887 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
888 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
889 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Flip_Screen ) )
890 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
891 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
892 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Cabinet ) )
893 	PORT_DIPSETTING(    0x10, DEF_STR( Upright ) )
894 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
895 	PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coinage ) )
896 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
897 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
898 	PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
899 	PORT_DIPSETTING(    0xe0, DEF_STR( 1C_1C ) )
900 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_2C ) )
901 	PORT_DIPSETTING(    0xa0, DEF_STR( 1C_3C ) )
902 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_4C ) )
903 	PORT_DIPSETTING(    0x60, DEF_STR( 1C_5C ) )
904 INPUT_PORTS_END
905 
906 INPUT_PORTS_START( battlcry )
907 	PORT_START	// IN0  - 0x7801
908 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_PLAYER1 )
909 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_PLAYER1 )
910 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_PLAYER1 )
911 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER1 )
912 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 ) /* punch */
913 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 ) /* kick */
914 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 ) /* jump */
915 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_START1 )
916 
917 	PORT_START	// IN1 - 0x7802
918 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_PLAYER2 )
919 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_PLAYER2 )
920 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_PLAYER2 )
921 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER2 )
922 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 ) /* punch */
923 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 ) /* kick */
924 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 ) /* jump */
925 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_START2 )
926 
927 	PORT_START	// IN2 - 0x7803
928 	PORT_BIT(  0x01, IP_ACTIVE_HIGH,IPT_SPECIAL ) /* coprocessor status */
929 	PORT_BIT(  0x02, IP_ACTIVE_HIGH,IPT_SPECIAL ) /* coprocessor data */
930 	PORT_BIT(  0x04, IP_ACTIVE_HIGH,IPT_SPECIAL ) /* vblank */
931 	PORT_BIT(  0x08, IP_ACTIVE_HIGH,IPT_SPECIAL ) /* visible page */
932 	PORT_BIT(  0x10, IP_ACTIVE_LOW,	IPT_COIN1    )
933 	PORT_BIT(  0x20, IP_ACTIVE_LOW,	IPT_SERVICE1 )
934 	PORT_BIT(  0x40, IP_ACTIVE_LOW,	IPT_UNKNOWN  )
935 	PORT_BIT(  0x80, IP_ACTIVE_LOW,	IPT_UNKNOWN  )
936 
937 	PORT_START	// DSW1
938 	PORT_DIPNAME( 0x01, 0x01, "Allow Continue" )
939 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
940 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
941 
942 	PORT_DIPNAME( 0x18, 0x10, DEF_STR( Lives ) )
943 	PORT_DIPSETTING(    0x18, "1" )
944 	PORT_DIPSETTING(    0x10, "2" )
945 	PORT_DIPSETTING(    0x08, "3" )
946 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
947 	PORT_DIPNAME( 0x20, 0x20, "Time" )
948 	PORT_DIPSETTING(    0x20, "90" )
949 	PORT_DIPSETTING(    0x00, "120" )
950 	PORT_DIPNAME( 0x40, 0x40, "Test Mode" )
951 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
952 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
953 
954 	PORT_START	// DSW2
955 
956 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) )
957 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
958 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
959 
960 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) )
961 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
962 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
963 
964 	PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coinage ) )
965 	PORT_DIPSETTING(    0x80, DEF_STR( 4C_1C ) )
966 	PORT_DIPSETTING(    0x40, DEF_STR( 3C_1C ) )
967 	PORT_DIPSETTING(    0xc0, DEF_STR( 2C_1C ) )
968 	PORT_DIPSETTING(    0xe0, DEF_STR( 1C_1C ) )
969 	PORT_DIPSETTING(    0x60, DEF_STR( 1C_2C ) )
970 	PORT_DIPSETTING(    0xa0, DEF_STR( 1C_3C ) )
971 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_4C ) )
972 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
973 
974 INPUT_PORTS_END
975 
976 
977 
978 
979 #define MJ_KEYBOARD																				\
980 	PORT_START																					\
981 	PORT_BITX(0x01, IP_ACTIVE_LOW, 0, "A",   KEYCODE_A,        IP_JOY_NONE )					\
982 	PORT_BITX(0x02, IP_ACTIVE_LOW, 0, "B",   KEYCODE_B,        IP_JOY_NONE )					\
983 	PORT_BITX(0x04, IP_ACTIVE_LOW, 0, "C",   KEYCODE_C,        IP_JOY_NONE )					\
984 	PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "D",   KEYCODE_D,        IP_JOY_NONE )					\
985 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )												\
986 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL )	/* dip switch (handled separately */		\
987 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )													\
988 																								\
989 	PORT_START																					\
990 	PORT_BITX(0x01, IP_ACTIVE_LOW, 0, "E",   KEYCODE_E,        IP_JOY_NONE )					\
991 	PORT_BITX(0x02, IP_ACTIVE_LOW, 0, "F",   KEYCODE_F,        IP_JOY_NONE )					\
992 	PORT_BITX(0x04, IP_ACTIVE_LOW, 0, "G",   KEYCODE_G,        IP_JOY_NONE )					\
993 	PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "H",   KEYCODE_H,        IP_JOY_NONE )					\
994 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )												\
995 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL )	/* dip switch (handled separately */		\
996 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )													\
997 																								\
998 	PORT_START																					\
999 	PORT_BITX(0x01, IP_ACTIVE_LOW, 0, "I",   KEYCODE_I,        IP_JOY_NONE )					\
1000 	PORT_BITX(0x02, IP_ACTIVE_LOW, 0, "J",   KEYCODE_J,        IP_JOY_NONE )					\
1001 	PORT_BITX(0x04, IP_ACTIVE_LOW, 0, "K",   KEYCODE_K,        IP_JOY_NONE )					\
1002 	PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "L",   KEYCODE_L,        IP_JOY_NONE )					\
1003 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )												\
1004 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL )	/* dip switch (handled separately */		\
1005 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )													\
1006 																								\
1007 	PORT_START																					\
1008 	PORT_BITX(0x01, IP_ACTIVE_LOW, 0, "M",    KEYCODE_M,        IP_JOY_NONE )					\
1009 	PORT_BITX(0x02, IP_ACTIVE_LOW, 0, "N",    KEYCODE_N,        IP_JOY_NONE )					\
1010 	PORT_BITX(0x04, IP_ACTIVE_LOW, 0, "Chi",  KEYCODE_SPACE, IP_JOY_NONE )						\
1011 	PORT_BITX(0x08, IP_ACTIVE_LOW, 0, "Pon",  KEYCODE_LALT,  IP_JOY_NONE )						\
1012 	PORT_BITX(0x10, IP_ACTIVE_LOW, 0, "Flip", KEYCODE_X,        IP_JOY_NONE )					\
1013 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL )	/* dip switch (handled separately */		\
1014 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )													\
1015 																								\
1016 	PORT_START																					\
1017 	PORT_BITX(0x01, IP_ACTIVE_LOW, 0, "Kan", KEYCODE_LCONTROL, IP_JOY_NONE )					\
1018 	PORT_BITX(0x02, IP_ACTIVE_LOW, 0, "Reach", KEYCODE_LSHIFT,   IP_JOY_NONE )					\
1019 	PORT_BITX(0x04, IP_ACTIVE_LOW, 0, "Ron", KEYCODE_Z,     IP_JOY_NONE )						\
1020 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )												\
1021 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )												\
1022 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL )	/* dip switch (handled separately */		\
1023 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )													\
1024 																								\
1025 	PORT_START																					\
1026 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )													\
1027 	PORT_BITX(0x02, IP_ACTIVE_LOW, 0, "Bet",   KEYCODE_RCONTROL, IP_JOY_NONE )					\
1028 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )												\
1029 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )												\
1030 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )												\
1031 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL )	/* dip switch (handled separately */		\
1032 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
1033 
1034 
1035 INPUT_PORTS_START( pteacher )
1036 	PORT_START	/* dip switches (handled by pteacher_keyboard_r) */
1037 	PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Demo_Sounds ) )
1038 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
1039 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1040 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
1041 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
1042 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1043 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
1044 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
1045 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1046 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
1047 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
1048 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1049 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
1050 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
1051 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1052 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
1053 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
1054 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1055 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
1056 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
1057 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1058 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) )
1059 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
1060 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1061 	PORT_SERVICE( 0x0100, IP_ACTIVE_LOW )
1062 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
1063 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
1064 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1065 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
1066 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
1067 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1068 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
1069 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
1070 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1071 	PORT_BIT( 0xf000, IP_ACTIVE_LOW, IPT_UNUSED )
1072 
1073 	PORT_START
1074 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1075 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 )
1076 	PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
1077 
1078 	MJ_KEYBOARD
1079 INPUT_PORTS_END
1080 
1081 INPUT_PORTS_START( jogakuen )
1082 	PORT_START	/* dip switches (handled by pteacher_keyboard_r) */
1083 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) )
1084 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
1085 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1086 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
1087 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
1088 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1089 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
1090 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
1091 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1092 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) )
1093 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
1094 	PORT_DIPSETTING(      0x0008, DEF_STR( On ) )
1095 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
1096 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
1097 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1098 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Flip_Screen ) )
1099 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
1100 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1101 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
1102 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
1103 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1104 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
1105 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
1106 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1107 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
1108 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
1109 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1110 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
1111 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
1112 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1113 	PORT_SERVICE( 0x0400, IP_ACTIVE_LOW )
1114 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
1115 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
1116 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1117 	PORT_BIT( 0xf000, IP_ACTIVE_LOW, IPT_UNUSED )
1118 
1119 	PORT_START
1120 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1121 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 )
1122 	PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
1123 
1124 	MJ_KEYBOARD
1125 INPUT_PORTS_END
1126 
1127 INPUT_PORTS_START( mjikaga )
1128 	PORT_START	/* dip switches (handled by pteacher_keyboard_r) */
1129 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) )
1130 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
1131 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1132 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
1133 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
1134 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1135 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
1136 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
1137 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1138 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
1139 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
1140 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1141 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
1142 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
1143 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1144 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
1145 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
1146 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1147 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
1148 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
1149 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1150 	PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
1151 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) )
1152 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
1153 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1154 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
1155 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
1156 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1157 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
1158 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
1159 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1160 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
1161 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
1162 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1163 	PORT_BIT( 0xf000, IP_ACTIVE_LOW, IPT_UNUSED )
1164 
1165 	PORT_START
1166 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1167 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 )
1168 	PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
1169 
1170 	MJ_KEYBOARD
1171 INPUT_PORTS_END
1172 
1173 
1174 /**************************************************************************/
1175 
1176 
1177 static struct GfxLayout char_layout =
1178 {
1179 	8,8,
1180 	RGN_FRAC(1,1),
1181 	4,
1182 	{ 0, 1, 2, 3 },
1183 	{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4 },
1184 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
1185 	32*8
1186 };
1187 
1188 static struct GfxDecodeInfo mrokumei_gfxdecodeinfo[] =
1189 {
1190 	{ REGION_GFX1, 0, &char_layout, 0x6000, 0x100 },
1191 	{ REGION_GFX2, 0, &char_layout, 0x7000, 0x100 },
1192 	{ -1 }
1193 };
1194 
1195 static struct GfxLayout tile_layout =
1196 {
1197 	8,8,
1198 	RGN_FRAC(1,1),
1199 	8,
1200 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
1201 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1202 	{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 },
1203 	64*8
1204 };
1205 
1206 static struct GfxDecodeInfo reikaids_gfxdecodeinfo[] =
1207 {
1208 	{ REGION_GFX1, 0, &tile_layout, 0x6000, 0x20 },
1209 	{ REGION_GFX2, 0, &tile_layout, 0x4000, 0x20 },
1210 	{ REGION_GFX3, 0, &tile_layout, 0x2000, 0x20 },
1211 	{ REGION_GFX4, 0, &tile_layout, 0x0000, 0x20 },
1212 	{ -1 }
1213 };
1214 
1215 static struct GfxDecodeInfo pteacher_gfxdecodeinfo[] =
1216 {
1217 	{ REGION_GFX1, 0, &tile_layout, 0x0000, 0x40 },
1218 	{ REGION_GFX2, 0, &tile_layout, 0x4000, 0x40 },
1219 	{ -1 }
1220 };
1221 
1222 static struct GfxLayout tile_layout_4bpp_hi =
1223 {
1224 	8,8,
1225 	RGN_FRAC(1,1),
1226 	4,
1227 	{ 4, 5, 6, 7 },
1228 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1229 	{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 },
1230 	64*8
1231 };
1232 
1233 static struct GfxLayout tile_layout_4bpp_lo =
1234 {
1235 	8,8,
1236 	RGN_FRAC(1,1),
1237 	4,
1238 	{ 0, 1, 2, 3 },
1239 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1240 	{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 },
1241 	64*8
1242 };
1243 
1244 static struct GfxDecodeInfo lemnangl_gfxdecodeinfo[] =
1245 {
1246 	{ REGION_GFX1, 0, &tile_layout_4bpp_hi, 0x0000, 0x200 },
1247 	{ REGION_GFX1, 0, &tile_layout_4bpp_lo, 0x2000, 0x200 },
1248 	{ REGION_GFX2, 0, &tile_layout_4bpp_lo, 0x4000, 0x200 },
1249 	{ REGION_GFX2, 0, &tile_layout_4bpp_hi, 0x6000, 0x200 },
1250 	{ -1 }
1251 };
1252 
1253 
1254 
1255 static struct SN76496interface sn76496_interface =
1256 {
1257 	1,
1258 	{ 16000000/4 },	 /* 4MHz ? */
1259 	{ 50 }
1260 };
1261 
1262 static struct DACinterface dac_interface =
1263 {
1264 	1,
1265 	{ 100 }
1266 };
1267 
1268 
1269 static MACHINE_DRIVER_START( mrokumei )
1270 
1271 	/* basic machine hardware */
1272 	MDRV_CPU_ADD(M6809, 16000000/4)	/* 4MHz ? */
1273 	MDRV_CPU_MEMORY(mrokumei_readmem,mrokumei_writemem)
1274 	MDRV_CPU_VBLANK_INT(homedata_irq,1)	/* also triggered by the blitter */
1275 
1276 	MDRV_CPU_ADD(Z80, 16000000/4)	/* 4MHz ? */
1277 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU | CPU_16BIT_PORT)
1278 	MDRV_CPU_MEMORY(mrokumei_sound_readmem,mrokumei_sound_writemem)
1279 	MDRV_CPU_PORTS(mrokumei_sound_readport,mrokumei_sound_writeport)
1280 
1281 	MDRV_FRAMES_PER_SECOND(59)
1282 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
1283 
1284 	/* video hardware */
1285 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
1286 	MDRV_SCREEN_SIZE(64*8, 32*8)
1287 	// visible area can be changed at runtime
1288 	MDRV_VISIBLE_AREA(0*8, 54*8-1, 2*8, 30*8-1)
1289 	MDRV_GFXDECODE(mrokumei_gfxdecodeinfo)
1290 	MDRV_PALETTE_LENGTH(0x8000)
1291 
1292 	MDRV_PALETTE_INIT(mrokumei)
1293 	MDRV_VIDEO_START(mrokumei)
1294 	MDRV_VIDEO_UPDATE(mrokumei)
1295 	MDRV_VIDEO_EOF(homedata)
1296 
1297 	/* sound hardware */
1298 	MDRV_SOUND_ADD(SN76496, sn76496_interface)	// SN76489 actually
1299 	MDRV_SOUND_ADD(DAC, dac_interface)
1300 MACHINE_DRIVER_END
1301 
1302 
1303 /**************************************************************************/
1304 
1305 
1306 static struct YM2203interface ym2203_interface =
1307 {
1308 	1,
1309 	3000000,	/* ? */
1310 	{ YM2203_VOL(100,25) },
1311 	{ input_port_3_r },
1312 	{ input_port_4_r },
1313 	{ 0	},
1314 	{ 0 },
1315 	{ NULL }
1316 };
1317 
1318 
1319 static struct DACinterface reikaids_dac_interface =
1320 {
1321 	1,
1322 	{ 40 }
1323 };
1324 
1325 
1326 UPD7810_CONFIG cpu_config =
1327 {
1328 	TYPE_7810,
1329 	NULL	/* io_callback */
1330 };
1331 
1332 
1333 static MACHINE_DRIVER_START( reikaids )
1334 
1335 	/* basic machine hardware */
1336 	MDRV_CPU_ADD(M6809, 16000000/4)	/* 4MHz ? */
MDRV_CPU_MEMORY(reikaids_readmem,reikaids_writemem)1337 	MDRV_CPU_MEMORY(reikaids_readmem,reikaids_writemem)
1338 	MDRV_CPU_VBLANK_INT(homedata_irq,1)	/* also triggered by the blitter */
1339 
1340 	MDRV_CPU_ADD(UPD7807, 8000000)	/* ??? MHz (max speed for the 7807 is 12MHz) */
1341 	MDRV_CPU_CONFIG(cpu_config)
1342 	MDRV_CPU_MEMORY(reikaids_upd7807_readmem,reikaids_upd7807_writemem)
1343 	MDRV_CPU_PORTS(reikaids_upd7807_readport,reikaids_upd7807_writeport)
1344 	MDRV_CPU_VBLANK_INT(upd7807_irq,1)
1345 
1346 	MDRV_INTERLEAVE(500)	// very high interleave required to sync for startup tests
1347 
1348 	MDRV_FRAMES_PER_SECOND(59)
1349 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
1350 
1351 	MDRV_MACHINE_INIT(reikaids_upd7807)
1352 
1353 	/* video hardware */
1354 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
1355 	MDRV_SCREEN_SIZE(256, 256)
1356 	MDRV_VISIBLE_AREA(0, 255, 16, 256-1-16)
1357 	MDRV_GFXDECODE(reikaids_gfxdecodeinfo)
1358 	MDRV_PALETTE_LENGTH(0x8000)
1359 
1360 	MDRV_PALETTE_INIT(reikaids)
1361 	MDRV_VIDEO_START(reikaids)
1362 	MDRV_VIDEO_UPDATE(reikaids)
1363 	MDRV_VIDEO_EOF(homedata)
1364 
1365 	/* sound hardware */
1366 	MDRV_SOUND_ADD(YM2203, ym2203_interface)
1367 	MDRV_SOUND_ADD(DAC, reikaids_dac_interface)
1368 MACHINE_DRIVER_END
1369 
1370 
1371 /**************************************************************************/
1372 
1373 static MACHINE_DRIVER_START( pteacher )
1374 
1375 	/* basic machine hardware */
1376 	MDRV_CPU_ADD(M6809, 16000000/4)	/* 4MHz ? */
1377 	MDRV_CPU_MEMORY(pteacher_readmem,pteacher_writemem)
1378 	MDRV_CPU_VBLANK_INT(homedata_irq,1)	/* also triggered by the blitter */
1379 
1380 	MDRV_CPU_ADD_TAG("sound", UPD7807, 9000000)	/* 9MHz ? */
1381 	MDRV_CPU_CONFIG(cpu_config)
1382 	MDRV_CPU_MEMORY(pteacher_upd7807_readmem,pteacher_upd7807_writemem)
1383 	MDRV_CPU_PORTS(pteacher_upd7807_readport,pteacher_upd7807_writeport)
1384 	MDRV_CPU_VBLANK_INT(upd7807_irq,1)
1385 
1386 	MDRV_INTERLEAVE(100)	// should be enough
1387 
1388 	MDRV_FRAMES_PER_SECOND(59)
1389 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
1390 
1391 	MDRV_MACHINE_INIT(pteacher_upd7807)
1392 
1393 	/* video hardware */
1394 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
1395 	MDRV_SCREEN_SIZE(64*8, 32*8)
1396 	// visible area can be changed at runtime
1397 	MDRV_VISIBLE_AREA(0*8, 54*8-1, 2*8, 30*8-1)
1398 	MDRV_GFXDECODE(pteacher_gfxdecodeinfo)
1399 	MDRV_PALETTE_LENGTH(0x8000)
1400 
1401 	MDRV_PALETTE_INIT(pteacher)
1402 	MDRV_VIDEO_START(pteacher)
1403 	MDRV_VIDEO_UPDATE(pteacher)
1404 	MDRV_VIDEO_EOF(homedata)
1405 
1406 	/* sound hardware */
1407 	MDRV_SOUND_ADD(SN76496, sn76496_interface)	// SN76489 actually
1408 	MDRV_SOUND_ADD(DAC, dac_interface)
1409 MACHINE_DRIVER_END
1410 
1411 static MACHINE_DRIVER_START( mjkinjas )
1412 
1413 	MDRV_IMPORT_FROM(pteacher)
1414 
1415 	MDRV_CPU_REPLACE("sound", UPD7807, 11000000)	/* 11MHz ? */
1416 MACHINE_DRIVER_END
1417 
1418 static MACHINE_DRIVER_START( lemnangl )
1419 
1420 	MDRV_IMPORT_FROM(pteacher)
1421 
1422 	/* video hardware */
1423 	MDRV_GFXDECODE(lemnangl_gfxdecodeinfo)
1424 
1425 	MDRV_VIDEO_START(lemnangl)
1426 MACHINE_DRIVER_END
1427 
1428 
1429 
1430 /**************************************************************************/
1431 
1432 
1433 ROM_START( hourouki )
1434 	ROM_REGION( 0x010000, REGION_CPU1, 0 ) /* 6809 Code */
1435 	ROM_LOAD( "x77f01.bin", 0x08000, 0x8000, CRC(cd3197b8) SHA1(7dad9ce57a83d675a8a9a4e06df360c22100fe4b) )
1436 
1437 	ROM_REGION( 0x30000, REGION_CPU2, 0 )	/* Z80 code */
1438 	ROM_LOAD( "x77a10.bin", 0x00000, 0x20000, CRC(dc1d616b) SHA1(93b8dfe1566556e9621c0d5f3998b31874f74a28) )
1439 	ROM_RELOAD(             0x10000, 0x20000 )
1440 
1441 	ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE )
1442 	ROM_LOAD( "x77a03.bin", 0, 0x20000, CRC(5960cde8) SHA1(857b56b304423102a5f1fc88ba4a2386d012bf4d) )
1443 
1444 	ROM_REGION( 0x40000, REGION_GFX2, ROMREGION_DISPOSE )
1445 	ROM_LOAD( "x77a04.bin", 0x00000, 0x20000, CRC(fd348e59) SHA1(df0eb4d24e3e778e7a06b7fd7fa4e077fa0ebf82) )
1446 	ROM_LOAD( "x77a05.bin", 0x20000, 0x20000, CRC(3f76c8af) SHA1(2b41a9a06f8ccbb9f3879c742fa8af4424837fb2) )
1447 
1448 	ROM_REGION( 0x010000, REGION_PROMS, 0 )	/* static palette */
1449 	ROM_LOAD16_BYTE( "x77e06.bin", 0x00000, 0x8000, CRC(63607fe5) SHA1(50c756d741117bd0ea8a877bcb1f025e02cc6d29) )
1450 	ROM_LOAD16_BYTE( "x77e07.bin", 0x00001, 0x8000, CRC(79fcfc57) SHA1(4311a6bd8aa2dcad2b4fa5a9091c27dd74df62eb) )
1451 
1452 	ROM_REGION( 0x20000, REGION_USER1, 0 ) /* blitter data */
1453 	ROM_LOAD( "x77a08.bin", 0x0000, 0x20000, CRC(22bde229) SHA1(8b44fa895f77b5c95d798172225a030fa0c04126) )
1454 ROM_END
1455 
1456 ROM_START( mhgaiden )
1457 	ROM_REGION( 0x010000, REGION_CPU1, 0 ) /* 6809 Code */
1458 	ROM_LOAD( "x72e01.bin", 0x08000, 0x8000, CRC(98cfa53e) SHA1(dd08f5f9ff9d4a9e01e531247fcb17a8407ca8b6) )
1459 
1460 	ROM_REGION( 0x30000, REGION_CPU2, 0 )	/* Z80 code */
1461 	ROM_LOAD( "x72b10.bin", 0x00000, 0x20000, CRC(00ebbc45) SHA1(9e7ade202bf37a86153a38d705ae26a72732d2bb) )
1462 	ROM_RELOAD(             0x10000, 0x20000 )
1463 
1464 	ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE )
1465 	ROM_LOAD( "x72b03.bin", 0, 0x20000, CRC(9019936f) SHA1(5b98ad1b4c0b141bc84fc17bea49784883c5775a) )
1466 
1467 	ROM_REGION( 0x40000, REGION_GFX2, ROMREGION_DISPOSE )
1468 	ROM_LOAD( "x72b04.bin", 0x00000, 0x20000, CRC(37e3e779) SHA1(7011159dee2c643c3fd6ffbbd0849f63933279ad) )
1469 	ROM_LOAD( "x72b05.bin", 0x20000, 0x20000, CRC(aa5ce6f6) SHA1(d97b08fce68a69b1445d5ab28c0c97fabb5f264b) )
1470 
1471 	ROM_REGION( 0x010000, REGION_PROMS, 0 )	/* static palette */
1472 	ROM_LOAD16_BYTE( "x72c06.bin", 0x00000, 0x8000, CRC(b57fb589) SHA1(21b2fc33b9045a4ffa9e4b0bd598fd3416c0adbf) )
1473 	ROM_LOAD16_BYTE( "x72c07.bin", 0x00001, 0x8000, CRC(2aadb285) SHA1(90af8541092fbb116b6d6eaf1511b49a2f9bceaf) )
1474 
1475 	ROM_REGION( 0x20000, REGION_USER1, 0 ) /* blitter data */
1476 	ROM_LOAD( "x72b08.bin", 0x0000, 0x20000, CRC(be312d23) SHA1(f2c18d6372c2f819248976c67abe0ddcd5cc1de1) )
1477 ROM_END
1478 
1479 ROM_START( mjhokite )
1480 	ROM_REGION( 0x010000, REGION_CPU1, 0 ) /* 6809 Code */
1481 	ROM_LOAD( "a74_g01.6g", 0x08000, 0x8000, CRC(409cc501) SHA1(6e9ab81198a5a54489cca8b6dcafb67995351207) )
1482 
1483 	ROM_REGION( 0x30000, REGION_CPU2, 0 )	/* Z80 code */
1484 	ROM_LOAD( "a74_a10.11k", 0x00000, 0x20000, CRC(2252f3ec) SHA1(018aaad087354b05b120aa42db572ed13f690f88) )
1485 	ROM_RELOAD(              0x10000, 0x20000 )
1486 
1487 	ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE )
1488 	ROM_LOAD( "a74_a03.1g", 0, 0x20000, CRC(bf801b74) SHA1(fd9b7a4590fdeba90423a7ceccd8dfbb8826460b) )
1489 
1490 	ROM_REGION( 0x80000, REGION_GFX2, ROMREGION_DISPOSE )
1491 	ROM_LOAD( "a74_a040.bin", 0x00000, 0x20000, CRC(b7a4ddbd) SHA1(70b9e44da7f32120fe86b23e431c3ae1eb36ef1a) )
1492 	ROM_LOAD( "a74_a050.bin", 0x20000, 0x20000, CRC(c1718d39) SHA1(e37e2338b7e9409d9d542d30f363d07c7a873602) )
1493 	ROM_LOAD( "a74_a041.bin", 0x40000, 0x20000, CRC(c6a6407d) SHA1(7421f4ae8b2959d16114cadc9098156e5a97b36f) )
1494 	ROM_LOAD( "a74_a051.bin", 0x60000, 0x20000, CRC(74522b81) SHA1(6bd9655005f36887bec7c127f467e765447acd8f) )
1495 
1496 	ROM_REGION( 0x010000, REGION_PROMS, 0 )	/* static palette */
1497 	ROM_LOAD16_BYTE( "a74_a06.1l", 0x00000, 0x8000, CRC(df057dd3) SHA1(0afae441b43a87e04511b8e652d2b03f48d8f705) )
1498 	ROM_LOAD16_BYTE( "a74_a07.1m", 0x00001, 0x8000, CRC(3c230167) SHA1(5d57f614bf07baa8b5c96f1d14241ff7c66806c1) )
1499 
1500 	ROM_REGION( 0x20000, REGION_USER1, 0 ) /* blitter data */
1501 	ROM_LOAD( "a74_a08.13a", 0x0000, 0x20000, CRC(dffdd855) SHA1(91469a997a6a9f74f1b84c127f30f5b0e2f974ac) )
1502 ROM_END
1503 
1504 ROM_START( mjclinic )
1505 	ROM_REGION( 0x010000, REGION_CPU1, 0 ) /* 6809 Code */
1506 	ROM_LOAD( "x80_g01.6g", 0x08000, 0x8000, CRC(787b4fb5) SHA1(d1708979d209113b604f6d0973fe14a0c4348351) )
1507 
1508 	ROM_REGION( 0x30000, REGION_CPU2, 0 )	/* Z80 code */
1509 	ROM_LOAD( "x80_a10.11k", 0x00000, 0x20000, CRC(afedbadf) SHA1(e2f101b59c0d23f9dc9b057c41d496fc3223cbb8) )
1510 	ROM_RELOAD(              0x10000, 0x20000 )
1511 
1512 	ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE )
1513 	ROM_LOAD( "x80_a03.1g", 0, 0x20000, CRC(34b63c89) SHA1(98383ce8e464ecc53677c060338cc03aa6238a0e) )
1514 
1515 	ROM_REGION( 0x80000, REGION_GFX2, ROMREGION_DISPOSE )
1516 	ROM_LOAD( "x80_a040.bin", 0x00000, 0x20000, CRC(6f18a8cf) SHA1(af8de2bd8b2157ceaa8192ead51ac4489c464ab2) )
1517 	ROM_LOAD( "x80_a050.bin", 0x20000, 0x20000, CRC(6b1ec3a9) SHA1(dc7a857bb102325ebf2522369a231260c2e02c89) )
1518 	ROM_LOAD( "x80_a041.bin", 0x40000, 0x20000, CRC(f70bb001) SHA1(3b29bb0bd155e97d3ccc72a8a07046c676c8452d) )
1519 	ROM_LOAD( "x80_a051.bin", 0x60000, 0x20000, CRC(c7469cb8) SHA1(bcf7021667e943991865fdbc9620f00b09e1db3e) )
1520 
1521 	ROM_REGION( 0x010000, REGION_PROMS, 0 )	/* static palette */
1522 	ROM_LOAD16_BYTE( "x80_a06.1l", 0x00000, 0x8000, CRC(c1f9b2fb) SHA1(abe17e2b3b880f91564e32c246116c33e2884889) )
1523 	ROM_LOAD16_BYTE( "x80_a07.1m", 0x00001, 0x8000, CRC(e3120152) SHA1(b4a778a9b91e204e2c068dff9a40bd29eccf04a5) )
1524 
1525 	ROM_REGION( 0x20000, REGION_USER1, 0 ) /* blitter data */
1526 	ROM_LOAD( "x80_a08.13a", 0x0000, 0x20000, CRC(174e8ec0) SHA1(a5075fe4bba9403ef9e0636d5f3f66aad8b2bc54) )
1527 ROM_END
1528 
1529 ROM_START( mrokumei )
1530 	ROM_REGION( 0x010000, REGION_CPU1, 0 ) /* 6809 Code */
1531 	ROM_LOAD( "m81d01.bin", 0x08000, 0x8000, CRC(6f81a78a) SHA1(5e16327b04b065ed4e39a147b18711902dba6384) )
1532 
1533 	ROM_REGION( 0x30000, REGION_CPU2, 0 )	/* Z80 code */
1534 	ROM_LOAD( "m81a10.bin", 0x00000, 0x20000, CRC(0866b2d3) SHA1(37a726830476e372db906382e1d0601c461c7c10) )
1535 	ROM_RELOAD(             0x10000, 0x20000 )
1536 
1537 	ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE )
1538 	ROM_LOAD( "m81a03.bin", 0, 0x20000, CRC(4f96e6d2) SHA1(9e6375ee543215691b28c914a8374c1d75c6681f) )
1539 
1540 	ROM_REGION( 0x80000, REGION_GFX2, ROMREGION_DISPOSE )
1541 	ROM_LOAD( "m81a40.bin", 0x00000, 0x20000, CRC(f07c6a91) SHA1(1e8b07817bb3661211b22c8c0ee35424b3ee8774) )
1542 	ROM_LOAD( "m81a50.bin", 0x20000, 0x20000, CRC(5ef0d7f2) SHA1(9d0af693b95d941c4b5702c483aee9d33c2fb886) )
1543 	ROM_LOAD( "m81a41.bin", 0x40000, 0x20000, CRC(9332b879) SHA1(fc70a6acf816564c1c90c2f9aa644f702a38eae1) )
1544 	ROM_LOAD( "m81a51.bin", 0x60000, 0x20000, CRC(dda3ae30) SHA1(a0ba05cc46a4b2869ddf544c538e40a40f3babd5) )
1545 
1546 	ROM_REGION( 0x010000, REGION_PROMS, 0 )	/* static palette */
1547 	ROM_LOAD16_BYTE( "m81b06.bin", 0x00000, 0x8000, CRC(96665d39) SHA1(9173791831555e69b8938d85340a08dd73012f8d) )
1548 	ROM_LOAD16_BYTE( "m81b07.bin", 0x00001, 0x8000, CRC(14f39690) SHA1(821f9de1b28b9d7844fc1b002c7ee3bbdda7f905) )
1549 
1550 	ROM_REGION( 0x20000, REGION_USER1, 0 ) /* blitter data */
1551 	ROM_LOAD( "m81a08.bin", 0x0000, 0x20000, CRC(dba706b9) SHA1(467c8c3e12cd64002d2516dd117bc87d03448f49) )
1552 ROM_END
1553 
1554 
1555 ROM_START( reikaids )
1556 	ROM_REGION( 0x02c000, REGION_CPU1, 0 ) /* 6809 Code */
1557 	ROM_LOAD( "j82c01.bin", 0x010000, 0x01c000, CRC(50fcc451) SHA1(ad717b8300f0903ef136569cf933b8af0e67eb6b) )
1558 	ROM_CONTINUE(           0x00c000, 0x004000             )
1559 
1560 	ROM_REGION( 0x40000, REGION_CPU2, 0) /* uPD7807 code */
1561 	ROM_LOAD( "x82a04.bin", 0x000000, 0x040000, CRC(52c9028a) SHA1(9d5e37b2f741d5c0e64ba3d674a72330058b96f2) )
1562 
1563 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
1564 	ROM_LOAD( "x82a13.bin",  0x000000, 0x80000, CRC(954c8844) SHA1(94e09009d0ad40a62f2a92cd5bd500ffe2c4650a) )
1565 	ROM_LOAD( "x82a14.bin",  0x080000, 0x80000, CRC(a748305e) SHA1(ee01025820a0915621d2c056d65e67a84a5f724c) )
1566 	ROM_LOAD( "x82a15.bin",  0x100000, 0x80000, CRC(c50f7047) SHA1(13fcd1abaf88c759e747cf5f2c94a522276945c9) )
1567 	ROM_LOAD( "x82a16.bin",  0x180000, 0x80000, CRC(b270094a) SHA1(edd4f7e3fd082c12758d82ea6eba2a060398b9ef) )
1568 
1569 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
1570 	ROM_LOAD( "x82a09.bin",  0x000000, 0x80000, CRC(c496b187) SHA1(8ec4e09469c9f425681671f5ddb2d2d8768af42b) )
1571 	ROM_LOAD( "x82a10.bin",  0x080000, 0x80000, CRC(4243fe28) SHA1(01260543a6f61f46ba56840c1b96ecedf637451c) )
1572 
1573 	ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
1574 	ROM_LOAD( "x82a08.bin",  0x000000, 0x80000, CRC(51cfd790) SHA1(208f00b1ccf420fe891dd30684481bf871c1aa63) )
1575 
1576 	ROM_REGION( 0x080000, REGION_GFX4, ROMREGION_DISPOSE )
1577 	ROM_LOAD( "x82a05.bin",  0x000000, 0x80000, CRC(fb65e0e0) SHA1(d560091cfad17af6539913db1279c62a680de4fc) )
1578 
1579 	ROM_REGION( 0x010000, REGION_PROMS, 0 )	/* static palette */
1580 	ROM_LOAD16_BYTE( "e82a18.bin", 0x00000, 0x8000, CRC(1f52a7aa) SHA1(55bbba5bfad1eee4872939d23ac643aa3074b3cf) )
1581 	ROM_LOAD16_BYTE( "e82a17.bin", 0x00001, 0x8000, CRC(f91d77a1) SHA1(a650a68e7e75719819fd04dda86d7fc8849dfe7d) )
1582 
1583 	ROM_REGION( 0x40000, REGION_USER1, 0 ) /* blitter data */
1584 	ROM_LOAD( "x82a02.bin", 0x00000, 0x040000, CRC(90fe700f) SHA1(bf7f9955a2cb1af43a272bf3366ff8c09ff6f7e6) )
1585 
1586 	ROM_REGION( 0x0100, REGION_USER2, 0 )
1587 	ROM_LOAD( "x82a19.bin", 0x0000, 0x0100, CRC(7ed947b4) SHA1(40c74a17976fab5d7f9da367083764934bb87281) )	// priority (not used)
1588 ROM_END
1589 
1590 
1591 ROM_START( battlcry )
1592 	ROM_REGION( 0x02c000, REGION_CPU1, 0 ) /* 6809 Code */
1593 	ROM_LOAD( "s88e01.j13", 0x010000, 0x01c000, CRC(b08438fe) SHA1(41a0fcdabee449081840848c45983984d7153d1b) )
1594 	ROM_CONTINUE(           0x00c000, 0x004000             )
1595 
1596 	ROM_REGION( 0x40000, REGION_CPU2, 0) /* uPD7807 code */
1597 	ROM_LOAD( "s88b04.f20", 0x000000, 0x040000, CRC(c54b5a5e) SHA1(421082af349b170d74f5214d8b5eed44db472749) )
1598 
1599 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
1600 	ROM_LOAD( "s88c13.e2",  0x000000, 0x80000, CRC(8103f007) SHA1(fcc51e57a1df572ad00000e03db1f5f949dea619) )
1601 	ROM_LOAD( "s88c14.e1",  0x080000, 0x80000, CRC(a7b5fafb) SHA1(7a9448bf13ee680c99bc19a6fac7a14d6ce8ddfc) )
1602 	ROM_LOAD( "s88c15.f2",  0x100000, 0x80000, CRC(597d833b) SHA1(d0c22981b105c1b4b37eae64964af8b683cc4687) )
1603 	ROM_LOAD( "s88c16.f1",  0x180000, 0x80000, CRC(9ca1c1a1) SHA1(30bbb47503631295a16bdd77a5bc08681dd7c63e) )
1604 
1605 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
1606 	ROM_LOAD( "s88c09.e5",  0x000000, 0x80000, CRC(8f77ac3e) SHA1(5903a167ddf69284035967876ef46d7d09582574) )
1607 	ROM_LOAD( "s88c10.e4",  0x080000, 0x80000, CRC(cb44371e) SHA1(96ac9aa0034152ba88afc373475928ad6d9ecd29) )
1608 
1609 	ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
1610 	ROM_LOAD( "s88c08.e6",  0x000000, 0x80000, CRC(a989cfc2) SHA1(11c39a2ddd5e4be150d2f2ce332e312907df2377) )
1611 
1612 	ROM_REGION( 0x080000, REGION_GFX4, ROMREGION_DISPOSE )
1613 	ROM_LOAD( "s88c05.e7",  0x000000, 0x80000, CRC(e7f13340) SHA1(05b0f3ca369c95d4fd50cd9617fc044ad7bdf0d3) )
1614 
1615 	ROM_REGION( 0x010000, REGION_PROMS, 0 )	/* static palette */
1616 	ROM_LOAD16_BYTE( "s88b18.f10", 0x00000, 0x8000, CRC(fa432edc) SHA1(55c01b6a1175539facdfdd0c3c49d878a59156a4) )
1617 	ROM_LOAD16_BYTE( "s88b17.f9",  0x00001, 0x8000, CRC(7c55568e) SHA1(1e599cd00abe7b67bcb0c8d3f0c467a99ef79658) )
1618 
1619 	ROM_REGION( 0x40000, REGION_USER1, 0 ) /* blitter data */
1620 	ROM_LOAD( "s88b02.f19", 0x00000, 0x040000, CRC(7044a542) SHA1(8efaa512f62fe9a37d2474c435c549118c019d67) )
1621 
1622 	ROM_REGION( 0x0100, REGION_USER2, 0 )
1623 	ROM_LOAD( "s88a19.l5", 0x0000, 0x0100, CRC(c8ead41e) SHA1(d1e733691de9f9b71c9724de73086d36f381fc74) )	// priority (not used)
1624 ROM_END
1625 
1626 
1627 
1628 ROM_START( mjkojink )
1629 	ROM_REGION( 0x01c000, REGION_CPU1, 0 ) /* 6809 Code */
1630 	ROM_LOAD( "x83j01.16e", 0x010000, 0xc000, CRC(91f90376) SHA1(d452f538f4a1b774640ced49f0ab2784b112e8ba) )
1631 	ROM_CONTINUE(           0x00c000, 0x4000             )
1632 
1633 	ROM_REGION( 0x40000, REGION_CPU2, 0) /* uPD7807 code */
1634 	ROM_LOAD( "x83b02.9g",  0x00000, 0x40000, CRC(46a11578) SHA1(4ff7797808610b4bb0550be71acc49bbd8556fad) )
1635 
1636 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )
1637 	ROM_LOAD32_BYTE( "x83b14.1f",  0, 0x40000, CRC(2bcd7557) SHA1(1263a038a294fb521bdf315e8ac1198a42f68415) )
1638 	ROM_LOAD32_BYTE( "x83b15.3f",  1, 0x40000, CRC(7d780e22) SHA1(f887f1a8e5fb65e560cb4987ae21a0c9100ebff0) )
1639 	ROM_LOAD32_BYTE( "x83b16.4f",  2, 0x40000, CRC(5420a3f2) SHA1(0161eb2218d3e9cc018c3c2623de58855ab1a608) )
1640 	ROM_LOAD32_BYTE( "x83b17.6f",  3, 0x40000, CRC(96bcdf83) SHA1(5568c15016a9cd68909aaf29a0bbe6659fdcefc9) )
1641 
1642 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
1643 	ROM_LOAD32_BYTE( "x83b10.1c",  0, 0x40000, CRC(500bfeea) SHA1(cf60f6158611bfb360c7c97597a9d416530bec9e) )
1644 	ROM_LOAD32_BYTE( "x83b11.3c",  1, 0x40000, CRC(2ef77717) SHA1(7d09dc3d73acaf910141598959fdc3501e17ddde) )
1645 	ROM_LOAD32_BYTE( "x83b12.4c",  2, 0x40000, CRC(2035009d) SHA1(8a2aadcc49ac7e68dfabe5ea66b607459a89045d) )
1646 	ROM_LOAD32_BYTE( "x83b13.6c",  3, 0x40000, CRC(53800df2) SHA1(5f18052a2d6afd27ff898ab597bb4e92fad238d7) )
1647 
1648 	ROM_REGION( 0x010000, REGION_PROMS, 0 )	/* static palette */
1649 	ROM_LOAD16_BYTE( "x83a19.4k", 0x00000, 0x8000, CRC(d29c9ef0) SHA1(c4e2c0c3c9c7abee1a965d6842956cdf98a76ad4) )
1650 	ROM_LOAD16_BYTE( "x83a18.3k", 0x00001, 0x8000, CRC(c3351952) SHA1(036be91ca428c5df016dd777bd658cb00f44ee3c) )
1651 
1652 	ROM_REGION( 0x40000, REGION_USER1, 0 ) /* blitter data */
1653 	ROM_LOAD( "x83b03.12e", 0x0000, 0x40000, CRC(4ba8b5ec) SHA1(cee77583f2f7b7fdba7e0f17e4d1244891488d36) )
1654 ROM_END
1655 
1656 ROM_START( vitaminc )
1657 	ROM_REGION( 0x01c000, REGION_CPU1, 0 ) /* 6809 Code */
1658 	ROM_LOAD( "x90e01.bin", 0x010000, 0xc000, CRC(bc982525) SHA1(30f5e9ab27f799b895a3d979109e331603d94249) )
1659 	ROM_CONTINUE(           0x00c000, 0x4000             )
1660 
1661 	ROM_REGION( 0x40000, REGION_CPU2, 0) /* uPD7807 code */
1662 	ROM_LOAD( "x90a02.bin", 0x00000, 0x40000, CRC(811f540a) SHA1(21993e99835a8995da28c24565b8e5dcc7aeb23e) )
1663 
1664 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )
1665 	ROM_LOAD32_BYTE( "x90a14.bin", 0, 0x40000, CRC(4b49d182) SHA1(2658175a23641cf6a4c989940ec2ce31b64ad53e) )
1666 	ROM_LOAD32_BYTE( "x90a15.bin", 1, 0x40000, CRC(5e9016c2) SHA1(5255c1f05f1308ba6fe8b6655eb251a6e4a30a37) )
1667 	ROM_LOAD32_BYTE( "x90a16.bin", 2, 0x40000, CRC(b8843000) SHA1(6d7b02334603f6abd64edcba8fd2f082839c4811) )
1668 	ROM_LOAD32_BYTE( "x90a17.bin", 3, 0x40000, CRC(d74a843c) SHA1(0a0236390f47bb96bf39baaba9961130b26f70d7) )
1669 
1670 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
1671 	ROM_LOAD32_BYTE( "x90a10.bin", 0, 0x40000, CRC(ee9fa36f) SHA1(c8864af92553f44180158dc1b34c9e1b81dfcd7f) )
1672 	ROM_LOAD32_BYTE( "x90a11.bin", 1, 0x40000, CRC(b77d9ef4) SHA1(bb49b0dc28385c7052ff65ffc2c8446b37081965) )
1673 	ROM_LOAD32_BYTE( "x90a12.bin", 2, 0x40000, CRC(da6a65d1) SHA1(3ab3a9e9c76dfc02579bf2fc390c23d24fe5a901) )
1674 	ROM_LOAD32_BYTE( "x90a13.bin", 3, 0x40000, CRC(4da4553b) SHA1(da6fd2cfd5b027afe7e900f90128a25779acb15f) )
1675 
1676 	ROM_REGION( 0x010000, REGION_PROMS, 0 )	/* static palette */
1677 	ROM_LOAD16_BYTE( "x90b19.bin", 0x00000, 0x8000, CRC(d0022cfb) SHA1(f384964a09fe6c1f8a993f5da67d81a23df22879) )
1678 	ROM_LOAD16_BYTE( "x90b18.bin", 0x00001, 0x8000, CRC(fe1de95d) SHA1(e94282065b3c69de7c9ea214c752745c18c38cb7) )
1679 
1680 	ROM_REGION( 0x40000, REGION_USER1, 0 ) /* blitter data */
1681 	ROM_LOAD( "x90a03.bin", 0x0000, 0x40000, CRC(35d5b4e6) SHA1(1ea4d03946aad33d33a817f83d20e7ad8faace6d) )
1682 ROM_END
1683 
1684 ROM_START( mjyougo )
1685 	ROM_REGION( 0x01c000, REGION_CPU1, 0 ) /* 6809 Code */
1686 	ROM_LOAD( "x91c01.bin", 0x010000, 0xc000, CRC(e28e8c21) SHA1(8039d764fb48269f0cab549c5a8861c05ecb1ef1) )
1687 	ROM_CONTINUE(           0x00c000, 0x4000             )
1688 
1689 	ROM_REGION( 0x40000, REGION_CPU2, 0) /* uPD7807 code */
1690 	ROM_LOAD( "x91a02.bin", 0x00000, 0x40000, CRC(995b1399) SHA1(262f3d7ccffdaa578466d390d790f89186b3c993) )
1691 
1692 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )
1693 	ROM_LOAD32_BYTE( "x91a14.bin", 0, 0x40000, CRC(b165fbe8) SHA1(eaad2fb26aedd07c4ec0a8bf91cb10f32c76cb83) )
1694 	ROM_LOAD32_BYTE( "x91a15.bin", 1, 0x40000, CRC(9b60bf2e) SHA1(13c1efbdc1f9f88f0d51dfd76c0128a490f63527) )
1695 	ROM_LOAD32_BYTE( "x91a16.bin", 2, 0x40000, CRC(db4a1655) SHA1(f57c7faaf7632a13af4a7b18aa8f81a2042e4eb8) )
1696 	ROM_LOAD32_BYTE( "x91a17.bin", 3, 0x40000, CRC(4f35ec3b) SHA1(5bf2d9eed69cc5e9358d95c0fba8b2b916274288) )
1697 
1698 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
1699 	ROM_LOAD32_BYTE( "x91a10.bin", 0, 0x40000, CRC(cb364158) SHA1(5255756bfa1145b2773720a39e88fdb67f26e2e5) )
1700 	ROM_LOAD32_BYTE( "x91a11.bin", 1, 0x40000, CRC(f3655577) SHA1(14eb0eda35015718f2e08da10d00ac8a381b4400) )
1701 	ROM_LOAD32_BYTE( "x91a12.bin", 2, 0x40000, CRC(149e8f86) SHA1(660c05deabb0ce43b2f5b936c035df1a2b029fc6) )
1702 	ROM_LOAD32_BYTE( "x91a13.bin", 3, 0x40000, CRC(59f7a140) SHA1(daad9433742b6292c8299935483f07f171436d17) )
1703 
1704 	ROM_REGION( 0x010000, REGION_PROMS, 0 )	/* static palette */
1705 	ROM_LOAD16_BYTE( "x91a19.bin", 0x00000, 0x8000, CRC(f63493df) SHA1(0e436bffb03fa6218363ee205c4fe5f4e16a24cc) )
1706 	ROM_LOAD16_BYTE( "x91a18.bin", 0x00001, 0x8000, CRC(b3541265) SHA1(d8e79c2856bb81e9ad9b79c012d64663a8997bbd) )
1707 
1708 	ROM_REGION( 0x40000, REGION_USER1, 0 ) /* blitter data */
1709 	ROM_LOAD( "x91a03.bin", 0x0000, 0x40000, CRC(4863caa2) SHA1(6ef511cb4d184d4705eb0fd3eb3d82daad49564a) )
1710 ROM_END
1711 
1712 ROM_START( mjkinjas )
1713 	ROM_REGION( 0x01c000, REGION_CPU1, 0 ) /* 6809 Code */
1714 	ROM_LOAD( "x07c01.bin", 0x010000, 0xc000, CRC(e6534904) SHA1(59c092f0369fc893763ad4b96551e0b4c2430a6a) )
1715 	ROM_CONTINUE(           0x00c000, 0x4000             )
1716 
1717 	ROM_REGION( 0x40000, REGION_CPU2, 0) /* uPD7807 code */
1718 	ROM_LOAD( "x07a02.bin", 0x00000, 0x40000, CRC(31396a5b) SHA1(c444f0a651da70c050a4c69bd09c31fc80dbf1de) )
1719 
1720 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
1721 	ROM_LOAD32_BYTE( "x07a14.bin", 0, 0x80000, CRC(02829ede) SHA1(227d2bcbaafab19ab2c3ff9dad17a0792d114466) )
1722 	ROM_LOAD32_BYTE( "x07a15.bin", 1, 0x80000, CRC(9c8b55db) SHA1(2142c0a6a6b89b2e07ac50be5c5af159610a1922) )
1723 	ROM_LOAD32_BYTE( "x07a16.bin", 2, 0x80000, CRC(7898a340) SHA1(a04d71c5b964509d591659f8f09ea5f38080c0ae) )
1724 	ROM_LOAD32_BYTE( "x07a17.bin", 3, 0x80000, CRC(bf1f6540) SHA1(94465a2dc20bc2b35d5518a485025b721ef87c49) )
1725 
1726 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
1727 	ROM_LOAD32_BYTE( "x07a10.bin", 0, 0x80000, CRC(3bfab66e) SHA1(149d90d6fd1357b407bd9f2fe495ee28d55c9122) )
1728 	ROM_LOAD32_BYTE( "x07a11.bin", 1, 0x80000, CRC(e8f610e3) SHA1(52970a56e67f6b36e1693c06207cbf14ebb96931) )
1729 	ROM_LOAD32_BYTE( "x07a12.bin", 2, 0x80000, CRC(911f0972) SHA1(90b511725de3a226326ddc39106071230f3d3bc6) )
1730 	ROM_LOAD32_BYTE( "x07a13.bin", 3, 0x80000, CRC(59be4c77) SHA1(1ba858c6b1e91753204e10738ca685a4df550d64) )
1731 
1732 	ROM_REGION( 0x010000, REGION_PROMS, 0 )	/* static palette */
1733 	ROM_LOAD16_BYTE( "x07a19.bin", 0x00000, 0x8000, CRC(7acabdf8) SHA1(90e39c1dd3e32c057ab8bfcd82d022231a06847c) )
1734 	ROM_LOAD16_BYTE( "x07a18.bin", 0x00001, 0x8000, CRC(d247bd5a) SHA1(298d62395ea7c687ed509863aaf3d8b758743cd8) )
1735 
1736 	ROM_REGION( 0x80000, REGION_USER1, 0 ) /* blitter data */
1737 	ROM_LOAD( "x07a03.bin", 0x0000, 0x80000, CRC(f5ff3e72) SHA1(e3489a3b8988677866aadd41cb99f146217022ce) )
1738 ROM_END
1739 
1740 ROM_START( jogakuen )
1741 	ROM_REGION( 0x01c000, REGION_CPU1, 0 ) /* 6809 Code */
1742 	ROM_LOAD( "a01.bin",    0x010000, 0xc000, CRC(a189490a) SHA1(0d9f6389d4b16c3b885cdc8be20b19db25812aad) )
1743 	ROM_CONTINUE(           0x00c000, 0x4000             )
1744 
1745 	ROM_REGION( 0x40000, REGION_CPU2, 0) /* uPD7807 code */
1746 	ROM_LOAD( "a02.bin",    0x00000, 0x40000, CRC(033add6c) SHA1(fc6b9333722228ba4270b1ba520e32e624b251c2) )
1747 
1748 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
1749 	ROM_LOAD32_BYTE( "a14.bin",    0, 0x80000, CRC(27ad91d7) SHA1(6d96b030a7f1f8c90fb31582b72acbbc759d1e2f) )
1750 	ROM_LOAD32_BYTE( "a15.bin",    1, 0x80000, CRC(e3b2753b) SHA1(c7923da2a718b70c4359d2726e8f8744f55e0389) )
1751 	ROM_LOAD32_BYTE( "a16.bin",    2, 0x80000, CRC(6e2c61fc) SHA1(57b33614b4968d5f88741ff0a52c9a1f28a14da7) )
1752 	ROM_LOAD32_BYTE( "a17.bin",    3, 0x80000, CRC(2f79d467) SHA1(b82df890cb12c33f6cc58676c02595be7614fd12) )
1753 
1754 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
1755 	ROM_LOAD32_BYTE( "a10.bin",    0, 0x80000, CRC(a453759a) SHA1(62b7a41ea97bc808f3250505a9ffeaf53f1b9308) )
1756 	ROM_LOAD32_BYTE( "a11.bin",    1, 0x80000, CRC(252cf007) SHA1(7b3dd558ca00f6855ac037f30e348265a9778f7d) )
1757 	ROM_LOAD32_BYTE( "a12.bin",    2, 0x80000, CRC(5db85eb5) SHA1(01291b98676a8f5116739f66e517fe05f806514a) )
1758 	ROM_LOAD32_BYTE( "a13.bin",    3, 0x80000, CRC(fe04d5b7) SHA1(965c095ce4f8f494d91370fe798be9214c2195f2) )
1759 
1760 	ROM_REGION( 0x010000, REGION_PROMS, 0 )	/* static palette */
1761 	ROM_LOAD16_BYTE( "a19.bin",    0x00000, 0x8000, CRC(9a3d9d5e) SHA1(1ab20fc5b7ab1c2508c76b0051923446c409e074) )
1762 	ROM_LOAD16_BYTE( "a18.bin",    0x00001, 0x8000, CRC(3289edd4) SHA1(7db4fbda8a22c64dc29ce6b4b63204cebd641351) )
1763 
1764 	ROM_REGION( 0x40000, REGION_USER1, 0 ) /* blitter data */
1765 	ROM_LOAD( "a03.bin",    0x0000, 0x40000, CRC(bb1507ab) SHA1(465f45c9cae2d4e064b784cc5ba25b60839e4b5f) )
1766 ROM_END
1767 
1768 
1769 ROM_START( lemnangl )
1770 	ROM_REGION( 0x01c000, REGION_CPU1, 0 ) /* 6809 Code */
1771 	ROM_LOAD( "x02_d01.16e", 0x010000, 0xc000, CRC(4c2fae05) SHA1(86516399bd1eb1565b446dfa0f9a974bde6f9af2) )
1772 	ROM_CONTINUE(            0x00c000, 0x4000             )
1773 
1774 	ROM_REGION( 0x40000, REGION_CPU2, 0) /* uPD7807 code */
1775 	ROM_LOAD( "x02a02.9g",  0x00000, 0x40000, CRC(e9aa8c80) SHA1(6db1345e20d53d8c69cebcac3b2a973fbcaa0e63) )
1776 
1777 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )
1778 	ROM_LOAD32_BYTE( "x02a14.1f",  0, 0x40000, CRC(4aa2397b) SHA1(5716de828e5e8735d5e6be0f7cfa95c52b37418a) )
1779 	ROM_LOAD32_BYTE( "x02a15.3f",  1, 0x40000, CRC(d01986e2) SHA1(5889d771d5e13a12e650ee2e4885616373dcf828) )
1780 	ROM_LOAD32_BYTE( "x02a16.4f",  2, 0x40000, CRC(16fca216) SHA1(e6715888053748a6da93dc087535da8e0b1ba702) )
1781 	ROM_LOAD32_BYTE( "x02a17.6f",  3, 0x40000, CRC(7a6a96e7) SHA1(732e6f5ce0cac966aa8b6cfed3f39bb3ea30f57e) )
1782 
1783 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
1784 	ROM_LOAD32_BYTE( "x02a10.1c",  0, 0x40000, CRC(e7164f57) SHA1(06f80ff72f12f2d821899c73051315bfa7b9bf7a) )
1785 	ROM_LOAD32_BYTE( "x02a11.3c",  1, 0x40000, CRC(73fb5d3d) SHA1(99a26ae495e6768756c354330a6a859cfd1b9781) )
1786 	ROM_LOAD32_BYTE( "x02a12.4c",  2, 0x40000, CRC(fc3a254a) SHA1(bf8172c00446b348b4432c71d92e8567ba50ab98) )
1787 	ROM_LOAD32_BYTE( "x02a13.6c",  3, 0x40000, CRC(9f63e7e0) SHA1(4bd8077a3700ccbc4c4a358342b1f9fd4cba8f10) )
1788 
1789 	ROM_REGION( 0x010000, REGION_PROMS, 0 )	/* static palette */
1790 	ROM_LOAD16_BYTE( "x02_b19.5k", 0x00000, 0x8000, CRC(f75959bc) SHA1(59a1debc28263a7f5f9b775817232fffc6e63ac4) )
1791 	ROM_LOAD16_BYTE( "x02_b18.3k", 0x00001, 0x8000, CRC(3f1510b1) SHA1(a9892beb3d911ee91d7dd276d9c84d14ba3253d8) )
1792 
1793 	ROM_REGION( 0x40000, REGION_USER1, 0 ) /* blitter data */
1794 	ROM_LOAD( "x02a03.12e", 0x0000, 0x40000, CRC(02ef0378) SHA1(6223a019fc7794872dd49151952c56892295a779) )
1795 ROM_END
1796 
1797 ROM_START( mjikaga )
1798 	ROM_REGION( 0x01c000, REGION_CPU1, 0 ) /* 6809 Code */
1799 	ROM_LOAD( "m15a01.bin", 0x010000, 0xc000, CRC(938cc4fb) SHA1(f979c6eee0b72bf53be8c7ebbc4e1dc05bd447d4) )
1800 	ROM_CONTINUE(           0x00c000, 0x4000             )
1801 
1802 	ROM_REGION( 0x40000, REGION_CPU2, 0) /* uPD7807 code */
1803 	ROM_LOAD( "m15a02.bin", 0x00000, 0x40000, CRC(375933dd) SHA1(e813f02e53dc892714cd0e81301606600b72535c) )
1804 
1805 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )
1806 	ROM_LOAD32_BYTE( "m15a14.bin", 0, 0x40000, CRC(a685c452) SHA1(819486730cdd89572f5c6b6176e9694cf99a4264) )
1807 	ROM_LOAD32_BYTE( "m15a15.bin", 1, 0x40000, CRC(44153914) SHA1(f8149c2e5412eb2a93dd16bfcb4f618aeddf3ff9) )
1808 	ROM_LOAD32_BYTE( "m15a16.bin", 2, 0x40000, CRC(a4b0b8ac) SHA1(f6fd54c8c7ded3f7502c07b208e5f317669bc3f0) )
1809 	ROM_LOAD32_BYTE( "m15a17.bin", 3, 0x40000, CRC(bb9cb2ef) SHA1(4df3eb57b46cb3ca25d938bb54205487b2c06b6d) )
1810 
1811 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
1812 	ROM_LOAD32_BYTE( "m15a10.bin", 0, 0x40000, CRC(0aeed38e) SHA1(9becd3d5d32ca9678e9211480139c3a1beabb98d) )
1813 	ROM_LOAD32_BYTE( "m15a11.bin", 1, 0x40000, CRC(a305e6e6) SHA1(a2c978050e70deb0244c660db800cba42eb3e2d0) )
1814 	ROM_LOAD32_BYTE( "m15a12.bin", 2, 0x40000, CRC(946b3f55) SHA1(17451cbd7b0c828444aaf2ff170f3a7104596c1d) )
1815 	ROM_LOAD32_BYTE( "m15a13.bin", 3, 0x40000, CRC(d9196955) SHA1(fa8fddbcd91b12d6cb918c0761ea478969a5a795) )
1816 
1817 	ROM_REGION( 0x010000, REGION_PROMS, 0 )	/* static palette */
1818 	ROM_LOAD16_BYTE( "m15a19.bin", 0x00000, 0x8000, CRC(2f247acf) SHA1(468fee5a16c98751524e21ad0f608fc85c95ab86) )
1819 	ROM_LOAD16_BYTE( "m15a18.bin", 0x00001, 0x8000, CRC(2648ca07) SHA1(e4f5ed62b014a6e397ce611c2c592f795d112219) )
1820 
1821 	ROM_REGION( 0x40000, REGION_USER1, 0 ) /* blitter data */
1822 	ROM_LOAD( "m15a03.bin", 0x0000, 0x40000, CRC(07e2e8f8) SHA1(61eed47c4136733059c1d96e98cadb8ac9078f95) )
1823 ROM_END
1824 
1825 
1826 
1827 static DRIVER_INIT( jogakuen )
1828 {
1829 	/* it seems that Mahjong Jogakuen runs on the same board as the others,
1830 	   but with just these two addresses swapped. Instead of creating a new
1831 	   MachineDriver, I just fix them here. */
1832 	install_mem_write_handler(0, 0x8007, 0x8007, pteacher_blitter_bank_w);
1833 	install_mem_write_handler(0, 0x8005, 0x8005, pteacher_gfx_bank_w);
1834 }
1835 
DRIVER_INIT(mjikaga)1836 static DRIVER_INIT( mjikaga )
1837 {
1838 	/* Mahjong Ikagadesuka is different as well. */
1839 	install_mem_read_handler(0, 0x7802, 0x7802, pteacher_snd_r);
1840 	install_mem_write_handler(1, 0x0123, 0x0123, pteacher_snd_answer_w);
1841 }
1842 
DRIVER_INIT(reikaids)1843 static DRIVER_INIT( reikaids )
1844 {
1845 	homedata_priority=0;
1846 }
1847 
DRIVER_INIT(battlcry)1848 static DRIVER_INIT( battlcry )
1849 {
1850 	homedata_priority=1; /* priority and initial value for bank write */
1851 }
1852 
1853 GAMEX(1987, hourouki, 0, mrokumei, mjhokite, 0,          ROT0, "Home Data", "Mahjong Hourouki Part 1 - Seisyun Hen (Japan)", GAME_IMPERFECT_GRAPHICS )
1854 GAME( 1987, mhgaiden, 0, mrokumei, mjhokite, 0,          ROT0, "Home Data", "Mahjong Hourouki Gaiden (Japan)" )
1855 GAME( 1988, mjhokite, 0, mrokumei, mjhokite, 0,          ROT0, "Home Data", "Mahjong Hourouki Okite (Japan)" )
1856 GAME( 1988, mjclinic, 0, mrokumei, mjhokite, 0,          ROT0, "Home Data", "Mahjong Clinic (Japan)" )
1857 GAMEX(1988, mrokumei, 0, mrokumei, mjhokite, 0,          ROT0, "Home Data", "Mahjong Rokumeikan (Japan)", GAME_IMPERFECT_GRAPHICS )
1858 
1859 GAME( 1988, reikaids, 0, reikaids, reikaids, reikaids,   ROT0, "Home Data", "Reikai Doushi (Japan)" )
1860 GAMEX(1991, battlcry, 0, reikaids, battlcry, battlcry,   ROT0, "Home Data", "Battlecry", GAME_IMPERFECT_GRAPHICS  )
1861 GAME( 1989, mjkojink, 0, pteacher, pteacher, 0,          ROT0, "Home Data", "Mahjong Kojinkyouju (Private Teacher) (Japan)" )
1862 GAME( 1989, vitaminc, 0, pteacher, pteacher, 0,          ROT0, "Home Data", "Mahjong Vitamin C (Japan)" )
1863 GAME( 1989, mjyougo,  0, pteacher, pteacher, 0,          ROT0, "Home Data", "Mahjong-yougo no Kisotairyoku (Japan)" )
1864 GAME( 1991, mjkinjas, 0, mjkinjas, pteacher, 0,          ROT0, "Home Data", "Mahjong Kinjirareta Asobi (Japan)" )
1865 GAME( 1992?,jogakuen, 0, pteacher, jogakuen, jogakuen,   ROT0, "Windom",    "Mahjong Jogakuen (Japan)" )
1866 
1867 GAME( 1990, lemnangl, 0, lemnangl, pteacher, 0,          ROT0, "Home Data", "Mahjong Lemon Angel (Japan)" )
1868 
1869 GAMEX(1991?,mjikaga,  0, lemnangl, mjikaga,  mjikaga,    ROT0, "Mitchell",  "Mahjong Ikaga Desu ka (Japan)", GAME_NO_SOUND )
1870 
1871 
1872 
1873