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