1 /***************************************************************************
2 
3 	Sasuke vs. Commander
4 	SNK/Rock-Ola
5 
6 	driver by ?
7 
8 	Games supported:
9 		* Sasuke vs. Commander
10 		* Satan of Saturn
11 		* Zarzon
12 		* Vanguard
13 		* Fantasy					G-202
14 		* Pioneer Balloon				G-204
15 		* Nibbler					G-208
16 
17 ****************************************************************************
18 
19 Vanguard memory map (preliminary)
20 
21 0000-03ff RAM
22 0400-07ff Video RAM 1
23 0800-0bff Video RAM 2
24 0c00-0fff Color RAM (3 bits for video RAM 1 and 3 bits for video RAM 2)
25 1000-1fff Character generator RAM
26 4000-bfff ROM
27 
28 read:
29 3104      IN0
30 3105      IN1
31 3106      DSW ??
32 3107      IN2
33 
34 write
35 3100      Sound Port 0
36 3101      Sound Port 1
37 3103      bit 7 = flip screen
38 3200      y scroll register
39 3300      x scroll register
40 
41 ****************************************************************************
42 
43 Fantasy and Nibbler memory map (preliminary)
44 
45 0000-03ff RAM
46 0400-07ff Video RAM 1
47 0800-0bff Video RAM 2
48 0c00-0fff Color RAM (3 bits for video RAM 1 and 3 bits for video RAM 2)
49 1000-1fff Character generator RAM
50 3000-bfff ROM
51 
52 read:
53 2104      IN0
54 2105      IN1
55 2106      DSW
56 2107      IN2
57 
58 write
59 2000-2001 To the HD46505S video controller
60 2100      Sound Port 0
61 2101      Sound Port 1
62 2103      bit 7 = flip screen
63           bit 4-6 = music 2
64           bit 3 = char bank selector
65           bit 0-2 = background color
66 2200      y scroll register
67 2300      x scroll register
68 
69 Interrupts: VBlank causes an IRQ. Coin insertion causes a NMI.
70 
71 ****************************************************************************
72 
73 Pioneer Balloon memory map (preliminary)
74 
75 0000-03ff RAM		   IC13 cpu
76 0400-07ff Video RAM 1  IC67 video
77 0800-0bff Video RAM 2  ???? video
78 0c00-0fff Color RAM    IC68 (3 bits for VRAM 1 and 3 bits for VRAM 2)
79 1000-1fff RAM		   ???? Character generator
80 3000-3fff ROM 4/5	   IC12
81 4000-4fff ROM 1 	   IC07
82 5000-5fff ROM 2 	   IC08
83 6000-6fff ROM 3 	   IC09
84 7000-7fff ROM 4 	   IC10
85 8000-8fff ROM 5 	   IC14
86 9000-9fff ROM 6 	   IC15
87 read:
88 b104	  IN0
89 b105	  IN1
90 b106	  DSW
91 b107	  IN2
92 
93 write
94 b000	  Sound Port 0
95 b001	  Sound Port 1
96 b100	  ????
97 b103	  bit 7 = flip screen
98           bit 4-6 = music 2
99           bit 3 = char bank selector
100           bit 0-2 = background color
101 b106	  ????
102 b200	  y scroll register
103 b300	  x scroll register
104 
105 Interrupts: VBlank causes an IRQ. Coin insertion causes a NMI.
106 
107 ***************************************************************************/
108 
109 /*
110 
111 	TODO:
112 
113 	- music freq (Satan of Saturn and clone)
114 	- correct music waveform/volume control
115 	- clean up dips/inputs for all games
116 	- correct ROM names
117 	- fantasy is German? (the continue text is in German)
118 
119 */
120 
121 
122 #include "driver.h"
123 #include "cpu/m6502/m6502.h"
124 #include "vidhrdw/generic.h"
125 #include "vidhrdw/crtc6845.h"
126 #include "machine/random.h"
127 
128 #ifndef M_LN2
129 #define M_LN2		0.69314718055994530942
130 #endif
131 
132 
133 /* vidhrdw */
134 
135 extern UINT8 *rockola_videoram2;
136 extern UINT8 *rockola_charram;
137 
138 extern WRITE_HANDLER( rockola_videoram_w );
139 extern WRITE_HANDLER( rockola_videoram2_w );
140 extern WRITE_HANDLER( rockola_colorram_w );
141 extern WRITE_HANDLER( rockola_charram_w );
142 extern WRITE_HANDLER( rockola_flipscreen_w );
143 extern WRITE_HANDLER( rockola_scrollx_w );
144 extern WRITE_HANDLER( rockola_scrolly_w );
145 
146 extern PALETTE_INIT( rockola );
147 extern VIDEO_START( rockola );
148 extern VIDEO_UPDATE( rockola );
149 
150 extern WRITE_HANDLER( satansat_charram_w );
151 extern WRITE_HANDLER( satansat_b002_w );
152 extern WRITE_HANDLER( satansat_backcolor_w );
153 
154 extern PALETTE_INIT( satansat );
155 extern VIDEO_START( satansat );
156 
157 /* sndhrdw */
158 
159 extern const char *sasuke_sample_names[];
160 extern const char *vanguard_sample_names[];
161 extern const char *fantasy_sample_names[];
162 
163 extern WRITE_HANDLER( sasuke_sound_w );
164 extern WRITE_HANDLER( satansat_sound_w );
165 extern WRITE_HANDLER( vanguard_sound_w );
166 extern WRITE_HANDLER( vanguard_speech_w );
167 extern WRITE_HANDLER( fantasy_sound_w );
168 extern WRITE_HANDLER( fantasy_speech_w );
169 
170 int rockola_sh_start(const struct MachineSound *msound);
171 void rockola_set_music_clock(double clock_time);
172 void rockola_set_music_freq(int freq);
173 int rockola_music0_playing(void);
174 
175 
176 /* binary counter (1.4MHz update) */
177 static data8_t sasuke_counter;
178 static void *sasuke_timer;
179 
sasuke_update_counter(int param)180 static void sasuke_update_counter(int param)
181 {
182 	sasuke_counter += 0x10;
183 }
184 
sasuke_start_counter(void)185 static void sasuke_start_counter(void)
186 {
187 	sasuke_counter = 0;
188 
189 	sasuke_timer = timer_alloc(sasuke_update_counter);
190 	timer_adjust(sasuke_timer, TIME_NOW, 0, TIME_IN_HZ(11289000/8));	/* 1.4 MHz*/
191 }
192 
193 
194 /* IN1 + music0 playing */
READ_HANDLER(sasuke_port_1_r)195 static READ_HANDLER( sasuke_port_1_r )
196 {
197 	return readinputport(1) | (rockola_music0_playing() ? 0x80 : 0x00);
198 }
199 
200 /* IN2 + binary counter */
READ_HANDLER(sasuke_port_3_r)201 static READ_HANDLER( sasuke_port_3_r )
202 {
203 	return readinputport(3) | sasuke_counter;
204 }
205 
206 /* IN2 + music0 playing */
READ_HANDLER(vanguard_port_3_r)207 static READ_HANDLER( vanguard_port_3_r )
208 {
209 	return readinputport(3) | (rockola_music0_playing() ? 0x10 : 0x00);
210 }
211 
212 
213 /* Memory Maps */
214 
215 
MEMORY_READ_START(satansat_readmem)216 static MEMORY_READ_START( satansat_readmem )
217 	{ 0x0000, 0x1fff, MRA_RAM },
218 	{ 0x4000, 0x97ff, MRA_ROM },
219 	{ 0xb004, 0xb004, input_port_0_r },	/* IN0*/
220 	{ 0xb005, 0xb005, sasuke_port_1_r },	/* IN1 + music0 playing*/
221 	{ 0xb006, 0xb006, input_port_2_r },	/* DSW */
222 	{ 0xb007, 0xb007, sasuke_port_3_r },	/* IN2 + binary counter*/
223 	{ 0xf800, 0xffff, MRA_ROM },
224 MEMORY_END
225 
226 static MEMORY_WRITE_START( satansat_writemem )
227 	{ 0x0000, 0x03ff, MWA_RAM },
228 	{ 0x0400, 0x07ff, rockola_videoram2_w, &rockola_videoram2 },
229 	{ 0x0800, 0x0bff, rockola_videoram_w, &videoram },
230 	{ 0x0c00, 0x0fff, rockola_colorram_w, &colorram },
231 	{ 0x1000, 0x1fff, rockola_charram_w, &rockola_charram },
232 	{ 0x4000, 0x97ff, MWA_ROM },
233 	{ 0x3000, 0x3000, crtc6845_address_w },
234 	{ 0x3001, 0x3001, crtc6845_register_w },
235 	{ 0xb000, 0xb001, satansat_sound_w },
236 	{ 0xb002, 0xb002, satansat_b002_w },	/* flip screen & irq enable */
237 	{ 0xb003, 0xb003, satansat_backcolor_w },
238 MEMORY_END
239 
240 static MEMORY_WRITE_START( sasuke_writemem )
241 	{ 0x0000, 0x03ff, MWA_RAM },
242 	{ 0x0400, 0x07ff, rockola_videoram2_w, &rockola_videoram2 },
243 	{ 0x0800, 0x0bff, rockola_videoram_w, &videoram },
244 	{ 0x0c00, 0x0fff, rockola_colorram_w, &colorram },
245 	{ 0x1000, 0x1fff, rockola_charram_w, &rockola_charram },
246 	{ 0x4000, 0x97ff, MWA_ROM },
247 	{ 0x3000, 0x3000, crtc6845_address_w },
248 	{ 0x3001, 0x3001, crtc6845_register_w },
249 	{ 0xb000, 0xb001, sasuke_sound_w },
250 	{ 0xb002, 0xb002, satansat_b002_w },	/* flip screen & irq enable */
251 	{ 0xb003, 0xb003, satansat_backcolor_w },
252 MEMORY_END
253 
254 static MEMORY_READ_START( vanguard_readmem )
255 	{ 0x0000, 0x1fff, MRA_RAM },
256 	{ 0x3104, 0x3104, input_port_0_r },	/* IN0*/
257 	{ 0x3105, 0x3105, input_port_1_r },	/* IN1*/
258 	{ 0x3106, 0x3106, input_port_2_r },	/* DSW */
259 	{ 0x3107, 0x3107, vanguard_port_3_r },	/* IN2 + music0 playing*/
260 	{ 0x4000, 0xbfff, MRA_ROM },
261 	{ 0xf000, 0xffff, MRA_ROM },	/* for the reset / interrupt vectors */
262 MEMORY_END
263 
264 static MEMORY_WRITE_START( vanguard_writemem )
265 	{ 0x0000, 0x03ff, MWA_RAM },
266 	{ 0x0400, 0x07ff, rockola_videoram2_w, &rockola_videoram2 },
267 	{ 0x0800, 0x0bff, rockola_videoram_w, &videoram },
268 	{ 0x0c00, 0x0fff, rockola_colorram_w, &colorram },
269 	{ 0x1000, 0x1fff, rockola_charram_w, &rockola_charram },
270 	{ 0x3000, 0x3000, crtc6845_address_w },
271 	{ 0x3001, 0x3001, crtc6845_register_w },
272 	{ 0x3100, 0x3102, vanguard_sound_w },
273 	{ 0x3103, 0x3103, rockola_flipscreen_w },
274 	{ 0x3200, 0x3200, rockola_scrollx_w },
275 	{ 0x3300, 0x3300, rockola_scrolly_w },
276 	{ 0x3400, 0x3400, vanguard_speech_w },	/* speech*/
277 	{ 0x4000, 0xbfff, MWA_ROM },
278 MEMORY_END
279 
280 static MEMORY_READ_START( fantasy_readmem )
281 	{ 0x0000, 0x1fff, MRA_RAM },
282 	{ 0x2104, 0x2104, input_port_0_r },	/* IN0 */
283 	{ 0x2105, 0x2105, input_port_1_r },	/* IN1 */
284 	{ 0x2106, 0x2106, input_port_2_r },	/* DSW */
285 	{ 0x2107, 0x2107, input_port_3_r },	/* IN2 */
286 	{ 0x3000, 0xbfff, MRA_ROM },
287 	{ 0xfffa, 0xffff, MRA_ROM },
288 MEMORY_END
289 
290 static MEMORY_WRITE_START( fantasy_writemem )
291 	{ 0x0000, 0x03ff, MWA_RAM },
292 	{ 0x0400, 0x07ff, rockola_videoram2_w, &rockola_videoram2 },
293 	{ 0x0800, 0x0bff, rockola_videoram_w, &videoram },
294 	{ 0x0c00, 0x0fff, rockola_colorram_w, &colorram },
295 	{ 0x1000, 0x1fff, rockola_charram_w, &rockola_charram },
296 	{ 0x2000, 0x2000, crtc6845_address_w },
297 	{ 0x2001, 0x2001, crtc6845_register_w },
298 	{ 0x2100, 0x2103, fantasy_sound_w },
299 	{ 0x2200, 0x2200, rockola_scrollx_w },
300 	{ 0x2300, 0x2300, rockola_scrolly_w },
301 	{ 0x2400, 0x2400, fantasy_speech_w },	/* speech*/
302 	{ 0x3000, 0xbfff, MWA_ROM },
303 MEMORY_END
304 
305 static MEMORY_READ_START( pballoon_readmem )
306 	{ 0x0000, 0x1fff, MRA_RAM },
307 	{ 0x3000, 0x9fff, MRA_ROM },
308 	{ 0xb104, 0xb104, input_port_0_r },	/* IN0 */
309 	{ 0xb105, 0xb105, input_port_1_r },	/* IN1 */
310 	{ 0xb106, 0xb106, input_port_2_r },	/* DSW */
311 	{ 0xb107, 0xb107, input_port_3_r },	/* IN2 */
312 	{ 0xfffa, 0xffff, MRA_ROM },
313 MEMORY_END
314 
315 static MEMORY_WRITE_START( pballoon_writemem )
316 	{ 0x0000, 0x03ff, MWA_RAM },
317 	{ 0x0400, 0x07ff, rockola_videoram2_w, &rockola_videoram2 },
318 	{ 0x0800, 0x0bff, rockola_videoram_w, &videoram },
319 	{ 0x0c00, 0x0fff, rockola_colorram_w, &colorram },
320 	{ 0x1000, 0x1fff, rockola_charram_w, &rockola_charram },
321 	{ 0x3000, 0x9fff, MWA_ROM },
322 	{ 0xb000, 0xb000, crtc6845_address_w },
323 	{ 0xb001, 0xb001, crtc6845_register_w },
324 	{ 0xb100, 0xb103, fantasy_sound_w },
325 	{ 0xb200, 0xb200, rockola_scrollx_w },
326 	{ 0xb300, 0xb300, rockola_scrolly_w },
327 MEMORY_END
328 
329 /* Input Ports */
330 
331 /* Derived from Zarzon. Might not reflect the actual hardware. */
332 INPUT_PORTS_START( sasuke )
333     PORT_START  /* IN0*/
334     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
335     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
336     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
337     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_COCKTAIL )
338     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL )
339     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
340     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
341     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
342 
343 	PORT_START	/* IN1*/
344     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
345     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
346     PORT_BIT( 0x7C, IP_ACTIVE_HIGH, IPT_UNKNOWN )
347     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
348 
349     PORT_START  /* DSW */
350 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
351 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ))
352 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
353 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Coinage ) )
354 	PORT_DIPSETTING (   0x00, DEF_STR( 1C_1C ) )
355 	PORT_DIPSETTING (   0x02, DEF_STR( 1C_2C ) )
356 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
357 	PORT_DIPSETTING (   0x00, DEF_STR( Off ) )
358 	PORT_DIPSETTING (   0x04, DEF_STR( On ) )
359 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
360 	PORT_DIPSETTING (   0x00, DEF_STR( Off ) )
361 	PORT_DIPSETTING (   0x08, DEF_STR( On ) )
362 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
363 	PORT_DIPSETTING (   0x00, "3" )
364 	PORT_DIPSETTING (   0x10, "4" )
365 	PORT_DIPSETTING (   0x20, "5" )
366 	/* 0x30 gives 3 again */
367 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
368 	PORT_DIPSETTING (   0x00, DEF_STR( Off ) )
369 	PORT_DIPSETTING (   0x40, DEF_STR( On ) )
370 	PORT_DIPNAME( 0x80, 0x00, "RAM Test" )
371 	PORT_DIPSETTING (   0x00, DEF_STR( Off ) )
372 	PORT_DIPSETTING (   0x80, DEF_STR( On ) )
373 
374 	PORT_START  /* IN2*/
375 	PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
376 	PORT_BIT( 0x0e, IP_ACTIVE_LOW, IPT_UNUSED )
377 	PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* connected to a counter - random number generator? */
378 INPUT_PORTS_END
379 
380 INPUT_PORTS_START( satansat )
381     PORT_START  /* IN0*/
382     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
383     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
384     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
385     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_COCKTAIL )
386     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL )
387     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
388     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 )
389     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_COCKTAIL )
390 
391 	PORT_START	/* IN1*/
392     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
393     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
394     PORT_BIT( 0x7C, IP_ACTIVE_HIGH, IPT_UNKNOWN )
395     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
396 
397     PORT_START  /* DSW */
398 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
399 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ))
400 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
401 	PORT_DIPNAME( 0x0a, 0x00, DEF_STR( Coinage ) )
402 	PORT_DIPSETTING (   0x08, DEF_STR( 2C_1C ) )
403 	PORT_DIPSETTING (   0x00, DEF_STR( 1C_1C ) )
404 	PORT_DIPSETTING (   0x02, DEF_STR( 1C_2C ) )
405 	/* 0x0a gives 2/1 again */
406 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Bonus_Life ) )
407 	PORT_DIPSETTING (   0x00, "5000" )
408 	PORT_DIPSETTING (   0x04, "10000" )
409 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
410 	PORT_DIPSETTING (   0x00, "3" )
411 	PORT_DIPSETTING (   0x10, "4" )
412 	PORT_DIPSETTING (   0x20, "5" )
413 	/* 0x30 gives 3 again */
414 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
415 	PORT_DIPSETTING (   0x00, DEF_STR( Off ) )
416 	PORT_DIPSETTING (   0x40, DEF_STR( On ) )
417 	PORT_DIPNAME( 0x80, 0x00, "RAM Test" )
418 	PORT_DIPSETTING (   0x00, DEF_STR( Off ) )
419 	PORT_DIPSETTING (   0x80, DEF_STR( On ) )
420 
421 	PORT_START  /* IN2*/
422 	PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
423 	PORT_BIT( 0x0e, IP_ACTIVE_LOW, IPT_UNUSED )
424 	PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* connected to a counter - random number generator? */
425 INPUT_PORTS_END
426 
427 INPUT_PORTS_START( vanguard )
428 	PORT_START	/* IN0*/
429 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 )
430 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON4 )
431 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 )
432 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
433 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
434 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
435 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
436 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
437 
438 	PORT_START	/* IN1*/
439 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 | IPF_COCKTAIL )
440 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON4 | IPF_COCKTAIL )
441 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_COCKTAIL )
442 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
443 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
444 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
445 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
446 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
447 
448 	PORT_START	/* DSW0*/
449 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
450 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
451 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
452 	PORT_DIPNAME( 0x4e, 0x02, DEF_STR( Coinage ) )
453 	PORT_DIPSETTING(    0x42, DEF_STR( 2C_1C ) )
454 	PORT_DIPSETTING(    0x02, "1 Coin/1 Credit 2/3" )
455 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
456 	PORT_DIPSETTING(    0x48, "1 Coin/2 Credits 2/5" )
457 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_3C ) )
458 	PORT_DIPSETTING(    0x44, "1 Coin/3 Credits 2/7" )
459 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
460 	PORT_DIPSETTING(    0x4c, "1 Coin/6 Credits 2/13" )
461 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_7C ) )
462 /*
463 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
464 	PORT_DIPSETTING(    0x0a, DEF_STR( 1C_2C ) )
465 	PORT_DIPSETTING(    0x0e, DEF_STR( 1C_2C ) )
466 	PORT_DIPSETTING(    0x40, "1 Coin/1 Credit + Bonus" )
467 	PORT_DIPSETTING(    0x46, "1 Coin/1 Credit + Bonus" )
468 	PORT_DIPSETTING(    0x4a, "1 Coin/1 Credit + Bonus" )
469 	PORT_DIPSETTING(    0x4e, "1 Coin/1 Credit + Bonus" )
470 */
471 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
472 	PORT_DIPSETTING(    0x00, "3" )
473 	PORT_DIPSETTING(    0x10, "4" )
474 	PORT_DIPSETTING(    0x20, "5" )
475 /*	PORT_DIPSETTING(    0x30, "3" ) */
476 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
477 
478 	PORT_START	/* IN2*/
479 	PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN2, 1 )
480 	PORT_BIT_IMPULSE( 0x02, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
481 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
482 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
483 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
484 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
485 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
486 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 )
487 INPUT_PORTS_END
488 
489 INPUT_PORTS_START( fantasy )
490 	PORT_START	/* IN0*/
491 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
492 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
493 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
494 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
495 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY)
496 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY)
497 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
498 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
499 
500 	PORT_START	/* IN1*/
501 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
502 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
503 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
504 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
505 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
506 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
507 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
508 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
509 
510 	PORT_START	/* DSW0*/
511 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
512 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
513 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
514 	PORT_DIPNAME( 0x4e, 0x02, DEF_STR( Coinage ) )
515 	PORT_DIPSETTING(    0x42, DEF_STR( 2C_1C ) )
516 	PORT_DIPSETTING(    0x02, "1 Coin/1 Credit 2/3" )
517 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
518 	PORT_DIPSETTING(    0x48, "1 Coin/2 Credits 2/5" )
519 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_3C ) )
520 	PORT_DIPSETTING(    0x44, "1 Coin/3 Credits 2/7" )
521 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
522 	PORT_DIPSETTING(    0x4c, "1 Coin/6 Credits 2/13" )
523 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_7C ) )
524 /*
525 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
526 	PORT_DIPSETTING(    0x0a, DEF_STR( 1C_2C ) )
527 	PORT_DIPSETTING(    0x0e, DEF_STR( 1C_2C ) )
528 	PORT_DIPSETTING(    0x40, "1 Coin/1 Credit + Bonus" )
529 	PORT_DIPSETTING(    0x46, "1 Coin/1 Credit + Bonus" )
530 	PORT_DIPSETTING(    0x4a, "1 Coin/1 Credit + Bonus" )
531 	PORT_DIPSETTING(    0x4e, "1 Coin/1 Credit + Bonus" )
532 */
533 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
534 	PORT_DIPSETTING(    0x00, "3" )
535 	PORT_DIPSETTING(    0x10, "4" )
536 	PORT_DIPSETTING(    0x20, "5" )
537 /*	PORT_DIPSETTING(    0x30, "3" ) */
538 	PORT_DIPNAME( 0x80, 0x00, "Allow Continue" )
539 	PORT_DIPSETTING(    0x80, DEF_STR( No ) )
540 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
541 
542 	PORT_START	/* IN2*/
543 	PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN2, 1 )
544 	PORT_BIT_IMPULSE( 0x02, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
545 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
546 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
547 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
548 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
549 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
550 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 )
551 INPUT_PORTS_END
552 
553 INPUT_PORTS_START( nibbler )
554 	PORT_START	/* IN0*/
555 	PORT_BITX(0x01, IP_ACTIVE_HIGH, IPT_SERVICE, "Debug 0", KEYCODE_Z, CODE_NONE ) /* slow down*/
556 	PORT_BITX(0x02, IP_ACTIVE_HIGH, IPT_SERVICE, "Debug 1", KEYCODE_X, CODE_NONE )
557 	PORT_BITX(0x04, IP_ACTIVE_HIGH, IPT_SERVICE, "Debug 2", KEYCODE_C, CODE_NONE )
558 	PORT_BITX(0x08, IP_ACTIVE_HIGH, IPT_SERVICE, "Debug 3", KEYCODE_V, CODE_NONE )
559 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY)
560 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY)
561 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
562 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
563 
564 	PORT_START	/* IN1*/
565 	PORT_BITX(0x01, IP_ACTIVE_HIGH, IPT_SERVICE, "Debug 4", KEYCODE_B, CODE_NONE ) /* pause*/
566 	PORT_BITX(0x02, IP_ACTIVE_HIGH, IPT_SERVICE, "Debug 5", KEYCODE_N, CODE_NONE ) /* unpause*/
567 	PORT_BITX(0x04, IP_ACTIVE_HIGH, IPT_SERVICE, "Debug 6", KEYCODE_M, CODE_NONE ) /* end game*/
568 	PORT_BITX(0x08, IP_ACTIVE_HIGH, IPT_SERVICE, "Debug 7", KEYCODE_K, CODE_NONE )
569 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
570 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
571 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
572 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
573 
574 	PORT_START	/* DSW0*/
575 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
576 	PORT_DIPSETTING(    0x00, "3" )
577 	PORT_DIPSETTING(    0x01, "4" )
578 	PORT_DIPSETTING(    0x02, "5" )
579 	PORT_DIPSETTING(    0x03, "6" )
580 	PORT_DIPNAME( 0x04, 0x00, "Pause at Corners" )
581 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
582 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
583 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
584 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
585 	PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
586 	PORT_SERVICE( 0x10, IP_ACTIVE_HIGH )
587 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Free_Play ) )
588 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
589 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
590 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coinage ) )
591 	PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
592 	PORT_DIPSETTING(    0xc0, DEF_STR( 4C_3C ) )
593 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
594 	PORT_DIPSETTING(    0x80, DEF_STR( 2C_3C ) )
595 
596 	PORT_START	/* IN2*/
597 	PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN2, 1 )
598 	PORT_BIT_IMPULSE( 0x02, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
599 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
600 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
601 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
602 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
603 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
604 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 )
605 INPUT_PORTS_END
606 
607 INPUT_PORTS_START( pballoon )
608 	PORT_START	/* IN0*/
609 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
610 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
611 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
612 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
613 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
614 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
615 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
616 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
617 
618 	PORT_START	/* IN1*/
619 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
620 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
621 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
622 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
623 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
624 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
625 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
626 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
627 
628 	PORT_START	/* DSW0*/
629 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
630 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
631 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
632 	PORT_DIPNAME( 0x4e, 0x02, DEF_STR( Coinage ) )
633 	PORT_DIPSETTING(    0x42, DEF_STR( 2C_1C ) )
634 	PORT_DIPSETTING(    0x02, "1 Coin/1 Credit 2/3" )
635 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
636 	PORT_DIPSETTING(    0x48, "1 Coin/2 Credits 2/5" )
637 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_3C ) )
638 	PORT_DIPSETTING(    0x44, "1 Coin/3 Credits 2/7" )
639 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
640 	PORT_DIPSETTING(    0x4c, "1 Coin/6 Credits 2/11" )
641 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_7C ) )
642 /*
643 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
644 	PORT_DIPSETTING(    0x0a, DEF_STR( 1C_2C ) )
645 	PORT_DIPSETTING(    0x0e, DEF_STR( 1C_2C ) )
646 	PORT_DIPSETTING(    0x40, "1 Coin/1 Credit + Bonus" )
647 	PORT_DIPSETTING(    0x46, "1 Coin/1 Credit + Bonus" )
648 	PORT_DIPSETTING(    0x4a, "1 Coin/1 Credit + Bonus" )
649 	PORT_DIPSETTING(    0x4e, "1 Coin/1 Credit + Bonus" )
650 */
651 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
652 	PORT_DIPSETTING(    0x00, "3" )
653 	PORT_DIPSETTING(    0x10, "4" )
654 	PORT_DIPSETTING(    0x20, "5" )
655 /*	PORT_DIPSETTING(    0x30, "3" ) */
656 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
657 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
658 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
659 
660 	PORT_START	/* IN2*/
661 	PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN2, 1 )
662 	PORT_BIT_IMPULSE( 0x02, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
663 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
664 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
665 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
666 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
667 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
668 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 )
669 INPUT_PORTS_END
670 
671 /* Graphics Layouts */
672 
673 static struct GfxLayout swapcharlayout =
674 {
675 	8,8,    /* 8*8 characters */
676 	256,	/* 256 characters */
677 	2,      /* 2 bits per pixel */
678 	{ 256*8*8, 0 }, /* the two bitplanes are separated */
679 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
680 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
681 	8*8     /* every char takes 8 consecutive bytes */
682 };
683 
684 static struct GfxLayout charlayout =
685 {
686 	8,8,    /* 8*8 characters */
687 	RGN_FRAC(1,2),
688 	2,      /* 2 bits per pixel */
689 	{ 0, RGN_FRAC(1,2) }, /* the two bitplanes are separated */
690 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
691 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
692 	8*8     /* every char takes 8 consecutive bytes */
693 };
694 
695 static struct GfxLayout charlayout_memory =
696 {
697 	8,8,    /* 8*8 characters */
698 	256,	/* 256 characters */
699 	2,      /* 2 bits per pixel */
700 	{ 0, 256*8*8 }, /* the two bitplanes are separated */
701 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
702 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
703 	8*8     /* every char takes 8 consecutive bytes */
704 };
705 
706 /* Graphics Decode Information */
707 
708 static struct GfxDecodeInfo sasuke_gfxdecodeinfo[] =
709 {
710 	{ 0,           0x1000, &swapcharlayout,      0, 4 },	/* the game dynamically modifies this */
711 	{ REGION_GFX1, 0x0000, &swapcharlayout,    4*4, 4 },
712 	{ -1 }
713 };
714 
715 static struct GfxDecodeInfo satansat_gfxdecodeinfo[] =
716 {
717 	{ 0,           0x1000, &charlayout_memory,   0, 4 },	/* the game dynamically modifies this */
718 	{ REGION_GFX1, 0x0000, &charlayout,        4*4, 4 },
719 	{ -1 }
720 };
721 
722 static struct GfxDecodeInfo vanguard_gfxdecodeinfo[] =
723 {
724 	{ 0,           0x1000, &charlayout_memory,   0, 8 },	/* the game dynamically modifies this */
725 	{ REGION_GFX1, 0x0000, &charlayout,        8*4, 8 },
726 	{ -1 }
727 };
728 
729 /* Sound Interfaces */
730 
731 static struct CustomSound_interface custom_interface =
732 {
733 	rockola_sh_start,
734 	0,
735 	0
736 };
737 
738 static struct Samplesinterface sasuke_samples_interface =
739 {
740 	4,	/* 4 channels */
741 	12,	/* volume */
742 	sasuke_sample_names
743 };
744 
745 static struct Samplesinterface vanguard_samples_interface =
746 {
747 	3,	/* 3 channel */
748 	25,	/* volume */
749 	vanguard_sample_names
750 };
751 
752 static struct Samplesinterface fantasy_samples_interface =
753 {
754 	1,	/* 1 channel */
755 	25,	/* volume */
756 	fantasy_sample_names
757 };
758 
759 
760 static struct SN76477interface sasuke_sn76477_intf =
761 {
762 	3,							/* 3 chips (ic48, ic51, ic52) */
763 	{ 50,		50,		50 },	/* mixing level   pin  description */
764 	{ RES_K(470),	RES_K(340),	RES_K(330) },		/*  4  noise_res	 */
765 	{ RES_K(150),	RES_K(47),	RES_K(47) },		/*  5  filter_res	 */
766 	{ CAP_P(4700),	CAP_P(100),	CAP_P(100) },		/*  6  filter_cap	 */
767 	{ RES_K(22),	RES_K(470),	RES_K(1) },		/*  7  decay_res	 */
768 	{ CAP_U(10),	CAP_U(4.7),	0 /* NC */ },		/*  8  attack_decay_cap	 */
769 	{ RES_K(10),	RES_K(10),	RES_K(1) },		/* 10  attack_res	 */
770 	{ RES_K(100),	RES_K(100),	RES_K(100) },		/* 11  amplitude_res	 */
771 	{ RES_K(47),	RES_K(47),	RES_K(47) },		/* 12  feedback_res 	 */
772 	{ 0 /* NC */,	0 /* NC */,	0 /* NC */ },		/* 16  vco_voltage	 */
773 	{ 0 /* NC */,	CAP_P(220),	CAP_P(1000) },		/* 17  vco_cap		 */
774 	{ 0 /* NC */,	RES_K(1000),	RES_K(1000) },		/* 18  vco_res		 */
775 	{ 0 /* NC */,	0 /* NC */,	0 /* NC */ },		/* 19  pitch_voltage	 */
776 	{ RES_K(10),	RES_K(220),	RES_K(10) },		/* 20  slf_res		 */
777 	{ 0 /* NC */,	0 /* NC */,	CAP_U(1) },		/* 21  slf_cap		 */
778 	{ CAP_U(2.2),	CAP_U(22),	CAP_U(2.2) },		/* 23  oneshot_cap	 */
779 	{ RES_K(100),	RES_K(47),	RES_K(150) },		/* 24  oneshot_res	 */
780 
781 	/* ic48		GND: 2,22,26,27,28	+5V: 1,15,25*/
782 	/* ic51		GND: 2,26,27		+5V: 1,15,22,25,28*/
783 	/* ic52		GND: 2,22,27,28		+5V: 1,15,25,26*/
784 };
785 
786 static struct SN76477interface satansat_sn76477_intf =
787 {
788 	1,					/* 1 chip */
789 	{ 100 },		/* mixing level   pin description */
790 	{ RES_K(470) },				/*  4  noise_res	 */
791 	{ RES_M(1.5) },				/*  5  filter_res	 */
792 	{ CAP_P(220) },				/*  6  filter_cap	 */
793 	{ 0 },					/*  7  decay_res	 */
794 	{ 0 },					/*  8  attack_decay_cap	 */
795 	{ 0 },					/* 10  attack_res	 */
796 	{ RES_K(47) },				/* 11  amplitude_res	 */
797 	{ RES_K(47) },				/* 12  feedback_res 	 */
798 	{ 0 },					/* 16  vco_voltage	 */
799 	{ 0 },					/* 17  vco_cap		 */
800 	{ 0 },					/* 18  vco_res		 */
801 	{ 0 },					/* 19  pitch_voltage	 */
802 	{ 0 },					/* 20  slf_res		 */
803 	{ 0 },					/* 21  slf_cap		 */
804 	{ 0 },					/* 23  oneshot_cap	 */
805 	{ 0 }					/* 24  oneshot_res	 */
806 
807 	/* ???		GND: 2,26,27		+5V: 15,25*/
808 };
809 
810 static struct SN76477interface vanguard_sn76477_intf =
811 {
812 	2,					/* 2 chips */
813 	{ 50,		25 },	/* mixing level   pin description */
814 	{ RES_K(470),	RES_K(10) },		/*  4  noise_res	 */
815 	{ RES_M(1.5),	RES_K(30) },		/*  5  filter_res	 */
816 	{ CAP_P(220),	0 },			/*  6  filter_cap	 */
817 	{ 0,			0 },		/*  7  decay_res	 */
818 	{ 0,			0 },		/*  8  attack_decay_cap  */
819 	{ 0,			0 },		/* 10  attack_res	 */
820 	{ RES_K(47),	RES_K(47) },		/* 11  amplitude_res	 */
821 	{ RES_K(4.7),	RES_K(4.7) },		/* 12  feedback_res 	 */
822 	{ 0,			0 },		/* 16  vco_voltage	 */
823 	{ 0,			0 },		/* 17  vco_cap		 */
824 	{ 0,			0 },		/* 18  vco_res		 */
825 	{ 0,			0 },		/* 19  pitch_voltage	 */
826 	{ 0,			0 },		/* 20  slf_res		 */
827 	{ 0,			0 },		/* 21  slf_cap		 */
828 	{ 0,			0 },		/* 23  oneshot_cap	 */
829 	{ 0,			0 }		/* 24  oneshot_res	 */
830 
831 	/* SHOT A	GND: 2,9,26,27	+5V: 15,25*/
832 	/* SHOT B	GND: 1,2,26,27	+5V: 15,25,28*/
833 };
834 
835 static struct SN76477interface fantasy_sn76477_intf =
836 {
837 	1,				/* 1 chip */
838 	{ 100 },	/* mixing level   pin description */
839 	{ RES_K(470) },			/*  4  noise_res	 */
840 	{ RES_M(1.5) },			/*  5  filter_res	 */
841 	{ CAP_P(220) },			/*  6  filter_cap	 */
842 	{ 0 },				/*  7  decay_res	 */
843 	{ 0 },				/*  8  attack_decay_cap  */
844 	{ 0 },				/* 10  attack_res	 */
845 	{ RES_K(470) },			/* 11  amplitude_res	 */
846 	{ RES_K(4.7) },			/* 12  feedback_res 	 */
847 	{ 0 },				/* 16  vco_voltage	 */
848 	{ 0 },				/* 17  vco_cap		 */
849 	{ 0 },				/* 18  vco_res		 */
850 	{ 0 },				/* 19  pitch_voltage	 */
851 	{ 0 },				/* 20  slf_res		 */
852 	{ 0 },				/* 21  slf_cap		 */
853 	{ 0 },				/* 23  oneshot_cap	 */
854 	{ 0 }				/* 24  oneshot_res	 */
855 
856 	/* BOMB		GND:	2,9,26,27		+5V: 15,25*/
857 };
858 
859 /* Interrupt Generators */
860 
INTERRUPT_GEN(satansat_interrupt)861 static INTERRUPT_GEN( satansat_interrupt )
862 {
863 	if (cpu_getiloops() != 0)
864 	{
865 		data8_t val = readinputport(3);
866 
867 		coin_counter_w(0, val & 1);
868 
869 		/* user asks to insert coin: generate a NMI interrupt. */
870 		if (val & 0x01)
871 		    cpu_set_irq_line(0, IRQ_LINE_NMI, PULSE_LINE);
872 	}
873 	else
874 	    cpu_set_irq_line(0, M6502_IRQ_LINE, HOLD_LINE);	/* one IRQ per frame */
875 }
876 
INTERRUPT_GEN(rockola_interrupt)877 static INTERRUPT_GEN( rockola_interrupt )
878 {
879 	if (cpu_getiloops() != 0)
880 	{
881 		data8_t val = readinputport(3);
882 
883 		coin_counter_w(0, val & 1);
884 		coin_counter_w(1, val & 2);
885 
886 		/* user asks to insert coin: generate a NMI interrupt. */
887 		if (val & 0x03)
888 		    cpu_set_irq_line(0, IRQ_LINE_NMI, PULSE_LINE);
889 	}
890 	else
891 		cpu_set_irq_line(0, M6502_IRQ_LINE, HOLD_LINE);	/* one IRQ per frame */
892 }
893 
894 /* Machine Initialization */
895 
MACHINE_INIT(sasuke)896 static MACHINE_INIT( sasuke )
897 {
898 	/*rockola_set_music_clock(M_LN2 * (RES_K(1) + RES_K(10) * 2) * CAP_U(1));*/
899 	/* adjusted*/
900 	rockola_set_music_clock(1 / 72.1);
901 
902 	/* adjusted*/
903 	rockola_set_music_freq(38000);
904 
905 	/* ic48*/
906 	SN76477_envelope_1_w(0, 1);	/* pin 1*/
907 	SN76477_envelope_2_w(0, 0);	/* pin 28*/
908 	SN76477_vco_w(0, 0);		/* pin 22*/
909 	SN76477_mixer_a_w(0, 0);	/* pin 26*/
910 	SN76477_mixer_b_w(0, 1);	/* pin 25*/
911 	SN76477_mixer_c_w(0, 0);	/* pin 27*/
912 
913 	/* ic51*/
914 	SN76477_envelope_1_w(1, 1);	/* pin 1*/
915 	SN76477_envelope_2_w(1, 1);	/* pin 28*/
916 	SN76477_vco_w(1, 1);		/* pin 22*/
917 	SN76477_mixer_a_w(1, 0);	/* pin 26*/
918 	SN76477_mixer_b_w(1, 1);	/* pin 25*/
919 	SN76477_mixer_c_w(1, 0);	/* pin 27*/
920 
921 	/* ic52*/
922 	SN76477_envelope_1_w(2, 1);	/* pin 1*/
923 	SN76477_envelope_2_w(2, 0);	/* pin 28*/
924 	SN76477_vco_w(2, 0);		/* pin 22*/
925 	SN76477_mixer_a_w(2, 1);	/* pin 26*/
926 	SN76477_mixer_b_w(2, 1);	/* pin 25*/
927 	SN76477_mixer_c_w(2, 0);	/* pin 27*/
928 
929 	sasuke_start_counter();
930 }
931 
MACHINE_INIT(satansat)932 static MACHINE_INIT( satansat )
933 {
934 	/* same as sasuke*/
935 	rockola_set_music_freq(38000);
936 
937 	/* ???*/
938 	SN76477_mixer_a_w(0, 0);
939 	SN76477_mixer_b_w(0, 1);
940 	SN76477_mixer_c_w(0, 0);
941 
942 	sasuke_start_counter();
943 }
944 
MACHINE_INIT(vanguard)945 static MACHINE_INIT( vanguard )
946 {
947 	/* 41.6 Hz update (measured)*/
948 	rockola_set_music_clock(1 / 41.6);
949 
950 	/* SHOT A*/
951 	SN76477_mixer_a_w(0, 0);
952 	SN76477_mixer_b_w(0, 1);
953 	SN76477_mixer_c_w(0, 0);
954 
955 	/* SHOT B*/
956 	SN76477_envelope_1_w(1, 0);
957 	SN76477_envelope_2_w(1, 1);
958 	SN76477_mixer_a_w(1, 0);
959 	SN76477_mixer_b_w(1, 1);
960 	SN76477_mixer_c_w(1, 0);
961 }
962 
MACHINE_INIT(fantasy)963 static MACHINE_INIT( fantasy )
964 {
965 	/* BOMB*/
966 	SN76477_mixer_a_w(0, 0);
967 	SN76477_mixer_b_w(0, 1);
968 	SN76477_mixer_c_w(0, 0);
969 }
970 
MACHINE_INIT(pballoon)971 static MACHINE_INIT( pballoon )
972 {
973 	/* 40.3 Hz update (measured)*/
974 	rockola_set_music_clock(1 / 40.3);
975 
976 	machine_init_fantasy();
977 }
978 
979 /* Machine Drivers */
980 
981 static MACHINE_DRIVER_START( sasuke )
982 	/* basic machine hardware*/
983 	MDRV_CPU_ADD_TAG("main", M6502, 11289000/16) /* 700 kHz*/
984 	MDRV_CPU_MEMORY(satansat_readmem,sasuke_writemem)
985 	MDRV_CPU_VBLANK_INT(satansat_interrupt, 2)
986 
987 	MDRV_FRAMES_PER_SECOND((11289000.0 / 16) / (45 * 32 * 8))
988 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
989 
990 	MDRV_MACHINE_INIT(sasuke)
991 
992 	/* video hardware*/
993 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
994 	MDRV_SCREEN_SIZE(32*8, 32*8)
995 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
996 	MDRV_GFXDECODE(sasuke_gfxdecodeinfo)
997 	MDRV_PALETTE_LENGTH(32)
998 	MDRV_COLORTABLE_LENGTH(4*4 + 4*4)
999 
1000 	MDRV_PALETTE_INIT(satansat)
1001 	MDRV_VIDEO_START(satansat)
1002 	MDRV_VIDEO_UPDATE(rockola)
1003 
1004 	/* sound hardware*/
1005 	MDRV_SOUND_ADD(CUSTOM, custom_interface)
1006 	MDRV_SOUND_ADD_TAG("samples", SAMPLES, sasuke_samples_interface)
1007 	MDRV_SOUND_ADD_TAG("SN76477", SN76477, sasuke_sn76477_intf)
1008 MACHINE_DRIVER_END
1009 
1010 static MACHINE_DRIVER_START( satansat )
1011 	/* basic machine hardware*/
1012 	MDRV_IMPORT_FROM(sasuke)
1013 	MDRV_CPU_MODIFY("main")
1014 	MDRV_CPU_MEMORY(satansat_readmem,satansat_writemem)
1015 
1016 	MDRV_MACHINE_INIT(satansat)
1017 
1018 	/* video hardware*/
1019 	MDRV_GFXDECODE(satansat_gfxdecodeinfo)
1020 
1021 	/* sound hardware*/
1022 	MDRV_SOUND_REPLACE("samples", SAMPLES, vanguard_samples_interface)
1023 	MDRV_SOUND_REPLACE("SN76477", SN76477, satansat_sn76477_intf)
1024 MACHINE_DRIVER_END
1025 
1026 static MACHINE_DRIVER_START( vanguard )
1027 	/* basic machine hardware*/
1028 	/*MDRV_CPU_ADD_TAG("main", M6502, 11289000/8)	*/ /* 1.4 MHz*/
1029 	MDRV_CPU_ADD_TAG("main", M6502, 930000)		/* adjusted*/
1030 	MDRV_CPU_MEMORY(vanguard_readmem,vanguard_writemem)
1031 	MDRV_CPU_VBLANK_INT(rockola_interrupt, 2)
1032 
1033 	MDRV_FRAMES_PER_SECOND((11289000.0 / 16) / (45 * 32 * 8))
1034 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
1035 
1036 	MDRV_MACHINE_INIT(vanguard)
1037 
1038 	/* video hardware*/
1039 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
1040 	MDRV_SCREEN_SIZE(32*8, 32*8)
1041 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
1042 	MDRV_GFXDECODE(vanguard_gfxdecodeinfo)
1043 	MDRV_PALETTE_LENGTH(64)
1044 	MDRV_COLORTABLE_LENGTH(16*4)
1045 
1046 	MDRV_PALETTE_INIT(rockola)
1047 	MDRV_VIDEO_START(rockola)
1048 	MDRV_VIDEO_UPDATE(rockola)
1049 
1050 	/* sound hardware*/
1051 	MDRV_SOUND_ADD(CUSTOM, custom_interface)
1052 	MDRV_SOUND_ADD_TAG("samples", SAMPLES, vanguard_samples_interface)
1053 	MDRV_SOUND_ADD_TAG("SN76477", SN76477, vanguard_sn76477_intf)
1054 MACHINE_DRIVER_END
1055 
1056 static MACHINE_DRIVER_START( fantasy )
1057 	/* basic machine hardware*/
1058 	MDRV_IMPORT_FROM(vanguard)
1059 	MDRV_CPU_MODIFY("main")
1060 	MDRV_CPU_MEMORY(fantasy_readmem,fantasy_writemem)
1061 
1062 	MDRV_MACHINE_INIT(fantasy)
1063 
1064 	/* sound hardware*/
1065 	MDRV_SOUND_REPLACE("samples", SAMPLES, fantasy_samples_interface)
1066 	MDRV_SOUND_REPLACE("SN76477", SN76477, fantasy_sn76477_intf)
1067 MACHINE_DRIVER_END
1068 
1069 static MACHINE_DRIVER_START( nibbler )
1070 	/* basic machine hardware*/
1071 	MDRV_IMPORT_FROM(fantasy)
1072 
1073 	/* sound hardware*/
1074 	MDRV_SOUND_REMOVE("samples")
1075 MACHINE_DRIVER_END
1076 
1077 static MACHINE_DRIVER_START( pballoon )
1078 	/* basic machine hardware*/
1079 	MDRV_IMPORT_FROM(nibbler)
1080 	MDRV_CPU_MODIFY("main")
1081 	MDRV_CPU_MEMORY(pballoon_readmem,pballoon_writemem)
1082 
1083 	MDRV_MACHINE_INIT(pballoon)
1084 
1085 	/* video hardware*/
1086 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
1087 MACHINE_DRIVER_END
1088 
1089 /* ROMs */
1090 
1091 ROM_START( sasuke )
1092 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1093 	ROM_LOAD( "sc1",          0x4000, 0x0800, CRC(34cbbe03) SHA1(3d643e11370e61dde0c42c7761a856c5cf53d621) )
1094 	ROM_LOAD( "sc2",          0x4800, 0x0800, CRC(38cc14f0) SHA1(d60df67f2a32c131e8957e225b79618d6262463d) )
1095 	ROM_LOAD( "sc3",          0x5000, 0x0800, CRC(54c41285) SHA1(5618c2ac745bbde96bfda7f01f7aee7e2b643d7e) )
1096 	ROM_LOAD( "sc4",          0x5800, 0x0800, CRC(23edafcf) SHA1(bda3bcb506f6e23f422aafd7ca9b95bfb4d1d8e1) )
1097 	ROM_LOAD( "sc5",          0x6000, 0x0800, CRC(ca410e4f) SHA1(0d09422d01b4359853c173a4cb18c9b5fbc7fe7c) )
1098 	ROM_LOAD( "sc6",          0x6800, 0x0800, CRC(80406afb) SHA1(2c4a34a7450fa7258c5e6ead9b1fd6c6b973f081) )
1099 	ROM_LOAD( "sc7",          0x7000, 0x0800, CRC(04d0f104) SHA1(73ed501f70d2a9e8994f8392f617450eafef39b3) )
1100 	ROM_LOAD( "sc8",          0x7800, 0x0800, CRC(0219104b) SHA1(fd5c43304d59bc34e9ae6ef7576d75cf319d823e) )
1101 	ROM_RELOAD(               0xf800, 0x0800 ) /* for the reset/interrupt vectors */
1102 	ROM_LOAD( "sc9",          0x8000, 0x0800, CRC(d6ff889a) SHA1(1eea0366205dd0d9bffb5d093f259edc1d51cbe0) )
1103 	ROM_LOAD( "sc10",         0x8800, 0x0800, CRC(19df6b9a) SHA1(95e904251c39dcef227a4c125fc573e958ee78b7) )
1104 
1105 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
1106 	ROM_LOAD( "mcs_c",        0x0000, 0x0800, CRC(aff9743d) SHA1(a968a193ca551d92f79e09d1761dd2ccebc76eee) )
1107 	ROM_LOAD( "mcs_d",        0x0800, 0x0800, CRC(9c805120) SHA1(74b83daa3ce3c9f7d96ad872b9134edd6f1bcb8a) )
1108 
1109 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1110 	ROM_LOAD( "sasuke.clr",   0x0000, 0x0020, CRC(b70f34c1) SHA1(890cfbb25e14112713ba7900b9cd56554a8bc1ec) )
1111 
1112 	ROM_REGION( 0x1000, REGION_SOUND1, 0 )  /* sound data for Vanguard-style audio section */
1113 	ROM_LOAD( "sc11",         0x0000, 0x0800, CRC(24a0e121) SHA1(e3cde355309de6678026d595955297258f069946) )
1114 ROM_END
1115 
1116 
1117 ROM_START( satansat )
1118 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1119 	ROM_LOAD( "ss1",          0x4000, 0x0800, CRC(549dd13a) SHA1(06b55d0b1da84bef30857faa398aabfd04365eb6) )
1120 	ROM_LOAD( "ss2",          0x4800, 0x0800, CRC(04972fa8) SHA1(89833a7c893168acd5599ca7ad4b33a8f3df40c5) )
1121 	ROM_LOAD( "ss3",          0x5000, 0x0800, CRC(9caf9057) SHA1(26d439678e5e4d375ffac60126f45de599575bfd) )
1122 	ROM_LOAD( "ss4",          0x5800, 0x0800, CRC(e1bdcfe1) SHA1(c99457c18fae8de79bbbe6bc0471fdc83f1e9b19) )
1123 	ROM_LOAD( "ss5",          0x6000, 0x0800, CRC(d454de19) SHA1(ae8abb8a9d999d11ba6ad341bf635ae822d5746f) )
1124 	ROM_LOAD( "ss6",          0x6800, 0x0800, CRC(7fbd5d30) SHA1(be0554ade440bf255131466ee8bd2905d3f446a8) )
1125 	ROM_LOAD( "zarz128.15",   0x7000, 0x0800, CRC(93ea2df9) SHA1(4f7d076deef1e14b568b06974194861d3789ab5c) )
1126 	ROM_LOAD( "zarz129.16",   0x7800, 0x0800, CRC(e67ec873) SHA1(14158914f07cabe61abc400c371d742ceb61d165) )
1127 	ROM_RELOAD(               0xf800, 0x0800 ) /* for the reset/interrupt vectors */
1128 	ROM_LOAD( "zarz130.22",   0x8000, 0x0800, CRC(22c44650) SHA1(063915cde86aece8860db1df15497cde669e73bd) )
1129 	ROM_LOAD( "ss10",         0x8800, 0x0800, CRC(8f1b313a) SHA1(0c7832505a1287533d9b2d7f2d54000b3b44e40d) )
1130 	ROM_LOAD( "ss11",         0x9000, 0x0800, CRC(e74f98e0) SHA1(89a93de6105195e0e5d255bfa240538ded155fb9) )
1131 
1132 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
1133 	ROM_LOAD( "zarz135.73",   0x0000, 0x0800, CRC(e837c62b) SHA1(97552b1e413a3934f4dc5a6fc9fc1fa8ba7a2e7e) )
1134 	ROM_LOAD( "zarz136.75",   0x0800, 0x0800, CRC(83f61623) SHA1(4cb28f85f32d13bfa364c376ea3e30fd451b5884) )
1135 
1136 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1137 	ROM_LOAD( "zarz138.03",   0x0000, 0x0020, CRC(5dd6933a) SHA1(417d827d9e47b6db01fecc2164e5ef332d4cd70e) )
1138 
1139     ROM_REGION( 0x1000, REGION_SOUND1, 0 )  /* sound data for Vanguard-style audio section */
1140 	ROM_LOAD( "ss12",         0x0000, 0x0800, CRC(dee01f24) SHA1(92c8545226a31412239dad4aa2715b51264ad22e) )
1141 	ROM_LOAD( "zarz134.54",   0x0800, 0x0800, CRC(580934d2) SHA1(c1c7eba56bca2a0ea6a68c0245b071a3308f92bd) )
1142 ROM_END
1143 
1144 ROM_START( zarzon )
1145 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1146 	ROM_LOAD( "zarz122.07",   0x4000, 0x0800, CRC(bdfa67e2) SHA1(0de06cf53ee21b8f14b933b61e6dc706338746c4) )
1147 	ROM_LOAD( "zarz123.08",   0x4800, 0x0800, CRC(d034e61e) SHA1(dc802c3d7a9f7e473e323e3272fca406dab6d55d) )
1148 	ROM_LOAD( "zarz124.09",   0x5000, 0x0800, CRC(296397ea) SHA1(3a1ad7f3c4453bb20768b3e3ce04cd76873aa0ee) )
1149 	ROM_LOAD( "zarz125.10",   0x5800, 0x0800, CRC(26dc5e66) SHA1(07f47f3497bb85640e5e6a89ad7d6579108347fe) )
1150 	ROM_LOAD( "zarz126.13",   0x6000, 0x0800, CRC(cee18d7f) SHA1(5a7e60b6be06b3038f2eb81e76fc54cb65d4877b) )
1151 	ROM_LOAD( "zarz127.14",   0x6800, 0x0800, CRC(bbd2cc0d) SHA1(1128020b7c0f38f5ff2cc2da0fd2df5ebead4681) )
1152 	ROM_LOAD( "zarz128.15",   0x7000, 0x0800, CRC(93ea2df9) SHA1(4f7d076deef1e14b568b06974194861d3789ab5c) )
1153 	ROM_LOAD( "zarz129.16",   0x7800, 0x0800, CRC(e67ec873) SHA1(14158914f07cabe61abc400c371d742ceb61d165) )
1154 	ROM_RELOAD(               0xf800, 0x0800 ) /* for the reset/interrupt vectors */
1155 	ROM_LOAD( "zarz130.22",   0x8000, 0x0800, CRC(22c44650) SHA1(063915cde86aece8860db1df15497cde669e73bd) )
1156 	ROM_LOAD( "zarz131.23",   0x8800, 0x0800, CRC(7be20678) SHA1(872de953df1f9f1725e14fdfd227ad872a813af8) )
1157 	ROM_LOAD( "zarz132.24",   0x9000, 0x0800, CRC(72b2cb76) SHA1(d7a95c908fe2227e2a0820a8e9713b1709c9e5af) )
1158 
1159 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
1160 	ROM_LOAD( "zarz135.73",   0x0000, 0x0800, CRC(e837c62b) SHA1(97552b1e413a3934f4dc5a6fc9fc1fa8ba7a2e7e) )
1161 	ROM_LOAD( "zarz136.75",   0x0800, 0x0800, CRC(83f61623) SHA1(4cb28f85f32d13bfa364c376ea3e30fd451b5884) )
1162 
1163 	ROM_REGION( 0x0020, REGION_PROMS, 0 )
1164 	ROM_LOAD( "zarz138.03",   0x0000, 0x0020, CRC(5dd6933a) SHA1(417d827d9e47b6db01fecc2164e5ef332d4cd70e) )
1165 
1166     ROM_REGION( 0x1000, REGION_SOUND1, 0 )  /* sound data for Vanguard-style audio section */
1167 	ROM_LOAD( "zarz133.53",   0x0000, 0x0800, CRC(b253cf78) SHA1(56a73b22ed2866222c407a3e9b51b8e0c92cf2aa) )
1168 	ROM_LOAD( "zarz134.54",   0x0800, 0x0800, CRC(580934d2) SHA1(c1c7eba56bca2a0ea6a68c0245b071a3308f92bd) )
1169 ROM_END
1170 
1171 ROM_START( vanguard )
1172 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1173 	ROM_LOAD( "sk4_ic07.bin", 0x4000, 0x1000, CRC(6a29e354) SHA1(ff953962ebc14a28cfc96f8e269cb1e1c188ed8a) )
1174 	ROM_LOAD( "sk4_ic08.bin", 0x5000, 0x1000, CRC(302bba54) SHA1(1944f229481328a0635fafda65054106f42a532a) )
1175 	ROM_LOAD( "sk4_ic09.bin", 0x6000, 0x1000, CRC(424755f6) SHA1(b4762b40c7ed70d4b90319a1a30983a41a096afb) )
1176 	ROM_LOAD( "sk4_ic10.bin", 0x7000, 0x1000, CRC(54603274) SHA1(31571a560dbe300417b3ed5b114fa1d9ef742da9) )
1177 	ROM_LOAD( "sk4_ic13.bin", 0x8000, 0x1000, CRC(fde157d0) SHA1(3f705fb6a410004f4f86283694e3694e49701af6) )
1178 	ROM_RELOAD(               0xf000, 0x1000 )	/* for the reset and interrupt vectors */
1179 	ROM_LOAD( "sk4_ic14.bin", 0x9000, 0x1000, CRC(0d5b47d0) SHA1(922621c23f33fe756cb6baa12e5465c4e64f2dda) )
1180 	ROM_LOAD( "sk4_ic15.bin", 0xa000, 0x1000, CRC(8549b8f8) SHA1(375bc6f7e15564d5cf7e00c44e2651793c56d6ca) )
1181 	ROM_LOAD( "sk4_ic16.bin", 0xb000, 0x1000, CRC(062e0be2) SHA1(45aaf315a62f37460e32d3ba99caaacf4c994810) )
1182 
1183 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
1184 	ROM_LOAD( "sk5_ic50.bin", 0x0000, 0x0800, CRC(e7d4315b) SHA1(b99e4ea07292a0eabaa6098037c92a5678627cec) )
1185 	ROM_LOAD( "sk5_ic51.bin", 0x0800, 0x0800, CRC(96e87858) SHA1(4e9ccb055919c8acf5837e062857647d5363af60) )
1186 
1187 	ROM_REGION( 0x0040, REGION_PROMS, 0 )
1188 	ROM_LOAD( "sk5_ic7.bin",  0x0000, 0x0020, CRC(ad782a73) SHA1(ddf44f74a20f10ed976c434a885857dade1f86d7) ) /* foreground colors */
1189 	ROM_LOAD( "sk5_ic6.bin",  0x0020, 0x0020, CRC(7dc9d450) SHA1(9b2d1dfb3270a562d14bd54bfb3405a9095becc0) ) /* background colors */
1190 
1191 	ROM_REGION( 0x1000, REGION_SOUND1, 0 )	/* sound ROMs */
1192 	ROM_LOAD( "sk4_ic51.bin", 0x0000, 0x0800, CRC(d2a64006) SHA1(3f20b59ce1954f65535cd5603ca9271586428e35) )  /* sound ROM 1 */
1193 	ROM_LOAD( "sk4_ic52.bin", 0x0800, 0x0800, CRC(cc4a0b6f) SHA1(251b24d60083d516c4ba686d75b41e04d10f7198) )  /* sound ROM 2 */
1194 
1195 	ROM_REGION( 0x5800, REGION_SOUND2, 0 )	/* space for the speech ROMs (not supported) */
1196 	ROM_LOAD( "sk6_ic07.bin", 0x4000, 0x0800, CRC(2b7cbae9) SHA1(3d44a0232d7c94d8170cc06e90cc30bd57c99202) )
1197 	ROM_LOAD( "sk6_ic08.bin", 0x4800, 0x0800, CRC(3b7e9d7c) SHA1(d9033188068b2aaa1502c89cf09f955eded8fa7a) )
1198 	ROM_LOAD( "sk6_ic11.bin", 0x5000, 0x0800, CRC(c36df041) SHA1(8b51934229b961180d1edb99be3a4d337d37f66f) )
1199 ROM_END
1200 
1201 ROM_START( vangrdce )
1202 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1203 	ROM_LOAD( "sk4_ic07.bin", 0x4000, 0x1000, CRC(6a29e354) SHA1(ff953962ebc14a28cfc96f8e269cb1e1c188ed8a) )
1204 	ROM_LOAD( "sk4_ic08.bin", 0x5000, 0x1000, CRC(302bba54) SHA1(1944f229481328a0635fafda65054106f42a532a) )
1205 	ROM_LOAD( "sk4_ic09.bin", 0x6000, 0x1000, CRC(424755f6) SHA1(b4762b40c7ed70d4b90319a1a30983a41a096afb) )
1206 	ROM_LOAD( "4",            0x7000, 0x1000, CRC(770f9714) SHA1(4af37fc24e464681a8da6b184be0df32a4078f4f) )
1207 	ROM_LOAD( "5",            0x8000, 0x1000, CRC(3445cba6) SHA1(6afe6dad79b53df58b53ef9c5d24bb4d91fa5e8e) )
1208 	ROM_RELOAD(               0xf000, 0x1000 )	/* for the reset and interrupt vectors */
1209 	ROM_LOAD( "sk4_ic14.bin", 0x9000, 0x1000, CRC(0d5b47d0) SHA1(922621c23f33fe756cb6baa12e5465c4e64f2dda) )
1210 	ROM_LOAD( "sk4_ic15.bin", 0xa000, 0x1000, CRC(8549b8f8) SHA1(375bc6f7e15564d5cf7e00c44e2651793c56d6ca) )
1211 	ROM_LOAD( "8",            0xb000, 0x1000, CRC(4b825bc8) SHA1(3fa32d9677e2cc3a1ebf52c0b9eed7dbf11201e9) )
1212 
1213 	ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
1214 	ROM_LOAD( "sk5_ic50.bin", 0x0000, 0x0800, CRC(e7d4315b) SHA1(b99e4ea07292a0eabaa6098037c92a5678627cec) )
1215 	ROM_LOAD( "sk5_ic51.bin", 0x0800, 0x0800, CRC(96e87858) SHA1(4e9ccb055919c8acf5837e062857647d5363af60) )
1216 
1217 	ROM_REGION( 0x0040, REGION_PROMS, 0 )
1218 	ROM_LOAD( "sk5_ic7.bin",  0x0000, 0x0020, CRC(ad782a73) SHA1(ddf44f74a20f10ed976c434a885857dade1f86d7) ) /* foreground colors */
1219 	ROM_LOAD( "sk5_ic6.bin",  0x0020, 0x0020, CRC(7dc9d450) SHA1(9b2d1dfb3270a562d14bd54bfb3405a9095becc0) ) /* background colors */
1220 
1221 	ROM_REGION( 0x1000, REGION_SOUND1, 0 )	/* sound ROMs */
1222 	ROM_LOAD( "sk4_ic51.bin", 0x0000, 0x0800, CRC(d2a64006) SHA1(3f20b59ce1954f65535cd5603ca9271586428e35) )  /* missing, using the SNK one */
1223 	ROM_LOAD( "sk4_ic52.bin", 0x0800, 0x0800, CRC(cc4a0b6f) SHA1(251b24d60083d516c4ba686d75b41e04d10f7198) )  /* missing, using the SNK one */
1224 
1225 	ROM_REGION( 0x5800, REGION_SOUND2, 0 )	/* space for the speech ROMs (not supported) */
1226 	ROM_LOAD( "sk6_ic07.bin", 0x4000, 0x0800, CRC(2b7cbae9) SHA1(3d44a0232d7c94d8170cc06e90cc30bd57c99202) )
1227 	ROM_LOAD( "sk6_ic08.bin", 0x4800, 0x0800, CRC(3b7e9d7c) SHA1(d9033188068b2aaa1502c89cf09f955eded8fa7a) )
1228 	ROM_LOAD( "sk6_ic11.bin", 0x5000, 0x0800, CRC(c36df041) SHA1(8b51934229b961180d1edb99be3a4d337d37f66f) )
1229 ROM_END
1230 
1231 ROM_START( fantasy )
1232 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1233 	ROM_LOAD( "ic12.cpu",        0x3000, 0x1000, CRC(22cb2249) SHA1(6c43e3fa9638b6d2e069199968923e470bd5d18b) )
1234 	ROM_LOAD( "ic07.cpu",        0x4000, 0x1000, CRC(0e2880b6) SHA1(666d6942864eb7a90178b3b6e2b0eb23aa3c967f) )
1235 	ROM_LOAD( "ic08.cpu",        0x5000, 0x1000, CRC(4c331317) SHA1(800850f4e8bcfbbade54eb9e47a53941f8798641) )
1236 	ROM_LOAD( "ic09.cpu",        0x6000, 0x1000, CRC(6ac1dbfc) SHA1(b9c7bf8d3b085db0b53646b5639c09f9ced2b1fe) )
1237 	ROM_LOAD( "ic10.cpu",        0x7000, 0x1000, CRC(c796a406) SHA1(1b7f5f307a81b481a3e7791128a01d4c1a20c4bf) )
1238 	ROM_LOAD( "ic14.cpu",        0x8000, 0x1000, CRC(6f1f0698) SHA1(05bd114dcd08c990d897518a8ea7965bc82279bf) )
1239 	ROM_RELOAD(                  0xf000, 0x1000 )	/* for the reset and interrupt vectors */
1240 	ROM_LOAD( "ic15.cpu",        0x9000, 0x1000, CRC(5534d57e) SHA1(e564a3325766423b47de18d6adb61760cbbf88be) )
1241 	ROM_LOAD( "ic16.cpu",        0xa000, 0x1000, CRC(6c2aeb6e) SHA1(fd0b913a663bf2a5f45fc3d342d7575a9c7dae46) )
1242 	ROM_LOAD( "ic17.cpu",        0xb000, 0x1000, CRC(f6aa5de1) SHA1(ca53cf66cc6cdb21a60760102f35a5b0745ce09b) )
1243 
1244 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1245 	ROM_LOAD( "fs10ic50.bin",    0x0000, 0x1000, CRC(86a801c3) SHA1(c040b5807c25823072f7e8ceab57b95d4bed89fe) )
1246 	ROM_LOAD( "fs11ic51.bin",    0x1000, 0x1000, CRC(9dfff71c) SHA1(7a7c017170f2ea903a730a4e5ab69db379a4fc61) )
1247 
1248 	ROM_REGION( 0x0040, REGION_PROMS, 0 )
1249 	ROM_LOAD( "fantasy.ic7",     0x0000, 0x0020, CRC(361a5e99) SHA1(b9777ce658549c03971bd476482d5cc0be27d3a9) ) /* foreground colors */
1250 	ROM_LOAD( "fantasy.ic6",     0x0020, 0x0020, CRC(33d974f7) SHA1(a6f6a531dec3f454b477bfdda8e213e9cad42748) ) /* background colors */
1251 
1252 	ROM_REGION( 0x1800, REGION_SOUND1, 0 )	/* sound ROMs */
1253 	ROM_LOAD( "fs_b_51.bin",     0x0000, 0x0800, CRC(48094ec5) SHA1(7d6118133bc1eb8ebc5d8a95d10ef842daffef89) )
1254 	ROM_LOAD( "fs_a_52.bin",     0x0800, 0x0800, CRC(1d0316e8) SHA1(6a3ab289b5fefef8663514bd1d5817c70fe58882) )
1255 	ROM_LOAD( "fs_c_53.bin",     0x1000, 0x0800, CRC(49fd4ae8) SHA1(96ff1267c0ffab1e8a0769fa869516e2546ab640) )
1256 
1257 	ROM_REGION( 0x5800, REGION_SOUND2, 0 )	/* space for the speech ROMs (not supported) */
1258 	ROM_LOAD( "fs_d_7.bin",   0x4000, 0x0800, CRC(a7ef4cc6) SHA1(8df71cb18fcfe9a2f592f83bc01cf2314ae30e32) )
1259 	ROM_LOAD( "fs_e_8.bin",   0x4800, 0x0800, CRC(19b8fb3e) SHA1(271c76f68866c28bc6755238a71970d5f7c81ecb) )
1260 	ROM_LOAD( "fs_f_11.bin",  0x5000, 0x0800, CRC(3a352e1f) SHA1(af880ce3daed0877d454421bd08c86ff71f6bf72) )
1261 ROM_END
1262 
1263 ROM_START( fantasyj )
1264 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1265 	ROM_LOAD( "fs5jic12.bin",    0x3000, 0x1000, CRC(dd1eac89) SHA1(d63078d4666e3c6db0c9b3f8b45ef81606ed5a4f) )
1266 	ROM_LOAD( "fs1jic7.bin",     0x4000, 0x1000, CRC(7b8115ae) SHA1(6274f937c57ab9cbb7c6283022b81f70dad7c232) )
1267 	ROM_LOAD( "fs2jic8.bin",     0x5000, 0x1000, CRC(61531dd1) SHA1(f3bc405bafc8ced6c6fce93ad2ad20ff6aa603e8) )
1268 	ROM_LOAD( "fs3jic9.bin",     0x6000, 0x1000, CRC(36a12617) SHA1(dd74abb4cbaeb1a56ee466043997187ebe933612) )
1269 	ROM_LOAD( "fs4jic10.bin",    0x7000, 0x1000, CRC(dbf7c347) SHA1(1bb3f924a7e1ec74ef68e237a0f68d62ce78532c) )
1270 	ROM_LOAD( "fs6jic14.bin",    0x8000, 0x1000, CRC(bf59a33a) SHA1(bdbdd03199758069b904fdf0455193682c4d457f) )
1271 	ROM_RELOAD(                  0xf000, 0x1000 )	/* for the reset and interrupt vectors */
1272 	ROM_LOAD( "fs7jic15.bin",    0x9000, 0x1000, CRC(cc18428e) SHA1(c7c0a031434cf9ce3c450b0c5dc2b154b08d19cf) )
1273 	ROM_LOAD( "fs8jic16.bin",    0xa000, 0x1000, CRC(ae5bf727) SHA1(3c5eaaba3971f57a5687945a614dd0d6c9e007d6) )
1274 	ROM_LOAD( "fs9jic17.bin",    0xb000, 0x1000, CRC(fa6903e2) SHA1(a5b9b7309ecaaeaba76e45610d5ab80415ecbdd0) )
1275 
1276 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1277 	ROM_LOAD( "fs10ic50.bin",    0x0000, 0x1000, CRC(86a801c3) SHA1(c040b5807c25823072f7e8ceab57b95d4bed89fe) )
1278 	ROM_LOAD( "fs11ic51.bin",    0x1000, 0x1000, CRC(9dfff71c) SHA1(7a7c017170f2ea903a730a4e5ab69db379a4fc61) )
1279 
1280 	ROM_REGION( 0x0040, REGION_PROMS, 0 )
1281 	ROM_LOAD( "prom-8.bpr",      0x0000, 0x0020, CRC(1aa9285a) SHA1(d503aa76ca0cf032c7b1c962abc59677c41a2c62) ) /* foreground colors */
1282 	ROM_LOAD( "prom-7.bpr",      0x0020, 0x0020, CRC(7a6f7dc3) SHA1(e15d898275d1cd205cc2d28f7dd9df653594039e) ) /* background colors */
1283 
1284 	ROM_REGION( 0x1800, REGION_SOUND1, 0 )	/* sound ROMs */
1285 	ROM_LOAD( "fs_b_51.bin",     0x0000, 0x0800, CRC(48094ec5) SHA1(7d6118133bc1eb8ebc5d8a95d10ef842daffef89) )
1286 	ROM_LOAD( "fs_a_52.bin",     0x0800, 0x0800, CRC(1d0316e8) SHA1(6a3ab289b5fefef8663514bd1d5817c70fe58882) )
1287 	ROM_LOAD( "fs_c_53.bin",     0x1000, 0x0800, CRC(49fd4ae8) SHA1(96ff1267c0ffab1e8a0769fa869516e2546ab640) )
1288 
1289 	ROM_REGION( 0x5800, REGION_SOUND2, 0 )	/* space for the speech ROMs (not supported) */
1290 	ROM_LOAD( "fs_d_7.bin",   0x4000, 0x0800, CRC(a7ef4cc6) SHA1(8df71cb18fcfe9a2f592f83bc01cf2314ae30e32) )
1291 	ROM_LOAD( "fs_e_8.bin",   0x4800, 0x0800, CRC(19b8fb3e) SHA1(271c76f68866c28bc6755238a71970d5f7c81ecb) )
1292 	ROM_LOAD( "fs_f_11.bin",  0x5000, 0x0800, CRC(3a352e1f) SHA1(af880ce3daed0877d454421bd08c86ff71f6bf72) )
1293 ROM_END
1294 
1295 ROM_START( pballoon )
1296 	ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for code */
1297 	ROM_LOAD( "sk7_ic12.bin", 0x3000, 0x1000, CRC(dfe2ae05) SHA1(21c98bef9d4d5fcb65ce5e9b20cde2259840459e) )
1298 	ROM_LOAD( "sk7_ic07.bin", 0x4000, 0x1000, CRC(736e67df) SHA1(a58d9561f62d396ca90b0f69afe6240d809b10bb) )
1299 	ROM_LOAD( "sk7_ic08.bin", 0x5000, 0x1000, CRC(7a2032b2) SHA1(79570943468d647cda67d94b20eac1b2d9eb371f) )
1300 	ROM_LOAD( "sk7_ic09.bin", 0x6000, 0x1000, CRC(2d63cf3a) SHA1(8934af617229db445f9fd10e4028e1f8df4cfeb1) )
1301 	ROM_LOAD( "sk7_ic10.bin", 0x7000, 0x1000, CRC(7b88cbd4) SHA1(1be3c484bd08c747f38389114c157e84319c48be) )
1302 	ROM_LOAD( "sk7_ic14.bin", 0x8000, 0x1000, CRC(6a8817a5) SHA1(4cf8eda68d21b1fad0f12eedaeb88b256bba44da) )
1303 	ROM_RELOAD(               0xf000, 0x1000 )  /* for the reset and interrupt vectors */
1304 	ROM_LOAD( "sk7_ic15.bin", 0x9000, 0x1000, CRC(1f78d814) SHA1(7e618971f1bbf8859284531e94989c43c3285b4a) )
1305 
1306 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1307 	ROM_LOAD( "sk8_ic50.bin", 0x0000, 0x1000, CRC(560df07f) SHA1(e57945de829d22d39390a649eddaf78c989af679) )
1308 	ROM_LOAD( "sk8_ic51.bin", 0x1000, 0x1000, CRC(d415de51) SHA1(257cf939efec8adee87baf827315c69fde90da4c) )
1309 
1310 	ROM_REGION( 0x0040, REGION_PROMS, 0 )
1311 	ROM_LOAD( "sk8_ic7.bin",  0x0000, 0x0020, CRC(ef6c82a0) SHA1(95b522d6389f25bf5fa2fca5f3f826ef43b2885b) ) /* foreground colors */
1312 	ROM_LOAD( "sk8_ic6.bin",  0x0020, 0x0020, CRC(eabc6a00) SHA1(942af5e22e49e578c6a24651476e3b60d40e2076) ) /* background colors */
1313 
1314 	ROM_REGION( 0x1800, REGION_SOUND1, 0 )	/* sound ROMs */
1315 	ROM_LOAD( "sk7_ic51.bin", 0x0000, 0x0800, CRC(0345f8b7) SHA1(c00992dc7222cc53d9fdff4ab47a7abdf90c5116) )
1316 	ROM_LOAD( "sk7_ic52.bin", 0x0800, 0x0800, CRC(5d6d68ea) SHA1(d3e03720eff5c85c1c2fb1d4bf960f45a99dc86a) )
1317 	ROM_LOAD( "sk7_ic53.bin", 0x1000, 0x0800, CRC(a4c505cd) SHA1(47eea7e7ffa3dc8b35dc050ac1a1d77d6a5c4ece) )
1318 ROM_END
1319 
1320 ROM_START( nibbler )
1321 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1322 	ROM_LOAD( "g960-52.12",   0x3000, 0x1000, CRC(ac6a802b) SHA1(ac1072e30994f13097663dc24d9d1dc35a95d874) )
1323 	ROM_LOAD( "g960-48.07",   0x4000, 0x1000, CRC(35971364) SHA1(6430c7be9e5f47d3f1f2cc157d949246e4085e8b) )
1324 	ROM_LOAD( "g960-49.08",   0x5000, 0x1000, CRC(6b33b806) SHA1(29444e45bf5a6ab1d86e0aa19dc6c1bc64ba633f) )
1325 	ROM_LOAD( "g960-50.09",   0x6000, 0x1000, CRC(91a4f98d) SHA1(678c7e8c91a7fdba8dc2faff4192eb0964abdb3f) )
1326 	ROM_LOAD( "g960-51.10",   0x7000, 0x1000, CRC(a151d934) SHA1(6681bdcd84cf62b40b2430ff530cb3c9aa36656c) )
1327 	ROM_LOAD( "g960-53.14",   0x8000, 0x1000, CRC(063f05cc) SHA1(039ac1b007cb817ae0902484ca611ae7076930d6) )
1328 	ROM_RELOAD(               0xf000, 0x1000 )	/* for the reset and interrupt vectors */
1329 	ROM_LOAD( "g960-54.15",   0x9000, 0x1000, CRC(7205fb8d) SHA1(bc341bc11a383aa8b8dd7b2be851907a3ec56f8b) )
1330 	ROM_LOAD( "g960-55.16",   0xa000, 0x1000, CRC(4bb39815) SHA1(1755c28d7d300524ab839aedcc744254544e9c19) )
1331 	ROM_LOAD( "g960-56.17",   0xb000, 0x1000, CRC(ed680f19) SHA1(b44203585f32ebe2a3bf0597eac7c0faa7e81a92) )
1332 
1333 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1334 	ROM_LOAD( "g960-57.50",   0x0000, 0x1000, CRC(01d4d0c2) SHA1(5a8026210a872351ce4e39e27f6479d3ca0689e2) )
1335 	ROM_LOAD( "g960-58.51",   0x1000, 0x1000, CRC(feff7faf) SHA1(50005502578a4ea9b9c8f36998670b787d2d0b20) )
1336 
1337 	ROM_REGION( 0x0040, REGION_PROMS, 0 )
1338 	ROM_LOAD( "g70805.ic7",   0x0000, 0x0020, CRC(a5709ff3) SHA1(fbd07b756235f2d03aea3d777ca741ade54be200) ) /* foreground colors */
1339 	ROM_LOAD( "g70804.ic6",   0x0020, 0x0020, CRC(dacd592d) SHA1(c7709c680e2764885a40bc256d07dffc9e827cd6) ) /* background colors */
1340 
1341 	ROM_REGION( 0x1800, REGION_SOUND1, 0 )	/* sound ROMs */
1342 	ROM_LOAD( "g959-43.51",   0x0000, 0x0800, CRC(0345f8b7) SHA1(c00992dc7222cc53d9fdff4ab47a7abdf90c5116) )
1343 	ROM_LOAD( "g959-44.52",   0x0800, 0x0800, CRC(87d67dee) SHA1(bd292eab3671cb953279f3136a450deac3818367) )
1344 	ROM_LOAD( "g959-45.53",   0x1000, 0x0800, CRC(33189917) SHA1(01a1b1693db0172609780daeb60430fa0c8bcec2) )
1345 ROM_END
1346 
1347 ROM_START( nibblera )
1348 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
1349 	ROM_LOAD( "ic12",         0x3000, 0x1000, CRC(6dfa1be5) SHA1(bb265702a2f74cb7d5ba27081f9fb2fe01dd95a5) )
1350 	ROM_LOAD( "ic07",         0x4000, 0x1000, CRC(808e1a03) SHA1(a747a16ee0c8cb803b72ac84e80f791b2bf1813a) )
1351 	ROM_LOAD( "ic08",         0x5000, 0x1000, CRC(1571d4a2) SHA1(42cbaa262c2265d904fd5844c0d3c63d3beb67a8) )
1352 	ROM_LOAD( "ic09",         0x6000, 0x1000, CRC(a599df10) SHA1(68ee8b5199ec24409fcbb40c887a1eec44c68dcf) )
1353 	ROM_LOAD( "ic10",         0x7000, 0x1000, CRC(a6b5abe5) SHA1(a0f228dac801a54dfa1947d6b2f6b4e3d005e0b2) )
1354 	ROM_LOAD( "ic14",         0x8000, 0x1000, CRC(9f537185) SHA1(619df63f4df38014dc229f614043f867e6a5aa51) )
1355 	ROM_RELOAD(               0xf000, 0x1000 )	/* for the reset and interrupt vectors */
1356 	ROM_LOAD( "g960-54.15",   0x9000, 0x1000, CRC(7205fb8d) SHA1(bc341bc11a383aa8b8dd7b2be851907a3ec56f8b) )
1357 	ROM_LOAD( "g960-55.16",   0xa000, 0x1000, CRC(4bb39815) SHA1(1755c28d7d300524ab839aedcc744254544e9c19) )
1358 	ROM_LOAD( "g960-56.17",   0xb000, 0x1000, CRC(ed680f19) SHA1(b44203585f32ebe2a3bf0597eac7c0faa7e81a92) )
1359 
1360 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
1361 	ROM_LOAD( "g960-57.50",   0x0000, 0x1000, CRC(01d4d0c2) SHA1(5a8026210a872351ce4e39e27f6479d3ca0689e2) )
1362 	ROM_LOAD( "g960-58.51",   0x1000, 0x1000, CRC(feff7faf) SHA1(50005502578a4ea9b9c8f36998670b787d2d0b20) )
1363 
1364 	ROM_REGION( 0x0040, REGION_PROMS, 0 )
1365 	ROM_LOAD( "g70805.ic7",   0x0000, 0x0020, CRC(a5709ff3) SHA1(fbd07b756235f2d03aea3d777ca741ade54be200) ) /* foreground colors */
1366 	ROM_LOAD( "g70804.ic6",   0x0020, 0x0020, CRC(dacd592d) SHA1(c7709c680e2764885a40bc256d07dffc9e827cd6) ) /* background colors */
1367 
1368 	ROM_REGION( 0x1800, REGION_SOUND1, 0 )	/* sound ROMs */
1369 	ROM_LOAD( "g959-43.51",   0x0000, 0x0800, CRC(0345f8b7) SHA1(c00992dc7222cc53d9fdff4ab47a7abdf90c5116) )
1370 	ROM_LOAD( "g959-44.52",   0x0800, 0x0800, CRC(87d67dee) SHA1(bd292eab3671cb953279f3136a450deac3818367) )
1371 	ROM_LOAD( "g959-45.53",   0x1000, 0x0800, CRC(33189917) SHA1(01a1b1693db0172609780daeb60430fa0c8bcec2) )
1372 ROM_END
1373 
1374 /* Game Drivers */
1375 
1376 GAME(  1980, sasuke,   0,        sasuke,   sasuke,   0, ROT90, "SNK", "Sasuke vs. Commander" )
1377 GAMEX( 1981, satansat, 0,        satansat, satansat, 0, ROT90, "SNK", "Satan of Saturn", GAME_IMPERFECT_SOUND )
1378 GAMEX( 1981, zarzon,   satansat, satansat, satansat, 0, ROT90, "[SNK] (Taito America license)", "Zarzon", GAME_IMPERFECT_SOUND )
1379 GAME(  1981, vanguard, 0,        vanguard, vanguard, 0, ROT90, "SNK", "Vanguard (SNK)" )
1380 GAME(  1981, vangrdce, vanguard, vanguard, vanguard, 0, ROT90, "SNK (Centuri license)", "Vanguard (Centuri)" )
1381 GAME(  1981, fantasy,  0,        fantasy,  fantasy,  0, ROT90, "[SNK] (Rock-ola license)", "Fantasy (US)" )
1382 GAME(  1981, fantasyj, fantasy,  fantasy,  fantasy,  0, ROT90, "SNK", "Fantasy (Japan)" )
1383 GAME(  1982, pballoon, 0,        pballoon, pballoon, 0, ROT90, "SNK", "Pioneer Balloon" )
1384 GAME(  1982, nibbler,  0,        nibbler,  nibbler,  0, ROT90, "Rock-ola", "Nibbler (set 1)" )
1385 GAME(  1982, nibblera, nibbler,  nibbler,  nibbler,  0, ROT90, "Rock-ola", "Nibbler (set 2)" )
1386