1 // license:BSD-3-Clause
2 // copyright-holders:Phil Stroffolino, Nicola Salmoria
3 /***************************************************************************
4 
5 Homedata Games
6 
7 driver by Phil Stroffolino and Nicola Salmoria
8 
9 
10 *1987 X77 Mahjong Hourouki Part1 -Seisyun Hen-
11 *1987 X72 Mahjong Hourouki Gaiden
12 *1988 X73 Mahjong Joshi Pro-wres -Give up 5 byou mae-
13 *1988 A74 Mahjong Hourouki Okite
14 *1988 X80 Mahjong Clinic
15 *1988 M81 Mahjong Rokumeikan
16 *1988 E82 The Last Apostle Puppetshow
17 *1988 J82 Reikai Doushi / Chinese Exorcist
18 *1989 X83 Mahjong Kojin Kyouju (Private Teacher)
19  1989 S88 Battle Cry (not released in Japan)
20 *1989 X90 Mahjong Vitamin C
21 *1989 X91 Mahjong Yougo no Kiso Tairyoku
22 *1990 X02 Mahjong Lemon Angel
23 *1991 X07 Mahjong Kinjirareta Asobi -Ike Ike Kyoushi no Yokubou-
24 
25 Games from other companies:
26 
27 *1991 M15 Mahjong Ikagadesuka     (c) Mitchell
28 *19??     Mahjong Jogakuen        (c) Windom
29 
30 
31 These games use only tilemaps for graphics.  These tilemaps are organized into
32 two pages (a visible page and a backbuffer) which are automatically swapped by the
33 hardware at vblank.
34 
35 Some of the tiles are written directly by the CPU, others are written by a "blitter"
36 which unpacks RLE data from a ROM.
37 
38 
39 In games using the uPD7807CW, the coprocessor manages input ports and sound/music.
40 
41 
42 Notes:
43 
44 - To access service mode in the older mahjong games, keep F2 pressed during boot.
45   Service mode doesn't work in hourouki because it needs an additional "check" ROM.
46 
47 - The "help" button some games ask you to press is the start button.
48 
49 - The games can change visible area at runtime. The meaning of the control registers
50   isn't understood, but it supported enough to give the correct visible area to all
51   games.
52   mjkinjas sets the registers to values different from all the other games; it also
53   has a 11MHz xtal instead of the 9MHz of all the others, so the two things are
54   probably related.
55 
56 - the ROM for the uPD7807 is divided in 4 0x10000 banks. The first three just
57   contain a simple sample player, followed by the PCM data. The fourth bank contains
58   the main program. The program literally changes banks under its own feet. However,
59   the portions of code executed while the bank switch happens are identical in all
60   banks, so it still works with MAME's standard MRA8_BANK handling.
61 
62 
63 TODO:
64 - Dip switches! They might be right for mjhokite, but I haven't verified the other
65   games.
66 
67 - In the newer mahjong games, the second bank of dips is read in reverse order.
68 
69 - In mjikaga 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 ----------------------------------------------------------------------------
150 Mahjong Joshi Pro-wres -Give up 5 byou mae-
151 (c)1988 HOME DATA
152 
153 Board:  X73-PWB-A(C)
154 
155 CPU:    6809 uPC324C
156 Sound:  SN76489
157 OSC:    16.000MHz 9.000MHz
158 ROM:    28 pin mask rom devices are 1mbit, 32 pin are 2mbit.
159 
160 ----------------------------------------------------------------------------
161 Mahjong Vitamin C
162 (c)1989 Home Data
163 
164 Board:  X73-PWB-A(A)
165 Board:  X83-PWB-AC(A)
166 
167 CPU:    68B09E uPD7807CW(?)
168 Sound:  SN76489AN DAC
169 OSC:    9.000MHz 16.000MHz
170 Custom: GX61A01
171 
172 Note: Manual dips are completely wrong, this actually matches pteacher
173 
174 ----------------------------------------------------------------------------
175 Mahjong-yougo no Kisotairyoku
176 (c)1989 Home Data
177 
178 Board:  X83-PWB-A(A)
179 
180 CPU:    68B09E uPD7807CW(?)
181 Sound:  SN76489AN DAC
182 OSC:    9.000MHz 16.000MHz
183 Custom: GX61A01
184 
185 ----------------------------------------------------------------------------
186 Mahjong Kinjirareta Asobi
187 (c)1990 Home Data
188 
189 Board:  X83-PWB-A(A)
190 
191 CPU:    68B09E uPD7807CW
192 Sound:  SN76489AN DAC
193 OSC:    11.000MHz 16.000MHz
194 Custom: GX61A01
195 
196 Note: seems likely above 11mhz crystal was a repair
197 
198 ----------------------------------------------------------------------------
199 Mahjong Jogakuen
200 (c)19?? Windom
201 
202 Board:  X83-PWB-A(A)
203 
204 CPU:    68B09E uPD7807CW(?)
205 Sound:  SN76489AN DAC
206 OSC:    9.000MHz 16.000MHz
207 Custom: GX61A01
208 
209 ----------------------------------------------------------------------------
210 ----------------------------------------------------------------------------
211 Mahjong Lemon Angel
212 (c)1990 Homedata
213 
214 Board:  X83-PWB-A(A)
215 
216 CPU:    Fujitsu MBL68B09E (16G)
217         (surface scratched 64pin DIP device on location 12G) [probably uPD7807CW]
218 Sound:  SN76489
219 OSC:    16.0000MHz (XTAL1) 9.000MHz (XTAL2)
220 Custom: HOMEDATA GX61A01 102 8842KK
221 
222 ----------------------------------------------------------------------------
223 Mahjong Ikagadesuka
224 (c)1991 Mitchell
225 
226 Board:  X83-PWB-A(A)
227 
228 CPU:    68B09E uPD7807CW
229 Sound:  SN76489AN DAC
230 OSC:    9.000MHz 16.000MHz
231 Custom: GX61A01
232 
233 ***************************************************************************/
234 
235 #include "emu.h"
236 #include "includes/homedata.h"
237 
238 #include "cpu/m6809/m6809.h"
239 #include "cpu/upd7810/upd7810.h"
240 #include "cpu/z80/z80.h"
241 #include "sound/dac.h"
242 #include "screen.h"
243 #include "speaker.h"
244 
245 
INTERRUPT_GEN_MEMBER(homedata_state::homedata_irq)246 INTERRUPT_GEN_MEMBER(homedata_state::homedata_irq)
247 {
248 	m_vblank = 1;
249 	device.execute().set_input_line(M6809_FIRQ_LINE, HOLD_LINE);
250 }
251 
252 
253 /********************************************************************************
254 
255   Older Mahjong games:
256 
257   single CPU, handling SN76489 + DAC and inputs
258 
259  ********************************************************************************/
260 
mrokumei_keyboard_r(offs_t offset)261 uint8_t homedata_state::mrokumei_keyboard_r(offs_t offset)
262 {
263 	int res = 0x3f,i;
264 
265 	/* offset 0 is player 1, offset 1 player 2 (not supported) */
266 	if (offset == 0)
267 	{
268 		for (i = 0; i < 5; i++)
269 		{
270 			if (m_keyb & (1 << i))
271 			{
272 				res = m_keys[i]->read() & 0x3f;
273 				break;
274 			}
275 		}
276 	}
277 
278 	if (offset == 0)
279 	{
280 		/* bit 7: visible page
281 		 * bit 6: vblank
282 		 * other bits are inputs
283 		 */
284 		res |= m_visible_page << 7;
285 
286 		if (m_vblank)
287 			res |= 0x40;
288 
289 		m_vblank = 0;
290 	}
291 
292 	return res;
293 }
294 
mrokumei_keyboard_select_w(uint8_t data)295 void homedata_state::mrokumei_keyboard_select_w(uint8_t data)
296 {
297 	m_keyb = data;
298 }
299 
300 
mrokumei_sound_bank_w(uint8_t data)301 void homedata_state::mrokumei_sound_bank_w(uint8_t data)
302 {
303 	/* bit 0 = ROM bank
304 	   bit 2 = ROM or soundlatch
305 	 */
306 	m_mrokumei_soundbank->set_bank(data & 7);
307 }
308 
mrokumei_sound_cmd_w(uint8_t data)309 void homedata_state::mrokumei_sound_cmd_w(uint8_t data)
310 {
311 	m_soundlatch->write(data);
312 	m_audiocpu->set_input_line(0, HOLD_LINE);
313 }
314 
315 
316 /********************************************************************************
317 
318   Reikai Doushi:
319 
320   slave uPD7807, handling YM2203 + DAC and inputs
321 
322  ********************************************************************************/
323 
reikaids_upd7807_porta_r()324 uint8_t homedata_state::reikaids_upd7807_porta_r()
325 {
326 	return m_upd7807_porta;
327 }
328 
reikaids_upd7807_porta_w(uint8_t data)329 void homedata_state::reikaids_upd7807_porta_w(uint8_t data)
330 {
331 	m_upd7807_porta = data;
332 }
333 
reikaids_upd7807_portc_w(uint8_t data)334 void homedata_state::reikaids_upd7807_portc_w(uint8_t data)
335 {
336 	/* port C layout:
337 	   7 coin counter
338 	   6 to main CPU (data)
339 	   5 YM2203 write clock
340 	   4 YM2203 read clock
341 	   3 YM2203 address (0 = register select 1 = data)
342 	   2 to main CPU (status)
343 	   1 \ ROM bank
344 	   0 /
345 	  */
346 //  logerror("%s: port C wr %02x (STATUS %d DATA %d)\n", machine().describe_context(), data, BIT(data, 2), BIT(data, 6));
347 
348 	m_audiobank->set_entry(data & 0x03);
349 
350 	machine().bookkeeping().coin_counter_w(0, ~data & 0x80);
351 
352 	if (BIT(m_upd7807_portc, 5) && !BIT(data, 5))   /* write clock 1->0 */
353 		m_ymsnd->write(BIT(data, 3), m_upd7807_porta);
354 
355 	if (BIT(m_upd7807_portc, 4) && !BIT(data, 4))   /* read clock 1->0 */
356 		m_upd7807_porta = m_ymsnd->read(BIT(data, 3));
357 
358 	m_upd7807_portc = data;
359 }
360 
reikaids_io_r()361 uint8_t homedata_state::reikaids_io_r()
362 {
363 	int res = ioport("IN2")->read();    // bit 4 = coin, bit 5 = service
364 
365 	res |= BIT(m_upd7807_portc, 2) * 0x01;      // bit 0 = upd7807 status
366 	res |= BIT(m_upd7807_portc, 6) * 0x02;      // bit 1 = upd7807 data
367 	if (m_vblank)
368 		res |= 0x04;                // bit 2 = vblank
369 	res |= m_visible_page * 0x08;   // bit 3 = visible page
370 
371 	m_vblank = 0;
372 
373 	//logerror("%s: io_r %02x\n", machine().describe_context(), res);
374 
375 	return res;
376 }
377 
378 
379 /********************************************************************************
380 
381   Newer Mahjong games:
382 
383   slave uPD7807, handling SN76489 + DAC and inputs
384 
385  ********************************************************************************/
386 
pteacher_io_r()387 uint8_t homedata_state::pteacher_io_r()
388 {
389 	/* bit 6: !vblank
390 	 * bit 7: visible page
391 	 * other bits seem unused
392 	 */
393 
394 	int res = (m_visible_page ^ 1) << 7;
395 
396 	if (!m_vblank)
397 		res |= 0x40;
398 
399 	m_vblank = 0;
400 
401 	return res;
402 }
403 
pteacher_keyboard_r()404 uint8_t homedata_state::pteacher_keyboard_r()
405 {
406 	int dips = ioport("DSW")->read();
407 
408 	//  logerror("%s: keyboard_r with port A = %02x\n",machine().describe_context(),upd7807_porta);
409 
410 	if (m_upd7807_porta & 0x80)
411 	{
412 		/* player 1 + dip switches */
413 		int row = (m_upd7807_porta & 0x07);
414 		return m_keys[row]->read() | (((dips >> row) & 1) << 5);  // 0-5
415 	}
416 	if (m_upd7807_porta & 0x08) // TODO: this works fine with dips 7-8 of the 1st bank, but then expects dips 1-4 of the 2nd bank in inverted order
417 	{
418 		/* player 2 + dip switches */
419 		int row = ((m_upd7807_porta >> 4) & 0x07) + 6;
420 		return m_keys[row]->read() | (((dips >> row) & 1) << 5); // 6-11
421 	}
422 
423 	return 0xff;
424 }
425 
pteacher_upd7807_porta_r()426 uint8_t homedata_state::pteacher_upd7807_porta_r()
427 {
428 	if (!BIT(m_upd7807_portc, 6))
429 		m_upd7807_porta = m_soundlatch->read();
430 	else
431 		logerror("%s: read PA with PC *not* clear\n", machine().describe_context());
432 
433 	return m_upd7807_porta;
434 }
435 
pteacher_upd7807_porta_w(uint8_t data)436 void homedata_state::pteacher_upd7807_porta_w(uint8_t data)
437 {
438 	m_upd7807_porta = data;
439 }
440 
pteacher_upd7807_portc_w(uint8_t data)441 void homedata_state::pteacher_upd7807_portc_w(uint8_t data)
442 {
443 	/* port C layout:
444 	   7 coin counter
445 	   6 enable message from main CPU on port A
446 	   5 clock latch for 76489 command
447 	   4
448 	   3 \ ROM bank
449 	   2 /
450 	   1 input (service)
451 	   0 input (coin)
452 	  */
453 
454 	//  logerror("%s: port C wr %02x\n", machine().describe_context(), data);
455 
456 	m_audiobank->set_entry((data & 0x0c) >> 2);
457 
458 	machine().bookkeeping().coin_counter_w(0, ~data & 0x80);
459 
460 	if (BIT(m_upd7807_portc, 5) && !BIT(data, 5))   /* clock 1->0 */
461 		m_sn->write(m_upd7807_porta);
462 
463 	m_upd7807_portc = data;
464 }
465 
466 /********************************************************************************/
467 
468 
bankswitch_w(uint8_t data)469 void homedata_state::bankswitch_w(uint8_t data)
470 {
471 	int last_bank = (memregion("maincpu")->bytes() - 0x10000) / 0x4000;
472 
473 	/* last bank is fixed and is #0 for us, other banks start from #1 (hence data+1 below)*/
474 	if (data < last_bank)
475 		m_mainbank->set_entry(data + 1);
476 	else
477 		m_mainbank->set_entry(0);
478 }
479 
480 
481 /********************************************************************************/
482 
483 
mrokumei_map(address_map & map)484 void homedata_state::mrokumei_map(address_map &map)
485 {
486 	map(0x0000, 0x3fff).ram().w(FUNC(homedata_state::mrokumei_videoram_w)).share("videoram");
487 	map(0x4000, 0x5fff).ram();
488 	map(0x6000, 0x6fff).ram(); /* work ram */
489 	map(0x7000, 0x77ff).ram(); /* hourouki expects this to act as RAM */
490 	map(0x7800, 0x7800).ram(); /* only used to store the result of the ROM check */
491 	map(0x7801, 0x7802).r(FUNC(homedata_state::mrokumei_keyboard_r));   // also vblank and active page
492 	map(0x7803, 0x7803).portr("IN0");            // coin, service
493 	map(0x7804, 0x7804).portr("DSW1");           // DSW1
494 	map(0x7805, 0x7805).portr("DSW2");           // DSW2
495 	map(0x7ff0, 0x7ffd).writeonly().share("vreg");
496 	map(0x7ffe, 0x7ffe).nopr(); // ??? read every vblank, value discarded
497 	map(0x8000, 0x8000).w(FUNC(homedata_state::mrokumei_blitter_start_w)); // in some games also ROM bank switch to access service ROM
498 	map(0x8001, 0x8001).w(FUNC(homedata_state::mrokumei_keyboard_select_w));
499 	map(0x8002, 0x8002).w(FUNC(homedata_state::mrokumei_sound_cmd_w));
500 	map(0x8003, 0x8003).w(m_sn, FUNC(sn76489a_device::write));
501 	map(0x8006, 0x8006).w(FUNC(homedata_state::homedata_blitter_param_w));
502 	map(0x8007, 0x8007).w(FUNC(homedata_state::mrokumei_blitter_bank_w));
503 	map(0x8000, 0xffff).rom();
504 }
505 
mrokumei_sound_map(address_map & map)506 void homedata_state::mrokumei_sound_map(address_map &map)
507 {
508 	map(0x0000, 0x7fff).rom();
509 	// TODO: might be that the entire area is sound_bank_w
510 	map(0xfffc, 0xfffd).nopw();    /* stack writes happen here, but there's no RAM */
511 	map(0x8080, 0x8080).w(FUNC(homedata_state::mrokumei_sound_bank_w));
512 	map(0xffbf, 0xffbf).w(FUNC(homedata_state::mrokumei_sound_bank_w)); // hourouki mirror
513 }
514 
mrokumei_sound_io_map(address_map & map)515 void homedata_state::mrokumei_sound_io_map(address_map &map)
516 {
517 	map(0x0000, 0xffff).r(m_mrokumei_soundbank, FUNC(address_map_bank_device::read8)); /* read address is 16-bit */
518 	map(0x0040, 0x0040).mirror(0xff00).w("dac", FUNC(dac_byte_interface::data_w)); /* write address is only 8-bit */
519 	// hourouki mirror...
520 	map(0x007f, 0x007f).mirror(0xff00).w("dac", FUNC(dac_byte_interface::data_w)); /* write address is only 8-bit */
521 }
522 
mrokumei_sound_banked_map(address_map & map)523 void homedata_state::mrokumei_sound_banked_map(address_map &map)
524 {
525 	map(0x00000, 0x1ffff).mirror(0x20000).rom().region("audiocpu", 0);
526 	map(0x40000, 0x40000).mirror(0x3ffff).r(m_soundlatch, FUNC(generic_latch_8_device::read));
527 }
528 
529 /********************************************************************************/
530 
reikaids_map(address_map & map)531 void homedata_state::reikaids_map(address_map &map)
532 {
533 	map(0x0000, 0x3fff).ram().w(FUNC(homedata_state::reikaids_videoram_w)).share("videoram");
534 	map(0x4000, 0x5fff).ram();
535 	map(0x6000, 0x6fff).ram(); /* work RAM */
536 	map(0x7800, 0x7800).ram(); /* behaves as normal RAM */
537 	map(0x7801, 0x7801).portr("IN0");
538 	map(0x7802, 0x7802).portr("IN1");
539 	map(0x7803, 0x7803).r(FUNC(homedata_state::reikaids_io_r)); // coin, blitter, upd7807
540 	map(0x7ff0, 0x7ffd).writeonly().share("vreg");
541 	map(0x7ffe, 0x7ffe).w(FUNC(homedata_state::reikaids_blitter_bank_w));
542 	map(0x7fff, 0x7fff).w(FUNC(homedata_state::reikaids_blitter_start_w));
543 	map(0x8000, 0x8000).w(FUNC(homedata_state::bankswitch_w));
544 	map(0x8002, 0x8002).w(m_soundlatch, FUNC(generic_latch_8_device::write));
545 	map(0x8005, 0x8005).w(FUNC(homedata_state::reikaids_gfx_bank_w));
546 	map(0x8006, 0x8006).w(FUNC(homedata_state::homedata_blitter_param_w));
547 	map(0x8000, 0xbfff).bankr("mainbank");
548 	map(0xc000, 0xffff).rom();
549 }
550 
reikaids_upd7807_map(address_map & map)551 void homedata_state::reikaids_upd7807_map(address_map &map)
552 {
553 	map(0x0000, 0xfeff).bankr("audiobank");    /* External ROM (Banked) */
554 }
555 
556 /**************************************************************************/
557 
558 
pteacher_base_map(address_map & map)559 void homedata_state::pteacher_base_map(address_map &map)
560 {
561 	map(0x0000, 0x3fff).ram().w(FUNC(homedata_state::mrokumei_videoram_w)).share("videoram");
562 	map(0x4000, 0x5eff).ram();
563 	map(0x5f00, 0x5fff).ram();
564 	map(0x6000, 0x6fff).ram(); /* work ram */
565 	map(0x7800, 0x7800).ram(); /* behaves as normal RAM */
566 	map(0x7801, 0x7801).r(FUNC(homedata_state::pteacher_io_r)); // vblank, visible page
567 	map(0x7ff0, 0x7ffd).writeonly().share("vreg");
568 	map(0x7fff, 0x7fff).w(FUNC(homedata_state::pteacher_blitter_start_w));
569 	map(0x8000, 0x8000).w(FUNC(homedata_state::bankswitch_w));
570 	map(0x8002, 0x8002).w(m_soundlatch, FUNC(generic_latch_8_device::write));
571 	map(0x8005, 0x8005).w(FUNC(homedata_state::pteacher_blitter_bank_w));
572 	map(0x8006, 0x8006).w(FUNC(homedata_state::homedata_blitter_param_w));
573 	map(0x8007, 0x8007).w(FUNC(homedata_state::pteacher_gfx_bank_w));
574 	map(0x8000, 0xbfff).bankr("mainbank");
575 	map(0xc000, 0xffff).rom();
576 }
577 
pteacher_map(address_map & map)578 void homedata_state::pteacher_map(address_map &map)
579 {
580 	pteacher_base_map(map);
581 	map(0x7ff2, 0x7ff2).r(m_mainlatch, FUNC(generic_latch_8_device::read));
582 }
583 
pteacher_upd7807_map(address_map & map)584 void homedata_state::pteacher_upd7807_map(address_map &map)
585 {
586 	map(0x0000, 0x0000).w(m_mainlatch, FUNC(generic_latch_8_device::write));
587 	map(0x0000, 0xfeff).bankr("audiobank");    /* External ROM (Banked) */
588 }
589 
590 /**************************************************************************/
591 
592 
593 	/* it seems that Mahjong Jogakuen runs on the same board as the others,
594 	   but with just these two addresses swapped. Instead of creating a new
595 	   MachineDriver, I just fix them here. */
jogakuen_map(address_map & map)596 void homedata_state::jogakuen_map(address_map &map)
597 {
598 	pteacher_map(map);
599 	map(0x8005, 0x8005).w(FUNC(homedata_state::pteacher_gfx_bank_w));
600 	map(0x8007, 0x8007).w(FUNC(homedata_state::pteacher_blitter_bank_w));
601 }
602 
603 /**************************************************************************/
604 
605 
mjikaga_map(address_map & map)606 void homedata_state::mjikaga_map(address_map &map)
607 {
608 	pteacher_base_map(map);
609 	map(0x7802, 0x7802).r(m_mainlatch, FUNC(generic_latch_8_device::read));
610 }
611 
mjikaga_upd7807_map(address_map & map)612 void homedata_state::mjikaga_upd7807_map(address_map &map)
613 {
614 	map(0x0123, 0x0123).w(m_mainlatch, FUNC(generic_latch_8_device::write));
615 	map(0x0000, 0xfeff).bankr("audiobank");    /* External ROM (Banked) */
616 }
617 
618 /**************************************************************************/
619 
620 
621 static INPUT_PORTS_START( mjhokite )
622 	PORT_START("DSW1")
623 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )  PORT_DIPLOCATION("SW1:8")
624 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
625 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
626 		PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW1:7" )
627 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coinage ) )      PORT_DIPLOCATION("SW1:6,5")
628 	PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
629 	PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
630 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
631 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
632 	PORT_DIPNAME( 0x10, 0x10, "Initial Score" )     PORT_DIPLOCATION("SW1:4")
633 	PORT_DIPSETTING(    0x10, "1000" )
634 	PORT_DIPSETTING(    0x00, "2000" )
635 	PORT_DIPNAME( 0xe0, 0x80, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW1:3,2,1")
636 	PORT_DIPSETTING(    0xe0, "1 (easiest)" )
637 	PORT_DIPSETTING(    0xc0, "2" )
638 	PORT_DIPSETTING(    0xa0, "3" )
639 	PORT_DIPSETTING(    0x80, "4" )
640 	PORT_DIPSETTING(    0x60, "5" )
641 	PORT_DIPSETTING(    0x40, "6" )
642 	PORT_DIPSETTING(    0x20, "7" )
643 	PORT_DIPSETTING(    0x00, "8 (hardest)" )
644 
645 	PORT_START("DSW2")
646 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )  PORT_DIPLOCATION("SW2:8")
647 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
648 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
649 	PORT_DIPNAME( 0x02, 0x00, "Girl Voice" )        PORT_DIPLOCATION("SW2:7")
650 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
651 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
652 	PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW2:6" )
653 		PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW2:5" )
654 	PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW2:4" )
655 		PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW2:3" )
656 	PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW2:2" )
657 		PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:1" )
658 
659 	PORT_START("IN0")
660 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
661 	PORT_DIPNAME( 0x02, 0x02, "Freeze?" )
662 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
663 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
664 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT )   // doesn't work in all games
665 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
666 	PORT_SERVICE_NO_TOGGLE( 0x10, IP_ACTIVE_LOW )
667 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
668 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
669 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
670 
671 	PORT_START("KEY0")
672 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
673 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E )
674 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I )
675 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M )
676 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
677 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1                              )
678 
679 	PORT_START("KEY1")
680 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B )
681 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F )
682 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J )
683 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N )
684 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
685 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
686 
687 	PORT_START("KEY2")
688 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C )
689 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G )
690 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K )
691 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
692 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
693 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
694 
695 	PORT_START("KEY3")
696 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D )
697 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H )
698 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L )
699 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
700 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
701 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
702 
703 	PORT_START("KEY4")
704 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
705 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
706 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
707 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP )
708 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
709 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
710 INPUT_PORTS_END
711 
712 static INPUT_PORTS_START( reikaids )
713 	PORT_START("IN0")   // 0x7801
714 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
715 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
716 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
717 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
718 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Punch")
719 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Kick")
720 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Jump / Defense")
721 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_START1 )
722 
723 	PORT_START("IN1")   // 0x7802
724 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
725 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
726 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
727 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
728 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Punch")
729 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Kick")
730 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Jump / Defense")
731 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_START2 )
732 
733 	PORT_START("IN2")   // 0x7803
734 	PORT_BIT(  0x01, IP_ACTIVE_HIGH,IPT_CUSTOM ) /* coprocessor status */
735 	PORT_BIT(  0x02, IP_ACTIVE_HIGH,IPT_CUSTOM ) /* coprocessor data */
736 	PORT_BIT(  0x04, IP_ACTIVE_HIGH,IPT_CUSTOM ) /* vblank */
737 	PORT_BIT(  0x08, IP_ACTIVE_HIGH,IPT_CUSTOM ) /* visible page */
738 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_COIN1    )
739 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
740 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_UNKNOWN  )
741 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_UNKNOWN  )
742 
743 	PORT_START("DSW1")
744 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Allow_Continue ) )  PORT_DIPLOCATION("SW1:1")
745 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
746 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
747 	PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )      PORT_DIPLOCATION("SW1:2,3")
748 	PORT_DIPSETTING(    0x06, "20k then every 60k" )
749 	PORT_DIPSETTING(    0x04, "30k then every 80k" )
750 	PORT_DIPSETTING(    0x02, "20k" )
751 	PORT_DIPSETTING(    0x00, "30k" )
752 	PORT_DIPNAME( 0x18, 0x10, DEF_STR( Lives ) )           PORT_DIPLOCATION("SW1:4,5")
753 	PORT_DIPSETTING(    0x18, "2" )
754 	PORT_DIPSETTING(    0x10, "3" )
755 	PORT_DIPSETTING(    0x08, "4" )
756 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
757 	PORT_DIPNAME( 0x20, 0x20, "Time" )                     PORT_DIPLOCATION("SW1:6")
758 	PORT_DIPSETTING(    0x20, "60" )
759 	PORT_DIPSETTING(    0x00, "45" )
760 	PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6" )              PORT_DIPLOCATION("SW1:7")
761 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
762 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
763 	PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" )              PORT_DIPLOCATION("SW1:8")
764 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
765 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
766 
767 	PORT_START("DSW2")
768 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )      PORT_DIPLOCATION("SW2:1,2")
769 	PORT_DIPSETTING(    0x03, DEF_STR( Easy ) )
770 	PORT_DIPSETTING(    0x02, DEF_STR( Normal ) )
771 	PORT_DIPSETTING(    0x01, DEF_STR( Hard ) )
772 	PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
773 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Demo_Sounds ) )     PORT_DIPLOCATION("SW2:3")
774 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
775 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
776 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Flip_Screen ) )     PORT_DIPLOCATION("SW2:4")
777 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
778 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
779 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Cabinet ) )         PORT_DIPLOCATION("SW2:5")
780 	PORT_DIPSETTING(    0x10, DEF_STR( Upright ) )
781 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
782 	PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coinage ) )         PORT_DIPLOCATION("SW2:6,7,8")
783 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
784 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
785 	PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
786 	PORT_DIPSETTING(    0xe0, DEF_STR( 1C_1C ) )
787 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_2C ) )
788 	PORT_DIPSETTING(    0xa0, DEF_STR( 1C_3C ) )
789 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_4C ) )
790 	PORT_DIPSETTING(    0x60, DEF_STR( 1C_5C ) )
791 INPUT_PORTS_END
792 
793 static INPUT_PORTS_START( battlcry )
794 	PORT_INCLUDE( reikaids )
795 
796 	PORT_MODIFY("DSW1")  // According to manual these DSW #s should be reversed
797 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Allow_Continue ) )  PORT_DIPLOCATION("SW1:1,2,3")
798 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
799 	PORT_DIPSETTING(    0x02, "Up To Stage 1" )
800 	PORT_DIPSETTING(    0x06, "Up To Stage 2" )
801 	PORT_DIPSETTING(    0x01, "Up To Stage 3" )
802 	PORT_DIPSETTING(    0x05, "Up To Stage 4" )
803 	PORT_DIPSETTING(    0x03, "Up To Stage 5" )
804 	PORT_DIPSETTING(    0x07, "Up To Stage 6" )
805 	PORT_DIPNAME( 0x18, 0x10, DEF_STR( Lives ) )           PORT_DIPLOCATION("SW1:4,5")
806 	PORT_DIPSETTING(    0x18, "1" )
807 	PORT_DIPSETTING(    0x10, "2" )
808 	PORT_DIPSETTING(    0x08, "3" )
809 	PORT_DIPSETTING(    0x00, "4" )
810 	PORT_DIPNAME( 0x20, 0x20, "Time" )                     PORT_DIPLOCATION("SW1:6")
811 	PORT_DIPSETTING(    0x20, "90" )
812 	PORT_DIPSETTING(    0x00, "120" )
813 	PORT_DIPNAME( 0x40, 0x40, "Test Mode" )                PORT_DIPLOCATION("SW1:7")
814 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
815 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
816 	PORT_DIPNAME( 0x80, 0x80, "Unused - Leave OFF" )       PORT_DIPLOCATION("SW1:8")
817 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
818 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
819 
820 	PORT_MODIFY("DSW2")
821 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) )     PORT_DIPLOCATION("SW2:3")
822 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
823 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
824 	PORT_DIPNAME( 0x08, 0x08, "Background Music" )         PORT_DIPLOCATION("SW2:4")
825 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
826 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
827 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) )     PORT_DIPLOCATION("SW2:5")
828 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
829 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
830 	PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coinage ) )         PORT_DIPLOCATION("SW2:6,7,8")
831 	PORT_DIPSETTING(    0x80, DEF_STR( 4C_1C ) )
832 	PORT_DIPSETTING(    0x40, DEF_STR( 3C_1C ) )
833 	PORT_DIPSETTING(    0xc0, DEF_STR( 2C_1C ) )
834 	PORT_DIPSETTING(    0xe0, DEF_STR( 1C_1C ) )
835 	PORT_DIPSETTING(    0x60, DEF_STR( 1C_2C ) )
836 	PORT_DIPSETTING(    0xa0, DEF_STR( 1C_3C ) )
837 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_4C ) )
838 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
839 INPUT_PORTS_END
840 
841 static INPUT_PORTS_START( mj_keyboard )
842 	PORT_START("KEY0")
843 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
844 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_B )
845 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_C )
846 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_D )
847 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
848 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM )   /* dip switch (handled separately) */
849 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
850 
851 	PORT_START("KEY1")
852 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_E )
853 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F )
854 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_G )
855 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_H )
856 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
857 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM )   /* dip switch (handled separately) */
858 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
859 
860 	PORT_START("KEY2")
861 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_I )
862 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_J )
863 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K )
864 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_L )
865 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
866 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM )   /* dip switch (handled separately) */
867 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
868 
869 	PORT_START("KEY3")
870 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_M )
871 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_N )
872 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
873 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
874 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP )
875 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM )   /* dip switch (handled separately) */
876 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
877 
878 	PORT_START("KEY4")
879 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
880 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
881 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
882 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
883 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
884 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM )   /* dip switch (handled separately) */
885 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
886 
887 	PORT_START("KEY5")
888 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
889 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
890 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
891 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
892 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
893 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM )   /* dip switch (handled separately) */
894 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
895 
896 	PORT_START("KEY6")
897 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2)
898 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2)
899 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2)
900 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2)
901 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
902 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM )   /* dip switch (handled separately) */
903 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
904 
905 	PORT_START("KEY7")
906 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2)
907 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2)
908 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2)
909 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2)
910 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
911 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM )   /* dip switch (handled separately) */
912 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
913 
914 	PORT_START("KEY8")
915 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2)
916 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2)
917 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2)
918 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2)
919 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
920 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM )   /* dip switch (handled separately) */
921 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
922 
923 	PORT_START("KEY9")
924 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2)
925 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2)
926 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2)
927 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2)
928 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2)
929 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM )   /* dip switch (handled separately) */
930 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
931 
932 	PORT_START("KEY10")
933 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2)
934 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2)
935 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2)
936 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
937 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
938 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM )   /* dip switch (handled separately) */
939 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
940 
941 	PORT_START("KEY11")
942 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 )
943 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2)
944 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
945 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
946 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
947 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM )   /* dip switch (handled separately) */
948 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
949 INPUT_PORTS_END
950 
951 static INPUT_PORTS_START( pteacher )
952 	PORT_START("DSW")   /* dip switches (handled by pteacher_keyboard_r) */
953 	PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Demo_Sounds ) )  PORT_DIPLOCATION("SW1:1")
954 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
955 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
956 	PORT_DIPNAME( 0x0002, 0x0000, "In-Game BGM")        PORT_DIPLOCATION("SW1:2")
957 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
958 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
959 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Coinage ) )      PORT_DIPLOCATION("SW1:3,4")
960 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
961 	PORT_DIPSETTING(      0x0004, DEF_STR( 2C_1C ) )
962 	PORT_DIPSETTING(      0x000c, DEF_STR( 1C_1C ) )
963 	PORT_DIPSETTING(      0x0008, DEF_STR( 1C_2C ) )
964 	PORT_DIPNAME( 0x0010, 0x0010, "Female Voices" )         PORT_DIPLOCATION("SW1:5")
965 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
966 	PORT_DIPSETTING(      0x0010, DEF_STR( On ) )
967 	PORT_DIPUNKNOWN_DIPLOC( 0x0020, 0x0020, "SW1:6" ) //SW1:6,7,8 are difficulty
968 	PORT_DIPUNKNOWN_DIPLOC( 0x0040, 0x0040, "SW1:7" )
969 	PORT_DIPUNKNOWN_DIPLOC( 0x0080, 0x0080, "SW1:8" )
970 
971 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) )  PORT_DIPLOCATION("SW2:4")
972 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
973 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
974 	PORT_SERVICE_DIPLOC(0x0200, IP_ACTIVE_LOW, "SW2:3" )
975 	PORT_DIPUNKNOWN_DIPLOC( 0x0400, 0x0400, "SW2:2" )
976 	PORT_DIPUNKNOWN_DIPLOC( 0x0800, 0x0800, "SW2:1" )
977 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNUSED )
978 
979 	PORT_START("COIN")
980 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
981 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 )
982 	PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
983 
984 	PORT_INCLUDE( mj_keyboard )
985 INPUT_PORTS_END
986 
987 static INPUT_PORTS_START( mjjoship )
988 	PORT_INCLUDE( pteacher )
989 
990 	// Manual wrong for this game - it's an incomplete version of the
991 		// pteacher set, with no service mode and start score instead of
992 	// girl voices.  Coins stated in manual in same place but do nothing
993 
994 	PORT_MODIFY("DSW")
995 	// SW1
996 	PORT_DIPUNUSED_DIPLOC( 0x0002, 0x0002, "SW1:2" )
997 	PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW1:3" )
998 	PORT_DIPUNUSED_DIPLOC( 0x0008, 0x0008, "SW1:4" )
999 	PORT_DIPNAME( 0x0010, 0x0010, "Player Start Score" )    PORT_DIPLOCATION("SW1:5")
1000 	PORT_DIPSETTING(    0x0010, "1000" )
1001 	PORT_DIPSETTING(    0x0000, "2000" )
1002 
1003 	// SW2
1004 	PORT_DIPUNUSED_DIPLOC( 0x0100, 0x0100, "SW2:4" )
1005 	PORT_DIPUNUSED_DIPLOC( 0x0200, 0x0200, "SW2:3" )
1006 
1007 INPUT_PORTS_END
1008 
1009 static INPUT_PORTS_START( jogakuen )
1010 	PORT_START("DSW")   /* dip switches (handled by pteacher_keyboard_r) */
1011 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3")
1012 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) )
1013 	PORT_DIPSETTING(      0x0001, DEF_STR( 4C_1C ) )
1014 	PORT_DIPSETTING(      0x0002, DEF_STR( 3C_1C ) )
1015 	PORT_DIPSETTING(      0x0003, DEF_STR( 2C_1C ) )
1016 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
1017 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
1018 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
1019 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
1020 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:4")
1021 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
1022 	PORT_DIPSETTING(      0x0008, DEF_STR( On ) )
1023 	PORT_DIPNAME( 0x0010, 0x0010, "In-Game BGM" ) PORT_DIPLOCATION("SW1:5")
1024 	PORT_DIPSETTING(      0x0010, DEF_STR( On ) )
1025 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
1026 	PORT_DIPNAME( 0x0020, 0x0020, "Gal Strip Voice" ) PORT_DIPLOCATION("SW1:6")
1027 	PORT_DIPSETTING(      0x0020, DEF_STR( On ) )
1028 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
1029 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:7")
1030 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
1031 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1032 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8")
1033 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
1034 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1035 	PORT_SERVICE( 0x0800, IP_ACTIVE_LOW ) PORT_DIPLOCATION("SW2:1")
1036 	PORT_DIPNAME( 0x0700, 0x0700, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:2,3,4") // not sure about the sequence here
1037 	PORT_DIPSETTING(      0x0300, DEF_STR( Easiest ) )   // 'Easy 4' in test mode
1038 	PORT_DIPSETTING(      0x0200, DEF_STR( Very_Easy ) ) // 'Easy 3' in test mode
1039 	PORT_DIPSETTING(      0x0100, DEF_STR( Easier ) )    // 'Easy 2' in test mode
1040 	PORT_DIPSETTING(      0x0000, DEF_STR( Easy ) )      // 'Easy 1' in test mode
1041 	PORT_DIPSETTING(      0x0700, DEF_STR( Normal ) )    // 'Normal 0' in test mode
1042 	PORT_DIPSETTING(      0x0600, DEF_STR( Hard ) )      // 'Hard 1' in test mode
1043 	PORT_DIPSETTING(      0x0500, DEF_STR( Harder ) )    // 'Hard 2' in test mode
1044 	PORT_DIPSETTING(      0x0400, DEF_STR( Hardest ) )   // 'Hard 3' in test mode
1045 	PORT_BIT( 0xf000, IP_ACTIVE_LOW, IPT_UNUSED )
1046 
1047 	PORT_START("COIN")
1048 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1049 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 )
1050 	PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
1051 
1052 	PORT_INCLUDE( mj_keyboard )
1053 INPUT_PORTS_END
1054 
1055 static INPUT_PORTS_START( mjikaga )
1056 	PORT_START("DSW")   /* dip switches (handled by pteacher_keyboard_r) */
1057 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1")
1058 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
1059 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1060 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:2")
1061 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
1062 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1063 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:3")
1064 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
1065 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1066 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:4")
1067 	PORT_DIPSETTING(      0x0008, DEF_STR( On ) )
1068 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
1069 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5")
1070 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
1071 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1072 	PORT_DIPNAME( 0x0020, 0x0020, "In-Game BGM" ) PORT_DIPLOCATION("SW1:6")
1073 	PORT_DIPSETTING(      0x0020, DEF_STR( On ) )
1074 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
1075 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:7")
1076 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
1077 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1078 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8")
1079 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
1080 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1081 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:1,2")
1082 	PORT_DIPSETTING(      0x0000, DEF_STR( 3C_1C ) )
1083 	PORT_DIPSETTING(      0x0800, DEF_STR( 2C_1C ) )
1084 	PORT_DIPSETTING(      0x0c00, DEF_STR( 1C_1C ) )
1085 	PORT_DIPSETTING(      0x0400, DEF_STR( 1C_2C ) )
1086 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:3")
1087 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
1088 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1089 	PORT_SERVICE( 0x0100, IP_ACTIVE_LOW ) PORT_DIPLOCATION("SW2:4")
1090 	PORT_BIT( 0xf000, IP_ACTIVE_LOW, IPT_UNUSED )
1091 
1092 	PORT_START("COIN")
1093 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1094 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 )
1095 	PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
1096 
1097 	PORT_INCLUDE( mj_keyboard )
1098 INPUT_PORTS_END
1099 
1100 
1101 /**************************************************************************/
1102 
1103 
1104 static const gfx_layout char_layout =
1105 {
1106 	8,8,
1107 	RGN_FRAC(1,1),
1108 	4,
1109 	{ 0, 1, 2, 3 },
1110 	{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4 },
1111 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
1112 	32*8
1113 };
1114 
1115 static GFXDECODE_START( gfx_mrokumei )
1116 	GFXDECODE_ENTRY( "gfx1", 0, char_layout, 0x6000, 0x100 )
1117 	GFXDECODE_ENTRY( "gfx2", 0, char_layout, 0x7000, 0x100 )
1118 GFXDECODE_END
1119 
1120 static const gfx_layout tile_layout =
1121 {
1122 	8,8,
1123 	RGN_FRAC(1,1),
1124 	8,
1125 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
1126 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1127 	{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 },
1128 	64*8
1129 };
1130 
1131 static GFXDECODE_START( gfx_reikaids )
1132 	GFXDECODE_ENTRY( "gfx1", 0, tile_layout, 0x6000, 0x20 )
1133 	GFXDECODE_ENTRY( "gfx2", 0, tile_layout, 0x4000, 0x20 )
1134 	GFXDECODE_ENTRY( "gfx3", 0, tile_layout, 0x2000, 0x20 )
1135 	GFXDECODE_ENTRY( "gfx4", 0, tile_layout, 0x0000, 0x20 )
1136 GFXDECODE_END
1137 
1138 static GFXDECODE_START( gfx_pteacher )
1139 	GFXDECODE_ENTRY( "gfx1", 0, tile_layout, 0x0000, 0x40 )
1140 	GFXDECODE_ENTRY( "gfx2", 0, tile_layout, 0x4000, 0x40 )
1141 GFXDECODE_END
1142 
1143 static const gfx_layout tile_layout_4bpp_hi =
1144 {
1145 	8,8,
1146 	RGN_FRAC(1,1),
1147 	4,
1148 	{ 4, 5, 6, 7 },
1149 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1150 	{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 },
1151 	64*8
1152 };
1153 
1154 static const gfx_layout tile_layout_4bpp_lo =
1155 {
1156 	8,8,
1157 	RGN_FRAC(1,1),
1158 	4,
1159 	{ 0, 1, 2, 3 },
1160 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1161 	{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 },
1162 	64*8
1163 };
1164 
1165 static GFXDECODE_START( gfx_lemnangl )
1166 	GFXDECODE_ENTRY( "gfx1", 0, tile_layout_4bpp_hi, 0x0000, 0x200 )
1167 	GFXDECODE_ENTRY( "gfx1", 0, tile_layout_4bpp_lo, 0x2000, 0x200 )
1168 	GFXDECODE_ENTRY( "gfx2", 0, tile_layout_4bpp_lo, 0x4000, 0x200 )
1169 	GFXDECODE_ENTRY( "gfx2", 0, tile_layout_4bpp_hi, 0x6000, 0x200 )
1170 GFXDECODE_END
1171 
1172 
MACHINE_START_MEMBER(homedata_state,homedata)1173 MACHINE_START_MEMBER(homedata_state,homedata)
1174 {
1175 	save_item(NAME(m_visible_page));
1176 	save_item(NAME(m_flipscreen));
1177 	save_item(NAME(m_blitter_bank));
1178 	save_item(NAME(m_blitter_param_count));
1179 	save_item(NAME(m_blitter_param));
1180 	save_item(NAME(m_vblank));
1181 	save_item(NAME(m_keyb));
1182 }
1183 
MACHINE_START_MEMBER(homedata_state,reikaids)1184 MACHINE_START_MEMBER(homedata_state,reikaids)
1185 {
1186 	uint8_t *ROM = memregion("maincpu")->base();
1187 
1188 	m_mainbank->configure_entries(0, 8, &ROM[0xc000], 0x4000);
1189 	m_audiobank->configure_entries(0, 4, memregion("audiocpu")->base(), 0x10000);
1190 
1191 	MACHINE_START_CALL_MEMBER(homedata);
1192 
1193 	save_item(NAME(m_upd7807_porta));
1194 	save_item(NAME(m_upd7807_portc));
1195 
1196 	save_item(NAME(m_reikaids_which));
1197 	save_item(NAME(m_gfx_bank));
1198 }
1199 
MACHINE_START_MEMBER(homedata_state,pteacher)1200 MACHINE_START_MEMBER(homedata_state,pteacher)
1201 {
1202 	uint8_t *ROM = memregion("maincpu")->base();
1203 
1204 	m_mainbank->configure_entries(0, 4, &ROM[0xc000], 0x4000);
1205 	m_audiobank->configure_entries(0, 4, memregion("audiocpu")->base(), 0x10000);
1206 
1207 	MACHINE_START_CALL_MEMBER(homedata);
1208 
1209 	save_item(NAME(m_upd7807_porta));
1210 	save_item(NAME(m_upd7807_portc));
1211 
1212 	save_item(NAME(m_gfx_bank));
1213 }
1214 
MACHINE_RESET_MEMBER(homedata_state,homedata)1215 MACHINE_RESET_MEMBER(homedata_state,homedata)
1216 {
1217 	m_visible_page = 0;
1218 	m_flipscreen = 0;
1219 	m_blitter_bank = 0;
1220 	m_blitter_param_count = 0;
1221 	m_blitter_param[0] = 0;
1222 	m_blitter_param[1] = 0;
1223 	m_blitter_param[2] = 0;
1224 	m_blitter_param[3] = 0;
1225 	m_vblank = 0;
1226 	m_keyb = 0;
1227 }
1228 
MACHINE_RESET_MEMBER(homedata_state,mrokumei)1229 MACHINE_RESET_MEMBER(homedata_state,mrokumei)
1230 {
1231 	MACHINE_RESET_CALL_MEMBER(homedata);
1232 	m_mrokumei_soundbank->set_bank(0);
1233 }
1234 
MACHINE_RESET_MEMBER(homedata_state,pteacher)1235 MACHINE_RESET_MEMBER(homedata_state,pteacher)
1236 {
1237 	/* on reset, ports are set as input (high impedance), therefore 0xff output */
1238 	pteacher_upd7807_portc_w(0xff);
1239 
1240 	MACHINE_RESET_CALL_MEMBER(homedata);
1241 
1242 	m_upd7807_porta = 0;
1243 	m_gfx_bank[0] = 0;
1244 	m_gfx_bank[1] = 0;
1245 }
1246 
MACHINE_RESET_MEMBER(homedata_state,reikaids)1247 MACHINE_RESET_MEMBER(homedata_state,reikaids)
1248 {
1249 	/* on reset, ports are set as input (high impedance), therefore 0xff output */
1250 	reikaids_upd7807_portc_w(0xff);
1251 
1252 	MACHINE_RESET_CALL_MEMBER(homedata);
1253 
1254 	m_reikaids_which = m_priority;  // m_priority is set in DRIVER_INIT
1255 	m_upd7807_porta = 0;
1256 	m_gfx_bank[0] = 0;
1257 	m_gfx_bank[1] = 0;  // this is not used by reikaids
1258 }
1259 
mrokumei(machine_config & config)1260 void homedata_state::mrokumei(machine_config &config)
1261 {
1262 	/* basic machine hardware */
1263 	MC6809E(config, m_maincpu, 16000000/8);  /* 2MHz ? */
1264 	m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::mrokumei_map);
1265 	m_maincpu->set_vblank_int("screen", FUNC(homedata_state::homedata_irq)); /* also triggered by the blitter */
1266 
1267 	Z80(config, m_audiocpu, 16000000/4);   /* 4MHz ? */
1268 	m_audiocpu->set_addrmap(AS_PROGRAM, &homedata_state::mrokumei_sound_map);
1269 	m_audiocpu->set_addrmap(AS_IO, &homedata_state::mrokumei_sound_io_map);
1270 
1271 	ADDRESS_MAP_BANK(config, m_mrokumei_soundbank).set_map(&homedata_state::mrokumei_sound_banked_map).set_options(ENDIANNESS_LITTLE, 8, 19, 0x10000);
1272 
1273 	MCFG_MACHINE_START_OVERRIDE(homedata_state,homedata)
1274 	MCFG_MACHINE_RESET_OVERRIDE(homedata_state,mrokumei)
1275 
1276 	/* video hardware */
1277 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
1278 	screen.set_refresh_hz(59);
1279 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
1280 	screen.set_size(64*8, 32*8);
1281 	// visible area can be changed at runtime
1282 	screen.set_visarea(0*8, 54*8-1, 2*8, 30*8-1);
1283 	screen.set_screen_update(FUNC(homedata_state::screen_update_mrokumei));
1284 	screen.screen_vblank().set(FUNC(homedata_state::screen_vblank));
1285 	screen.set_palette(m_palette);
1286 
1287 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_mrokumei);
1288 	PALETTE(config, m_palette, FUNC(homedata_state::mrokumei_palette), 0x8000);
1289 
1290 	MCFG_VIDEO_START_OVERRIDE(homedata_state,mrokumei)
1291 
1292 	/* sound hardware */
1293 	SPEAKER(config, "speaker").front_center();
1294 
1295 	GENERIC_LATCH_8(config, m_soundlatch);
1296 
1297 	SN76489A(config, m_sn, 16000000/4);     // SN76489AN actually
1298 	m_sn->add_route(ALL_OUTPUTS, "speaker", 0.5);
1299 
1300 	DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // unknown DAC
1301 }
1302 
1303 
1304 /**************************************************************************/
1305 
reikaids(machine_config & config)1306 void homedata_state::reikaids(machine_config &config)
1307 {
1308 	/* basic machine hardware */
1309 	MC6809E(config, m_maincpu, 16_MHz_XTAL/8);  /* MC68B09EP 2MHz ? */
1310 	m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::reikaids_map);
1311 	m_maincpu->set_vblank_int("screen", FUNC(homedata_state::homedata_irq)); /* also triggered by the blitter */
1312 
1313 	upd7807_device &audiocpu(UPD7807(config, m_audiocpu, 9_MHz_XTAL));  /* 9MHz ? */
1314 	audiocpu.set_addrmap(AS_PROGRAM, &homedata_state::reikaids_upd7807_map);
1315 	audiocpu.pa_in_cb().set(FUNC(homedata_state::reikaids_upd7807_porta_r));
1316 	audiocpu.pa_out_cb().set(FUNC(homedata_state::reikaids_upd7807_porta_w));
1317 	audiocpu.pb_out_cb().set("dac", FUNC(dac_byte_interface::data_w));
1318 	audiocpu.pc_out_cb().set(FUNC(homedata_state::reikaids_upd7807_portc_w));
1319 	audiocpu.pt_in_cb().set(m_soundlatch, FUNC(generic_latch_8_device::read));
1320 
1321 	config.set_maximum_quantum(attotime::from_hz(30000)); // very high interleave required to sync for startup tests
1322 
1323 	MCFG_MACHINE_START_OVERRIDE(homedata_state,reikaids)
1324 	MCFG_MACHINE_RESET_OVERRIDE(homedata_state,reikaids)
1325 
1326 	/* video hardware */
1327 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
1328 	screen.set_refresh_hz(59);
1329 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
1330 	screen.set_size(256, 256);
1331 	screen.set_visarea(0, 255, 16, 256-1-16);
1332 	screen.set_screen_update(FUNC(homedata_state::screen_update_reikaids));
1333 	screen.screen_vblank().set(FUNC(homedata_state::screen_vblank));
1334 	screen.screen_vblank().append([this] (int state) { if (state) m_audiocpu->pulse_input_line(UPD7810_INTF1, m_audiocpu->minimum_quantum_time()); });
1335 	screen.set_palette(m_palette);
1336 
1337 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_reikaids);
1338 	PALETTE(config, m_palette, FUNC(homedata_state::reikaids_palette), 0x8000);
1339 
1340 	MCFG_VIDEO_START_OVERRIDE(homedata_state,reikaids)
1341 
1342 	/* sound hardware */
1343 	SPEAKER(config, "speaker").front_center();
1344 
1345 	GENERIC_LATCH_8(config, m_soundlatch);
1346 
1347 	YM2203(config, m_ymsnd, 16_MHz_XTAL/4);  /* 4 MHz */
1348 	m_ymsnd->port_a_read_callback().set_ioport("DSW1");
1349 	m_ymsnd->port_b_read_callback().set_ioport("DSW2");
1350 	m_ymsnd->add_route(0, "speaker", 0.25);
1351 	m_ymsnd->add_route(1, "speaker", 0.25);
1352 	m_ymsnd->add_route(2, "speaker", 0.25);
1353 	m_ymsnd->add_route(3, "speaker", 1.0);
1354 
1355 	DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // unknown DAC
1356 }
1357 
1358 
1359 /**************************************************************************/
1360 
pteacher(machine_config & config)1361 void homedata_state::pteacher(machine_config &config)
1362 {
1363 	/* basic machine hardware */
1364 	MC6809E(config, m_maincpu, 16000000/8);  /* 2MHz ? */
1365 	m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::pteacher_map);
1366 	m_maincpu->set_vblank_int("screen", FUNC(homedata_state::homedata_irq)); /* also triggered by the blitter */
1367 
1368 	upd7807_device &audiocpu(UPD7807(config, m_audiocpu, 9000000));  /* 9MHz ? */
1369 	audiocpu.set_addrmap(AS_PROGRAM, &homedata_state::pteacher_upd7807_map);
1370 	audiocpu.pa_in_cb().set(FUNC(homedata_state::pteacher_upd7807_porta_r));
1371 	audiocpu.pa_out_cb().set(FUNC(homedata_state::pteacher_upd7807_porta_w));
1372 	audiocpu.pb_out_cb().set("dac", FUNC(dac_byte_interface::data_w));
1373 	audiocpu.pc_in_cb().set_ioport("COIN");
1374 	audiocpu.pc_out_cb().set(FUNC(homedata_state::pteacher_upd7807_portc_w));
1375 	audiocpu.pt_in_cb().set(FUNC(homedata_state::pteacher_keyboard_r));
1376 
1377 	config.set_maximum_quantum(attotime::from_hz(6000));  // should be enough
1378 
1379 	MCFG_MACHINE_START_OVERRIDE(homedata_state,pteacher)
1380 	MCFG_MACHINE_RESET_OVERRIDE(homedata_state,pteacher)
1381 
1382 	/* video hardware */
1383 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
1384 	screen.set_refresh_hz(59);
1385 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
1386 	screen.set_size(64*8, 32*8);
1387 	// visible area can be changed at runtime
1388 	screen.set_visarea(0*8, 54*8-1, 2*8, 30*8-1);
1389 	screen.set_screen_update(FUNC(homedata_state::screen_update_pteacher));
1390 	screen.screen_vblank().set(FUNC(homedata_state::screen_vblank));
1391 	screen.screen_vblank().append([this] (int state) { if (state) m_audiocpu->pulse_input_line(UPD7810_INTF1, m_audiocpu->minimum_quantum_time()); });
1392 	screen.set_palette(m_palette);
1393 
1394 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_pteacher);
1395 	PALETTE(config, m_palette, FUNC(homedata_state::pteacher_palette), 0x8000);
1396 
1397 	MCFG_VIDEO_START_OVERRIDE(homedata_state,pteacher)
1398 
1399 	/* sound hardware */
1400 	SPEAKER(config, "speaker").front_center();
1401 
1402 	GENERIC_LATCH_8(config, m_soundlatch);
1403 	GENERIC_LATCH_8(config, m_mainlatch);
1404 
1405 	SN76489A(config, m_sn, 16000000/4);     // SN76489AN actually
1406 	m_sn->add_route(ALL_OUTPUTS, "speaker", 0.5);
1407 
1408 	DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // unknown DAC
1409 }
1410 
jogakuen(machine_config & config)1411 void homedata_state::jogakuen(machine_config &config)
1412 {
1413 	pteacher(config);
1414 
1415 	m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::jogakuen_map);
1416 }
1417 
mjkinjas(machine_config & config)1418 void homedata_state::mjkinjas(machine_config &config)
1419 {
1420 	pteacher(config);
1421 
1422 	m_audiocpu->set_clock(11000000);    /* 11MHz ? */
1423 }
1424 
lemnangl(machine_config & config)1425 void homedata_state::lemnangl(machine_config &config)
1426 {
1427 	pteacher(config);
1428 
1429 	/* video hardware */
1430 	m_gfxdecode->set_info(gfx_lemnangl);
1431 
1432 	MCFG_VIDEO_START_OVERRIDE(homedata_state,lemnangl)
1433 }
1434 
mjikaga(machine_config & config)1435 void homedata_state::mjikaga(machine_config &config)
1436 {
1437 	lemnangl(config);
1438 
1439 	/* Mahjong Ikagadesuka is different as well. */
1440 	m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::mjikaga_map);
1441 	m_audiocpu->set_addrmap(AS_PROGRAM, &homedata_state::mjikaga_upd7807_map);
1442 
1443 	config.set_maximum_quantum(attotime::from_hz(9000)); // boost synch a bit more, otherwise the game fails to start
1444 }
1445 
INPUT_PORTS_START(mirderby)1446 static INPUT_PORTS_START( mirderby )
1447 INPUT_PORTS_END
1448 
1449 
1450 void homedata_state::cpu0_map(address_map &map)
1451 {
1452 	map(0x0000, 0x7fff).rom();
1453 }
1454 
cpu1_map(address_map & map)1455 void homedata_state::cpu1_map(address_map &map)
1456 {
1457 	map(0x0000, 0x3fff).ram(); // videoram
1458 	map(0x4000, 0x5fff).ram();
1459 	map(0x6000, 0x6fff).ram(); /* work ram */
1460 	map(0x7000, 0x77ff).ram();
1461 	//0x7ff0 onward is the blitter
1462 	map(0x7ffe, 0x7ffe).nopr(); //watchdog
1463 	map(0x8000, 0xffff).rom();
1464 }
1465 
1466 
mirderby_prot_r()1467 uint8_t homedata_state::mirderby_prot_r()
1468 {
1469 	m_prot_data&=0x7f;
1470 	return m_prot_data++;
1471 }
1472 
mirderby_prot_w(uint8_t data)1473 void homedata_state::mirderby_prot_w(uint8_t data)
1474 {
1475 	m_prot_data = data;
1476 }
1477 
1478 
cpu2_map(address_map & map)1479 void homedata_state::cpu2_map(address_map &map)
1480 {
1481 	map(0x0000, 0x3fff).ram().w(FUNC(homedata_state::mrokumei_videoram_w)).share("videoram");
1482 	map(0x4000, 0x5fff).ram();
1483 	map(0x6000, 0x6fff).ram(); /* work ram */
1484 	map(0x7000, 0x77ff).ram();
1485 	map(0x7800, 0x7800).rw(FUNC(homedata_state::mirderby_prot_r), FUNC(homedata_state::mirderby_prot_w)); // protection check? (or sound comms?)
1486 	map(0x7ffe, 0x7ffe).nopr(); //watchdog
1487 	map(0x8000, 0xffff).rom();
1488 }
1489 
1490 
1491 
1492 
1493 
1494 static const gfx_layout mirderbychar_layout =
1495 {
1496 	8,8,
1497 	RGN_FRAC(1,1),
1498 	4,
1499 	{ 0, 1, 2, 3 },
1500 	{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4 },
1501 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
1502 	32*8
1503 };
1504 
1505 static GFXDECODE_START( gfx_mirderby )
1506 	GFXDECODE_ENTRY( "gfx1", 0, mirderbychar_layout, 0x0000, 0x10 )
1507 	GFXDECODE_ENTRY( "gfx2", 0, mirderbychar_layout, 0x0000, 0x10 )
1508 GFXDECODE_END
1509 
1510 /*   Miracle Derby - Ascot
1511 
1512    - has the same GX61A01 custom (blitter?) as homedata.cpp and a 'similar' CPU setup (this has more CPUs)
1513      and similar board / rom numbering (X**-)
1514 
1515      The drivers can probably be merged later, although the current per-game handling of the blitter in
1516      homedata.cpp should be looked at.
1517 
1518 
1519 
1520         Notes from Stefan Lindberg:
1521 
1522         Eprom "x70_a04.5g" had wires attached to it, pin 2 and 16 was joined and pin 1,32,31,30 was joined, i
1523         removed them and read the eprom as the type it was (D27c1000D).
1524 
1525         Measured frequencies:
1526         MBL68B09E = 2mhz
1527         MBL68B09E = 2mhz
1528         z80 = 4mhz
1529         YM2203 = 2mhz
1530 
1531         See included PCB pics.
1532 
1533 
1534 
1535         Roms:
1536 
1537         Name              Size     CRC32         Chip Type
1538         ---------------------------------------------------------------------------------
1539         x70a07.8l         256      0x7d4c9712    82s129
1540         x70a08.7l         256      0xc4e77174    82s129
1541         x70a09.6l         256      0xd0187957    82s129
1542         x70_a03.8g        32768    0x4e298b2d    27c256
1543         x70_a04.5g        131072   0x14392fdb    D27c1000D
1544         x70_a11.1g        32768    0xb394eef7    27c256
1545         x70_b02.12e       32768    0x76c9bb6f    27c256
1546         x70_c01.14e       65536    0xd79d072d    27c512
1547 
1548 
1549 
1550 */
1551 
1552 /* clocks are 16mhz and 9mhz */
1553 
mirderby(machine_config & config)1554 void homedata_state::mirderby(machine_config &config)
1555 {
1556 	/* basic machine hardware */
1557 	MC6809E(config, m_maincpu, 16000000/8);  /* 2 Mhz */
1558 	m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::cpu2_map);
1559 
1560 	z80_device &cpu0(Z80(config, "cpu0", 16000000/4));   /* 4 Mhz */
1561 	cpu0.set_disable();
1562 	cpu0.set_addrmap(AS_PROGRAM, &homedata_state::cpu0_map);
1563 
1564 	mc6809e_device &cpu1(MC6809E(config, "cpu1", 16000000/8)); /* 2 Mhz */
1565 	cpu1.set_addrmap(AS_PROGRAM, &homedata_state::cpu1_map);
1566 	cpu1.set_disable();
1567 	//cpu1.set_vblank_int("screen", FUNC(homedata_state::mirderby_irq));
1568 
1569 	config.set_maximum_quantum(attotime::from_hz(6000));
1570 
1571 	/* video hardware */
1572 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
1573 	screen.set_refresh_hz(59);
1574 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
1575 	screen.set_size(64*8, 32*8);
1576 	screen.set_visarea(0*8, 54*8-1, 2*8, 30*8-1);
1577 	screen.set_screen_update(FUNC(homedata_state::screen_update_mirderby));
1578 	screen.set_palette(m_palette);
1579 
1580 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_mirderby);
1581 	PALETTE(config, m_palette, FUNC(homedata_state::mirderby_palette), 0x8000);
1582 
1583 	MCFG_VIDEO_START_OVERRIDE(homedata_state,mirderby)
1584 
1585 	/* sound hardware */
1586 	SPEAKER(config, "speaker").front_center();
1587 
1588 	YM2203(config, m_ymsnd, 2000000);
1589 	m_ymsnd->add_route(0, "speaker", 0.25);
1590 	m_ymsnd->add_route(1, "speaker", 0.25);
1591 	m_ymsnd->add_route(2, "speaker", 0.25);
1592 	m_ymsnd->add_route(3, "speaker", 1.0);
1593 }
1594 
1595 /**************************************************************************/
1596 
1597 
1598 ROM_START( hourouki )
1599 	ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */
CRC(cd3197b8)1600 	ROM_LOAD( "x77f01.bin", 0x08000, 0x8000, CRC(cd3197b8) SHA1(7dad9ce57a83d675a8a9a4e06df360c22100fe4b) )
1601 
1602 	ROM_REGION( 0x20000, "audiocpu", 0 )    /* Z80 code */
1603 	ROM_LOAD( "x77a10.bin", 0x00000, 0x20000, CRC(dc1d616b) SHA1(93b8dfe1566556e9621c0d5f3998b31874f74a28) )
1604 
1605 	ROM_REGION( 0x20000, "gfx1", 0 )
1606 	ROM_LOAD( "x77a03.bin", 0, 0x20000, CRC(5960cde8) SHA1(857b56b304423102a5f1fc88ba4a2386d012bf4d) )
1607 
1608 	ROM_REGION( 0x40000, "gfx2", 0 )
1609 	ROM_LOAD( "x77a04.bin", 0x00000, 0x20000, CRC(fd348e59) SHA1(df0eb4d24e3e778e7a06b7fd7fa4e077fa0ebf82) )
1610 	ROM_LOAD( "x77a05.bin", 0x20000, 0x20000, CRC(3f76c8af) SHA1(2b41a9a06f8ccbb9f3879c742fa8af4424837fb2) )
1611 
1612 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
1613 	ROM_LOAD16_BYTE( "x77e06.bin", 0x00000, 0x8000, CRC(63607fe5) SHA1(50c756d741117bd0ea8a877bcb1f025e02cc6d29) )
1614 	ROM_LOAD16_BYTE( "x77e07.bin", 0x00001, 0x8000, CRC(79fcfc57) SHA1(4311a6bd8aa2dcad2b4fa5a9091c27dd74df62eb) )
1615 
1616 	ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */
1617 	ROM_LOAD( "x77a08.bin", 0x0000, 0x20000, CRC(22bde229) SHA1(8b44fa895f77b5c95d798172225a030fa0c04126) )
1618 ROM_END
1619 
1620 ROM_START( mhgaiden )
1621 	ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */
1622 	ROM_LOAD( "x72e01.bin", 0x08000, 0x8000, CRC(98cfa53e) SHA1(dd08f5f9ff9d4a9e01e531247fcb17a8407ca8b6) )
1623 
1624 	ROM_REGION( 0x20000, "audiocpu", 0 )    /* Z80 code */
1625 	ROM_LOAD( "x72b10.bin", 0x00000, 0x20000, CRC(00ebbc45) SHA1(9e7ade202bf37a86153a38d705ae26a72732d2bb) )
1626 
1627 	ROM_REGION( 0x20000, "gfx1", 0 )
1628 	ROM_LOAD( "x72b03.bin", 0, 0x20000, CRC(9019936f) SHA1(5b98ad1b4c0b141bc84fc17bea49784883c5775a) )
1629 
1630 	ROM_REGION( 0x40000, "gfx2", 0 )
1631 	ROM_LOAD( "x72b04.bin", 0x00000, 0x20000, CRC(37e3e779) SHA1(7011159dee2c643c3fd6ffbbd0849f63933279ad) )
1632 	ROM_LOAD( "x72b05.bin", 0x20000, 0x20000, CRC(aa5ce6f6) SHA1(d97b08fce68a69b1445d5ab28c0c97fabb5f264b) )
1633 
1634 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
1635 	ROM_LOAD16_BYTE( "x72c06.bin", 0x00000, 0x8000, CRC(b57fb589) SHA1(21b2fc33b9045a4ffa9e4b0bd598fd3416c0adbf) )
1636 	ROM_LOAD16_BYTE( "x72c07.bin", 0x00001, 0x8000, CRC(2aadb285) SHA1(90af8541092fbb116b6d6eaf1511b49a2f9bceaf) )
1637 
1638 	ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */
1639 	ROM_LOAD( "x72b08.bin", 0x0000, 0x20000, CRC(be312d23) SHA1(f2c18d6372c2f819248976c67abe0ddcd5cc1de1) )
1640 ROM_END
1641 
1642 ROM_START( mjhokite )
1643 	ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */
1644 	ROM_LOAD( "a74_g01.6g", 0x08000, 0x8000, CRC(409cc501) SHA1(6e9ab81198a5a54489cca8b6dcafb67995351207) )
1645 
1646 	ROM_REGION( 0x20000, "audiocpu", 0 )    /* Z80 code */
1647 	ROM_LOAD( "a74_a10.11k", 0x00000, 0x20000, CRC(2252f3ec) SHA1(018aaad087354b05b120aa42db572ed13f690f88) )
1648 
1649 	ROM_REGION( 0x20000, "gfx1", 0 )
1650 	ROM_LOAD( "a74_a03.1g", 0, 0x20000, CRC(bf801b74) SHA1(fd9b7a4590fdeba90423a7ceccd8dfbb8826460b) )
1651 
1652 	ROM_REGION( 0x80000, "gfx2", 0 )
1653 	ROM_LOAD( "a74_a040.bin", 0x00000, 0x20000, CRC(b7a4ddbd) SHA1(70b9e44da7f32120fe86b23e431c3ae1eb36ef1a) )
1654 	ROM_LOAD( "a74_a050.bin", 0x20000, 0x20000, CRC(c1718d39) SHA1(e37e2338b7e9409d9d542d30f363d07c7a873602) )
1655 	ROM_LOAD( "a74_a041.bin", 0x40000, 0x20000, CRC(c6a6407d) SHA1(7421f4ae8b2959d16114cadc9098156e5a97b36f) )
1656 	ROM_LOAD( "a74_a051.bin", 0x60000, 0x20000, CRC(74522b81) SHA1(6bd9655005f36887bec7c127f467e765447acd8f) )
1657 
1658 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
1659 	ROM_LOAD16_BYTE( "a74_a06.1l", 0x00000, 0x8000, CRC(df057dd3) SHA1(0afae441b43a87e04511b8e652d2b03f48d8f705) )
1660 	ROM_LOAD16_BYTE( "a74_a07.1m", 0x00001, 0x8000, CRC(3c230167) SHA1(5d57f614bf07baa8b5c96f1d14241ff7c66806c1) )
1661 
1662 	ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */
1663 	ROM_LOAD( "a74_a08.13a", 0x0000, 0x20000, CRC(dffdd855) SHA1(91469a997a6a9f74f1b84c127f30f5b0e2f974ac) )
1664 ROM_END
1665 
1666 ROM_START( mjclinic )
1667 	ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */
1668 	ROM_LOAD( "x80_g01.6g", 0x08000, 0x8000, CRC(787b4fb5) SHA1(d1708979d209113b604f6d0973fe14a0c4348351) )
1669 
1670 	ROM_REGION( 0x20000, "audiocpu", 0 )    /* Z80 code */
1671 	ROM_LOAD( "x80_a10.11k", 0x00000, 0x20000, CRC(afedbadf) SHA1(e2f101b59c0d23f9dc9b057c41d496fc3223cbb8) )
1672 
1673 	ROM_REGION( 0x20000, "gfx1", 0 )
1674 	ROM_LOAD( "x80_a03.1g", 0, 0x20000, CRC(34b63c89) SHA1(98383ce8e464ecc53677c060338cc03aa6238a0e) )
1675 
1676 	ROM_REGION( 0x80000, "gfx2", 0 )
1677 	ROM_LOAD( "x80_a040.bin", 0x00000, 0x20000, CRC(6f18a8cf) SHA1(af8de2bd8b2157ceaa8192ead51ac4489c464ab2) )
1678 	ROM_LOAD( "x80_a050.bin", 0x20000, 0x20000, CRC(6b1ec3a9) SHA1(dc7a857bb102325ebf2522369a231260c2e02c89) )
1679 	ROM_LOAD( "x80_a041.bin", 0x40000, 0x20000, CRC(f70bb001) SHA1(3b29bb0bd155e97d3ccc72a8a07046c676c8452d) )
1680 	ROM_LOAD( "x80_a051.bin", 0x60000, 0x20000, CRC(c7469cb8) SHA1(bcf7021667e943991865fdbc9620f00b09e1db3e) )
1681 
1682 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
1683 	ROM_LOAD16_BYTE( "x80_a06.1l", 0x00000, 0x8000, CRC(c1f9b2fb) SHA1(abe17e2b3b880f91564e32c246116c33e2884889) )
1684 	ROM_LOAD16_BYTE( "x80_a07.1m", 0x00001, 0x8000, CRC(e3120152) SHA1(b4a778a9b91e204e2c068dff9a40bd29eccf04a5) )
1685 
1686 	ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */
1687 	ROM_LOAD( "x80_a08.13a", 0x0000, 0x20000, CRC(174e8ec0) SHA1(a5075fe4bba9403ef9e0636d5f3f66aad8b2bc54) )
1688 ROM_END
1689 
1690 ROM_START( mjclinica )
1691 	ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */
1692 	ROM_LOAD( "x80_f01.6g", 0x08000, 0x8000, CRC(cd814ec0) SHA1(55b2c9519fc98f71a2731c3851ce56ee8e57bd66) ) // labeled f01 instead of g01. Earlier version?
1693 
1694 	ROM_REGION( 0x20000, "audiocpu", 0 )    /* Z80 code */
1695 	ROM_LOAD( "x80_a10.11k", 0x00000, 0x20000, CRC(afedbadf) SHA1(e2f101b59c0d23f9dc9b057c41d496fc3223cbb8) )
1696 
1697 	ROM_REGION( 0x20000, "gfx1", 0 )
1698 	ROM_LOAD( "x80_a03.1g", 0, 0x20000, CRC(34b63c89) SHA1(98383ce8e464ecc53677c060338cc03aa6238a0e) )
1699 
1700 	ROM_REGION( 0x80000, "gfx2", 0 )
1701 	ROM_LOAD( "x80_a040.bin", 0x00000, 0x20000, CRC(6f18a8cf) SHA1(af8de2bd8b2157ceaa8192ead51ac4489c464ab2) )
1702 	ROM_LOAD( "x80_a050.bin", 0x20000, 0x20000, CRC(6b1ec3a9) SHA1(dc7a857bb102325ebf2522369a231260c2e02c89) )
1703 	ROM_LOAD( "x80_a041.bin", 0x40000, 0x20000, CRC(f70bb001) SHA1(3b29bb0bd155e97d3ccc72a8a07046c676c8452d) )
1704 	ROM_LOAD( "x80_a051.bin", 0x60000, 0x20000, CRC(c7469cb8) SHA1(bcf7021667e943991865fdbc9620f00b09e1db3e) )
1705 
1706 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
1707 	ROM_LOAD16_BYTE( "x80_a06.1l", 0x00000, 0x8000, CRC(c1f9b2fb) SHA1(abe17e2b3b880f91564e32c246116c33e2884889) )
1708 	ROM_LOAD16_BYTE( "x80_a07.1m", 0x00001, 0x8000, CRC(e3120152) SHA1(b4a778a9b91e204e2c068dff9a40bd29eccf04a5) )
1709 
1710 	ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */
1711 	ROM_LOAD( "x80_a08.13a", 0x0000, 0x20000, CRC(174e8ec0) SHA1(a5075fe4bba9403ef9e0636d5f3f66aad8b2bc54) )
1712 ROM_END
1713 
1714 ROM_START( mrokumei )
1715 	ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */
1716 	ROM_LOAD( "m81d01.bin", 0x08000, 0x8000, CRC(6f81a78a) SHA1(5e16327b04b065ed4e39a147b18711902dba6384) )
1717 
1718 	ROM_REGION( 0x20000, "audiocpu", 0 )    /* Z80 code */
1719 	ROM_LOAD( "m81a10.bin", 0x00000, 0x20000, CRC(0866b2d3) SHA1(37a726830476e372db906382e1d0601c461c7c10) )
1720 
1721 	ROM_REGION( 0x20000, "gfx1", 0 )
1722 	ROM_LOAD( "m81a03.bin", 0, 0x20000, CRC(4f96e6d2) SHA1(9e6375ee543215691b28c914a8374c1d75c6681f) )
1723 
1724 	ROM_REGION( 0x80000, "gfx2", 0 )
1725 	ROM_LOAD( "m81a40.bin", 0x00000, 0x20000, CRC(f07c6a91) SHA1(1e8b07817bb3661211b22c8c0ee35424b3ee8774) )
1726 	ROM_LOAD( "m81a50.bin", 0x20000, 0x20000, CRC(5ef0d7f2) SHA1(9d0af693b95d941c4b5702c483aee9d33c2fb886) )
1727 	ROM_LOAD( "m81a41.bin", 0x40000, 0x20000, CRC(9332b879) SHA1(fc70a6acf816564c1c90c2f9aa644f702a38eae1) )
1728 	ROM_LOAD( "m81a51.bin", 0x60000, 0x20000, CRC(dda3ae30) SHA1(a0ba05cc46a4b2869ddf544c538e40a40f3babd5) )
1729 
1730 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
1731 	ROM_LOAD16_BYTE( "m81b06.bin", 0x00000, 0x8000, CRC(96665d39) SHA1(9173791831555e69b8938d85340a08dd73012f8d) )
1732 	ROM_LOAD16_BYTE( "m81b07.bin", 0x00001, 0x8000, CRC(14f39690) SHA1(821f9de1b28b9d7844fc1b002c7ee3bbdda7f905) )
1733 
1734 	ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */
1735 	ROM_LOAD( "m81a08.bin", 0x0000, 0x20000, CRC(dba706b9) SHA1(467c8c3e12cd64002d2516dd117bc87d03448f49) )
1736 ROM_END
1737 
1738 ROM_START( lastapos )
1739 	ROM_REGION( 0x02c000, "maincpu", 0 ) /* 6809 Code */
1740 	ROM_LOAD( "e82a01.j14", 0x010000, 0x01c000, CRC(236475ae) SHA1(e14176682fda9195b2919868134ee8491f59badd) )
1741 	ROM_CONTINUE(           0x00c000, 0x004000)
1742 
1743 	ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */
1744 	ROM_LOAD( "x82a04.e20", 0x000000, 0x040000, CRC(52c9028a) SHA1(9d5e37b2f741d5c0e64ba3d674a72330058b96f2) )
1745 
1746 	ROM_REGION( 0x200000, "gfx1", 0 )
1747 	ROM_LOAD( "x82a13.d2",  0x000000, 0x80000, CRC(954c8844) SHA1(94e09009d0ad40a62f2a92cd5bd500ffe2c4650a) )
1748 	ROM_LOAD( "x82a14.d1",  0x080000, 0x80000, CRC(a748305e) SHA1(ee01025820a0915621d2c056d65e67a84a5f724c) )
1749 	ROM_LOAD( "x82a15.f2",  0x100000, 0x80000, CRC(c50f7047) SHA1(13fcd1abaf88c759e747cf5f2c94a522276945c9) )
1750 	ROM_LOAD( "x82a16.f1",  0x180000, 0x80000, CRC(b270094a) SHA1(edd4f7e3fd082c12758d82ea6eba2a060398b9ef) )
1751 
1752 	ROM_REGION( 0x200000, "gfx2", 0 )
1753 	ROM_LOAD( "x82a09.d5",  0x000000, 0x80000, CRC(c496b187) SHA1(8ec4e09469c9f425681671f5ddb2d2d8768af42b) )
1754 	ROM_LOAD( "x82a10.d4",  0x080000, 0x80000, CRC(4243fe28) SHA1(01260543a6f61f46ba56840c1b96ecedf637451c) )
1755 	ROM_LOAD16_BYTE( "e82a12.f4",  0x100000, 0x20000, CRC(0e2cdd40) SHA1(254b4f1f986ad5fd9437a5c8bbaf6683d9edf02b) )
1756 	ROM_LOAD16_BYTE( "e82a11.f5",  0x100001, 0x20000, CRC(141ced2e) SHA1(90b5be2e488ad2793750225ab20c1649d709b578) )
1757 
1758 	ROM_REGION( 0x80000, "gfx3", 0 )
1759 	ROM_LOAD( "x82a08.d6",  0x000000, 0x80000, CRC(51cfd790) SHA1(208f00b1ccf420fe891dd30684481bf871c1aa63) )
1760 
1761 	ROM_REGION( 0x80000, "gfx4", 0 )
1762 	ROM_LOAD( "x82a05.d8",  0x000000, 0x80000, CRC(fb65e0e0) SHA1(d560091cfad17af6539913db1279c62a680de4fc) )
1763 
1764 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
1765 	ROM_LOAD16_BYTE( "e82a18.e12", 0x00000, 0x8000, CRC(1f52a7aa) SHA1(55bbba5bfad1eee4872939d23ac643aa3074b3cf) )
1766 	ROM_LOAD16_BYTE( "e82a17.e9",  0x00001, 0x8000, CRC(f91d77a1) SHA1(a650a68e7e75719819fd04dda86d7fc8849dfe7d) )
1767 
1768 	ROM_REGION( 0x040000, "blit_rom", 0 ) /* blitter data */
1769 	ROM_LOAD( "x82a02.e19", 0x00000, 0x040000, CRC(90fe700f) SHA1(bf7f9955a2cb1af43a272bf3366ff8c09ff6f7e6) )
1770 
1771 	ROM_REGION( 0x0100, "user2", 0 )
1772 	ROM_LOAD( "x82a19.l4", 0x0000, 0x0100, CRC(7ed947b4) SHA1(40c74a17976fab5d7f9da367083764934bb87281) )  // N82S129AN - priority (not used)
1773 ROM_END
1774 
1775 ROM_START( reikaids )
1776 	ROM_REGION( 0x02c000, "maincpu", 0 ) /* 6809 Code */
1777 	ROM_LOAD( "j82c01.j14", 0x010000, 0x01c000, CRC(50fcc451) SHA1(ad717b8300f0903ef136569cf933b8af0e67eb6b) )
1778 	ROM_CONTINUE(           0x00c000, 0x004000)
1779 
1780 	ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */
1781 	ROM_LOAD( "x82a04.e20", 0x000000, 0x040000, CRC(52c9028a) SHA1(9d5e37b2f741d5c0e64ba3d674a72330058b96f2) )
1782 
1783 	ROM_REGION( 0x200000, "gfx1", 0 )
1784 	ROM_LOAD( "x82a13.d2",  0x000000, 0x80000, CRC(954c8844) SHA1(94e09009d0ad40a62f2a92cd5bd500ffe2c4650a) )
1785 	ROM_LOAD( "x82a14.d1",  0x080000, 0x80000, CRC(a748305e) SHA1(ee01025820a0915621d2c056d65e67a84a5f724c) )
1786 	ROM_LOAD( "x82a15.f2",  0x100000, 0x80000, CRC(c50f7047) SHA1(13fcd1abaf88c759e747cf5f2c94a522276945c9) )
1787 	ROM_LOAD( "x82a16.f1",  0x180000, 0x80000, CRC(b270094a) SHA1(edd4f7e3fd082c12758d82ea6eba2a060398b9ef) )
1788 
1789 	ROM_REGION( 0x100000, "gfx2", 0 )
1790 	ROM_LOAD( "x82a09.d5",  0x000000, 0x80000, CRC(c496b187) SHA1(8ec4e09469c9f425681671f5ddb2d2d8768af42b) )
1791 	ROM_LOAD( "x82a10.d4",  0x080000, 0x80000, CRC(4243fe28) SHA1(01260543a6f61f46ba56840c1b96ecedf637451c) )
1792 
1793 	ROM_REGION( 0x080000, "gfx3", 0 )
1794 	ROM_LOAD( "x82a08.d6",  0x000000, 0x80000, CRC(51cfd790) SHA1(208f00b1ccf420fe891dd30684481bf871c1aa63) )
1795 
1796 	ROM_REGION( 0x080000, "gfx4", 0 )
1797 	ROM_LOAD( "x82a05.d8",  0x000000, 0x80000, CRC(fb65e0e0) SHA1(d560091cfad17af6539913db1279c62a680de4fc) )
1798 
1799 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
1800 	ROM_LOAD16_BYTE( "e82a18.e12", 0x00000, 0x8000, CRC(1f52a7aa) SHA1(55bbba5bfad1eee4872939d23ac643aa3074b3cf) )
1801 	ROM_LOAD16_BYTE( "e82a17.e9",  0x00001, 0x8000, CRC(f91d77a1) SHA1(a650a68e7e75719819fd04dda86d7fc8849dfe7d) )
1802 
1803 	ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
1804 	ROM_LOAD( "x82a02.e19", 0x00000, 0x040000, CRC(90fe700f) SHA1(bf7f9955a2cb1af43a272bf3366ff8c09ff6f7e6) )
1805 
1806 	ROM_REGION( 0x0100, "user2", 0 )
1807 	ROM_LOAD( "x82a19.l4", 0x0000, 0x0100, CRC(7ed947b4) SHA1(40c74a17976fab5d7f9da367083764934bb87281) )  // N82S129AN - priority (not used)
1808 ROM_END
1809 
1810 ROM_START( battlcry )
1811 	ROM_REGION( 0x02c000, "maincpu", 0 ) /* 6809 Code */
1812 	ROM_LOAD( "s88e01.j13", 0x010000, 0x01c000, CRC(b08438fe) SHA1(41a0fcdabee449081840848c45983984d7153d1b) )
1813 	ROM_CONTINUE(           0x00c000, 0x004000             )
1814 
1815 	ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */
1816 	ROM_LOAD( "s88b04.f20", 0x000000, 0x040000, CRC(c54b5a5e) SHA1(421082af349b170d74f5214d8b5eed44db472749) )
1817 
1818 	ROM_REGION( 0x200000, "gfx1", 0 )
1819 	ROM_LOAD( "s88c13.e2",  0x000000, 0x80000, CRC(8103f007) SHA1(fcc51e57a1df572ad00000e03db1f5f949dea619) )
1820 	ROM_LOAD( "s88c14.e1",  0x080000, 0x80000, CRC(a7b5fafb) SHA1(7a9448bf13ee680c99bc19a6fac7a14d6ce8ddfc) )
1821 	ROM_LOAD( "s88c15.f2",  0x100000, 0x80000, CRC(597d833b) SHA1(d0c22981b105c1b4b37eae64964af8b683cc4687) )
1822 	ROM_LOAD( "s88c16.f1",  0x180000, 0x80000, CRC(9ca1c1a1) SHA1(30bbb47503631295a16bdd77a5bc08681dd7c63e) )
1823 
1824 	ROM_REGION( 0x100000, "gfx2", 0 )
1825 	ROM_LOAD( "s88c09.e5",  0x000000, 0x80000, CRC(8f77ac3e) SHA1(5903a167ddf69284035967876ef46d7d09582574) )
1826 	ROM_LOAD( "s88c10.e4",  0x080000, 0x80000, CRC(cb44371e) SHA1(96ac9aa0034152ba88afc373475928ad6d9ecd29) )
1827 
1828 	ROM_REGION( 0x080000, "gfx3", 0 )
1829 	ROM_LOAD( "s88c08.e6",  0x000000, 0x80000, CRC(a989cfc2) SHA1(11c39a2ddd5e4be150d2f2ce332e312907df2377) )
1830 
1831 	ROM_REGION( 0x080000, "gfx4", 0 )
1832 	ROM_LOAD( "s88c05.e7",  0x000000, 0x80000, CRC(e7f13340) SHA1(05b0f3ca369c95d4fd50cd9617fc044ad7bdf0d3) )
1833 
1834 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
1835 	ROM_LOAD16_BYTE( "s88b18.f10", 0x00000, 0x8000, CRC(fa432edc) SHA1(55c01b6a1175539facdfdd0c3c49d878a59156a4) )
1836 	ROM_LOAD16_BYTE( "s88b17.f9",  0x00001, 0x8000, CRC(7c55568e) SHA1(1e599cd00abe7b67bcb0c8d3f0c467a99ef79658) )
1837 
1838 	ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
1839 	ROM_LOAD( "s88b02.f19", 0x00000, 0x040000, CRC(7044a542) SHA1(8efaa512f62fe9a37d2474c435c549118c019d67) )
1840 
1841 	ROM_REGION( 0x0100, "user2", 0 )
1842 	ROM_LOAD( "s88a19.l5", 0x0000, 0x0100, CRC(c8ead41e) SHA1(d1e733691de9f9b71c9724de73086d36f381fc74) )   // priority (not used)
1843 ROM_END
1844 
1845 ROM_START( battlcryc )
1846 	ROM_REGION( 0x02c000, "maincpu", 0 ) /* 6809 Code */
1847 	ROM_LOAD( "s88c01.j14", 0x010000, 0x01c000, CRC(4aa6d637) SHA1(e10c6c4a6adeb3b4837ebe5ff0a49ec1204b2e54) ) // 27C1000
1848 	ROM_CONTINUE(           0x00c000, 0x004000             )
1849 
1850 	ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */
1851 	ROM_LOAD( "s88b04.f20", 0x000000, 0x040000, CRC(c54b5a5e) SHA1(421082af349b170d74f5214d8b5eed44db472749) )
1852 
1853 	ROM_REGION( 0x200000, "gfx1", 0 )
1854 	ROM_LOAD( "s88c13.e2",  0x000000, 0x80000, CRC(8103f007) SHA1(fcc51e57a1df572ad00000e03db1f5f949dea619) )
1855 	ROM_LOAD( "s88c14.e1",  0x080000, 0x80000, CRC(a7b5fafb) SHA1(7a9448bf13ee680c99bc19a6fac7a14d6ce8ddfc) )
1856 	ROM_LOAD( "s88c15.f2",  0x100000, 0x80000, CRC(597d833b) SHA1(d0c22981b105c1b4b37eae64964af8b683cc4687) )
1857 	ROM_LOAD( "s88c16.f1",  0x180000, 0x80000, CRC(9ca1c1a1) SHA1(30bbb47503631295a16bdd77a5bc08681dd7c63e) )
1858 
1859 	ROM_REGION( 0x100000, "gfx2", 0 )
1860 	ROM_LOAD( "s88c09.e5",  0x000000, 0x80000, CRC(8f77ac3e) SHA1(5903a167ddf69284035967876ef46d7d09582574) )
1861 	ROM_LOAD( "s88c10.e4",  0x080000, 0x80000, CRC(cb44371e) SHA1(96ac9aa0034152ba88afc373475928ad6d9ecd29) )
1862 
1863 	ROM_REGION( 0x080000, "gfx3", 0 )
1864 	ROM_LOAD( "s88c08.e6",  0x000000, 0x80000, CRC(a989cfc2) SHA1(11c39a2ddd5e4be150d2f2ce332e312907df2377) )
1865 
1866 	ROM_REGION( 0x080000, "gfx4", 0 )
1867 	ROM_LOAD( "s88c05.e7",  0x000000, 0x80000, CRC(e7f13340) SHA1(05b0f3ca369c95d4fd50cd9617fc044ad7bdf0d3) )
1868 
1869 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
1870 	ROM_LOAD16_BYTE( "s88b18.f10", 0x00000, 0x8000, CRC(fa432edc) SHA1(55c01b6a1175539facdfdd0c3c49d878a59156a4) )
1871 	ROM_LOAD16_BYTE( "s88b17.f9",  0x00001, 0x8000, CRC(7c55568e) SHA1(1e599cd00abe7b67bcb0c8d3f0c467a99ef79658) )
1872 
1873 	ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
1874 	ROM_LOAD( "s88b02.f19", 0x00000, 0x040000, CRC(7044a542) SHA1(8efaa512f62fe9a37d2474c435c549118c019d67) )
1875 
1876 	ROM_REGION( 0x0100, "user2", 0 )
1877 	ROM_LOAD( "s88a19.l5", 0x0000, 0x0100, CRC(c8ead41e) SHA1(d1e733691de9f9b71c9724de73086d36f381fc74) )   // priority (not used)
1878 ROM_END
1879 
1880 ROM_START( battlcryp ) // prototype presented at AOU 1989
1881 	ROM_REGION( 0x02c000, "maincpu", 0 ) /* 6809 Code */
1882 	ROM_LOAD( "s88_b01.ic31", 0x010000, 0x01c000, CRC(8dae51b5) SHA1(52a4ec602c9c5bb185dd66b4b98dbfaa91189ced) ) // 27C1000
1883 	ROM_CONTINUE(           0x00c000, 0x004000             )
1884 
1885 	ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code, identical to the released game but split in 27C1000 ROMs */
1886 	ROM_LOAD( "s88_b04_1.ic32", 0x000000, 0x020000, CRC(9995c869) SHA1(9b68d1a15499fed216966ef3a3b68e6381dc01ad) )
1887 	ROM_LOAD( "s88_b04_2.ic55", 0x020000, 0x020000, CRC(aaa2dabe) SHA1(5928c5d265a5d6e521285a8ba29e70ed1887a5c9) )
1888 
1889 	ROM_REGION( 0x200000, "gfx1", 0 ) /* identical to the released game but split in 27C1000 ROMs  */
1890 	ROM_LOAD16_BYTE( "s88_b13_1.v30",  0x000000, 0x20000, CRC(913e11df) SHA1(766b9cb1a39697db88f25a9ffc58724699ab9283) )
1891 	ROM_LOAD16_BYTE( "s88_b13_2.v31",  0x000001, 0x20000, CRC(16069926) SHA1(502795838740b7d8641ae3308b7c56f540a9719b) )
1892 	ROM_LOAD16_BYTE( "s88_b13_3.v32",  0x040000, 0x20000, CRC(95fc246f) SHA1(7b5d24cb7529aa4064f6bafa75172e3ce63d17c1) )
1893 	ROM_LOAD16_BYTE( "s88_b13_4.v33",  0x040001, 0x20000, CRC(0eeb1374) SHA1(cae2890248b502888836d73d2d2067fae1a4d589) )
1894 	ROM_LOAD16_BYTE( "s88_b14_1.v34",  0x080000, 0x20000, CRC(61beb857) SHA1(29d390b7f844905ad07e8c6b9fb87b3f7e01cae0) )
1895 	ROM_LOAD16_BYTE( "s88_b14_2.v35",  0x080001, 0x20000, CRC(4a1fec65) SHA1(7f69cdb7e2140114a40562865bf9bdd3df4d2205) )
1896 	ROM_LOAD16_BYTE( "s88_b14_3.v36",  0x0c0000, 0x20000, CRC(2c95a5b4) SHA1(2e2e5206b20b1f3c9323e2e4c78ea29e3dabb1b8) )
1897 	ROM_LOAD16_BYTE( "s88_b14_4.v37",  0x0c0001, 0x20000, CRC(96f713a3) SHA1(97fd143341e267344dd40df71a586bc25540aa95) )
1898 	ROM_LOAD16_BYTE( "s88_b15_1.v38",  0x100000, 0x20000, CRC(e106bc68) SHA1(1e049bf3c705db33b4629d3f8da3011a2aaaf7dd) )
1899 	ROM_LOAD16_BYTE( "s88_b15_2.v39",  0x100001, 0x20000, CRC(cb6d7f09) SHA1(334d89ffe74f067820ef34a68ff70a2b2d0480a7) )
1900 	ROM_LOAD16_BYTE( "s88_b15_3.v3a",  0x140000, 0x20000, CRC(4bc06e17) SHA1(681b994f090799e68922c2de2a0c7d2ccceec5dc) )
1901 	ROM_LOAD16_BYTE( "s88_b15_4.v3b",  0x140001, 0x20000, CRC(ffeb09c3) SHA1(667893d589634cddb87fd459dceb0fd7bb151730) )
1902 	ROM_LOAD16_BYTE( "s88_b16_1.v3c",  0x180000, 0x20000, CRC(bf6fc926) SHA1(3c084d5e742cfd093246e05b1c9537af944ff080) )
1903 	ROM_LOAD16_BYTE( "s88_b16_2.v3d",  0x180001, 0x20000, CRC(5b3afa9c) SHA1(08e65108ba2ae8e9f01104961d9c5462b5607ad5) )
1904 	ROM_LOAD16_BYTE( "s88_b16_3.v3e",  0x1c0000, 0x20000, CRC(df7a54e8) SHA1(a76a5f80a43b54800eb56fe5c20fb2b582b6d737) )
1905 	ROM_LOAD16_BYTE( "s88_b16_4.v3f",  0x1c0001, 0x20000, CRC(fdbff33d) SHA1(10f4ebc1f7e42063b5ee10cb2e2f6b904bff4bc8) )
1906 
1907 	ROM_REGION( 0x100000, "gfx2", 0 ) /* identical to the released game but split in 27C1000 ROMs  */
1908 	ROM_LOAD16_BYTE( "s88_b09_1.v20",  0x000000, 0x20000, CRC(bfa2d6d3) SHA1(a10c9433c3215a80a74a8e46bd92595811073237) )
1909 	ROM_LOAD16_BYTE( "s88_b09_2.v21",  0x000001, 0x20000, CRC(e1430cf9) SHA1(ec9b373b050f34219791f6309166a2d3abc43bc9) )
1910 	ROM_LOAD16_BYTE( "s88_b09_3.v22",  0x040000, 0x20000, CRC(54cb22c7) SHA1(5c705fc13f7c866ecf3f51bd115c3dc58884a545) )
1911 	ROM_LOAD16_BYTE( "s88_b09_4.v23",  0x040001, 0x20000, CRC(544f313d) SHA1(cec44c863737e80a2909f0b84d05802048bcb7a3) )
1912 	ROM_LOAD16_BYTE( "s88_b10_1.v24",  0x080000, 0x20000, CRC(9bc86933) SHA1(56fdc99636262683bd6651b4ab021a5e34524c76) )
1913 	ROM_LOAD16_BYTE( "s88_b10_2.v25",  0x080001, 0x20000, CRC(43e3ba91) SHA1(ddd69c0513c865ea1322784b275622bc41464c9b) )
1914 	ROM_LOAD16_BYTE( "s88_b10_3.v26",  0x0c0000, 0x20000, CRC(d3672c33) SHA1(27c81d2c2257c613975e0b8dc41753c85305ddce) )
1915 	ROM_LOAD16_BYTE( "s88_b10_4.v27",  0x0c0001, 0x20000, CRC(ae73723e) SHA1(49e1ab0a2626149f5986bbecf531685375b3695a) )
1916 
1917 	ROM_REGION( 0x080000, "gfx3", 0 ) /* identical to the released game but split in 27C1000 ROMs  */
1918 	ROM_LOAD16_BYTE( "s88_b08_1.v10",  0x000000, 0x20000, CRC(5132cd98) SHA1(8999aa64ff6f5c483ae71aab4699fe6ee3169382) )
1919 	ROM_LOAD16_BYTE( "s88_b08_2.v11",  0x000001, 0x20000, CRC(fa661846) SHA1(745a15b801479e451fdb513ec4f334f438ba92c8) )
1920 	ROM_LOAD16_BYTE( "s88_b08_3.v12",  0x040000, 0x20000, CRC(caabbf44) SHA1(d1957121012797372a93689a34ab8f0c3a5130af) )
1921 	ROM_LOAD16_BYTE( "s88_b08_4.v13",  0x040001, 0x20000, CRC(257aacde) SHA1(0ac577864eedc2f778224f91235a011110a7006a) )
1922 
1923 	ROM_REGION( 0x080000, "gfx4", 0 ) /* identical to the released game but split in 27C1000 ROMs  */
1924 	ROM_LOAD16_BYTE( "s88_b05_1.v00",  0x000000, 0x20000, CRC(913e11df) SHA1(766b9cb1a39697db88f25a9ffc58724699ab9283) )
1925 	ROM_LOAD16_BYTE( "s88_b05_2.v01",  0x000001, 0x20000, CRC(16069926) SHA1(502795838740b7d8641ae3308b7c56f540a9719b) )
1926 	ROM_LOAD16_BYTE( "s88_b05_3.v02",  0x040000, 0x20000, CRC(3bca50bd) SHA1(b9b8c19ea4e6ff09c3032c18d246ed496552741e) )
1927 	ROM_LOAD16_BYTE( "s88_b05_4.v03",  0x040001, 0x20000, CRC(c526d508) SHA1(fa7ec24a9f6fdaaf1a1b32b4b383e8738ad1c7d1) )
1928 
1929 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
1930 	ROM_LOAD16_BYTE( "s88_b18", 0x00000, 0x8000, CRC(fa432edc) SHA1(55c01b6a1175539facdfdd0c3c49d878a59156a4) ) // 27c256
1931 	ROM_LOAD16_BYTE( "s88_b17", 0x00001, 0x8000, CRC(7c55568e) SHA1(1e599cd00abe7b67bcb0c8d3f0c467a99ef79658) ) // 27c256
1932 
1933 	ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data, identical to the released game but split in 27C1000 ROMs */
1934 	ROM_LOAD( "s88_b02_1.ic28", 0x00000, 0x020000, CRC(93d8c8ec) SHA1(bb1fcf4d32db6885d0c78416211c20decc48d266) )
1935 	ROM_LOAD( "s88_b02_2.ic27", 0x20000, 0x020000, CRC(8918327b) SHA1(445c0252ec8e71423e77c75190f9524a90f918a9) )
1936 
1937 	ROM_REGION( 0x0100, "user2", 0 )
1938 	ROM_LOAD( "s88_a19.ic42", 0x0000, 0x0100, CRC(c8ead41e) SHA1(d1e733691de9f9b71c9724de73086d36f381fc74) )   // 82s129, priority (not used)
1939 ROM_END
1940 
1941 ROM_START( mjkojink )
1942 	ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */
1943 	ROM_LOAD( "x83j01.16e", 0x010000, 0xc000, CRC(91f90376) SHA1(d452f538f4a1b774640ced49f0ab2784b112e8ba) )
1944 	ROM_CONTINUE(           0x00c000, 0x4000             )
1945 
1946 	ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */
1947 	ROM_LOAD( "x83b02.9g",  0x00000, 0x40000, CRC(46a11578) SHA1(4ff7797808610b4bb0550be71acc49bbd8556fad) )
1948 
1949 	ROM_REGION( 0x100000, "gfx1", 0 )
1950 	ROM_LOAD32_BYTE( "x83b14.1f",  0, 0x40000, CRC(2bcd7557) SHA1(1263a038a294fb521bdf315e8ac1198a42f68415) )
1951 	ROM_LOAD32_BYTE( "x83b15.3f",  1, 0x40000, CRC(7d780e22) SHA1(f887f1a8e5fb65e560cb4987ae21a0c9100ebff0) )
1952 	ROM_LOAD32_BYTE( "x83b16.4f",  2, 0x40000, CRC(5420a3f2) SHA1(0161eb2218d3e9cc018c3c2623de58855ab1a608) )
1953 	ROM_LOAD32_BYTE( "x83b17.6f",  3, 0x40000, CRC(96bcdf83) SHA1(5568c15016a9cd68909aaf29a0bbe6659fdcefc9) )
1954 
1955 	ROM_REGION( 0x100000, "gfx2", 0 )
1956 	ROM_LOAD32_BYTE( "x83b10.1c",  0, 0x40000, CRC(500bfeea) SHA1(cf60f6158611bfb360c7c97597a9d416530bec9e) )
1957 	ROM_LOAD32_BYTE( "x83b11.3c",  1, 0x40000, CRC(2ef77717) SHA1(7d09dc3d73acaf910141598959fdc3501e17ddde) )
1958 	ROM_LOAD32_BYTE( "x83b12.4c",  2, 0x40000, CRC(2035009d) SHA1(8a2aadcc49ac7e68dfabe5ea66b607459a89045d) )
1959 	ROM_LOAD32_BYTE( "x83b13.6c",  3, 0x40000, CRC(53800df2) SHA1(5f18052a2d6afd27ff898ab597bb4e92fad238d7) )
1960 
1961 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
1962 	ROM_LOAD16_BYTE( "x83a19.4k", 0x00000, 0x8000, CRC(d29c9ef0) SHA1(c4e2c0c3c9c7abee1a965d6842956cdf98a76ad4) )
1963 	ROM_LOAD16_BYTE( "x83a18.3k", 0x00001, 0x8000, CRC(c3351952) SHA1(036be91ca428c5df016dd777bd658cb00f44ee3c) )
1964 
1965 	ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
1966 	ROM_LOAD( "x83b03.12e", 0x0000, 0x40000, CRC(4ba8b5ec) SHA1(cee77583f2f7b7fdba7e0f17e4d1244891488d36) )
1967 ROM_END
1968 
1969 ROM_START( mjjoship )
1970 	ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */
1971 	ROM_LOAD( "x73_l01.16e", 0x010000, 0xc000, CRC(df950025) SHA1(3dc22c0a8cf03cff7310fbff36f83804019a5337) )
1972 	ROM_CONTINUE(           0x00c000, 0x4000             )
1973 
1974 	ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */
1975 	ROM_LOAD( "x73_b02.9g",  0x00000, 0x20000, CRC(6b01503b) SHA1(2e1575dac0b9b7c7233a3b8262a99a10e24ec813) )
1976 	ROM_RELOAD(             0x20000, 0x20000 )
1977 
1978 	ROM_REGION( 0x80000, "gfx1", 0 )
1979 	ROM_LOAD32_BYTE( "x73a14.1f",  0, 0x20000, CRC(42f429a5) SHA1(41f64258a65b56f818f8a6ecddab606d0bdc11ab) )
1980 	ROM_LOAD32_BYTE( "x73a15.3f",  1, 0x20000, CRC(2d827236) SHA1(d392dc64f136fd2ef19a2874758ad7804741882a) )
1981 	ROM_IGNORE( 0x20000 )
1982 	ROM_LOAD32_BYTE( "x73a16.4f",  2, 0x20000, CRC(c606cd02) SHA1(d316f11ad56359c8ae74858a84b373dd06934888) )
1983 	ROM_IGNORE( 0x20000 )
1984 	ROM_LOAD32_BYTE( "x73a17.6f",  3, 0x20000, CRC(2c0fdbc9) SHA1(3ae5b590db4705deeaeff93680a10ca980e6264f) )
1985 	ROM_IGNORE( 0x20000 )
1986 
1987 	ROM_REGION( 0x100000, "gfx2", 0 )
1988 	ROM_LOAD32_BYTE( "x73a10.1c",  0, 0x40000, CRC(e6663a99) SHA1(361503c16e32977c8f6b9c5ff981002ac0f97426) )
1989 	ROM_LOAD32_BYTE( "x73a11.3c",  1, 0x40000, CRC(d8a35ebe) SHA1(b6e12db38ddd6dcefa8335b92c0a6e269a6a1e9a) )
1990 	ROM_LOAD32_BYTE( "x73a12.4c",  2, 0x40000, CRC(f3b6ad98) SHA1(d91eeffd18684300809c99fa93d4ac0188530ff7) )
1991 	ROM_LOAD32_BYTE( "x73a13.6c",  3, 0x40000, CRC(30ff8c5f) SHA1(e51d89f6b5db0d8e2c22a046337993f962f6ba8c) )
1992 
1993 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
1994 	ROM_LOAD16_BYTE( "x73_c19.4k", 0x00000, 0x8000, CRC(f4bdce8a) SHA1(e3168d6aa6f8cd24b497706a117c77353d1c6ef3) )
1995 	ROM_LOAD16_BYTE( "x73_c18.3k", 0x00001, 0x8000, CRC(1ab265cc) SHA1(24dced438a28ea9eb2f06c8859c5c07f4d975bfd) )
1996 
1997 	ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */
1998 	ROM_LOAD( "x73a03.12e", 0x0000, 0x20000, CRC(fd32eb8c) SHA1(584afb1ed2da776a4ff9c0b9eb2906c914b28928) )
1999 ROM_END
2000 
2001 ROM_START( vitaminc )
2002 	ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */
2003 	ROM_LOAD( "x90e01.bin", 0x010000, 0xc000, CRC(bc982525) SHA1(30f5e9ab27f799b895a3d979109e331603d94249) )
2004 	ROM_CONTINUE(           0x00c000, 0x4000             )
2005 
2006 	ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */
2007 	ROM_LOAD( "x90a02.bin", 0x00000, 0x40000, CRC(811f540a) SHA1(21993e99835a8995da28c24565b8e5dcc7aeb23e) )
2008 
2009 	ROM_REGION( 0x100000, "gfx1", 0 )
2010 	ROM_LOAD32_BYTE( "x90a14.bin", 0, 0x40000, CRC(4b49d182) SHA1(2658175a23641cf6a4c989940ec2ce31b64ad53e) )
2011 	ROM_LOAD32_BYTE( "x90a15.bin", 1, 0x40000, CRC(5e9016c2) SHA1(5255c1f05f1308ba6fe8b6655eb251a6e4a30a37) )
2012 	ROM_LOAD32_BYTE( "x90a16.bin", 2, 0x40000, CRC(b8843000) SHA1(6d7b02334603f6abd64edcba8fd2f082839c4811) )
2013 	ROM_LOAD32_BYTE( "x90a17.bin", 3, 0x40000, CRC(d74a843c) SHA1(0a0236390f47bb96bf39baaba9961130b26f70d7) )
2014 
2015 	ROM_REGION( 0x100000, "gfx2", 0 )
2016 	ROM_LOAD32_BYTE( "x90a10.bin", 0, 0x40000, CRC(ee9fa36f) SHA1(c8864af92553f44180158dc1b34c9e1b81dfcd7f) )
2017 	ROM_LOAD32_BYTE( "x90a11.bin", 1, 0x40000, CRC(b77d9ef4) SHA1(bb49b0dc28385c7052ff65ffc2c8446b37081965) )
2018 	ROM_LOAD32_BYTE( "x90a12.bin", 2, 0x40000, CRC(da6a65d1) SHA1(3ab3a9e9c76dfc02579bf2fc390c23d24fe5a901) )
2019 	ROM_LOAD32_BYTE( "x90a13.bin", 3, 0x40000, CRC(4da4553b) SHA1(da6fd2cfd5b027afe7e900f90128a25779acb15f) )
2020 
2021 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
2022 	ROM_LOAD16_BYTE( "x90b19.bin", 0x00000, 0x8000, CRC(d0022cfb) SHA1(f384964a09fe6c1f8a993f5da67d81a23df22879) )
2023 	ROM_LOAD16_BYTE( "x90b18.bin", 0x00001, 0x8000, CRC(fe1de95d) SHA1(e94282065b3c69de7c9ea214c752745c18c38cb7) )
2024 
2025 	ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
2026 	ROM_LOAD( "x90a03.bin", 0x0000, 0x40000, CRC(35d5b4e6) SHA1(1ea4d03946aad33d33a817f83d20e7ad8faace6d) )
2027 ROM_END
2028 
2029 ROM_START( mjyougo )
2030 	ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */
2031 	ROM_LOAD( "x91c01.bin", 0x010000, 0xc000, CRC(e28e8c21) SHA1(8039d764fb48269f0cab549c5a8861c05ecb1ef1) )
2032 	ROM_CONTINUE(           0x00c000, 0x4000             )
2033 
2034 	ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */
2035 	ROM_LOAD( "x91a02.bin", 0x00000, 0x40000, CRC(995b1399) SHA1(262f3d7ccffdaa578466d390d790f89186b3c993) )
2036 
2037 	ROM_REGION( 0x100000, "gfx1", 0 )
2038 	ROM_LOAD32_BYTE( "x91a14.bin", 0, 0x40000, CRC(b165fbe8) SHA1(eaad2fb26aedd07c4ec0a8bf91cb10f32c76cb83) )
2039 	ROM_LOAD32_BYTE( "x91a15.bin", 1, 0x40000, CRC(9b60bf2e) SHA1(13c1efbdc1f9f88f0d51dfd76c0128a490f63527) )
2040 	ROM_LOAD32_BYTE( "x91a16.bin", 2, 0x40000, CRC(db4a1655) SHA1(f57c7faaf7632a13af4a7b18aa8f81a2042e4eb8) )
2041 	ROM_LOAD32_BYTE( "x91a17.bin", 3, 0x40000, CRC(4f35ec3b) SHA1(5bf2d9eed69cc5e9358d95c0fba8b2b916274288) )
2042 
2043 	ROM_REGION( 0x100000, "gfx2", 0 )
2044 	ROM_LOAD32_BYTE( "x91a10.bin", 0, 0x40000, CRC(cb364158) SHA1(5255756bfa1145b2773720a39e88fdb67f26e2e5) )
2045 	ROM_LOAD32_BYTE( "x91a11.bin", 1, 0x40000, CRC(f3655577) SHA1(14eb0eda35015718f2e08da10d00ac8a381b4400) )
2046 	ROM_LOAD32_BYTE( "x91a12.bin", 2, 0x40000, CRC(149e8f86) SHA1(660c05deabb0ce43b2f5b936c035df1a2b029fc6) )
2047 	ROM_LOAD32_BYTE( "x91a13.bin", 3, 0x40000, CRC(59f7a140) SHA1(daad9433742b6292c8299935483f07f171436d17) )
2048 
2049 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
2050 	ROM_LOAD16_BYTE( "x91a19.bin", 0x00000, 0x8000, CRC(f63493df) SHA1(0e436bffb03fa6218363ee205c4fe5f4e16a24cc) )
2051 	ROM_LOAD16_BYTE( "x91a18.bin", 0x00001, 0x8000, CRC(b3541265) SHA1(d8e79c2856bb81e9ad9b79c012d64663a8997bbd) )
2052 
2053 	ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
2054 	ROM_LOAD( "x91a03.bin", 0x0000, 0x40000, CRC(4863caa2) SHA1(6ef511cb4d184d4705eb0fd3eb3d82daad49564a) )
2055 ROM_END
2056 
2057 ROM_START( mjkinjas )
2058 	ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */
2059 	ROM_LOAD( "x07c01.bin", 0x010000, 0xc000, CRC(e6534904) SHA1(59c092f0369fc893763ad4b96551e0b4c2430a6a) )
2060 	ROM_CONTINUE(           0x00c000, 0x4000             )
2061 
2062 	ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */
2063 	ROM_LOAD( "x07a02.bin", 0x00000, 0x40000, CRC(31396a5b) SHA1(c444f0a651da70c050a4c69bd09c31fc80dbf1de) )
2064 
2065 	ROM_REGION( 0x200000, "gfx1", 0 )
2066 	ROM_LOAD32_BYTE( "x07a14.bin", 0, 0x80000, CRC(02829ede) SHA1(227d2bcbaafab19ab2c3ff9dad17a0792d114466) )
2067 	ROM_LOAD32_BYTE( "x07a15.bin", 1, 0x80000, CRC(9c8b55db) SHA1(2142c0a6a6b89b2e07ac50be5c5af159610a1922) )
2068 	ROM_LOAD32_BYTE( "x07a16.bin", 2, 0x80000, CRC(7898a340) SHA1(a04d71c5b964509d591659f8f09ea5f38080c0ae) )
2069 	ROM_LOAD32_BYTE( "x07a17.bin", 3, 0x80000, CRC(bf1f6540) SHA1(94465a2dc20bc2b35d5518a485025b721ef87c49) )
2070 
2071 	ROM_REGION( 0x200000, "gfx2", 0 )
2072 	ROM_LOAD32_BYTE( "x07a10.bin", 0, 0x80000, CRC(3bfab66e) SHA1(149d90d6fd1357b407bd9f2fe495ee28d55c9122) )
2073 	ROM_LOAD32_BYTE( "x07a11.bin", 1, 0x80000, CRC(e8f610e3) SHA1(52970a56e67f6b36e1693c06207cbf14ebb96931) )
2074 	ROM_LOAD32_BYTE( "x07a12.bin", 2, 0x80000, CRC(911f0972) SHA1(90b511725de3a226326ddc39106071230f3d3bc6) )
2075 	ROM_LOAD32_BYTE( "x07a13.bin", 3, 0x80000, CRC(59be4c77) SHA1(1ba858c6b1e91753204e10738ca685a4df550d64) )
2076 
2077 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
2078 	ROM_LOAD16_BYTE( "x07a19.bin", 0x00000, 0x8000, CRC(7acabdf8) SHA1(90e39c1dd3e32c057ab8bfcd82d022231a06847c) )
2079 	ROM_LOAD16_BYTE( "x07a18.bin", 0x00001, 0x8000, CRC(d247bd5a) SHA1(298d62395ea7c687ed509863aaf3d8b758743cd8) )
2080 
2081 	ROM_REGION( 0x80000, "blit_rom", 0 ) /* blitter data */
2082 	ROM_LOAD( "x07a03.bin", 0x0000, 0x80000, CRC(f5ff3e72) SHA1(e3489a3b8988677866aadd41cb99f146217022ce) )
2083 ROM_END
2084 
2085 ROM_START( jogakuen )
2086 	ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */
2087 	ROM_LOAD( "a01.bin",    0x010000, 0xc000, CRC(a189490a) SHA1(0d9f6389d4b16c3b885cdc8be20b19db25812aad) )
2088 	ROM_CONTINUE(           0x00c000, 0x4000             )
2089 
2090 	ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */
2091 	ROM_LOAD( "a02.bin",    0x00000, 0x40000, CRC(033add6c) SHA1(fc6b9333722228ba4270b1ba520e32e624b251c2) )
2092 
2093 	ROM_REGION( 0x200000, "gfx1", 0 )
2094 	ROM_LOAD32_BYTE( "a14.bin",    0, 0x80000, CRC(27ad91d7) SHA1(6d96b030a7f1f8c90fb31582b72acbbc759d1e2f) )
2095 	ROM_LOAD32_BYTE( "a15.bin",    1, 0x80000, CRC(e3b2753b) SHA1(c7923da2a718b70c4359d2726e8f8744f55e0389) )
2096 	ROM_LOAD32_BYTE( "a16.bin",    2, 0x80000, CRC(6e2c61fc) SHA1(57b33614b4968d5f88741ff0a52c9a1f28a14da7) )
2097 	ROM_LOAD32_BYTE( "a17.bin",    3, 0x80000, CRC(2f79d467) SHA1(b82df890cb12c33f6cc58676c02595be7614fd12) )
2098 
2099 	ROM_REGION( 0x200000, "gfx2", 0 )
2100 	ROM_LOAD32_BYTE( "a10.bin",    0, 0x80000, CRC(a453759a) SHA1(62b7a41ea97bc808f3250505a9ffeaf53f1b9308) )
2101 	ROM_LOAD32_BYTE( "a11.bin",    1, 0x80000, CRC(252cf007) SHA1(7b3dd558ca00f6855ac037f30e348265a9778f7d) )
2102 	ROM_LOAD32_BYTE( "a12.bin",    2, 0x80000, CRC(5db85eb5) SHA1(01291b98676a8f5116739f66e517fe05f806514a) )
2103 	ROM_LOAD32_BYTE( "a13.bin",    3, 0x80000, CRC(fe04d5b7) SHA1(965c095ce4f8f494d91370fe798be9214c2195f2) )
2104 
2105 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
2106 	ROM_LOAD16_BYTE( "a19.bin",    0x00000, 0x8000, CRC(9a3d9d5e) SHA1(1ab20fc5b7ab1c2508c76b0051923446c409e074) )
2107 	ROM_LOAD16_BYTE( "a18.bin",    0x00001, 0x8000, CRC(3289edd4) SHA1(7db4fbda8a22c64dc29ce6b4b63204cebd641351) )
2108 
2109 	ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
2110 	ROM_LOAD( "a03.bin",    0x0000, 0x40000, CRC(bb1507ab) SHA1(465f45c9cae2d4e064b784cc5ba25b60839e4b5f) )
2111 ROM_END
2112 
2113 ROM_START( lemnangl )
2114 	ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */
2115 	ROM_LOAD( "x02_d01.16e", 0x010000, 0xc000, CRC(4c2fae05) SHA1(86516399bd1eb1565b446dfa0f9a974bde6f9af2) )
2116 	ROM_CONTINUE(            0x00c000, 0x4000             )
2117 
2118 	ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */
2119 	ROM_LOAD( "x02a02.9g",  0x00000, 0x40000, CRC(e9aa8c80) SHA1(6db1345e20d53d8c69cebcac3b2a973fbcaa0e63) )
2120 
2121 	ROM_REGION( 0x100000, "gfx1", 0 )
2122 	ROM_LOAD32_BYTE( "x02a14.1f",  0, 0x40000, CRC(4aa2397b) SHA1(5716de828e5e8735d5e6be0f7cfa95c52b37418a) )
2123 	ROM_LOAD32_BYTE( "x02a15.3f",  1, 0x40000, CRC(d01986e2) SHA1(5889d771d5e13a12e650ee2e4885616373dcf828) )
2124 	ROM_LOAD32_BYTE( "x02a16.4f",  2, 0x40000, CRC(16fca216) SHA1(e6715888053748a6da93dc087535da8e0b1ba702) )
2125 	ROM_LOAD32_BYTE( "x02a17.6f",  3, 0x40000, CRC(7a6a96e7) SHA1(732e6f5ce0cac966aa8b6cfed3f39bb3ea30f57e) )
2126 
2127 	ROM_REGION( 0x100000, "gfx2", 0 )
2128 	ROM_LOAD32_BYTE( "x02a10.1c",  0, 0x40000, CRC(e7164f57) SHA1(06f80ff72f12f2d821899c73051315bfa7b9bf7a) )
2129 	ROM_LOAD32_BYTE( "x02a11.3c",  1, 0x40000, CRC(73fb5d3d) SHA1(99a26ae495e6768756c354330a6a859cfd1b9781) )
2130 	ROM_LOAD32_BYTE( "x02a12.4c",  2, 0x40000, CRC(fc3a254a) SHA1(bf8172c00446b348b4432c71d92e8567ba50ab98) )
2131 	ROM_LOAD32_BYTE( "x02a13.6c",  3, 0x40000, CRC(9f63e7e0) SHA1(4bd8077a3700ccbc4c4a358342b1f9fd4cba8f10) )
2132 
2133 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
2134 	ROM_LOAD16_BYTE( "x02_b19.5k", 0x00000, 0x8000, CRC(f75959bc) SHA1(59a1debc28263a7f5f9b775817232fffc6e63ac4) )
2135 	ROM_LOAD16_BYTE( "x02_b18.3k", 0x00001, 0x8000, CRC(3f1510b1) SHA1(a9892beb3d911ee91d7dd276d9c84d14ba3253d8) )
2136 
2137 	ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
2138 	ROM_LOAD( "x02a03.12e", 0x0000, 0x40000, CRC(02ef0378) SHA1(6223a019fc7794872dd49151952c56892295a779) )
2139 ROM_END
2140 
2141 ROM_START( mjikaga )
2142 	ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */
2143 	ROM_LOAD( "m15a01.bin", 0x010000, 0xc000, CRC(938cc4fb) SHA1(f979c6eee0b72bf53be8c7ebbc4e1dc05bd447d4) )
2144 	ROM_CONTINUE(           0x00c000, 0x4000             )
2145 
2146 	ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */
2147 	ROM_LOAD( "m15a02.bin", 0x00000, 0x40000, CRC(375933dd) SHA1(e813f02e53dc892714cd0e81301606600b72535c) )
2148 
2149 	ROM_REGION( 0x100000, "gfx1", 0 )
2150 	ROM_LOAD32_BYTE( "m15a14.bin", 0, 0x40000, CRC(a685c452) SHA1(819486730cdd89572f5c6b6176e9694cf99a4264) )
2151 	ROM_LOAD32_BYTE( "m15a15.bin", 1, 0x40000, CRC(44153914) SHA1(f8149c2e5412eb2a93dd16bfcb4f618aeddf3ff9) )
2152 	ROM_LOAD32_BYTE( "m15a16.bin", 2, 0x40000, CRC(a4b0b8ac) SHA1(f6fd54c8c7ded3f7502c07b208e5f317669bc3f0) )
2153 	ROM_LOAD32_BYTE( "m15a17.bin", 3, 0x40000, CRC(bb9cb2ef) SHA1(4df3eb57b46cb3ca25d938bb54205487b2c06b6d) )
2154 
2155 	ROM_REGION( 0x100000, "gfx2", 0 )
2156 	ROM_LOAD32_BYTE( "m15a10.bin", 0, 0x40000, CRC(0aeed38e) SHA1(9becd3d5d32ca9678e9211480139c3a1beabb98d) )
2157 	ROM_LOAD32_BYTE( "m15a11.bin", 1, 0x40000, CRC(a305e6e6) SHA1(a2c978050e70deb0244c660db800cba42eb3e2d0) )
2158 	ROM_LOAD32_BYTE( "m15a12.bin", 2, 0x40000, CRC(946b3f55) SHA1(17451cbd7b0c828444aaf2ff170f3a7104596c1d) )
2159 	ROM_LOAD32_BYTE( "m15a13.bin", 3, 0x40000, CRC(d9196955) SHA1(fa8fddbcd91b12d6cb918c0761ea478969a5a795) )
2160 
2161 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
2162 	ROM_LOAD16_BYTE( "m15a19.bin", 0x00000, 0x8000, CRC(2f247acf) SHA1(468fee5a16c98751524e21ad0f608fc85c95ab86) )
2163 	ROM_LOAD16_BYTE( "m15a18.bin", 0x00001, 0x8000, CRC(2648ca07) SHA1(e4f5ed62b014a6e397ce611c2c592f795d112219) )
2164 
2165 	ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
2166 	ROM_LOAD( "m15a03.bin", 0x0000, 0x40000, CRC(07e2e8f8) SHA1(61eed47c4136733059c1d96e98cadb8ac9078f95) )
2167 ROM_END
2168 
2169 ROM_START( mjprivat )
2170 	ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */
2171 	ROM_LOAD( "311d01.16e", 0x010000, 0xc000, CRC(3b4f4676) SHA1(e308febb9c8d35b495b83b37daff7c56deba78fb) )
2172 	ROM_CONTINUE(           0x00c000, 0x4000             )
2173 
2174 	ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */
2175 	ROM_LOAD( "311a02.9g", 0x00000, 0x40000, CRC(ae1d360a) SHA1(26a1e8d654ea2e4393a5267f0d9dab62149b4112) )
2176 
2177 	ROM_REGION( 0x100000, "gfx1", 0 )
2178 	ROM_LOAD32_BYTE( "311a14.1f", 0, 0x40000, CRC(e8741ece) SHA1(ba380c287236668d8ed8583fb9735ed88d2eb41b) )
2179 	ROM_LOAD32_BYTE( "311a15.3f", 1, 0x40000, CRC(51a5c226) SHA1(d527cc542a507fda6b55aec51e76a2dd019b9560) )
2180 	ROM_LOAD32_BYTE( "311a16.4f", 2, 0x40000, CRC(f4419416) SHA1(0e8aa0ef51e449354dce3c8563c5eee230039dc6) )
2181 	ROM_LOAD32_BYTE( "311a17.6f", 3, 0x40000, CRC(1edf5715) SHA1(717181ef596aac6fb556da75ac495f44b763840e) )
2182 
2183 	ROM_REGION( 0x100000, "gfx2", 0 )
2184 	ROM_LOAD32_BYTE( "311a10.1c", 0, 0x40000, CRC(6b15a5fc) SHA1(db19c4c8fae31357bd72821a74b277b7f9abccb4) )
2185 	ROM_LOAD32_BYTE( "311a11.3c", 1, 0x40000, CRC(b5faaf51) SHA1(7c6c72101d677d5f2e41ea6dc6490828f41d844c) )
2186 	ROM_LOAD32_BYTE( "311a12.4c", 2, 0x40000, CRC(ab26bb73) SHA1(3645d3f6767b0bcb43ce2e3b2ef3bdca37d446cf) )
2187 	ROM_LOAD32_BYTE( "311a13.6c", 3, 0x40000, CRC(f2f8f9a0) SHA1(d6b5dd68c85f9d506147f5ffeb60bdfad2bf0195) )
2188 
2189 	ROM_REGION( 0x010000, "proms", 0 )  /* static palette */
2190 	ROM_LOAD16_BYTE( "311a19.4k", 0x00000, 0x8000, CRC(dbb5569a) SHA1(e23a32667adc8eade7555adbac18dac268f08d3e) )
2191 	ROM_LOAD16_BYTE( "311a18.3k", 0x00001, 0x8000, CRC(a5ca7723) SHA1(d074c5c09a50abdb2b0ffdeacfc077a91b9204bf) )
2192 
2193 	ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */
2194 	ROM_LOAD( "311b03.12e", 0x0000, 0x40000, CRC(5722c341) SHA1(694e63261d91da48c0ed14a44fbc6c9c74b055d9) )
2195 ROM_END
2196 
2197 ROM_START( mirderby )
2198 	ROM_REGION( 0x8000, "cpu0", 0 ) /* Z80 Code */
2199 	ROM_LOAD( "x70_a11.1g", 0x2000, 0x6000, CRC(b394eef7) SHA1(a646596d09b90eda44aaf8ccbf8f3fccfd3d5dad) ) // first 0x6000 bytes are blank!
2200 	ROM_CONTINUE(0x0000, 0x2000) // main z80 code is here
2201 
2202 	ROM_REGION( 0x10000, "cpu1", 0 ) /* M6809 code */
2203 	ROM_LOAD( "x70_c01.14e", 0x00000, 0x10000, CRC(d79d072d) SHA1(8e189931de9c4eb520c1ec2d0898d8eaba0f01b5) )
2204 
2205 	ROM_REGION( 0x10000, "maincpu", 0 ) /* M6809 code */
2206 	ROM_LOAD( "x70_b02.12e", 0x8000, 0x8000, CRC(76c9bb6f) SHA1(dd8893f3082d33d366247295e9531f8879c219c5) )
2207 
2208 	ROM_REGION( 0x8000, "gfx1", 0 ) // horse gfx
2209 	ROM_LOAD( "x70_a03.8g", 0x0000, 0x8000, CRC(4e298b2d) SHA1(ae78327d1f30c8d19ef772b82803dab4d6b7b919))
2210 
2211 	ROM_REGION( 0x20000, "gfx2", 0 ) // fonts etc.
2212 	ROM_LOAD( "x70_a04.5g", 0x0000, 0x20000, CRC(14392fdb) SHA1(dafdce473b2d2ebbdbf49fbd12f85c1ad69b2877) )
2213 
2214 	ROM_REGION( 0x300, "proms", 0 ) /* colours */
2215 	ROM_LOAD( "x70a07.8l", 0x000, 0x100, CRC(7d4c9712) SHA1(fe2a89841fdf5e4fd6cd41478ad2f29d28bed54d) )
2216 	ROM_LOAD( "x70a08.7l", 0x100, 0x100, CRC(c4e77174) SHA1(ada238ded69f01b4daeb0159a2c5c422977bb95e) )
2217 	ROM_LOAD( "x70a09.6l", 0x200, 0x100, CRC(d0187957) SHA1(6b36c1bccad24708cfa2fc78da08313f9bcfdbc0) )
2218 ROM_END
2219 
2220 
2221 
2222 void homedata_state::init_reikaids()
2223 {
2224 	m_priority = 0;
2225 }
2226 
init_battlcry()2227 void homedata_state::init_battlcry()
2228 {
2229 	m_priority = 1; /* priority and initial value for bank write */
2230 }
2231 
init_mirderby()2232 void homedata_state::init_mirderby()
2233 {
2234 }
2235 
2236 
2237 GAME( 1987, hourouki,  0,        mrokumei, mjhokite, homedata_state, empty_init,    ROT0, "Home Data",  "Mahjong Hourouki Part 1 - Seisyun Hen (Japan)",       MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
2238 GAME( 1987, mhgaiden,  0,        mrokumei, mjhokite, homedata_state, empty_init,    ROT0, "Home Data",  "Mahjong Hourouki Gaiden (Japan)",                     MACHINE_SUPPORTS_SAVE )
2239 GAME( 1988, mjhokite,  0,        mrokumei, mjhokite, homedata_state, empty_init,    ROT0, "Home Data",  "Mahjong Hourouki Okite (Japan)",                      MACHINE_SUPPORTS_SAVE )
2240 GAME( 1988, mjclinic,  0,        mrokumei, mjhokite, homedata_state, empty_init,    ROT0, "Home Data",  "Mahjong Clinic (Japan, set 1)",                       MACHINE_SUPPORTS_SAVE )
2241 GAME( 1988, mjclinica, mjclinic, mrokumei, mjhokite, homedata_state, empty_init,    ROT0, "Home Data",  "Mahjong Clinic (Japan, set 2)",                       MACHINE_SUPPORTS_SAVE )
2242 GAME( 1988, mrokumei,  0,        mrokumei, mjhokite, homedata_state, empty_init,    ROT0, "Home Data",  "Mahjong Rokumeikan (Japan)",                          MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
2243 
2244 GAME( 1988, lastapos,  0,        reikaids, reikaids, homedata_state, init_reikaids, ROT0, "Home Data",  "The Last Apostle Puppetshow",                         MACHINE_SUPPORTS_SAVE )
2245 GAME( 1988, reikaids,  lastapos, reikaids, reikaids, homedata_state, init_reikaids, ROT0, "Home Data",  "Reikai Doushi (Japan)",                               MACHINE_SUPPORTS_SAVE )
2246 
2247 GAME( 1991, battlcry,  0,        reikaids, battlcry, homedata_state, init_battlcry, ROT0, "Home Data",  "Battlecry (Version E)",                               MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
2248 GAME( 1989, battlcryc, battlcry, reikaids, battlcry, homedata_state, init_battlcry, ROT0, "Home Data",  "Battlecry (Version C)",                               MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
2249 GAME( 1989, battlcryp, battlcry, reikaids, battlcry, homedata_state, init_battlcry, ROT0, "Home Data",  "Battlecry (Prototype)",                               MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
2250 GAME( 1989, mjkojink,  0,        pteacher, pteacher, homedata_state, empty_init,    ROT0, "Home Data",  "Mahjong Kojinkyouju (Private Teacher) (Japan)",       MACHINE_SUPPORTS_SAVE )
2251 GAME( 1988, mjjoship,  0,        pteacher, mjjoship, homedata_state, empty_init,    ROT0, "Home Data",  "Mahjong Joshi Pro-wres -Give up 5 byou mae- (Japan)", MACHINE_SUPPORTS_SAVE )
2252 GAME( 1989, vitaminc,  0,        pteacher, pteacher, homedata_state, empty_init,    ROT0, "Home Data",  "Mahjong Vitamin C (Japan)",                           MACHINE_SUPPORTS_SAVE )
2253 GAME( 1989, mjyougo,   0,        pteacher, pteacher, homedata_state, empty_init,    ROT0, "Home Data",  "Mahjong-yougo no Kisotairyoku (Japan)",               MACHINE_SUPPORTS_SAVE )
2254 GAME( 1991, mjkinjas,  0,        mjkinjas, pteacher, homedata_state, empty_init,    ROT0, "Home Data",  "Mahjong Kinjirareta Asobi (Japan)",                   MACHINE_SUPPORTS_SAVE )
2255 GAME( 1992?,jogakuen,  0,        jogakuen, jogakuen, homedata_state, empty_init,    ROT0, "Windom",     "Mahjong Jogakuen (Japan)",                            MACHINE_SUPPORTS_SAVE )
2256 
2257 GAME( 1990, lemnangl,  0,        lemnangl, pteacher, homedata_state, empty_init,    ROT0, "Home Data",  "Mahjong Lemon Angel (Japan)",                         MACHINE_SUPPORTS_SAVE )
2258 GAME( 1991, mjprivat,  0,        lemnangl, pteacher, homedata_state, empty_init,    ROT0, "Matoba",     "Mahjong Private (Japan)",                             MACHINE_SUPPORTS_SAVE )
2259 
2260 GAME( 1991?,mjikaga,   0,        mjikaga,  mjikaga,  homedata_state, empty_init,    ROT0, "Mitchell",   "Mahjong Ikaga Desu ka (Japan)",                       MACHINE_SUPPORTS_SAVE )
2261 
2262 GAME( 1988, mirderby,  0,        mirderby, mirderby, homedata_state, init_mirderby, ROT0, "Home Data?", "Miracle Derby - Ascot",                               MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
2263