1 // license:BSD-3-Clause
2 // copyright-holders:Nicola Salmoria, Dan Boris
3 /***************************************************************************
4 
5     Sasuke vs. Commander
6     SNK
7 
8     driver by ?
9 
10     Games supported:
11         * Sasuke vs. Commander
12         * Satan of Saturn          [2 sets]
13         * Zarzon (clone of 'satansat')
14         * Vanguard                 [3 sets]
15         * Fantasy                  [3 sets]       G-202
16         * Pioneer Balloon                         G-204
17         * Nibbler                  [4 sets]       G-208
18 
19     DIP locations verified from manual for:
20         * Zarzon    (Satan of Saturn uses the same code, so I guess locations are the same)
21         * Vanguard
22         * Nibbler
23 
24 ****************************************************************************
25 
26 Vanguard memory map (preliminary)
27 
28 0000-03ff RAM
29 0400-07ff Video RAM 1
30 0800-0bff Video RAM 2
31 0c00-0fff Color RAM (3 bits for video RAM 1 and 3 bits for video RAM 2)
32 1000-1fff Character generator RAM
33 4000-bfff ROM
34 
35 read:
36 3104      IN0
37 3105      IN1
38 3106      DSW
39 3107      IN2
40 
41 write
42 3100      Sound Port 0
43 3101      Sound Port 1
44 3103      bit 7 = flip screen
45 3200      y scroll register
46 3300      x scroll register
47 
48 ****************************************************************************
49 
50 Fantasy and Nibbler memory map (preliminary)
51 
52 0000-03ff RAM
53 0400-07ff Video RAM 1
54 0800-0bff Video RAM 2
55 0c00-0fff Color RAM (3 bits for video RAM 1 and 3 bits for video RAM 2)
56 1000-1fff Character generator RAM
57 3000-bfff ROM
58 
59 read:
60 2104      IN0
61 2105      IN1
62 2106      DSW
63 2107      IN2
64 
65 write
66 2000-2001 To the HD46505S video controller
67 2100      Sound Port 0
68 2101      Sound Port 1
69 2103      bit 7 = flip screen
70           bit 4-6 = music 2
71           bit 3 = char bank selector
72           bit 0-2 = background color
73 2200      y scroll register
74 2300      x scroll register
75 
76 Interrupts: VBlank causes an IRQ. Coin insertion causes a NMI.
77 
78 ****************************************************************************
79 
80 Pioneer Balloon memory map (preliminary)
81 
82 0000-03ff RAM          IC13 cpu
83 0400-07ff Video RAM 1  IC67 video
84 0800-0bff Video RAM 2  ???? video
85 0c00-0fff Color RAM    IC68 (3 bits for VRAM 1 and 3 bits for VRAM 2)
86 1000-1fff RAM          ???? Character generator
87 3000-3fff ROM 4/5      IC12
88 4000-4fff ROM 1        IC07
89 5000-5fff ROM 2        IC08
90 6000-6fff ROM 3        IC09
91 7000-7fff ROM 4        IC10
92 8000-8fff ROM 5        IC14
93 9000-9fff ROM 6        IC15
94 
95 read:
96 b104      IN0
97 b105      IN1
98 b106      DSW
99 b107      IN2
100 
101 write
102 b000      Sound Port 0
103 b001      Sound Port 1
104 b100      ????
105 b103      bit 7 = flip screen
106           bit 4-6 = music 2
107           bit 3 = char bank selector
108           bit 0-2 = background color
109 b106      ????
110 b200      y scroll register
111 b300      x scroll register
112 
113 Interrupts: VBlank causes an IRQ. Coin insertion causes a NMI.
114 
115 ****************************************************************************
116 
117 Nibbler information:
118 
119 Version Number -  Hold DOWN on controller after crosshatch appears.  A number
120 will show up to the right of the primary game creator's initials "JU".
121 
122 The music that has been in MAME for this game since it was first added
123 is not from Nibbler!  IC51 is a leftover from the game board to which the
124 conversion kit for Nibbler was applied, a Pioneer Balloon, and is where MAME's
125 original rom dump came from.  Both the dedicated cabinet boards and the
126 conversion kit boards for Nibbler never came with nor do the manuals for them
127 list a "iC51" in the parts list breakdown.  In fact, sound roms between different
128 games using the snk6502 custom sound can largely be interchanged with another
129 using the same.
130 
131 ****************************************************************************
132 
133 Stephh's notes (based on the games M6502 code and some tests) :
134 
135 1a) 'vanguard'
136 
137   - There are 5 different coinage settings according to the game code
138     which are based on DSW bits 1 to 3 :
139 
140       bit 3   bit 2   bit 1    effect
141        OFF     OFF     OFF      1C_1C
142        OFF     OFF     ON       2C_1C   (manual tells this is the default setting)
143        OFF     ON      OFF      1C_3C
144        ON      OFF     OFF      1C_2C
145        ON      ON      OFF      1C_6C
146 
147     The 3 other combinaisons give 1C_1C
148   - From the manual, it says that DSW bit 6 determines the cost of a game :
149       * bit 6 = 0 : "25c / game"
150       * bit 6 = 1 : "50c / game"
151     When you look at the game code, it appears to be some of "Bonus Coinage" :
152       * bit 6 = 0 : you get an additional credit each time you insert 1 coin
153       * bit 6 = 1 : you get an additional credit each time you insert 2 coins
154   - So, instead of having something like this :
155         PORT_DIPNAME( 0x0e, 0x02, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:!2,!3,!4")
156         PORT_DIPSETTING(    0x02, "25c= 1C/1C 2C/3C 50c= 2C/2C" )
157         PORT_DIPSETTING(    0x00, "25c= 1C/2C 50c= 1C/1C 2C/3C" )
158         PORT_DIPSETTING(    0x08, "25c= 1C/3C 50c= 1C/2C 2C/5C" )
159         PORT_DIPSETTING(    0x04, "25c= 1C/4C 50c= 1C/3C 2C/7C" )
160         PORT_DIPSETTING(    0x0c, "25c= 1C/7C 50c= 1C/6C 2C/13C" )
161         duplicate settings - untested in game code
162         PORT_DIPSETTING(    0x06, "25c= 1C/2C 50c= 1C/1C 2C/3C" )
163         PORT_DIPSETTING(    0x0a, "25c= 1C/2C 50c= 1C/1C 2C/3C" )
164         PORT_DIPSETTING(    0x0e, "25c= 1C/2C 50c= 1C/1C 2C/3C" )
165         ...
166         PORT_DIPNAME( 0x40, 0x00, "Game Cost" ) PORT_DIPLOCATION("SW1:!7")
167         PORT_DIPSETTING(    0x00, "25c / game" )
168         PORT_DIPSETTING(    0x40, "50c / game" )
169     or using conditional Dip Switches, I've coded this the way I did.
170   - You can always continue, provided you're on the 1st pattern.
171     The continue text is in English !
172   - 10 letters when you enter your initials
173 
174 1b) 'vangrdce'
175 
176   - Code for coinage is the same as for 'vanguard'.
177   - You can always continue, provided you're on the 1st pattern.
178     The continue text is in English !
179   - 3 letters when you enter your initials
180 
181 1c) 'vanguarj'
182 
183   - Code for coinage is the same as for 'vanguard'.
184   - You can always continue, provided you're on the 1st pattern.
185     The continue text is in Japanese !
186   - 10 letters when you enter your initials
187 
188 2a) 'fantasy'
189 
190   - Code for coinage is the same as for 'vanguard'.
191   - You can always continue, provided you're on the 1st pattern.
192     Note that the continue text is in German !
193   - 3 letters when you enter your initials
194   - I can't tell if it's an ingame bug or not, but there's a mix
195     between "COIN" and "CREDIT" ("COCR" is displayed)
196 
197 2b) 'fantasyu'
198 
199   - Code for coinage is the same as for 'vanguard'.
200   - This version seems easier than 'fantasy', especially on level 2
201     where you have a sword and an easier maze.
202   - Code has been added to test DSW bit 7 to allow or not a continue play.
203     Note that the continue play is only available on the 1st pattern.
204   - 3 letters when you enter your initials
205   - "Fantasy" is written with different "font" and color
206   - "CREDIT" is displayed instead of "COIN"
207 
208 2b) 'fantasyj'
209 
210   - Code for coinage is the same as for 'vanguard'.
211   - This version seems easier than 'fantasy', especially on level 2
212     where you have a sword and an easier maze.
213   - Code has been added to test DSW bit 7 to allow or not a continue play.
214     Note that the continue play is only available on the 1st pattern.
215     Also note that the continue text is still in English !
216   - 3 letters when you enter your initials
217   - "COIN" is correctly displayed.
218 
219 3)  'pballoon'
220 
221   - Code for coinage is the same as for 'vanguard'.
222   - The "Language" Dip Switch only has an effect at the end of the pattern
223     when it displays "LAND HERE" or what I suppose to be same in Japanese.
224   - 3 letters when you enter your initials
225   - "CREDIT" is displayed
226 
227 4a) 'nibbler6'
228 
229   - "Lives settings" : 3, 4, 5 or 6 (table at 0x4edf)
230   - Bonus life every 4 levels
231   - Simplified instructions
232   - DSW bit 2 determines what happens when the snake touches a corner (code at 0x3c91) :
233       * bit 2 = 0 : pause for 13 frames
234       * bit 2 = 1 : no pause
235 
236 4b) 'nibbler'
237 
238   - "Lives settings" : 3, 4, 5 or 6 (table at 0x5bf0)
239   - Bonus life every 4 levels
240   - Detailed instructions
241   - DSW bit 2 is no more tested when the snake touches a corner (code at 0x3b3c);
242     this means that the snake ALWAYS pauses for 13 frames.
243     However, there is extra code where it is tested to determine difficulty
244     (code at 0x31b4 and 0x32f5 - tables at 0x3391 and 0x33b2)
245 
246 4c) 'nibbler8'
247 
248   - code based on 'nibbler'
249   - "Lives settings" : 2, 3, 4 or 5 (table at 0x5be7)
250   - Bonus life every 4 levels
251   - Detailed instructions
252   - The snake ALWAYS pauses for 13 frames (code at 0x3b38) when it touches a corner
253     and DSW bit 2 determines difficulty as in 'nibbler'
254     (code at 0x31b0 and 0x32f1 - tables at 0x338d and 0x33ae)
255 
256 4d) 'nibblero'
257 
258   - code is the same as 'nibbler8' (same routines, same code and tables addresses)
259   - "Lives settings" : 2, 3, 4 or 5 (table at 0x5be7)
260   - Bonus life every 8 levels
261   - Detailed instructions
262   - The snake ALWAYS pauses for 13 frames (code at 0x3b38) when it touches a corner
263     and DSW bit 2 determines difficulty as in 'nibbler'
264     (code at 0x31b0 and 0x32f1 - tables at 0x338d and 0x33ae)
265   - The game is harder than 'nibblerb' because the tables at 0x338d and 0x33ae
266     have higher values; so the snake goes faster and grows longer.
267 
268 ***************************************************************************/
269 
270 /*
271 
272     TODO:
273 
274     - sasuke/satansat/vanguard discrete sound
275     - vanguard/fantasy speech (hd38880/hd38882 emulation)
276     - music freq (Satan of Saturn and clone)
277     - correct music waveform/volume control
278     - correct ROM names
279 
280 */
281 
282 #include "emu.h"
283 #include "includes/snk6502.h"
284 #include "audio/snk6502.h"
285 
286 #include "cpu/m6502/m6502.h"
287 #include "sound/samples.h"
288 #include "sound/sn76477.h"
289 #include "video/mc6845.h"
290 #include "screen.h"
291 #include "speaker.h"
292 
293 
294 #define MASTER_CLOCK    XTAL(11'289'000)
295 
296 
machine_start()297 void snk6502_state::machine_start()
298 {
299 	// these could be split in different MACHINE_STARTs to save only
300 	// what's actually needed, but is the extra complexity really worth it?
301 	save_item(NAME(m_sasuke_counter)); // sasuke only
302 	save_item(NAME(m_charbank));
303 	save_item(NAME(m_backcolor));
304 	save_item(NAME(m_irq_mask)); // satansat only
305 }
306 
307 /* binary counter (1.4MHz update) */
TIMER_DEVICE_CALLBACK_MEMBER(snk6502_state::sasuke_update_counter)308 TIMER_DEVICE_CALLBACK_MEMBER(snk6502_state::sasuke_update_counter)
309 {
310 	m_sasuke_counter += 0x10;
311 }
312 
sasuke_start_counter()313 void snk6502_state::sasuke_start_counter()
314 {
315 	m_sasuke_counter = 0;
316 }
317 
318 
319 /*************************************
320  *
321  *  Custom input ports
322  *
323  *************************************/
324 
CUSTOM_INPUT_MEMBER(snk6502_state::sasuke_count_r)325 CUSTOM_INPUT_MEMBER(snk6502_state::sasuke_count_r)
326 {
327 	return (m_sasuke_counter >> 4);
328 }
329 
330 
331 /*************************************
332  *
333  *  Memory maps
334  *
335  *************************************/
336 
sasuke_map(address_map & map)337 void snk6502_state::sasuke_map(address_map &map)
338 {
339 	map(0x0000, 0x03ff).ram();
340 	map(0x0400, 0x07ff).ram().w(FUNC(snk6502_state::videoram2_w)).share("videoram2");
341 	map(0x0800, 0x0bff).ram().w(FUNC(snk6502_state::videoram_w)).share("videoram");
342 	map(0x0c00, 0x0fff).ram().w(FUNC(snk6502_state::colorram_w)).share("colorram");
343 	map(0x1000, 0x1fff).ram().w(FUNC(snk6502_state::charram_w)).share("charram");
344 	map(0x3000, 0x3000).w("crtc", FUNC(mc6845_device::address_w));
345 	map(0x3001, 0x3001).w("crtc", FUNC(mc6845_device::register_w));
346 	map(0x4000, 0x8fff).rom();
347 	map(0xb000, 0xb001).w("snk6502", FUNC(sasuke_sound_device::sound_w));
348 	map(0xb002, 0xb002).w(FUNC(snk6502_state::satansat_b002_w));  /* flip screen & irq enable */
349 	map(0xb003, 0xb003).w(FUNC(snk6502_state::satansat_backcolor_w));
350 	map(0xb004, 0xb004).portr("IN0");
351 	map(0xb005, 0xb005).portr("IN1");
352 	map(0xb006, 0xb006).portr("DSW");
353 	map(0xb007, 0xb007).portr("IN2");
354 	map(0xf800, 0xffff).rom();
355 }
356 
satansat_map(address_map & map)357 void snk6502_state::satansat_map(address_map &map)
358 {
359 	map(0x0000, 0x03ff).ram();
360 	map(0x0400, 0x07ff).ram().w(FUNC(snk6502_state::videoram2_w)).share("videoram2");
361 	map(0x0800, 0x0bff).ram().w(FUNC(snk6502_state::videoram_w)).share("videoram");
362 	map(0x0c00, 0x0fff).ram().w(FUNC(snk6502_state::colorram_w)).share("colorram");
363 	map(0x1000, 0x1fff).ram().w(FUNC(snk6502_state::charram_w)).share("charram");
364 	map(0x3000, 0x3000).w("crtc", FUNC(mc6845_device::address_w));
365 	map(0x3001, 0x3001).w("crtc", FUNC(mc6845_device::register_w));
366 	map(0x4000, 0x9fff).rom();
367 	map(0xb000, 0xb001).w("snk6502", FUNC(satansat_sound_device::sound_w));
368 	map(0xb002, 0xb002).w(FUNC(snk6502_state::satansat_b002_w));  /* flip screen & irq enable */
369 	map(0xb003, 0xb003).w(FUNC(snk6502_state::satansat_backcolor_w));
370 	map(0xb004, 0xb004).portr("IN0");
371 	map(0xb005, 0xb005).portr("IN1");
372 	map(0xb006, 0xb006).portr("DSW");
373 	map(0xb007, 0xb007).portr("IN2");
374 	map(0xf800, 0xffff).rom();
375 }
376 
highmem_r(offs_t offset)377 uint8_t vanguard_state::highmem_r(offs_t offset)
378 {
379 	// RDY toggles on ϕ2 during each access to memory above $3FFF, generating one wait state
380 	if (!machine().side_effects_disabled())
381 		m_maincpu->adjust_icount(-1);
382 
383 	return m_highmem->read8(offset + 0x4000);
384 }
385 
highmem_w(offs_t offset,uint8_t data)386 void vanguard_state::highmem_w(offs_t offset, uint8_t data)
387 {
388 	// RDY toggles on ϕ2 during each access to memory above $3FFF, but 6502 does not apply wait states to writes
389 	m_highmem->write8(offset + 0x4000, data);
390 }
391 
vanguard_map(address_map & map)392 void vanguard_state::vanguard_map(address_map &map)
393 {
394 	map(0x0000, 0x03ff).ram();
395 	map(0x0400, 0x07ff).ram().w(FUNC(vanguard_state::videoram2_w)).share("videoram2");
396 	map(0x0800, 0x0bff).ram().w(FUNC(vanguard_state::videoram_w)).share("videoram");
397 	map(0x0c00, 0x0fff).ram().w(FUNC(vanguard_state::colorram_w)).share("colorram");
398 	map(0x1000, 0x1fff).ram().w(FUNC(vanguard_state::charram_w)).share("charram");
399 	map(0x3000, 0x3000).w("crtc", FUNC(mc6845_device::address_w));
400 	map(0x3001, 0x3001).w("crtc", FUNC(mc6845_device::register_w));
401 	map(0x3100, 0x3102).w("snk6502", FUNC(vanguard_sound_device::sound_w));
402 	map(0x3103, 0x3103).w(FUNC(vanguard_state::flipscreen_w));
403 	map(0x3104, 0x3104).portr("IN0");
404 	map(0x3105, 0x3105).portr("IN1");
405 	map(0x3106, 0x3106).portr("DSW");
406 	map(0x3107, 0x3107).portr("IN2");
407 	map(0x3200, 0x3200).w(FUNC(vanguard_state::scrollx_w));
408 	map(0x3300, 0x3300).w(FUNC(vanguard_state::scrolly_w));
409 	map(0x3400, 0x3400).w("snk6502", FUNC(vanguard_sound_device::speech_w)); // speech
410 	map(0x4000, 0xffff).rw(FUNC(vanguard_state::highmem_r), FUNC(vanguard_state::highmem_w));
411 }
412 
vanguard_upper_map(address_map & map)413 void vanguard_state::vanguard_upper_map(address_map &map)
414 {
415 	map(0x4000, 0xbfff).rom().region("maincpu", 0x4000);
416 	map(0xf000, 0xffff).rom().region("maincpu", 0xf000); /* for the reset / interrupt vectors */
417 }
418 
fantasy_map(address_map & map)419 void fantasy_state::fantasy_map(address_map &map)
420 {
421 	map(0x0000, 0x03ff).ram();
422 	map(0x0400, 0x07ff).ram().w(FUNC(fantasy_state::videoram2_w)).share("videoram2");
423 	map(0x0800, 0x0bff).ram().w(FUNC(fantasy_state::videoram_w)).share("videoram");
424 	map(0x0c00, 0x0fff).ram().w(FUNC(fantasy_state::colorram_w)).share("colorram");
425 	map(0x1000, 0x1fff).ram().w(FUNC(fantasy_state::charram_w)).share("charram");
426 	map(0x2000, 0x2000).w("crtc", FUNC(mc6845_device::address_w));
427 	map(0x2001, 0x2001).w("crtc", FUNC(mc6845_device::register_w));
428 	map(0x2100, 0x2102).w("snk6502", FUNC(fantasy_sound_device::sound_w));
429 	map(0x2103, 0x2103).w(FUNC(fantasy_state::fantasy_flipscreen_w)); // affects both video and sound
430 	map(0x2104, 0x2104).portr("IN0");
431 	map(0x2105, 0x2105).portr("IN1");
432 	map(0x2106, 0x2106).portr("DSW");
433 	map(0x2107, 0x2107).portr("IN2");
434 	map(0x2200, 0x2200).w(FUNC(fantasy_state::scrollx_w));
435 	map(0x2300, 0x2300).w(FUNC(fantasy_state::scrolly_w));
436 	map(0x2400, 0x2400).w("snk6502", FUNC(fantasy_sound_device::speech_w));  // speech
437 	map(0x3000, 0x3fff).rom().region("maincpu", 0x3000);
438 	map(0x4000, 0xffff).rw(FUNC(fantasy_state::highmem_r), FUNC(fantasy_state::highmem_w));
439 }
440 
pballoon_map(address_map & map)441 void fantasy_state::pballoon_map(address_map &map)
442 {
443 	map(0x0000, 0x03ff).ram();
444 	map(0x0400, 0x07ff).ram().w(FUNC(fantasy_state::videoram2_w)).share("videoram2");
445 	map(0x0800, 0x0bff).ram().w(FUNC(fantasy_state::videoram_w)).share("videoram");
446 	map(0x0c00, 0x0fff).ram().w(FUNC(fantasy_state::colorram_w)).share("colorram");
447 	map(0x1000, 0x1fff).ram().w(FUNC(fantasy_state::charram_w)).share("charram");
448 	map(0x3000, 0x3fff).rom().region("maincpu", 0x3000);
449 	map(0x4000, 0xffff).rw(FUNC(fantasy_state::highmem_r), FUNC(fantasy_state::highmem_w));
450 }
451 
pballoon_upper_map(address_map & map)452 void fantasy_state::pballoon_upper_map(address_map &map)
453 {
454 	map(0x4000, 0x9fff).rom().region("maincpu", 0x4000);
455 	map(0xb000, 0xb000).w("crtc", FUNC(mc6845_device::address_w));
456 	map(0xb001, 0xb001).w("crtc", FUNC(mc6845_device::register_w));
457 	map(0xb100, 0xb102).w("snk6502", FUNC(fantasy_sound_device::sound_w));
458 	map(0xb103, 0xb103).w(FUNC(fantasy_state::fantasy_flipscreen_w)); // affects both video and sound
459 	map(0xb104, 0xb104).portr("IN0");
460 	map(0xb105, 0xb105).portr("IN1");
461 	map(0xb106, 0xb106).portr("DSW");
462 	map(0xb107, 0xb107).portr("IN2");
463 	map(0xb200, 0xb200).w(FUNC(fantasy_state::scrollx_w));
464 	map(0xb300, 0xb300).w(FUNC(fantasy_state::scrolly_w));
465 	map(0xf000, 0xffff).rom().region("maincpu", 0xf000);
466 }
467 
468 
469 /*************************************
470  *
471  *  Port definitions
472  *
473  *************************************/
474 
INPUT_CHANGED_MEMBER(snk6502_state::coin_inserted)475 INPUT_CHANGED_MEMBER(snk6502_state::coin_inserted)
476 {
477 	m_maincpu->set_input_line(INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
478 }
479 
480 static INPUT_PORTS_START( snk6502_generic_joy8way )
481 	PORT_START("IN0")
482 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
483 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
484 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
485 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
486 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_8WAY
487 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_8WAY
488 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
489 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
490 
491 	PORT_START("IN1")
492 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
493 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
494 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
495 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
496 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
497 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
498 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
499 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
500 
501 	PORT_START("IN2")
502 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, snk6502_state,coin_inserted, 0)
503 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, snk6502_state,coin_inserted, 0)
504 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
505 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
506 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
507 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
508 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
509 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 )
510 
511 	PORT_START("DSW")
512 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:!1")
513 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
514 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
515 	PORT_DIPNAME( 0x0e, 0x02, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:!2,!3,!4")
516 	PORT_DIPSETTING (   0x02, DEF_STR( 2C_1C ) )
517 	PORT_DIPSETTING (   0x00, DEF_STR( 1C_1C ) )
518 	PORT_DIPSETTING (   0x08, DEF_STR( 1C_2C ) )
519 	PORT_DIPSETTING (   0x04, DEF_STR( 1C_3C ) )
520 	PORT_DIPSETTING (   0x0c, DEF_STR( 1C_6C ) )
521 /*  PORT_DIPSETTING (   0x06, DEF_STR( 1C_1C ) ) */
522 /*  PORT_DIPSETTING (   0x0a, DEF_STR( 1C_1C ) ) */
523 /*  PORT_DIPSETTING (   0x0e, DEF_STR( 1C_1C ) ) */
524 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:!5,!6")
525 	PORT_DIPSETTING(    0x00, "3" )
526 	PORT_DIPSETTING(    0x10, "4" )
527 	PORT_DIPSETTING(    0x20, "5" )
528 /*  PORT_DIPSETTING(    0x30, "3" ) */
529 	PORT_DIPNAME( 0x40, 0x00, "Coinage Bonus" ) PORT_DIPLOCATION("SW1:!7")      /* see notes */
530 	PORT_DIPSETTING (   0x40, DEF_STR( 2C_1C ) )
531 	PORT_DIPSETTING (   0x00, DEF_STR( 1C_1C ) )
532 	PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_HIGH, "SW1:!8" )
533 INPUT_PORTS_END
534 
535 static INPUT_PORTS_START( satansat )
536 	PORT_START("IN0")
537 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
538 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
539 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
540 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_COCKTAIL
541 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_COCKTAIL
542 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
543 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 )
544 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL
545 
546 	PORT_START("IN1")
547 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
548 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
549 	PORT_BIT( 0x7c, IP_ACTIVE_HIGH, IPT_UNKNOWN )
550 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("snk6502:custom", snk6502_sound_device, music0_playing)     // music0 playing
551 
552 	PORT_START("IN2")
553 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, snk6502_state,coin_inserted, 0)
554 	PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNKNOWN )                                         /* NC */
555 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(snk6502_state, sasuke_count_r)       // connected to a binary counter
556 
557 	PORT_START("DSW")
558 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:!1")
559 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
560 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
561 	PORT_DIPNAME( 0x0a, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:!2,!4")
562 	PORT_DIPSETTING (   0x08, DEF_STR( 2C_1C ) )
563 	PORT_DIPSETTING (   0x00, DEF_STR( 1C_1C ) )
564 	PORT_DIPSETTING (   0x02, DEF_STR( 1C_2C ) )
565 /*  PORT_DIPSETTING (   0x0a, DEF_STR( 2C_1C ) ) */
566 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:!3")
567 	PORT_DIPSETTING (   0x04, "5000" )
568 	PORT_DIPSETTING (   0x00, "10000" )
569 	PORT_DIPNAME( 0x30, 0x10, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:!5,!6") /* manual says 4 is the default value */
570 	PORT_DIPSETTING (   0x00, "3" )
571 	PORT_DIPSETTING (   0x10, "4" )
572 	PORT_DIPSETTING (   0x20, "5" )
573 /*  PORT_DIPSETTING(    0x30, "3" ) */
574 	PORT_DIPUNUSED_DIPLOC( 0x40, IP_ACTIVE_HIGH, "SW1:!7" )
575 	PORT_DIPNAME( 0x80, 0x00, "RAM Test" ) PORT_DIPLOCATION("SW1:!8") /* unused according to manual */
576 	PORT_DIPSETTING (   0x00, DEF_STR( Off ) )
577 	PORT_DIPSETTING (   0x80, DEF_STR( On ) )
578 INPUT_PORTS_END
579 
580 /* Derived from 'satansat'. Might not reflect the actual hardware. Dip Switches verified from game code though. */
581 static INPUT_PORTS_START( sasuke )
582 	PORT_INCLUDE(satansat)
583 
584 	PORT_MODIFY("IN0")
585 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
586 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
587 
588 	PORT_MODIFY("IN1")
589 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
590 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
591 
592 	PORT_MODIFY("DSW")
593 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:!2")
594 	PORT_DIPSETTING (   0x00, DEF_STR( 1C_1C ) )
595 	PORT_DIPSETTING (   0x02, DEF_STR( 1C_2C ) )
596 	PORT_DIPUNUSED_DIPLOC( 0x08, IP_ACTIVE_HIGH, "SW1:!4" )
597 INPUT_PORTS_END
598 
599 static INPUT_PORTS_START( vanguard )
600 	PORT_INCLUDE(snk6502_generic_joy8way)
601 
602 	PORT_MODIFY("IN0")
603 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 )                /* fire down */
604 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON4 )                /* fire up */
605 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 )                /* fire right */
606 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )                /* fire left */
607 
608 	PORT_MODIFY("IN1")
609 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_COCKTAIL  /* fire down */
610 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_COCKTAIL  /* fire up */
611 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL  /* fire right */
612 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL  /* fire left */
613 
614 	PORT_MODIFY("IN2")
615 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("snk6502:custom", snk6502_sound_device, music0_playing)     // music0 playing
616 INPUT_PORTS_END
617 
618 static INPUT_PORTS_START( fantasy )
619 	PORT_INCLUDE(snk6502_generic_joy8way)
620 INPUT_PORTS_END
621 
622 static INPUT_PORTS_START( fantasyu )
623 	PORT_INCLUDE(fantasy)
624 
625 	PORT_MODIFY("DSW")
626 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW1:!8")
627 	PORT_DIPSETTING(    0x80, DEF_STR( No ) )
628 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )              /* 1st pattern only */
629 INPUT_PORTS_END
630 
631 static INPUT_PORTS_START( pballoon )
632 	PORT_INCLUDE(snk6502_generic_joy8way)
633 
634 	PORT_MODIFY("IN0")
635 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
636 
637 	PORT_MODIFY("IN1")
638 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
639 
640 	PORT_MODIFY("DSW")
641 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Language ) ) PORT_DIPLOCATION("SW1:!8")  /* code at 0x6c83 */
642 	PORT_DIPSETTING(    0x80, DEF_STR( English ) )
643 	PORT_DIPSETTING(    0x00, DEF_STR( Japanese ) )
644 INPUT_PORTS_END
645 
646 static INPUT_PORTS_START( nibbler )
647 	// Rock-Ola documentation recommends a "4 Way Joystick - Heavy Duty" (RMC #G-6477-A).
648 	PORT_START("IN0")
649 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_4WAY
650 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_4WAY
651 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY
652 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY
653 
654 	PORT_START("IN1")
655 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
656 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
657 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
658 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
659 
660 	PORT_START("IN2")
661 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, snk6502_state,coin_inserted, 0)
662 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, snk6502_state,coin_inserted, 0)
663 	PORT_BIT( 0x3c, IP_ACTIVE_HIGH, IPT_UNKNOWN )
664 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
665 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 )
666 
667 	PORT_START("DSW")
668 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:!1,!2")
669 	PORT_DIPSETTING(    0x00, "3" )
670 	PORT_DIPSETTING(    0x01, "4" )
671 	PORT_DIPSETTING(    0x02, "5" )
672 	PORT_DIPSETTING(    0x03, "6" )
673 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:!3")
674 	PORT_DIPSETTING(    0x00, DEF_STR( Easy ) )
675 	PORT_DIPSETTING(    0x04, DEF_STR( Hard ) )
676 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:!4")
677 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
678 	PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
679 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Service_Mode ) ) PORT_DIPLOCATION("SW1:!5")
680 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
681 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
682 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW1:!6")
683 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
684 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
685 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:!7,!8")
686 	PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
687 	PORT_DIPSETTING(    0xc0, "2 Coins/1 Credit 4/3" )
688 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
689 	PORT_DIPSETTING(    0x80, "1 Coin/1 Credit 2/3" )
690 
691 	/* There are no buttons on a real "Nibbler" cabinet, but I guess that the game was tested
692 	   with a "Vanguard" cabinet so they have been mapped with debug features. */
693 	PORT_START("DEBUG")
694 	PORT_CONFNAME( 0x01, 0x00, "Enable Debug Inputs" )
695 	PORT_CONFSETTING(    0x00, DEF_STR( No ) )
696 	PORT_CONFSETTING(    0x01, DEF_STR( Yes ) )
697 
698 	PORT_MODIFY("IN0")
699 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_CONDITION("DEBUG", 0x01, EQUALS, 0x01) PORT_NAME("Debug 0") PORT_CODE(KEYCODE_Z) // slow down
700 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_CONDITION("DEBUG", 0x01, EQUALS, 0x01) PORT_NAME("Debug 1") PORT_CODE(KEYCODE_X)
701 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_CONDITION("DEBUG", 0x01, EQUALS, 0x01) PORT_NAME("Debug 2") PORT_CODE(KEYCODE_C)
702 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_CONDITION("DEBUG", 0x01, EQUALS, 0x01) PORT_NAME("Debug 3") PORT_CODE(KEYCODE_V)
703 	PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CONDITION("DEBUG", 0x01, EQUALS, 0x00)
704 
705 	PORT_MODIFY("IN1")
706 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_CONDITION("DEBUG", 0x01, EQUALS, 0x01) PORT_NAME("Debug 4") PORT_CODE(KEYCODE_B) // pause
707 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_CONDITION("DEBUG", 0x01, EQUALS, 0x01) PORT_NAME("Debug 5") PORT_CODE(KEYCODE_N) // unpause
708 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_CONDITION("DEBUG", 0x01, EQUALS, 0x01) PORT_NAME("Debug 6") PORT_CODE(KEYCODE_M) // end game
709 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_CONDITION("DEBUG", 0x01, EQUALS, 0x01) PORT_NAME("Debug 7") PORT_CODE(KEYCODE_COMMA)
710 	PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CONDITION("DEBUG", 0x01, EQUALS, 0x00)
711 INPUT_PORTS_END
712 
713 static INPUT_PORTS_START( nibbler8 )
714 	PORT_INCLUDE(nibbler)
715 
716 	PORT_MODIFY("DSW")
717 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:!1,!2")
718 	PORT_DIPSETTING(    0x00, "2" )
719 	PORT_DIPSETTING(    0x01, "3" )
720 	PORT_DIPSETTING(    0x02, "4" )
721 	PORT_DIPSETTING(    0x03, "5" )
722 INPUT_PORTS_END
723 
724 static INPUT_PORTS_START( nibbler6 )
725 	PORT_INCLUDE(nibbler8)
726 
727 	PORT_MODIFY("DSW")
728 	PORT_DIPNAME( 0x04, 0x00, "Pause at Corners" ) PORT_DIPLOCATION("SW1:!3")
729 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
730 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
731 INPUT_PORTS_END
732 
733 
734 /*************************************
735  *
736  *  Graphics layouts
737  *
738  *************************************/
739 
740 static const gfx_layout swapcharlayout =
741 {
742 	8,8,    /* 8*8 characters */
743 	256,    /* 256 characters */
744 	2,      /* 2 bits per pixel */
745 	{ 256*8*8, 0 }, /* the two bitplanes are separated */
746 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
747 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
748 	8*8     /* every char takes 8 consecutive bytes */
749 };
750 
751 static const gfx_layout charlayout =
752 {
753 	8,8,    /* 8*8 characters */
754 	RGN_FRAC(1,2),
755 	2,      /* 2 bits per pixel */
756 	{ 0, RGN_FRAC(1,2) }, /* the two bitplanes are separated */
757 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
758 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
759 	8*8     /* every char takes 8 consecutive bytes */
760 };
761 
762 static const gfx_layout charlayout_memory =
763 {
764 	8,8,    /* 8*8 characters */
765 	256,    /* 256 characters */
766 	2,      /* 2 bits per pixel */
767 	{ 0, 256*8*8 }, /* the two bitplanes are separated */
768 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
769 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
770 	8*8     /* every char takes 8 consecutive bytes */
771 };
772 
773 
774 static GFXDECODE_START( gfx_sasuke )
775 	GFXDECODE_ENTRY( nullptr,           0x1000, swapcharlayout,      0, 4 )    /* the game dynamically modifies this */
776 	GFXDECODE_ENTRY( "gfx1", 0x0000, swapcharlayout,    4*4, 4 )
777 GFXDECODE_END
778 
GFXDECODE_START(gfx_satansat)779 static GFXDECODE_START( gfx_satansat )
780 	GFXDECODE_ENTRY( nullptr,           0x1000, charlayout_memory,   0, 4 )    /* the game dynamically modifies this */
781 	GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout,        4*4, 4 )
782 GFXDECODE_END
783 
784 static GFXDECODE_START( gfx_vanguard )
785 	GFXDECODE_ENTRY( nullptr,           0x1000, charlayout_memory,   0, 8 )    /* the game dynamically modifies this */
786 	GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout,        8*4, 8 )
787 GFXDECODE_END
788 
789 
790 /*************************************
791  *
792  *  Interrupt Generators
793  *
794  *************************************/
795 
796 INTERRUPT_GEN_MEMBER(snk6502_state::satansat_interrupt)
797 {
798 	if(m_irq_mask)
799 		device.execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE); /* one IRQ per frame */
800 }
801 
INTERRUPT_GEN_MEMBER(snk6502_state::snk6502_interrupt)802 INTERRUPT_GEN_MEMBER(snk6502_state::snk6502_interrupt)
803 {
804 	device.execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE); /* one IRQ per frame */
805 }
806 
807 
808 /*************************************
809  *
810  *  Machine initialisation
811  *
812  *************************************/
813 
MACHINE_RESET_MEMBER(snk6502_state,sasuke)814 MACHINE_RESET_MEMBER(snk6502_state,sasuke)
815 {
816 	sasuke_start_counter();
817 }
818 
819 
820 /*************************************
821  *
822  *  Machine drivers
823  *
824  *************************************/
825 
sasuke(machine_config & config)826 void snk6502_state::sasuke(machine_config &config)
827 {
828 	// basic machine hardware
829 	M6502(config, m_maincpu, MASTER_CLOCK / 16); // 700 kHz
830 	m_maincpu->set_addrmap(AS_PROGRAM, &snk6502_state::sasuke_map);
831 	m_maincpu->set_vblank_int("screen", FUNC(snk6502_state::satansat_interrupt));
832 
833 	MCFG_MACHINE_RESET_OVERRIDE(snk6502_state,sasuke)
834 
835 	// video hardware
836 
837 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
838 	screen.set_refresh_hz((MASTER_CLOCK / 16) / (45 * 32 * 8));
839 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
840 	screen.set_size(32*8, 32*8);
841 	screen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
842 	screen.set_screen_update(FUNC(snk6502_state::screen_update));
843 
844 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_sasuke);
845 	PALETTE(config, m_palette, FUNC(snk6502_state::satansat_palette), 32);
846 	MCFG_VIDEO_START_OVERRIDE(snk6502_state,satansat)
847 
848 	mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK / 16));
849 	crtc.set_screen("screen");
850 	crtc.set_show_border_area(false);
851 	crtc.set_char_width(8);
852 
853 	TIMER(config, "sasuke_timer").configure_periodic(FUNC(snk6502_state::sasuke_update_counter), attotime::from_hz(MASTER_CLOCK / 8));
854 
855 	// sound hardware
856 	SASUKE_SOUND(config, "snk6502", 0);
857 }
858 
satansat(machine_config & config)859 void snk6502_state::satansat(machine_config &config)
860 {
861 	sasuke(config);
862 
863 	// basic machine hardware
864 	m_maincpu->set_addrmap(AS_PROGRAM, &snk6502_state::satansat_map);
865 
866 	// video hardware
867 	m_gfxdecode->set_info(gfx_satansat);
868 
869 	// sound hardware
870 	SATANSAT_SOUND(config.replace(), "snk6502", 0);
871 }
872 
vanguard(machine_config & config)873 void vanguard_state::vanguard(machine_config &config)
874 {
875 	// basic machine hardware
876 	M6502(config, m_maincpu, MASTER_CLOCK / 8); // runs twice as fast as CRTC
877 	m_maincpu->set_addrmap(AS_PROGRAM, &vanguard_state::vanguard_map);
878 	m_maincpu->set_vblank_int("screen", FUNC(vanguard_state::snk6502_interrupt));
879 
880 	ADDRESS_MAP_BANK(config, m_highmem);
881 	m_highmem->set_addrmap(0, &vanguard_state::vanguard_upper_map);
882 	m_highmem->set_data_width(8);
883 	m_highmem->set_addr_width(16);
884 
885 	// video hardware
886 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
887 	screen.set_refresh_hz((MASTER_CLOCK / 16) / (45 * 32 * 8));
888 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
889 	screen.set_size(32*8, 32*8);
890 	screen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
891 	screen.set_screen_update(FUNC(vanguard_state::screen_update));
892 
893 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_vanguard);
894 	PALETTE(config, m_palette, FUNC(vanguard_state::snk6502_palette), 64);
895 	MCFG_VIDEO_START_OVERRIDE(vanguard_state,snk6502)
896 
897 	mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK / 16));
898 	crtc.set_screen("screen");
899 	crtc.set_show_border_area(false);
900 	crtc.set_char_width(8);
901 
902 	// sound hardware
903 	VANGUARD_SOUND(config, "snk6502", 0);
904 }
905 
fantasy(machine_config & config)906 void fantasy_state::fantasy(machine_config &config)
907 {
908 	vanguard(config);
909 
910 	// basic machine hardware
911 	m_maincpu->set_addrmap(AS_PROGRAM, &fantasy_state::fantasy_map);
912 
913 	// sound hardware
914 	FANTASY_SOUND(config.replace(), "snk6502", 0);
915 }
916 
nibbler(machine_config & config)917 void fantasy_state::nibbler(machine_config &config)
918 {
919 	fantasy(config);
920 
921 	// sound hardware
922 	NIBBLER_SOUND(config.replace(), "snk6502", 0);
923 }
924 
pballoon(machine_config & config)925 void fantasy_state::pballoon(machine_config &config)
926 {
927 	nibbler(config);
928 
929 	// basic machine hardware
930 	m_maincpu->set_addrmap(AS_PROGRAM, &fantasy_state::pballoon_map);
931 	m_highmem->set_addrmap(AS_PROGRAM, &fantasy_state::pballoon_upper_map);
932 
933 	MCFG_VIDEO_START_OVERRIDE(snk6502_state, pballoon)
934 
935 	// sound hardware
936 	PBALLOON_SOUND(config.replace(), "snk6502", 0);
937 }
938 
939 
940 /*************************************
941  *
942  *  ROM definitions
943  *
944  *************************************/
945 
946 ROM_START( sasuke )
947 	ROM_REGION( 0x10000, "maincpu", 0 )
948 	ROM_LOAD( "sc1",          0x4000, 0x0800, CRC(34cbbe03) SHA1(3d643e11370e61dde0c42c7761a856c5cf53d621) )
949 	ROM_LOAD( "sc2",          0x4800, 0x0800, CRC(38cc14f0) SHA1(d60df67f2a32c131e8957e225b79618d6262463d) )
950 	ROM_LOAD( "sc3",          0x5000, 0x0800, CRC(54c41285) SHA1(5618c2ac745bbde96bfda7f01f7aee7e2b643d7e) )
951 	ROM_LOAD( "sc4",          0x5800, 0x0800, CRC(23edafcf) SHA1(bda3bcb506f6e23f422aafd7ca9b95bfb4d1d8e1) )
952 	ROM_LOAD( "sc5",          0x6000, 0x0800, CRC(ca410e4f) SHA1(0d09422d01b4359853c173a4cb18c9b5fbc7fe7c) )
953 	ROM_LOAD( "sc6",          0x6800, 0x0800, CRC(80406afb) SHA1(2c4a34a7450fa7258c5e6ead9b1fd6c6b973f081) )
954 	ROM_LOAD( "sc7",          0x7000, 0x0800, CRC(04d0f104) SHA1(73ed501f70d2a9e8994f8392f617450eafef39b3) )
955 	ROM_LOAD( "sc8",          0x7800, 0x0800, CRC(0219104b) SHA1(fd5c43304d59bc34e9ae6ef7576d75cf319d823e) )
956 	ROM_RELOAD(               0xf800, 0x0800 ) /* for the reset/interrupt vectors */
957 	ROM_LOAD( "sc9",          0x8000, 0x0800, CRC(d6ff889a) SHA1(1eea0366205dd0d9bffb5d093f259edc1d51cbe0) )
958 	ROM_LOAD( "sc10",         0x8800, 0x0800, CRC(19df6b9a) SHA1(95e904251c39dcef227a4c125fc573e958ee78b7) )
959 
960 	ROM_REGION( 0x1000, "gfx1", 0 )
961 	ROM_LOAD( "mcs_c",        0x0000, 0x0800, CRC(aff9743d) SHA1(a968a193ca551d92f79e09d1761dd2ccebc76eee) )
962 	ROM_LOAD( "mcs_d",        0x0800, 0x0800, CRC(9c805120) SHA1(74b83daa3ce3c9f7d96ad872b9134edd6f1bcb8a) )
963 
964 	ROM_REGION( 0x0020, "proms", 0 )
965 	ROM_LOAD( "sasuke.clr",   0x0000, 0x0020, CRC(b70f34c1) SHA1(890cfbb25e14112713ba7900b9cd56554a8bc1ec) )
966 
967 	ROM_REGION( 0x1000, "snk6502", 0 )  /* sound data for Vanguard-style audio section */
968 	ROM_LOAD( "sc11",         0x0000, 0x0800, CRC(24a0e121) SHA1(e3cde355309de6678026d595955297258f069946) )
969 ROM_END
970 
971 ROM_START( satansat )
972 	ROM_REGION( 0x10000, "maincpu", 0 )
973 	ROM_LOAD( "ss1",          0x4000, 0x0800, CRC(549dd13a) SHA1(06b55d0b1da84bef30857faa398aabfd04365eb6) )
974 	ROM_LOAD( "ss2",          0x4800, 0x0800, CRC(04972fa8) SHA1(89833a7c893168acd5599ca7ad4b33a8f3df40c5) )
975 	ROM_LOAD( "ss3",          0x5000, 0x0800, CRC(9caf9057) SHA1(26d439678e5e4d375ffac60126f45de599575bfd) )
976 	ROM_LOAD( "ss4",          0x5800, 0x0800, CRC(e1bdcfe1) SHA1(c99457c18fae8de79bbbe6bc0471fdc83f1e9b19) )
977 	ROM_LOAD( "ss5",          0x6000, 0x0800, CRC(d454de19) SHA1(ae8abb8a9d999d11ba6ad341bf635ae822d5746f) )
978 	ROM_LOAD( "ss6",          0x6800, 0x0800, CRC(7fbd5d30) SHA1(be0554ade440bf255131466ee8bd2905d3f446a8) )
979 	ROM_LOAD( "zarz128.15",   0x7000, 0x0800, CRC(93ea2df9) SHA1(4f7d076deef1e14b568b06974194861d3789ab5c) )
980 	ROM_LOAD( "zarz129.16",   0x7800, 0x0800, CRC(e67ec873) SHA1(14158914f07cabe61abc400c371d742ceb61d165) )
981 	ROM_RELOAD(               0xf800, 0x0800 ) /* for the reset/interrupt vectors */
982 	ROM_LOAD( "zarz130.22",   0x8000, 0x0800, CRC(22c44650) SHA1(063915cde86aece8860db1df15497cde669e73bd) )
983 	ROM_LOAD( "ss10",         0x8800, 0x0800, CRC(8f1b313a) SHA1(0c7832505a1287533d9b2d7f2d54000b3b44e40d) )
984 	ROM_LOAD( "ss11",         0x9000, 0x0800, CRC(e74f98e0) SHA1(89a93de6105195e0e5d255bfa240538ded155fb9) )
985 
986 	ROM_REGION( 0x1000, "gfx1", 0 )
987 	ROM_LOAD( "zarz135.73",   0x0000, 0x0800, CRC(e837c62b) SHA1(97552b1e413a3934f4dc5a6fc9fc1fa8ba7a2e7e) )
988 	ROM_LOAD( "zarz136.75",   0x0800, 0x0800, CRC(83f61623) SHA1(4cb28f85f32d13bfa364c376ea3e30fd451b5884) )
989 
990 	ROM_REGION( 0x0020, "proms", 0 )
991 	ROM_LOAD( "zarz138.03",   0x0000, 0x0020, CRC(5dd6933a) SHA1(417d827d9e47b6db01fecc2164e5ef332d4cd70e) )
992 
993 	ROM_REGION( 0x1000, "snk6502", 0 )  /* sound data for Vanguard-style audio section */
994 	ROM_LOAD( "ss12",         0x0000, 0x0800, CRC(dee01f24) SHA1(92c8545226a31412239dad4aa2715b51264ad22e) )
995 	ROM_LOAD( "zarz134.54",   0x0800, 0x0800, CRC(580934d2) SHA1(c1c7eba56bca2a0ea6a68c0245b071a3308f92bd) )
996 ROM_END
997 
998 ROM_START( satansata )
999 	ROM_REGION( 0x10000, "maincpu", 0 )
1000 	ROM_LOAD( "ic7.bin",   0x4000, 0x0800, CRC(549dd13a) SHA1(06b55d0b1da84bef30857faa398aabfd04365eb6) )
1001 	ROM_LOAD( "ic8.bin",   0x4800, 0x0800, CRC(04972fa8) SHA1(89833a7c893168acd5599ca7ad4b33a8f3df40c5) )
1002 	ROM_LOAD( "ic9.bin",   0x5000, 0x0800, CRC(9caf9057) SHA1(26d439678e5e4d375ffac60126f45de599575bfd) )
1003 	ROM_LOAD( "ic10.bin",  0x5800, 0x0800, CRC(e1bdcfe1) SHA1(c99457c18fae8de79bbbe6bc0471fdc83f1e9b19) )
1004 	ROM_LOAD( "ic13.bin",  0x6000, 0x0800, CRC(d454de19) SHA1(ae8abb8a9d999d11ba6ad341bf635ae822d5746f) )
1005 	ROM_LOAD( "ic14.bin",  0x6800, 0x0800, CRC(7fbd5d30) SHA1(be0554ade440bf255131466ee8bd2905d3f446a8) )
1006 	ROM_LOAD( "ic15.bin",  0x7000, 0x0800, CRC(93ea2df9) SHA1(4f7d076deef1e14b568b06974194861d3789ab5c) )
1007 	ROM_LOAD( "ic16.bin",  0x7800, 0x0800, CRC(9ec5fe09) SHA1(ab50373b330f21f7f64657e088ba6968a3176be4) ) // different
1008 	ROM_RELOAD(            0xf800, 0x0800 ) /* for the reset/interrupt vectors */
1009 	ROM_LOAD( "ic22.bin",  0x8000, 0x0800, CRC(21092f1f) SHA1(dd8be669cd7a51ec84e020d0a7fa50708155d084) ) // different
1010 	ROM_LOAD( "ic23.bin",   0x8800, 0x0800, CRC(8f1b313a) SHA1(0c7832505a1287533d9b2d7f2d54000b3b44e40d) )
1011 	ROM_LOAD( "ic24.bin",   0x9000, 0x0800, CRC(e74f98e0) SHA1(89a93de6105195e0e5d255bfa240538ded155fb9) )
1012 
1013 	ROM_REGION( 0x1000, "gfx1", 0 )
1014 	ROM_LOAD( "ic73.bin",   0x0000, 0x0800, CRC(e837c62b) SHA1(97552b1e413a3934f4dc5a6fc9fc1fa8ba7a2e7e) )
1015 	ROM_LOAD( "ic75.bin",   0x0800, 0x0800, CRC(83f61623) SHA1(4cb28f85f32d13bfa364c376ea3e30fd451b5884) )
1016 
1017 	ROM_REGION( 0x0020, "proms", 0 )
1018 	ROM_LOAD( "zarz138.03",   0x0000, 0x0020, CRC(5dd6933a) SHA1(417d827d9e47b6db01fecc2164e5ef332d4cd70e) )
1019 
1020 	ROM_REGION( 0x1000, "snk6502", 0 )  /* sound data for Vanguard-style audio section */
1021 	ROM_LOAD( "ic53.bin",   0x0000, 0x0800, CRC(8cb95a6b) SHA1(41d3986f1c2876a914b0087127ae99e9a2b41564) ) // different
1022 	ROM_LOAD( "ic54.bin",   0x0800, 0x0800, CRC(580934d2) SHA1(c1c7eba56bca2a0ea6a68c0245b071a3308f92bd) )
1023 ROM_END
1024 
1025 ROM_START( zarzon )
1026 	ROM_REGION( 0x10000, "maincpu", 0 )
1027 	ROM_LOAD( "zarz122.07",   0x4000, 0x0800, CRC(bdfa67e2) SHA1(0de06cf53ee21b8f14b933b61e6dc706338746c4) )
1028 	ROM_LOAD( "zarz123.08",   0x4800, 0x0800, CRC(d034e61e) SHA1(dc802c3d7a9f7e473e323e3272fca406dab6d55d) )
1029 	ROM_LOAD( "zarz124.09",   0x5000, 0x0800, CRC(296397ea) SHA1(3a1ad7f3c4453bb20768b3e3ce04cd76873aa0ee) )
1030 	ROM_LOAD( "zarz125.10",   0x5800, 0x0800, CRC(26dc5e66) SHA1(07f47f3497bb85640e5e6a89ad7d6579108347fe) )
1031 	ROM_LOAD( "zarz126.13",   0x6000, 0x0800, CRC(cee18d7f) SHA1(5a7e60b6be06b3038f2eb81e76fc54cb65d4877b) )
1032 	ROM_LOAD( "zarz127.14",   0x6800, 0x0800, CRC(bbd2cc0d) SHA1(1128020b7c0f38f5ff2cc2da0fd2df5ebead4681) )
1033 	ROM_LOAD( "zarz128.15",   0x7000, 0x0800, CRC(93ea2df9) SHA1(4f7d076deef1e14b568b06974194861d3789ab5c) )
1034 	ROM_LOAD( "zarz129.16",   0x7800, 0x0800, CRC(e67ec873) SHA1(14158914f07cabe61abc400c371d742ceb61d165) )
1035 	ROM_RELOAD(               0xf800, 0x0800 ) /* for the reset/interrupt vectors */
1036 	ROM_LOAD( "zarz130.22",   0x8000, 0x0800, CRC(22c44650) SHA1(063915cde86aece8860db1df15497cde669e73bd) )
1037 	ROM_LOAD( "zarz131.23",   0x8800, 0x0800, CRC(7be20678) SHA1(872de953df1f9f1725e14fdfd227ad872a813af8) )
1038 	ROM_LOAD( "zarz132.24",   0x9000, 0x0800, CRC(72b2cb76) SHA1(d7a95c908fe2227e2a0820a8e9713b1709c9e5af) )
1039 
1040 	ROM_REGION( 0x1000, "gfx1", 0 )
1041 	ROM_LOAD( "zarz135.73",   0x0000, 0x0800, CRC(e837c62b) SHA1(97552b1e413a3934f4dc5a6fc9fc1fa8ba7a2e7e) )
1042 	ROM_LOAD( "zarz136.75",   0x0800, 0x0800, CRC(83f61623) SHA1(4cb28f85f32d13bfa364c376ea3e30fd451b5884) )
1043 
1044 	ROM_REGION( 0x0020, "proms", 0 )
1045 	ROM_LOAD( "zarz138.03",   0x0000, 0x0020, CRC(5dd6933a) SHA1(417d827d9e47b6db01fecc2164e5ef332d4cd70e) )
1046 
1047 	ROM_REGION( 0x1000, "snk6502", 0 )  /* sound data for Vanguard-style audio section */
1048 	ROM_LOAD( "zarz133.53",   0x0000, 0x0800, CRC(b253cf78) SHA1(56a73b22ed2866222c407a3e9b51b8e0c92cf2aa) )
1049 	ROM_LOAD( "zarz134.54",   0x0800, 0x0800, CRC(580934d2) SHA1(c1c7eba56bca2a0ea6a68c0245b071a3308f92bd) )
1050 ROM_END
1051 
1052 
1053 
1054 
1055 ROM_START( satansatind )
1056 	ROM_REGION( 0x10000, "maincpu", 0 )
1057 	ROM_LOAD( "ss01.rom",   0x4000, 0x0800, CRC(7f16f8fe) SHA1(7ba2a3c31f7463eda0f300a27008a3fed9c84d9d) )
1058 	ROM_LOAD( "ss02.rom",   0x4800, 0x0800, CRC(04972fa8) SHA1(89833a7c893168acd5599ca7ad4b33a8f3df40c5) )
1059 	ROM_LOAD( "ss03.rom",   0x5000, 0x0800, CRC(6e0077e8) SHA1(b7e665b2b6a993ef75c87d53a2a814d141791590) )
1060 	ROM_LOAD( "ss04.rom",   0x5800, 0x0800, CRC(f9e33359) SHA1(b2586d5adff1703ecd86ed40681f5b703bd9a660) )
1061 	ROM_LOAD( "ss05.rom",   0x6000, 0x0800, CRC(f771e007) SHA1(80f01116be697680a8d64212d61dffaec1350f14) )
1062 	ROM_LOAD( "ss06.rom",   0x6800, 0x0800, CRC(e5b02850) SHA1(940ba0ebe7e37820ee1a1dc9f407b974fe354509) )
1063 	ROM_LOAD( "ss07.rom",   0x7000, 0x0800, CRC(93ea2df9) SHA1(4f7d076deef1e14b568b06974194861d3789ab5c) )
1064 	ROM_LOAD( "ss08.rom",   0x7800, 0x0800, CRC(e67ec873) SHA1(14158914f07cabe61abc400c371d742ceb61d165) )
1065 	ROM_RELOAD(               0xf800, 0x0800 ) /* for the reset/interrupt vectors */
1066 	ROM_LOAD( "ss09.rom",   0x8000, 0x0800, CRC(22c44650) SHA1(063915cde86aece8860db1df15497cde669e73bd) )
1067 	ROM_LOAD( "ss10.rom",   0x8800, 0x0800, CRC(8f1b313a) SHA1(0c7832505a1287533d9b2d7f2d54000b3b44e40d) )
1068 	ROM_LOAD( "ss11.rom",   0x9000, 0x0800, CRC(3cbcbddb) SHA1(1567c7fe7c8855427d1f9435b317ba15ed8545c8) )
1069 	ROM_LOAD( "ss16.rom",   0x9800, 0x0800, CRC(20bd6ee4) SHA1(a19011120c6f3c1c4e96439c1cbcf489ff991582) ) // extra code, unique to this set
1070 
1071 	ROM_REGION( 0x1000, "gfx1", 0 )
1072 	ROM_LOAD( "ss14.rom",   0x0000, 0x0800, CRC(5dfcd508) SHA1(6c2863b9850adf7ff0f323be71670438c66a85ee) )
1073 	ROM_LOAD( "ss15.rom",   0x0800, 0x0800, CRC(363d0500) SHA1(a02ad9e46c62075f54ad87ff287a50bc263c66d8) )
1074 
1075 	ROM_REGION( 0x0020, "proms", 0 )
1076 	ROM_LOAD( "zarz138.03",   0x0000, 0x0020, CRC(5dd6933a) SHA1(417d827d9e47b6db01fecc2164e5ef332d4cd70e) )
1077 
1078 	ROM_REGION( 0x1000, "snk6502", 0 )  /* sound data for Vanguard-style audio section */
1079 	ROM_LOAD( "ss12.rom",   0x0000, 0x0800, CRC(dee01f24) SHA1(92c8545226a31412239dad4aa2715b51264ad22e) )
1080 	ROM_LOAD( "ss13.rom",   0x0800, 0x0800, CRC(580934d2) SHA1(c1c7eba56bca2a0ea6a68c0245b071a3308f92bd) )
1081 ROM_END
1082 
1083 ROM_START( vanguard )
1084 	ROM_REGION( 0x10000, "maincpu", 0 )
1085 	ROM_LOAD( "sk4_ic07.bin", 0x4000, 0x1000, CRC(6a29e354) SHA1(ff953962ebc14a28cfc96f8e269cb1e1c188ed8a) )
1086 	ROM_LOAD( "sk4_ic08.bin", 0x5000, 0x1000, CRC(302bba54) SHA1(1944f229481328a0635fafda65054106f42a532a) )
1087 	ROM_LOAD( "sk4_ic09.bin", 0x6000, 0x1000, CRC(424755f6) SHA1(b4762b40c7ed70d4b90319a1a30983a41a096afb) )
1088 	ROM_LOAD( "sk4_ic10.bin", 0x7000, 0x1000, CRC(54603274) SHA1(31571a560dbe300417b3ed5b114fa1d9ef742da9) )
1089 	ROM_LOAD( "sk4_ic13.bin", 0x8000, 0x1000, CRC(fde157d0) SHA1(3f705fb6a410004f4f86283694e3694e49701af6) )
1090 	ROM_RELOAD(               0xf000, 0x1000 )  /* for the reset and interrupt vectors */
1091 	ROM_LOAD( "sk4_ic14.bin", 0x9000, 0x1000, CRC(0d5b47d0) SHA1(922621c23f33fe756cb6baa12e5465c4e64f2dda) )
1092 	ROM_LOAD( "sk4_ic15.bin", 0xa000, 0x1000, CRC(8549b8f8) SHA1(375bc6f7e15564d5cf7e00c44e2651793c56d6ca) )
1093 	ROM_LOAD( "sk4_ic16.bin", 0xb000, 0x1000, CRC(062e0be2) SHA1(45aaf315a62f37460e32d3ba99caaacf4c994810) )
1094 
1095 	ROM_REGION( 0x1000, "gfx1", 0 )
1096 	ROM_LOAD( "sk5_ic50.bin", 0x0000, 0x0800, CRC(e7d4315b) SHA1(b99e4ea07292a0eabaa6098037c92a5678627cec) )
1097 	ROM_LOAD( "sk5_ic51.bin", 0x0800, 0x0800, CRC(96e87858) SHA1(4e9ccb055919c8acf5837e062857647d5363af60) )
1098 
1099 	ROM_REGION( 0x0040, "proms", 0 )
1100 	ROM_LOAD( "sk5_ic7.bin",  0x0000, 0x0020, CRC(ad782a73) SHA1(ddf44f74a20f10ed976c434a885857dade1f86d7) ) /* foreground colors */
1101 	ROM_LOAD( "sk5_ic6.bin",  0x0020, 0x0020, CRC(7dc9d450) SHA1(9b2d1dfb3270a562d14bd54bfb3405a9095becc0) ) /* background colors */
1102 
1103 	ROM_REGION( 0x1000, "snk6502", 0 )  /* sound ROMs */
1104 	ROM_LOAD( "sk4_ic51.bin", 0x0000, 0x0800, CRC(d2a64006) SHA1(3f20b59ce1954f65535cd5603ca9271586428e35) )  /* sound ROM 1 */
1105 	ROM_LOAD( "sk4_ic52.bin", 0x0800, 0x0800, CRC(cc4a0b6f) SHA1(251b24d60083d516c4ba686d75b41e04d10f7198) )  /* sound ROM 2 */
1106 
1107 	ROM_REGION( 0x5800, "speech", 0 )   /* space for the speech ROMs (not supported) */
1108 	//ROM_LOAD( "hd38882.bin",  0x0000, 0x4000, NO_DUMP )   /* HD38882 internal ROM */
1109 	ROM_LOAD( "sk6_ic07.bin", 0x4000, 0x0800, CRC(2b7cbae9) SHA1(3d44a0232d7c94d8170cc06e90cc30bd57c99202) )
1110 	ROM_LOAD( "sk6_ic08.bin", 0x4800, 0x0800, CRC(3b7e9d7c) SHA1(d9033188068b2aaa1502c89cf09f955eded8fa7a) )
1111 	ROM_LOAD( "sk6_ic11.bin", 0x5000, 0x0800, CRC(c36df041) SHA1(8b51934229b961180d1edb99be3a4d337d37f66f) )
1112 ROM_END
1113 
1114 ROM_START( vanguardc )
1115 	ROM_REGION( 0x10000, "maincpu", 0 )
1116 	ROM_LOAD( "sk4_ic07.bin", 0x4000, 0x1000, CRC(6a29e354) SHA1(ff953962ebc14a28cfc96f8e269cb1e1c188ed8a) )
1117 	ROM_LOAD( "sk4_ic08.bin", 0x5000, 0x1000, CRC(302bba54) SHA1(1944f229481328a0635fafda65054106f42a532a) )
1118 	ROM_LOAD( "sk4_ic09.bin", 0x6000, 0x1000, CRC(424755f6) SHA1(b4762b40c7ed70d4b90319a1a30983a41a096afb) )
1119 	ROM_LOAD( "4",            0x7000, 0x1000, CRC(770f9714) SHA1(4af37fc24e464681a8da6b184be0df32a4078f4f) )
1120 	ROM_LOAD( "5",            0x8000, 0x1000, CRC(3445cba6) SHA1(6afe6dad79b53df58b53ef9c5d24bb4d91fa5e8e) )
1121 	ROM_RELOAD(               0xf000, 0x1000 )  /* for the reset and interrupt vectors */
1122 	ROM_LOAD( "sk4_ic14.bin", 0x9000, 0x1000, CRC(0d5b47d0) SHA1(922621c23f33fe756cb6baa12e5465c4e64f2dda) )
1123 	ROM_LOAD( "sk4_ic15.bin", 0xa000, 0x1000, CRC(8549b8f8) SHA1(375bc6f7e15564d5cf7e00c44e2651793c56d6ca) )
1124 	ROM_LOAD( "8",            0xb000, 0x1000, CRC(4b825bc8) SHA1(3fa32d9677e2cc3a1ebf52c0b9eed7dbf11201e9) )
1125 
1126 	ROM_REGION( 0x1000, "gfx1", 0 )
1127 	ROM_LOAD( "sk5_ic50.bin", 0x0000, 0x0800, CRC(e7d4315b) SHA1(b99e4ea07292a0eabaa6098037c92a5678627cec) )
1128 	ROM_LOAD( "sk5_ic51.bin", 0x0800, 0x0800, CRC(96e87858) SHA1(4e9ccb055919c8acf5837e062857647d5363af60) )
1129 
1130 	ROM_REGION( 0x0040, "proms", 0 )
1131 	ROM_LOAD( "sk5_ic7.bin",  0x0000, 0x0020, CRC(ad782a73) SHA1(ddf44f74a20f10ed976c434a885857dade1f86d7) ) /* foreground colors */
1132 	ROM_LOAD( "sk5_ic6.bin",  0x0020, 0x0020, CRC(7dc9d450) SHA1(9b2d1dfb3270a562d14bd54bfb3405a9095becc0) ) /* background colors */
1133 
1134 	ROM_REGION( 0x1000, "snk6502", 0 )  /* sound ROMs */
1135 	ROM_LOAD( "sk4_ic51.bin", 0x0000, 0x0800, CRC(d2a64006) SHA1(3f20b59ce1954f65535cd5603ca9271586428e35) )  /* confirmed, 6/21/05 */
1136 	ROM_LOAD( "sk4_ic52.bin", 0x0800, 0x0800, CRC(cc4a0b6f) SHA1(251b24d60083d516c4ba686d75b41e04d10f7198) )  /* confirmed, 6/21/05 */
1137 
1138 	ROM_REGION( 0x5800, "speech", 0 )   /* space for the speech ROMs (not supported) */
1139 	//ROM_LOAD( "hd38882.bin",  0x0000, 0x4000, NO_DUMP )   /* HD38882 internal ROM */
1140 	ROM_LOAD( "sk6_ic07.bin", 0x4000, 0x0800, CRC(2b7cbae9) SHA1(3d44a0232d7c94d8170cc06e90cc30bd57c99202) )
1141 	ROM_LOAD( "sk6_ic08.bin", 0x4800, 0x0800, CRC(3b7e9d7c) SHA1(d9033188068b2aaa1502c89cf09f955eded8fa7a) )
1142 	ROM_LOAD( "sk6_ic11.bin", 0x5000, 0x0800, CRC(c36df041) SHA1(8b51934229b961180d1edb99be3a4d337d37f66f) )
1143 ROM_END
1144 
1145 ROM_START( vanguardj )
1146 	ROM_REGION( 0x10000, "maincpu", 0 )
1147 	ROM_LOAD( "sk4_ic07.bin", 0x4000, 0x1000, CRC(6a29e354) SHA1(ff953962ebc14a28cfc96f8e269cb1e1c188ed8a) )
1148 	ROM_LOAD( "sk4_ic08.bin", 0x5000, 0x1000, CRC(302bba54) SHA1(1944f229481328a0635fafda65054106f42a532a) )
1149 	ROM_LOAD( "sk4_ic09.bin", 0x6000, 0x1000, CRC(424755f6) SHA1(b4762b40c7ed70d4b90319a1a30983a41a096afb) )
1150 	ROM_LOAD( "vgj4ic10.bin", 0x7000, 0x1000, CRC(0a91a5d1) SHA1(bef435e431e31179eb22a4c18ca1dedf6a4a0ab0) )
1151 	ROM_LOAD( "vgj5ic13.bin", 0x8000, 0x1000, CRC(06601a40) SHA1(d1efcf75edf3892fe59d63e524f4880ffce67965) )
1152 	ROM_RELOAD(               0xf000, 0x1000 )  /* for the reset and interrupt vectors */
1153 	ROM_LOAD( "sk4_ic14.bin", 0x9000, 0x1000, CRC(0d5b47d0) SHA1(922621c23f33fe756cb6baa12e5465c4e64f2dda) )
1154 	ROM_LOAD( "sk4_ic15.bin", 0xa000, 0x1000, CRC(8549b8f8) SHA1(375bc6f7e15564d5cf7e00c44e2651793c56d6ca) )
1155 	ROM_LOAD( "sk4_ic16.bin", 0xb000, 0x1000, CRC(062e0be2) SHA1(45aaf315a62f37460e32d3ba99caaacf4c994810) )
1156 
1157 	ROM_REGION( 0x1000, "gfx1", 0 )
1158 	ROM_LOAD( "sk5_ic50.bin", 0x0000, 0x0800, CRC(e7d4315b) SHA1(b99e4ea07292a0eabaa6098037c92a5678627cec) )
1159 	ROM_LOAD( "sk5_ic51.bin", 0x0800, 0x0800, CRC(96e87858) SHA1(4e9ccb055919c8acf5837e062857647d5363af60) )
1160 
1161 	ROM_REGION( 0x0040, "proms", 0 )
1162 	ROM_LOAD( "sk5_ic7.bin",  0x0000, 0x0020, CRC(ad782a73) SHA1(ddf44f74a20f10ed976c434a885857dade1f86d7) ) /* foreground colors */
1163 	ROM_LOAD( "sk5_ic6.bin",  0x0020, 0x0020, CRC(7dc9d450) SHA1(9b2d1dfb3270a562d14bd54bfb3405a9095becc0) ) /* background colors */
1164 
1165 	ROM_REGION( 0x1000, "snk6502", 0 )  /* sound ROMs */
1166 	ROM_LOAD( "sk4_ic51.bin", 0x0000, 0x0800, CRC(d2a64006) SHA1(3f20b59ce1954f65535cd5603ca9271586428e35) )  /* sound ROM 1 */
1167 	ROM_LOAD( "sk4_ic52.bin", 0x0800, 0x0800, CRC(cc4a0b6f) SHA1(251b24d60083d516c4ba686d75b41e04d10f7198) )  /* sound ROM 2 */
1168 
1169 	ROM_REGION( 0x5800, "speech", 0 )   /* space for the speech ROMs (not supported) */
1170 	//ROM_LOAD( "hd38882.bin",  0x0000, 0x4000, NO_DUMP )   /* HD38882 internal ROM */
1171 	ROM_LOAD( "sk6_ic07.bin", 0x4000, 0x0800, CRC(2b7cbae9) SHA1(3d44a0232d7c94d8170cc06e90cc30bd57c99202) )
1172 	ROM_LOAD( "sk6_ic08.bin", 0x4800, 0x0800, CRC(3b7e9d7c) SHA1(d9033188068b2aaa1502c89cf09f955eded8fa7a) )
1173 	ROM_LOAD( "sk6_ic11.bin", 0x5000, 0x0800, CRC(c36df041) SHA1(8b51934229b961180d1edb99be3a4d337d37f66f) )
1174 ROM_END
1175 
1176 // Dumped from a Germany sourced Zaccaria Vanguard cabinet PCB. Continue text is in German. Only the program ROMs were dumped,
1177 // but the other ROMs labels match the original SNK version and are believed to be the same
1178 ROM_START( vanguardg )
1179 	ROM_REGION( 0x10000, "maincpu", 0 )
1180 	ROM_LOAD( "vg1.bin",  0x4000, 0x1000, CRC(6a29e354) SHA1(ff953962ebc14a28cfc96f8e269cb1e1c188ed8a) )
1181 	ROM_LOAD( "vg2.bin",  0x5000, 0x1000, CRC(302bba54) SHA1(1944f229481328a0635fafda65054106f42a532a) )
1182 	ROM_LOAD( "vg3.bin",  0x6000, 0x1000, CRC(424755f6) SHA1(b4762b40c7ed70d4b90319a1a30983a41a096afb) )
1183 	ROM_LOAD( "vg4g.bin", 0x7000, 0x1000, CRC(4a82306a) SHA1(086d6c96d79681b482378c04b7340d3285d11ed8) )
1184 	ROM_LOAD( "vg5.bin",  0x8000, 0x1000, CRC(fde157d0) SHA1(3f705fb6a410004f4f86283694e3694e49701af6) )
1185 	ROM_RELOAD(           0xf000, 0x1000 )  // for the reset and interrupt vectors
1186 	ROM_LOAD( "vg6.bin",  0x9000, 0x1000, CRC(0d5b47d0) SHA1(922621c23f33fe756cb6baa12e5465c4e64f2dda) )
1187 	ROM_LOAD( "vg7.bin",  0xa000, 0x1000, CRC(8549b8f8) SHA1(375bc6f7e15564d5cf7e00c44e2651793c56d6ca) )
1188 	ROM_LOAD( "vg8s.bin", 0xb000, 0x1000, CRC(abe5fa3f) SHA1(cadb7c873ef025792c9ec38a6399ed19ade3b755) )
1189 
1190 	ROM_REGION( 0x1000, "gfx1", 0 )
1191 	ROM_LOAD( "sk5_ic50.bin", 0x0000, 0x0800, CRC(e7d4315b) SHA1(b99e4ea07292a0eabaa6098037c92a5678627cec) )
1192 	ROM_LOAD( "sk5_ic51.bin", 0x0800, 0x0800, CRC(96e87858) SHA1(4e9ccb055919c8acf5837e062857647d5363af60) )
1193 
1194 	ROM_REGION( 0x0040, "proms", 0 )
1195 	ROM_LOAD( "sk5_ic7.bin",  0x0000, 0x0020, CRC(ad782a73) SHA1(ddf44f74a20f10ed976c434a885857dade1f86d7) ) // foreground colors
1196 	ROM_LOAD( "sk5_ic6.bin",  0x0020, 0x0020, CRC(7dc9d450) SHA1(9b2d1dfb3270a562d14bd54bfb3405a9095becc0) ) // background colors
1197 
1198 	ROM_REGION( 0x1000, "snk6502", 0 )  // sound ROMs
1199 	ROM_LOAD( "sk4_ic51.bin", 0x0000, 0x0800, CRC(d2a64006) SHA1(3f20b59ce1954f65535cd5603ca9271586428e35) )
1200 	ROM_LOAD( "sk4_ic52.bin", 0x0800, 0x0800, CRC(cc4a0b6f) SHA1(251b24d60083d516c4ba686d75b41e04d10f7198) )
1201 
1202 	ROM_REGION( 0x5800, "speech", 0 )
1203 	//ROM_LOAD( "hd38882.bin",  0x0000, 0x4000, NO_DUMP )   /* HD38882 internal ROM */
1204 	ROM_LOAD( "sk6_ic07.bin", 0x4000, 0x0800, CRC(2b7cbae9) SHA1(3d44a0232d7c94d8170cc06e90cc30bd57c99202) )
1205 	ROM_LOAD( "sk6_ic08.bin", 0x4800, 0x0800, CRC(3b7e9d7c) SHA1(d9033188068b2aaa1502c89cf09f955eded8fa7a) )
1206 	ROM_LOAD( "sk6_ic11.bin", 0x5000, 0x0800, CRC(c36df041) SHA1(8b51934229b961180d1edb99be3a4d337d37f66f) )
1207 ROM_END
1208 
1209 ROM_START( fantasyu )
1210 	ROM_REGION( 0x10000, "maincpu", 0 )
1211 	ROM_LOAD( "ic12.cpu",     0x3000, 0x1000, CRC(22cb2249) SHA1(6c43e3fa9638b6d2e069199968923e470bd5d18b) )
1212 	ROM_LOAD( "ic07.cpu",     0x4000, 0x1000, CRC(0e2880b6) SHA1(666d6942864eb7a90178b3b6e2b0eb23aa3c967f) )
1213 	ROM_LOAD( "ic08.cpu",     0x5000, 0x1000, CRC(4c331317) SHA1(800850f4e8bcfbbade54eb9e47a53941f8798641) )
1214 	ROM_LOAD( "ic09.cpu",     0x6000, 0x1000, CRC(6ac1dbfc) SHA1(b9c7bf8d3b085db0b53646b5639c09f9ced2b1fe) )
1215 	ROM_LOAD( "ic10.cpu",     0x7000, 0x1000, CRC(c796a406) SHA1(1b7f5f307a81b481a3e7791128a01d4c1a20c4bf) )
1216 	ROM_LOAD( "ic14.cpu",     0x8000, 0x1000, CRC(6f1f0698) SHA1(05bd114dcd08c990d897518a8ea7965bc82279bf) )
1217 	ROM_RELOAD(               0xf000, 0x1000 )  /* for the reset and interrupt vectors */
1218 	ROM_LOAD( "ic15.cpu",     0x9000, 0x1000, CRC(5534d57e) SHA1(e564a3325766423b47de18d6adb61760cbbf88be) )
1219 	ROM_LOAD( "ic16.cpu",     0xa000, 0x1000, CRC(6c2aeb6e) SHA1(fd0b913a663bf2a5f45fc3d342d7575a9c7dae46) )
1220 	ROM_LOAD( "ic17.cpu",     0xb000, 0x1000, CRC(f6aa5de1) SHA1(ca53cf66cc6cdb21a60760102f35a5b0745ce09b) )
1221 
1222 	ROM_REGION( 0x2000, "gfx1", 0 )
1223 	ROM_LOAD( "fs10ic50.bin", 0x0000, 0x1000, CRC(86a801c3) SHA1(c040b5807c25823072f7e8ceab57b95d4bed89fe) )
1224 	ROM_LOAD( "fs11ic51.bin", 0x1000, 0x1000, CRC(9dfff71c) SHA1(7a7c017170f2ea903a730a4e5ab69db379a4fc61) )
1225 
1226 	ROM_REGION( 0x0040, "proms", 0 )
1227 	ROM_LOAD( "fantasy.ic7",  0x0000, 0x0020, CRC(361a5e99) SHA1(b9777ce658549c03971bd476482d5cc0be27d3a9) ) /* foreground colors */
1228 	ROM_LOAD( "fantasy.ic6",  0x0020, 0x0020, CRC(33d974f7) SHA1(a6f6a531dec3f454b477bfdda8e213e9cad42748) ) /* background colors */
1229 
1230 	ROM_REGION( 0x1800, "snk6502", 0 )  /* sound ROMs */
1231 	ROM_LOAD( "fs_b_51.bin",  0x0000, 0x0800, CRC(48094ec5) SHA1(7d6118133bc1eb8ebc5d8a95d10ef842daffef89) )
1232 	ROM_LOAD( "fs_a_52.bin",  0x0800, 0x0800, CRC(1d0316e8) SHA1(6a3ab289b5fefef8663514bd1d5817c70fe58882) )
1233 	ROM_LOAD( "fs_c_53.bin",  0x1000, 0x0800, CRC(49fd4ae8) SHA1(96ff1267c0ffab1e8a0769fa869516e2546ab640) )
1234 
1235 	ROM_REGION( 0x5800, "speech", 0 )   /* space for the speech ROMs (not supported) */
1236 	//ROM_LOAD( "hd38882.bin",  0x0000, 0x4000, NO_DUMP )   /* HD38882 internal ROM */
1237 	ROM_LOAD( "fs_d_7.bin",   0x4000, 0x0800, CRC(a7ef4cc6) SHA1(8df71cb18fcfe9a2f592f83bc01cf2314ae30e32) )
1238 	ROM_LOAD( "fs_e_8.bin",   0x4800, 0x0800, CRC(19b8fb3e) SHA1(271c76f68866c28bc6755238a71970d5f7c81ecb) )
1239 	ROM_LOAD( "fs_f_11.bin",  0x5000, 0x0800, CRC(3a352e1f) SHA1(af880ce3daed0877d454421bd08c86ff71f6bf72) )
1240 ROM_END
1241 
1242 ROM_START( fantasyg )
1243 	ROM_REGION( 0x10000, "maincpu", 0 )
1244 	ROM_LOAD( "5.12",         0x3000, 0x1000, CRC(0968ab50) SHA1(f09d03a171349895c5cb69e684901be63d272b32) )
1245 	ROM_LOAD( "1.7",          0x4000, 0x1000, CRC(de83000e) SHA1(ede1dda46406b4d340f1efea3bc85b2227af9e1d) )
1246 	ROM_LOAD( "2.8",          0x5000, 0x1000, CRC(90499b5a) SHA1(81a9d93a5655d2ff9504036bc764d8bb81e1470d) )
1247 	ROM_LOAD( "3.9",          0x6000, 0x1000, CRC(6fbffeb6) SHA1(b36aeaf095da4957103c8921957ff4be658eddf5) )
1248 	ROM_LOAD( "4.10",         0x7000, 0x1000, CRC(02e85884) SHA1(71fa6eb375fc417f92c049ec5118818b9ad48468) )
1249 	ROM_LOAD( "ic14.cpu",     0x8000, 0x1000, CRC(6f1f0698) SHA1(05bd114dcd08c990d897518a8ea7965bc82279bf) )
1250 	ROM_RELOAD(               0xf000, 0x1000 )  /* for the reset and interrupt vectors */
1251 	ROM_LOAD( "ic15.cpu",     0x9000, 0x1000, CRC(5534d57e) SHA1(e564a3325766423b47de18d6adb61760cbbf88be) )
1252 	ROM_LOAD( "8.16",         0xa000, 0x1000, CRC(371129fe) SHA1(c21759222aebcc9ea1292e367a41ac43a4dd3554) )
1253 	ROM_LOAD( "9.17",         0xb000, 0x1000, CRC(56a7c8b8) SHA1(6c417644851c7b4b5291d9c5b2c808ff4a1ad048) )
1254 
1255 	ROM_REGION( 0x2000, "gfx1", 0 )
1256 	ROM_LOAD( "fs10ic50.bin", 0x0000, 0x1000, CRC(86a801c3) SHA1(c040b5807c25823072f7e8ceab57b95d4bed89fe) )
1257 	ROM_LOAD( "fs11ic51.bin", 0x1000, 0x1000, CRC(9dfff71c) SHA1(7a7c017170f2ea903a730a4e5ab69db379a4fc61) )
1258 
1259 	ROM_REGION( 0x0040, "proms", 0 )
1260 	ROM_LOAD( "fantasy.ic7",  0x0000, 0x0020, CRC(361a5e99) SHA1(b9777ce658549c03971bd476482d5cc0be27d3a9) ) /* foreground colors */
1261 	ROM_LOAD( "fantasy.ic6",  0x0020, 0x0020, CRC(33d974f7) SHA1(a6f6a531dec3f454b477bfdda8e213e9cad42748) ) /* background colors */
1262 
1263 	ROM_REGION( 0x1800, "snk6502", 0 )  /* sound ROMs */
1264 	ROM_LOAD( "fs_b_51.bin",  0x0000, 0x0800, CRC(48094ec5) SHA1(7d6118133bc1eb8ebc5d8a95d10ef842daffef89) )
1265 	ROM_LOAD( "fs_a_52.bin",  0x0800, 0x0800, CRC(1d0316e8) SHA1(6a3ab289b5fefef8663514bd1d5817c70fe58882) )
1266 	ROM_LOAD( "fs_c_53.bin",  0x1000, 0x0800, CRC(49fd4ae8) SHA1(96ff1267c0ffab1e8a0769fa869516e2546ab640) )
1267 
1268 	ROM_REGION( 0x5800, "speech", 0 )   /* space for the speech ROMs (not supported) */
1269 	//ROM_LOAD( "hd38882.bin",  0x0000, 0x4000, NO_DUMP )   /* HD38882 internal ROM */
1270 	ROM_LOAD( "fs_d_7.bin",   0x4000, 0x0800, CRC(a7ef4cc6) SHA1(8df71cb18fcfe9a2f592f83bc01cf2314ae30e32) )
1271 	ROM_LOAD( "fs_e_8.bin",   0x4800, 0x0800, CRC(19b8fb3e) SHA1(271c76f68866c28bc6755238a71970d5f7c81ecb) )
1272 	ROM_LOAD( "fs_f_11.bin",  0x5000, 0x0800, CRC(3a352e1f) SHA1(af880ce3daed0877d454421bd08c86ff71f6bf72) )
1273 ROM_END
1274 
1275 // SK-7A and SK-6 PCBs
1276 ROM_START( fantasyg2 )
1277 	ROM_REGION( 0x10000, "maincpu", 0 )
1278 	ROM_LOAD( "ts5.bin",     0x3000, 0x1000, CRC(6edca14e) SHA1(d9152e212f2b3cdb6e7968e4e7638454ea02c4a5) )
1279 	ROM_LOAD( "fs1.bin",     0x4000, 0x1000, CRC(d99656e8) SHA1(6f5febaeca2ec167523f48361ae2395772bcef53) )
1280 	ROM_LOAD( "ts2.bin",     0x5000, 0x1000, CRC(2db6ce28) SHA1(18cced543f27664b3eaddf103a41580a905ffae1) )
1281 	ROM_LOAD( "ts3.bin",     0x6000, 0x1000, CRC(1a0aa7c5) SHA1(c8f34618ffc98c73db7067851de24f245b8988ad) )
1282 	ROM_LOAD( "fs4.bin",     0x7000, 0x1000, CRC(c02ad442) SHA1(a90b2d04fc2e8b2dda634c18eafb88007eaedc67) )
1283 	ROM_LOAD( "fs6.bin",     0x8000, 0x1000, CRC(e5b91bc2) SHA1(85515eb57c8040fc95a9c62706e1a504e6749f66) )
1284 	ROM_RELOAD(              0xf000, 0x1000 )  /* for the reset and interrupt vectors */
1285 	ROM_LOAD( "fs7.bin",     0x9000, 0x1000, CRC(cc18428e) SHA1(c7c0a031434cf9ce3c450b0c5dc2b154b08d19cf) )
1286 	ROM_LOAD( "fs8.bin",     0xa000, 0x1000, CRC(371129fe) SHA1(c21759222aebcc9ea1292e367a41ac43a4dd3554) )
1287 	ROM_LOAD( "fs9.bin",     0xb000, 0x1000, CRC(49574d4a) SHA1(37cae0df7e8705c300f684b3351b5bdba5e44ea2) )
1288 
1289 	ROM_REGION( 0x2000, "gfx1", 0 )
1290 	ROM_LOAD( "fs10.bin", 0x0000, 0x1000, CRC(86a801c3) SHA1(c040b5807c25823072f7e8ceab57b95d4bed89fe) )
1291 	ROM_LOAD( "fs11.bin", 0x1000, 0x1000, CRC(9dfff71c) SHA1(7a7c017170f2ea903a730a4e5ab69db379a4fc61) )
1292 
1293 	ROM_REGION( 0x0040, "proms", 0 )
1294 	ROM_LOAD( "fantasy.ic7",  0x0000, 0x0020, CRC(361a5e99) SHA1(b9777ce658549c03971bd476482d5cc0be27d3a9) ) /* foreground colors */
1295 	ROM_LOAD( "fantasy.ic6",  0x0020, 0x0020, CRC(33d974f7) SHA1(a6f6a531dec3f454b477bfdda8e213e9cad42748) ) /* background colors */
1296 
1297 	ROM_REGION( 0x1800, "snk6502", 0 )  /* sound ROMs */
1298 	ROM_LOAD( "fs_b_51.bin",  0x0000, 0x0800, CRC(48094ec5) SHA1(7d6118133bc1eb8ebc5d8a95d10ef842daffef89) )
1299 	ROM_LOAD( "fs_a_52.bin",  0x0800, 0x0800, CRC(1d0316e8) SHA1(6a3ab289b5fefef8663514bd1d5817c70fe58882) )
1300 	ROM_LOAD( "fs_c_53.bin",  0x1000, 0x0800, CRC(49fd4ae8) SHA1(96ff1267c0ffab1e8a0769fa869516e2546ab640) )
1301 
1302 	ROM_REGION( 0x5800, "speech", 0 )   /* space for the speech ROMs (not supported) */
1303 	//ROM_LOAD( "hd38882.bin",  0x0000, 0x4000, NO_DUMP )   /* HD38882 internal ROM */
1304 	ROM_LOAD( "fs_d_7.bin",   0x4000, 0x0800, CRC(a7ef4cc6) SHA1(8df71cb18fcfe9a2f592f83bc01cf2314ae30e32) )
1305 	ROM_LOAD( "fs_e_8.bin",   0x4800, 0x0800, CRC(19b8fb3e) SHA1(271c76f68866c28bc6755238a71970d5f7c81ecb) )
1306 	ROM_LOAD( "fs_f_11.bin",  0x5000, 0x0800, CRC(3a352e1f) SHA1(af880ce3daed0877d454421bd08c86ff71f6bf72) )
1307 ROM_END
1308 
1309 ROM_START( fantasyj )
1310 	ROM_REGION( 0x10000, "maincpu", 0 )
1311 	ROM_LOAD( "fs5jic12.bin", 0x3000, 0x1000, CRC(dd1eac89) SHA1(d63078d4666e3c6db0c9b3f8b45ef81606ed5a4f) )
1312 	ROM_LOAD( "fs1jic7.bin",  0x4000, 0x1000, CRC(7b8115ae) SHA1(6274f937c57ab9cbb7c6283022b81f70dad7c232) )
1313 	ROM_LOAD( "fs2jic8.bin",  0x5000, 0x1000, CRC(61531dd1) SHA1(f3bc405bafc8ced6c6fce93ad2ad20ff6aa603e8) )
1314 	ROM_LOAD( "fs3jic9.bin",  0x6000, 0x1000, CRC(36a12617) SHA1(dd74abb4cbaeb1a56ee466043997187ebe933612) )
1315 	ROM_LOAD( "fs4jic10.bin", 0x7000, 0x1000, CRC(dbf7c347) SHA1(1bb3f924a7e1ec74ef68e237a0f68d62ce78532c) )
1316 	ROM_LOAD( "fs6jic14.bin", 0x8000, 0x1000, CRC(bf59a33a) SHA1(bdbdd03199758069b904fdf0455193682c4d457f) )
1317 	ROM_RELOAD(               0xf000, 0x1000 )  /* for the reset and interrupt vectors */
1318 	ROM_LOAD( "fs7jic15.bin", 0x9000, 0x1000, CRC(cc18428e) SHA1(c7c0a031434cf9ce3c450b0c5dc2b154b08d19cf) )
1319 	ROM_LOAD( "fs8jic16.bin", 0xa000, 0x1000, CRC(ae5bf727) SHA1(3c5eaaba3971f57a5687945a614dd0d6c9e007d6) )
1320 	ROM_LOAD( "fs9jic17.bin", 0xb000, 0x1000, CRC(fa6903e2) SHA1(a5b9b7309ecaaeaba76e45610d5ab80415ecbdd0) )
1321 
1322 	ROM_REGION( 0x2000, "gfx1", 0 )
1323 	ROM_LOAD( "fs10ic50.bin", 0x0000, 0x1000, CRC(86a801c3) SHA1(c040b5807c25823072f7e8ceab57b95d4bed89fe) )
1324 	ROM_LOAD( "fs11ic51.bin", 0x1000, 0x1000, CRC(9dfff71c) SHA1(7a7c017170f2ea903a730a4e5ab69db379a4fc61) )
1325 
1326 	ROM_REGION( 0x0040, "proms", 0 )
1327 	ROM_LOAD( "prom-8.bpr",   0x0000, 0x0020, CRC(1aa9285a) SHA1(d503aa76ca0cf032c7b1c962abc59677c41a2c62) ) /* foreground colors */
1328 	ROM_LOAD( "prom-7.bpr",   0x0020, 0x0020, CRC(7a6f7dc3) SHA1(e15d898275d1cd205cc2d28f7dd9df653594039e) ) /* background colors */
1329 
1330 	ROM_REGION( 0x1800, "snk6502", 0 )  /* sound ROMs */
1331 	ROM_LOAD( "fs_b_51.bin",  0x0000, 0x0800, CRC(48094ec5) SHA1(7d6118133bc1eb8ebc5d8a95d10ef842daffef89) )
1332 	ROM_LOAD( "fs_a_52.bin",  0x0800, 0x0800, CRC(1d0316e8) SHA1(6a3ab289b5fefef8663514bd1d5817c70fe58882) )
1333 	ROM_LOAD( "fs_c_53.bin",  0x1000, 0x0800, CRC(49fd4ae8) SHA1(96ff1267c0ffab1e8a0769fa869516e2546ab640) )
1334 
1335 	ROM_REGION( 0x5800, "speech", 0 )   /* space for the speech ROMs (not supported) */
1336 	//ROM_LOAD( "hd38882.bin",  0x0000, 0x4000, NO_DUMP )   /* HD38882 internal ROM */
1337 	ROM_LOAD( "fs_d_7.bin",   0x4000, 0x0800, CRC(a7ef4cc6) SHA1(8df71cb18fcfe9a2f592f83bc01cf2314ae30e32) )
1338 	ROM_LOAD( "fs_e_8.bin",   0x4800, 0x0800, CRC(19b8fb3e) SHA1(271c76f68866c28bc6755238a71970d5f7c81ecb) )
1339 	ROM_LOAD( "fs_f_11.bin",  0x5000, 0x0800, CRC(3a352e1f) SHA1(af880ce3daed0877d454421bd08c86ff71f6bf72) )
1340 ROM_END
1341 
1342 ROM_START( pballoon )
1343 	ROM_REGION( 0x10000, "maincpu", 0 )
1344 	ROM_LOAD( "sk7_ic12.bin", 0x3000, 0x1000, CRC(dfe2ae05) SHA1(21c98bef9d4d5fcb65ce5e9b20cde2259840459e) )
1345 	ROM_LOAD( "sk7_ic07.bin", 0x4000, 0x1000, CRC(736e67df) SHA1(a58d9561f62d396ca90b0f69afe6240d809b10bb) )
1346 	ROM_LOAD( "sk7_ic08.bin", 0x5000, 0x1000, CRC(7a2032b2) SHA1(79570943468d647cda67d94b20eac1b2d9eb371f) )
1347 	ROM_LOAD( "sk7_ic09.bin", 0x6000, 0x1000, CRC(2d63cf3a) SHA1(8934af617229db445f9fd10e4028e1f8df4cfeb1) )
1348 	ROM_LOAD( "sk7_ic10.bin", 0x7000, 0x1000, CRC(7b88cbd4) SHA1(1be3c484bd08c747f38389114c157e84319c48be) )
1349 	ROM_LOAD( "sk7_ic14.bin", 0x8000, 0x1000, CRC(6a8817a5) SHA1(4cf8eda68d21b1fad0f12eedaeb88b256bba44da) )
1350 	ROM_RELOAD(               0xf000, 0x1000 )  /* for the reset and interrupt vectors */
1351 	ROM_LOAD( "sk7_ic15.bin", 0x9000, 0x1000, CRC(1f78d814) SHA1(7e618971f1bbf8859284531e94989c43c3285b4a) )
1352 
1353 	ROM_REGION( 0x2000, "gfx1", 0 )
1354 	ROM_LOAD( "sk8_ic50.bin", 0x0000, 0x1000, CRC(560df07f) SHA1(e57945de829d22d39390a649eddaf78c989af679) )
1355 	ROM_LOAD( "sk8_ic51.bin", 0x1000, 0x1000, CRC(d415de51) SHA1(257cf939efec8adee87baf827315c69fde90da4c) )
1356 
1357 	ROM_REGION( 0x0040, "proms", 0 )
1358 	ROM_LOAD( "sk8_ic7.bin",  0x0000, 0x0020, CRC(ef6c82a0) SHA1(95b522d6389f25bf5fa2fca5f3f826ef43b2885b) ) /* foreground colors */
1359 	ROM_LOAD( "sk8_ic6.bin",  0x0020, 0x0020, CRC(eabc6a00) SHA1(942af5e22e49e578c6a24651476e3b60d40e2076) ) /* background colors */
1360 
1361 	ROM_REGION( 0x1800, "snk6502", 0 )  /* sound ROMs */
1362 	ROM_LOAD( "sk7_ic51.bin", 0x0000, 0x0800, CRC(0345f8b7) SHA1(c00992dc7222cc53d9fdff4ab47a7abdf90c5116) )
1363 	ROM_LOAD( "sk7_ic52.bin", 0x0800, 0x0800, CRC(5d6d68ea) SHA1(d3e03720eff5c85c1c2fb1d4bf960f45a99dc86a) )
1364 	ROM_LOAD( "sk7_ic53.bin", 0x1000, 0x0800, CRC(a4c505cd) SHA1(47eea7e7ffa3dc8b35dc050ac1a1d77d6a5c4ece) )
1365 ROM_END
1366 
1367 ROM_START( pballoonr )
1368 	ROM_REGION( 0x10000, "maincpu", 0 )
1369 	ROM_LOAD( "sk7_ic12.bin",        0x3000, 0x1000, CRC(dfe2ae05) SHA1(21c98bef9d4d5fcb65ce5e9b20cde2259840459e) )
1370 	ROM_LOAD( "rock-ola_skpb1.ic7",  0x4000, 0x1000, CRC(dfd802e8) SHA1(2014295c678d0534585e27d9b5c7ac525113cd0c) )
1371 	ROM_LOAD( "rock-ola_skpb1.ic8",  0x5000, 0x1000, CRC(c433c062) SHA1(63df947c56f51a623b378d2a8a5b2cd05c23c414) )
1372 	ROM_LOAD( "rock-ola_skpb1.ic9",  0x6000, 0x1000, CRC(f85b9c37) SHA1(905eb162436a0a46688df9343296c140480d00cb) )
1373 	ROM_LOAD( "rock-ola_skpb1.ic10", 0x7000, 0x1000, CRC(8020e52d) SHA1(fbe2a27560904225b4406171c1cdbae9941887bd) )
1374 	ROM_LOAD( "sk7_ic14.bin",        0x8000, 0x1000, CRC(6a8817a5) SHA1(4cf8eda68d21b1fad0f12eedaeb88b256bba44da) )
1375 	ROM_RELOAD(                      0xf000, 0x1000 )  /* for the reset and interrupt vectors */
1376 	ROM_LOAD( "sk7_ic15.bin",        0x9000, 0x1000, CRC(1f78d814) SHA1(7e618971f1bbf8859284531e94989c43c3285b4a) )
1377 
1378 	ROM_REGION( 0x2000, "gfx1", 0 )
1379 	ROM_LOAD( "sk8_ic50.bin", 0x0000, 0x1000, CRC(560df07f) SHA1(e57945de829d22d39390a649eddaf78c989af679) )
1380 	ROM_LOAD( "sk8_ic51.bin", 0x1000, 0x1000, CRC(d415de51) SHA1(257cf939efec8adee87baf827315c69fde90da4c) )
1381 
1382 	ROM_REGION( 0x0040, "proms", 0 )
1383 	ROM_LOAD( "sk8_ic7.bin",  0x0000, 0x0020, CRC(ef6c82a0) SHA1(95b522d6389f25bf5fa2fca5f3f826ef43b2885b) ) /* foreground colors */
1384 	ROM_LOAD( "sk8_ic6.bin",  0x0020, 0x0020, CRC(eabc6a00) SHA1(942af5e22e49e578c6a24651476e3b60d40e2076) ) /* background colors */
1385 
1386 	ROM_REGION( 0x1800, "snk6502", 0 )  /* sound ROMs */
1387 	ROM_LOAD( "sk7_ic51.bin", 0x0000, 0x0800, CRC(0345f8b7) SHA1(c00992dc7222cc53d9fdff4ab47a7abdf90c5116) )
1388 	ROM_LOAD( "sk7_ic52.bin", 0x0800, 0x0800, CRC(5d6d68ea) SHA1(d3e03720eff5c85c1c2fb1d4bf960f45a99dc86a) )
1389 	ROM_LOAD( "sk7_ic53.bin", 0x1000, 0x0800, CRC(a4c505cd) SHA1(47eea7e7ffa3dc8b35dc050ac1a1d77d6a5c4ece) )
1390 ROM_END
1391 
1392 ROM_START( nibbler ) /* revision 9 - rom labels match manual part numbers/locations */
1393 	ROM_REGION( 0x10000, "maincpu", 0 )
1394 	ROM_LOAD( "g-0960-52.ic12", 0x3000, 0x1000, CRC(6dfa1be5) SHA1(bb265702a2f74cb7d5ba27081f9fb2fe01dd95a5) )
1395 	ROM_LOAD( "g-0960-48.ic7",  0x4000, 0x1000, CRC(808e1a03) SHA1(a747a16ee0c8cb803b72ac84e80f791b2bf1813a) )
1396 	ROM_LOAD( "g-0960-49.ic8",  0x5000, 0x1000, CRC(1571d4a2) SHA1(42cbaa262c2265d904fd5844c0d3c63d3beb67a8) )
1397 	ROM_LOAD( "g-0960-50.ic9",  0x6000, 0x1000, CRC(a599df10) SHA1(68ee8b5199ec24409fcbb40c887a1eec44c68dcf) )
1398 	ROM_LOAD( "g-0960-51.ic10", 0x7000, 0x1000, CRC(a6b5abe5) SHA1(a0f228dac801a54dfa1947d6b2f6b4e3d005e0b2) )
1399 	ROM_LOAD( "g-0960-53.ic14", 0x8000, 0x1000, CRC(9f537185) SHA1(619df63f4df38014dc229f614043f867e6a5aa51) )
1400 	ROM_RELOAD(                 0xf000, 0x1000 )    /* for the reset and interrupt vectors */
1401 	ROM_LOAD( "g-0960-54.ic15", 0x9000, 0x1000, CRC(7205fb8d) SHA1(bc341bc11a383aa8b8dd7b2be851907a3ec56f8b) )
1402 	ROM_LOAD( "g-0960-55.ic16", 0xa000, 0x1000, CRC(4bb39815) SHA1(1755c28d7d300524ab839aedcc744254544e9c19) )
1403 	ROM_LOAD( "g-0960-56.ic17", 0xb000, 0x1000, CRC(ed680f19) SHA1(b44203585f32ebe2a3bf0597eac7c0faa7e81a92) )
1404 
1405 	ROM_REGION( 0x2000, "gfx1", 0 )
1406 	ROM_LOAD( "g-0960-57.ic50", 0x0000, 0x1000, CRC(01d4d0c2) SHA1(5a8026210a872351ce4e39e27f6479d3ca0689e2) )
1407 	ROM_LOAD( "g-0960-58.ic51", 0x1000, 0x1000, CRC(feff7faf) SHA1(50005502578a4ea9b9c8f36998670b787d2d0b20) )
1408 
1409 	ROM_REGION( 0x0040, "proms", 0 )
1410 	ROM_LOAD( "g-0708-05.ic7",  0x0000, 0x0020, CRC(a5709ff3) SHA1(fbd07b756235f2d03aea3d777ca741ade54be200) ) /* foreground colors */
1411 	ROM_LOAD( "g-0708-04.ic6",  0x0020, 0x0020, CRC(dacd592d) SHA1(c7709c680e2764885a40bc256d07dffc9e827cd6) ) /* background colors */
1412 
1413 	ROM_REGION( 0x1800, "snk6502", ROMREGION_ERASEFF )  /* sound ROMs */
1414 	ROM_LOAD( "g-0959-44.ic52", 0x0800, 0x0800, CRC(87d67dee) SHA1(bd292eab3671cb953279f3136a450deac3818367) )
1415 	ROM_LOAD( "g-0959-45.ic53", 0x1000, 0x0800, CRC(33189917) SHA1(01a1b1693db0172609780daeb60430fa0c8bcec2) )
1416 ROM_END
1417 
1418 ROM_START( nibbler8 ) /* revision 8 */
1419 	ROM_REGION( 0x10000, "maincpu", 0 )
1420 	ROM_LOAD( "50-144.012",     0x3000, 0x1000, CRC(68af8f4b) SHA1(be6ddd3a9abb05563c927b1ec54dbaab44b65492) )
1421 	ROM_LOAD( "50-140.007",     0x4000, 0x1000, CRC(c18b3009) SHA1(c3703d0300f5f1546417ecdc27ab747d9c7eb267) )
1422 	ROM_LOAD( "50-141.008",     0x5000, 0x1000, CRC(b50fd79c) SHA1(cd9847bf8d570ca9411d1bbcbccb3c94220349f9) )
1423 	ROM_LOAD( "g-0960-50.ic9",  0x6000, 0x1000, CRC(a599df10) SHA1(68ee8b5199ec24409fcbb40c887a1eec44c68dcf) ) // 50-142.009
1424 	ROM_LOAD( "g-0960-51.ic10", 0x7000, 0x1000, CRC(a6b5abe5) SHA1(a0f228dac801a54dfa1947d6b2f6b4e3d005e0b2) ) // 50-143.010
1425 	ROM_LOAD( "50-145.014",     0x8000, 0x1000, CRC(29ea246a) SHA1(bf1afbddbea5ab7e93e5ac69c6445749dd65ed3b) )
1426 	ROM_RELOAD(                 0xf000, 0x1000 )    /* for the reset and interrupt vectors */
1427 	ROM_LOAD( "g-0960-54.ic15", 0x9000, 0x1000, CRC(7205fb8d) SHA1(bc341bc11a383aa8b8dd7b2be851907a3ec56f8b) ) // 50-146.015
1428 	ROM_LOAD( "g-0960-55.ic16", 0xa000, 0x1000, CRC(4bb39815) SHA1(1755c28d7d300524ab839aedcc744254544e9c19) ) // 50-147.016
1429 	ROM_LOAD( "g-0960-56.ic17", 0xb000, 0x1000, CRC(ed680f19) SHA1(b44203585f32ebe2a3bf0597eac7c0faa7e81a92) ) // 50-148.017
1430 
1431 	ROM_REGION( 0x2000, "gfx1", 0 )
1432 	ROM_LOAD( "g-0960-57.ic50", 0x0000, 0x1000, CRC(01d4d0c2) SHA1(5a8026210a872351ce4e39e27f6479d3ca0689e2) ) // 50-150.051
1433 	ROM_LOAD( "g-0960-58.ic51", 0x1000, 0x1000, CRC(feff7faf) SHA1(50005502578a4ea9b9c8f36998670b787d2d0b20) ) // 50-149.050
1434 
1435 	ROM_REGION( 0x0040, "proms", 0 )
1436 	ROM_LOAD( "g-0708-05.ic7",  0x0000, 0x0020, CRC(a5709ff3) SHA1(fbd07b756235f2d03aea3d777ca741ade54be200) ) /* foreground colors */
1437 	ROM_LOAD( "g-0708-04.ic6",  0x0020, 0x0020, CRC(dacd592d) SHA1(c7709c680e2764885a40bc256d07dffc9e827cd6) ) /* background colors */
1438 
1439 	ROM_REGION( 0x1800, "snk6502", ROMREGION_ERASEFF )  /* sound ROMs */
1440 	ROM_LOAD( "g-0959-44.ic52", 0x0800, 0x0800, CRC(87d67dee) SHA1(bd292eab3671cb953279f3136a450deac3818367) )
1441 	ROM_LOAD( "g-0959-45.ic53", 0x1000, 0x0800, CRC(33189917) SHA1(01a1b1693db0172609780daeb60430fa0c8bcec2) )
1442 ROM_END
1443 
1444 ROM_START( nibbler7 ) /* revision 7 */
1445 	ROM_REGION( 0x10000, "maincpu", 0 )
1446 	ROM_LOAD( "ic12",           0x3000, 0x1000, CRC(8685d060) SHA1(64b10f9afc9ca97db7b4f7784da0df1574a56919) ) // sldh
1447 	ROM_LOAD( "ic7",            0x4000, 0x1000, CRC(b07195c7) SHA1(7aeccb274eb83aa9c24ccd1e72c694f316d25c4d) ) // sldh
1448 	ROM_LOAD( "ic8",            0x5000, 0x1000, CRC(61034cca) SHA1(8aa06784afe60b7ce9c1ea1c27685610fa9104cf) ) // sldh
1449 	ROM_LOAD( "g-0960-50.ic9",  0x6000, 0x1000, CRC(a599df10) SHA1(68ee8b5199ec24409fcbb40c887a1eec44c68dcf) )
1450 	ROM_LOAD( "g-0960-51.ic10", 0x7000, 0x1000, CRC(a6b5abe5) SHA1(a0f228dac801a54dfa1947d6b2f6b4e3d005e0b2) )
1451 	ROM_LOAD( "ic14",           0x8000, 0x1000, CRC(7a87c766) SHA1(8660cf78de7a4e2aec178155d2941094a3978ba3) ) // sldh
1452 	ROM_RELOAD(                 0xf000, 0x1000 )    /* for the reset and interrupt vectors */
1453 	ROM_LOAD( "g-0960-54.ic15", 0x9000, 0x1000, CRC(7205fb8d) SHA1(bc341bc11a383aa8b8dd7b2be851907a3ec56f8b) )
1454 	ROM_LOAD( "g-0960-55.ic16", 0xa000, 0x1000, CRC(4bb39815) SHA1(1755c28d7d300524ab839aedcc744254544e9c19) )
1455 	ROM_LOAD( "g-0960-56.ic17", 0xb000, 0x1000, CRC(ed680f19) SHA1(b44203585f32ebe2a3bf0597eac7c0faa7e81a92) )
1456 
1457 	ROM_REGION( 0x2000, "gfx1", 0 )
1458 	ROM_LOAD( "g-0960-57.ic50", 0x0000, 0x1000, CRC(01d4d0c2) SHA1(5a8026210a872351ce4e39e27f6479d3ca0689e2) )
1459 	ROM_LOAD( "g-0960-58.ic51", 0x1000, 0x1000, CRC(feff7faf) SHA1(50005502578a4ea9b9c8f36998670b787d2d0b20) )
1460 
1461 	ROM_REGION( 0x0040, "proms", 0 )
1462 	ROM_LOAD( "g-0708-05.ic7",  0x0000, 0x0020, CRC(a5709ff3) SHA1(fbd07b756235f2d03aea3d777ca741ade54be200) ) /* foreground colors */
1463 	ROM_LOAD( "g-0708-04.ic6",  0x0020, 0x0020, CRC(dacd592d) SHA1(c7709c680e2764885a40bc256d07dffc9e827cd6) ) /* background colors */
1464 
1465 	ROM_REGION( 0x1800, "snk6502", ROMREGION_ERASEFF )  /* sound ROMs */
1466 	ROM_LOAD( "g-0959-44.ic52", 0x0800, 0x0800, CRC(87d67dee) SHA1(bd292eab3671cb953279f3136a450deac3818367) )
1467 	ROM_LOAD( "g-0959-45.ic53", 0x1000, 0x0800, CRC(33189917) SHA1(01a1b1693db0172609780daeb60430fa0c8bcec2) )
1468 ROM_END
1469 
1470 ROM_START( nibbler6 ) /* revision 6 */
1471 	ROM_REGION( 0x10000, "maincpu", 0 )
1472 	ROM_LOAD( "ic12",           0x3000, 0x1000, CRC(ac6a802b) SHA1(ac1072e30994f13097663dc24d9d1dc35a95d874) ) // sldh
1473 	ROM_LOAD( "ic7",            0x4000, 0x1000, CRC(35971364) SHA1(6430c7be9e5f47d3f1f2cc157d949246e4085e8b) ) // sldh
1474 	ROM_LOAD( "ic8",            0x5000, 0x1000, CRC(6b33b806) SHA1(29444e45bf5a6ab1d86e0aa19dc6c1bc64ba633f) )
1475 	ROM_LOAD( "ic9",            0x6000, 0x1000, CRC(91a4f98d) SHA1(678c7e8c91a7fdba8dc2faff4192eb0964abdb3f) )
1476 	ROM_LOAD( "ic10",           0x7000, 0x1000, CRC(a151d934) SHA1(6681bdcd84cf62b40b2430ff530cb3c9aa36656c) )
1477 	ROM_LOAD( "ic14",           0x8000, 0x1000, CRC(063f05cc) SHA1(039ac1b007cb817ae0902484ca611ae7076930d6) ) // sldh
1478 	ROM_RELOAD(                 0xf000, 0x1000 )    /* for the reset and interrupt vectors */
1479 	ROM_LOAD( "g-0960-54.ic15", 0x9000, 0x1000, CRC(7205fb8d) SHA1(bc341bc11a383aa8b8dd7b2be851907a3ec56f8b) )
1480 	ROM_LOAD( "g-0960-55.ic16", 0xa000, 0x1000, CRC(4bb39815) SHA1(1755c28d7d300524ab839aedcc744254544e9c19) )
1481 	ROM_LOAD( "g-0960-56.ic17", 0xb000, 0x1000, CRC(ed680f19) SHA1(b44203585f32ebe2a3bf0597eac7c0faa7e81a92) )
1482 
1483 	ROM_REGION( 0x2000, "gfx1", 0 )
1484 	ROM_LOAD( "g-0960-57.ic50", 0x0000, 0x1000, CRC(01d4d0c2) SHA1(5a8026210a872351ce4e39e27f6479d3ca0689e2) )
1485 	ROM_LOAD( "g-0960-58.ic51", 0x1000, 0x1000, CRC(feff7faf) SHA1(50005502578a4ea9b9c8f36998670b787d2d0b20) )
1486 
1487 	ROM_REGION( 0x0040, "proms", 0 )
1488 	ROM_LOAD( "g-0708-05.ic7",  0x0000, 0x0020, CRC(a5709ff3) SHA1(fbd07b756235f2d03aea3d777ca741ade54be200) ) /* foreground colors */
1489 	ROM_LOAD( "g-0708-04.ic6",  0x0020, 0x0020, CRC(dacd592d) SHA1(c7709c680e2764885a40bc256d07dffc9e827cd6) ) /* background colors */
1490 
1491 	ROM_REGION( 0x1800, "snk6502", ROMREGION_ERASEFF )  /* sound ROMs */
1492 	ROM_LOAD( "g-0959-44.ic52", 0x0800, 0x0800, CRC(87d67dee) SHA1(bd292eab3671cb953279f3136a450deac3818367) )
1493 	ROM_LOAD( "g-0959-45.ic53", 0x1000, 0x0800, CRC(33189917) SHA1(01a1b1693db0172609780daeb60430fa0c8bcec2) )
1494 ROM_END
1495 
1496 ROM_START( nibblera ) /* revision 9 - alternate? */
1497 	ROM_REGION( 0x10000, "maincpu", 0 )
1498 	ROM_LOAD( "2732.ic12", 0x3000, 0x1000, CRC(e569937b) SHA1(6ee9aa528cc3f0685153b3170f41b9a665d358e0) )
1499 	ROM_LOAD( "2732.ic07", 0x4000, 0x1000, CRC(7f9d715c) SHA1(59fbdbb55dceaa86235911589395fa5243e44afe) )
1500 	ROM_LOAD( "2732.ic08", 0x5000, 0x1000, CRC(e46eb1c9) SHA1(b70a14085985096eb6650f3d06343a20d75e61b5) )
1501 	ROM_LOAD( "2732.ic09", 0x6000, 0x1000, CRC(a599df10) SHA1(68ee8b5199ec24409fcbb40c887a1eec44c68dcf) )
1502 	ROM_LOAD( "2732.ic10", 0x7000, 0x1000, BAD_DUMP CRC(746e94cd) SHA1(284696722857900760d35f1f8ef53290deddac20) )  // FIXED BITS (xxx1xxxx)
1503 	ROM_LOAD( "2732.ic14", 0x8000, 0x1000, CRC(48ec4af0) SHA1(9b4b80c288d5ade998c0bbcfc3868c9dcd438707) )
1504 	ROM_RELOAD(                 0xf000, 0x1000 )    /* for the reset and interrupt vectors */
1505 	ROM_LOAD( "2732.ic15", 0x9000, 0x1000, CRC(7205fb8d) SHA1(bc341bc11a383aa8b8dd7b2be851907a3ec56f8b) )
1506 	ROM_LOAD( "2732.ic16", 0xa000, 0x1000, CRC(4bb39815) SHA1(1755c28d7d300524ab839aedcc744254544e9c19) )
1507 	ROM_LOAD( "2732.ic17", 0xb000, 0x1000, CRC(ed680f19) SHA1(b44203585f32ebe2a3bf0597eac7c0faa7e81a92) )
1508 
1509 	ROM_REGION( 0x2000, "gfx1", 0 )
1510 	ROM_LOAD( "2732.ic50", 0x0000, 0x1000, CRC(01d4d0c2) SHA1(5a8026210a872351ce4e39e27f6479d3ca0689e2) )
1511 	ROM_LOAD( "2732.ic51", 0x1000, 0x1000, CRC(feff7faf) SHA1(50005502578a4ea9b9c8f36998670b787d2d0b20) )
1512 
1513 	ROM_REGION( 0x0040, "proms", 0 )
1514 	ROM_LOAD( "g-0708-05.ic7",  0x0000, 0x0020, CRC(a5709ff3) SHA1(fbd07b756235f2d03aea3d777ca741ade54be200) ) /* foreground colors */
1515 	ROM_LOAD( "g-0708-04.ic6",  0x0020, 0x0020, CRC(dacd592d) SHA1(c7709c680e2764885a40bc256d07dffc9e827cd6) ) /* background colors */
1516 
1517 	ROM_REGION( 0x1800, "snk6502", ROMREGION_ERASEFF )  /* sound ROMs */
1518 	ROM_LOAD( "2716.ic52", 0x0800, 0x0800, CRC(cabe6c34) SHA1(664ab47555d4c05189d797836f34045f00ac119e) )
1519 	ROM_LOAD( "2716.ic53", 0x1000, 0x0800, CRC(33189917) SHA1(01a1b1693db0172609780daeb60430fa0c8bcec2) ) // missing in set
1520 ROM_END
1521 
1522 ROM_START( nibblerp ) /* revision 6 + extra soundrom */
1523 	ROM_REGION( 0x10000, "maincpu", 0 )
1524 	ROM_LOAD( "ic12",           0x3000, 0x1000, CRC(ac6a802b) SHA1(ac1072e30994f13097663dc24d9d1dc35a95d874) ) // sldh
1525 	ROM_LOAD( "ic7",            0x4000, 0x1000, CRC(35971364) SHA1(6430c7be9e5f47d3f1f2cc157d949246e4085e8b) ) // sldh
1526 	ROM_LOAD( "ic8",            0x5000, 0x1000, CRC(6b33b806) SHA1(29444e45bf5a6ab1d86e0aa19dc6c1bc64ba633f) ) // sldh
1527 	ROM_LOAD( "ic9",            0x6000, 0x1000, CRC(91a4f98d) SHA1(678c7e8c91a7fdba8dc2faff4192eb0964abdb3f) )
1528 	ROM_LOAD( "ic10",           0x7000, 0x1000, CRC(a151d934) SHA1(6681bdcd84cf62b40b2430ff530cb3c9aa36656c) )
1529 	ROM_LOAD( "ic14",           0x8000, 0x1000, CRC(063f05cc) SHA1(039ac1b007cb817ae0902484ca611ae7076930d6) )
1530 	ROM_RELOAD(                 0xf000, 0x1000 )    /* for the reset and interrupt vectors */
1531 	ROM_LOAD( "g-0960-54.ic15", 0x9000, 0x1000, CRC(7205fb8d) SHA1(bc341bc11a383aa8b8dd7b2be851907a3ec56f8b) )
1532 	ROM_LOAD( "g-0960-55.ic16", 0xa000, 0x1000, CRC(4bb39815) SHA1(1755c28d7d300524ab839aedcc744254544e9c19) )
1533 	ROM_LOAD( "g-0960-56.ic17", 0xb000, 0x1000, CRC(ed680f19) SHA1(b44203585f32ebe2a3bf0597eac7c0faa7e81a92) )
1534 
1535 	ROM_REGION( 0x2000, "gfx1", 0 )
1536 	ROM_LOAD( "g-0960-57.ic50", 0x0000, 0x1000, CRC(01d4d0c2) SHA1(5a8026210a872351ce4e39e27f6479d3ca0689e2) )
1537 	ROM_LOAD( "g-0960-58.ic51", 0x1000, 0x1000, CRC(feff7faf) SHA1(50005502578a4ea9b9c8f36998670b787d2d0b20) )
1538 
1539 	ROM_REGION( 0x0040, "proms", 0 )
1540 	ROM_LOAD( "g-0708-05.ic7",  0x0000, 0x0020, CRC(a5709ff3) SHA1(fbd07b756235f2d03aea3d777ca741ade54be200) ) /* foreground colors */
1541 	ROM_LOAD( "g-0708-04.ic6",  0x0020, 0x0020, CRC(dacd592d) SHA1(c7709c680e2764885a40bc256d07dffc9e827cd6) ) /* background colors */
1542 
1543 	ROM_REGION( 0x1800, "snk6502", 0 )  /* sound ROMs */
1544 	ROM_LOAD( "sk7_ic51.bin",   0x0000, 0x0800, CRC(0345f8b7) SHA1(c00992dc7222cc53d9fdff4ab47a7abdf90c5116) ) /* Rom from Pioneer Balloon */
1545 	ROM_LOAD( "g-0959-44.ic52", 0x0800, 0x0800, CRC(87d67dee) SHA1(bd292eab3671cb953279f3136a450deac3818367) )
1546 	ROM_LOAD( "g-0959-45.ic53", 0x1000, 0x0800, CRC(33189917) SHA1(01a1b1693db0172609780daeb60430fa0c8bcec2) )
1547 ROM_END
1548 
1549 ROM_START( nibblero ) /* revision 8 */
1550 	ROM_REGION( 0x10000, "maincpu", 0 )
1551 	ROM_LOAD( "50-144g.012",    0x3000, 0x1000, CRC(1093f525) SHA1(6a63372300765acdbac1d2e30fd73af7773de80f) )
1552 	ROM_LOAD( "50-140g.007",    0x4000, 0x1000, CRC(848651dd) SHA1(a5aafbcca42baca8d0d5d28546733aefc778ba99) )
1553 	ROM_LOAD( "50-141.008",     0x5000, 0x1000, CRC(b50fd79c) SHA1(cd9847bf8d570ca9411d1bbcbccb3c94220349f9) )
1554 	ROM_LOAD( "nibblero.ic9",   0x6000, 0x1000, CRC(a599df10) SHA1(68ee8b5199ec24409fcbb40c887a1eec44c68dcf) ) // ic9
1555 	ROM_LOAD( "nibblero.ic10",  0x7000, 0x1000, CRC(a6b5abe5) SHA1(a0f228dac801a54dfa1947d6b2f6b4e3d005e0b2) ) // ic10
1556 	ROM_LOAD( "50-145.014",     0x8000, 0x1000, CRC(29ea246a) SHA1(bf1afbddbea5ab7e93e5ac69c6445749dd65ed3b) )
1557 	ROM_RELOAD(                 0xf000, 0x1000 )    /* for the reset and interrupt vectors */
1558 	ROM_LOAD( "g-0960-54.ic15", 0x9000, 0x1000, CRC(7205fb8d) SHA1(bc341bc11a383aa8b8dd7b2be851907a3ec56f8b) )
1559 	ROM_LOAD( "g-0960-55.ic16", 0xa000, 0x1000, CRC(4bb39815) SHA1(1755c28d7d300524ab839aedcc744254544e9c19) )
1560 	ROM_LOAD( "g-0960-56.ic17", 0xb000, 0x1000, CRC(ed680f19) SHA1(b44203585f32ebe2a3bf0597eac7c0faa7e81a92) )
1561 
1562 	ROM_REGION( 0x2000, "gfx1", 0 )
1563 	ROM_LOAD( "g-0960-57.ic50", 0x0000, 0x1000, CRC(01d4d0c2) SHA1(5a8026210a872351ce4e39e27f6479d3ca0689e2) )
1564 	ROM_LOAD( "g-0960-58.ic51", 0x1000, 0x1000, CRC(feff7faf) SHA1(50005502578a4ea9b9c8f36998670b787d2d0b20) )
1565 
1566 	ROM_REGION( 0x0040, "proms", 0 )
1567 	ROM_LOAD( "g-0708-05.ic7",  0x0000, 0x0020, CRC(a5709ff3) SHA1(fbd07b756235f2d03aea3d777ca741ade54be200) ) /* foreground colors */
1568 	ROM_LOAD( "g-0708-04.ic6",  0x0020, 0x0020, CRC(dacd592d) SHA1(c7709c680e2764885a40bc256d07dffc9e827cd6) ) /* background colors */
1569 
1570 	ROM_REGION( 0x1800, "snk6502", ROMREGION_ERASEFF )  /* sound ROMs */
1571 	ROM_LOAD( "g-0959-44.ic52", 0x0800, 0x0800, CRC(87d67dee) SHA1(bd292eab3671cb953279f3136a450deac3818367) )
1572 	ROM_LOAD( "g-0959-45.ic53", 0x1000, 0x0800, CRC(33189917) SHA1(01a1b1693db0172609780daeb60430fa0c8bcec2) )
1573 ROM_END
1574 
1575 
1576 /*************************************
1577  *
1578  *  Game drivers
1579  *
1580  *************************************/
1581 
1582 GAME( 1980, sasuke,      0,        sasuke,   sasuke,   snk6502_state, empty_init, ROT90, "SNK", "Sasuke vs. Commander", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1583 GAME( 1981, satansat,    0,        satansat, satansat, snk6502_state, empty_init, ROT90, "SNK", "Satan of Saturn (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1584 GAME( 1981, satansata,   satansat, satansat, satansat, snk6502_state, empty_init, ROT90, "SNK", "Satan of Saturn (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1585 GAME( 1981, zarzon,      satansat, satansat, satansat, snk6502_state, empty_init, ROT90, "SNK (Taito America license)", "Zarzon", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1586 GAME( 1981, satansatind, satansat, satansat, satansat, snk6502_state, empty_init, ROT90, "bootleg (Inder S.A.)", "Satan of Saturn (Inder S.A., bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1587 GAME( 1981, vanguard,    0,        vanguard, vanguard, vanguard_state,empty_init, ROT90, "SNK", "Vanguard (SNK)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1588 GAME( 1981, vanguardc,   vanguard, vanguard, vanguard, vanguard_state,empty_init, ROT90, "SNK (Centuri license)", "Vanguard (Centuri)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1589 GAME( 1981, vanguardg,   vanguard, vanguard, vanguard, vanguard_state,empty_init, ROT90, "SNK", "Vanguard (Germany)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1590 GAME( 1981, vanguardj,   vanguard, vanguard, vanguard, vanguard_state,empty_init, ROT90, "SNK", "Vanguard (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1591 GAME( 1981, fantasyu,    0,        fantasy,  fantasyu, fantasy_state, empty_init, ROT90, "SNK (Rock-Ola license)", "Fantasy (US)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1592 GAME( 1981, fantasyg,    fantasyu, fantasy,  fantasy,  fantasy_state, empty_init, ROT90, "SNK", "Fantasy (Germany, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // bootleg?
1593 GAME( 1981, fantasyg2,   fantasyu, fantasy,  fantasy,  fantasy_state, empty_init, ROT90, "SNK", "Fantasy (Germany, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // bootleg?
1594 GAME( 1981, fantasyj,    fantasyu, fantasy,  fantasyu, fantasy_state, empty_init, ROT90, "SNK", "Fantasy (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1595 GAME( 1982, pballoon,    0,        pballoon, pballoon, fantasy_state, empty_init, ROT90, "SNK", "Pioneer Balloon", MACHINE_SUPPORTS_SAVE )
1596 GAME( 1982, pballoonr,   pballoon, pballoon, pballoon, fantasy_state, empty_init, ROT90, "SNK (Rock-Ola license)", "Pioneer Balloon (Rock-Ola license)", MACHINE_SUPPORTS_SAVE )
1597 GAME( 1982, nibbler,     0,        nibbler,  nibbler,  fantasy_state, empty_init, ROT90, "Rock-Ola", "Nibbler (rev 9, set 1)", MACHINE_SUPPORTS_SAVE )
1598 GAME( 1982, nibblera,    nibbler,  nibbler,  nibbler,  fantasy_state, empty_init, ROT90, "Rock-Ola", "Nibbler (rev 9, set 2)", MACHINE_SUPPORTS_SAVE )
1599 GAME( 1982, nibbler8,    nibbler,  nibbler,  nibbler8, fantasy_state, empty_init, ROT90, "Rock-Ola", "Nibbler (rev 8)", MACHINE_SUPPORTS_SAVE )
1600 GAME( 1983, nibblero,    nibbler,  nibbler,  nibbler8, fantasy_state, empty_init, ROT90, "Rock-Ola (Olympia license)", "Nibbler (rev 8, Olympia)", MACHINE_SUPPORTS_SAVE )
1601 GAME( 1982, nibbler7,    nibbler,  nibbler,  nibbler8, fantasy_state, empty_init, ROT90, "Rock-Ola", "Nibbler (rev 7)", MACHINE_SUPPORTS_SAVE )
1602 GAME( 1982, nibbler6,    nibbler,  nibbler,  nibbler6, fantasy_state, empty_init, ROT90, "Rock-Ola", "Nibbler (rev 6)", MACHINE_SUPPORTS_SAVE )
1603 GAME( 1982, nibblerp,    nibbler,  nibbler,  nibbler6, fantasy_state, empty_init, ROT90, "Rock-Ola", "Nibbler (rev 6, Pioneer Balloon conversion)", MACHINE_SUPPORTS_SAVE ) // music
1604