1 /***************************************************************************
2
3 Jack Rabbit memory map (preliminary)
4
5 driver by Nicola Salmoria
6 thanks to Andrea Babich for the manual.
7
8 TODO:
9 - correctly hook up TMS5200 (there's a kludge in zaccaria_ca2_r to make it work)
10
11 - there seems to be a strange kind of DAC connected to 8910 #0 port A, but it sounds
12 horrible so I'm leaving its volume at 0.
13
14 - The 8910 outputs go through some analog circuitry to make them sound more like
15 real intruments.
16 #0 Ch. A = "rullante"/"cassa" (drum roll/bass drum) (selected by bits 3&4 of port A)
17 #0 Ch. B = "basso" (bass)
18 #0 Ch. C = straight out through an optional filter
19 #1 Ch. A = "piano"
20 #1 Ch. B = "tromba" (trumpet) (level selected by bit 0 of port A)
21 #1 Ch. C = disabled (there's an open jumper, otherwise would go out through a filter)
22
23 - some minor color issues (see vidhrdw)
24
25
26 Notes:
27 - There is a protection device which I haven't located on the schematics. It
28 sits on bits 4-7 of the data bus, and is read from locations where only bits
29 0-3 are connected to regular devices (6400-6407 has 4-bit RAM, while 6c00-6c07
30 has a 4-bit input port).
31
32 - The 6802 driving the TMS5220 has a push button connected to the NMI line. Test?
33
34 ***************************************************************************/
35
36 #include "driver.h"
37 #include "vidhrdw/generic.h"
38 #include "machine/6821pia.h"
39 #include "machine/8255ppi.h"
40
41
42 extern data8_t *zaccaria_videoram,*zaccaria_attributesram;
43
44 PALETTE_INIT( zaccaria );
45 VIDEO_START( zaccaria );
46 WRITE_HANDLER( zaccaria_videoram_w );
47 WRITE_HANDLER( zaccaria_attributes_w );
48 WRITE_HANDLER( zaccaria_flip_screen_x_w );
49 WRITE_HANDLER( zaccaria_flip_screen_y_w );
50 VIDEO_UPDATE( zaccaria );
51
52
53 static int dsw;
54
WRITE_HANDLER(zaccaria_dsw_sel_w)55 static WRITE_HANDLER( zaccaria_dsw_sel_w )
56 {
57 switch (data & 0xf0)
58 {
59 case 0xe0:
60 dsw = 0;
61 break;
62
63 case 0xd0:
64 dsw = 1;
65 break;
66
67 case 0xb0:
68 dsw = 2;
69 break;
70
71 default:
72 log_cb(RETRO_LOG_DEBUG, LOGPRE "PC %04x: portsel = %02x\n",activecpu_get_pc(),data);
73 break;
74 }
75 }
76
READ_HANDLER(zaccaria_dsw_r)77 static READ_HANDLER( zaccaria_dsw_r )
78 {
79 return readinputport(dsw);
80 }
81
82
83
WRITE_HANDLER(ay8910_port0a_w)84 static WRITE_HANDLER( ay8910_port0a_w )
85 {
86 /* bits 0-2 go to a weird kind of DAC ??*/
87 /* bits 3-4 control the analog drum emulation on 8910 #0 ch. A*/
88
89 if (data & 1) /* DAC enable */
90 {
91 /* TODO: is this right? it sound awful */
92 static int table[4] = { 0x05, 0x1b, 0x0b, 0x55 };
93 DAC_signed_data_w(0,table[(data & 0x06) >> 1]);
94 }
95 else
96 DAC_signed_data_w(0,0x80);
97 }
98
99
zaccaria_irq0a(int state)100 void zaccaria_irq0a(int state) { cpu_set_nmi_line(1, state ? ASSERT_LINE : CLEAR_LINE); }
zaccaria_irq0b(int state)101 void zaccaria_irq0b(int state) { cpu_set_irq_line(1,0,state ? ASSERT_LINE : CLEAR_LINE); }
102
103 static int active_8910,port0a,acs;
104
READ_HANDLER(zaccaria_port0a_r)105 static READ_HANDLER( zaccaria_port0a_r )
106 {
107 if (active_8910 == 0)
108 return AY8910_read_port_0_r(0);
109 else
110 return AY8910_read_port_1_r(0);
111 }
112
WRITE_HANDLER(zaccaria_port0a_w)113 static WRITE_HANDLER( zaccaria_port0a_w )
114 {
115 port0a = data;
116 }
117
WRITE_HANDLER(zaccaria_port0b_w)118 static WRITE_HANDLER( zaccaria_port0b_w )
119 {
120 static int last;
121
122
123 /* bit 1 goes to 8910 #0 BDIR pin */
124 if ((last & 0x02) == 0x02 && (data & 0x02) == 0x00)
125 {
126 /* bit 0 goes to the 8910 #0 BC1 pin */
127 if (last & 0x01)
128 AY8910_control_port_0_w(0,port0a);
129 else
130 AY8910_write_port_0_w(0,port0a);
131 }
132 else if ((last & 0x02) == 0x00 && (data & 0x02) == 0x02)
133 {
134 /* bit 0 goes to the 8910 #0 BC1 pin */
135 if (last & 0x01)
136 active_8910 = 0;
137 }
138 /* bit 3 goes to 8910 #1 BDIR pin */
139 if ((last & 0x08) == 0x08 && (data & 0x08) == 0x00)
140 {
141 /* bit 2 goes to the 8910 #1 BC1 pin */
142 if (last & 0x04)
143 AY8910_control_port_1_w(0,port0a);
144 else
145 AY8910_write_port_1_w(0,port0a);
146 }
147 else if ((last & 0x08) == 0x00 && (data & 0x08) == 0x08)
148 {
149 /* bit 2 goes to the 8910 #1 BC1 pin */
150 if (last & 0x04)
151 active_8910 = 1;
152 }
153
154 last = data;
155 }
156
INTERRUPT_GEN(zaccaria_cb1_toggle)157 static INTERRUPT_GEN( zaccaria_cb1_toggle )
158 {
159 static int toggle;
160
161 pia_0_cb1_w(0,toggle & 1);
162 toggle ^= 1;
163 }
164
165
166
167 static int port1a,port1b;
168
READ_HANDLER(zaccaria_port1a_r)169 static READ_HANDLER( zaccaria_port1a_r )
170 {
171 if (~port1b & 1) return tms5220_status_r(0);
172 else return port1a;
173 }
174
WRITE_HANDLER(zaccaria_port1a_w)175 static WRITE_HANDLER( zaccaria_port1a_w )
176 {
177 port1a = data;
178 }
179
WRITE_HANDLER(zaccaria_port1b_w)180 static WRITE_HANDLER( zaccaria_port1b_w )
181 {
182 port1b = data;
183
184 /* bit 0 = /RS*/
185
186 /* bit 1 = /WS*/
187 if (~data & 2) tms5220_data_w(0,port1a);
188
189 /* bit 3 = "ACS" (goes, inverted, to input port 6 bit 3)*/
190 acs = ~data & 0x08;
191
192 /* bit 4 = led (for testing?)*/
193 set_led_status(0,~data & 0x10);
194 }
195
READ_HANDLER(zaccaria_ca2_r)196 static READ_HANDLER( zaccaria_ca2_r )
197 {
198 /* TODO: this doesn't work, why?*/
199 /* return !tms5220_ready_r();*/
200
201 static int counter;
202 counter = (counter+1) & 0x0f;
203
204 return counter;
205
206 }
207
tms5220_irq_handler(int state)208 static void tms5220_irq_handler(int state)
209 {
210 pia_1_cb1_w(0,state ? 0 : 1);
211 }
212
213
214
215 static struct pia6821_interface pia_0_intf =
216 {
217 /*inputs : A/B,CA/B1,CA/B2 */ zaccaria_port0a_r, 0, 0, 0, 0, 0,
218 /*outputs: A/B,CA/B2 */ zaccaria_port0a_w, zaccaria_port0b_w, 0, 0,
219 /*irqs : A/B */ zaccaria_irq0a, zaccaria_irq0b
220 };
221
222 static struct pia6821_interface pia_1_intf =
223 {
224 /*inputs : A/B,CA/B1,CA/B2 */ zaccaria_port1a_r, 0, 0, 0, zaccaria_ca2_r, 0,
225 /*outputs: A/B,CA/B2 */ zaccaria_port1a_w, zaccaria_port1b_w, 0, 0,
226 /*irqs : A/B */ 0, 0
227 };
228
229
230 static ppi8255_interface ppi8255_intf =
231 {
232 1, /* 1 chip */
233 {input_port_3_r}, /* Port A read */
234 {input_port_4_r}, /* Port B read */
235 {input_port_5_r}, /* Port C read */
236 {0}, /* Port A write */
237 {0}, /* Port B write */
238 {zaccaria_dsw_sel_w}, /* Port C write */
239 };
240
241
MACHINE_INIT(zaccaria)242 static MACHINE_INIT( zaccaria )
243 {
244 ppi8255_init(&ppi8255_intf);
245
246 pia_unconfig();
247 pia_config(0, PIA_STANDARD_ORDERING, &pia_0_intf);
248 pia_config(1, PIA_STANDARD_ORDERING, &pia_1_intf);
249 pia_reset();
250 }
251
252
WRITE_HANDLER(sound_command_w)253 static WRITE_HANDLER( sound_command_w )
254 {
255 soundlatch_w(0,data);
256 cpu_set_irq_line(2,0,(data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
257 }
258
WRITE_HANDLER(sound1_command_w)259 static WRITE_HANDLER( sound1_command_w )
260 {
261 pia_0_ca1_w(0,data & 0x80);
262 soundlatch2_w(0,data);
263 }
264
WRITE_HANDLER(mc1408_data_w)265 static WRITE_HANDLER( mc1408_data_w )
266 {
267 DAC_data_w(1,data);
268 }
269
270
271 struct GameDriver monymony_driver;
272
READ_HANDLER(zaccaria_prot1_r)273 static READ_HANDLER( zaccaria_prot1_r )
274 {
275 switch (offset)
276 {
277 case 0:
278 return 0x50; /* Money Money */
279
280 case 4:
281 return 0x40; /* Jack Rabbit */
282
283 case 6:
284 if (Machine->gamedrv == &monymony_driver)
285 return 0x70; /* Money Money */
286 return 0xa0; /* Jack Rabbit */
287
288 default:
289 return 0;
290 }
291 }
292
READ_HANDLER(zaccaria_prot2_r)293 static READ_HANDLER( zaccaria_prot2_r )
294 {
295 switch (offset)
296 {
297 case 0:
298 return (input_port_6_r(0) & 0x07) | (acs & 0x08); /* bits 4 and 5 must be 0 in Jack Rabbit */
299
300 case 2:
301 return 0x10; /* Jack Rabbit */
302
303 case 4:
304 return 0x80; /* Money Money */
305
306 case 6:
307 return 0x00; /* Money Money */
308
309 default:
310 return 0;
311 }
312 }
313
314
WRITE_HANDLER(coin_w)315 static WRITE_HANDLER( coin_w )
316 {
317 coin_counter_w(0,data & 1);
318 }
319
WRITE_HANDLER(nmienable_w)320 static WRITE_HANDLER( nmienable_w )
321 {
322 interrupt_enable_w(0,data & 1);
323 }
324
325
326
MEMORY_READ_START(readmem)327 static MEMORY_READ_START( readmem )
328 { 0x0000, 0x5fff, MRA_ROM },
329 { 0x6000, 0x63ff, MRA_RAM },
330 { 0x6400, 0x6407, zaccaria_prot1_r },
331 { 0x6c00, 0x6c07, zaccaria_prot2_r },
332 { 0x6e00, 0x6e00, zaccaria_dsw_r },
333 { 0x7000, 0x77ff, MRA_RAM },
334 { 0x7800, 0x7803, ppi8255_0_r },
335 { 0x7c00, 0x7c00, watchdog_reset_r },
336 { 0x8000, 0xdfff, MRA_ROM },
337 MEMORY_END
338
339 static MEMORY_WRITE_START( writemem )
340 { 0x0000, 0x5fff, MWA_ROM },
341 { 0x6000, 0x67ff, zaccaria_videoram_w, &zaccaria_videoram }, /* 6400-67ff is 4 bits wide */
342 { 0x6800, 0x683f, zaccaria_attributes_w, &zaccaria_attributesram },
343 { 0x6840, 0x685f, MWA_RAM, &spriteram, &spriteram_size },
344 { 0x6881, 0x68bc, MWA_RAM, &spriteram_2, &spriteram_2_size },
345 { 0x6c00, 0x6c00, zaccaria_flip_screen_x_w },
346 { 0x6c01, 0x6c01, zaccaria_flip_screen_y_w },
347 { 0x6c02, 0x6c02, MWA_NOP }, /* sound reset */
348 { 0x6e00, 0x6e00, sound_command_w },
349 { 0x6c06, 0x6c06, coin_w },
350 { 0x6c07, 0x6c07, nmienable_w },
351 { 0x7000, 0x77ff, MWA_RAM },
352 { 0x7800, 0x7803, ppi8255_0_w },
353 { 0x8000, 0xdfff, MWA_ROM },
354 MEMORY_END
355
356 static MEMORY_READ_START( sound_readmem1 )
357 { 0x0000, 0x007f, MRA_RAM },
358 { 0x500c, 0x500f, pia_0_r },
359 { 0xa000, 0xbfff, MRA_ROM },
360 { 0xe000, 0xffff, MRA_ROM },
361 MEMORY_END
362
363 static MEMORY_WRITE_START( sound_writemem1 )
364 { 0x0000, 0x007f, MWA_RAM },
365 { 0x500c, 0x500f, pia_0_w },
366 { 0xa000, 0xbfff, MWA_ROM },
367 { 0xe000, 0xffff, MWA_ROM },
368 MEMORY_END
369
370 static MEMORY_READ_START( sound_readmem2 )
371 { 0x0000, 0x007f, MRA_RAM },
372 { 0x0090, 0x0093, pia_1_r },
373 { 0x1800, 0x1800, soundlatch_r },
374 { 0xa000, 0xbfff, MRA_ROM },
375 { 0xe000, 0xffff, MRA_ROM },
376 MEMORY_END
377
378 static MEMORY_WRITE_START( sound_writemem2 )
379 { 0x0000, 0x007f, MWA_RAM },
380 { 0x0090, 0x0093, pia_1_w },
381 { 0x1000, 0x1000, mc1408_data_w }, /* MC1408 */
382 { 0x1400, 0x1400, sound1_command_w },
383 { 0xa000, 0xbfff, MWA_ROM },
384 { 0xe000, 0xffff, MWA_ROM },
385 MEMORY_END
386
387
388
389 INPUT_PORTS_START( monymony )
390 PORT_START
391 PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) )
392 PORT_DIPSETTING( 0x00, "2" )
393 PORT_DIPSETTING( 0x01, "3" )
394 PORT_DIPSETTING( 0x02, "4" )
395 PORT_DIPSETTING( 0x03, "5" )
396 PORT_BITX( 0x04, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Infinite Lives", IP_KEY_NONE, IP_JOY_NONE )
397 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
398 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
399 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Difficulty ) )
400 PORT_DIPSETTING( 0x00, "Easy" )
401 PORT_DIPSETTING( 0x08, "Hard" )
402 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Cabinet ) )
403 PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
404 PORT_DIPSETTING( 0x10, DEF_STR( Cocktail ) )
405 PORT_DIPNAME( 0x20, 0x00, "Freeze" )
406 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
407 PORT_DIPSETTING( 0x20, DEF_STR( On ) )
408 PORT_DIPNAME( 0x40, 0x00, "Cross Hatch Pattern" )
409 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
410 PORT_DIPSETTING( 0x40, DEF_STR( On ) )
411 PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) /* random high scores? */
412 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
413 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
414
415 PORT_START
416 PORT_DIPNAME( 0x03, 0x01, DEF_STR( Bonus_Life ) )
417 PORT_DIPSETTING( 0x01, "200000" )
418 PORT_DIPSETTING( 0x02, "300000" )
419 PORT_DIPSETTING( 0x03, "400000" )
420 PORT_DIPSETTING( 0x00, "None" )
421 PORT_DIPNAME( 0x04, 0x00, "Table Title" )
422 PORT_DIPSETTING( 0x00, "Todays High Scores" )
423 PORT_DIPSETTING( 0x04, "High Scores" )
424 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unused ) )
425 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
426 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
427 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unused ) )
428 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
429 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
430 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unused ) )
431 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
432 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
433 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unused ) )
434 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
435 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
436 PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
437
438 PORT_START
439 PORT_DIPNAME( 0x03, 0x02, DEF_STR( Coin_A ) )
440 PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )
441 PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) )
442 PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
443 PORT_DIPSETTING( 0x00, DEF_STR( 1C_3C ) )
444 PORT_DIPNAME( 0x8c, 0x84, DEF_STR( Coin_B ) )
445 PORT_DIPSETTING( 0x8c, DEF_STR( 4C_1C ) )
446 PORT_DIPSETTING( 0x88, DEF_STR( 2C_1C ) )
447 PORT_DIPSETTING( 0x84, DEF_STR( 1C_1C ) )
448 PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
449 PORT_DIPSETTING( 0x0c, DEF_STR( 1C_3C ) )
450 PORT_DIPSETTING( 0x08, DEF_STR( 1C_4C ) )
451 PORT_DIPSETTING( 0x04, DEF_STR( 1C_5C ) )
452 PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) )
453 PORT_DIPNAME( 0x70, 0x50, "Coin C" )
454 PORT_DIPSETTING( 0x70, DEF_STR( 4C_1C ) )
455 PORT_DIPSETTING( 0x60, DEF_STR( 2C_1C ) )
456 PORT_DIPSETTING( 0x50, DEF_STR( 1C_1C ) )
457 PORT_DIPSETTING( 0x40, DEF_STR( 1C_2C ) )
458 PORT_DIPSETTING( 0x30, DEF_STR( 1C_3C ) )
459 PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) )
460 PORT_DIPSETTING( 0x10, DEF_STR( 1C_5C ) )
461 PORT_DIPSETTING( 0x00, DEF_STR( 1C_7C ) )
462
463 PORT_START
464 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
465 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
466 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
467 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
468 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
469 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
470 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
471 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
472
473 PORT_START
474 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
475 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
476 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
477 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
478 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
479 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
480 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
481 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
482
483 PORT_START
484 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
485 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
486 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT )
487 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
488 /* other bits are outputs */
489
490 PORT_START
491 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
492 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
493 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
494 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* "ACS" - from pin 13 of a PIA on the sound board */
495 /* other bits come from a protection device */
496 INPUT_PORTS_END
497
498 INPUT_PORTS_START( jackrabt )
499 PORT_START
500 PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) )
501 PORT_DIPSETTING( 0x00, "2" )
502 PORT_DIPSETTING( 0x01, "3" )
503 PORT_DIPSETTING( 0x02, "4" )
504 PORT_DIPSETTING( 0x03, "5" )
505 PORT_BITX( 0x04, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Infinite Lives", IP_KEY_NONE, IP_JOY_NONE )
506 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
507 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
508 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
509 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
510 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
511 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Cabinet ) )
512 PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
513 PORT_DIPSETTING( 0x10, DEF_STR( Cocktail ) )
514 PORT_DIPNAME( 0x20, 0x00, "Freeze" )
515 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
516 PORT_DIPSETTING( 0x20, DEF_STR( On ) )
517 PORT_DIPNAME( 0x40, 0x00, "Cross Hatch Pattern" )
518 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
519 PORT_DIPSETTING( 0x40, DEF_STR( On ) )
520 PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
521 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
522 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
523
524 PORT_START
525 PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
526 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
527 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
528 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
529 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
530 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
531 PORT_DIPNAME( 0x04, 0x00, "Table Title" )
532 PORT_DIPSETTING( 0x00, "Todays High Scores" )
533 PORT_DIPSETTING( 0x04, "High Scores" )
534 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
535 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
536 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
537 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
538 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
539 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
540 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
541 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
542 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
543 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
544 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
545 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
546 PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
547
548 PORT_START
549 PORT_DIPNAME( 0x03, 0x02, DEF_STR( Coin_A ) )
550 PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )
551 PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) )
552 PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
553 PORT_DIPSETTING( 0x00, DEF_STR( 1C_3C ) )
554 PORT_DIPNAME( 0x8c, 0x84, DEF_STR( Coin_B ) )
555 PORT_DIPSETTING( 0x8c, DEF_STR( 4C_1C ) )
556 PORT_DIPSETTING( 0x88, DEF_STR( 2C_1C ) )
557 PORT_DIPSETTING( 0x84, DEF_STR( 1C_1C ) )
558 PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
559 PORT_DIPSETTING( 0x0c, DEF_STR( 1C_3C ) )
560 PORT_DIPSETTING( 0x08, DEF_STR( 1C_4C ) )
561 PORT_DIPSETTING( 0x04, DEF_STR( 1C_5C ) )
562 PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) )
563 PORT_DIPNAME( 0x70, 0x50, "Coin C" )
564 PORT_DIPSETTING( 0x70, DEF_STR( 4C_1C ) )
565 PORT_DIPSETTING( 0x60, DEF_STR( 2C_1C ) )
566 PORT_DIPSETTING( 0x50, DEF_STR( 1C_1C ) )
567 PORT_DIPSETTING( 0x40, DEF_STR( 1C_2C ) )
568 PORT_DIPSETTING( 0x30, DEF_STR( 1C_3C ) )
569 PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) )
570 PORT_DIPSETTING( 0x10, DEF_STR( 1C_5C ) )
571 PORT_DIPSETTING( 0x00, DEF_STR( 1C_7C ) )
572
573 PORT_START
574 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
575 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
576 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
577 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
578 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
579 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
580 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
581 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
582
583 PORT_START
584 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
585 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
586 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
587 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
588 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
589 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
590 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
591 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
592
593 PORT_START
594 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
595 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
596 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT )
597 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
598 /* other bits are outputs */
599
600 PORT_START
601 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
602 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
603 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
604 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* "ACS" - from pin 13 of a PIA on the sound board */
605 /* other bits come from a protection device */
606 INPUT_PORTS_END
607
608
609
610 static struct GfxLayout charlayout =
611 {
612 8,8,
613 RGN_FRAC(1,3),
614 3,
615 { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
616 { 0, 1, 2, 3, 4, 5, 6, 7 },
617 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
618 8*8
619 };
620
621 static struct GfxLayout spritelayout =
622 {
623 16,16,
624 RGN_FRAC(1,3),
625 3,
626 { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
627 { 0, 1, 2, 3, 4, 5, 6, 7,
628 8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
629 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
630 16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
631 32*8
632 };
633
634 static struct GfxDecodeInfo gfxdecodeinfo[] =
635 {
636 { REGION_GFX1, 0, &charlayout, 0, 32 },
637 { REGION_GFX1, 0, &spritelayout, 32*8, 32 },
638 { -1 } /* end of array */
639 };
640
641
642 struct AY8910interface ay8910_interface =
643 {
644 2, /* 2 chips */
645 3580000/2,
646 { 15, 15 },
647 { 0, 0 },
648 { soundlatch2_r, 0 },
649 { ay8910_port0a_w, 0 },
650 { 0, 0 }
651 };
652
653 static struct DACinterface dac_interface =
654 {
655 2,
656 { 0,80 } /* I'm leaving the first DAC(?) off because it sounds awful */
657 };
658
659 static struct TMS5220interface tms5220_interface =
660 {
661 640000, /* clock speed (80*samplerate) */
662 80, /* volume */
663 tms5220_irq_handler /* IRQ handler */
664 };
665
666
667
668 static MACHINE_DRIVER_START( zaccaria )
669
670 /* basic machine hardware */
671 MDRV_CPU_ADD(Z80,18432000/6) /* 3.072 MHz */
672 MDRV_CPU_MEMORY(readmem,writemem)
673 MDRV_CPU_VBLANK_INT(nmi_line_pulse,1)
674
675 MDRV_CPU_ADD(M6802,3580000/4)
676 MDRV_CPU_FLAGS(CPU_AUDIO_CPU) /* 895 kHz */
677 MDRV_CPU_MEMORY(sound_readmem1,sound_writemem1)
678 MDRV_CPU_PERIODIC_INT(zaccaria_cb1_toggle,3580000/4096)
679
680 MDRV_CPU_ADD(M6802,3580000/4)
681 MDRV_CPU_FLAGS(CPU_AUDIO_CPU) /* 895 kHz */
682 MDRV_CPU_MEMORY(sound_readmem2,sound_writemem2)
683
684 MDRV_FRAMES_PER_SECOND(60)
685 MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
686
687 MDRV_MACHINE_INIT(zaccaria)
688
689 /* video hardware */
690 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
691 MDRV_SCREEN_SIZE(32*8, 32*8)
692 MDRV_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
693 MDRV_GFXDECODE(gfxdecodeinfo)
694 MDRV_PALETTE_LENGTH(512)
695 MDRV_COLORTABLE_LENGTH(32*8+32*8)
696
697 MDRV_PALETTE_INIT(zaccaria)
698 MDRV_VIDEO_START(zaccaria)
699 MDRV_VIDEO_UPDATE(zaccaria)
700
701 /* sound hardware */
702 MDRV_SOUND_ADD(AY8910, ay8910_interface)
703 MDRV_SOUND_ADD(DAC, dac_interface)
704 MDRV_SOUND_ADD(TMS5220, tms5220_interface)
705 MACHINE_DRIVER_END
706
707
708
709 /***************************************************************************
710
711 Game driver(s)
712
713 ***************************************************************************/
714
715 ROM_START( monymony )
716 ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for code */
717 ROM_LOAD( "1a", 0x0000, 0x1000, CRC(13c227ca) SHA1(be305d112917904dd130b08f6b5186e3fbcb858a) )
718 ROM_CONTINUE( 0x8000, 0x1000 )
719 ROM_LOAD( "1b", 0x1000, 0x1000, CRC(87372545) SHA1(04618d007a93b3f6706f56b10bdf39727d7d748d) )
720 ROM_CONTINUE( 0x9000, 0x1000 )
721 ROM_LOAD( "1c", 0x2000, 0x1000, CRC(6aea9c01) SHA1(36a57f4dfae52d674dcf55d2b93dbacf734866b1) )
722 ROM_CONTINUE( 0xa000, 0x1000 )
723 ROM_LOAD( "1d", 0x3000, 0x1000, CRC(5fdec451) SHA1(0f955c907e0a61a725a951018fdf5cc321139863) )
724 ROM_CONTINUE( 0xb000, 0x1000 )
725 ROM_LOAD( "2a", 0x4000, 0x1000, CRC(af830e3c) SHA1(bed57c341ae3500f147efe31bcf01f81466ec1c0) )
726 ROM_CONTINUE( 0xc000, 0x1000 )
727 ROM_LOAD( "2c", 0x5000, 0x1000, CRC(31da62b1) SHA1(486f07087244f8537510afacb64ddd59eb512a4d) )
728 ROM_CONTINUE( 0xd000, 0x1000 )
729
730 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for first 6802 */
731 ROM_LOAD( "2g", 0xa000, 0x2000, CRC(78b01b98) SHA1(2aabed56cdae9463deb513c0c5021f6c8dfd271e) )
732 ROM_LOAD( "1i", 0xe000, 0x2000, CRC(94e3858b) SHA1(04961f67b95798b530bd83355dec612389f22255) )
733
734 ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* 64k for second 6802 */
735 ROM_LOAD( "1h", 0xa000, 0x1000, CRC(aad76193) SHA1(e08fc184efced392ee902c4cc9daaaf3310cdfe2) )
736 ROM_CONTINUE( 0xe000, 0x1000 )
737 ROM_LOAD( "1g", 0xb000, 0x1000, CRC(1e8ffe3e) SHA1(858ee7abe88d5801237e519cae2b50ae4bf33a58) )
738 ROM_CONTINUE( 0xf000, 0x1000 )
739
740 ROM_REGION( 0x6000, REGION_GFX1, ROMREGION_DISPOSE )
741 ROM_LOAD( "2d", 0x0000, 0x2000, CRC(82ab4d1a) SHA1(5aaf42a508df236f2e7c844d377132d73053907b) )
742 ROM_LOAD( "1f", 0x2000, 0x2000, CRC(40d4e4d1) SHA1(79cbade30f1c9269e70ddb9c4332cfe1e8dc50a9) )
743 ROM_LOAD( "1e", 0x4000, 0x2000, CRC(36980455) SHA1(4140b0cd4137c8f209124b12d9c0eb3b04f91991) )
744
745 ROM_REGION( 0x0400, REGION_PROMS, 0 )
746 ROM_LOAD( "monymony.9g", 0x0000, 0x0200, CRC(fc9a0f21) SHA1(2a93d684645ee1b70315386127223151582ab370) )
747 ROM_LOAD( "monymony.9f", 0x0200, 0x0200, CRC(93106704) SHA1(d3b8281c87d253a2ed40ff400438e879ca40c2b7) )
748 ROM_END
749
750 ROM_START( jackrabt )
751 ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for code */
752 ROM_LOAD( "cpu-01.1a", 0x0000, 0x1000, CRC(499efe97) SHA1(f0efc910a5343001b27637779e1d4de218d44a4e) )
753 ROM_CONTINUE( 0x8000, 0x1000 )
754 ROM_LOAD( "cpu-01.2l", 0x1000, 0x1000, CRC(4772e557) SHA1(71c1eb49c978799294e732e65a77eba330d8da9b) )
755 ROM_LOAD( "cpu-01.3l", 0x2000, 0x1000, CRC(1e844228) SHA1(0525fe95a0f90c50b54c0bf618eb083ccf20e6c4) )
756 ROM_LOAD( "cpu-01.4l", 0x3000, 0x1000, CRC(ebffcc38) SHA1(abaf0e96d92f9c828a95446af6d5301053416f3d) )
757 ROM_LOAD( "cpu-01.5l", 0x4000, 0x1000, CRC(275e0ed6) SHA1(c0789007a4de1aa848b7e5d26cf9fe847cc5d8a4) )
758 ROM_LOAD( "cpu-01.6l", 0x5000, 0x1000, CRC(8a20977a) SHA1(ba15f4c62f600372390e56c2067b4a8ab1f2dba9) )
759 ROM_LOAD( "cpu-01.2h", 0x9000, 0x1000, CRC(21f2be2a) SHA1(7d10489ca7325eebfa309ae4ffd4962a4310c403) )
760 ROM_LOAD( "cpu-01.3h", 0xa000, 0x1000, CRC(59077027) SHA1(d6c2e68b4b2f1dce8a2141ec259812e732c1c69c) )
761 ROM_LOAD( "cpu-01.4h", 0xb000, 0x1000, CRC(0b9db007) SHA1(836f8cacf2a097fd80d5c045bdc49b3a3174b89e) )
762 ROM_LOAD( "cpu-01.5h", 0xc000, 0x1000, CRC(785e1a01) SHA1(a748d300be9455cad4f912e01c2279bb8465edfe) )
763 ROM_LOAD( "cpu-01.6h", 0xd000, 0x1000, CRC(dd5979cf) SHA1(e9afe7002b2258a1c3132bdd951c6e20d473fb6a) )
764
765 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for first 6802 */
766 ROM_LOAD( "13snd.2g", 0xa000, 0x2000, CRC(fc05654e) SHA1(ed9c66672fe89c41e320e1d27b53f5efa92dce9c) )
767 ROM_LOAD( "9snd.1i", 0xe000, 0x2000, CRC(3dab977f) SHA1(3e79c06d2e70b050f01b7ac58be5127ba87904b0) )
768
769 ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* 64k for second 6802 */
770 ROM_LOAD( "8snd.1h", 0xa000, 0x1000, CRC(f4507111) SHA1(0513f0831b94aeda84aa4f3b4a7c60dfc5113b2d) )
771 ROM_CONTINUE( 0xe000, 0x1000 )
772 ROM_LOAD( "7snd.1g", 0xb000, 0x1000, CRC(c722eff8) SHA1(d8d1c091ab80ea2d6616e4dc030adc9905c0a496) )
773 ROM_CONTINUE( 0xf000, 0x1000 )
774
775 ROM_REGION( 0x6000, REGION_GFX1, ROMREGION_DISPOSE )
776 ROM_LOAD( "1bg.2d", 0x0000, 0x2000, CRC(9f880ef5) SHA1(0ee20fb7c794f6dafdaf2c9ee8456221c9d668c5) )
777 ROM_LOAD( "2bg.1f", 0x2000, 0x2000, CRC(afc04cd7) SHA1(f4349e86b9caee71c9bf9faf68b86603417d9a2b) )
778 ROM_LOAD( "3bg.1e", 0x4000, 0x2000, CRC(14f23cdd) SHA1(e5f3dac52288c56f2fd2940b397bb6c896131a26) )
779
780 ROM_REGION( 0x0400, REGION_PROMS, 0 )
781 ROM_LOAD( "jr-ic9g", 0x0000, 0x0200, CRC(85577107) SHA1(76575fa68b66130b18dfe7374d1a03740963cc73) )
782 ROM_LOAD( "jr-ic9f", 0x0200, 0x0200, CRC(085914d1) SHA1(3d6f9318f5a9f08ce89e4184e3efb9881f671fa7) )
783 ROM_END
784
785 ROM_START( jackrab2 )
786 ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for code */
787 ROM_LOAD( "1cpu2.1a", 0x0000, 0x1000, CRC(f9374113) SHA1(521f293f1894bcaf21e44bc7841a20ae29232da3) )
788 ROM_CONTINUE( 0x8000, 0x1000 )
789 ROM_LOAD( "2cpu2.1b", 0x1000, 0x1000, CRC(0a0eea4a) SHA1(4dfd9b2511d480bb5cc918f7d91013205911d377) )
790 ROM_CONTINUE( 0x9000, 0x1000 )
791 ROM_LOAD( "3cpu2.1c", 0x2000, 0x1000, CRC(291f5772) SHA1(958c2601d43de3c95ed5e3d79737199703263a6a) )
792 ROM_CONTINUE( 0xa000, 0x1000 )
793 ROM_LOAD( "4cpu2.1d", 0x3000, 0x1000, CRC(10972cfb) SHA1(30dd473b3416ee37f887d930ba0017b5b694398e) )
794 ROM_CONTINUE( 0xb000, 0x1000 )
795 ROM_LOAD( "5cpu2.2a", 0x4000, 0x1000, CRC(aa95d06d) SHA1(2216effe6cacd02a5320e71a85842087dda5f85a) )
796 ROM_CONTINUE( 0xc000, 0x1000 )
797 ROM_LOAD( "6cpu2.2c", 0x5000, 0x1000, CRC(404496eb) SHA1(44381e27e540fe9d8cacab4c3b1fe9a4f20d26a8) )
798 ROM_CONTINUE( 0xd000, 0x1000 )
799
800 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for first 6802 */
801 ROM_LOAD( "13snd.2g", 0xa000, 0x2000, CRC(fc05654e) SHA1(ed9c66672fe89c41e320e1d27b53f5efa92dce9c) )
802 ROM_LOAD( "9snd.1i", 0xe000, 0x2000, CRC(3dab977f) SHA1(3e79c06d2e70b050f01b7ac58be5127ba87904b0) )
803
804 ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* 64k for second 6802 */
805 ROM_LOAD( "8snd.1h", 0xa000, 0x1000, CRC(f4507111) SHA1(0513f0831b94aeda84aa4f3b4a7c60dfc5113b2d) )
806 ROM_CONTINUE( 0xe000, 0x1000 )
807 ROM_LOAD( "7snd.1g", 0xb000, 0x1000, CRC(c722eff8) SHA1(d8d1c091ab80ea2d6616e4dc030adc9905c0a496) )
808 ROM_CONTINUE( 0xf000, 0x1000 )
809
810 ROM_REGION( 0x6000, REGION_GFX1, ROMREGION_DISPOSE )
811 ROM_LOAD( "1bg.2d", 0x0000, 0x2000, CRC(9f880ef5) SHA1(0ee20fb7c794f6dafdaf2c9ee8456221c9d668c5) )
812 ROM_LOAD( "2bg.1f", 0x2000, 0x2000, CRC(afc04cd7) SHA1(f4349e86b9caee71c9bf9faf68b86603417d9a2b) )
813 ROM_LOAD( "3bg.1e", 0x4000, 0x2000, CRC(14f23cdd) SHA1(e5f3dac52288c56f2fd2940b397bb6c896131a26) )
814
815 ROM_REGION( 0x0400, REGION_PROMS, 0 )
816 ROM_LOAD( "jr-ic9g", 0x0000, 0x0200, CRC(85577107) SHA1(76575fa68b66130b18dfe7374d1a03740963cc73) )
817 ROM_LOAD( "jr-ic9f", 0x0200, 0x0200, CRC(085914d1) SHA1(3d6f9318f5a9f08ce89e4184e3efb9881f671fa7) )
818 ROM_END
819
820 ROM_START( jackrabs )
821 ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for code */
822 ROM_LOAD( "1cpu.1a", 0x0000, 0x1000, CRC(6698dc65) SHA1(33e3518846e88dc34f4b6c4e9ca9f8999c0460c8) )
823 ROM_CONTINUE( 0x8000, 0x1000 )
824 ROM_LOAD( "2cpu.1b", 0x1000, 0x1000, CRC(42b32929) SHA1(5b400d434ce903c74f58780a422a8c2594af90be) )
825 ROM_CONTINUE( 0x9000, 0x1000 )
826 ROM_LOAD( "3cpu.1c", 0x2000, 0x1000, CRC(89b50c9a) SHA1(5ab56247de013b5196c1c5765ead4361a5df53e0) )
827 ROM_CONTINUE( 0xa000, 0x1000 )
828 ROM_LOAD( "4cpu.1d", 0x3000, 0x1000, CRC(d5520665) SHA1(69b34d87d50e6d6e8d365ba0479405380ba3cf11) )
829 ROM_CONTINUE( 0xb000, 0x1000 )
830 ROM_LOAD( "5cpu.2a", 0x4000, 0x1000, CRC(0f9a093c) SHA1(7fba0d2b8d5d4d1597decec96ed93b997c721d99) )
831 ROM_CONTINUE( 0xc000, 0x1000 )
832 ROM_LOAD( "6cpu.2c", 0x5000, 0x1000, CRC(f53d6356) SHA1(9b167edca59cf81a2468368a372bab132f15e2ea) )
833 ROM_CONTINUE( 0xd000, 0x1000 )
834
835 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for first 6802 */
836 ROM_LOAD( "13snd.2g", 0xa000, 0x2000, CRC(fc05654e) SHA1(ed9c66672fe89c41e320e1d27b53f5efa92dce9c) )
837 ROM_LOAD( "9snd.1i", 0xe000, 0x2000, CRC(3dab977f) SHA1(3e79c06d2e70b050f01b7ac58be5127ba87904b0) )
838
839 ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* 64k for second 6802 */
840 ROM_LOAD( "8snd.1h", 0xa000, 0x1000, CRC(f4507111) SHA1(0513f0831b94aeda84aa4f3b4a7c60dfc5113b2d) )
841 ROM_CONTINUE( 0xe000, 0x1000 )
842 ROM_LOAD( "7snd.1g", 0xb000, 0x1000, CRC(c722eff8) SHA1(d8d1c091ab80ea2d6616e4dc030adc9905c0a496) )
843 ROM_CONTINUE( 0xf000, 0x1000 )
844
845 ROM_REGION( 0x6000, REGION_GFX1, ROMREGION_DISPOSE )
846 ROM_LOAD( "1bg.2d", 0x0000, 0x2000, CRC(9f880ef5) SHA1(0ee20fb7c794f6dafdaf2c9ee8456221c9d668c5) )
847 ROM_LOAD( "2bg.1f", 0x2000, 0x2000, CRC(afc04cd7) SHA1(f4349e86b9caee71c9bf9faf68b86603417d9a2b) )
848 ROM_LOAD( "3bg.1e", 0x4000, 0x2000, CRC(14f23cdd) SHA1(e5f3dac52288c56f2fd2940b397bb6c896131a26) )
849
850 ROM_REGION( 0x0400, REGION_PROMS, 0 )
851 ROM_LOAD( "jr-ic9g", 0x0000, 0x0200, CRC(85577107) SHA1(76575fa68b66130b18dfe7374d1a03740963cc73) )
852 ROM_LOAD( "jr-ic9f", 0x0200, 0x0200, CRC(085914d1) SHA1(3d6f9318f5a9f08ce89e4184e3efb9881f671fa7) )
853 ROM_END
854
855
856
857 GAMEX( 1983, monymony, 0, zaccaria, monymony, 0, ROT90, "Zaccaria", "Money Money", GAME_IMPERFECT_SOUND )
858 GAMEX( 1984, jackrabt, 0, zaccaria, jackrabt, 0, ROT90, "Zaccaria", "Jack Rabbit (set 1)", GAME_IMPERFECT_SOUND )
859 GAMEX( 1984, jackrab2, jackrabt, zaccaria, jackrabt, 0, ROT90, "Zaccaria", "Jack Rabbit (set 2)", GAME_IMPERFECT_SOUND )
860 GAMEX( 1984, jackrabs, jackrabt, zaccaria, jackrabt, 0, ROT90, "Zaccaria", "Jack Rabbit (special)", GAME_IMPERFECT_SOUND )
861