1 // license:BSD-3-Clause
2 // copyright-holders:Nicola Salmoria, Tormod Tjaberg, Mirko Buffoni, Lee Taylor, Valerio Verrando, Zsolt Vasvari, Aaron Giles, Jonathan Gevaryahu, hap, Robbbert
3 // thanks-to:Michael Strutts, Marco Cassili
4 /*****************************************************************************
5 
6     8080bw.cpp
7 
8     Michael Strutts, Nicola Salmoria, Tormod Tjaberg, Mirko Buffoni
9     Lee Taylor, Valerio Verrando, Marco Cassili, Zsolt Vasvari, and others
10 
11     Much information about Space Invaders PCBs and other Taito and Midway
12     sets and hardware contributed by Andrew Welburn
13 
14 
15     Notes:
16     -----
17 
18     - Midway Deluxe Space Invaders still displays 'Space Invaders Part II',
19       because of the terms of the licensing agreement.
20     - DIP settings/locations verified from manual for:
21       sitv, sicv, invadpt2, lrescue, invasion, invrvnge
22 
23     - The Taito Space Invaders hardware comes on at least five board types;
24       The Taito manufactured ones are:
25       * The "L-shaped" PCB set, B&W and Upright mode only
26       * Three PCBs in a stack, often called the '3 layer PCB set' (most common)
27       * Two PCBs in a stack, with the function of the CPU/ROM boards combined.
28       * In general, discounting revision specific differences, the PCBs are
29         arranged in a stack, connected end-to-end by ribbon cables and folded
30         such that the middle PCB (of 3 PCB stack) or the bottom PCB (of 2 PCB
31         stack) is upside down.
32       * Keep in mind specific differences on the PCBs (especially the TVN PCBs
33         vs the others) sometimes prevent exchanging 'equivalent' PCBs between stacks.
34         * L-shaped PCB set details:
35           * One large, square board with ROM, RAM, CPU, Video circuitry on it.
36           * One smaller PCB with audio/io/shifter circuitry on it, plugged into
37             the main PCB at a right angle (hence the entire PCB set is 'L-shaped')
38           * Does not have the any hardware of any sort for electronic color screen
39             overlay or screen flipping for cocktail use.
40         * 3 layer PCB set details:
41           * This PCB set came in 3 versions: TVN, CVN, PVN; see below for differences.
42           * Top PCB: Audio/IO/Shifter PCB
43             - discrete analogue audio and sn76477, and volume pots
44             - data shifter, using either ~11 74xx chips, AM25S10s, Fujitsu MB14221
45               or Fujitsu MB14241 chips, which all do the same thing.
46             - has the dipswitches
47             - has the main "G" edge connector for the wiring harness
48             - has the gating circuitry for the color overlay
49               (these are not present and/or populated on some TVN PCBs)
50             - despite there being at least six versions of this PCB, the discrete
51               audio section is identical in all of them.
52           * Middle PCB: CPU/RAM/Color overlay PCB
53             - has DRAMS on it
54             - has the 8080 CPU on it
55             - has the two PROMS for color overlay on it (one for each player flip)
56               (these are not populated on TVN PCBs and the related circuitry is not
57               present and/or populated on the earliest TVN PCBs)
58           * Bottom PCB: Power/Video/ROM PCB
59             - has the game ROMs on it
60             - has the main B&W video generation logic on it
61             - has connection to the PSU, and B&W composite output "T" connector
62         * 2 layer PCB set details:
63           * This PCB set came in one version for PVN use, sharing the same top PCB
64             as 3 found in regular layer PCB sets
65           * Bottom PCB combines the function of the Middle and Bottom PCBs
66             of the 3 layer set.
67 
68         * The different PCB set versions are noted by a different version code on
69           a paper sticker on the PCB; The code will be of the format mVNnnnnn where
70           m is a letter and nnnnn is a number.
71           Codes:
72           * TVNxxxxx (3 layer PCBset) - B&W only, used on "T.T Space Invaders"
73             cocktail with 'blended' single-sheet gel color overlay.
74       ***TODO: this overlay is not supported yet!
75             Several revisions (at least 5 ROM, 3 cpu, 3 audio) of each PCB exist
76             for this set.
77             Does support flipscreen.
78             Does not have the color overlay circuitry nor places for it on the PCBs.
79             (Later TVNxxxxx are actually rebadged CVNxxxxx, see below)
80             Came from factory with one of the SV or TV romsets.
81             Capable of running TV, SV or CV romsets.
82             This PCB set is probably the oldest one and was designed at Taito.
83           * SVNxxxxx? (L-shaped PCBset) - B&W only, used on "Space Invaders" Upright
84             with 3-separate-sheets-of-gel 'strips' color overlay.
85       ***TODO: this overlay might not be supported properly yet!
86             Does not support flipscreen, was intended for upright cabinets only.
87             Audio PCB daughterboard has part number SVN00001 or SVN00003.
88             Came from factory with one of the 6x 0x400 or 4x 0x800 romsets
89             Capable of running TV, SV or CV romsets.
90             This is the second-oldest PCB set and does not share physical compatibility
91             with Midway (interboard connector is of a differing pitch)
92           * CVNxxxxx (3 layer PCBset) - Color, used on "T.T Space Invaders Color"
93             cocktail with electronic color overlay.
94             Does support flipscreen.
95             Note that later TVNxxxxx PCBsets are actually 'rebadged' CVNxxxxx
96             PCBsets with the color overlay circuitry unpopulated, and can be
97             'upgraded' to CVNxxxxx by adding a few components and proms.
98             Came from factory with one of the CV romsets.
99             Capable of running TV, SV or CV romsets.
100           * PVNxxxxx (2&3 layer PCBsets) - Color, used on "T.T Space Invaders Part
101             II" cocktail with electronic color overlay.
102             Several revisions (at least 3 rom, 1 cpu, 2 audio) of each PCB exist
103             for this set.
104             Came from factory with UV (2708) or PV (2716) romsets.
105             Capable of running all romsets.
106 
107        * The following Romsets are known, ROUGHLY from oldest to newest:
108          SV01, SV02, SV03, SV04, SV05, SV06 - undumped (rev 1), If this exists at all this would be the very first Japanese release of space invaders (Andy W may call this 'SV0'?)
109          SV01, SV02, SV10, SV04, SV09, SV06 - sisv2 (rev 2) (Andy W calls this 'SV1', and the midway 'invaders' set is based on this romset)
110          SV0H, SV02, SV10, SV04, SV09, SV06 - sisv3 (rev 3) (Andy W calls this 'SV2')
111          SV0H, SV11, SV12, SV04, SV13, SV14 - sisv (rev 4, 5-digit scoring) (Andy W calls this 'SV3') (this set is likely newer than the TV0x sets)
112          TV01, TV02, TV03, TV04 - sitv1 (rev 1)
113          TV0H, TV02, TV03, TV04 - sitv (rev 2 with bug fixes)
114          CV03, CV04, CV05, CV06 w/proms - undumped (but may be the same as one of the sisv sets with the roms combined to 2716 size)
115          CV17, CV18, CV19, CV20 w/proms - sicv
116          UV1, UV2, UV3, UV4, UV5, UV6, UV7, UV8, UV9, UV10 w/proms - invadpt2a - (same as PVxx set just split differently)
117          PV01, PV02, PV03, PV04, PV05 w/proms - invadpt2
118          Note: SV0H and TV0H are called in Taito documentation "SV01-1" and "TV01-1" most likely due to someone along the line mistaking the '1-1' for an H or vice versa when writing the documentation or creating the labels.
119 
120     - Midway PCB sets: (cursory description)
121       * All Midway Space Invaders games ([Space Invader Upright], [Space Invader Cocktail],
122         [Deluxe Space Invaders Upright], [Deluxe Space Invaders Cocktail], and [Space Invaders II])
123         use the same m8080bw mainboard, with no emulation-relevant differences between revisions.
124       * [Space Invaders II] from Midway (only produced as a cocktail) uses
125         an extra sound board for the simultaneous 2 player head-to-head sounds.
126 
127     - Taito-USA-made 'trimline' PCBS do not match the Taito Japan-made PCBs either.
128 
129 
130     To Do:
131     -----
132 
133     - Midway PCB sets
134       * The discrete components, particularly for the shot sound, differ
135         between Taito and Midway audio daughterboards.
136         + Figure out the difference between the Taito and Midway discrete
137           boards and emulate them both properly.
138         + Figure out what the current discrete setup is trying to emulate.
139       * Remove Space Invaders 'invaders' set from mw8080bw.c, it does not belong
140         there at all
141 
142     - Space Chaser (schaser)
143       1. Schematic has SX2 & 4 swapped by mistake.
144 
145       2. Dipswitch 4 we have listed as "Easy/Hard", however the manual says
146          it should not be used. The Hard position displays many bugs.
147 
148       3. Confirmation of these on a real machine (schaserb set) have been
149          received from the owner of the PCB.
150         "Hi Rob,
151          I seem to get the same bugs as you with Dip4 set to off.  Score starts at 9000,
152          2 missiles on first level etc..  It makes no mention of dip4 adjusting the hardness
153          in the manual, are you guys sure that's what it was intended for "in the factory"?
154          However you were correct in thinking the schematics were wrong.  My multimeter found
155          the following:
156          15k resistor - pin 7
157          39k - pin 10
158          82k - pin 12
159          It looks like they have Sx2 and Sx4 the wrong way round on a latter page of the schematics."
160            Thanks to Andy Raven for getting this information.
161 
162       4. The "Hard" mode bug can be fixed with a single byte patch: ROM_FILL( 0x47e5, 1, 0xc3)
163 
164       5. I have seen real machines with Hard mode set, that worked properly, thus there
165          must be yet another romset still waiting to be found.
166 
167       6. Strange bug; sometimes the missile sound continues into and past the
168          music/explosion. This didn't happen on the real machines I played.
169 
170     - Space Chaser (schasercv)
171          These cheats exist in this game:
172          1. Hold down 2P DOWN (the F key) while it says INSERT COIN. Then
173             insert a coin and play. You will have 2 extra ships.
174          2. In the Hard difficulty setting, you normally start at level 4.
175             Hold down the 1P START (the 1 key) while it says INSERT COIN.
176             Then insert a coin and play. You will start at level 5.
177 
178     - Space War (Sanritsu)
179       * I seem to recall that the flashing ufo had its own sample
180         sound, a sort of rattling noise. Unable to find evidence
181         of this (so far).
182 
183     - Steel Worker, Space Combat
184         Holding down the coin button causes the credits to rapidly increase.
185 
186 
187 *****************************************************************************/
188 
189 #include "emu.h"
190 #include "includes/8080bw.h"
191 
192 #include "cpu/m6800/m6800.h"
193 #include "cpu/i8085/i8085.h"
194 #include "machine/watchdog.h"
195 #include "sound/ay8910.h"
196 
197 #include "speaker.h"
198 
199 #include "attackfc.lh"
200 #include "cosmicm.lh"
201 #include "escmars.lh"
202 #include "galactic.lh"
203 #include "gunchamp.lh"
204 #include "shuttlei.lh"
205 #include "spacecom.lh"
206 #include "yosakdon.lh"
207 
208 
209 /*******************************************************/
210 /*                                                     */
211 /* Games with additional sound / video hardware        */
212 /*                                                     */
213 /*******************************************************/
214 
MACHINE_START_MEMBER(_8080bw_state,extra_8080bw)215 MACHINE_START_MEMBER(_8080bw_state,extra_8080bw)
216 {
217 	mw8080bw_state::machine_start();
218 
219 	MACHINE_START_CALL_MEMBER(extra_8080bw_sh);
220 	MACHINE_START_CALL_MEMBER(extra_8080bw_vh);
221 }
222 
223 /*******************************************************/
224 /*                                                     */
225 /* Space Invaders CV Version (Taito)                   */
226 /*                                                     */
227 /*******************************************************/
228 
229 static INPUT_PORTS_START( sicv )
230 	PORT_START("IN0")
231 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
232 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
233 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
234 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
235 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
236 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
237 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
238 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
239 
240 	PORT_START("IN1")
241 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
242 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
243 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
244 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_CUSTOM_MEMBER(mw8080bw_state,invaders_in1_control_r)245 	PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(mw8080bw_state, invaders_in1_control_r)
246 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
247 
248 	PORT_START("IN2")
249 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:1,2")
250 	PORT_DIPSETTING(    0x00, "3" )
251 	PORT_DIPSETTING(    0x01, "4" )
252 	PORT_DIPSETTING(    0x02, "5" )
253 	PORT_DIPSETTING(    0x03, "6" )
254 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )          PORT_DIPLOCATION("SW1:3")
255 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW1:4")
256 	PORT_DIPSETTING(    0x08, "1000" )
257 	PORT_DIPSETTING(    0x00, "1500" )
258 	/* SW1:5,6,7: In OFF, PL2 can have no control of joystick, going auto left/right and other problems like no laser gun.
259 	Be sure these are always ON */
260 	PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(mw8080bw_state, invaders_in2_control_r) PORT_DIPLOCATION("SW1:5,6,7") // Labeled as "FACTORY"
261 	PORT_DIPNAME( 0x80, 0x00, "Coin Info" )             PORT_DIPLOCATION("SW1:8")
262 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
263 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
264 
265 	/* Dummy controls port, P1 */
266 	INVADERS_CONTROL_PORT_P1
267 
268 	/* Dummy controls port, P2 */
269 	INVADERS_CONTROL_PORT_P2
270 
271 	/* Dummy port for cocktail mode */
272 	INVADERS_CAB_TYPE_PORT
273 INPUT_PORTS_END
274 
275 
276 
277 /*******************************************************/
278 /*                                                     */
279 /* Space Invaders TV Version (Taito)                   */
280 /*                                                     */
281 /*******************************************************/
282 
283 /* same as the CV version with a test mode switch */
284 static INPUT_PORTS_START( sitv )
285 	PORT_INCLUDE( sicv )
286 
287 	PORT_MODIFY("IN0")
288 	PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
289 
290 	PORT_MODIFY("IN1")
291 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
292 INPUT_PORTS_END
293 
294 
295 
296 /*******************************************************/
297 /*                                                     */
298 /* Alien Invasion                                      */
299 /*                                                     */
300 /*******************************************************/
301 
302 static INPUT_PORTS_START( alieninv )
303 	PORT_START("IN0")
304 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
305 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
306 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
307 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
308 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
309 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
310 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
311 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
312 
313 	PORT_START("IN1")
314 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
315 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
316 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
317 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
318 	PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(mw8080bw_state, invaders_in1_control_r)
319 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
320 
321 	PORT_START("IN2")
322 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:1")
323 	PORT_DIPSETTING(    0x00, "2" )
324 	PORT_DIPSETTING(    0x01, "3" )
325 	PORT_DIPNAME( 0x02, 0x02, "Pence Coinage" )     PORT_DIPLOCATION("SW1:2")
326 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
327 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
328 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 )     PORT_DIPLOCATION("SW1:3") /* Pence Coin */
329 	PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW1:4" )   /* Not bonus */
330 	PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(mw8080bw_state, invaders_in2_control_r) PORT_DIPLOCATION("SW1:5,6,7")
331 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Coinage ) )                  PORT_DIPLOCATION("SW1:8")
332 	PORT_DIPSETTING(    0x00, "2C/1C 50p/3C (+ Bonus Life)" )
333 	PORT_DIPSETTING(    0x80, "1C/1C 50p/5C" )
334 
335 	/* Dummy controls port, P1 */
336 	INVADERS_CONTROL_PORT_P1
337 
338 	/* Dummy controls port, P2 */
339 	INVADERS_CONTROL_PORT_P2
340 
341 	/* Dummy port for cocktail mode */
342 	INVADERS_CAB_TYPE_PORT
343 INPUT_PORTS_END
344 
345 
346 
347 /*******************************************************/
348 /*                                                     */
349 /* Space Invaders Model Racing                         */
350 /*                                                     */
351 /*******************************************************/
352 
353 static INPUT_PORTS_START( invadrmr )
354 	PORT_INCLUDE( sicv )
355 
356 	PORT_MODIFY("IN2")
357 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4")
358 	PORT_DIPSETTING(    0x00, "1500" )
359 	PORT_DIPSETTING(    0x08, "3000" ) /* This is different to invaders */
360 INPUT_PORTS_END
361 
362 
363 
364 /*******************************************************/
365 /*                                                     */
366 /* Midway "Space Invaders Part II"                     */
367 /*                                                     */
368 /*******************************************************/
369 
370 void _8080bw_state::invadpt2_io_map(address_map &map)
371 {
372 	map(0x00, 0x00).portr("IN0");
373 	map(0x01, 0x01).portr("IN1");
374 	map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
375 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(FUNC(_8080bw_state::invadpt2_sh_port_1_w));
376 	map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
377 	map(0x05, 0x05).w(FUNC(_8080bw_state::invadpt2_sh_port_2_w));
378 	map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
379 }
380 
381 
382 static INPUT_PORTS_START( invadpt2 )
PORT_INCLUDE(sicv)383 	PORT_INCLUDE( sicv )
384 
385 	PORT_MODIFY("IN0")
386 	// Name Reset - if name of high scorer was rude, owner can press this button
387 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Name Reset") PORT_CODE(KEYCODE_F1)
388 
389 	PORT_MODIFY("IN1")
390 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
391 
392 	PORT_MODIFY("IN2")
393 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1")
394 	PORT_DIPSETTING(    0x00, "3" )
395 	PORT_DIPSETTING(    0x01, "4" )
396 	// SW1:2 doesn't seem to work?
397 	PORT_DIPNAME( 0x02, 0x00, "Rotate Images" ) PORT_DIPLOCATION("SW1:2") // "When ON, the images on screen will be rotated. Default is ON."
398 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
399 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
400 	PORT_DIPNAME( 0x08, 0x00, "Preset Mode" ) PORT_DIPLOCATION("SW1:4") // Preset Mode: "Switch for checking, when OFF checking can be done."
401 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
402 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
403 INPUT_PORTS_END
404 
405 
406 /* same as regular invaders, but with a color board added */
407 void _8080bw_state::invadpt2(machine_config &config)
408 {
409 	mw8080bw_root(config);
410 
411 	/* basic machine hardware */
412 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::invadpt2_io_map);
413 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw)
414 
415 	/* 60 Hz signal clocks two LS161. Ripple carry will */
416 	/* reset circuit, if LS161 not cleared before.      */
417 	WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 255);
418 
419 	/* add shifter */
420 	MB14241(config, m_mb14241);
421 
422 	/* video hardware */
423 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invadpt2));
424 
425 	PALETTE(config, m_palette, palette_device::RBG_3BIT);
426 
427 	/* sound hardware */
428 	invaders_samples_audio(config);
429 }
430 
431 
432 
433 /*******************************************************/
434 /*                                                     */
435 /* Space Ranger                                        */
436 /*                                                     */
437 /*******************************************************/
438 
spacerng_io_map(address_map & map)439 void _8080bw_state::spacerng_io_map(address_map &map)
440 {
441 	map(0x00, 0x00).portr("IN0");
442 	map(0x01, 0x01).portr("IN1");
443 	map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
444 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(FUNC(_8080bw_state::invadpt2_sh_port_1_w));
445 	map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
446 	map(0x05, 0x05).w(FUNC(_8080bw_state::spacerng_sh_port_2_w));
447 	map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
448 }
449 
spacerng(machine_config & config)450 void _8080bw_state::spacerng(machine_config &config)
451 {
452 	invadpt2(config);
453 
454 	/* basic machine hardware */
455 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::spacerng_io_map);
456 }
457 
458 
459 
460 /*******************************************************/
461 /*                                                     */
462 /* Space Wars (Sanritsu)                               */
463 /*                                                     */
464 /*******************************************************/
465 
spcewars_io_map(address_map & map)466 void _8080bw_state::spcewars_io_map(address_map &map)
467 {
468 	map(0x00, 0x00).portr("IN0");
469 	map(0x01, 0x01).portr("IN1");
470 	map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
471 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(FUNC(_8080bw_state::spcewars_sh_port_w));
472 	map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
473 	map(0x05, 0x05).w(FUNC(_8080bw_state::invadpt2_sh_port_2_w));
474 }
475 
476 
477 static INPUT_PORTS_START( spcewars )
PORT_INCLUDE(sicv)478 	PORT_INCLUDE( sicv )
479 
480 	PORT_MODIFY("IN1")
481 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
482 
483 	PORT_MODIFY("IN2")
484 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:1")
485 	PORT_DIPSETTING(    0x00, "3" )
486 	PORT_DIPSETTING(    0x01, "4" )
487 	PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x00, "SW1:2" )
488 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW1:4")
489 	PORT_DIPSETTING(    0x00, "1500" )
490 	PORT_DIPSETTING(    0x08, "2000" )
491 INPUT_PORTS_END
492 
493 void _8080bw_state::spcewars(machine_config &config)
494 {
495 	mw8080bw_root(config);
496 
497 	/* basic machine hardware */
498 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::spcewars_io_map);
499 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw)
500 
501 	/* add shifter */
502 	MB14241(config, m_mb14241);
503 
504 	/* sound hardware */
505 	invaders_samples_audio(config);
506 
507 	/* extra audio channel */
508 	SPEAKER_SOUND(config, m_speaker);
509 	m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
510 
511 	/* video hardware */
512 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invaders));
513 }
514 
515 
516 /*******************************************************/
517 /*                                                     */
518 /* Space War (Leisure and Allied)                      */
519 /*                                                     */
520 /*******************************************************/
521 
522 // has a slightly rearranged io map and has PROMs and watchdog
523 
spcewarla_io_map(address_map & map)524 void _8080bw_state::spcewarla_io_map(address_map &map)
525 {
526 	map(0x00, 0x00).portr("IN0");
527 	map(0x01, 0x01).portr("IN1");
528 	map(0x02, 0x02).portr("IN2");
529 	map(0x04, 0x04).w(FUNC(_8080bw_state::spcewars_sh_port_w));
530 	map(0x05, 0x05).w(FUNC(_8080bw_state::invadpt2_sh_port_2_w));
531 	map(0x06, 0x06).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
532 	map(0x08, 0x08).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
533 	map(0x0c, 0x0c).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
534 }
535 
spcewarla(machine_config & config)536 void _8080bw_state::spcewarla(machine_config &config)
537 {
538 	spcewars(config);
539 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::spcewarla_io_map);
540 
541 	WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 255);
542 
543 	PALETTE(config, m_palette, palette_device::RBG_3BIT);
544 
545 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invadpt2));
546 }
547 
548 
549 /*******************************************************/
550 /*                                                     */
551 /* Astro Sidam?                                        */
552 /*                                                     */
553 /*******************************************************/
554 
astropal_io_map(address_map & map)555 void _8080bw_state::astropal_io_map(address_map &map)
556 {
557 	map.global_mask(0x7);
558 	map(0x00, 0x00).mirror(0x04).portr("IN0");
559 	map(0x01, 0x01).mirror(0x04).portr("IN1");
560 	map(0x03, 0x03).mirror(0x04).portr("IN3");
561 
562 	map(0x03, 0x03).w("soundboard", FUNC(invaders_audio_device::p1_w));
563 	map(0x05, 0x05).w("soundboard", FUNC(invaders_audio_device::p2_w));
564 	map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
565 }
566 
567 static INPUT_PORTS_START( astropal )
568 	PORT_START("IN0")
DEF_STR(Lives)569 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
570 	PORT_DIPSETTING(    0x00, "2" )
571 	PORT_DIPSETTING(    0x01, "3" )
572 	PORT_DIPSETTING(    0x02, "4" )
573 	PORT_DIPSETTING(    0x03, "5" )
574 	PORT_BIT( 0xfc, IP_ACTIVE_LOW,  IPT_UNUSED )        /* never read */
575 
576 	PORT_START("IN1")
577 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
578 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
579 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
580 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 )
581 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
582 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
583 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
584 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
585 
586 	/* PORT_START("IN2") - never read */
587 
588 	PORT_START("IN3")
589 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
590 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
591 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
592 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
593 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
594 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
595 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
596 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 )
597 
598 	/* Dummy port for cocktail mode (not used) */
599 	PORT_START(INVADERS_CAB_TYPE_PORT_TAG)
600 	PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
601 INPUT_PORTS_END
602 
603 void _8080bw_state::astropal(machine_config &config)
604 {
605 	invaders(config);
606 
607 	/* basic machine hardware */
608 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::astropal_io_map);
609 }
610 
611 
612 
613 /*******************************************************/
614 /*                                                     */
615 /* Cosmo                                               */
616 /*                                                     */
617 /*******************************************************/
618 
cosmo_map(address_map & map)619 void _8080bw_state::cosmo_map(address_map &map)
620 {
621 	map(0x0000, 0x1fff).rom();
622 	map(0x2000, 0x3fff).ram().share("main_ram");
623 	map(0x4000, 0x57ff).rom();
624 	map(0x5c00, 0x5fff).ram().share("colorram");
625 }
626 
627 /* at least one of these MWA8_NOPs must be sound related */
cosmo_io_map(address_map & map)628 void _8080bw_state::cosmo_io_map(address_map &map)
629 {
630 	map(0x00, 0x00).portr("IN0").nopw();
631 	map(0x01, 0x01).portr("IN1").nopw();
632 	map(0x02, 0x02).portr("IN2").nopw();
633 	map(0x03, 0x03).w(FUNC(_8080bw_state::invadpt2_sh_port_1_w));
634 	map(0x05, 0x05).w(FUNC(_8080bw_state::cosmo_sh_port_2_w));
635 	map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
636 	map(0x07, 0x07).nopw();
637 }
638 
639 
640 static INPUT_PORTS_START( cosmo )
PORT_INCLUDE(sicv)641 	PORT_INCLUDE( sicv )
642 
643 	PORT_MODIFY("IN1")
644 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
645 
646 	PORT_MODIFY("IN2")
647 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) )    PORT_DIPLOCATION("SW1:1")
648 	PORT_DIPSETTING(    0x00, "3" )
649 	PORT_DIPSETTING(    0x01, "5" )
650 	PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x00, "SW1:2" )
651 	PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" )
652 	PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x00, "SW1:4" )
653 	PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW1:8" ) /* must be HIGH normally or the joystick won't work */
654 INPUT_PORTS_END
655 
656 void _8080bw_state::cosmo(machine_config &config)
657 {
658 	mw8080bw_root(config);
659 
660 	/* basic machine hardware */
661 	m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::cosmo_map);
662 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::cosmo_io_map);
663 
664 	WATCHDOG_TIMER(config, m_watchdog);
665 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw)
666 
667 	/* video hardware */
668 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_cosmo));
669 
670 	PALETTE(config, m_palette, palette_device::RGB_3BIT);
671 
672 	/* sound hardware */
673 	invaders_samples_audio(config);
674 }
675 
676 
677 
678 /*******************************************************/
679 /*                                                     */
680 /* bootleg "Super Earth Invasion"                      */
681 /*                                                     */
682 /*******************************************************/
683 
684 static INPUT_PORTS_START( searthin )
PORT_INCLUDE(sicv)685 	PORT_INCLUDE( sicv )
686 
687 	PORT_MODIFY("IN1")
688 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
689 
690 	PORT_MODIFY("IN2")
691 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )    PORT_DIPLOCATION("SW1:1")
692 	PORT_DIPSETTING(    0x00, "2" )
693 	PORT_DIPSETTING(    0x01, "3" )
694 	PORT_DIPNAME( 0x02, 0x02, "Pence Coinage" )     PORT_DIPLOCATION("SW1:2")
695 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
696 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
697 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 )     PORT_DIPLOCATION("SW1:3") /* Pence Coin */
698 	PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW1:4" )   /* Not bonus */
699 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Coinage ) )  PORT_DIPLOCATION("SW1:8")
700 	PORT_DIPSETTING(    0x00, "2C/1C 50p/3C (+ Bonus Life)" )
701 	PORT_DIPSETTING(    0x80, "1C/1C 50p/5C" )
702 INPUT_PORTS_END
703 
704 
705 
706 /*******************************************************/
707 /*                                                     */
708 /* bootleg "Super Invaders (Zenitone-Microsec)"        */
709 /*                                                     */
710 /*******************************************************/
711 
712 static INPUT_PORTS_START( sinvzen )
713 	PORT_INCLUDE( sicv )
714 
715 	PORT_MODIFY("IN2")
716 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) )  PORT_DIPLOCATION("SW1:8")
717 	PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
718 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
719 INPUT_PORTS_END
720 
721 /*******************************************************/
722 /*                                                     */
723 /* bootleg "Space Attack II"                           */
724 /*                                                     */
725 /*******************************************************/
726 
727 static INPUT_PORTS_START( spaceat2 )
728 	PORT_INCLUDE( sicv )
729 
730 	PORT_MODIFY("IN2")
731 	PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x00, "SW1:5" )
732 	PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x00, "SW1:6" )
733 	PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x00, "SW1:7" )
734 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) )  PORT_DIPLOCATION("SW1:8")
735 	PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
736 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
737 
738 	/* Dummy port for cocktail mode (not used) */
739 	PORT_MODIFY(INVADERS_CAB_TYPE_PORT_TAG)
740 	PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
741 INPUT_PORTS_END
742 
743 
744 
745 /*******************************************************/
746 /*                                                     */
747 /* bootleg "Space Combat", 1979                        */
748 /*  8080A + 18MHz XTAL, SN76477, 10MHz XTAL            */
749 /*  8*8116 2KB RAM(!), 8*1KB ROM, maybe some PROMs     */
750 /*                                                     */
751 /*  Preliminary emulation. PCB was working fine, but   */
752 /*  it's not certain that this is a good dump          */
753 /*                                                     */
754 /* TODO:                                               */
755 /*  - dip settings/locs need confirming                */
756 /*  - it doesn't have a mb14241 video shifter?         */
757 /*  - using space invaders audio as placeholder until  */
758 /*    more is known about the sound hw                 */
759 /*  - always in cocktail mode but flipscreen not found */
760 /*                                                     */
761 /*******************************************************/
762 
763 static INPUT_PORTS_START( spacecom )
764 	PORT_START("IN0") // 5-pos dipsw at ic79 (row F)
765 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
766 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
767 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
768 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
769 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
770 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
771 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Lives ) )
772 	PORT_DIPSETTING(    0x00, "3" )
773 	PORT_DIPSETTING(    0x04, "5" )
774 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Bonus_Life ) )
775 	PORT_DIPSETTING(    0x00, "2500" ) // not confirmed
776 	PORT_DIPSETTING(    0x08, "1500" )
777 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
778 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
779 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
780 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
781 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
782 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
783 
784 	PORT_START("IN1")
785 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
786 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
787 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
788 	PORT_SERVICE( 0x08, IP_ACTIVE_HIGH )
789 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
790 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 )
791 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
792 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
793 
794 	PORT_START("IN2")
795 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
796 	PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // unused?
797 
798 	PORT_START(CABINET_PORT_TAG)        /* Dummy port for cocktail mode */
799 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
800 INPUT_PORTS_END
801 
802 
803 void _8080bw_state::spacecom_map(address_map &map)
804 {
805 	map(0x0000, 0x1fff).rom();
806 	map(0x2000, 0x3fff).ram().share("main_ram"); // other RAM not hooked up?
807 }
808 
spacecom_io_map(address_map & map)809 void _8080bw_state::spacecom_io_map(address_map &map)
810 {
811 	map(0x41, 0x41).portr("IN0");
812 	map(0x42, 0x42).portr("IN1").w("soundboard", FUNC(invaders_audio_device::p1_w));
813 	map(0x44, 0x44).portr("IN2").w("soundboard", FUNC(invaders_audio_device::p2_w));
814 }
815 
spacecom(machine_config & config)816 void _8080bw_state::spacecom(machine_config &config)
817 {
818 	/* basic machine hardware */
819 	I8080A(config, m_maincpu, XTAL(18'000'000) / 9); // divider guessed
820 	// TODO: move irq handling away from mw8080.c, this game runs on custom hardware
821 	m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::spacecom_map);
822 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::spacecom_io_map);
823 	m_maincpu->set_irq_acknowledge_callback(FUNC(_8080bw_state::interrupt_vector));
824 
825 	MCFG_MACHINE_RESET_OVERRIDE(mw8080bw_state, mw8080bw)
826 
827 	/* video hardware */
828 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
829 	m_screen->set_raw(XTAL(18'000'000) / 3, 384, 0, 256, 260, 0, 224); // parameters guessed
830 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_spacecom));
831 
832 	PALETTE(config, m_palette, palette_device::MONOCHROME);
833 
834 	/* sound hardware */
835 	INVADERS_AUDIO(config, "soundboard").  // the flip screen line is only connected on the cocktail PCB
836 			flip_screen_out().set([this] (int state) { if (invaders_is_cabinet_cocktail()) m_flip_screen = state ? 1 : 0; });
837 }
838 
init_spacecom()839 void _8080bw_state::init_spacecom()
840 {
841 	uint8_t *ROM = memregion("maincpu")->base();
842 
843 	// bad byte: should be push a at RST 10h
844 	ROM[0x10] = 0xf5;
845 }
846 
847 
848 
849 /*******************************************************/
850 /*                                                     */
851 /* Zenitone Microsec "Invaders Revenge"                */
852 /*                                                     */
853 /*******************************************************/
854 
invrvnge_02_r()855 uint8_t _8080bw_state::invrvnge_02_r()
856 {
857 	uint8_t data = ioport("IN2")->read();
858 	if (m_flip_screen) return data;
859 	return (data & 0x8f) | (ioport("IN1")->read() & 0x70);
860 }
861 
invrvnge_io_map(address_map & map)862 void _8080bw_state::invrvnge_io_map(address_map &map)
863 {
864 	map(0x00, 0x00).portr("IN0");
865 	map(0x01, 0x01).portr("IN1");
866 	map(0x02, 0x02).r(FUNC(_8080bw_state::invrvnge_02_r)).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
867 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(FUNC(_8080bw_state::invrvnge_port03_w));
868 	map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
869 	map(0x05, 0x05).w(FUNC(_8080bw_state::invrvnge_port05_w));
870 	map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
871 }
872 
invrvnge_sound_map(address_map & map)873 void _8080bw_state::invrvnge_sound_map(address_map &map)
874 {
875 	map(0xa001, 0xa001).r("psg",FUNC(ay8910_device::data_r));
876 	map(0xa002, 0xa003).w("psg",FUNC(ay8910_device::data_address_w));
877 	map(0xc000, 0xc7ff).mirror(0x1800).rom();
878 	map(0xe000, 0xe7ff).mirror(0x1800).rom();
879 }
880 
881 
882 static INPUT_PORTS_START( invrvnge )
883 	PORT_START("IN0")
884 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
DEF_STR(Difficulty)885 	PORT_DIPNAME( 0x06, 0x00, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("SW1:5,6") // [code: 0x3b1-3b5]
886 	PORT_DIPSETTING(    0x00, DEF_STR( Easy ) )
887 	PORT_DIPSETTING(    0x02, DEF_STR( Hard ) )
888 	PORT_DIPSETTING(    0x04, DEF_STR( Harder ) )
889 	PORT_DIPSETTING(    0x06, DEF_STR( Hardest ) )
890 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // must be low or game won't boot [code: 0x1a9-1af]
891 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
892 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
893 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
894 	PORT_DIPNAME( 0x80, 0x80, "Fuel Destroyed by Comet" )   PORT_DIPLOCATION("SW1:7") // [code: 0x1cb0-1cb6]
895 	PORT_DIPSETTING(    0x00, "3" )
896 	PORT_DIPSETTING(    0x80, "6" )
897 
898 	PORT_START("IN1")
899 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
900 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
901 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
902 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
903 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
904 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  ) PORT_2WAY
905 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
906 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
907 
908 	PORT_START("IN2")
909 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )            PORT_DIPLOCATION("SW1:1,2")
910 	PORT_DIPSETTING(    0x00, "3" )
911 	PORT_DIPSETTING(    0x01, "4" )
912 	PORT_DIPSETTING(    0x02, "5" )
913 	PORT_DIPSETTING(    0x03, "6" )
914 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
915 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Bonus_Life ) )       PORT_DIPLOCATION("SW1:4")
916 	PORT_DIPSETTING(    0x00, "1500" )
917 	PORT_DIPSETTING(    0x08, "2000" )
918 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
919 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  ) PORT_2WAY PORT_PLAYER(2)
920 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
921 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) )          PORT_DIPLOCATION("SW1:8")
922 	PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) ) // 1 play 10p, 2 play 20p, 6 play 50p
923 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) ) // 1 play 20p, 2 play 40p, 3 play 50p
924 
925 	/* Dummy port for cocktail mode */
926 	INVADERS_CAB_TYPE_PORT
927 INPUT_PORTS_END
928 
929 
930 void _8080bw_state::invrvnge(machine_config &config)
931 {
932 	mw8080bw_root(config);
933 
934 	/* basic machine hardware */
935 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::invrvnge_io_map);
936 
937 	WATCHDOG_TIMER(config, m_watchdog);
938 
939 	// 4 MHz crystal connected directly to the CPU
940 	M6802(config, m_audiocpu, XTAL(4'000'000));
941 	m_audiocpu->set_addrmap(AS_PROGRAM, &_8080bw_state::invrvnge_sound_map);
942 
943 	/* add shifter */
944 	MB14241(config, m_mb14241);
945 
946 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw)
947 
948 	/* video hardware */
949 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invadpt2));
950 
951 	PALETTE(config, m_palette, palette_device::RBG_3BIT);
952 
953 	/* sound hardware */
954 	SPEAKER(config, "mono").front_center();
955 
956 	// CPU E-pin connects to AY clock pin
957 	ay8910_device &psg(AY8910(config, "psg", XTAL(4'000'000)/2));
958 	psg.port_a_read_callback().set([this] () { return m_sound_data >> 1; });
959 	psg.port_b_read_callback().set_constant(0xff);
960 	psg.add_route(ALL_OUTPUTS, "mono", 0.75);
961 
962 	// CPU E-pin also connects to a 4040 divider. The Q8 output goes to the CPU's NMI pin.
963 	TIMER(config, "nmi").configure_periodic(FUNC(_8080bw_state::nmi_timer), attotime::from_hz((XTAL(4'000'000)/2)/512));
964 }
965 
init_invrvnge()966 void _8080bw_state::init_invrvnge()
967 {
968 	uint8_t *rom = memregion("audiocpu")->base();
969 	for (offs_t i = 0xc000; i < 0xc800; i++)
970 		rom[i] = bitswap<8>(rom[i], 7, 6, 5, 3, 4, 2, 1, 0);
971 	for (offs_t i = 0xe000; i < 0xe800; i++)
972 		rom[i] = bitswap<8>(rom[i], 7, 6, 5, 3, 4, 2, 1, 0);
973 }
974 
975 
976 
977 /*******************************************************/
978 /*                                                     */
979 /* Taito "Space Laser"                                 */
980 /*                                                     */
981 /*******************************************************/
982 
983 static INPUT_PORTS_START( spclaser )
984 	PORT_START("IN0")
985 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
986 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
987 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
988 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
989 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
990 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
991 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
992 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
993 
994 	PORT_START("IN1")
995 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
996 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) /* This is not 2 Player ??? */
997 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
998 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
999 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
1000 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
1001 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
1002 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1003 
1004 	// TODO: figure out where dipswitch is read, it's not IN0 or IN2 in the current implementation.
1005 	// ROM disassembly doesn't show any dipswitch reads on portmapped I/O, maybe the manual is for a different ROM set? (that we don't have the dump for)
1006 #if 0
1007 	// these are the settings according to Gameplan Intruder manual
1008 	PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) )            PORT_DIPLOCATION("SW1:1,2")
1009 	PORT_DIPSETTING(    0x00, "3" )
1010 	PORT_DIPSETTING(    0x01, "4" )
1011 	PORT_DIPSETTING(    0x02, "5" )
1012 	PORT_DIPSETTING(    0x03, "6" )
1013 	PORT_SERVICE_DIPLOC( 0x04, IP_ACTIVE_LOW, "SW1:3" )
1014 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Bonus_Life ) )       PORT_DIPLOCATION("SW1:4")
1015 	PORT_DIPSETTING(    0x08, "1000" )
1016 	PORT_DIPSETTING(    0x00, "1500" )
1017 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1018 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1019 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1020 	PORT_DIPNAME( 0x80, 0x80, "Display Coinage" )           PORT_DIPLOCATION("SW:8")
1021 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1022 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1023 #endif
1024 
1025 	PORT_START("IN2")
1026 	PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x00, "SW1:1" )
1027 	PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x00, "SW1:2" )
1028 	PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" )
1029 	PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x00, "SW1:4" )
1030 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
1031 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
1032 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
DEF_STR(Coinage)1033 	PORT_DIPNAME( 0x80, 0x00, DEF_STR(Coinage) )        PORT_DIPLOCATION("SW1:8")
1034 	PORT_DIPSETTING(    0x00, "1 Coin/1 Or 2 Players" )
1035 	PORT_DIPSETTING(    0x80, "1 Coin/1 Player  2 Coins/2 Players" )   /* Irrelevant, causes bugs */
1036 
1037 	/* Dummy port for cocktail mode (not used) */
1038 	PORT_START(CABINET_PORT_TAG)
1039 	PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1040 INPUT_PORTS_END
1041 
1042 
1043 
1044 /*******************************************************/
1045 /*                                                     */
1046 /* Taito "Galaxy Wars"                                 */
1047 /*                                                     */
1048 /*******************************************************/
1049 
1050 static INPUT_PORTS_START( galxwars )
1051 	PORT_INCLUDE( sicv )
1052 
1053 	PORT_MODIFY("IN0")
1054 	PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN ) /* must be IP_ACTIVE_LOW for Universal Sets */
1055 
1056 	PORT_MODIFY("IN1")
1057 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1058 
1059 	PORT_MODIFY("IN2")
1060 	PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:1,2")
1061 	PORT_DIPSETTING(    0x00, "2" )
1062 	PORT_DIPSETTING(    0x01, "3" )
1063 	PORT_DIPSETTING(    0x02, "4" )
1064 	PORT_DIPSETTING(    0x03, "5" )
1065 	PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" )
1066 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW1:4")
1067 	PORT_DIPSETTING(    0x00, "3000" )
1068 	PORT_DIPSETTING(    0x08, "5000" )
1069 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) )      PORT_DIPLOCATION("SW1:8")
1070 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
1071 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
1072 INPUT_PORTS_END
1073 
1074 void _8080bw_state::starw1_io_map(address_map &map)
1075 {
1076 	map(0x01, 0x01).portr("IN1");
1077 	map(0x02, 0x02).portr("IN2");
1078 	map(0x03, 0x03).nopw();    /* writes 9B at boot */
1079 	map(0x04, 0x04).w(FUNC(_8080bw_state::invadpt2_sh_port_1_w));
1080 	map(0x05, 0x05).w(FUNC(_8080bw_state::invadpt2_sh_port_2_w));
1081 	map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
1082 	map(0x07, 0x07).nopw();    /* writes 89 at boot */
1083 }
1084 
starw1(machine_config & config)1085 void _8080bw_state::starw1(machine_config &config)
1086 {
1087 	invadpt2(config);
1088 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::starw1_io_map);
1089 }
1090 
1091 /*******************************************************/
1092 /*                                                     */
1093 /* Taito "Lunar Rescue"                                */
1094 /*                                                     */
1095 /*******************************************************/
1096 
escmars_map(address_map & map)1097 void _8080bw_state::escmars_map(address_map &map)
1098 {
1099 	map(0x0000, 0x1fff).rom();
1100 	map(0x2000, 0x3fff).ram().share("main_ram");
1101 	map(0x4000, 0x4fff).rom();
1102 }
1103 
lrescue_io_map(address_map & map)1104 void _8080bw_state::lrescue_io_map(address_map &map)
1105 {
1106 	map(0x00, 0x00).portr("IN0");
1107 	map(0x01, 0x01).portr("IN1");
1108 	map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
1109 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(FUNC(_8080bw_state::lrescue_sh_port_1_w));
1110 	map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
1111 	map(0x05, 0x05).w(FUNC(_8080bw_state::lrescue_sh_port_2_w));
1112 }
1113 
1114 
1115 static INPUT_PORTS_START( lrescue )
PORT_INCLUDE(sicv)1116 	PORT_INCLUDE( sicv )
1117 
1118 	PORT_MODIFY("IN1")
1119 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1120 
1121 	PORT_MODIFY("IN2")
1122 	/* SW1:3-8 Unused according to manual: "Factory Adjustments". Default is ON. */
1123 	PORT_DIPUNUSED_DIPLOC( 0x08, 0x00, "SW1:4" )
1124 	PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "SW1:8" )
1125 INPUT_PORTS_END
1126 
1127 void _8080bw_state::lrescue(machine_config &config)
1128 {
1129 	mw8080bw_root(config);
1130 
1131 	/* basic machine hardware */
1132 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::lrescue_io_map);
1133 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw)
1134 
1135 	/* add shifter */
1136 	MB14241(config, m_mb14241);
1137 
1138 	/* video hardware */
1139 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invadpt2));
1140 
1141 	PALETTE(config, m_palette, palette_device::RBG_3BIT);
1142 
1143 	/* sound hardware */
1144 	SPEAKER(config, "mono").front_center();
1145 
1146 	SAMPLES(config, m_samples);
1147 	m_samples->set_channels(4);
1148 	m_samples->set_samples_names(lrescue_sample_names);
1149 	m_samples->add_route(ALL_OUTPUTS, "mono", 0.75);
1150 
1151 	/* extra audio channel */
1152 	SPEAKER_SOUND(config, m_speaker);
1153 	m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
1154 }
1155 
escmars(machine_config & config)1156 void _8080bw_state::escmars(machine_config &config)
1157 {
1158 	/* basic machine hardware */
1159 	I8080(config, m_maincpu, XTAL(18'000'000) / 10); // divider guessed
1160 	m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::escmars_map);
1161 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::lrescue_io_map);
1162 	m_maincpu->set_irq_acknowledge_callback(FUNC(_8080bw_state::interrupt_vector));
1163 
1164 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state, extra_8080bw)
1165 	MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state, mw8080bw)
1166 
1167 	/* add shifter */
1168 	MB14241(config, m_mb14241);
1169 
1170 	/* video hardware */
1171 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
1172 	m_screen->set_raw(MW8080BW_PIXEL_CLOCK, MW8080BW_HTOTAL, MW8080BW_HBEND, MW8080BW_HPIXCOUNT, MW8080BW_VTOTAL, MW8080BW_VBEND, MW8080BW_VBSTART);
1173 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_mw8080bw));
1174 
1175 	PALETTE(config, m_palette, palette_device::MONOCHROME);
1176 
1177 	/* sound hardware */
1178 	SPEAKER(config, "mono").front_center();
1179 
1180 	SAMPLES(config, m_samples);
1181 	m_samples->set_channels(4);
1182 	m_samples->set_samples_names(lrescue_sample_names);
1183 	m_samples->add_route(ALL_OUTPUTS, "mono", 0.75);
1184 
1185 	/* extra audio channel */
1186 	SPEAKER_SOUND(config, m_speaker);
1187 	m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
1188 }
1189 
1190 
1191 
1192 /*******************************************************/
1193 /*                                                     */
1194 /* Universal "Cosmic Monsters"                         */
1195 /*  The dipswitches are as stated in the manual, but   */
1196 /*  some of them are incorrect.                        */
1197 /*  - You need at the very least 3000 points to get    */
1198 /*    a bonus life.                                    */
1199 /*  - The cabinet switch does nothing in the cpu, it   */
1200 /*    is all done by wires.                            */
1201 /*                                                     */
1202 /*  These issues may be due to manual/romset conflicts */
1203 /*                                                     */
1204 /*******************************************************/
1205 
1206 static INPUT_PORTS_START( cosmicmo )
PORT_INCLUDE(sicv)1207 	PORT_INCLUDE( sicv )
1208 
1209 	PORT_MODIFY("IN1")
1210 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1211 
1212 	PORT_MODIFY("IN2")
1213 	PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:1,2")
1214 	PORT_DIPSETTING(    0x00, "2" )
1215 	PORT_DIPSETTING(    0x01, "3" )
1216 	PORT_DIPSETTING(    0x02, "4" )
1217 	PORT_DIPSETTING(    0x03, "5" )
1218 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) )      PORT_DIPLOCATION("SW1:3")
1219 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
1220 	PORT_DIPSETTING(    0x04, DEF_STR( Cocktail ) )
1221 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW1:4")
1222 	PORT_DIPSETTING(    0x00, "1500" )
1223 	PORT_DIPSETTING(    0x08, "2500" )
1224 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
1225 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
1226 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
1227 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) )      PORT_DIPLOCATION("SW1:8")
1228 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
1229 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
1230 
1231 	PORT_MODIFY(CABINET_PORT_TAG)
1232 	PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1233 INPUT_PORTS_END
1234 
1235 void _8080bw_state::cosmicmo_io_map(address_map &map)
1236 {
1237 	map.global_mask(0x7);
1238 	map(0x00, 0x00).mirror(0x04).portr("IN0");
1239 	map(0x01, 0x01).mirror(0x04).portr("IN1");
1240 	map(0x02, 0x02).mirror(0x04).r(FUNC(_8080bw_state::invrvnge_02_r));
1241 	map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
1242 
1243 	map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
1244 	map(0x03, 0x03).w("soundboard", FUNC(invaders_audio_device::p1_w));
1245 	map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
1246 	map(0x05, 0x05).w("soundboard", FUNC(invaders_audio_device::p2_w));
1247 	map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
1248 }
1249 
cosmicmo(machine_config & config)1250 void _8080bw_state::cosmicmo(machine_config &config)
1251 {
1252 	mw8080bw_root(config);
1253 
1254 	// basic machine hardware
1255 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::cosmicmo_io_map);
1256 
1257 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw)
1258 
1259 	WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 255);
1260 
1261 	// add shifter
1262 	MB14241(config, m_mb14241);
1263 
1264 	// sound hardware
1265 	INVADERS_AUDIO(config, "soundboard").
1266 			flip_screen_out().set([this] (int state) { m_flip_screen = (state && BIT(ioport("IN2")->read(), 2)) ? 1 : 0; });
1267 
1268 	/* video hardware */
1269 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invaders));
1270 }
1271 
1272 
1273 /*******************************************************/
1274 /*                                                     */
1275 /* Sidam "Invasion"                                    */
1276 /*                                                     */
1277 /*******************************************************/
1278 
1279 static INPUT_PORTS_START( invasion )
PORT_INCLUDE(sicv)1280 	PORT_INCLUDE( sicv )
1281 
1282 	PORT_MODIFY("IN1")
1283 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
1284 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN2 )
1285 
1286 	PORT_MODIFY("IN2")
1287 	/* SW1:5-8 Unused according to manual. */
1288 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:4,3") /* Default is OFF, OFF (6) */
1289 	PORT_DIPSETTING(    0x00, "3" )
1290 	PORT_DIPSETTING(    0x01, "4" )
1291 	PORT_DIPSETTING(    0x02, "5" )
1292 	PORT_DIPSETTING(    0x03, "6" )
1293 	PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW1:8" )        /* Default OFF */
1294 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW1:2") /* Default is ON (2500) */
1295 	PORT_DIPSETTING(    0x08, "1500" )
1296 	PORT_DIPSETTING(    0x00, "2500" )
1297 	/* SW1:5,6,7 Default ON */
1298 	PORT_DIPNAME( 0x80, 0x80, "Laser Bonus Info" )      PORT_DIPLOCATION("SW1:1") /* Default is OFF (Info on) */
1299 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1300 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
1301 INPUT_PORTS_END
1302 
1303 
1304 
1305 /*******************************************************/
1306 /*                                                     */
1307 /* bootleg "Super Invaders"                            */
1308 /*                                                     */
1309 /*******************************************************/
1310 
1311 static INPUT_PORTS_START( superinv )
1312 	PORT_INCLUDE( sicv )
1313 
1314 	PORT_MODIFY("IN1")
1315 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
1316 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN2 )
1317 
1318 	PORT_MODIFY("IN2")
1319 	PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" )
1320 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW1:4")
1321 	PORT_DIPSETTING(    0x08, "1500" )
1322 	PORT_DIPSETTING(    0x00, "2500" )
1323 	PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x00, "SW1:8" )
1324 INPUT_PORTS_END
1325 
1326 
1327 
1328 /*******************************************************/
1329 /*                                                     */
1330 /* Nichibutsu "Rolling Crash"                          */
1331 /* Press left-arrow to play "Moon Base"                */
1332 /*                                                     */
1333 /*******************************************************/
1334 
1335 uint8_t _8080bw_state::rollingc_scattered_colorram_r(offs_t offset)
1336 {
1337 	return m_scattered_colorram[(offset & 0x1f) | ((offset & 0x1f00) >> 3)];
1338 }
1339 
rollingc_scattered_colorram_w(offs_t offset,uint8_t data)1340 void _8080bw_state::rollingc_scattered_colorram_w(offs_t offset, uint8_t data)
1341 {
1342 	m_scattered_colorram[(offset & 0x1f) | ((offset & 0x1f00) >> 3)] = data;
1343 }
1344 
rollingc_scattered_colorram2_r(offs_t offset)1345 uint8_t _8080bw_state::rollingc_scattered_colorram2_r(offs_t offset)
1346 {
1347 	return m_scattered_colorram2[(offset & 0x1f) | ((offset & 0x1f00) >> 3)];
1348 }
1349 
rollingc_scattered_colorram2_w(offs_t offset,uint8_t data)1350 void _8080bw_state::rollingc_scattered_colorram2_w(offs_t offset, uint8_t data)
1351 {
1352 	m_scattered_colorram2[(offset & 0x1f) | ((offset & 0x1f00) >> 3)] = data;
1353 }
1354 
rollingc_map(address_map & map)1355 void _8080bw_state::rollingc_map(address_map &map)
1356 {
1357 	map(0x0000, 0x1fff).rom();
1358 	map(0x2000, 0x3fff).ram().share("main_ram");
1359 	map(0x4000, 0x5fff).rom();
1360 	map(0xa000, 0xbfff).rw(FUNC(_8080bw_state::rollingc_scattered_colorram_r), FUNC(_8080bw_state::rollingc_scattered_colorram_w));
1361 	map(0xe000, 0xffff).rw(FUNC(_8080bw_state::rollingc_scattered_colorram2_r), FUNC(_8080bw_state::rollingc_scattered_colorram2_w));
1362 }
1363 
1364 
rollingc_io_map(address_map & map)1365 void _8080bw_state::rollingc_io_map(address_map &map)
1366 {
1367 	map(0x00, 0x00).portr("IN0").w(FUNC(_8080bw_state::rollingc_sh_port_w));
1368 	map(0x01, 0x01).portr("IN1");
1369 	map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
1370 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(FUNC(_8080bw_state::invadpt2_sh_port_1_w));
1371 	map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
1372 	map(0x05, 0x05).w(FUNC(_8080bw_state::invadpt2_sh_port_2_w));
1373 }
1374 
1375 
1376 static INPUT_PORTS_START( rollingc )
PORT_INCLUDE(sicv)1377 	PORT_INCLUDE( sicv )
1378 
1379 	PORT_MODIFY("IN0")
1380 	/* Duplicate control required (both must be mapped to same key for input to work for game select and in-game) */
1381 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) /* Game Select */
1382 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) /* Game Select */
1383 
1384 	PORT_MODIFY("IN1")
1385 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
1386 
1387 	PORT_MODIFY("IN2")
1388 	PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x00, "SW1:4" )
1389 INPUT_PORTS_END
1390 
1391 MACHINE_START_MEMBER(_8080bw_state,rollingc)
1392 {
1393 	mw8080bw_state::machine_start();
1394 
1395 	m_scattered_colorram = std::make_unique<uint8_t []>(0x400);
1396 	m_scattered_colorram2 = std::make_unique<uint8_t []>(0x400);
1397 	save_pointer(&m_scattered_colorram[0], "m_scattered_colorram", 0x400);
1398 	save_pointer(&m_scattered_colorram2[0], "m_scattered_colorram2", 0x400);
1399 }
1400 
rollingc(machine_config & config)1401 void _8080bw_state::rollingc(machine_config &config)
1402 {
1403 	mw8080bw_root(config);
1404 
1405 	/* basic machine hardware */
1406 	m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::rollingc_map);
1407 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::rollingc_io_map);
1408 
1409 	/* add shifter */
1410 	MB14241(config, m_mb14241);
1411 
1412 	/* video hardware */
1413 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_rollingc));
1414 
1415 	PALETTE(config, m_palette, FUNC(_8080bw_state::rollingc_palette), 16);
1416 
1417 	/* sound hardware */
1418 	invaders_samples_audio(config);
1419 
1420 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,rollingc)
1421 }
1422 
1423 
1424 
1425 /*******************************************************/
1426 /*                                                     */
1427 /* Taito "Space Chaser"                                */
1428 /*                                                     */
1429 /*******************************************************/
1430 
1431 
schaser_scattered_colorram_r(offs_t offset)1432 uint8_t _8080bw_state::schaser_scattered_colorram_r(offs_t offset)
1433 {
1434 	return m_scattered_colorram[(offset & 0x1f) | ((offset & 0x1f80) >> 2)];
1435 }
1436 
schaser_scattered_colorram_w(offs_t offset,uint8_t data)1437 void _8080bw_state::schaser_scattered_colorram_w(offs_t offset, uint8_t data)
1438 {
1439 	m_scattered_colorram[(offset & 0x1f) | ((offset & 0x1f80) >> 2)] = data;
1440 }
1441 
schaser_map(address_map & map)1442 void _8080bw_state::schaser_map(address_map &map)
1443 {
1444 	map(0x0000, 0x1fff).rom();
1445 	map(0x2000, 0x3fff).ram().share("main_ram");
1446 	map(0x4000, 0x5fff).rom();
1447 	map(0xc000, 0xdfff).rw(FUNC(_8080bw_state::schaser_scattered_colorram_r), FUNC(_8080bw_state::schaser_scattered_colorram_w));
1448 }
1449 
1450 
schaser_io_map(address_map & map)1451 void _8080bw_state::schaser_io_map(address_map &map)
1452 {
1453 	map(0x00, 0x00).portr("IN0");
1454 	map(0x01, 0x01).portr("IN1");
1455 	map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
1456 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(FUNC(_8080bw_state::schaser_sh_port_1_w));
1457 	map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
1458 	map(0x05, 0x05).w(FUNC(_8080bw_state::schaser_sh_port_2_w));
1459 	map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
1460 }
1461 
1462 
1463 static INPUT_PORTS_START( schaser )
1464 	PORT_START("IN0")
1465 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2)
1466 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2)
1467 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2)
1468 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2)
1469 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
1470 	PORT_DIPNAME( 0x60, 0x00, "Hard Starting Level" )   PORT_DIPLOCATION("SW1:5,7")
1471 	PORT_DIPSETTING(    0x00, "3" )
1472 	PORT_DIPSETTING(    0x20, "4" )
1473 	PORT_DIPSETTING(    0x40, "5" )
1474 	PORT_DIPSETTING(    0x60, "6" )
1475 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
1476 
1477 	PORT_START("IN1")
1478 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY
1479 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY
1480 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY
1481 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY
1482 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
1483 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 )
1484 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
1485 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
1486 
1487 	PORT_START("IN2")   // port 2
DEF_STR(Lives)1488 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:1,2")
1489 	PORT_DIPSETTING(    0x00, "3" )
1490 	PORT_DIPSETTING(    0x01, "4" )
1491 	PORT_DIPSETTING(    0x02, "5" )
1492 	PORT_DIPSETTING(    0x03, "6" )
1493 	PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" )
1494 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW1:4")
1495 	PORT_DIPSETTING(    0x00, DEF_STR( Easy ) )
1496 	PORT_DIPSETTING(    0x08, DEF_STR( Hard ) )
1497 	// Name Reset - if name of high scorer was rude, owner can press this button
1498 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Name Reset") PORT_CODE(KEYCODE_F1)
1499 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_TILT )
1500 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) )      PORT_DIPLOCATION("SW1:6")
1501 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
1502 	PORT_DIPSETTING(    0x40, DEF_STR( Cocktail ) )
1503 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
1504 
1505 	PORT_START("VR1")
1506 	PORT_ADJUSTER( 70, "VR1 - Music Volume" )
1507 
1508 	PORT_START("VR2")
1509 	PORT_ADJUSTER( 90, "VR2 - Explosion/Effect Volume" )
1510 
1511 	PORT_START("VR3")
1512 	PORT_ADJUSTER( 70, "VR3 - Dot Volume" )
1513 INPUT_PORTS_END
1514 
1515 
1516 static INPUT_PORTS_START( schaserm )
1517 	PORT_INCLUDE( schaser )
1518 
1519 	PORT_MODIFY("IN2")
1520 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:1,2")
1521 	PORT_DIPSETTING(    0x00, "1" )
1522 	PORT_DIPSETTING(    0x01, "2" )
1523 	PORT_DIPSETTING(    0x02, "3" )
1524 	PORT_DIPSETTING(    0x03, "4" )
1525 INPUT_PORTS_END
1526 
1527 MACHINE_START_MEMBER(_8080bw_state,schaser)
1528 {
1529 	mw8080bw_state::machine_start();
1530 
1531 	m_scattered_colorram = std::make_unique<uint8_t []>(0x800);
1532 	save_pointer(&m_scattered_colorram[0], "m_scattered_colorram", 0x800);
1533 	MACHINE_START_CALL_MEMBER(schaser_sh);
1534 	MACHINE_START_CALL_MEMBER(extra_8080bw_vh);
1535 }
1536 
MACHINE_RESET_MEMBER(_8080bw_state,schaser)1537 MACHINE_RESET_MEMBER(_8080bw_state,schaser)
1538 {
1539 	MACHINE_RESET_CALL_MEMBER(schaser_sh);
1540 	MACHINE_RESET_CALL_MEMBER(mw8080bw);
1541 }
1542 
schaser(machine_config & config)1543 void _8080bw_state::schaser(machine_config &config)
1544 {
1545 	mw8080bw_root(config);
1546 
1547 	/* basic machine hardware */
1548 	I8080(config.replace(), m_maincpu, 1996800); /* 19.968MHz / 10 */
1549 	m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::schaser_map);
1550 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::schaser_io_map);
1551 	m_maincpu->set_irq_acknowledge_callback(FUNC(_8080bw_state::interrupt_vector));
1552 
1553 	WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 255);
1554 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,schaser)
1555 	MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state,schaser)
1556 
1557 	TIMER(config, "schaser_sh_555").configure_generic(FUNC(_8080bw_state::schaser_effect_555_cb));
1558 
1559 	/* add shifter */
1560 	MB14241(config, m_mb14241);
1561 
1562 	/* video hardware */
1563 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_schaser));
1564 
1565 	PALETTE(config, m_palette, palette_device::RBG_3BIT);
1566 
1567 	/* sound hardware */
1568 	SPEAKER(config, "mono").front_center();
1569 
1570 	sn76477_device &snsnd(SN76477(config, "snsnd"));
1571 	snsnd.set_noise_params(RES_K(47), RES_K(330), CAP_P(470));
1572 	snsnd.set_decay_res(RES_M(2.2));
1573 	snsnd.set_attack_params(CAP_U(1.0), RES_K(4.7));
1574 	snsnd.set_amp_res(0);
1575 	snsnd.set_feedback_res(RES_K(33));
1576 	snsnd.set_vco_params(0, CAP_U(0.1), RES_K(39));
1577 	snsnd.set_pitch_voltage(5.0);
1578 	snsnd.set_slf_params(CAP_U(1.0), RES_K(120));
1579 	snsnd.set_oneshot_params(CAP_U(0.1), RES_K(220));
1580 	snsnd.set_vco_mode(1);
1581 	snsnd.set_mixer_params(0, 0, 0);
1582 	snsnd.set_envelope_params(1, 0);
1583 	snsnd.set_enable(1);
1584 	snsnd.add_route(0, "discrete", 1.0, 0);
1585 
1586 	DISCRETE(config, m_discrete, schaser_discrete);
1587 	m_discrete->add_route(ALL_OUTPUTS, "mono", 1.0);
1588 }
1589 
1590 
1591 
1592 /*******************************************************/
1593 /*                                                     */
1594 /* Taito "Space Chaser" (CV version)                   */
1595 /*                                                     */
1596 /*******************************************************/
1597 
1598 
schasercv_02_r()1599 uint8_t _8080bw_state::schasercv_02_r()
1600 {
1601 	uint8_t data = ioport("IN2")->read();
1602 	if (m_flip_screen) return data;
1603 	uint8_t in1 = ioport("IN1")->read();
1604 	return (data & 0x89) | (in1 & 0x70) | (BIT(in1, 3) << 1) | (BIT(in1, 7) << 2);
1605 }
1606 
schasercv_io_map(address_map & map)1607 void _8080bw_state::schasercv_io_map(address_map &map)
1608 {
1609 	map(0x00, 0x00).portr("IN0");
1610 	map(0x01, 0x01).portr("IN1");
1611 	map(0x02, 0x02).r(FUNC(_8080bw_state::schasercv_02_r)).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
1612 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(FUNC(_8080bw_state::schasercv_sh_port_1_w));
1613 	map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
1614 	map(0x05, 0x05).w(FUNC(_8080bw_state::schasercv_sh_port_2_w));
1615 	//map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
1616 }
1617 
crashrd_io_map(address_map & map)1618 void _8080bw_state::crashrd_io_map(address_map &map)
1619 {
1620 	map(0x01, 0x01).portr("IN1");
1621 	map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
1622 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(FUNC(_8080bw_state::crashrd_port03_w));
1623 	map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
1624 	map(0x05, 0x05).w(FUNC(_8080bw_state::crashrd_port05_w));
1625 	map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
1626 }
1627 
1628 
1629 
1630 static INPUT_PORTS_START( schasercv )
1631 	PORT_START("IN0")
1632 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1633 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1634 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1635 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1636 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1637 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1638 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1639 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1640 
1641 	PORT_START("IN1")
1642 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
1643 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
1644 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
1645 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY
1646 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
1647 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY
1648 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY
1649 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY
1650 
1651 	PORT_START("IN2")
DEF_STR(Lives)1652 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) )                                    PORT_DIPLOCATION("SW1:1")
1653 	PORT_DIPSETTING(    0x00, "3" )
1654 	PORT_DIPSETTING(    0x01, "4" )
1655 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2)    PORT_DIPLOCATION("SW1:2")
1656 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2)      PORT_DIPLOCATION("SW1:3")
1657 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Difficulty ) )                               PORT_DIPLOCATION("SW1:4")
1658 	PORT_DIPSETTING(    0x00, DEF_STR( Easy ) )
1659 	PORT_DIPSETTING(    0x08, DEF_STR( Hard ) )
1660 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)                    PORT_DIPLOCATION("SW1:5")
1661 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2)    PORT_DIPLOCATION("SW1:6")
1662 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2)   PORT_DIPLOCATION("SW1:7")
1663 	PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x00, "SW1:8" )
1664 
1665 	/* Dummy port for cocktail mode */
1666 	INVADERS_CAB_TYPE_PORT
1667 INPUT_PORTS_END
1668 
1669 MACHINE_START_MEMBER(_8080bw_state,schasercv)
1670 {
1671 	mw8080bw_state::machine_start();
1672 
1673 	m_scattered_colorram = std::make_unique<uint8_t []>(0x800);
1674 	save_pointer(&m_scattered_colorram[0], "m_scattered_colorram", 0x800);
1675 
1676 	MACHINE_START_CALL_MEMBER(extra_8080bw_sh);
1677 	MACHINE_START_CALL_MEMBER(extra_8080bw_vh);
1678 }
1679 
schasercv(machine_config & config)1680 void _8080bw_state::schasercv(machine_config &config)
1681 {
1682 	mw8080bw_root(config);
1683 
1684 	/* basic machine hardware */
1685 	m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::schaser_map);
1686 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::schasercv_io_map);
1687 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state, schasercv)
1688 
1689 	/* add shifter */
1690 	MB14241(config, m_mb14241);
1691 
1692 	/* video hardware */
1693 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_schasercv));
1694 
1695 	PALETTE(config, m_palette, palette_device::RBG_3BIT);
1696 
1697 	/* sound hardware */
1698 	invaders_samples_audio(config);
1699 
1700 	SPEAKER_SOUND(config, m_speaker);
1701 	m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
1702 }
1703 
crashrd(machine_config & config)1704 void _8080bw_state::crashrd(machine_config &config)
1705 {
1706 	schaser(config);
1707 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::crashrd_io_map);
1708 }
1709 
1710 
1711 
1712 /*******************************************************/
1713 /*                                                     */
1714 /* Taito "Straight Flush"                              */
1715 /*                                                     */
1716 /*******************************************************/
1717 
READ_LINE_MEMBER(_8080bw_state::sflush_80_r)1718 READ_LINE_MEMBER(_8080bw_state::sflush_80_r)
1719 {
1720 	return (m_screen->vpos() & 0x80) ? 1 : 0;
1721 }
1722 
sflush_in0_r()1723 uint8_t _8080bw_state::sflush_in0_r()
1724 {
1725 	// guess at interrupt acknowledgement
1726 	if (!machine().side_effects_disabled())
1727 		m_maincpu->set_input_line(0, CLEAR_LINE);
1728 	return ioport("IN0")->read();
1729 }
1730 
sflush_map(address_map & map)1731 void _8080bw_state::sflush_map(address_map &map)
1732 {
1733 	map(0x0000, 0x1fff).ram();
1734 	map(0x4000, 0x5fff).ram().share("main_ram");
1735 	map(0x8008, 0x8008).portr("PADDLE");
1736 	map(0x8009, 0x8009).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
1737 	map(0x800a, 0x800a).portr("IN2");
1738 	map(0x800b, 0x800b).r(FUNC(_8080bw_state::sflush_in0_r));
1739 	map(0x8018, 0x8018).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
1740 	map(0x8019, 0x8019).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
1741 	map(0x801a, 0x801a).nopw();
1742 	map(0x801c, 0x801c).nopw();
1743 	map(0x801d, 0x801d).nopw();
1744 	map(0xa000, 0xbfff).rw(FUNC(_8080bw_state::schaser_scattered_colorram_r), FUNC(_8080bw_state::schaser_scattered_colorram_w));
1745 	map(0xd800, 0xffff).rom();
1746 }
1747 
1748 
1749 static INPUT_PORTS_START( sflush )
1750 	PORT_START("IN0")
1751 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
1752 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 )
1753 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START2 )
1754 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_TILT )
DEF_STR(Cabinet)1755 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
1756 	PORT_DIPSETTING(    0x80, DEF_STR( Upright ) )
1757 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
1758 
1759 	PORT_START("IN2")
1760 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
1761 	PORT_DIPSETTING(    0x00, "3" )
1762 	PORT_DIPSETTING(    0x01, "4" )
1763 	PORT_DIPSETTING(    0x02, "5" )
1764 	PORT_DIPSETTING(    0x03, "6" )
1765 	PORT_DIPNAME( 0x08, 0x00, "Hiscore" )
1766 	PORT_DIPSETTING(    0x00, "0" )
1767 	PORT_DIPSETTING(    0x08, "30 000" )
1768 	PORT_DIPNAME( 0x40, 0x00, "Coinage Display" )
1769 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1770 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
1771 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(_8080bw_state, sflush_80_r) // 128V?
1772 
1773 	PORT_START("PADDLE")
1774 	PORT_BIT( 0xff, 0x6a, IPT_PADDLE ) PORT_MINMAX(0x16,0xbf) PORT_SENSITIVITY(30) PORT_KEYDELTA(30) PORT_CENTERDELTA(0)
1775 INPUT_PORTS_END
1776 
1777 
1778 MACHINE_START_MEMBER(_8080bw_state,sflush)
1779 {
1780 	mw8080bw_state::machine_start();
1781 
1782 	m_scattered_colorram = std::make_unique<uint8_t []>(0x800);
1783 	save_pointer(&m_scattered_colorram[0], "m_scattered_colorram", 0x800);
1784 }
1785 
sflush(machine_config & config)1786 void _8080bw_state::sflush(machine_config &config)
1787 {
1788 	mw8080bw_root(config);
1789 
1790 	/* basic machine hardware */
1791 	M6800(config.replace(), m_maincpu, 1500000); // ?
1792 	m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::sflush_map);
1793 
1794 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,sflush)
1795 
1796 	/* add shifter */
1797 	MB14241(config, m_mb14241);
1798 
1799 	/* video hardware */
1800 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_sflush));
1801 
1802 	PALETTE(config, m_palette, FUNC(_8080bw_state::sflush_palette), 8);
1803 }
1804 
1805 
1806 
1807 /*******************************************************************************************/
1808 /*                                                                                         */
1809 /* Taito "Lupin III"                                                                       */
1810 /*                                                                                         */
1811 /*  The rom at 5000 is optional. It contains code for colour ram, and all tunes except     */
1812 /*  when the moneybag has been stolen. If you remove this rom, bits 0 and 1 of port 0      */
1813 /*  must be set High. The colour will then be determined by the 2 proms instead. Bit 6     */
1814 /*  of port 5 will select which prom to use.                                               */
1815 /*                                                                                         */
1816 /*  Differences between the 2 sets:                                                        */
1817 /*  - Set 2 has a language selection switch. In the Japanese position, it looks            */
1818 /*    the same as set 1. Set 1 is always in Japanese.                                      */
1819 /*  - Set 1, bit 6 of port 3 activates when the wife is kicking the man.                   */
1820 /*  - The dogs and policemen are yellow in set 1, and different colours in set 2.          */
1821 /*                                                                                         */
1822 /*******************************************************************************************/
1823 
lupin3_io_map(address_map & map)1824 void _8080bw_state::lupin3_io_map(address_map &map)
1825 {
1826 	map(0x00, 0x00).portr("IN0").w(FUNC(_8080bw_state::lupin3_00_w));
1827 	map(0x01, 0x01).portr("IN1");
1828 	map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
1829 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(FUNC(_8080bw_state::lupin3_sh_port_1_w));
1830 	map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
1831 	map(0x05, 0x05).w(FUNC(_8080bw_state::lupin3_sh_port_2_w));
1832 	map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
1833 }
1834 
1835 
1836 static INPUT_PORTS_START( lupin3 )
1837 	PORT_START("IN0")
1838 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1839 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1840 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
1841 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_COCKTAIL
1842 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
1843 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
1844 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
1845 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
1846 
1847 	PORT_START("IN1")
1848 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
1849 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
1850 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
1851 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
1852 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY
1853 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY
1854 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY
1855 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY
1856 
1857 	PORT_START("IN2")
DEF_STR(Lives)1858 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:1,2")
1859 	PORT_DIPSETTING(    0x00, "3" )
1860 	PORT_DIPSETTING(    0x01, "4" )
1861 	PORT_DIPSETTING(    0x02, "5" )
1862 	PORT_DIPSETTING(    0x03, "6" )
1863 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) )      PORT_DIPLOCATION("SW1:3")
1864 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
1865 	PORT_DIPSETTING(    0x04, DEF_STR( Cocktail ) )
1866 	PORT_DIPNAME( 0x08, 0x00, "Bags To Collect" )       PORT_DIPLOCATION("SW1:4")
1867 	PORT_DIPSETTING(    0x08, "2" )
1868 	PORT_DIPSETTING(    0x00, "8" )
1869 	PORT_DIPUNUSED_DIPLOC( 0x10, 0x00, "SW1:5" )
1870 	PORT_DIPUNUSED_DIPLOC( 0x20, 0x00, "SW1:6" )
1871 	PORT_DIPUNUSED_DIPLOC( 0x40, 0x00, "SW1:7" )
1872 	PORT_DIPNAME(0x80,  0x00, "Invulnerability (Cheat)") PORT_DIPLOCATION("SW1:8")
1873 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1874 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
1875 INPUT_PORTS_END
1876 
1877 static INPUT_PORTS_START( lupin3a )
1878 	PORT_INCLUDE( lupin3 )
1879 
1880 	PORT_MODIFY("IN0")
1881 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* selects color mode (dynamic vs. static) */
1882 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* something has to do with sound */
1883 
1884 	PORT_MODIFY("IN2")
1885 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Language ) )     PORT_DIPLOCATION("SW1:5")
1886 	PORT_DIPSETTING(    0x00, DEF_STR( English ) )
1887 	PORT_DIPSETTING(    0x10, DEF_STR( Japanese ) )
1888 INPUT_PORTS_END
1889 
1890 void _8080bw_state::lupin3(machine_config &config)
1891 {
1892 	mw8080bw_root(config);
1893 
1894 	/* basic machine hardware */
1895 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::lupin3_io_map);
1896 
1897 	WATCHDOG_TIMER(config, m_watchdog);
1898 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw)
1899 
1900 	/* add shifter */
1901 	MB14241(config, m_mb14241);
1902 
1903 	/* video hardware */
1904 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_indianbt));
1905 
1906 	PALETTE(config, m_palette, palette_device::RGB_3BIT);
1907 
1908 	/* sound hardware */
1909 	SPEAKER(config, "mono").front_center();
1910 
1911 	sn76477_device &snsnd(SN76477(config, "snsnd"));
1912 	snsnd.set_noise_params(0, 0, 0);
1913 	snsnd.set_decay_res(0);
1914 	snsnd.set_attack_params(0, RES_K(100));
1915 	snsnd.set_amp_res(RES_K(56));
1916 	snsnd.set_feedback_res(RES_K(10));
1917 	snsnd.set_vco_params(0, CAP_U(0.1), RES_K(8.2));
1918 	snsnd.set_pitch_voltage(5.0);
1919 	snsnd.set_slf_params(CAP_U(1.0), RES_K(120));
1920 	snsnd.set_oneshot_params(0, 0);
1921 	snsnd.set_vco_mode(1);
1922 	snsnd.set_mixer_params(0, 0, 0);
1923 	snsnd.set_envelope_params(1, 0);
1924 	snsnd.set_enable(1);
1925 	snsnd.add_route(ALL_OUTPUTS, "mono", 0.5);
1926 
1927 	SAMPLES(config, m_samples);
1928 	m_samples->set_channels(4);
1929 	m_samples->set_samples_names(lupin3_sample_names);
1930 	m_samples->add_route(ALL_OUTPUTS, "mono", 1.0);
1931 
1932 	DISCRETE(config, m_discrete, indianbt_discrete);
1933 	m_discrete->add_route(ALL_OUTPUTS, "mono", 1.0);
1934 }
1935 
lupin3a(machine_config & config)1936 void _8080bw_state::lupin3a(machine_config &config)
1937 {
1938 	lupin3(config);
1939 	m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::schaser_map);
1940 
1941 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,sflush)
1942 
1943 	/* video hardware */
1944 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_lupin3));
1945 
1946 	PALETTE(config.replace(), m_palette, palette_device::RBG_3BIT);
1947 }
1948 
1949 
1950 
1951 /*******************************************************/
1952 /*                                                     */
1953 /* Taito "Polaris"                                     */
1954 /*                                                     */
1955 /*******************************************************/
1956 
WRITE_LINE_MEMBER(_8080bw_state::polaris_60hz_w)1957 WRITE_LINE_MEMBER(_8080bw_state::polaris_60hz_w)
1958 {
1959 	if (state)
1960 	{
1961 		m_polaris_cloud_speed++;
1962 
1963 		if (m_polaris_cloud_speed >= 4) /* every 4 frames - this was verified against real machine */
1964 		{
1965 			m_polaris_cloud_speed = 0;
1966 			m_polaris_cloud_pos++;
1967 		}
1968 	}
1969 }
1970 
MACHINE_START_MEMBER(_8080bw_state,polaris)1971 MACHINE_START_MEMBER(_8080bw_state,polaris)
1972 {
1973 	mw8080bw_state::machine_start();
1974 
1975 	m_scattered_colorram = std::make_unique<uint8_t []>(0x800);
1976 	save_pointer(&m_scattered_colorram[0], "m_scattered_colorram", 0x800);
1977 	save_item(NAME(m_polaris_cloud_speed));
1978 	save_item(NAME(m_polaris_cloud_pos));
1979 }
1980 
polaris_port00_r()1981 uint8_t _8080bw_state::polaris_port00_r()
1982 {
1983 	uint8_t data = ioport("IN0")->read();
1984 	if (m_flip_screen) return data;
1985 	return (data & 7) | (ioport("IN1")->read() & 0xf8);
1986 }
1987 
1988 // Port 5 is used to reset the watchdog timer.
1989 // This port is also written to when the boss plane is going up and down.
1990 // If you write this value to a note ciruit similar to the music,
1991 // you will get a nice sound that accurately follows the plane.
1992 // It sounds better then the actual circuit used.
1993 // Probably an unfinished feature.
polaris_io_map(address_map & map)1994 void _8080bw_state::polaris_io_map(address_map &map)
1995 {
1996 	map(0x00, 0x00).r(FUNC(_8080bw_state::polaris_port00_r)).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
1997 	map(0x01, 0x01).portr("IN1");
1998 	map(0x02, 0x02).portr("IN2").w(FUNC(_8080bw_state::polaris_sh_port_1_w));
1999 	map(0x03, 0x03).rw(m_mb14241, FUNC(mb14241_device::shift_result_r), FUNC(mb14241_device::shift_data_w));
2000 	map(0x04, 0x04).w(FUNC(_8080bw_state::polaris_sh_port_2_w));
2001 	map(0x05, 0x05).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
2002 	map(0x06, 0x06).w(FUNC(_8080bw_state::polaris_sh_port_3_w));
2003 }
2004 
2005 
2006 static INPUT_PORTS_START( polaris )
2007 	PORT_START("IN0")
2008 	PORT_DIPUNUSED_DIPLOC( 0x01, 0x00, "SW?:1" )
2009 	PORT_DIPUNUSED_DIPLOC( 0x02, 0x00, "SW?:2" )
2010 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
2011 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
2012 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
2013 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
2014 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
2015 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
2016 
2017 	PORT_START("IN1")
2018 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
2019 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
2020 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
2021 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
2022 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
2023 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
2024 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
2025 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
2026 
2027 	PORT_START("IN2")
DEF_STR(Lives)2028 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:1,2")
2029 	PORT_DIPSETTING(    0x00, "3" )
2030 	PORT_DIPSETTING(    0x01, "4" )
2031 	PORT_DIPSETTING(    0x02, "5" )
2032 	PORT_DIPSETTING(    0x03, "6" )
2033 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) )      PORT_DIPLOCATION("SW1:3")
2034 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
2035 	PORT_DIPSETTING(    0x04, DEF_STR( Cocktail ) )
2036 	PORT_DIPNAME( 0x08, 0x00, "Invincible Test" )       PORT_DIPLOCATION("SW1:4")
2037 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2038 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
2039 	/* The Demo Sounds dip switch does function.
2040 	   It allows the sonar sounds to play in demo mode. */
2041 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )  PORT_DIPLOCATION("SW1:5")
2042 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2043 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
2044 	PORT_DIPUNUSED_DIPLOC( 0x20, 0x00, "SW1:6" )
2045 	PORT_DIPUNUSED_DIPLOC( 0x40, 0x00, "SW1:7" )
2046 	PORT_DIPNAME( 0x80, 0x00, "High Score Preset Mode" ) PORT_DIPLOCATION("SW1:8")
2047 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2048 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
2049 
2050 	PORT_START("VR1")
2051 	PORT_ADJUSTER( 80, "Sub Volume VR1" )
2052 
2053 	PORT_START("VR2")
2054 	PORT_ADJUSTER( 70, "Sub Volume VR2" )
2055 
2056 	PORT_START("VR3")
2057 	PORT_ADJUSTER( 90, "Sub Volume VR3" )
2058 INPUT_PORTS_END
2059 
2060 void _8080bw_state::polaris(machine_config &config)
2061 {
2062 	mw8080bw_root(config);
2063 
2064 	/* basic machine hardware */
2065 	m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::schaser_map);
2066 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::polaris_io_map);
2067 
2068 	WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 255);
2069 
2070 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,polaris)
2071 
2072 	/* add shifter */
2073 	MB14241(config, m_mb14241);
2074 
2075 	/* video hardware */
2076 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_polaris));
2077 	m_screen->screen_vblank().set(FUNC(_8080bw_state::polaris_60hz_w));
2078 
2079 	PALETTE(config, m_palette, palette_device::RBG_3BIT);
2080 
2081 	/* sound hardware */
2082 	SPEAKER(config, "mono").front_center();
2083 
2084 	DISCRETE(config, m_discrete, polaris_discrete);
2085 	m_discrete->add_route(ALL_OUTPUTS, "mono", 1.0);
2086 }
2087 
2088 
2089 
2090 /*******************************************************/
2091 /*                                                     */
2092 /* Taito "Ozma Wars"                                   */
2093 /*                                                     */
2094 /*******************************************************/
2095 
2096 static INPUT_PORTS_START( ozmawars )
PORT_INCLUDE(sicv)2097 	PORT_INCLUDE( sicv )
2098 
2099 	PORT_MODIFY("IN1")
2100 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
2101 
2102 	PORT_MODIFY("IN2")
2103 	PORT_DIPNAME( 0x03, 0x00, "Energy" )            PORT_DIPLOCATION("SW1:1,2")
2104 	PORT_DIPSETTING(    0x00, "15000" )
2105 	PORT_DIPSETTING(    0x01, "20000" )
2106 	PORT_DIPSETTING(    0x02, "25000" )
2107 	PORT_DIPSETTING(    0x03, "35000" )
2108 	PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" )
2109 	PORT_DIPNAME( 0x08, 0x00, "Bonus Energy" )      PORT_DIPLOCATION("SW1:4")
2110 	PORT_DIPSETTING(    0x00, "15000" )
2111 	PORT_DIPSETTING(    0x08, "10000" )
2112 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) )  PORT_DIPLOCATION("SW1:8")
2113 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
2114 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
2115 INPUT_PORTS_END
2116 
2117 
2118 static INPUT_PORTS_START( spaceph )
2119 	PORT_INCLUDE( ozmawars )
2120 
2121 	PORT_MODIFY("IN1")
2122 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2123 INPUT_PORTS_END
2124 
2125 
2126 
2127 /*******************************************************/
2128 /*                                                     */
2129 /* Emag "Super Invaders"                               */
2130 /*                                                     */
2131 /*******************************************************/
2132 
2133 static INPUT_PORTS_START( sinvemag )
2134 	PORT_INCLUDE( sicv )
2135 
2136 	PORT_MODIFY("IN1")
2137 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2138 
2139 	PORT_MODIFY("IN2")
2140 	PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" )
2141 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW1:4")
2142 	PORT_DIPSETTING(    0x08, "2000" )
2143 	PORT_DIPSETTING(    0x00, "3000" )
2144 INPUT_PORTS_END
2145 
2146 
2147 
2148 /*******************************************************/
2149 /*                                                     */
2150 /* Jatre Specter (Taito?)                              */
2151 /*                                                     */
2152 /*******************************************************/
2153 
2154 static INPUT_PORTS_START( jspecter )
2155 	PORT_INCLUDE( sicv )
2156 
2157 	PORT_MODIFY("IN1")
2158 	// Hold right when starting game to play game B
2159 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1)
2160 	PORT_MODIFY("IN2")
2161 	PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" )
2162 INPUT_PORTS_END
2163 
2164 
2165 
2166 /*******************************************************/
2167 /*                                                     */
2168 /* Taito "Balloon Bomber"                              */
2169 /*                                                     */
2170 /*******************************************************/
2171 
2172 void _8080bw_state::ballbomb_io_map(address_map &map)
2173 {
2174 	map(0x00, 0x00).portr("IN0");
2175 	map(0x01, 0x01).portr("IN1").w(FUNC(_8080bw_state::ballbomb_01_w));
2176 	map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
2177 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(FUNC(_8080bw_state::ballbomb_sh_port_1_w));
2178 	map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
2179 	map(0x05, 0x05).w(FUNC(_8080bw_state::ballbomb_sh_port_2_w));
2180 }
2181 
2182 
2183 static INPUT_PORTS_START( ballbomb )
PORT_INCLUDE(sicv)2184 	PORT_INCLUDE( sicv )
2185 
2186 	PORT_MODIFY("IN1")
2187 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
2188 
2189 	PORT_MODIFY("IN2")
2190 	PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x00, "SW1:4" )
2191 	PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x00, "SW1:8" )
2192 INPUT_PORTS_END
2193 
2194 void _8080bw_state::ballbomb(machine_config &config)
2195 {
2196 	mw8080bw_root(config);
2197 
2198 	/* basic machine hardware */
2199 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::ballbomb_io_map);
2200 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw)
2201 
2202 	/* add shifter */
2203 	MB14241(config, m_mb14241);
2204 
2205 	/* video hardware */
2206 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_ballbomb));
2207 
2208 	PALETTE(config, m_palette, palette_device::RBG_3BIT);
2209 
2210 	/* sound hardware */
2211 	invaders_samples_audio(config);
2212 
2213 	DISCRETE(config, m_discrete, ballbomb_discrete);
2214 	m_discrete->add_route(ALL_OUTPUTS, "mono", 1.0);
2215 }
2216 
2217 
2218 
2219 /*******************************************************/
2220 /*                                                     */
2221 /* Wing "Yosaku To Donbei"                             */
2222 /*                                                     */
2223 /*******************************************************/
2224 
yosakdon_map(address_map & map)2225 void _8080bw_state::yosakdon_map(address_map &map)
2226 {
2227 	map(0x0000, 0x1fff).rom();
2228 	map(0x2000, 0x3fff).ram().share("main_ram");
2229 	map(0x4000, 0x43ff).writeonly(); /* what's this? */
2230 }
2231 
yosakdon_io_map(address_map & map)2232 void _8080bw_state::yosakdon_io_map(address_map &map)
2233 {
2234 	map(0x01, 0x01).portr("IN0");
2235 	map(0x02, 0x02).portr("IN1");
2236 	map(0x03, 0x03).w(FUNC(_8080bw_state::yosakdon_sh_port_1_w));
2237 	map(0x05, 0x05).w(FUNC(_8080bw_state::yosakdon_sh_port_2_w));
2238 	map(0x06, 0x06).nopw(); /* character numbers */
2239 }
2240 
2241 
2242 static INPUT_PORTS_START( yosakdon )
2243 	PORT_START("IN0")
2244 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
2245 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
2246 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
2247 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_CUSTOM_MEMBER(mw8080bw_state,invaders_in1_control_r)2248 	PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(mw8080bw_state, invaders_in1_control_r)
2249 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
2250 
2251 	PORT_START("IN1")
2252 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
2253 	PORT_DIPSETTING(    0x00, "3" )
2254 	PORT_DIPSETTING(    0x01, "4" )
2255 	PORT_DIPSETTING(    0x02, "5" )
2256 	PORT_DIPSETTING(    0x03, "6" )
2257 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
2258 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
2259 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2260 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
2261 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
2262 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2263 	PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(mw8080bw_state, invaders_in2_control_r)
2264 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
2265 
2266 	/* Dummy controls port, P1 */
2267 	INVADERS_CONTROL_PORT_P1
2268 	INVADERS_CONTROL_PORT_P2
2269 
2270 	/* Dummy port for cocktail mode (not used) */
2271 	INVADERS_CAB_TYPE_PORT
2272 INPUT_PORTS_END
2273 
2274 
2275 void _8080bw_state::yosakdon(machine_config &config)
2276 {
2277 	mw8080bw_root(config);
2278 
2279 	/* basic machine hardware */
2280 	m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::yosakdon_map);
2281 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::yosakdon_io_map);
2282 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw)
2283 
2284 	/* sound hardware */
2285 	invaders_samples_audio(config);
2286 
2287 	/* video hardware */
2288 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invaders));
2289 }
2290 
2291 
2292 
2293 /*******************************************************/
2294 /*                                                     */
2295 /* Taito  "Indian battle"                              */
2296 /* In "indianbtbr", the "number of animals" dipswitch  */
2297 /*  is ineffective because they compare for 8 kills at */
2298 /*  0x811, which is not possible. This byte should be  */
2299 /*  0x03.                                              */
2300 /*                                                     */
2301 /*******************************************************/
2302 
2303 static INPUT_PORTS_START( indianbt )
2304 	PORT_START("IN1")
2305 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
2306 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
2307 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
2308 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2309 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
2310 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
2311 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
2312 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2313 
2314 	PORT_START("IN2")
DEF_STR(Lives)2315 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
2316 	PORT_DIPSETTING(    0x00, "3" )
2317 	PORT_DIPSETTING(    0x01, "4" )
2318 	PORT_DIPSETTING(    0x02, "5" )
2319 	PORT_DIPSETTING(    0x03, "6" )
2320 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
2321 	PORT_DIPNAME( 0x08, 0x00, "Number of Catch Animals" )
2322 	PORT_DIPSETTING(    0x00, "6" )
2323 	PORT_DIPSETTING(    0x08, "3" )
2324 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
2325 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
2326 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
2327 	PORT_DIPNAME(0x80,  0x00, "Invulnerability (Cheat)")
2328 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2329 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
2330 
2331 	/* Dummy port for cocktail mode */
2332 	INVADERS_CAB_TYPE_PORT
2333 INPUT_PORTS_END
2334 
2335 static INPUT_PORTS_START( indianbtbr )
2336 	PORT_START("IN0")
2337 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
2338 	PORT_DIPSETTING(    0x00, "3" )
2339 	PORT_DIPSETTING(    0x01, "4" )
2340 	PORT_DIPSETTING(    0x02, "5" )
2341 	PORT_DIPSETTING(    0x03, "6" )
2342 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
2343 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
2344 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
2345 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) //Enable color map to be in C400-DFFF
2346 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
2347 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) //Length of manufacturer's logo (0x11 or 0x16)
2348 
2349 	PORT_START("IN1")
2350 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
2351 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
2352 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
2353 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2354 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
2355 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
2356 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
2357 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2358 
2359 	PORT_START("IN2")
2360 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
2361 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
2362 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
2363 	PORT_DIPNAME(0x08,  0x00, "Invulnerability (Cheat)")
2364 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2365 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
2366 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
2367 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
2368 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
2369 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2370 
2371 	/* Dummy port for cocktail mode */
2372 	INVADERS_CAB_TYPE_PORT
2373 INPUT_PORTS_END
2374 
2375 
2376 /*
2377  Protection / sound hw checks ?
2378 
2379  ld    a ,$b
2380  out  ($03),a
2381  out  ($01),a
2382  in   a,($00)
2383  and  $f0
2384  cp   $10
2385  jp   nz,$3000
2386  ld   a,$03
2387  out  ($03),a
2388  out  ($01),a
2389  in   a,($00)
2390  jp   $5de7
2391  and  $f0
2392  jp   z,$052b
2393  jp   $3000
2394 
2395 */
2396 
2397 uint8_t _8080bw_state::indianbt_r()
2398 {
2399 	switch(m_maincpu->pc())
2400 	{
2401 		case 0x5fed:    return 0x10;
2402 		case 0x5ffc:    return 0;
2403 	}
2404 	logerror("unknown port 0 read @ %x\n",m_maincpu->pc());
2405 	return machine().rand();
2406 }
2407 
indianbtbr_01_r()2408 uint8_t _8080bw_state::indianbtbr_01_r()
2409 {
2410 	uint8_t data = ioport("IN1")->read();
2411 	if (!m_flip_screen) return data;
2412 	return (data & 0x8f) | (ioport("IN2")->read() & 0x70);
2413 }
2414 
indianbt_io_map(address_map & map)2415 void _8080bw_state::indianbt_io_map(address_map &map)
2416 {
2417 	map(0x00, 0x00).r(FUNC(_8080bw_state::indianbt_r));
2418 	map(0x01, 0x01).portr("IN1");
2419 	map(0x02, 0x02).r(FUNC(_8080bw_state::invrvnge_02_r)).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
2420 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(FUNC(_8080bw_state::indianbt_sh_port_1_w));
2421 	map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
2422 	map(0x05, 0x05).w(FUNC(_8080bw_state::indianbt_sh_port_2_w));
2423 	map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
2424 	map(0x07, 0x07).w(FUNC(_8080bw_state::indianbt_sh_port_3_w));
2425 }
2426 
indianbtbr_io_map(address_map & map)2427 void _8080bw_state::indianbtbr_io_map(address_map &map)
2428 {
2429 	map(0x00, 0x00).portr("IN0");
2430 	map(0x01, 0x01).r(FUNC(_8080bw_state::indianbtbr_01_r));
2431 	map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
2432 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(FUNC(_8080bw_state::indianbtbr_sh_port_1_w));
2433 	map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
2434 	map(0x05, 0x05).w(FUNC(_8080bw_state::indianbtbr_sh_port_2_w));
2435 	map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
2436 	map(0x07, 0x07).nopw();
2437 }
2438 
2439 
indianbt(machine_config & config)2440 void _8080bw_state::indianbt(machine_config &config)
2441 {
2442 	mw8080bw_root(config);
2443 
2444 	/* basic machine hardware */
2445 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::indianbt_io_map);
2446 
2447 	WATCHDOG_TIMER(config, m_watchdog);
2448 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw)
2449 
2450 	/* add shifter */
2451 	MB14241(config, m_mb14241);
2452 
2453 	/* video hardware */
2454 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_indianbt));
2455 
2456 	PALETTE(config, m_palette, palette_device::RGB_3BIT);
2457 
2458 	/* sound hardware */
2459 	invaders_samples_audio(config);
2460 
2461 	DISCRETE(config, m_discrete, indianbt_discrete);
2462 	m_discrete->add_route(ALL_OUTPUTS, "mono", 0.25);
2463 }
2464 
indianbtbr(machine_config & config)2465 void _8080bw_state::indianbtbr(machine_config &config)
2466 {
2467 	mw8080bw_root(config);
2468 
2469 	/* basic machine hardware */
2470 	m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::schaser_map);
2471 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::indianbtbr_io_map);
2472 
2473 	WATCHDOG_TIMER(config, m_watchdog);
2474 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw)
2475 
2476 	/* add shifter */
2477 	MB14241(config, m_mb14241);
2478 
2479 	/* video hardware */
2480 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_indianbt));
2481 
2482 	PALETTE(config, m_palette, palette_device::RGB_3BIT);
2483 
2484 	/* sound hardware */
2485 	invaders_samples_audio(config);
2486 }
2487 
2488 
2489 
2490 /*******************************************************/
2491 /*                                                     */
2492 /* Taito "Steel Worker"                                */
2493 /*                                                     */
2494 /*******************************************************/
2495 
steelwkr_sh_port_3_w(uint8_t data)2496 void _8080bw_state::steelwkr_sh_port_3_w(uint8_t data)
2497 {
2498 	machine().bookkeeping().coin_lockout_global_w(!(~data & 0x03));      /* possibly */
2499 }
2500 
steelwkr_io_map(address_map & map)2501 void _8080bw_state::steelwkr_io_map(address_map &map)
2502 {
2503 	map(0x01, 0x01).portr("IN1");
2504 	map(0x02, 0x02).r(FUNC(_8080bw_state::invrvnge_02_r)).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
2505 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(FUNC(_8080bw_state::invadpt2_sh_port_1_w));
2506 	map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
2507 	map(0x05, 0x05).w(FUNC(_8080bw_state::invadpt2_sh_port_2_w));
2508 	map(0x06, 0x06).w(FUNC(_8080bw_state::steelwkr_sh_port_3_w));
2509 }
2510 
2511 static INPUT_PORTS_START( steelwkr )
2512 	/* PORT_START("IN0") - never read */
2513 
2514 	PORT_START("IN1")
2515 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
2516 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
2517 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
2518 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2519 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
2520 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
2521 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
2522 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_BUTTON2 )
2523 
2524 	PORT_START("IN2")
DEF_STR(Lives)2525 	PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:1,2")
2526 	PORT_DIPSETTING(    0x00, "1" )
2527 	PORT_DIPSETTING(    0x01, "2" )
2528 	PORT_DIPSETTING(    0x02, "3" )
2529 	PORT_DIPSETTING(    0x03, "4" )
2530 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )          PORT_DIPLOCATION("SW1:3")
2531 	PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x00, "SW1:4" )
2532 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
2533 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
2534 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
2535 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_BUTTON2 ) PORT_PLAYER(2)
2536 
2537 	/* Dummy port for cocktail mode */
2538 	INVADERS_CAB_TYPE_PORT
2539 INPUT_PORTS_END
2540 
2541 
2542 void _8080bw_state::steelwkr(machine_config &config)
2543 {
2544 	mw8080bw_root(config);
2545 
2546 	/* basic machine hardware */
2547 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::steelwkr_io_map);
2548 
2549 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw)
2550 
2551 	/* add shifter */
2552 	MB14241(config, m_mb14241);
2553 
2554 	/* video hardware */
2555 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invadpt2));
2556 
2557 	PALETTE(config, m_palette, palette_device::RBG_3BIT);
2558 
2559 	/* sound hardware */
2560 	invaders_samples_audio(config);
2561 }
2562 
2563 
2564 
2565 /*****************************************************
2566 
2567 Guru Readme for Shuttle Invader (Omori 1979)
2568 
2569 PCB Layout
2570 ----------
2571 
2572 OEC-3C
2573 |----------------------------------------------------------|
2574 | LM556   DIP16                                            |
2575 |VR1                                                       |
2576 | LM458  SN76477                                           |
2577 |VR2                 5.545MHz                              |
2578 | LM380                                                    |
2579 |                                   4045 4045              |
2580 |                      2.11C   1.13C                       |
2581 |                18MHz                 4027 4027 4027 4027 |
2582 |                      4.11D   3.13D                       |
2583 |               AM8224                 4027 4027 4027 4027 |
2584 |                i8080 DIP24   5.13E                       |
2585 |      DSW                             4027 4027 4027 4027 |
2586 |                                                          |
2587 |SN75452  SN75452      8.11F           4027 4027 4027 4027 |
2588 |      CN2     8216 8216                        CN1        |
2589 |----------------------------------------------------------|
2590 Notes:
2591       i8080   - Intel 8080 CPU. Clock input 2.000MHz [18/9]. Note the /9 comes from the AM8224
2592       SN76477 - Texas Instruments SN76477 Complex Sound Generator
2593       SN75452 - Texas Instruments SN75452 Dual High Speed High Current Peripheral Driver
2594       8216    - NEC uPB8216 4 Bit Parallel Bi-Directional Bus Driver
2595       4045    - Texas Instruments TMS4045 1k x 4-bit Static RAM (Work RAM)
2596       4027    - Motorola MCM4027 4k x 1-bit Dynamic RAM (Video RAM)
2597       AM8224  - AMD AM8224 Clock Generator and Driver for 8080-Compatible Microprocessors
2598       DIP16   - DIP16 socket for connection of 16-wire flat cable joining to OEC-4A PCB
2599       LM556   - Texas Instruments LM556 Dual Timer
2600       LM458   - Texas Instruments LM458 Low Power Dual Operational Amplifier
2601       LM380   - Texas Instruments LM380 2.5W Audio Power Amplifier
2602       CN1     - 11-pin Power Input Connector. Pinout (left to right) is GND,GND,GND,+5V,+5V,+5V,+12V,+12V,+12V,[SPACE],-5V
2603       CN2     - 25-pin Connector for Control Inputs/Audio Output etc.
2604       VR1     - Potentiometer (Master Volume)
2605       VR2     - Potentiometer (volume of other sounds? maybe background sounds?)
2606       DSW     - 8-position DIP Switch
2607 
2608 Additional PCB (more sounds?)
2609 --------------
2610 
2611 OEC-4A
2612 |-------------------|
2613 |   VR1  74121      |
2614 | 7400 7404 74S287  |
2615 |75452 CN2 CN1 LM723|
2616 |75452              |
2617 |                   |
2618 |--|    22-WAY   |--|
2619    |-------------|
2620 Notes: (All IC's shown)
2621       LM723  - Texas Instruments LM723 Voltage Regulator
2622       74S287 - Texas Instruments SN74S287 256-bit x 4-bit Bi-Polar PROM at location 2B
2623       75452  - Texas Instruments SN75452 Dual High Speed High Current Peripheral Driver
2624       VR1    - Potentiometer connected to LM723 pin 5
2625       CN1    - DIP16 socket for connection of 16-wire flat cable joining to Main PCB
2626       CN2    - Empty DIP16 socket
2627       22-WAY - Single-Sided 22-WAY Card Edge Connector. Has many tracks coming from it, as well as power.
2628                It's purpose and what it plugs into is unknown.
2629 
2630 ******************************************************/
2631 
2632 static INPUT_PORTS_START( shuttlei )
2633 	PORT_START("DSW")
DEF_STR(Coinage)2634 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coinage ) )
2635 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
2636 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
2637 	PORT_DIPNAME( 0x06, 0x00, DEF_STR( Lives ) )
2638 	PORT_DIPSETTING(    0x00, "3" )
2639 	PORT_DIPSETTING(    0x02, "4" )
2640 	PORT_DIPSETTING(    0x04, "5" )
2641 	PORT_DIPSETTING(    0x06, "6" )
2642 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
2643 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
2644 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2645 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
2646 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
2647 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2648 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
2649 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
2650 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2651 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
2652 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2653 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2654 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
2655 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
2656 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2657 
2658 	PORT_START("INPUTS")
2659 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
2660 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
2661 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2662 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
2663 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
2664 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
2665 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 )
2666 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 )
2667 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1)
2668 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1)
2669 
2670 	PORT_START("P2")
2671 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
2672 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
2673 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
2674 
2675 	/* Dummy port for cocktail mode */
2676 	INVADERS_CAB_TYPE_PORT
2677 INPUT_PORTS_END
2678 
2679 // 'no 1' which is displayed before each player plays actually refers to the wave number, not the player number!
2680 static INPUT_PORTS_START( skylove )
2681 	PORT_START("DSW")
2682 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coinage ) )
2683 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
2684 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
2685 	PORT_DIPNAME( 0x06, 0x00, DEF_STR( Lives ) )
2686 	PORT_DIPSETTING(    0x00, "3" )
2687 	PORT_DIPSETTING(    0x02, "4" )
2688 	PORT_DIPSETTING(    0x04, "5" )
2689 	PORT_DIPSETTING(    0x06, "6" )
2690 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
2691 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
2692 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2693 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
2694 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
2695 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2696 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
2697 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
2698 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2699 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
2700 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2701 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2702 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
2703 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
2704 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2705 
2706 	PORT_START("INPUTS")
2707 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
2708 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) ) // must be off to boot
2709 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2710 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
2711 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
2712 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
2713 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 )
2714 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 )
2715 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1)
2716 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1)
2717 
2718 	PORT_START("P2")
2719 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
2720 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
2721 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
2722 
2723 	/* Dummy port for cocktail mode */
2724 	INVADERS_CAB_TYPE_PORT
2725 INPUT_PORTS_END
2726 
2727 uint8_t _8080bw_state::shuttlei_ff_r()
2728 {
2729 	uint8_t data = ioport("INPUTS")->read();
2730 	if (!m_flip_screen) return data;
2731 	return (data & 0x3b) | ioport("P2")->read();
2732 }
2733 
shuttlei_ff_w(uint8_t data)2734 void _8080bw_state::shuttlei_ff_w(uint8_t data)
2735 {
2736 	/* bit 0 goes high when first coin inserted
2737 	   bit 1 also goes high when subsequent coins are inserted
2738 	      These may be for indicator lamps under the start buttons.
2739 	   bit 2 goes high while player 2 is playing
2740 	*/
2741 	m_flip_screen = BIT(data, 2) & BIT(ioport(CABINET_PORT_TAG)->read(), 0);
2742 }
2743 
shuttlei_map(address_map & map)2744 void _8080bw_state::shuttlei_map(address_map &map)
2745 {
2746 	map(0x0000, 0x1fff).rom();
2747 	map(0x2000, 0x37ff).ram().share("main_ram");
2748 	map(0x3800, 0x3fff).ram();
2749 	map(0x4000, 0x43ff).ram().share("share1"); // shuttlei
2750 	map(0x6000, 0x63ff).ram().share("share1"); // skylove (is it mirrored, or different PCB hookup?)
2751 }
2752 
shuttlei_io_map(address_map & map)2753 void _8080bw_state::shuttlei_io_map(address_map &map)
2754 {
2755 	map(0xfc, 0xfc).nopw(); /* game writes 0xAA every so often (perhaps when base hit?) */
2756 	map(0xfd, 0xfd).w(FUNC(_8080bw_state::shuttlei_sh_port_1_w));
2757 	map(0xfe, 0xfe).portr("DSW").w(FUNC(_8080bw_state::shuttlei_sh_port_2_w));
2758 	map(0xff, 0xff).rw(FUNC(_8080bw_state::shuttlei_ff_r), FUNC(_8080bw_state::shuttlei_ff_w));
2759 }
2760 
2761 
shuttlei(machine_config & config)2762 void _8080bw_state::shuttlei(machine_config &config)
2763 {
2764 	/* basic machine hardware */
2765 	I8080(config, m_maincpu, XTAL(18'000'000) / 9);
2766 	// TODO: move irq handling away from mw8080.cpp, this game runs on custom hardware
2767 	m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::shuttlei_map);
2768 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::shuttlei_io_map);
2769 	m_maincpu->set_irq_acknowledge_callback(FUNC(_8080bw_state::interrupt_vector));
2770 
2771 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state, extra_8080bw)
2772 	MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state, mw8080bw)
2773 
2774 	/* video hardware */
2775 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
2776 	m_screen->set_refresh_hz(60);
2777 	m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
2778 	m_screen->set_size(32*8, 32*8);
2779 	m_screen->set_visarea(0*8, 32*8-1, 0*8, 24*8-1);
2780 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_shuttlei));
2781 
2782 	PALETTE(config, m_palette, palette_device::MONOCHROME);
2783 
2784 	/* sound hardware */
2785 	invaders_samples_audio(config);
2786 }
2787 
2788 
2789 
2790 /*
2791 
2792 ------------------------------------
2793 Darth Vader - Space Invaders bootleg
2794 ------------------------------------
2795 
2796 Location     Device     File ID     Checksum
2797 --------------------------------------------
2798 0             2708       ROM0         6F9A
2799 1             2708       ROM1         7D2A
2800 2             2708       ROM2         67AA
2801 3             2708       ROM3         7D8D
2802 4             2708       ROM4         493D
2803 5             2708       ROM5         12CE
2804 
2805 
2806 Notes:  PCB No. DV-SI-7811M2a
2807         CPU - 8080
2808 
2809 Another (same checksums) dump came from board labeled SI-7811M-2
2810 
2811 */
2812 
MACHINE_START_MEMBER(_8080bw_state,darthvdr)2813 MACHINE_START_MEMBER(_8080bw_state,darthvdr)
2814 {
2815 	/* do nothing for now - different interrupt system */
2816 	m_fleet_step = 3;
2817 }
2818 
2819 
MACHINE_RESET_MEMBER(_8080bw_state,darthvdr)2820 MACHINE_RESET_MEMBER(_8080bw_state,darthvdr)
2821 {
2822 	/* do nothing for now - different interrupt system */
2823 }
2824 
IRQ_CALLBACK_MEMBER(_8080bw_state::darthvdr_interrupt_vector)2825 IRQ_CALLBACK_MEMBER(_8080bw_state::darthvdr_interrupt_vector)
2826 {
2827 	m_maincpu->set_input_line(0, CLEAR_LINE);
2828 	return 0xff;
2829 }
2830 
darthvdr_01_r()2831 uint8_t _8080bw_state::darthvdr_01_r()
2832 {
2833 	uint8_t data = ioport("P2")->read();
2834 	if (m_flip_screen) return data;
2835 	return (data & 0xe1) | (ioport("P1")->read() & 0x0e);
2836 }
2837 
darthvdr_map(address_map & map)2838 void _8080bw_state::darthvdr_map(address_map &map)
2839 {
2840 	map(0x0000, 0x17ff).rom();
2841 	map(0x1800, 0x1fff).ram();
2842 	map(0x4000, 0x5fff).ram().share("main_ram");
2843 }
2844 
darthvdr_io_map(address_map & map)2845 void _8080bw_state::darthvdr_io_map(address_map &map)
2846 {
2847 	map(0x00, 0x00).portr("P1");
2848 	map(0x01, 0x01).r(FUNC(_8080bw_state::darthvdr_01_r));
2849 
2850 	map(0x00, 0x00).w(FUNC(_8080bw_state::darthvdr_00_w)); // flipscreen
2851 	map(0x04, 0x04).nopw();
2852 	map(0x08, 0x08).w(FUNC(_8080bw_state::darthvdr_08_w)); // sound
2853 }
2854 
2855 
2856 static INPUT_PORTS_START( darthvdr )
2857 	PORT_START("P1")
2858 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
2859 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
2860 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY
2861 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY
2862 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
DEF_STR(Bonus_Life)2863 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Bonus_Life ) )
2864 	PORT_DIPSETTING(    0x00, "1000" )
2865 	PORT_DIPSETTING(    0x20, "3000" )
2866 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
2867 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2868 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2869 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Lives ) )
2870 	PORT_DIPSETTING(    0x00, "4" )
2871 	PORT_DIPSETTING(    0x80, "6" )
2872 
2873 	PORT_START("P2")
2874 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 )
2875 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
2876 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
2877 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
2878 	PORT_DIPNAME( 0x10, 0x10, "One less life" )
2879 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
2880 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2881 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
2882 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
2883 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2884 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
2885 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2886 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2887 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
2888 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
2889 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2890 
2891 	/* Dummy port for cocktail mode */
2892 	INVADERS_CAB_TYPE_PORT
2893 INPUT_PORTS_END
2894 
2895 void _8080bw_state::darthvdr(machine_config &config)
2896 {
2897 	mw8080bw_root(config);
2898 
2899 	/* basic machine hardware */
2900 	m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::darthvdr_map);
2901 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::darthvdr_io_map);
2902 	m_maincpu->set_irq_acknowledge_callback(FUNC(_8080bw_state::darthvdr_interrupt_vector));
2903 
2904 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,darthvdr)
2905 	MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state,darthvdr)
2906 
2907 	/* sound hardware */
2908 	invaders_samples_audio(config);
2909 
2910 	/* video hardware */
2911 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invaders));
2912 	m_screen->screen_vblank().set_inputline(m_maincpu, 0, ASSERT_LINE);
2913 }
2914 
2915 
2916 
2917 /*************************************
2918  *
2919  * Vortex (by Zilec AKA Zenitone-Microsec)
2920  * Runs on Space Invaders CV (color)/PV (part 2) board with
2921  * some color mods, and an epoxy brick for rom encryption
2922  * see below for decryption function (A0, A3, A9 invert)
2923  * It uses its own I/O function since A9 is inverted (and A9 mirrors A1 for I/O)
2924  *
2925  * Hold down fire button to activate thrust.
2926  *
2927  *************************************/
2928 
vortex_io_map(address_map & map)2929 void _8080bw_state::vortex_io_map(address_map &map)
2930 {
2931 	// I/O map is same as invaders but with A9 (used as A1 for I/O) inverted
2932 	map.global_mask(0xFF);
2933 	map(0x02, 0x02).mirror(0x04).portr("IN0");
2934 	map(0x03, 0x03).mirror(0x04).portr("IN1");
2935 	map(0x00, 0x00).mirror(0x04).portr("IN2");
2936 	map(0x01, 0x01).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
2937 
2938 	map(0x00, 0x00).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
2939 	map(0x01, 0x01).w("soundboard", FUNC(invaders_audio_device::p1_w));
2940 	map(0x06, 0x06).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
2941 	map(0x07, 0x07).w("soundboard", FUNC(invaders_audio_device::p2_w));
2942 	map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
2943 }
2944 
2945 
2946 static INPUT_PORTS_START( vortex )
PORT_INCLUDE(sicv)2947 	PORT_INCLUDE( sicv )
2948 
2949 	PORT_MODIFY("IN1")
2950 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
2951 
2952 	PORT_MODIFY("IN2")
2953 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:1")
2954 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
2955 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2956 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:2")
2957 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2958 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2959 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:3")
2960 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
2961 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2962 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:4")
2963 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
2964 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2965 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Coinage ) )      PORT_DIPLOCATION("SW1:8")
2966 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
2967 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_1C ) )
2968 INPUT_PORTS_END
2969 
2970 void _8080bw_state::vortex(machine_config &config)
2971 {
2972 	mw8080bw_root(config);
2973 
2974 	/* basic machine hardware */
2975 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::vortex_io_map);
2976 
2977 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw)
2978 
2979 	WATCHDOG_TIMER(config, m_watchdog).set_time(attotime::from_usec(255000000 / (MW8080BW_PIXEL_CLOCK / MW8080BW_HTOTAL / MW8080BW_VTOTAL)));
2980 
2981 	/* video hardware */
2982 	// TODO: replace with modified invaders color renderer code allowing midscanline color writes
2983 	m_screen->set_screen_update(FUNC(_8080bw_state::screen_update_invaders));
2984 
2985 	/* add shifter */
2986 	MB14241(config, m_mb14241);
2987 
2988 	/* audio hardware */
2989 	INVADERS_AUDIO(config, "soundboard").  // the flip screen line is only connected on the cocktail PCB
2990 			flip_screen_out().set([this] (int state) { if (invaders_is_cabinet_cocktail()) m_flip_screen = state ? 1 : 0; });
2991 }
2992 
2993 /* decrypt function for vortex */
init_vortex()2994 void _8080bw_state::init_vortex()
2995 {
2996 	uint8_t *rom = memregion("maincpu")->base();
2997 	int length = memregion("maincpu")->bytes();
2998 	std::vector<uint8_t> buf1(length);
2999 	for (uint32_t x = 0; x < length; x++)
3000 	{
3001 		uint32_t addr = x;
3002 		/*
3003 		A15 A14 A13     A0  A3  A9
3004 		0   0   0       I   I   I
3005 		0   0   1       I   I   I
3006 		0   1   0       N   N   N
3007 		0   1   1       N   I   I
3008 		1   0   0       N   I   I
3009 		1   0   1       N   I   I
3010 		1   1   0       N   I   I
3011 		1   1   1       N   I   I
3012 		*/
3013 		switch (x&0xE000) // inputs are A13 A14 A15
3014 		{
3015 			case 0x0000: case 0x2000: // A0 A3 A9
3016 				addr ^= 0x0209;
3017 				break;
3018 			case 0x4000: // none, but doesn't decode right with none
3019 				addr ^= 0x0209; // hack: this doesn't match schematic but gets code running. Why does this work? Is there something I'm not undertstanding about how the memory_region maps? or was the zilec/zinitone-microsec epoxy brick simply a bad design which is always stuck on the 0x0000 encryption no matter what?
3020 				break;
3021 			case 0x6000: case 0x8000: case 0xa000: case 0xc000: case 0xe000: // A3 and A9
3022 				addr ^= 0x0208;
3023 				break;
3024 		/*
3025 		    case 0x0000: case 0x2000: // A0 A3 A9
3026 		        addr ^= 0x0001;
3027 		        break;
3028 		    case 0x4000:
3029 		        addr ^= 0x0208;
3030 		        break;
3031 		    case 0x6000: case 0x8000: case 0xa000: case 0xc000: case 0xe000:
3032 		        break;*/
3033 		}
3034 		buf1[addr] = rom[x];
3035 	}
3036 
3037 	memcpy(rom, &buf1[0], length);
3038 }
3039 
3040 
3041 
3042 /* unlabeled gun game by Model Racing, verified to be Gun Champ
3043 
3044 BOARD 1:
3045  _________________________________________________________________________________________________________________________________
3046 |                                                          12     13     14     15     16     17     18     19                    |
3047 |                            _________    _______         ___    ___    ___    ___    ___    ___    ___    ___                    |
3048 |___  11                    |74LS241N |  |74LS159|       |AM9|  |AM9|  |AM9|  |AM9|  |AM9|  |AM9|  |AM9|  |AM9|                   |
3049 |  _|                       |_________|  |_______|       |060|  |060|  |060|  |060|  |060|  |060|  |060|  |060|                   |
3050 |  _|      _____________                                 |CPC|  |CPC|  |CPC|  |CPC|  |CPC|  |CPC|  |CPC|  |CPC|                   |
3051 |  _|     |258          |                                |   |  |   |  |   |  |   |  |   |  |   |  |   |  |   |                   |
3052 |  _|     |             |    _________    _______        |   |  |   |  |   |  |   |  |   |  |   |  |   |  |   |                   |
3053 |  _| 10  |         2708|   |74LS241N |  |74LS153|       |   |  |   |  |   |  |   |  |   |  |   |  |   |  |   |                   |
3054 |  _|     |_____________|   |_________|  |_______|       |   |  |   |  |   |  |   |  |   |  |   |  |   |  |   |                   |
3055 |  _|                                                    |___|  |___|  |___|  |___|  |___|  |___|  |___|  |___|                   |
3056 |  _|      _____________                                                                                                          |
3057 |  _|     |257          |    _______      _______                                                                                 |
3058 |  _| 9   |             |   |74LS174|    |74LS153|                                                                              __|
3059 |  _|     |         2708|   |_______|    |_______|        ___    ___    ___    ___    ___    ___    ___    ___                 |
3060 |  _|     |_____________|                                |AM9|  |AM9|  |AM9|  |AM9|  |AM9|  |AM9|  |AM9|  |AM9|                |__
3061 |  _|                                                    |060|  |060|  |060|  |060|  |060|  |060|  |060|  |060|                  =|
3062 |  _|      _____________     _______      _______        |CPC|  |CPC|  |CPC|  |CPC|  |CPC|  |CPC|  |CPC|  |CPC|                  =|
3063 |  _| 8   |256          |   |74LS174|    |74LS153|       |   |  |   |  |   |  |   |  |   |  |   |  |   |  |   |                  =|
3064 |  _|     |             |   |_______|    |_______|       |   |  |   |  |   |  |   |  |   |  |   |  |   |  |   |                  =|
3065 |  _|     |         2708|                                |   |  |   |  |   |  |   |  |   |  |   |  |   |  |   |                  =|
3066 |  _|     |_____________|                                |   |  |   |  |   |  |   |  |   |  |   |  |   |  |   |                  =|
3067 |  _|                        _______      _______        |___|  |___|  |___|  |___|  |___|  |___|  |___|  |___|                  =|
3068 |___| 7    _____________    |74LS166|    |74LS174|                                                                               =|
3069 |         |255          |   |_______|    |_______|                                                                               =|
3070 |         |             |                                                                                                        =|
3071 |         |         2708|    _______      _______                                                                                =|
3072 |     6   |_____________|   |74LS86 |    | 74LS04|                                                                               =|
3073 |                           |_______|    |_______|                                                                               =|
3074 |___       _____________                                                                                                         =|
3075 |  _|     |254          |    _______      _______      _______      _______      _______      _______      _______               =|
3076 |  _|     |             |   |74LS00N|    |SN7404N|    |74LS74 |    |74LS157|    |74LS157|    |74LS157|    |74LS157|     5        =|
3077 |  _|     |         2708|   |_______|    |_______|    |_______|    |_______|    |_______|    |_______|    |_______|              =|
3078 |  _|     |_____________|                                                                                                        =|
3079 |  _|                                     _________    _________    _______      _______      _______      _______               =|
3080 |  _|      _____________                 |74LS244N |  |74LS244N |  |74161N |    |74161N |    |74161N |    |74161N |     4       __|
3081 |  _|     |253          |                |_________|  |_________|  |_______|    |_______|    |_______|    |_______|            |
3082 |  _|     |             |                                                                                                      |__
3083 |  _|     |         2708|                                                                                                         |
3084 |  _|     |_____________|                                           _______      _______      _______      _______                |
3085 |  _|                                                              |74LS04N|    |SN7474N|    |74LS04N|    |74160N |     3         |
3086 |  _|      _____________                  _____________________    |_______|    |_______|    |_______|    |_______|               |
3087 |  _|     |252          |                |         341         |                               .XTAL.                             |
3088 |  _|     |             |    _______     |      INS8080AD      |    _______      _______      _______      _______                |
3089 |  _|     |         2708|   |74LS42 |    |        C8080A       |   |74LS00 |    |74LS55 |    |74LS00 |    |74LS42 |     2         |
3090 |  _|     |_____________|   |_______|    |_____________________|   |_______|    |_______|    |_______|    |_______|               |
3091 |  _|                                                                                                                             |
3092 |  _|      _____________                                            _______      _______      _______      _______                |
3093 |  _|     |251          |                                          |74LS02N|    |74LS20N|    |75365N |    |SN7474N|     1         |
3094 |  _|     |             |                                          |_______|    |_______|    |_______|    |_______|               |
3095 |___|     |         2708|                                                                                                         |
3096 |         |_____________|                                                                                            Model Racing |
3097 |                                                                                                                    CS 235A      |
3098 |               A               B            C            D            E            F            G            H                   |
3099 |_________________________________________________________________________________________________________________________________|
3100 
3101 
3102                                                 XTAL=19,66080MHz
3103 
3104 
3105 BOARD 2:
3106  _________________________________________________________________________________________________________________________________
3107 |                                                                                                                                 |
3108 |                            _______     _______     _______     _______     _________                                            |
3109 |___             11         |74LS175|   |74LS151|   |74LS151|   |74LS153|   |74LS244N |                  Model                    |
3110 |  _|                       |_______|   |_______|   |_______|   |_______|   |_________|                  Racing                   |
3111 |  _|                                                                                                                             |
3112 |  _|                                                                                                    CS 238A                  |
3113 |  _|                        _______     _______     _______     _______                                                          |
3114 |  _|            10         |74LS174|   |74LS151|   |74LS151|   |74LS153|                                                         |
3115 |  _|                       |_______|   |_______|   |_______|   |_______|                                                         |
3116 |  _|                                                                                                                             |
3117 |  _|                                                                                                                             |
3118 |  _|                        _______     _______     _______     _______                ____________                              |
3119 |  _|                       |74LS174|   |74LS151|   |74LS151|   |74LS153|      9       |            |                           __|
3120 |  _|                       |_______|   |_______|   |_______|   |_______|              |            |                          |
3121 |  _|                                                                                  |            |                          |__
3122 |  _|                                                                                  |            |                            =|
3123 |  _|                        _______     _______     _______     _______               |            |                            =|
3124 |  _|                       |74LS174|   |74LS151|   |74LS151|   |74LS153|      8       |            |                            =|
3125 |  _|                       |_______|   |_______|   |_______|   |_______|              |            |                            =|
3126 |  _|                                                                                  |            |                            =|
3127 |  _|                                                                                  |            |                            =|
3128 |  _|                        _______     _______     _______     _______               |   UNKNOWN  |                            =|
3129 |___|                       |74LS273|   |74LS175|   |74LS14N|   |74LS42N|      7       |            |                            =|
3130 |                           |_______|   |_______|   |_______|   |_______|              |            |                            =|
3131 |                                                                                      |            |                            =|
3132 |                                                                                      |            |                            =|
3133 |                                                                                      |            |                            =|
3134 |                                                                                      |            |    _______                 =|
3135 |___                         _______     _______     _______     _________             |            |   |CA8100 |   6            =|
3136 |  _|                       |74LS161|   |74LS74A|   |74LS161|   |74LS374N |    5       |            |   |_______|                =|
3137 |  _|                       |_______|   |_______|   |_______|   |_________|            |            |                            =|
3138 |  _|                                                                                  |            |                            =|
3139 |  _|                                                                                  |____________|                            =|
3140 |  _|                        _______     _______     _______     _________                                                       =|
3141 |  _|                       |74LS161|   |74LS00 |   |74LS161|   |74LS374N |    4                                                 =|
3142 |  _|                       |_______|   |_______|   |_______|   |_________|                                                      =|
3143 |  _|                                                                                                                            =|
3144 |  _|                                                                                                                            =|
3145 |  _|                        _______     _______     ______________                        _______     ____                     __|
3146 |  _|                 3     |74LS14N|   |74LS74A|   |   SN76477N   |                      |74LS107|   |DIP1|                   |
3147 |  _|                       |_______|   |_______|   |    7923XY    |                      |_______|   |____|                   |__
3148 |  _|                                               |   SINGAPORE  |                                                              |
3149 |  _|                                               |______________|                                                              |
3150 |  _|                        _______     _______                                           _______     _______    _______         |
3151 |  _|                 2     |74LS26 |   |74LS00N|                                         |CD4016B|   |74LS221|  |74LS00N|        |
3152 |  _|                       |_______|   |_______|                                         |_______|   |_______|  |_______|        |
3153 |  _|                                                                                                                             |
3154 |  _|                                                                                   NE555P                                    |
3155 |  _|                        _______     _______     _______                               ___         _______    _______         |
3156 |___|                 1     |74LS74A|   |74LS74A|   |74LS74A|                             |   |       |74LS90N|  |74LS14N|        |
3157 |                           |_______|   |_______|   |_______|                             |___|       |_______|  |_______|        |
3158 |                                                                                                                                 |
3159 |                               P           R           S            T             U         V            W          X            |
3160 |_________________________________________________________________________________________________________________________________|
3161 
3162 
3163 Claybuster is on the same hardware, PCB labels CS 235A and CS 238A as well
3164 
3165 */
3166 
TIMER_DEVICE_CALLBACK_MEMBER(_8080bw_state::claybust_gun_callback)3167 TIMER_DEVICE_CALLBACK_MEMBER(_8080bw_state::claybust_gun_callback)
3168 {
3169 	// reset gun latch
3170 	m_claybust_gun_pos = 0;
3171 }
3172 
READ_LINE_MEMBER(_8080bw_state::claybust_gun_on_r)3173 READ_LINE_MEMBER(_8080bw_state::claybust_gun_on_r)
3174 {
3175 	return (m_claybust_gun_pos != 0) ? 1 : 0;
3176 }
3177 
INPUT_CHANGED_MEMBER(_8080bw_state::claybust_gun_trigger)3178 INPUT_CHANGED_MEMBER(_8080bw_state::claybust_gun_trigger)
3179 {
3180 	if (newval)
3181 	{
3182 		/*
3183 		    The game registers a valid shot after the gun trigger is pressed, and IN1 d0 is high.
3184 		    It latches the gun position and then compares it with VRAM contents: 1 byte/8 pixels, 0 means miss.
3185 		    IN1 d0 probably indicates if the latch is ready or not (glitches happen otherwise)
3186 
3187 		    in   $06
3188 		    cpi  $04
3189 		    rc
3190 		    mov  h,a
3191 		    in   $02
3192 		    mov  l,a
3193 		    lxi  d,$1ffe  <-- this is where the +2 comes from
3194 		    dad  d
3195 		    out  $00
3196 		    mov  a,m
3197 		    ana  a
3198 		    rz
3199 		*/
3200 		uint8_t const gunx = m_gunx.read_safe(0x00);
3201 		uint8_t const guny = m_guny.read_safe(0x20);
3202 		m_claybust_gun_pos = ((gunx >> 3) | (guny << 5)) + 2;
3203 		m_claybust_gun_on->adjust(attotime::from_msec(250)); // timing is a guess
3204 	}
3205 }
3206 
claybust_gun_lo_r()3207 uint8_t _8080bw_state::claybust_gun_lo_r()
3208 {
3209 	return m_claybust_gun_pos & 0xff;
3210 }
3211 
claybust_gun_hi_r()3212 uint8_t _8080bw_state::claybust_gun_hi_r()
3213 {
3214 	return m_claybust_gun_pos >> 8;
3215 }
3216 
claybust_io_map(address_map & map)3217 void _8080bw_state::claybust_io_map(address_map &map)
3218 {
3219 	//map(0x00, 0x00).nopw(); // ?
3220 	map(0x01, 0x01).portr("IN1").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
3221 	map(0x02, 0x02).r(FUNC(_8080bw_state::claybust_gun_lo_r)).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
3222 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); //.nopw(); // port3 write looks sound-related
3223 	map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
3224 	//map(0x05, 0x05).nopw(); // ?
3225 	map(0x06, 0x06).r(FUNC(_8080bw_state::claybust_gun_hi_r));
3226 }
3227 
3228 
3229 static INPUT_PORTS_START( claybust )
3230 	PORT_START("IN1")
PORT_READ_LINE_MEMBER(_8080bw_state,claybust_gun_on_r)3231 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(_8080bw_state, claybust_gun_on_r)
3232 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_IMPULSE(2) PORT_CHANGED_MEMBER(DEVICE_SELF, _8080bw_state, claybust_gun_trigger, 0)
3233 	PORT_BIT( 0x04, IP_ACTIVE_LOW,  IPT_COIN1 )
3234 	PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_START1 )
3235 
3236 	// switch is 6-pos, but DNS06:5 and DNS06:6 are not connected
3237 	PORT_DIPNAME( 0x10, 0x10, "Shots" )             PORT_DIPLOCATION("DNS06:1")
3238 	PORT_DIPSETTING(    0x10, "4" )
3239 	PORT_DIPSETTING(    0x00, "2" )
3240 	PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DNS06:2" )
3241 	PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DNS06:3" )
3242 	PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DNS06:4" )
3243 
3244 	PORT_START( "GUNX" )
3245 	PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_MINMAX(0x00, 0xff) PORT_CROSSHAIR(X, 1.0 - (MW8080BW_HPIXCOUNT-256)/256.0, (MW8080BW_HPIXCOUNT-256)/256.0, 0) PORT_SENSITIVITY(56) PORT_KEYDELTA(5)
3246 	PORT_START( "GUNY" )
3247 	PORT_BIT( 0xff, 0xa0, IPT_LIGHTGUN_Y ) PORT_MINMAX(0x20, 0xff) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(64) PORT_KEYDELTA(5)
3248 INPUT_PORTS_END
3249 
3250 static INPUT_PORTS_START( gunchamp )
3251 	PORT_INCLUDE( claybust )
3252 
3253 	PORT_MODIFY("IN1")
3254 
3255 	// switch is 6-pos, but DNS06:5 and DNS06:6 are not connected
3256 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )  PORT_DIPLOCATION("DNS06:1")
3257 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
3258 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3259 	PORT_DIPNAME( 0xe0, 0x40, DEF_STR( Coinage ) )  PORT_DIPLOCATION("DNS06:2,3,4")
3260 	PORT_DIPSETTING(    0xa0, DEF_STR( 4C_1C ) )
3261 	PORT_DIPSETTING(    0xc0, DEF_STR( 3C_1C ) )
3262 	PORT_DIPSETTING(    0xe0, DEF_STR( 2C_1C ) )
3263 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_1C ) )
3264 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) )
3265 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
3266 	PORT_DIPSETTING(    0x60, DEF_STR( 1C_3C ) )
3267 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_4C ) )
3268 INPUT_PORTS_END
3269 
3270 
3271 MACHINE_START_MEMBER(_8080bw_state, claybust)
3272 {
3273 	mw8080bw_state::machine_start();
3274 
3275 	m_claybust_gun_pos = 0;
3276 	save_item(NAME(m_claybust_gun_pos));
3277 }
3278 
claybust(machine_config & config)3279 void _8080bw_state::claybust(machine_config &config)
3280 {
3281 	invaders(config);
3282 
3283 	/* basic machine hardware */
3284 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::claybust_io_map);
3285 
3286 	TIMER(config, "claybust_gun").configure_generic(FUNC(_8080bw_state::claybust_gun_callback));
3287 
3288 	MCFG_MACHINE_START_OVERRIDE(_8080bw_state, claybust)
3289 
3290 	/* sound hardware */
3291 	// TODO: discrete sound
3292 }
3293 
3294 
3295 
3296 /**************************************************************************************
3297 
3298 Taito Galactica / Space Missile
3299 
3300 This game was officially only distributed in Brazil.
3301 Regarding release data, not much information is available online.
3302 
3303 ROM dump came from a collection of old 5 1/4 disks (Apple II) that used to be in the
3304  possession of an arcade operator in the early 80s.
3305 
3306 TODO:
3307 - correct sound (currently same as invaders)
3308   * sound mutes when a few aliens are left?
3309   * port 7 write is used too, looks like it's for music similar to indianbt
3310   Note that bass background hum and sound effects are already basically correct.
3311 
3312 ***************************************************************************************/
3313 
3314 static INPUT_PORTS_START( galactic )
3315 	PORT_START("IN0")
3316 	PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // gets read into memory (0x2012) then never used
3317 
3318 	PORT_START("IN1")
3319 	PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
3320 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
3321 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
3322 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_CUSTOM_MEMBER(mw8080bw_state,invaders_in1_control_r)3323 	PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(mw8080bw_state, invaders_in1_control_r)
3324 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3325 
3326 	PORT_START("IN2")
3327 	PORT_DIPNAME( 0x03, 0x02, DEF_STR( Bonus_Life ) )
3328 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
3329 	PORT_DIPSETTING(    0x01, "4000" )
3330 	PORT_DIPSETTING(    0x02, "5000" )
3331 	PORT_DIPSETTING(    0x03, "7000" )
3332 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
3333 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
3334 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
3335 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) )
3336 	PORT_DIPSETTING(    0x00, "3" )
3337 	PORT_DIPSETTING(    0x08, "6" )
3338 	PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(mw8080bw_state, invaders_in2_control_r)
3339 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3340 
3341 	/* Dummy controls port, P1 */
3342 	INVADERS_CONTROL_PORT_P1
3343 
3344 	/* Dummy controls port, P2 */
3345 	INVADERS_CONTROL_PORT_P2
3346 
3347 	/* Dummy port for cocktail mode */
3348 	INVADERS_CAB_TYPE_PORT
3349 INPUT_PORTS_END
3350 
3351 
3352 
3353 /*****************************************************
3354 
3355   Attack Force, by E.G.S., Italy
3356   Not much information is available for this game.
3357 
3358   20MHz XTAL, 2MHz CPU
3359   video: 15625Hz
3360 
3361   TODO: sound
3362   PORT 02 : 10 while your missile is on-screen
3363   PORT 04 : 01 while game is playing. Sound enable.
3364   PORT 05 : Watchdog?
3365   PORT 06 : 01=Helicopter; 02=Tank; 03=Motorcycle
3366             08=Explosion; 10=Walking
3367 
3368 
3369 *****************************************************/
3370 
3371 void _8080bw_state::attackfc_io_map(address_map &map)
3372 {
3373 	map(0x00, 0x00).portr("IN0");
3374 	map(0x02, 0x02).nopw(); // lamp?
3375 	map(0x03, 0x03).rw(m_mb14241, FUNC(mb14241_device::shift_result_r), FUNC(mb14241_device::shift_data_w));
3376 	map(0x04, 0x04).nopw(); // sound enable?
3377 	map(0x05, 0x05).nopw(); // watchdog?
3378 	map(0x06, 0x06).nopw(); // sound?
3379 	map(0x07, 0x07).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
3380 }
3381 
3382 
3383 static INPUT_PORTS_START( attackfc )
3384 	PORT_START("IN0")
3385 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY
3386 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY
3387 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
3388 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
3389 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
3390 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
3391 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
3392 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
3393 INPUT_PORTS_END
3394 
3395 
attackfc(machine_config & config)3396 void _8080bw_state::attackfc(machine_config &config)
3397 {
3398 	mw8080bw_root(config);
3399 
3400 	/* basic machine hardware */
3401 	m_maincpu->set_addrmap(AS_IO, &_8080bw_state::attackfc_io_map);
3402 
3403 	/* add shifter */
3404 	MB14241(config, m_mb14241);
3405 
3406 	/* sound hardware */
3407 	// TODO: custom discrete
3408 }
3409 
3410 
init_attackfc()3411 void _8080bw_state::init_attackfc()
3412 {
3413 	uint8_t *rom = memregion("maincpu")->base();
3414 	uint32_t len = memregion("maincpu")->bytes();
3415 	std::vector<uint8_t> buffer(len);
3416 
3417 	// swap a8/a9
3418 	for (int i = 0; i < len; i++)
3419 		buffer[bitswap<16>(i, 15,14,13,12,11,10,8,9, 7,6,5,4,3,2,1,0)] = rom[i];
3420 
3421 	memcpy(rom, &buffer[0], len);
3422 }
3423 
3424 
3425 
3426 /*****************************************************
3427 
3428  Space Invaders Multigame kit, Braze Technologies,
3429  produced from 2002(version 1A) to 2006(version 3D).
3430  This is an 8-in-1 hack on a daughterboard, containing:
3431 
3432  - 8080 CPU taken from main PCB
3433  - SST 29EE010 or AM27C010 (or other similar) 128KB EEPROM
3434    (EEPROM functionality not used)
3435  - 93C46P E2PROM for saving highscore/settings
3436  - PALCE22V10H-25PC/4
3437 
3438  The kit is compatible with the original Midway boardset
3439 
3440 ******************************************************/
3441 
3442 static INPUT_PORTS_START( invmulti )
3443 	/* same as Midway Space Invaders, except that SW is unused */
3444 	PORT_START("IN0")
3445 	PORT_DIPUNUSED_DIPLOC( 0x01, 0x00, "SW:8" )
PORT_CUSTOM_MEMBER(mw8080bw_state,invaders_sw6_sw7_r)3446 	PORT_BIT( 0x06, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(mw8080bw_state, invaders_sw6_sw7_r)
3447 	PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_UNUSED )
3448 	PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(mw8080bw_state, invaders_in0_control_r)
3449 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(mw8080bw_state, invaders_sw5_r)
3450 
3451 	PORT_START("IN1")
3452 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, mw8080bw_state, direct_coin_count, 0)
3453 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
3454 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
3455 	PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_UNUSED )
3456 	PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(mw8080bw_state, invaders_in1_control_r)
3457 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
3458 
3459 	PORT_START("IN2")
3460 	PORT_DIPUNUSED_DIPLOC( 0x01, 0x00, "SW:3" )
3461 	PORT_DIPUNUSED_DIPLOC( 0x02, 0x00, "SW:4" )
3462 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
3463 	PORT_DIPUNUSED_DIPLOC( 0x08, 0x00, "SW:2" )
3464 	PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(mw8080bw_state, invaders_in2_control_r)
3465 	PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "SW:1" )
3466 
3467 	/* fake port for cabinet type */
3468 	PORT_START(INVADERS_CAB_TYPE_PORT_TAG)
3469 	PORT_CONFNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
3470 	PORT_CONFSETTING(    0x00, DEF_STR( Upright ) )
3471 	PORT_CONFSETTING(    0x01, DEF_STR( Cocktail ) )
3472 	PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNUSED )
3473 
3474 	/* fake ports for handling the various input ports based on cabinet type */
3475 	PORT_START(INVADERS_SW6_SW7_PORT_TAG)
3476 	PORT_DIPUNUSED_DIPLOC( 0x01, 0x00, "SW:7" )
3477 	PORT_DIPUNUSED_DIPLOC( 0x02, 0x00, "SW:6" )
3478 	PORT_BIT( 0xfc, IP_ACTIVE_HIGH, IPT_UNUSED )
3479 
3480 	PORT_START(INVADERS_SW5_PORT_TAG)
3481 	PORT_DIPUNUSED_DIPLOC( 0x01, 0x00, "SW:5" )
3482 	PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNUSED )
3483 
3484 	PORT_START(INVADERS_P1_CONTROL_PORT_TAG)
3485 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
3486 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1)
3487 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1)
3488 	PORT_BIT( 0xf8, IP_ACTIVE_HIGH, IPT_UNUSED )
3489 
3490 	PORT_START(INVADERS_P2_CONTROL_PORT_TAG)
3491 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
3492 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
3493 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
3494 	PORT_BIT( 0xf8, IP_ACTIVE_HIGH, IPT_UNUSED )
3495 INPUT_PORTS_END
3496 
3497 void _8080bw_state::invmulti_map(address_map &map)
3498 {
3499 	map(0x0000, 0x1fff).mirror(0x8000).bankr("bank1");
3500 	map(0x2000, 0x3fff).mirror(0x8000).ram().share("main_ram");
3501 	map(0x4000, 0x5fff).mirror(0x8000).bankr("bank2");
3502 	map(0x6000, 0x6000).mirror(0x1fff).rw(FUNC(_8080bw_state::invmulti_eeprom_r), FUNC(_8080bw_state::invmulti_eeprom_w));
3503 	map(0xe000, 0xe000).mirror(0x1fff).w(FUNC(_8080bw_state::invmulti_bank_w));
3504 }
3505 
invmulti_eeprom_r()3506 uint8_t _8080bw_state::invmulti_eeprom_r()
3507 {
3508 	return m_eeprom->do_read();
3509 }
3510 
invmulti_eeprom_w(uint8_t data)3511 void _8080bw_state::invmulti_eeprom_w(uint8_t data)
3512 {
3513 	// d0: latch bit
3514 	m_eeprom->di_write(data & 1);
3515 
3516 	// d6: reset
3517 	m_eeprom->cs_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
3518 
3519 	// d4: write latch or select next bit to read
3520 	m_eeprom->clk_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
3521 }
3522 
invmulti_bank_w(uint8_t data)3523 void _8080bw_state::invmulti_bank_w(uint8_t data)
3524 {
3525 	// d0, d4, d6: bank
3526 	int bank = (data & 1) | (data >> 3 & 2) | (data >> 4 & 4);
3527 	membank("bank1")->set_entry(bank);
3528 	membank("bank2")->set_entry(bank);
3529 }
3530 
invmulti(machine_config & config)3531 void _8080bw_state::invmulti(machine_config &config)
3532 {
3533 	invaders(config);
3534 
3535 	/* basic machine hardware */
3536 	m_maincpu->set_addrmap(AS_PROGRAM, &_8080bw_state::invmulti_map);
3537 
3538 	EEPROM_93C46_8BIT(config, m_eeprom);
3539 
3540 	MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state, mw8080bw)
3541 }
3542 
init_invmulti()3543 void _8080bw_state::init_invmulti()
3544 {
3545 	uint8_t *src = memregion("user1")->base();
3546 	int len = memregion("user1")->bytes();
3547 	uint8_t *dest = memregion("maincpu")->base();
3548 
3549 	// decrypt rom
3550 	for (int i = 0; i < len; i++)
3551 		dest[i] = bitswap<8>(src[(i & 0x100ff) | (bitswap<8>(i >> 8 & 0xff, 7,3,4,5,0,6,1,2) << 8)],0,6,5,7,4,3,1,2);
3552 
3553 	membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base(), 0x4000);
3554 	membank("bank1")->set_entry(0);
3555 	membank("bank2")->configure_entries(0, 8, memregion("maincpu")->base() + 0x2000, 0x4000);
3556 	membank("bank2")->set_entry(0);
3557 }
3558 
3559 
3560 
3561 /*******************************************************/
3562 /*                                                     */
3563 /* Cane (Model Racing)                                 */
3564 /*                                                     */
3565 /*******************************************************/
3566 /***********************************************************************************************************************************
3567     This game was never released by Model Racing to the public.
3568 
3569     The assembler source files for this game were extracted from the original floppy disks used by the former Model Racing developer
3570     Adolfo Melilli (adolfo@melilli.com).
3571     Those disks were retrieved by Alessandro Bolgia (xadhoom76@gmail.com) and Lorenzo Fongaro (lorenzo.fongaro@virgilio.it) and
3572     dumped by Piero Andreini (pieroandreini@gmail.com) using KryoFlux hardware and software.
3573     Subsequently Jean Paul Piccato (j2pguard-spam@yahoo.com) mounted the images and compiled the source files, managed to set up a
3574     romset and wrote a MAME driver that aims to reproduce in the most faithful way the work of Melilli at Model Racing in late '70s.
3575 
3576     The game driver is not based on hardware inspection and is solely derived from assumptions I've made looking at the assembler
3577     code and comments written into the source files of the game. Several of those hypotheses came following the directions of
3578     previous yet contemporary Model Racing works (Eg: Claybuster) and were confirmed by Melilli himself.
3579 
3580     Being unreleased this game lacks an official name, thus the name used in the source files was used instead.
3581 
3582 ***********************************************************************************************************************************/
cane_map(address_map & map)3583 void cane_state::cane_map(address_map &map)
3584 {
3585 	map(0x0000, 0x1fff).rom().nopw();
3586 	map(0x2000, 0x3fff).ram().share("main_ram");
3587 }
3588 
cane_io_map(address_map & map)3589 void cane_state::cane_io_map(address_map &map)
3590 {
3591 /*********************************************************************************************************************************
3592     -----------
3593     I/O mapping
3594     -----------
3595     out:
3596     $00 - Unknown - Not yet emulated
3597     $01 - Hardware shift register - Shift count
3598     $02 - Hardware shift register - Shift data
3599     $03 - Audio sub-system - D0->sx0, D1->sx1, D2->sx2, D3->sx3, D4->sx4, D5-D7 unused
3600                                                      sx0 mute/unmute all
3601                                                      sx1,sx2,sx3 routed to 76477 mixer select
3602                                                      sx4 routed to 555 one-shot trigger
3603     $04 - Reset watchdog timer
3604     $05 - Audio TOS
3605 
3606     in:
3607     $01 - CPO / coin input port
3608     $03 - Hardware shift register - Shift result
3609 
3610 =================================================================================================================
3611 ------------
3612 -- OUT 0 --
3613 Source file: CANE1.ED - Referenced only once in code, in the "rifle routine" (ROUTINE FUCILE)
3614 
3615     > ;ROUTINE FUCILE
3616     >   CALL  SPARO
3617     >   OUT 0
3618 
3619 ------------
3620 -- OUT 1 --
3621 Source files: CANE2.ED, MIRINO.ED
3622 
3623     Defined in CANE2.ED
3624 
3625     > PRMTR EQU 1
3626 
3627     and referenced multiple times in CANE2.ED and MIRINO.ED. Eg:
3628 
3629     > ;PER RISPETTARE POS ORIZZONT. UCCELLO
3630     >   LXI D,TPADEL
3631     >   XRA A
3632     >   OUT PRMTR
3633 
3634 ------------
3635 -- OUT 2 --
3636 Source files: CANE1.ED, CANE2.ED, MIRINO.ED
3637 
3638     Defined in CANE2.ED
3639 
3640     > DATO  EQU 2
3641 
3642     and referenced multiple times in CANE1.ED and MIRINO.ED. Eg:
3643 
3644     > ZANZ: XRA A
3645     >   OUT DATO
3646 
3647 ------------
3648 -- OUT 3 --
3649 Source file: CANE2.ED
3650 
3651     The access to port 3 is mediated by the routines SETP3 and RESP3 defined in CANE2.ED
3652     SETP3 -- Port 3 = Port 3 | A
3653 
3654     > SETP3:
3655     > ;SETTA I BITS CONTEN IN REG A NELLA PORTA 3
3656 
3657     RESP3 -- Port 3 = Port 3 & A
3658 
3659     > RESP3:
3660     > ;IL CONTRARIO DI SETP3
3661 
3662     and referenced multiple times in CANE2.ED. Eg:
3663 
3664     > ;SPENGO IL VOLO UCCELLI
3665     > MVI A,0FEH
3666     > CALL  SETP3
3667 
3668 ------------
3669 -- OUT 4 --
3670 Source file: CANE1.ED, CANE2.ED
3671 
3672     Called directly in CANE1.ED
3673 
3674     > INT8:
3675     >   OUT 4
3676     > ;PER LAUTORESET
3677 
3678     Also defined in CANE2.ED
3679 
3680     > RESET EQU 4
3681 
3682     and called multiple times in CANE1.ED and CANE2.ED. Eg:
3683 
3684     > DELAY3: OUT RESET
3685 
3686 ------------
3687 -- OUT 5 --
3688 Source file: CANE2.ED, TOS.ED
3689 
3690 TOS sound
3691 D0-D7 is pushed into a LS273 (Octal D-type Flip-Flop) and its value is used to preload the starting value of
3692 two, cascaded, LS161 (Synchronous 4-Bit Counters).
3693 The counters drive a J-K Flip-Flop generating a square wave signal driven in frequency by the preloaded value.
3694 
3695     > CANONE:
3696     > ;AZZITTO IL TOS:
3697     >   MVI A,255   ; A = 255       ; TIMER spento
3698     >   OUT 5       ; OUT 5
3699 
3700 The musical notes are defined in a library source file TOS.ED and referenced later by the source files, eg. in CANE2.ED:
3701     > CARICA: DB  RE,FA,FA,FA,FA,PAU
3702     >   DB  RE,FA,FA,FA,FA,PAU
3703     >   DB  RE,FA,PAU,RE,FA,PAU
3704     >   DB  RE,FA,FA,FA,FA,PAU
3705     >   DB  FINALE
3706     > TABSTR: NOP
3707     > LULUP:  DB  DO,RE,MI,FA,SOL,LA,SI,DO2
3708     >   DB  FINALE
3709 
3710     > CIPCIP: DB  220,215,210,205,200,FINALE
3711 
3712     The notes are defined in TOS.ED:
3713     > ; SI PARTE DA UNA FREQUENZA DI CLOCK DI 1 MHZ CIRCA,QUESTA FREQUENZA DIVISA)
3714     > ; PER UNA SERIE DI PARAMETRI ATTRAVERSO DEI DIVISORI PROGRAMMABILI FORNISCE
3715     > ; ALL'USCITA DI QUESTI I DODICI SEMITONI DELLA SCALA CROMATICA
3716 
3717     Name - Counter - Aprox. frequency
3718     DO    16    - 1000/(255-16)  = 4.18 KHz
3719     DOD   30    - 1000/(255-30)  = 4.44 KHz
3720     RE    43    - 1000/(255-43)  = 4.72 KHz
3721     RED   55    - 1000/(255-55)  = 5    KHz
3722     MI    66    - 1000/(255-66)  = 5.29 KHz
3723     FA    77    - 1000/(255-77)  = 5.62 KHz
3724     FAD   87    - 1000/(255-87)  = 5.95 KHz
3725     SOL   96    - 1000/(255-96)  = 6.29 KHz
3726     SOLD  105   - 1000/(255-105) = 6.67 KHz
3727     LA    114   - 1000/(255-114) = 7.09 KHz
3728     LAD   122   - 1000/(255-122) = 7.52 KHz
3729     SI    129   - 1000/(255-129) = 7.94 KHz
3730 
3731     DO2   136   - 1000/(255-136) = 8.4  KHz
3732     DOD2  143   - 1000/(255-143) = 8.93 KHz
3733     RE2   149.5 - 1000/(255-150) = 9.52 KHz
3734     RED2  155.5 - 1000/(255-156) = 10.1 KHz
3735     MI2   161   - 1000/(255-161) = 10.64 KHz
3736     FA2   166.5 - 1000/(255-167) = 11.36 KHz
3737     FAD2  171.5 - 1000/(255-172) = 12.05 KHz
3738     SOL2  176   - 1000/(255-176) = 12.66 KHz
3739     SOLD2 180.5   - 1000/(255-181) = 13.51 KHz
3740     LA2   185   - 1000/(255-185) = 14.29 KHz
3741     LAD2  189   - 1000/(255-189) = 15.15 KHz
3742     SI2   192.5 - 1000/(255-193) = 16.13 KHz
3743 
3744     Pause code:
3745     PAU EQU 255
3746 
3747     End of note sequence:
3748     FINALE  EQU 254
3749 
3750 ------------
3751 -- IN 1 --
3752 Source file: CANE2.ED
3753 
3754     Defined in CANE2.ED
3755     > PORTAM  EQU 1 ;E' LA PORTA DI INPUT DI TUTTI I PULSANTI
3756 
3757 ------------
3758 -- IN 3 --
3759 Source file: CANE1.ED, CANE2.ED
3760     Defined in CANE2.ED
3761 
3762     > PRONTO  EQU 3
3763 
3764     and referenced in CANE1.ED
3765 
3766     > OUT LOW DATO
3767     > IN  LOW PRONTO
3768 
3769 **********************************************************************************************************************************/
3770 	map(0x00, 0x00).w(FUNC(cane_state::cane_unknown_port0_w));
3771 
3772 	map(0x01, 0x01).portr("IN1").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
3773 	map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
3774 	map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w("soundboard", FUNC(cane_audio_device::sh_port_1_w));
3775 
3776 	map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
3777 
3778 	map(0x05, 0x05).w("soundboard", FUNC(cane_audio_device::music_w));
3779 }
3780 
3781 static INPUT_PORTS_START( cane )
3782 /* Source file: CANE2.ED, MIRINO.ED
3783     Port definition:
3784     > PORTAM  EQU 1 ;E' LA PORTA DI INPUT DI TUTTI I PULSANTI
3785 
3786     Bit values:
3787     CANE2.ED
3788     > DITO  EQU 80H ;BIT DEL PULSANTE DI SPARO DEL FUCILE
3789 
3790     MIRINO.ED
3791     > UPPMIR  EQU 20H ;BIT PER MIRINO IN ALTO
3792     > LOWMIR  EQU 40H ;BASSO
3793     > RIGMIR  EQU 8H  ;DESTRA
3794     > LEFMIR  EQU 10H ;SINISTRA
3795 
3796     Joystick reading routine:
3797     MIRINO.ED
3798     > ;ORA LEGGO LA PORTA DELLA CLOCHE
3799     >   IN  LOW PORTAM
3800     >   MOV B,A
3801     > ;A QUESTO PUNTO AGGIORNO LE COORDINATE X E Y A SECONDA DELLO STATO DEI BIT
3802     > ;DELLA CLOCHE (ATTIVI BASSI)
3803     >   ANI LOWMIR
3804     >   CZ  MIRLOW
3805     >   MOV A,B
3806     >   ANI UPPMIR
3807     >   CZ  MIRUPP
3808     >   MOV A,B
3809     >   ANI LEFMIR
3810     >   CZ  MIRLEF
3811     >   MOV A,B
3812     >   ANI RIGMIR
3813     >   CZ  MIRRIG
3814 
3815     Shot reading routine:
3816     CANE2.ED
3817     > ;QUI CI VADO SE NESSUNO PREME IL PULSANTE E STO ASPETTANDO UNO SPARO
3818     > ;TEST GRILLETTO
3819     >     IN  PORTAM
3820     >     ANI DITO
3821 
3822     Coin reading routine;
3823     CANE1.ED
3824     > ;ACCREDITA
3825     > SAR9A:  IN  1
3826     >   ANI 4
3827 
3828     Start game: (Verified by debugging $3C2)
3829     CANE1.ED
3830     > IN  1
3831     > ANI 8
3832     > JNZ FONTI
3833 
3834 */
3835 
3836 PORT_START("IN1")
3837 //  PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_NOTUSED )
3838 //  PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_NOTUSED )
3839 	PORT_BIT( 0x04, IP_ACTIVE_LOW,  IPT_COIN1 )
3840 	PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_JOYSTICK_RIGHT ) PORT_4WAY
3841 	PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_JOYSTICK_LEFT ) PORT_4WAY
3842 	PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_JOYSTICK_UP ) PORT_4WAY
3843 	PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_JOYSTICK_DOWN ) PORT_4WAY
3844 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_IMPULSE(2)
3845 INPUT_PORTS_END
3846 
cane(machine_config & config)3847 void cane_state::cane(machine_config &config)
3848 {
3849 	mw8080bw_root(config);
3850 
3851 	// Basic machine hardware
3852 	I8080(config.replace(), m_maincpu, 1996800); /* 19.968MHz / 10 */
3853 	m_maincpu->set_addrmap(AS_PROGRAM, &cane_state::cane_map);
3854 	m_maincpu->set_addrmap(AS_IO, &cane_state::cane_io_map);
3855 	m_maincpu->set_irq_acknowledge_callback(FUNC(cane_state::interrupt_vector));
3856 
3857 	WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 255);
3858 
3859 	// add shifter
3860 	MB14241(config, m_mb14241);
3861 
3862 	// audio hardware
3863 	CANE_AUDIO(config, "soundboard");
3864 }
3865 
cane_unknown_port0_w(u8 data)3866 void cane_state::cane_unknown_port0_w(u8 data)
3867 {
3868 	logerror("Unmapped io memory write to 00 = 00 %u\n", data);
3869 }
3870 
3871 /*******************************************************/
3872 /*                                                     */
3873 /* Model Racing "Orbite"                               */
3874 /*                                                     */
3875 /*******************************************************/
3876 /***********************************************************************************************************************************
3877     This game was never completed and released by Model Racing to the public.
3878     It's in a nearly incomplete form (eg: doesn't have any sound or score routine in the code) and it's barely playable.
3879 
3880     The assembler source files for this game were extracted from the original floppy disks used by the former Model Racing developer
3881     Adolfo Melilli (adolfo@melilli.com).
3882     Those disks were retrieved by Alessandro Bolgia (xadhoom76@gmail.com) and Lorenzo Fongaro (lorenzo.fongaro@virgilio.it) and
3883     dumped by Piero Andreini (pieroandreini@gmail.com) using KryoFlux hardware and software.
3884     Subsequently Jean Paul Piccato (j2pguard-spam@yahoo.com) mounted the images and compiled the source files, managed to set up a
3885     ROMset and wrote a MAME driver that aims to reproduce in the most faithful way the work of Melilli at Model Racing in late '70s.
3886 
3887     The game driver is not based on hardware inspection and is solely derived from assumptions I've made looking at the assembler
3888     code and comments written into the source files of the game. Several of those hypotheses came following the directions of
3889     previous yet contemporary Model Racing works (Eg: Claybuster) and were confirmed by Melilli himself.
3890 
3891     Being unreleased this game lacks an official name, thus the name used in the source files was used instead.
3892 
3893 ***********************************************************************************************************************************/
3894 
orbite_scattered_colorram_r(ATTR_UNUSED address_space & space,ATTR_UNUSED offs_t offset,ATTR_UNUSED u8 mem_mask)3895 u8 orbite_state::orbite_scattered_colorram_r(ATTR_UNUSED address_space &space, ATTR_UNUSED offs_t offset, ATTR_UNUSED u8 mem_mask)
3896 {
3897 	return m_scattered_colorram[(offset & 0x1f) | ((offset & 0x1f80) >> 2)];
3898 }
3899 
3900 
orbite_scattered_colorram_w(ATTR_UNUSED address_space & space,ATTR_UNUSED offs_t offset,ATTR_UNUSED u8 data,ATTR_UNUSED u8 mem_mask)3901 void orbite_state::orbite_scattered_colorram_w(ATTR_UNUSED address_space &space, ATTR_UNUSED offs_t offset, ATTR_UNUSED u8 data, ATTR_UNUSED u8 mem_mask)
3902 {
3903 	m_scattered_colorram[(offset & 0x1f) | ((offset & 0x1f80) >> 2)] = data;
3904 }
3905 
3906 
orbite_map(address_map & map)3907 void orbite_state::orbite_map(address_map &map)
3908 {
3909 //  map(0x0000, 0x1fff).rom();
3910 	map(0x0000, 0x07ff).rom();
3911 	map(0x0800, 0x1fff).rom();
3912 	map(0x2000, 0x3fff).ram().share("main_ram");
3913 	map(0xc000, 0xdfff).rw(FUNC(orbite_state::orbite_scattered_colorram_r), FUNC(orbite_state::orbite_scattered_colorram_w));
3914 }
3915 
3916 
orbite_io_map(address_map & map)3917 void orbite_state::orbite_io_map(address_map &map)
3918 {
3919 	map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
3920 
3921 	// Ports verified from source code
3922 	map(0x08, 0x08).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
3923 	map(0x20, 0x20).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
3924 	map(0x40, 0x40).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
3925 
3926 	map(0x66, 0x66).portr("IN0");
3927 	map(0x76, 0x76).portr("IN1");
3928 	map(0x7A, 0x7A).portr("IN2");
3929 }
3930 
3931 
3932 static INPUT_PORTS_START( orbite )
3933 	PORT_START("IN0")
3934 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
3935 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
3936 
3937 	PORT_START("IN1")
3938 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
3939 
3940 	PORT_START("IN2")   // port 2
3941 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 )
3942 INPUT_PORTS_END
3943 
3944 
machine_start()3945 void orbite_state::machine_start()
3946 {
3947 	_8080bw_state::machine_start();
3948 
3949 	m_scattered_colorram = std::make_unique<uint8_t []>(0x800);
3950 	save_pointer(&m_scattered_colorram[0], "m_scattered_colorram", 0x800);
3951 }
3952 
orbite(machine_config & config)3953 void orbite_state::orbite(machine_config &config)
3954 {
3955 	mw8080bw_root(config);
3956 
3957 	// basic machine hardware
3958 	I8080(config.replace(), m_maincpu, 1996800); /* 19.968MHz / 10 */
3959 	m_maincpu->set_addrmap(AS_PROGRAM, &orbite_state::orbite_map);
3960 	m_maincpu->set_addrmap(AS_IO, &orbite_state::orbite_io_map);
3961 	m_maincpu->set_irq_acknowledge_callback(FUNC(orbite_state::interrupt_vector));
3962 
3963 	WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 255);
3964 
3965 	// add shifter
3966 	MB14241(config, m_mb14241);
3967 
3968 	// video hardware
3969 	m_screen->set_screen_update(FUNC(orbite_state::screen_update_orbite));
3970 
3971 	PALETTE(config, m_palette, palette_device::RGB_3BIT);
3972 }
3973 
3974 /**************************************************************************************************************/
3975 
3976 ROM_START( searthin )
3977 	ROM_REGION( 0x10000, "maincpu", 0 )
3978 	ROM_LOAD( "earthinv.h",   0x0000, 0x0800, CRC(58a750c8) SHA1(90bfa4ea06f38e67fe4286d37d151632439249d2) )
3979 	ROM_LOAD( "earthinv.g",   0x0800, 0x0800, CRC(b91742f1) SHA1(8d9ca92405fbaf1d5a7138d400986616378d061e) )
3980 	ROM_LOAD( "earthinv.f",   0x1000, 0x0800, CRC(4acbbc60) SHA1(b8c1efb4251a1e690ff6936ec956d6f66136a085) )
3981 	ROM_LOAD( "earthinv.e",   0x1800, 0x0800, CRC(df397b12) SHA1(e7e8c080cb6baf342ec637532e05d38129ae73cf) )
3982 ROM_END
3983 
3984 ROM_START( searthina )
3985 	ROM_REGION( 0x10000, "maincpu", 0 )
3986 	ROM_LOAD( "unkh.h1",   0x0000, 0x0400, CRC(272b9bf3) SHA1(dd57d6a88d42024a39640931114107b547b4c520) )
3987 	ROM_LOAD( "unkg.g1",   0x0400, 0x0400, CRC(61bb6101) SHA1(8fc8bbd8ac93d239e0cf0e4881f709860ec2c973) )
3988 	ROM_LOAD( "unkf.f1",   0x0800, 0x0400, CRC(2a8d9cd5) SHA1(7948d79b326e729bcb629607c8797156ff9fb0e8) )
3989 	ROM_LOAD( "unke.e1",   0x0c00, 0x0400, CRC(1938d349) SHA1(3bd2a0deb126cf2e22bc3cb53e9a59c3875be260) )
3990 	ROM_LOAD( "unkd.d1",   0x1000, 0x0400, CRC(9bc2ab88) SHA1(1e9f3b780135827d16ba25978382b097a8110828) )
3991 	ROM_LOAD( "unkc.c1",   0x1400, 0x0400, CRC(d4e2dada) SHA1(e98271212fc89e240fdf97d292edd17dc8dd4191) )
3992 	ROM_LOAD( "unkb.b1",   0x1800, 0x0400, CRC(ab645a9c) SHA1(9c286f8a031a8babfb8e9b594e05e133c338b342) )
3993 	ROM_LOAD( "unka.a1",   0x1c00, 0x0400, CRC(4b65bd7c) SHA1(3931f9f5b0e3339ab484eee14473d3a474935fd9) )
3994 ROM_END
3995 
3996 ROM_START( supinvsion )
3997 	ROM_REGION( 0x10000, "maincpu", 0 )
3998 	ROM_LOAD( "h-am4708.bin", 0x0000, 0x0400, CRC(281570f0) SHA1(9499d9abbe50df67865fe7a258abe58b4dc1f185) )
3999 	ROM_LOAD( "g-am4708.bin", 0x0400, 0x0400, CRC(c0b6cd79) SHA1(c2383b5d40a47ea518ce7f76ea035dbe4bfe0161) )
4000 	ROM_LOAD( "f-am4708.bin", 0x0800, 0x0400, CRC(2a8d9cd5) SHA1(7948d79b326e729bcb629607c8797156ff9fb0e8) )
4001 	ROM_LOAD( "e-am4708.bin", 0x0c00, 0x0400, CRC(03e9ef33) SHA1(8141c089fb300ebbd857bab8dee0875014fe8409) )
4002 	ROM_LOAD( "d-am4708.bin", 0x1000, 0x0400, CRC(b2527c77) SHA1(3a855118d4296ea3afbf553191630f32dfbe8220) )
4003 	ROM_LOAD( "c-am4708.bin", 0x1400, 0x0400, CRC(a883ff01) SHA1(fdc3d1fb4e4d732810ab6746f0df640dc1642e3c) )
4004 	ROM_LOAD( "b-am4708.bin", 0x1800, 0x0400, CRC(46e02fcf) SHA1(5509f1a04bf44fbfebffb5dd5c78f503960b100d) )
4005 	ROM_LOAD( "a-am4708.bin", 0x1c00, 0x0400, CRC(bf4d3267) SHA1(45d789e57543e8efad16cb82bf898ba6b6e1ec3e) )
4006 ROM_END
4007 
4008 ROM_START( searthie )
4009 	ROM_REGION( 0x10000, "maincpu", 0 )
4010 	ROM_LOAD( "searthie.h",   0x0000, 0x0800, CRC(92b08b91) SHA1(4cebb70735e5231717619c7b8e5d3080694338b7) )
4011 	ROM_LOAD( "searthie.g",   0x0800, 0x0800, CRC(23e24bcc) SHA1(a62e8422554f7db34796d4fb1c01e8ddebc7e978) )
4012 	ROM_LOAD( "searthie.f",   0x1000, 0x0800, CRC(8700286a) SHA1(e0a3c099bc60e70bc9a6c0325944454d9d26428f) )
4013 	ROM_LOAD( "searthie.e",   0x1800, 0x0800, CRC(baf949b0) SHA1(bfda97a3ef59fcdf87814afc6918507190c3e315) )
4014 ROM_END
4015 
4016 ROM_START( invadrmr )
4017 	ROM_REGION( 0x10000, "maincpu", 0 )
4018 	ROM_LOAD( "11.1t",       0x0000, 0x0400, CRC(389d44b6) SHA1(5d2581b8bc0da918ce57cf319e06b5b31989c681) )
4019 	ROM_LOAD( "sv02.1p",     0x0400, 0x0400, CRC(0e159534) SHA1(94b2015a9d38ca738705b8d024a79fd2f9855b98) )
4020 	ROM_LOAD( "20.1n",       0x0800, 0x0400, CRC(805b04f0) SHA1(209f42dfde1593699ccf3755e9267d425416d910) )
4021 	ROM_LOAD( "sv04.1j",     0x1400, 0x0400, CRC(1293b826) SHA1(165cd5d08a19eadbe954145b12807f10df9e691a) )
4022 	ROM_LOAD( "13.1h",       0x1800, 0x0400, CRC(76b4a6ea) SHA1(076f8d12ba7ebe66b83a40d9a848075627776554) )
4023 	ROM_LOAD( "sv06.1g",     0x1c00, 0x0400, CRC(2c68e0b4) SHA1(a5e5357120102ad32792bf3ef6362f45b7ba7070) )
4024 ROM_END
4025 
4026 ROM_START( claybust )
4027 	ROM_REGION( 0x10000, "maincpu", 0 )
4028 	ROM_LOAD( "0.a1",         0x0000, 0x0400, CRC(90810582) SHA1(a5c3655bae6f92a3cd0eae3a5a3c25e414d4fdf0) )
4029 	ROM_LOAD( "1.a2",         0x0400, 0x0400, CRC(5ce6fb0e) SHA1(19fa3fbc0dd7e0fa4fffc005ded5a814c3b48f2d) )
4030 	ROM_LOAD( "2.a4",         0x0800, 0x0400, CRC(d4c1d523) SHA1(1a4785095caa8200d7e1d8d53a93c8e298f52c65) )
4031 	ROM_LOAD( "3.a5",         0x0c00, 0x0400, CRC(1ca00825) SHA1(74633a4903a51f1eebdd09679597dbe86db2e001) )
4032 	ROM_LOAD( "4.a6",         0x1000, 0x0400, CRC(09a21120) SHA1(e976d2c173c649e51b032bc5dad54f006864155c) )
4033 	ROM_LOAD( "5.a8",         0x1400, 0x0400, CRC(92cd4da8) SHA1(217e00012a52c479bf0b0cf37ce556387755740d) )
4034 ROM_END
4035 
4036 ROM_START( gunchamp )
4037 	ROM_REGION( 0x10000, "maincpu", 0 )
4038 	ROM_LOAD( "251.a1",       0x0000, 0x0400, CRC(f27a8c1e) SHA1(510debd1ac2c0986f99c217e3078208a39d7837c) )
4039 	ROM_LOAD( "252.a2",       0x0400, 0x0400, CRC(d53b8f91) SHA1(56919f4c88fb3b5c23b5365f0866698bfceb2762) )
4040 	ROM_LOAD( "253.a4",       0x0800, 0x0400, CRC(9ef35c6c) SHA1(95bda3e2cdd50f7ac989c581481bad5f1ef2992f) )
4041 	ROM_LOAD( "254.a5",       0x0c00, 0x0400, CRC(ba5b562d) SHA1(47819d7e5ef3700e700a5f2faa9537bc2199561c) )
4042 	ROM_LOAD( "255.a6",       0x1000, 0x0400, CRC(00ea8293) SHA1(9c921fa4bafc36fc16a3f5f8588887342936d433) )
4043 	ROM_LOAD( "256.a8",       0x1400, 0x0400, CRC(e271150c) SHA1(36d0c0c1335036b4a994e8a38904adcf74161c59) )
4044 	ROM_LOAD( "257.a9",       0x1800, 0x0400, CRC(0da5d9ad) SHA1(c87c6ab248bfd2b75f070343a8f7fcbaed13f4e3) )
4045 	ROM_LOAD( "258.a10",      0x1c00, 0x0400, CRC(471d4052) SHA1(c8ccda2eba44c2ab49f5fc2874fe70c2bdae35d3) )
4046 ROM_END
4047 
4048 ROM_START( spaceatt )
4049 	ROM_REGION( 0x10000, "maincpu", 0 )
4050 	ROM_LOAD( "h",            0x0000, 0x0400, CRC(d0c32d72) SHA1(b3bd950b1ba940fbeb5d95e55113ed8f4c311434) ) // == SV01
4051 	ROM_LOAD( "sv02.bin",     0x0400, 0x0400, CRC(0e159534) SHA1(94b2015a9d38ca738705b8d024a79fd2f9855b98) ) // == SV02
4052 	ROM_LOAD( "f",            0x0800, 0x0400, CRC(483e651e) SHA1(ae795ee3bc53ac3936f6cf2c72cca7a890783513) ) // == SV10
4053 	ROM_LOAD( "c",            0x1400, 0x0400, CRC(1293b826) SHA1(165cd5d08a19eadbe954145b12807f10df9e691a) ) // == SV04
4054 	ROM_LOAD( "b",            0x1800, 0x0400, CRC(6fc782aa) SHA1(0275adbeec455e146f4443b0b836b1171436b79b) )
4055 	ROM_LOAD( "a",            0x1c00, 0x0400, CRC(211ac4a3) SHA1(e08e90a4e77cfa30400626a484c9f37c87ea13f9) )
4056 ROM_END
4057 
4058 /* SPACE ATTACK set is from Video Game GmbH - 1010 A / Top board shows Video-Games - 6302 LICH - 1034
4059    Roms are set up as 1k bproms (82S137) and data is 1 rom top 4 bits, another bottom 4.  This data once assembled matches original spaceatt set */
4060 ROM_START( spaceattbp )
4061 	ROM_REGION( 0x10000, "maincpu", 0 )
4062 	ROMX_LOAD( "06e.bin",      0x0000, 0x0400, CRC(68301d05) SHA1(b0c33a982b42378da828281e74356d58fbea1d86), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI )
4063 	ROMX_LOAD( "12l.bin",      0x0000, 0x0400, CRC(c5a5228f) SHA1(7861b5567d44e972d728551d47aab9b92d71ffc7), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO )
4064 	ROMX_LOAD( "05de.bin",     0x0400, 0x0400, CRC(42032c14) SHA1(753948e7f52b88655c894b48d419b76de07c14f2), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI )
4065 	ROMX_LOAD( "11hl.bin",     0x0400, 0x0400, CRC(d5d3811a) SHA1(7d2d983fa88b0349a90a6331ca3e18583125d21e), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO )
4066 	ROMX_LOAD( "04d.bin",      0x0800, 0x0400, CRC(5f5e540c) SHA1(9092794a878494dbe34c2f05a212ff7b9d00fc55), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI )
4067 	ROMX_LOAD( "10h.bin",      0x0800, 0x0400, CRC(9d5ef6f1) SHA1(ef584678373375a7f13307d7c4597639a5f6010e), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO )
4068 	ROMX_LOAD( "03b.bin",      0x1400, 0x0400, CRC(89e13008) SHA1(1ad82ae0607af27925b42758f8c86a0e89079620), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI )
4069 	ROMX_LOAD( "09g.bin",      0x1400, 0x0400, CRC(c16f5503) SHA1(cf36beac472c5c405342193b7ef434d32b37a4a8), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO )
4070 	ROMX_LOAD( "02ab.bin",     0x1800, 0x0400, CRC(ffa166c2) SHA1(10496fcbb272130cc200dfb1886808559be8d6ea), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI )
4071 	ROMX_LOAD( "08f.bin",      0x1800, 0x0400, CRC(b5fa1a2b) SHA1(7eab1cb9a9f95520a37ee4fb2b246ef072dedcbd), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO )
4072 	ROMX_LOAD( "01a.bin",      0x1c00, 0x0400, CRC(44f8e99c) SHA1(9adecdadb16edaebde02892e30f9f87fb98f4ae1), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI )
4073 	ROMX_LOAD( "07ef.bin",     0x1c00, 0x0400, CRC(9560880d) SHA1(866d6c3714b939814ce48707be53a69ef8355b34), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO )
4074 ROM_END
4075 
4076 /* SPACE ATTACK set is from Video Games GmbH - Board Typ 1010 C / Top board shows Video-Games - 6302 LICH - 1034B
4077    Contains same data as spaceatt but with added 00 fill to make larger roms (b+a=E1, 00fill+c=F1, f+00fill=G1, h+sv02=H1) */
4078 ROM_START( spaceatt2k )
4079 	ROM_REGION( 0x10000, "maincpu", 0 )
4080 	ROM_LOAD( "h1.bin",     0x0000, 0x0800, CRC(734f5ad8) SHA1(ff6200af4c9110d8181249cbcef1a8a40fa40b7f) )
4081 	ROM_LOAD( "g1.bin",     0x0800, 0x0800, CRC(6bfaca4a) SHA1(16f48649b531bdef8c2d1446c429b5f414524350) )
4082 	ROM_LOAD( "f1.bin",     0x1000, 0x0800, CRC(0ccead96) SHA1(537aef03468f63c5b9e11dd61e253f7ae17d9743) )
4083 	ROM_LOAD( "e1.bin",     0x1800, 0x0800, CRC(19971ca7) SHA1(373900e6796aa681f35158e2c4c7665574990906) )
4084 ROM_END
4085 
4086 ROM_START( spaceat2 )
4087 	ROM_REGION( 0x10000, "maincpu", 0 )
4088 	ROM_LOAD( "spaceatt.h",   0x0000, 0x0800, CRC(a31d0756) SHA1(2b76929654ed0b180091348546dac29fc6e5438e) )
4089 	ROM_LOAD( "spaceatt.g",   0x0800, 0x0800, CRC(f41241f7) SHA1(d93cead75922510075433849c4f7099279eafc18) )
4090 	ROM_LOAD( "spaceatt.f",   0x1000, 0x0800, CRC(4c060223) SHA1(957e75a978aa600627399061cae0a6525e92ad11) )
4091 	ROM_LOAD( "spaceatt.e",   0x1800, 0x0800, CRC(7cf6f604) SHA1(469557de15178c4b2d686e5724e1006f7c20d7a4) )
4092 ROM_END
4093 
4094 ROM_START( cosmicin )
4095 	ROM_REGION( 0x10000, "maincpu", 0 )
4096 	ROM_LOAD( "cn7472n-7921.bin",     0x0000, 0x0800, CRC(734f5ad8) SHA1(ff6200af4c9110d8181249cbcef1a8a40fa40b7f) )
4097 	ROM_LOAD( "cn7471n-7918.bin",     0x0800, 0x0800, CRC(6bfaca4a) SHA1(16f48649b531bdef8c2d1446c429b5f414524350) )
4098 	ROM_LOAD( "cn7470n-7918.bin",     0x1000, 0x0800, CRC(0ccead96) SHA1(537aef03468f63c5b9e11dd61e253f7ae17d9743) )
4099 	ROM_LOAD( "cn7469n-7921.bin",     0x1800, 0x0800, CRC(5733048c) SHA1(e9197925396b723f5dda4653238e6e1ea287fdae) )
4100 ROM_END
4101 
4102 ROM_START( galmonst )
4103 	ROM_REGION( 0x10000, "maincpu", 0 )
4104 	ROM_LOAD( "h.5m",            0x0000, 0x0400, CRC(8a0395e9) SHA1(f456aaa0301a1d0f3f9f45cbe39c5ff14909ecd3) )
4105 	ROM_LOAD( "g.5n",            0x0400, 0x0400, CRC(6183ed16) SHA1(8e0bc13cafa237daa5fdeda9a5d6df8f491eabc2) )
4106 	ROM_LOAD( "f.5p",            0x0800, 0x0400, CRC(b6047fdd) SHA1(bc324a9bf7829a2c2bb2bbf965d64272b0d07223) )
4107 	ROM_LOAD( "c.5t",            0x1400, 0x0400, CRC(e88e8c96) SHA1(43108ddb328914c68977c7c49b4c1f71073ca36b) )
4108 	ROM_LOAD( "b.5u",            0x1800, 0x0400, CRC(34678b80) SHA1(17f01facb3272c963a8bca290c4ca36411b8de31) )
4109 	ROM_LOAD( "a.5v",            0x1c00, 0x0400, CRC(05a6806b) SHA1(ea884110d0ea6463801cbc2f87ce9c4921b49e33) )
4110 ROM_END
4111 
4112 ROM_START( spacecom )
4113 	ROM_REGION( 0x10000, "maincpu", 0 )
4114 	ROM_LOAD( "1f.ic67",      0x0000, 0x0400, BAD_DUMP CRC(703f2cbe) SHA1(b183f9fbedd8658399555c0ba21ecab6370e86cb) )
4115 	ROM_LOAD( "2g.ic82",      0x0400, 0x0400, CRC(7269b719) SHA1(6fd5879a6f2a5b1d38c7f00996037418df9491d3) )
4116 	ROM_LOAD( "3f.ic68",      0x0800, 0x0400, CRC(6badac4f) SHA1(7b998d8fb21d143f26d605fe2a7dbbe1cf65210f) )
4117 	ROM_LOAD( "4g.ic83",      0x0c00, 0x0400, CRC(75b59ea7) SHA1(e00eb4a9cf662c84e18fc9efc29cedebf0c5af67) )
4118 	ROM_LOAD( "5f.ic69",      0x1000, 0x0400, CRC(84b61117) SHA1(3e41ff74ad02a7da4bbc22f3b84917eec067bbca) )
4119 	ROM_LOAD( "6g.ic84",      0x1400, 0x0400, CRC(de383625) SHA1(7ec0d7171e771c4b43e026f3f50a88d8ab2236bb) )
4120 	ROM_LOAD( "7f.ic70",      0x1800, 0x0400, CRC(5a23dbc8) SHA1(4d193bb7b38fb7ccd57d2c72463a3fe123dbca58) )
4121 	ROM_LOAD( "8g.ic85",      0x1c00, 0x0400, CRC(a5a467e3) SHA1(ef591059e55d21f14baa8af1f1324a9bc2ada8c4) )
4122 ROM_END
4123 
4124 ROM_START( sinvzen )
4125 	ROM_REGION( 0x10000, "maincpu", 0 )
4126 	ROM_LOAD( "1.bin",        0x0000, 0x0400, CRC(9b0da779) SHA1(a52ccdb252eb69c497aa5eafb35d7f25a311b44e) )
4127 	ROM_LOAD( "2.bin",        0x0400, 0x0400, CRC(9858ccab) SHA1(5ad8e5ef0d95779f0e513634b97bc330c9269ce4) )
4128 	ROM_LOAD( "3.bin",        0x0800, 0x0400, CRC(a1cc38b5) SHA1(45fc9466b548d511b8174f6f3a4783164dd59489) )
4129 	ROM_LOAD( "4.bin",        0x0c00, 0x0400, CRC(1f2db7a8) SHA1(354ad155743f724f2bebcab422f1ef96cb57c683) )
4130 	ROM_LOAD( "5.bin",        0x1000, 0x0400, CRC(9b505fcd) SHA1(7461b7087d31dbe09f7b3078584ccaa2c9122c95) )
4131 	ROM_LOAD( "6.bin",        0x1400, 0x0400, CRC(de0ca0ae) SHA1(a15d1218361839a2a2bf8da3f78d81621251fe1c) )
4132 	ROM_LOAD( "7.bin",        0x1800, 0x0400, CRC(25a296f6) SHA1(37df98384c1513f0e33a350dfcaa99655f91c9ba) )
4133 	ROM_LOAD( "8.bin",        0x1c00, 0x0400, CRC(f4bc4a98) SHA1(bff3806750a3695a136f398c7dbb69a0b7daa88a) )
4134 ROM_END
4135 
4136 ROM_START( sinvemag )
4137 	ROM_REGION( 0x10000, "maincpu", 0 )
4138 	ROM_LOAD( "sv01.36",      0x0000, 0x0400, CRC(86bb8cb6) SHA1(a75648e7f2446c756d86624b15d387d25ce47b66) ) // sldh - == SV0H
4139 	ROM_LOAD( "emag_si.b",    0x0400, 0x0400, CRC(febe6d1a) SHA1(e1c3a24b4fa5862107ada1f9d7249466e8c3f06a) )
4140 	ROM_LOAD( "emag_si.c",    0x0800, 0x0400, CRC(aafb24f7) SHA1(6718cdfae09f77d735be5145b9d202a73d8ed9db) )
4141 	ROM_LOAD( "emag_si.d",    0x1400, 0x0400, CRC(68c4b9da) SHA1(8953dc0427b09b71bd763e65caa7deaca09a15da) )
4142 	ROM_LOAD( "emag_si.e",    0x1800, 0x0400, CRC(c4e80586) SHA1(3d427d5a2eea3c911ec7bd055e06e6747ce5e84d) )
4143 	ROM_LOAD( "emag_si.f",    0x1c00, 0x0400, CRC(077f5ef2) SHA1(625de6839073ac4c904f949efc1b2e0afea5d676) )
4144 ROM_END
4145 
4146 ROM_START( tst_invd )
4147 	ROM_REGION( 0x10000, "maincpu", 0 )
4148 	ROM_LOAD( "test.h",       0x0000, 0x0800, CRC(f86a2eea) SHA1(4a72ff01f3e6d16bbe9bf7f123cd98895bfbed9a) )   /*  The Test ROM */
4149 	ROM_LOAD( "invaders.g",   0x0800, 0x0800, CRC(6bfaca4a) SHA1(16f48649b531bdef8c2d1446c429b5f414524350) )
4150 	ROM_LOAD( "invaders.f",   0x1000, 0x0800, CRC(0ccead96) SHA1(537aef03468f63c5b9e11dd61e253f7ae17d9743) )
4151 	ROM_LOAD( "invaders.e",   0x1800, 0x0800, CRC(14e538b0) SHA1(1d6ca0c99f9df71e2990b610deb9d7da0125e2d8) )
4152 ROM_END
4153 
4154 ROM_START( alieninv )
4155 	ROM_REGION( 0x10000, "maincpu", 0 )
4156 	ROM_LOAD( "alieninv.h",   0x0000, 0x0800, CRC(6ad601c3) SHA1(9fc88698f98ce43992a5044d28d3e19751f82772) )
4157 	ROM_LOAD( "alieninv.g",   0x0800, 0x0800, CRC(c6bb6fb3) SHA1(01a12163309f967dcffce19890b1e0d079021fc2) )
4158 	ROM_LOAD( "alieninv.f",   0x1000, 0x0800, CRC(1d2ff324) SHA1(209766a981fdd3a68e36da3d8122a244c883cae7) )
4159 	ROM_LOAD( "alieninv.e",   0x1800, 0x0800, CRC(2f2e6791) SHA1(08a1f17bcfec598182386f1c43e4fc7b476212de) )
4160 ROM_END
4161 
4162 ROM_START( alieninvp2 )
4163 	ROM_REGION( 0x10000, "maincpu", 0 )
4164 	ROM_LOAD( "1h.bin",       0x0000, 0x0800, CRC(c46df7f4) SHA1(eec34b3d5585bae03c7b80585daaa05ddfcc2164) )
4165 	ROM_LOAD( "1g.bin",       0x0800, 0x0800, CRC(4b1112d6) SHA1(b693667656e5d8f44eeb2ea730f4d4db436da579) )
4166 	ROM_LOAD( "1f.bin",       0x1000, 0x0800, CRC(adca18a5) SHA1(7e02651692113db31fd469868ae5ffdb0f941ecf) )
4167 	ROM_LOAD( "1e.bin",       0x1800, 0x0800, CRC(0449cb52) SHA1(8adcb7cd4492fa6649d9ee81172d8dff56621d64) )
4168 ROM_END
4169 
4170 ROM_START( sitv1 ) // rev 1
4171 	ROM_REGION( 0x10000, "maincpu", 0 )
4172 	ROM_LOAD( "tv01.s1",      0x0000, 0x0800, CRC(9f37b146) SHA1(0b7ef79dbc3de3beeae3bf222d086b60249d429f) )
4173 	ROM_LOAD( "tv02.rp1",     0x0800, 0x0800, CRC(3c759a90) SHA1(d847d592dee592b1d3a575c21d89eaf3f7f6ae1b) )
4174 	ROM_LOAD( "tv03.n1",      0x1000, 0x0800, CRC(0ad3657f) SHA1(a501f316535c50f7d7a20ef8e6dede1526a3f2a8) )
4175 	ROM_LOAD( "tv04.m1",      0x1800, 0x0800, CRC(cd2c67f6) SHA1(60f9d8fe2d36ff589277b607f07c1edc917c755c) )
4176 ROM_END
4177 
4178 ROM_START( sitv ) // rev 2, minor bug fixes of sitv1; delay when writing to sound latch 0x05, and another unknown change
4179 	ROM_REGION( 0x10000, "maincpu", 0 )
4180 	ROM_LOAD( "tv0h.s1",      0x0000, 0x0800, CRC(fef18aad) SHA1(043edeefe6a6d4934bd384eafea19326de1dbeec) )
4181 	ROM_LOAD( "tv02.rp1",     0x0800, 0x0800, CRC(3c759a90) SHA1(d847d592dee592b1d3a575c21d89eaf3f7f6ae1b) )
4182 	ROM_LOAD( "tv03.n1",      0x1000, 0x0800, CRC(0ad3657f) SHA1(a501f316535c50f7d7a20ef8e6dede1526a3f2a8) )
4183 	ROM_LOAD( "tv04.m1",      0x1800, 0x0800, CRC(cd2c67f6) SHA1(60f9d8fe2d36ff589277b607f07c1edc917c755c) )
4184 ROM_END
4185 
4186 ROM_START( sicv ) // likely not the first sicv version...
4187 	ROM_REGION( 0x10000, "maincpu", 0 )
4188 	ROM_LOAD( "cv17.36",     0x0000, 0x0800, CRC(3dfbe9e6) SHA1(26487df7fa0bbd0b9b7f74347c4b9318b0a73b89) )
4189 	ROM_LOAD( "cv18.35",     0x0800, 0x0800, CRC(bc3c82bf) SHA1(33e39fc97bd46699be1f9b9741a86f433efdc911) )
4190 	ROM_LOAD( "cv19.34",     0x1000, 0x0800, CRC(d202b41c) SHA1(868fe938ef768655c894ec95b7d9a81bf21f69ca) )
4191 	ROM_LOAD( "cv20.33",     0x1800, 0x0800, CRC(c74ee7b6) SHA1(4f52db274a2d4433ab67c099ee805e8eb8516c0f) )
4192 
4193 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
4194 	ROM_LOAD( "cv01.1",      0x0000, 0x0400, CRC(037e16ac) SHA1(d585030aaff428330c91ae94d7cd5c96ebdd67dd) )
4195 	ROM_LOAD( "cv02.2",      0x0400, 0x0400, CRC(8263da38) SHA1(2e7c769d129e6f8a1a31eba1e02777bb94ac32b2) )
4196 ROM_END
4197 
4198 ROM_START( sicv1 ) // Original Taito board AA017742B - data match for sicv, just smaller program roms (2708s vs. 2716s)
4199 	ROM_REGION( 0x10000, "maincpu", 0 )
4200 	ROM_LOAD( "cv11.s1",     0x0000, 0x0400, CRC(309d4582) SHA1(e60a1a696111502c115ee00d84cd418c85aba9af) )
4201 	ROM_LOAD( "cv12.r1",     0x0400, 0x0400, CRC(70153e09) SHA1(b75068b7738aa232f75272c539fca04b3d0c2c4a) )
4202 	ROM_LOAD( "cv13.np1",    0x0800, 0x0400, CRC(2ca24fee) SHA1(4b516ebd5a777b001443159233d89fc0a331f756) )
4203 	ROM_FILL(                0x0c00, 0x0400, 0xff ) /* rom socket at M1 is unpopulated */
4204 	ROM_FILL(                0x1000, 0x0400, 0xff ) /* rom socket at L1 is unpopulated */
4205 	ROM_LOAD( "cv14.jk1",    0x1400, 0x0400, CRC(556d9a97) SHA1(fb792e981658d79d1c801b01f06345c237e9e803) )
4206 	ROM_LOAD( "cv15.i1",     0x1800, 0x0400, CRC(ac520cf5) SHA1(47281256083d64a2754b2045c252e74fe5b71153) )
4207 	ROM_LOAD( "cv16.g1",     0x1c00, 0x0400, CRC(285cfb59) SHA1(53eab8ed07dc9ca107e2e91b4556b9424a073530) )
4208 
4209 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
4210 	ROM_LOAD( "cv01.1",      0x0000, 0x0400, CRC(037e16ac) SHA1(d585030aaff428330c91ae94d7cd5c96ebdd67dd) )
4211 	ROM_LOAD( "cv02.2",      0x0400, 0x0400, CRC(8263da38) SHA1(2e7c769d129e6f8a1a31eba1e02777bb94ac32b2) )
4212 ROM_END
4213 
4214 ROM_START( sisv1 ) // rev 1, this version may or may not really exist (may have been test/prototype only?)
4215 	ROM_REGION( 0x10000, "maincpu", 0 )
4216 	ROM_LOAD( "sv01.36",     0x0000, 0x0400, CRC(d0c32d72) SHA1(b3bd950b1ba940fbeb5d95e55113ed8f4c311434) )
4217 	ROM_LOAD( "sv02.35",     0x0400, 0x0400, CRC(0e159534) SHA1(94b2015a9d38ca738705b8d024a79fd2f9855b98) )
4218 	ROM_LOAD( "sv03.34",     0x0800, 0x0400, NO_DUMP )
4219 	ROM_LOAD( "sv04.31",     0x1400, 0x0400, CRC(1293b826) SHA1(165cd5d08a19eadbe954145b12807f10df9e691a) )
4220 	ROM_LOAD( "sv05.42",     0x1800, 0x0400, NO_DUMP )
4221 	ROM_LOAD( "sv06.41",     0x1c00, 0x0400, CRC(2c68e0b4) SHA1(a5e5357120102ad32792bf3ef6362f45b7ba7070) )
4222 ROM_END
4223 
4224 ROM_START( sisv2 ) // rev 2
4225 	ROM_REGION( 0x10000, "maincpu", 0 )
4226 	ROM_LOAD( "sv01.36",     0x0000, 0x0400, CRC(d0c32d72) SHA1(b3bd950b1ba940fbeb5d95e55113ed8f4c311434) )
4227 	ROM_LOAD( "sv02.35",     0x0400, 0x0400, CRC(0e159534) SHA1(94b2015a9d38ca738705b8d024a79fd2f9855b98) )
4228 	ROM_LOAD( "sv10.34",     0x0800, 0x0400, CRC(483e651e) SHA1(ae795ee3bc53ac3936f6cf2c72cca7a890783513) )
4229 	ROM_LOAD( "sv04.31",     0x1400, 0x0400, CRC(1293b826) SHA1(165cd5d08a19eadbe954145b12807f10df9e691a) )
4230 	ROM_LOAD( "sv09.42",     0x1800, 0x0400, CRC(cd80b13f) SHA1(0f4b9537b99fe3cdeebe525efb1869a1be0bc704) )
4231 	ROM_LOAD( "sv06.41",     0x1c00, 0x0400, CRC(2c68e0b4) SHA1(a5e5357120102ad32792bf3ef6362f45b7ba7070) )
4232 ROM_END
4233 
4234 ROM_START( sisv3 ) // rev 3
4235 	ROM_REGION( 0x10000, "maincpu", 0 )
4236 	ROM_LOAD( "sv0h.36",     0x0000, 0x0400, CRC(86bb8cb6) SHA1(a75648e7f2446c756d86624b15d387d25ce47b66) )
4237 	ROM_LOAD( "sv02.35",     0x0400, 0x0400, CRC(0e159534) SHA1(94b2015a9d38ca738705b8d024a79fd2f9855b98) )
4238 	ROM_LOAD( "sv10.34",     0x0800, 0x0400, CRC(483e651e) SHA1(ae795ee3bc53ac3936f6cf2c72cca7a890783513) )
4239 	ROM_LOAD( "sv04.31",     0x1400, 0x0400, CRC(1293b826) SHA1(165cd5d08a19eadbe954145b12807f10df9e691a) )
4240 	ROM_LOAD( "sv09.42",     0x1800, 0x0400, CRC(cd80b13f) SHA1(0f4b9537b99fe3cdeebe525efb1869a1be0bc704) )
4241 	ROM_LOAD( "sv06.41",     0x1c00, 0x0400, CRC(2c68e0b4) SHA1(a5e5357120102ad32792bf3ef6362f45b7ba7070) )
4242 ROM_END
4243 
4244 ROM_START( sisv ) // rev 4, with 5-digit scoring
4245 	ROM_REGION( 0x10000, "maincpu", 0 )
4246 	ROM_LOAD( "sv0h.36",     0x0000, 0x0400, CRC(86bb8cb6) SHA1(a75648e7f2446c756d86624b15d387d25ce47b66) )
4247 	ROM_LOAD( "sv11.35",     0x0400, 0x0400, CRC(febe6d1a) SHA1(e1c3a24b4fa5862107ada1f9d7249466e8c3f06a) )
4248 	ROM_LOAD( "sv12.34",     0x0800, 0x0400, CRC(a08e7202) SHA1(de9f7c851d1b894915e720cfc5d794cdb31752f6) )
4249 	ROM_LOAD( "sv04.31",     0x1400, 0x0400, CRC(1293b826) SHA1(165cd5d08a19eadbe954145b12807f10df9e691a) )
4250 	ROM_LOAD( "sv13.42",     0x1800, 0x0400, CRC(a9011634) SHA1(1f1369ecb02078042cfdf17a497b8dda6dd23793) )
4251 	ROM_LOAD( "sv14.41",     0x1c00, 0x0400, CRC(58730370) SHA1(13dc806bcecd2d6089a85dd710ac2869413f7475) )
4252 ROM_END
4253 
4254 ROM_START( spacerng ) // 2017/05 update: a PCB set (CVN 3-layer) was found with a 'Shinnihon Kikaku' sticker on the top board. Sold by SNK?
4255 	ROM_REGION( 0x10000, "maincpu", 0 )
4256 	ROM_LOAD( "sr1.u36",    0x0000, 0x0800, CRC(b984f52d) SHA1(fdc8b249c0b65339977f91b674bdcb435aa99474) )
4257 	ROM_LOAD( "sr2.u35",    0x0800, 0x0800, CRC(4b4f07e6) SHA1(408dcdae3e80a09584d8ebd6491bc90c4def1fcf) )
4258 	ROM_LOAD( "sr3.u34",    0x1000, 0x0800, CRC(edc28ba9) SHA1(c96668f709d3fa0b97a6b118614e9c139f8f54cc) )
4259 	ROM_LOAD( "sr4.u33",    0x1800, 0x0800, CRC(a95f559f) SHA1(f597c7af96a9d039fd8e54d976d68a065f6bf0c8) )
4260 
4261 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
4262 	ROM_LOAD( "cv01.1",      0x0000, 0x0400, CRC(037e16ac) SHA1(d585030aaff428330c91ae94d7cd5c96ebdd67dd) )
4263 	ROM_LOAD( "cv02.2",      0x0400, 0x0400, CRC(8263da38) SHA1(2e7c769d129e6f8a1a31eba1e02777bb94ac32b2) )
4264 ROM_END
4265 
4266 ROM_START( spceking )
4267 	ROM_REGION( 0x10000, "maincpu", 0 )
4268 	ROM_LOAD( "invaders.h",   0x0000, 0x0800, CRC(734f5ad8) SHA1(ff6200af4c9110d8181249cbcef1a8a40fa40b7f) )
4269 	ROM_LOAD( "spcekng2",     0x0800, 0x0800, CRC(96dcdd42) SHA1(e18d7ffca92e863ef40e235b2be973d8c5879fdb) )
4270 	ROM_LOAD( "spcekng3",     0x1000, 0x0800, CRC(95fc96ad) SHA1(38175edad0e538a1561cec8f7613f15ae274dd14) )
4271 	ROM_LOAD( "spcekng4",     0x1800, 0x0800, CRC(54170ada) SHA1(1e8b3774355ec0d448f04805a917f4c1fe64bceb) )
4272 ROM_END
4273 
4274 ROM_START( spcewars )
4275 	ROM_REGION( 0x10000, "maincpu", 0 )
4276 	ROM_LOAD( "sanritsu.1",   0x0000, 0x0400, CRC(ca331679) SHA1(5c362c3d1c721d293bcddbef4033533769c8f0e0) )
4277 	ROM_LOAD( "sanritsu.2",   0x0400, 0x0400, CRC(48dc791c) SHA1(91a98205c83ca38961e6ba2ac43a41e6e8bc2675) )
4278 	ROM_LOAD( "sanritsu.3",   0x0800, 0x0400, CRC(c34842cb) SHA1(6565ff760909f9339194b7ea45aa8c4e871b9f56) )
4279 	ROM_LOAD( "sanritsu.4",   0x0c00, 0x0400, CRC(a7fdfd0e) SHA1(d8501881ce38d7bca29010debf34a8b996f1f103) )
4280 	ROM_LOAD( "sanritsu.5",   0x1000, 0x0400, CRC(77475431) SHA1(15a04a2655847ee462be65d1065d643c872bb47c) )
4281 	ROM_LOAD( "sanritsu.6",   0x1400, 0x0400, CRC(392ef82c) SHA1(77c98c11ee727ed3ed6e118f13d97aabdb555540) )
4282 	ROM_LOAD( "sanritsu.7",   0x1800, 0x0400, CRC(b3a93df8) SHA1(3afc96814149d4d5343fe06eac09f808384d02c4) )
4283 	ROM_LOAD( "sanritsu.8",   0x1c00, 0x0400, CRC(64fdc3e1) SHA1(c3c278bc236ced7fc85e1a9b018e80be6ab33402) )
4284 	ROM_LOAD( "sanritsu.9",   0x4000, 0x0400, CRC(b2f29601) SHA1(ce855e312f50df7a74682974803cb4f9b2d184f3) )
4285 ROM_END
4286 
4287 ROM_START( spcewarla ) // PCB was in a Space Invarders Part II cabinet
4288 	ROM_REGION( 0x10000, "maincpu", 0 )
4289 	ROM_LOAD( "ps1.bin",   0x0000, 0x0400, CRC(222f6913) SHA1(c0ae8fa8a3b21ebd10cd16952a1c84da1bbd44e3) )
4290 	ROM_LOAD( "ps2.bin",   0x0400, 0x0400, CRC(48dc791c) SHA1(91a98205c83ca38961e6ba2ac43a41e6e8bc2675) )
4291 	ROM_LOAD( "ps3.bin",   0x0800, 0x0400, CRC(58ddc18c) SHA1(3d96ec3e6abd1430754083503af623fb388146f6) )
4292 	ROM_LOAD( "ps4.bin",   0x0c00, 0x0400, CRC(1da5e383) SHA1(8fe84cf290baddad57872092c31abf76950ce00b) )
4293 	ROM_LOAD( "ps5.bin",   0x1000, 0x0400, CRC(3b6d9f23) SHA1(39d5144e1636caca89e3694ba3ab3a1ed241128c) )
4294 	ROM_LOAD( "ps6.bin",   0x1400, 0x0400, CRC(50be9b7a) SHA1(8372929d71d9a1efc0963cd952ab6c1f574eee32) )
4295 	ROM_LOAD( "ps7.bin",   0x1800, 0x0400, CRC(7b8efd7c) SHA1(c2a8d7ddea6f15e483914f032ae6b8aab87b4c14) )
4296 	ROM_LOAD( "ps8.bin",   0x1c00, 0x0400, CRC(64fdc3e1) SHA1(c3c278bc236ced7fc85e1a9b018e80be6ab33402) )
4297 	ROM_LOAD( "ps9.bin",   0x4000, 0x0400, CRC(b2f29601) SHA1(ce855e312f50df7a74682974803cb4f9b2d184f3) )
4298 
4299 	ROM_REGION( 0x0800, "proms", 0 )        /* color map */
4300 	ROM_LOAD( "cv01_1.bin",   0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) ) // the dumper didn't actually dump this yet
4301 	ROM_LOAD( "cv02_2.bin",   0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) // the dumper didn't actually dump this yet
4302 ROM_END
4303 
4304 ROM_START( spacewr3 )
4305 	ROM_REGION( 0x10000, "maincpu", 0 )
4306 	ROM_LOAD( "ic36.bin",     0x0000, 0x0800, CRC(9e30f88a) SHA1(314dfb2920d9b43b977cc19e40ac315e6933c3b9) )
4307 	ROM_LOAD( "ic35.bin",     0x0800, 0x0800, CRC(40c2d55b) SHA1(b641b63046d242ad23911143ed840011fc98eaff) )
4308 	ROM_LOAD( "ic34.bin",     0x1000, 0x0800, CRC(b435f021) SHA1(2d0d813b99d571b53770fa878a1f82ca67827caa) )
4309 	ROM_LOAD( "ic33.bin",     0x1800, 0x0800, CRC(cbdc6fe8) SHA1(63038ea09d320c54e3d1cf7f043c17bba71bf13c) )
4310 	ROM_LOAD( "ic32.bin",     0x4000, 0x0800, CRC(1e5a753c) SHA1(5b7cd7b347203f4edf816f02c366bd3b1b9517c4) )
4311 ROM_END
4312 
4313 ROM_START( swipeout )
4314 	ROM_REGION( 0x10000, "maincpu", 0 )
4315 	ROM_LOAD( "sw1.bin",     0x0000, 0x0800, CRC(576b5897) SHA1(aa749f745560f33b9bbdf0f3a56b947130862bb2) ) // 2516
4316 	ROM_LOAD( "sw2.bin",     0x0800, 0x0800, CRC(40c2d55b) SHA1(b641b63046d242ad23911143ed840011fc98eaff) ) // 2516
4317 	ROM_LOAD( "sw3.bin",     0x1000, 0x0800, CRC(65e8ce64) SHA1(8da1836d710e06cd0ac566ba13049326b6295f0b) ) // 2516
4318 	ROM_LOAD( "sw4.bin",     0x1800, 0x0800, CRC(ddf1fb9c) SHA1(25184fe9126054f6b5907d8a6a9e95e43126f4e3) ) // 2516
4319 	ROM_LOAD( "sw5.bin",     0x4000, 0x0800, CRC(1e5a753c) SHA1(5b7cd7b347203f4edf816f02c366bd3b1b9517c4) ) // 2516
4320 ROM_END
4321 
4322 ROM_START( invaderl )
4323 	ROM_REGION( 0x10000, "maincpu", 0 )
4324 	ROM_LOAD( "c01",          0x0000, 0x0400, CRC(499f253a) SHA1(e13353194277f5d35e92db9b11912b5f392f51b7) )
4325 	ROM_LOAD( "c02",          0x0400, 0x0400, CRC(2d0b2e1f) SHA1(2e0262d9dba607824fcd720d2995531649bdd03d) )
4326 	ROM_LOAD( "c03",          0x0800, 0x0400, CRC(03033dc2) SHA1(87d7838e6a6542c2c5510af593df45137cb397c6) )
4327 	ROM_LOAD( "c07",          0x1000, 0x0400, CRC(5a7bbf1f) SHA1(659f2a8c646660d316d6e70f1d9548375f1da63f) )
4328 	ROM_LOAD( "c04",          0x1400, 0x0400, CRC(455b1fa7) SHA1(668800a0a3ba18d8b54c2aa4dfd4bd01a667d679) )
4329 	ROM_LOAD( "c05",          0x1800, 0x0400, CRC(40cbef75) SHA1(15994ed8bb8ab8faed6198926873851062c9d95f) )
4330 	ROM_LOAD( "sv06.bin",     0x1c00, 0x0400, CRC(2c68e0b4) SHA1(a5e5357120102ad32792bf3ef6362f45b7ba7070) )
4331 ROM_END
4332 
4333 ROM_START( invadernc ) // PCBs etched LOGITEC EK-104-101A and EK-104-102, but bootleg Nas Corp set
4334 	ROM_REGION( 0x10000, "maincpu", 0 )
4335 	ROM_LOAD( "1.ic65",     0x0000, 0x0400, CRC(499f253a) SHA1(e13353194277f5d35e92db9b11912b5f392f51b7) )
4336 	ROM_LOAD( "2.ic66",     0x0400, 0x0400, CRC(4b7f232e) SHA1(222987a29225d625557273547660b1bbcc06bcba) )
4337 	ROM_LOAD( "3.ic67",     0x0800, 0x0400, CRC(5c6bdd47) SHA1(2ead561b6bef68ed973a9536418dc6afe78a84ca) )
4338 	ROM_LOAD( "7.ic57",     0x1000, 0x0400, CRC(5a7bbf1f) SHA1(659f2a8c646660d316d6e70f1d9548375f1da63f) )
4339 	ROM_LOAD( "4.ic70",     0x1400, 0x0400, CRC(455b1fa7) SHA1(668800a0a3ba18d8b54c2aa4dfd4bd01a667d679) )
4340 	ROM_LOAD( "5.ic71",     0x1800, 0x0400, CRC(b9ea71a0) SHA1(fcf99955798043a34dcbabecf3219972f836ac96) )
4341 	ROM_LOAD( "6.ic72",     0x1c00, 0x0400, CRC(2c68e0b4) SHA1(a5e5357120102ad32792bf3ef6362f45b7ba7070) )
4342 
4343 	ROM_REGION( 0x400, "proms", 0 ) // reads weren't consistent. Below are listed the two best reads
4344 	ROM_LOAD( "82s137_1.ic17",     0x0000, 0x0400, CRC(1eb2bc60) SHA1(663f3186af8f64bd0f3f9b113011fc045e44cbc0) )
4345 	//ROM_LOAD( "82s137_2.ic17",     0x0000, 0x0400, CRC(2d653d0f) SHA1(57c212c8b6dbaeffdc1cd54d4b0defbf69c96b66) )
4346 ROM_END
4347 
4348 ROM_START( invader4 )
4349 	ROM_REGION( 0x10000, "maincpu", 0 )
4350 	ROM_LOAD( "spin4.a",      0x0000, 0x0800, CRC(bb386dfe) SHA1(cc00f3e4f6ca4c05bae038a24ccdb213fb951cfc) )
4351 	ROM_LOAD( "spin4.b",      0x0800, 0x0800, CRC(63afa11d) SHA1(d8cedfa010a49237e31f6ebaed35134cb1c3ce68) )
4352 	ROM_LOAD( "spin4.c",      0x1000, 0x0800, CRC(22b0317c) SHA1(8fd037bf5f89a7bcb06042697410566d5180912a) )
4353 	ROM_LOAD( "spin4.d",      0x1800, 0x0800, CRC(9102fd68) SHA1(3523e69314844fcd1863b1e9a9d7fcebe9ee174b) )
4354 ROM_END
4355 
4356 ROM_START( jspecter )
4357 	ROM_REGION( 0x10000, "maincpu", 0 )
4358 	ROM_LOAD( "3305.u6",      0x0000, 0x1000, CRC(ab211a4f) SHA1(d675ed29c3479d7318f8559bd56dd619cf631b6a) )
4359 	ROM_LOAD( "3306.u7",      0x1400, 0x1000, CRC(0df142a7) SHA1(2f1c32d6fe7eafb7808fef0bdeb69b4909427417) )
4360 ROM_END
4361 
4362 ROM_START( jspecter2 )
4363 	ROM_REGION( 0x10000, "maincpu", 0 )
4364 	ROM_LOAD( "unksi.b2",     0x0000, 0x1000, CRC(0584b6c4) SHA1(c130021b878bde2beda4a189f71bbfed61088535) )
4365 	ROM_LOAD( "unksi.a2",     0x1400, 0x1000, CRC(58095955) SHA1(545df3bb9ee4ff09f491d7a4b704e31aa311a8d7) )
4366 ROM_END
4367 
4368 ROM_START( invadpt2 )
4369 	ROM_REGION( 0x10000, "maincpu", 0 )
4370 	ROM_LOAD( "pv01",        0x0000, 0x0800, CRC(7288a511) SHA1(ff617872784c28ed03591aefa9f0519e5651701f) )
4371 	ROM_LOAD( "pv02",        0x0800, 0x0800, CRC(097dd8d5) SHA1(8d68654d54d075c0f0d7f63c87ff4551ce8b7fbf) )
4372 	ROM_LOAD( "pv03",        0x1000, 0x0800, CRC(1766337e) SHA1(ea959bf06c9930d83a07559e191a28641efb07ac) )
4373 	ROM_LOAD( "pv04",        0x1800, 0x0800, CRC(8f0e62e0) SHA1(a967b155f15f8432222fcc78b23121b00c405c5c) )
4374 	ROM_LOAD( "pv05",        0x4000, 0x0800, CRC(19b505e9) SHA1(6a31a37586782ce421a7d2cffd8f958c00b7b415) )
4375 
4376 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
4377 	ROM_LOAD( "pv06.1",   0x0000, 0x0400, CRC(a732810b) SHA1(a5fabffa73ca740909e23b9530936f9274dff356) )
4378 	ROM_LOAD( "pv07.2",   0x0400, 0x0400, CRC(2c5b91cb) SHA1(7fa4d4aef85473b1b4f18734230c164e72be44e7) )
4379 ROM_END
4380 
4381 ROM_START( invadpt2a ) // Comes from original TAITO PCBs. Same as invadpt2 but with half sized ROMs
4382 	ROM_REGION( 0x10000, "maincpu", 0 )
4383 	ROM_LOAD( "uv01.36",     0x0000, 0x0400, CRC(82dbf2c7) SHA1(c767d8b866db4a5059bd79f962a90ce3a962e1e6) )
4384 	ROM_LOAD( "uv02.35",     0x0400, 0x0400, CRC(c867f5b4) SHA1(686318fda6edde297aecaf33f480bfa075fa6eca) )
4385 	ROM_LOAD( "uv03.34",     0x0800, 0x0400, CRC(cb23ccc1) SHA1(86be2d14d52b3404e1a25c573bd25b97729d82a1) )
4386 	ROM_LOAD( "uv04.33",     0x0c00, 0x0400, CRC(9a11abe2) SHA1(f5337183c7f279d75ddeeab24f4f132aa2ee103b) )
4387 	ROM_LOAD( "uv05.32",     0x1000, 0x0400, CRC(787821dd) SHA1(ae6e7297fccf8ae9aced8cb8b58fda1a616fa43b) )
4388 	ROM_LOAD( "uv06.31",     0x1400, 0x0400, CRC(f5e8114f) SHA1(dd5f5b00ee662ac2c7234f1e278441879fc7d394) )
4389 	ROM_LOAD( "uv07.42",     0x1800, 0x0400, CRC(07839f04) SHA1(989f77219b578b1b14a18e0fd6bf9079e3b1e155) )
4390 	ROM_LOAD( "uv08.41",     0x1c00, 0x0400, CRC(a7e1c6ef) SHA1(2b96617a1631d74068f51e911c74fe554a448776) )
4391 	ROM_LOAD( "uv09.40",     0x4000, 0x0400, CRC(261a39ae) SHA1(6554b33d9a44632a5856eb45aaafbdeed8244ce4) )
4392 	ROM_LOAD( "uv10.39",     0x4400, 0x0400, CRC(b2cbcc8b) SHA1(f11961445e81efeeb636bc430e372f79c10efd8c) )
4393 
4394 	ROM_REGION( 0x0800, "proms", 0 )        // color maps player 1/player 2
4395 	ROM_LOAD( "pv06",        0x0000, 0x0400, CRC(a732810b) SHA1(a5fabffa73ca740909e23b9530936f9274dff356) )
4396 	ROM_LOAD( "pv07",        0x0400, 0x0400, CRC(2c5b91cb) SHA1(7fa4d4aef85473b1b4f18734230c164e72be44e7) )
4397 ROM_END
4398 
4399 ROM_START( invadpt2br )
4400 	ROM_REGION( 0x10000, "maincpu", 0 )
4401 	ROM_LOAD( "pv01",        0x0000, 0x0800, CRC(7288a511) SHA1(ff617872784c28ed03591aefa9f0519e5651701f) )
4402 	/* pv01 had weird encryption applied to it, very likely to have been done post-dump. */
4403 //  for (offs = 0x4fc; offs < 0x5fc; offs++)
4404 //      rom[offs] ^= 0x6c;
4405 
4406 	// 0x4fc + 1 * 0x56
4407 //  for (offs = 0x54e; offs < 0x552; offs++)
4408 //      rom[offs] ^= 0x03;
4409 
4410 	// 0x4fc + 2 * 0x56
4411 //  for (offs = 0x5a4; offs < 0x5a8; offs++)
4412 //      rom[offs] ^= 0x01;
4413 
4414 	// 0x4fc + 3 * 0x56
4415 //  for (offs = 0x5fa; offs < 0x5fc; offs++)
4416 //      rom[offs] ^= 0x02;
4417 
4418 	ROM_LOAD( "br_pv02",     0x0800, 0x0800, CRC(420c7c35) SHA1(b51265f4d9e5a8cf9d53099a97cadd25ea0b34ce) )
4419 	ROM_LOAD( "br_pv03",     0x1000, 0x0800, CRC(dffd04b9) SHA1(d51a0f27e90b0a49cf2d57ec82a863dcae9f3ea4) )
4420 	ROM_LOAD( "br_pv04",     0x1800, 0x0800, CRC(b0626aff) SHA1(b7de6c21030732bd0479228f057ca4c87b913b0a) )
4421 	ROM_LOAD( "br_pv05",     0x4000, 0x0800, CRC(84c70bb8) SHA1(75fef3ee6da3e7e01a257629016bc10a23691d62) )
4422 
4423 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 (taken from parent set) */
4424 	ROM_LOAD( "pv06.1",   0x0000, 0x0400, CRC(a732810b) SHA1(a5fabffa73ca740909e23b9530936f9274dff356) )
4425 	ROM_LOAD( "pv07.2",   0x0400, 0x0400, CRC(2c5b91cb) SHA1(7fa4d4aef85473b1b4f18734230c164e72be44e7) )
4426 ROM_END
4427 
4428 ROM_START( invaddlx )
4429 	ROM_REGION( 0x10000, "maincpu", 0 )
4430 	ROM_LOAD( "invdelux.h",   0x0000, 0x0800, CRC(e690818f) SHA1(0860fb03a64d34a9704a1459a5e96929eafd39c7) )
4431 	ROM_LOAD( "invdelux.g",   0x0800, 0x0800, CRC(4268c12d) SHA1(df02419f01cf0874afd1f1aa16276751acd0604a) )
4432 	ROM_LOAD( "invdelux.f",   0x1000, 0x0800, CRC(f4aa1880) SHA1(995d77b67cb4f2f3781c2c8747cb058b7c1b3412) )
4433 	ROM_LOAD( "invdelux.e",   0x1800, 0x0800, CRC(408849c1) SHA1(f717e81017047497a2e9f33f0aafecfec5a2ed7d) )
4434 	ROM_LOAD( "invdelux.d",   0x4000, 0x0800, CRC(e8d5afcd) SHA1(91fde9a9e7c3dd53aac4770bd169721a79b41ed1) )
4435 ROM_END
4436 
4437 /* Runs on a Space Invaders Part II boardset with an epoxy module in place of the 8080 CPU */
4438 ROM_START( vortex )
4439 	ROM_REGION( 0x10000, "maincpu", 0 )
4440 	ROM_LOAD( "1.t36",        0x0000, 0x0800, CRC(577417a6) SHA1(13ed1b989b8ea27cea88be7872921ff9283b5dd6) )
4441 	ROM_LOAD( "2.t35",        0x0800, 0x0800, CRC(126d0049) SHA1(4c189a2364bca8682543d605e84d458bf81ee489) )
4442 	ROM_LOAD( "3.t34",        0x1000, 0x0800, CRC(4a2510b3) SHA1(1c62583b7baf8ee2b6014a6e5dfc7e2d516886d1) )
4443 	ROM_LOAD( "4.t33",        0x1800, 0x0800, CRC(da0274fe) SHA1(b8ab1b16d66700f9ca6a2380a5b6796eaef6e1bd) )
4444 	ROM_LOAD( "5.t32",        0x4000, 0x0800, CRC(a3de49d6) SHA1(e302c6fd2705c6e7f9125b52b2dcb034cc88a90e) )
4445 	ROM_LOAD( "6.t31",        0x4800, 0x0800, CRC(271085d0) SHA1(a772cec8135bc746f6c56aa294eb22c0604e16f9) )
4446 ROM_END
4447 
4448 
4449 ROM_START( moonbase )
4450 	ROM_REGION( 0x10000, "maincpu", 0 )
4451 	ROM_LOAD( "ze3-1.a4",     0x0000, 0x0400, CRC(82dbf2c7) SHA1(c767d8b866db4a5059bd79f962a90ce3a962e1e6) )
4452 	ROM_LOAD( "ze3-2.c4",     0x0400, 0x0400, CRC(c867f5b4) SHA1(686318fda6edde297aecaf33f480bfa075fa6eca) )
4453 	ROM_LOAD( "ze3-3.e4",     0x0800, 0x0400, CRC(cb23ccc1) SHA1(86be2d14d52b3404e1a25c573bd25b97729d82a1) )
4454 	ROM_LOAD( "ze3-4.f4",     0x0c00, 0x0400, CRC(9a11abe2) SHA1(f5337183c7f279d75ddeeab24f4f132aa2ee103b) ) // 'Taito Corp' string hidden in ROM
4455 	ROM_LOAD( "ze3-5.h4",     0x1000, 0x0400, CRC(2b105ed3) SHA1(fa0767089b3aaec25be39e950e7163ecbdc2f39f) )
4456 	ROM_LOAD( "ze3-6.l4",     0x1400, 0x0400, CRC(cb3d6dcb) SHA1(b4923b12a141c76b7d50274f19a3224db26a5669) )
4457 	ROM_LOAD( "ze3-7.a5",     0x1800, 0x0400, CRC(774b52c9) SHA1(ddbbba874ac069fb930b364a890c45675ec389f7) )
4458 	ROM_LOAD( "ze3-8.c5",     0x1c00, 0x0400, CRC(e88ea83b) SHA1(ef05be4783c860369ee5ecd4844837207e99ad9f) )
4459 	ROM_LOAD( "ze3-9.e5",     0x4000, 0x0400, CRC(2dd5adfa) SHA1(62cb98cad1e48de0e0cbf30392d35834b38dadbd) )
4460 	ROM_LOAD( "ze3-10.f5",    0x4400, 0x0400, CRC(1e7c22a4) SHA1(b34173375494ffbf5400dd4014a683a9807f4f08) )
4461 
4462 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
4463 	ROM_LOAD( "cv02.h7",      0x0400, 0x0400, CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) /* NEC B406 or compatible BPROM, like the 82S137 */
4464 	ROM_LOAD( "cv01.g7",      0x0000, 0x0400, CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) ) /* NEC B406 or compatible BPROM, like the 82S137 */
4465 ROM_END
4466 
4467 ROM_START( moonbasea )
4468 	ROM_REGION( 0x10000, "maincpu", 0 )
4469 	ROM_LOAD( "ze3-1.a4",     0x0000, 0x0400, CRC(82dbf2c7) SHA1(c767d8b866db4a5059bd79f962a90ce3a962e1e6) )
4470 	ROM_LOAD( "ze3-2.c4",     0x0400, 0x0400, CRC(c867f5b4) SHA1(686318fda6edde297aecaf33f480bfa075fa6eca) )
4471 	ROM_LOAD( "ze3-3.e4",     0x0800, 0x0400, CRC(cb23ccc1) SHA1(86be2d14d52b3404e1a25c573bd25b97729d82a1) )
4472 	ROM_LOAD( "ze3-4_alt.f4", 0x0c00, 0x0400, CRC(86a00411) SHA1(f518f5098512d6d23a8887605707844c1b32e54f) ) // 'Nichibutsu' string hidden in ROM
4473 	ROM_LOAD( "ze3-5.h4",     0x1000, 0x0400, CRC(2b105ed3) SHA1(fa0767089b3aaec25be39e950e7163ecbdc2f39f) )
4474 	ROM_LOAD( "ze3-6.l4",     0x1400, 0x0400, CRC(cb3d6dcb) SHA1(b4923b12a141c76b7d50274f19a3224db26a5669) )
4475 	ROM_LOAD( "ze3-7.a5",     0x1800, 0x0400, CRC(774b52c9) SHA1(ddbbba874ac069fb930b364a890c45675ec389f7) )
4476 	ROM_LOAD( "ze3-8.c5",     0x1c00, 0x0400, CRC(e88ea83b) SHA1(ef05be4783c860369ee5ecd4844837207e99ad9f) )
4477 	ROM_LOAD( "ze3-9.e5",     0x4000, 0x0400, CRC(2dd5adfa) SHA1(62cb98cad1e48de0e0cbf30392d35834b38dadbd) )
4478 	ROM_LOAD( "ze3-10.f5",    0x4400, 0x0400, CRC(1e7c22a4) SHA1(b34173375494ffbf5400dd4014a683a9807f4f08) )
4479 
4480 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
4481 	ROM_LOAD( "cv02.h7",      0x0400, 0x0400, CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) /* NEC B406 or compatible BPROM, like the 82S137 */
4482 	ROM_LOAD( "cv01.g7",      0x0000, 0x0400, CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) ) /* NEC B406 or compatible BPROM, like the 82S137 */
4483 ROM_END
4484 
4485 ROM_START( invrvnge ) // Space Invaders hw + sound daughterboard
4486 	ROM_REGION( 0x10000, "maincpu", 0 )
4487 	ROM_LOAD( "h.ic36",      0x0000, 0x0800, CRC(0e229b9f) SHA1(617197bf94e9700cbbb2f32487dc47b318d4f2af) )
4488 	ROM_LOAD( "g.ic35",      0x0800, 0x0800, CRC(26b38aa4) SHA1(f281c7ec47ce6ab61bfda2e7aa6a5b8a01f2c11e) )
4489 	ROM_LOAD( "f.ic34",      0x1000, 0x0800, CRC(b3b2749e) SHA1(4f854f981396e2d6a959dd48cff12234074fb69b) )
4490 	ROM_LOAD( "e.ic33",      0x1800, 0x0800, CRC(d8e75102) SHA1(86d5618944265947e3ce60fdf048d8fff4a55744) )
4491 
4492 	ROM_REGION( 0x10000, "audiocpu", 0 ) // encrypted
4493 	ROM_LOAD( "snd.2c",      0xc000, 0x0800, CRC(135f3b16) SHA1(d472a6ca32c4a16cc1faf09f4a4876d75cd4ba24) )
4494 	ROM_LOAD( "snd.1c",      0xe000, 0x0800, CRC(152fc85e) SHA1(df207d6e690287a56e4e330deaa5ee40a179f1fc) )
4495 
4496 	ROM_REGION( 0x0800, "proms", 0 )
4497 	ROM_LOAD( "colour.bin",  0x0000, 0x0800, CRC(7de74988) SHA1(0b8c94b2bfdbc3921d60aad765df8af611f3fdd7) )
4498 ROM_END
4499 
4500 ROM_START( invrvngea ) // Space Invaders hw + sound daughterboard
4501 	ROM_REGION( 0x10000, "maincpu", 0 )
4502 	ROM_LOAD( "h.ic36",      0x0000, 0x0800, CRC(0914b279) SHA1(91e465f56ed0dc8c68e109e33ec9d2bda2616a21) ) // sldh
4503 	ROM_LOAD( "g.ic35",      0x0800, 0x0800, CRC(84d9497c) SHA1(fb1b5fc49365fbf89e5418789e64efd186cdeecf) ) // sldh
4504 	ROM_LOAD( "f.ic34",      0x1000, 0x0800, CRC(78d34d97) SHA1(a50c19df12e75c644b014d74a463094e249db207) ) // sldh
4505 	ROM_LOAD( "e.ic33",      0x1800, 0x0800, CRC(30c71887) SHA1(17c9e905eb327435d52b6d51842f7f42a5e6ab7d) ) // sldh
4506 
4507 	ROM_REGION( 0x10000, "audiocpu", 0 ) // encrypted
4508 	ROM_LOAD( "snd.2c",      0xc000, 0x0800, CRC(135f3b16) SHA1(d472a6ca32c4a16cc1faf09f4a4876d75cd4ba24) )
4509 	ROM_LOAD( "snd.1c",      0xe000, 0x0800, CRC(152fc85e) SHA1(df207d6e690287a56e4e330deaa5ee40a179f1fc) )
4510 
4511 	ROM_REGION( 0x0800, "proms", 0 )
4512 	ROM_LOAD( "colour.bin",  0x0000, 0x0800, CRC(7de74988) SHA1(0b8c94b2bfdbc3921d60aad765df8af611f3fdd7) )
4513 ROM_END
4514 
4515 ROM_START( invrvngeb ) // source unknown
4516 	ROM_REGION( 0x10000, "maincpu", 0 )
4517 	ROM_LOAD( "invrvnge.h",  0x0000, 0x0800, CRC(aca41bbb) SHA1(ca71f792abd6d9a44d15b19d2ccf678e82ccba4f) )
4518 	ROM_LOAD( "invrvnge.g",  0x0800, 0x0800, CRC(cfe89dad) SHA1(218b6a0b636c49c4cdc3667e8b1387ef0e257115) )
4519 	ROM_LOAD( "invrvnge.f",  0x1000, 0x0800, CRC(e350de2c) SHA1(e845565e2f96f9dec3242ec5ab75910a515428c9) )
4520 	ROM_LOAD( "invrvnge.e",  0x1800, 0x0800, CRC(1ec8dfc8) SHA1(fc8fbe1161958f57c9f4ccbcab8a769184b1c562) )
4521 
4522 	ROM_REGION( 0x10000, "audiocpu", 0 ) // encrypted
4523 	ROM_LOAD( "snd.2c",      0xc000, 0x0800, BAD_DUMP CRC(135f3b16) SHA1(d472a6ca32c4a16cc1faf09f4a4876d75cd4ba24) ) // not dumped, taken from parent
4524 	ROM_LOAD( "snd.1c",      0xe000, 0x0800, BAD_DUMP CRC(152fc85e) SHA1(df207d6e690287a56e4e330deaa5ee40a179f1fc) ) // not dumped, taken from parent
4525 
4526 	ROM_REGION( 0x0800, "proms", 0 )
4527 	ROM_LOAD( "colour.bin",  0x0000, 0x0800, BAD_DUMP CRC(7de74988) SHA1(0b8c94b2bfdbc3921d60aad765df8af611f3fdd7) ) // not dumped, taken from parent
4528 ROM_END
4529 
4530 ROM_START( invrvngedu ) // single PCB
4531 	ROM_REGION( 0x10000, "maincpu", 0 )
4532 	ROM_LOAD( "ir.5m",       0x0000, 0x0800, CRC(b145cb71) SHA1(127eb11de7ab9835f06510fb12838c0b728c0d42) )
4533 	ROM_LOAD( "ir.5n",       0x0800, 0x0800, CRC(660e8af3) SHA1(bd52eadf4ee3d717fd5bd7206e1e87d729250c92) )
4534 	ROM_LOAD( "ir.5p",       0x1000, 0x0800, CRC(6ec5a9ad) SHA1(d1e84d2d60c6128c092f2cd20a2b87216df3034b) )
4535 	ROM_LOAD( "ir.5r",       0x1800, 0x0800, CRC(74516811) SHA1(0f595c7b0fae5f3f83fdd1ffed5a408ee77c9438) )
4536 
4537 	ROM_REGION( 0x10000, "audiocpu", 0 ) // encrypted
4538 	ROM_LOAD( "ir.1t",       0xc000, 0x0800, BAD_DUMP CRC(135f3b16) SHA1(d472a6ca32c4a16cc1faf09f4a4876d75cd4ba24) ) // not dumped, taken from parent
4539 	ROM_LOAD( "ir.1u",       0xe000, 0x0800, BAD_DUMP CRC(152fc85e) SHA1(df207d6e690287a56e4e330deaa5ee40a179f1fc) ) // not dumped, taken from parent
4540 
4541 	ROM_REGION( 0x0800, "proms", 0 )
4542 	ROM_LOAD( "ir.3r",       0x0000, 0x0800, CRC(57da51a9) SHA1(a8cb0b45c52eef353b83fe75b61e4990e27eb124) )
4543 ROM_END
4544 
4545 ROM_START( invrvngegw ) // single PCB
4546 	ROM_REGION( 0x10000, "maincpu", 0 )
4547 	ROM_LOAD( "ir.5m",       0x0000, 0x0800, CRC(4fe35d1f) SHA1(469d563f88229cf163f8b21dce9e68f75d3d214e) ) // sldh
4548 	ROM_LOAD( "ir.5n",       0x0800, 0x0800, CRC(92d0442c) SHA1(1d104fbb225ce1a3a72e47af396a641030d990c2) ) // sldh
4549 	ROM_LOAD( "ir.5p",       0x1000, 0x0800, CRC(18d2372d) SHA1(d19b7bd315226ef0a565b296964b221fa4714413) ) // sldh
4550 	ROM_LOAD( "ir.5r",       0x1800, 0x0800, CRC(657ddf27) SHA1(957c6bbdb2133d4697d3302b2358979d1451b6d5) ) // sldh
4551 
4552 	ROM_REGION( 0x10000, "audiocpu", 0 ) // encrypted
4553 	ROM_LOAD( "ir.1t",       0xc000, 0x0800, BAD_DUMP CRC(64e9e81e) SHA1(3390f8bab219cf134b33ae21c473da0873e01929) ) // sldh - bad? yes extremely bad, throw it away
4554 	ROM_LOAD( "ir.1u",       0xe000, 0x0800, CRC(152fc85e) SHA1(df207d6e690287a56e4e330deaa5ee40a179f1fc) )
4555 
4556 	ROM_REGION( 0x0800, "proms", 0 )
4557 	ROM_LOAD( "ir.3r",       0x0000, 0x0800, CRC(6ce639bf) SHA1(73752f5886dcf8729d9853ddc258770f5c724ca3) ) // sldh
4558 ROM_END
4559 
4560 
4561 ROM_START( spclaser )
4562 	ROM_REGION( 0x10000, "maincpu", 0 )
4563 	ROM_LOAD( "la01",         0x0000, 0x0800, CRC(bedc0078) SHA1(a5bb0cbbb8e3f27d03beb8101b2be1111d73689d) )
4564 	ROM_LOAD( "la02",         0x0800, 0x0800, CRC(43bc65c5) SHA1(5f9827c02c2d221e1607359c840374ff7fb92fbf) )
4565 	ROM_LOAD( "la03",         0x1000, 0x0800, CRC(1083e9cc) SHA1(7ad45c6230c9e02fcf51e3414c15e2237eebbd7a) )
4566 	ROM_LOAD( "la04",         0x1800, 0x0800, CRC(5116b234) SHA1(b165b2574cbcb26a5bb43f91df5f8be5f111f486) )
4567 
4568 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
4569 	/* !! not dumped yet, these were taken from sisv/intruder */
4570 	ROM_LOAD( "01.1",         0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) )
4571 	ROM_LOAD( "02.2",         0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) )
4572 ROM_END
4573 
4574 ROM_START( intruder )
4575 	ROM_REGION( 0x10000, "maincpu", 0 )
4576 	ROM_LOAD( "la01-1.36",    0x0000, 0x0800, CRC(bedc0078) SHA1(a5bb0cbbb8e3f27d03beb8101b2be1111d73689d) )
4577 	ROM_LOAD( "la02-1.35",    0x0800, 0x0800, CRC(43bc65c5) SHA1(5f9827c02c2d221e1607359c840374ff7fb92fbf) )
4578 	ROM_LOAD( "la03-1.34",    0x1000, 0x0800, CRC(278ef9cf) SHA1(74a9c1d3500ea28e50d07363a547c381999c84fa) )
4579 	ROM_LOAD( "la04-1.33",    0x1800, 0x0800, CRC(5116b234) SHA1(b165b2574cbcb26a5bb43f91df5f8be5f111f486) )
4580 
4581 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
4582 	ROM_LOAD( "01.1",         0x0000, 0x0400, CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) )
4583 	ROM_LOAD( "02.2",         0x0400, 0x0400, CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) )
4584 ROM_END
4585 
4586 ROM_START( laser )
4587 	ROM_REGION( 0x10000, "maincpu", 0 )
4588 	ROM_LOAD( "1.u36",        0x0000, 0x0800, CRC(b44e2c41) SHA1(00e0b2e088495d6f3bc175e8a53dcb3686ea8484) )
4589 	ROM_LOAD( "2.u35",        0x0800, 0x0800, CRC(9876f331) SHA1(14e36b26d186d9a195492834ef989ed5664d7b65) )
4590 	ROM_LOAD( "3.u34",        0x1000, 0x0800, CRC(ed79000b) SHA1(bfe0407e833ce61aa909f5f1f93c3fc1d46605e9) )
4591 	ROM_LOAD( "4.u33",        0x1800, 0x0800, CRC(10a160a1) SHA1(e2d4208af11b65fc42d2856e57ee3c196f89d360) )
4592 
4593 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
4594 	/* !! not dumped yet, these were taken from intruder */
4595 	ROM_LOAD( "01.1",         0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) )
4596 	ROM_LOAD( "02.2",         0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) )
4597 ROM_END
4598 
4599 ROM_START( spcewarl )
4600 	ROM_REGION( 0x10000, "maincpu", 0 )
4601 	ROM_LOAD( "spcewarl.1",   0x0000, 0x0800, CRC(1fcd34d2) SHA1(674139944e0d842a85bd21b326bd735e15453038) )
4602 	ROM_LOAD( "spcewarl.2",   0x0800, 0x0800, CRC(43bc65c5) SHA1(5f9827c02c2d221e1607359c840374ff7fb92fbf) )
4603 	ROM_LOAD( "spcewarl.3",   0x1000, 0x0800, CRC(7820df3a) SHA1(53315857f4282c68624b338b068d80ee6828af4c) )
4604 	ROM_LOAD( "spcewarl.4",   0x1800, 0x0800, CRC(adc05b8d) SHA1(c4acf75537c0662a4785d5d6a90643239a54bf43) )
4605 
4606 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
4607 	/* !! not dumped yet, these were taken from intruder */
4608 	ROM_LOAD( "01.1",         0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) )
4609 	ROM_LOAD( "02.2",         0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) )
4610 ROM_END
4611 
4612 ROM_START( galxwars )
4613 	ROM_REGION( 0x10000, "maincpu", 0 )
4614 	ROM_LOAD( "univgw3.0",    0x0000, 0x0400, CRC(937796f4) SHA1(88e9494cc532498e51e3a68fa1122c40f22b27dd) )
4615 	ROM_LOAD( "univgw4.1",    0x0400, 0x0400, CRC(4b86e7a6) SHA1(167f9f7491a2de39d08e3e6f7057cc75b36c9340) )
4616 	ROM_LOAD( "univgw5.2",    0x0800, 0x0400, CRC(47a187cd) SHA1(640c896ba25f34d323624005bd676257ad17b687) )
4617 	ROM_LOAD( "univgw6.3",    0x0c00, 0x0400, CRC(7b7d22ff) SHA1(74364cf2b04dcfbbc8e0131fa12c0e574f693d34) )
4618 	ROM_LOAD( "univgw1.4",    0x4000, 0x0400, CRC(0871156e) SHA1(3726d0bfe153a0afc62ea56737662074986064b0) )
4619 	ROM_LOAD( "univgw2.5",    0x4400, 0x0400, CRC(6036d7bf) SHA1(36c2ad2ffdb47bbecc40fd67ced6ab51a5cd2f3e) )
4620 
4621 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
4622 	/* !! not dumped yet, these were taken from sisv/intruder */
4623 	/* Or are colormaps generated by a group of TTLs, similar to dai3wksi? */
4624 	ROM_LOAD( "01.1",         0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) )
4625 	ROM_LOAD( "02.2",         0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) )
4626 ROM_END
4627 
4628 ROM_START( galxwars2 )
4629 	ROM_REGION( 0x10000, "maincpu", 0 )
4630 	ROM_LOAD( "3192.h6",      0x0000, 0x1000, CRC(bde6860b) SHA1(e04b8add32d8f7ea588fae6d6a387f1d40495f1b) )
4631 	ROM_LOAD( "3193.h7",      0x4000, 0x1000, CRC(a17cd507) SHA1(554ab0e8bdc0e7af4a30b0ddc8aa053c8e70255c) ) /* 2nd half unused */
4632 
4633 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
4634 	/* !! not dumped yet, these were taken from sisv/intruder */
4635 	/* Or are colormaps generated by a group of TTLs, similar to dai3wksi? */
4636 	ROM_LOAD( "01.1",         0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) )
4637 	ROM_LOAD( "02.2",         0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) )
4638 ROM_END
4639 
4640 ROM_START( galxwarst )
4641 	ROM_REGION( 0x10000, "maincpu", 0 )
4642 	ROM_LOAD( "galxwars.0",   0x0000, 0x0400, CRC(608bfe7f) SHA1(a41a40a2f0a1bb61a70b9ff8a7da925ab1db7f74) )
4643 	ROM_LOAD( "galxwars.1",   0x0400, 0x0400, CRC(a810b258) SHA1(030a72fffcf240f643bc3006028cb4883cf58bbc) )
4644 	ROM_LOAD( "galxwars.2",   0x0800, 0x0400, CRC(74f31781) SHA1(1de70e8ebbb26eea20ffedb7bd0ca051a67f45e7) )
4645 	ROM_LOAD( "galxwars.3",   0x0c00, 0x0400, CRC(c88f886c) SHA1(4d705fbb97e3868c3f6c90c5e5753ad17cfbf5d6) )
4646 	ROM_LOAD( "galxwars.4",   0x4000, 0x0400, CRC(ae4fe8fb) SHA1(494f44167dc84e4515b769c12f6e24419461dce4) )
4647 	ROM_LOAD( "galxwars.5",   0x4400, 0x0400, CRC(37708a35) SHA1(df6fd521ddfa146ef93e390e47741bdbfda1e7ba) )
4648 
4649 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
4650 	/* !! not dumped yet, these were taken from sisv/intruder */
4651 	/* Or are colormaps generated by a group of TTLs, similar to dai3wksi? */
4652 	ROM_LOAD( "01.1",         0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) )
4653 	ROM_LOAD( "02.2",         0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) )
4654 ROM_END
4655 
4656 ROM_START( galxwarst2 ) // only ROMs were available, no PCB so the PROMs question remains
4657 	ROM_REGION( 0x10000, "maincpu", 0 )
4658 	ROM_LOAD( "gv01.bin",   0x0000, 0x0400, CRC(0eeb9952) SHA1(35b4c2161773a55a9305afd7e9a054f29c12648c) )
4659 	ROM_LOAD( "gv02.bin",   0x0400, 0x0400, CRC(d385c224) SHA1(9537989a467213a0b0d5685293c8c099625b8f55) )
4660 	ROM_LOAD( "gv03.bin",   0x0800, 0x0400, CRC(bb9201af) SHA1(4cbaa018e72ee10e27e0b0f09d98b869638319db) )
4661 	ROM_LOAD( "gv04.bin",   0x0c00, 0x0400, CRC(9a2a5b68) SHA1(7576315f5766ee5de85ac0f142d531a62066772a) )
4662 	ROM_LOAD( "gv05.bin",   0x4000, 0x0400, CRC(43ac3f02) SHA1(522d8fc71f66f9e7303da25826a065b808e8891c) )
4663 	ROM_LOAD( "gv06.bin",   0x4400, 0x0400, CRC(3243af69) SHA1(ccfc97c07f82bf8f3eb0225e5f7832f722631251) )
4664 
4665 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
4666 	/* !! not dumped yet, these were taken from sisv/intruder */
4667 	/* Or are colormaps generated by a group of TTLs, similar to dai3wksi? */
4668 	ROM_LOAD( "01.1",         0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) )
4669 	ROM_LOAD( "02.2",         0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) )
4670 ROM_END
4671 
4672 ROM_START( starw )
4673 	ROM_REGION( 0x10000, "maincpu", 0 )
4674 	ROM_LOAD( "roma",         0x0000, 0x0400, CRC(60e8993c) SHA1(0bdf163ff0f2e6a8771987d4e7ac604c45af21b8) )
4675 	ROM_LOAD( "romb",         0x0400, 0x0400, CRC(b8060773) SHA1(92aa358c338ef8f5773bccada8988d068764e7ea) )
4676 	ROM_LOAD( "romc",         0x0800, 0x0400, CRC(307ce6b8) SHA1(f4b6f54db3d2377ec27d62d33fa1c4946559a092) )
4677 	ROM_LOAD( "romd",         0x1400, 0x0400, CRC(2b0d0a88) SHA1(d079d12b6d4136519ded32415d668a02147b7601) )
4678 	ROM_LOAD( "rome",         0x1800, 0x0400, CRC(5b1c3ad0) SHA1(edb42eec59c3dd7e274e2ea08fed0f3e8fc72e9e) )
4679 	ROM_LOAD( "romf",         0x1c00, 0x0400, CRC(c8e42d3d) SHA1(841b27af251b9c3a964972e864fb7c88acc742e0) )
4680 ROM_END
4681 
4682 ROM_START( starw1 )
4683 	ROM_REGION( 0x10000, "maincpu", 0 )
4684 	ROM_LOAD( "gc.75",        0x0000, 0x0400, CRC(ad10c128) SHA1(c30ff9ff5cf8dedf7654c8e2799a4bb79a30104a) )
4685 	ROM_LOAD( "gc.77",        0x0400, 0x0400, CRC(ab77c474) SHA1(eb07dcad1f265834b93a8108298d4441d6a74b2e) )
4686 	ROM_LOAD( "gc.76",        0x0800, 0x0400, CRC(3638aed4) SHA1(1426c9270f248fd2ab134dc35526599c02051ccd) )
4687 	ROM_LOAD( "gc.80",        0x1400, 0x0400, CRC(4c67957b) SHA1(dda7bbd54e7395dea80d224e487318fb4429f027) )
4688 	ROM_LOAD( "gc.81",        0x1800, 0x0400, CRC(246621ef) SHA1(bddc5253f735fa81266d725a24b1c14faabe0c6a) )
4689 	ROM_LOAD( "gc.82",        0x1c00, 0x0400, CRC(19bd32ee) SHA1(a1718a6a6300c3d7df469793cb0d590c4a966aff) )
4690 
4691 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
4692 	ROM_LOAD( "cv01",         0x0000, 0x0400, CRC(8d892ef3) SHA1(c471dd6197a3c779d89c33fcb425cf3bbdf4fc15) )
4693 	ROM_IGNORE( 0x0400 )
4694 	ROM_LOAD( "cv02",         0x0400, 0x0400, CRC(b44ddde8) SHA1(8793f370526c072e645d8d0b9794b1b64a7701ef) )
4695 	ROM_IGNORE( 0x0400 )
4696 ROM_END
4697 
4698 ROM_START( lrescue )
4699 	ROM_REGION( 0x10000, "maincpu", 0 )
4700 	ROM_LOAD( "lrescue.1",    0x0000, 0x0800, CRC(2bbc4778) SHA1(0167f1ac1501ab0b4c4e555023fa5efed59d56ae) )
4701 	ROM_LOAD( "lrescue.2",    0x0800, 0x0800, CRC(49e79706) SHA1(bed675bb97d59ae0132c007ccead0d096ed2ddf1) )
4702 	ROM_LOAD( "lrescue.3",    0x1000, 0x0800, CRC(1ac969be) SHA1(67ac47f45b9fa5c530bf6047bb7d5776b52847be) )
4703 	ROM_LOAD( "lrescue.4",    0x1800, 0x0800, CRC(782fee3c) SHA1(668295e9d6d99084bb4e7c5491f00fe75f4f5a88) )
4704 	ROM_LOAD( "lrescue.5",    0x4000, 0x0800, CRC(58fde8bc) SHA1(663665ac5254204c1eba18357d9867034eae55eb) )
4705 	ROM_LOAD( "lrescue.6",    0x4800, 0x0800, CRC(bfb0f65d) SHA1(ea0943d764a16094b6e2289f62ef117c9f838c98) )
4706 
4707 	ROM_REGION( 0x0800, "proms", 0 )        /* color map */
4708 	ROM_LOAD( "7643-1.cpu",   0x0000, 0x0400, CRC(8b2e38de) SHA1(d6a757be31c3a179d31bd3709e71f9e38ec632e9) )
4709 	ROM_RELOAD(               0x0400, 0x0400 )
4710 ROM_END
4711 
4712 /*
4713 
4714 MOON LANDER
4715 Manufacturer: Leisure Time Electronics
4716 Year: 1980
4717 Orientation: Vertical B/W
4718 Cabinet: Cocktail
4719 
4720 
4721 Leisure Time Electronics produced three games: Astro Laser, Moon Lander, and Space Ranger.
4722 The games were designed to be interchangeable with a universal cocktail cabinet which they designed and named "Star Series". The cocktail cabinets share the same artwork with all three games and has a different instruction card for each game.
4723 There were no upright or cabaret cabinets. The game ROMs operate on Taito pc boards.
4724 
4725 Moon Lander is a clone/ripoff of Lunar Rescue/Destination Earth. I do not have a manual or schematics for this PCB although
4726 I was able to confirm 5 out of 8 dipswitch settings. I was surprised to hear the sounds effects are almost exactly like when Lunar Rescue used the "invaders" external samples in MAME. The PCB does not play the invader "hit" sound for some reason.
4727 I couldn't find anything obviously wrong in the sound section so it must be that it's just not hooked up as-is from the factory. There does not appear to be a sound-in-attract option.
4728 
4729 
4730 
4731 CPU - Mitsubishi M5L8080AP
4732 X-tal - 19968 mhz (decimal not shown, device stamped very lightly)
4733 Sound - discrete, SN76477N
4734 I/O board - Taito # CV070001A/CVN00001A label= serial# 172190
4735 CPU board - Taito # AA017757   label= CVN00004 serial# 802868
4736 ROM board - Taito # AA017756A  label= CVN00006 serial# 046120
4737 
4738 
4739 
4740 EPROMs - 6x 2716
4741 ML1.u36 checksum 0002CA52
4742 ML2.u35 checksum 0002C999
4743 ML3.u34 checksum 0002BD5C
4744 ML4.u33 checksum 000252EE
4745 ML5.u32 checksum 00029365
4746 ML6.u31 checksum 0002C624
4747 
4748 
4749 
4750 Dipswitch sw1, 8-bank
4751 
4752 
4753 sw1 - # ships
4754 sw2 - # ships
4755 sw3 - not used/unknown
4756 sw4 - not used/unknown
4757 sw5 - ON= enable player2 move right  OFF= disabled
4758 sw6 - ON= enable player2 move left   OFF= disabled
4759 sw7 - ON= enable player2 fire/shoot  OFF= disabled
4760 sw8 - not used/unknown
4761 --------------------------------------------------------------------------
4762         1   2   3   4   5   6   7   8
4763 --------------------------------------------------------------------------
4764 # of player ships
4765 - 3 ships   on  on
4766 - 4 ships   off on
4767 - 5 ships   on  off
4768 - 6 ships   off off
4769 
4770 
4771 Maximum Credits= 9
4772 
4773 Sound Pots:
4774 VR1 = engine sound
4775 VR2 = beam gun
4776 VR3 = ship explosion sound
4777 VR4 = enemy explosion sound (not connected?)
4778 VR5 = bonus ship sound
4779 VR6 = bonus music, footsteps, and docking sound
4780 VR7 = shooting star/ship descending sound
4781 VR8 = pot for adjusting total sounds
4782 
4783 */
4784 
4785 ROM_START( mlander )
4786 	ROM_REGION( 0x10000, "maincpu", 0 )
4787 	ROM_LOAD( "ml1.u36",    0x0000, 0x0800, CRC(69df529a) SHA1(ded3b4a04e28dc341b1fc5a8880bc48aa332bdb5) )
4788 	ROM_LOAD( "ml2.u35",    0x0800, 0x0800, CRC(3b503337) SHA1(d1056c0161d481202996811503e9970d0a0c9147) )
4789 	ROM_LOAD( "ml3.u34",    0x1000, 0x0800, CRC(64e53458) SHA1(629f2434eea4d31dc9db0ee7bc8364cd2bf08a04) )
4790 	ROM_LOAD( "ml4.u33",    0x1800, 0x0800, CRC(c9a74571) SHA1(b1671d19eff17f7adb274013c8f11eb044ebdd28) )
4791 	ROM_LOAD( "ml5.u32",    0x4000, 0x0800, CRC(88291fa2) SHA1(40c4eb51f75b5ca81a62121231d22b9f48d0f628) )
4792 	ROM_LOAD( "ml6.u31",    0x4800, 0x0800, CRC(bfb0f65d) SHA1(ea0943d764a16094b6e2289f62ef117c9f838c98) )
4793 
4794 	ROM_REGION( 0x0800, "proms", 0 )        /* color map */
4795 	ROM_LOAD( "01.bin",     0x0000, 0x0400, CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) )
4796 	ROM_LOAD( "02.bin",     0x0400, 0x0400, CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) )
4797 ROM_END
4798 
4799 ROM_START( grescue )
4800 	ROM_REGION( 0x10000, "maincpu", 0 )
4801 	ROM_LOAD( "lrescue.1",    0x0000, 0x0800, CRC(2bbc4778) SHA1(0167f1ac1501ab0b4c4e555023fa5efed59d56ae) )
4802 	ROM_LOAD( "lrescue.2",    0x0800, 0x0800, CRC(49e79706) SHA1(bed675bb97d59ae0132c007ccead0d096ed2ddf1) )
4803 	ROM_LOAD( "lrescue.3",    0x1000, 0x0800, CRC(1ac969be) SHA1(67ac47f45b9fa5c530bf6047bb7d5776b52847be) )
4804 	ROM_LOAD( "grescue.4",    0x1800, 0x0800, CRC(ca412991) SHA1(41b59f338a6c246e0942a8bfa3c0bca2c24c7f81) )
4805 	ROM_LOAD( "grescue.5",    0x4000, 0x0800, CRC(a419a4d6) SHA1(8eeeb31cbebffc98d2c6c5b964f9b320fcf303d2) )
4806 	ROM_LOAD( "lrescue.6",    0x4800, 0x0800, CRC(bfb0f65d) SHA1(ea0943d764a16094b6e2289f62ef117c9f838c98) )
4807 
4808 	ROM_REGION( 0x0800, "proms", 0 )        /* color map */
4809 	ROM_LOAD( "7643-1.cpu",   0x0000, 0x0400, CRC(8b2e38de) SHA1(d6a757be31c3a179d31bd3709e71f9e38ec632e9) )
4810 	ROM_RELOAD(               0x0400, 0x0400 )
4811 ROM_END
4812 
4813 ROM_START( desterth )
4814 	ROM_REGION( 0x10000, "maincpu", 0 )
4815 	ROM_LOAD( "36_h.bin",     0x0000, 0x0800, CRC(f86923e5) SHA1(d19935ba3d2c1c2553b3779f1a7ad8856c003dae) )
4816 	ROM_LOAD( "35_g.bin",     0x0800, 0x0800, CRC(797f440d) SHA1(a96917f2296ae467acc795eacc1533a2a2d2f401) )
4817 	ROM_LOAD( "34_f.bin",     0x1000, 0x0800, CRC(993d0846) SHA1(6be0c45add41fa7e43cac96c776cd0ebb45ade7b) )
4818 	ROM_LOAD( "33_e.bin",     0x1800, 0x0800, CRC(8d155fc5) SHA1(1ef5e62d71abbf870c027fa1e477121ff124b8da) )
4819 	ROM_LOAD( "32_d.bin",     0x4000, 0x0800, CRC(3f531b6f) SHA1(2fc1f4912688986650e20a050a5d63ddecd4267e) )
4820 	ROM_LOAD( "31_c.bin",     0x4800, 0x0800, CRC(ab019c30) SHA1(33931510a722168bcf7c30d22eac9345576b6631) )
4821 	ROM_LOAD( "42_b.bin",     0x5000, 0x0800, CRC(ed9dbac6) SHA1(4553f445ac32ebb1be490b02df4924f76557e8f9) )
4822 
4823 	ROM_REGION( 0x0800, "proms", 0 )        /* color map */
4824 	ROM_LOAD( "7643-1.cpu",   0x0000, 0x0400, CRC(8b2e38de) SHA1(d6a757be31c3a179d31bd3709e71f9e38ec632e9) )
4825 	ROM_RELOAD(               0x0400, 0x0400 )
4826 ROM_END
4827 
4828 ROM_START( escmars )
4829 	ROM_REGION( 0x10000, "maincpu", 0 )
4830 	ROM_LOAD( "2516_em.m5",        0x0000, 0x0800, CRC(6580f1c3) SHA1(fd44d4bab799e02b2d7c20fe6bf14ade9c8d4f1d) )
4831 	ROM_LOAD( "2716_em.n5",        0x0800, 0x0800, CRC(49e79706) SHA1(bed675bb97d59ae0132c007ccead0d096ed2ddf1) )
4832 	ROM_LOAD( "2516_em.p5",        0x1000, 0x0800, CRC(1ac969be) SHA1(67ac47f45b9fa5c530bf6047bb7d5776b52847be) )
4833 	ROM_LOAD( "2516_em.r5",        0x1800, 0x0800, CRC(c1bd5949) SHA1(df390dd159766ed6489abfae8bb258115dc643e6) )
4834 	ROM_LOAD( "2716_em.s5",        0x4000, 0x0800, CRC(1ec21a31) SHA1(5db61f00d8987662ccae1132fb25da318ac177dd) )
4835 	ROM_LOAD( "2716_em.t5",        0x4800, 0x0800, CRC(bfb0f65d) SHA1(ea0943d764a16094b6e2289f62ef117c9f838c98) )
4836 
4837 	/* No proms, only colour overlay */
4838 ROM_END
4839 
4840 ROM_START( lrescuem )
4841 	ROM_REGION( 0x10000, "maincpu", 0 )
4842 	ROM_LOAD( "48.ic36",    0x0000, 0x0400, CRC(bad5ba48) SHA1(6d8a2df172e058d16f196ad7f29430e9fd1fdaa8) )
4843 	ROM_LOAD( "49.ic35",    0x0400, 0x0400, CRC(a6dc23d6) SHA1(76b9105935bf239ae90b47900f64dac3032ceecd) )
4844 	ROM_LOAD( "50.ic34",    0x0800, 0x0400, CRC(90179fee) SHA1(35059f7399229b8d9588d34f79073fa4d3301614) )
4845 	ROM_LOAD( "51.ic33",    0x0c00, 0x0400, CRC(1d197d87) SHA1(21e049f9c2a0fe1c0403d9d1a2dc695c4ee764f9) )
4846 	ROM_LOAD( "52.ic32",    0x1000, 0x0400, CRC(4326d338) SHA1(ac31645bdf292f28dfcfcb9d5e158e5df7a6f95d) )
4847 	ROM_LOAD( "53.ic31",    0x1400, 0x0400, CRC(3b272372) SHA1(39b807c810d093d7a34b102eec16f3d9baeb21f1) )
4848 	ROM_LOAD( "54.ic42",    0x1800, 0x0400, CRC(a877c5b6) SHA1(862871c3dd18221d5713fe1fd2dc4f5b7cb913c1) )
4849 	ROM_LOAD( "55.ic41",    0x1c00, 0x0400, CRC(c9a93407) SHA1(604bcace8e3bec07db6ca8a8918b306b77643e14) )
4850 	ROM_LOAD( "56.ic40",    0x4000, 0x0400, CRC(3398798f) SHA1(d7dd9e65a1048df8edd217f4206b19cd01f143f4) )
4851 	ROM_LOAD( "57.ic39",    0x4400, 0x0400, CRC(37c5bfc6) SHA1(b0aec85e6f979cdf7a3a985830c8530302804837) )
4852 	ROM_LOAD( "58.ic38",    0x4800, 0x0400, CRC(1b7a5644) SHA1(d26530ea11ada86f7c99b11d6faf4416a8f5a9eb) )
4853 	ROM_LOAD( "59.ic37",    0x4c00, 0x0400, CRC(c342b907) SHA1(327da029420c4eedabc2a0534199a008a3f341b8) )
4854 
4855 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 - these don't really fit this game, but were on the PCB */
4856 	ROM_LOAD( "cv01-7643.2c",   0x0000, 0x0400, CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) )
4857 	ROM_LOAD( "cv02-7643.1c",   0x0400, 0x0400, CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) )
4858 ROM_END
4859 
4860 ROM_START( lrescuem2 )
4861 	ROM_REGION( 0x10000, "maincpu", 0 )
4862 	ROM_LOAD( "0.bin",    0x0000, 0x0800, CRC(27d37ad6) SHA1(18b2de9f9c022a31187b2a4049573e7f204e84c9) )
4863 	ROM_LOAD( "1.bin",    0x0800, 0x0800, CRC(d8ed56f0) SHA1(d3f02d43f59d8ee83b4ed94f58f1bd25dca1a8de) )
4864 	ROM_LOAD( "2.bin",    0x1000, 0x0800, CRC(3aed9788) SHA1(1be3c2f9f3a0f7d187a6faa2b020979027fa60e9) )
4865 	ROM_LOAD( "3.bin",    0x1800, 0x0800, CRC(fa121b92) SHA1(2753b8b93d69d49e85075765630958038aa21ce3) )
4866 	ROM_LOAD( "4.bin",    0x4000, 0x0800, CRC(535b4a78) SHA1(dd5613f47a3c7e15701c5d1dbac4a2228b9c28f2) )
4867 	ROM_LOAD( "5.bin",    0x4800, 0x0800, CRC(0613a977) SHA1(47b85efdc436b39f8fb12355f9b87cb791f2d3b1) )
4868 	ROM_LOAD( "6.bin",    0x5000, 0x0800, CRC(8fe51cc0) SHA1(1a98044ab95a1559362813a3961c1436267dcf63) )
4869 
4870 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 - these don't really fit this game, but were on the PCB */
4871 	ROM_LOAD( "cv01-7643.2c",   0x0000, 0x0400, CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) )
4872 	ROM_LOAD( "cv02-7643.1c",   0x0400, 0x0400, CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) )
4873 ROM_END
4874 
4875 
4876 /*
4877 Cosmo
4878 TDS & Mints, 1979/80?
4879 
4880 Notes:
4881 This game runs on modified "original" Taito (3 board) Space Invaders hardware.
4882 There are approx. 70 (or more) wires tied to various parts of the boards, plus
4883 there is an extra board on top of the sound board with a *HUGE* amount of wires
4884 running to it from the main boards. There are 2 EPROMs on the top board that appear
4885 to be for use with colour generation or extra sounds(?) The PROMs on the middle board
4886 have been removed and in their place are a pile of wires that join to the top board.
4887 The remainder of the hardware is just standard Taito Space Invaders..... including
4888 a SN76477 and the discrete components for sound generation.
4889 Note that the sounds and gameplay of Cosmo are VERY different from Space Invaders.
4890 */
4891 
4892 ROM_START( cosmo )
4893 	ROM_REGION( 0x10000, "maincpu", 0 )
4894 	ROM_LOAD( "1.36",         0x0000, 0x0800, CRC(445c9a98) SHA1(89bce80a061e9c12544231f970d9dec801eb1b94) )
4895 	ROM_LOAD( "2.35",         0x0800, 0x0800, CRC(df3eb731) SHA1(fb90c1d0f2518195dd49062c9f0fd890536d89f4) )
4896 	ROM_LOAD( "3.34",         0x1000, 0x0800, CRC(772c813f) SHA1(a1c0d857c660fb0b838dd0466af7bf5d73bcd55d) )
4897 	ROM_LOAD( "4.33",         0x1800, 0x0800, CRC(279f66e6) SHA1(8ce71c08cca0bdde2f2e0ef21622731c4610c030) )
4898 	ROM_LOAD( "5.32",         0x4000, 0x0800, CRC(cefb18df) SHA1(bb500cf3f7d1a54045a165d3613a92ab3f11d3e8) )
4899 	ROM_LOAD( "6.31",         0x4800, 0x0800, CRC(b037f6c4) SHA1(b9a42948052b8cda8d2e4575e59909589f4e7a8d) )
4900 	ROM_LOAD( "7.42",         0x5000, 0x0800, CRC(c3831ea2) SHA1(8c67ef0312656ef0eeff34b8463376c736bd8ea1) )
4901 
4902 	ROM_REGION( 0x1000, "proms", 0 )        /* color map */
4903 	ROM_LOAD( "n-1.7d",       0x0800, 0x0800, CRC(bd8576f1) SHA1(aa5fe0a4d024f21a3bca7a6b3f5022779af6f3f4) )
4904 	ROM_LOAD( "n-2.6e",       0x0000, 0x0800, CRC(48f1ade5) SHA1(a1b45f82f3649cde8ae6a2ef494a3a6cdb5e65d0) )
4905 ROM_END
4906 
4907 
4908 ROM_START( cosmicmo ) /*  Roms stamped with "II", denoting version II  */
4909 	ROM_REGION( 0x10000, "maincpu", 0 )
4910 	ROM_LOAD( "ii-1.h1",   0x0000, 0x0400, CRC(d6e4e5da) SHA1(8b4275a3c71ac3fa80d17237dc04de5f586645f4) )
4911 	ROM_LOAD( "ii-2.h2",   0x0400, 0x0400, CRC(8f7988e6) SHA1(b6a01d5dcab013350f8f7f3e3ebfc986bb939fe0) )
4912 	ROM_LOAD( "ii-3.h3",   0x0800, 0x0400, CRC(2d2e9dc8) SHA1(dd3da4fc752e003e5e7c64bf189288133aed545b) )
4913 	ROM_LOAD( "ii-4.h4",   0x0c00, 0x0400, CRC(26cae456) SHA1(2f2262340c10e5c29d71317f6eb8072c26655563) )
4914 	ROM_LOAD( "ii-5.h5",   0x4000, 0x0400, CRC(b13f228e) SHA1(a0de05aa36435e72c77f5333f3ad964ec448a8f0) )
4915 	ROM_LOAD( "ii-6.h6",   0x4400, 0x0400, CRC(4ae1b9c4) SHA1(8eed87eebe68caa775fa679363b0fe3728d98c34) )
4916 	ROM_LOAD( "ii-7.h7",   0x4800, 0x0400, CRC(6a13b15b) SHA1(dc03a6c3e938cfd08d16bd1660899f951ba72ea2) )
4917 
4918 	/* There is no colour circuits or tracking on the game PCB, it's a black and white composite video signal only */
4919 		/* The PCB is etched with Universal 7814A-3 */
4920 ROM_END
4921 
4922 ROM_START( cosmicm2 )
4923 	ROM_REGION( 0x10000, "maincpu", 0 )
4924 	ROM_LOAD( "3907.bin",   0x0000, 0x1000, CRC(bbffede6) SHA1(e7505ee8e3f19557ebbfd0145dc2ae0d1c529eba) )
4925 	ROM_LOAD( "3906.bin",   0x4000, 0x1000, CRC(b841f894) SHA1(b1f9e1800969baab14da2fd8873b58d4707b7236) )
4926 ROM_END
4927 
4928 ROM_START( superinv )
4929 	ROM_REGION( 0x10000, "maincpu", 0 )
4930 	ROM_LOAD( "00",           0x0000, 0x0400, CRC(7a9b4485) SHA1(dde918ec106971972bf7c7e5085c1262522f7e35) )
4931 	ROM_LOAD( "01",           0x0400, 0x0400, CRC(7c86620d) SHA1(9e92ec0aa4eee96a7fa115a14a611c488d13b9dd) )
4932 	ROM_LOAD( "02",           0x0800, 0x0400, CRC(ccaf38f6) SHA1(8eb0456e8abdba0d1dda20a335a9ecbe7c38f9ed) )
4933 	ROM_LOAD( "03",           0x1400, 0x0400, CRC(8ec9eae2) SHA1(48d7a7dc61e0417ca4093e5c2a36efd96e359233) )
4934 	ROM_LOAD( "04",           0x1800, 0x0400, CRC(68719b30) SHA1(2084bd63cd61ef1d2497c32112cdb42b7b582da4) )
4935 	ROM_LOAD( "05",           0x1c00, 0x0400, CRC(8abe2466) SHA1(17494b1e5db207e37a7d28d7c89cbc5f36b7aefc) )
4936 ROM_END
4937 
4938 ROM_START( invasion )
4939 	ROM_REGION( 0x10000, "maincpu", 0 )
4940 	ROM_LOAD( "10136-0.0k",   0x0000, 0x0400, CRC(7a9b4485) SHA1(dde918ec106971972bf7c7e5085c1262522f7e35) )
4941 	ROM_LOAD( "10136-1.1k",   0x0400, 0x0400, CRC(7c86620d) SHA1(9e92ec0aa4eee96a7fa115a14a611c488d13b9dd) )
4942 	ROM_LOAD( "10136-2.2k",   0x0800, 0x0400, CRC(ccaf38f6) SHA1(8eb0456e8abdba0d1dda20a335a9ecbe7c38f9ed) )
4943 	ROM_LOAD( "10136-5.5k",   0x1400, 0x0400, CRC(8ec9eae2) SHA1(48d7a7dc61e0417ca4093e5c2a36efd96e359233) )
4944 	ROM_LOAD( "10136-6.6k",   0x1800, 0x0400, CRC(ff0b0690) SHA1(8547c4b2a228f1690287217a916613c8f0caccf6) )
4945 	ROM_LOAD( "10136-7.7k",   0x1c00, 0x0400, CRC(75d7acaf) SHA1(977d146d7df555cea1bb2156d29d88bec9731f98) )
4946 ROM_END
4947 
4948 ROM_START( invasiona )
4949 	ROM_REGION( 0x10000, "maincpu", 0 )
4950 	ROM_LOAD( "invasiona_0.bin",   0x0000, 0x0400, CRC(c2fe6197) SHA1(823d02c2790711f40c167544a55e1669a97d93b4) )
4951 	ROM_LOAD( "invasiona_1.bin",   0x0400, 0x0400, CRC(7c86620d) SHA1(9e92ec0aa4eee96a7fa115a14a611c488d13b9dd) )
4952 	ROM_LOAD( "invasiona_2.bin",   0x0800, 0x0400, CRC(ccaf38f6) SHA1(8eb0456e8abdba0d1dda20a335a9ecbe7c38f9ed) )
4953 	ROM_LOAD( "invasiona_3.bin",   0x1400, 0x0400, CRC(8ec9eae2) SHA1(48d7a7dc61e0417ca4093e5c2a36efd96e359233) )
4954 	ROM_LOAD( "invasiona_4.bin",   0x1800, 0x0400, CRC(24b39879) SHA1(c93530ac20c412b516fbcba8220d85a9bd4fa804) )
4955 	ROM_LOAD( "invasiona_5.bin",   0x1c00, 0x0400, CRC(59134ff8) SHA1(2e6a040066b35b10f867a3e500e3b13922c0eb7a) )
4956 ROM_END
4957 
4958 ROM_START( invasiona2 )
4959 	ROM_REGION( 0x10000, "maincpu", 0 )
4960 	ROM_LOAD( "0.0.bin",   0x0000, 0x0400, CRC(7a9b4485) SHA1(dde918ec106971972bf7c7e5085c1262522f7e35) )
4961 	ROM_LOAD( "1.1.bin",   0x0400, 0x0400, CRC(7c86620d) SHA1(9e92ec0aa4eee96a7fa115a14a611c488d13b9dd) )
4962 	ROM_LOAD( "2.2.bin",   0x0800, 0x0400, CRC(b949185e) SHA1(f6dad27fdc5a030d2391078926bcf8e4adf21a12) )
4963 	ROM_LOAD( "3.5.bin",   0x1400, 0x0400, CRC(8ec9eae2) SHA1(48d7a7dc61e0417ca4093e5c2a36efd96e359233) )
4964 	ROM_LOAD( "4.6.bin",   0x1800, 0x0400, CRC(ec0edb4a) SHA1(8c6946b50ba5c319fe03c55b43c4e714387719b8) )
4965 	ROM_LOAD( "5.7.bin",   0x1c00, 0x0400, CRC(c3466380) SHA1(19b0f274a1b97a6ab48f3fe11fdee44ed2f50603) )
4966 ROM_END
4967 
4968 ROM_START( invasionb )
4969 	ROM_REGION( 0x10000, "maincpu", 0 )
4970 	ROM_LOAD( "invasionb_0.bin",   0x0000, 0x0400, CRC(7a9b4485) SHA1(dde918ec106971972bf7c7e5085c1262522f7e35) )
4971 	ROM_LOAD( "invasionb_1.bin",   0x0400, 0x0400, CRC(7c86620d) SHA1(9e92ec0aa4eee96a7fa115a14a611c488d13b9dd) )
4972 	ROM_LOAD( "invasionb_2.bin",   0x0800, 0x0400, CRC(ccaf38f6) SHA1(8eb0456e8abdba0d1dda20a335a9ecbe7c38f9ed) )
4973 	ROM_LOAD( "invasionb_5.bin",   0x1400, 0x0400, CRC(8ec9eae2) SHA1(48d7a7dc61e0417ca4093e5c2a36efd96e359233) )
4974 	ROM_LOAD( "invasionb_6.bin",   0x1800, 0x0400, CRC(ec0edb4a) SHA1(8c6946b50ba5c319fe03c55b43c4e714387719b8) )
4975 	ROM_LOAD( "invasionb_7.bin",   0x1c00, 0x0400, CRC(6aac1281) SHA1(f071a21de72d2c9f7851195592c828fa501197ce) )
4976 ROM_END
4977 
4978 ROM_START( invasionrz )
4979 	ROM_REGION( 0x10000, "maincpu", 0 )
4980 	ROM_LOAD( "rz0.0k",   0x0000, 0x0400, CRC(7a9b4485) SHA1(dde918ec106971972bf7c7e5085c1262522f7e35) )
4981 	ROM_LOAD( "rz1.1k",   0x0400, 0x0400, CRC(7c86620d) SHA1(9e92ec0aa4eee96a7fa115a14a611c488d13b9dd) )
4982 	ROM_LOAD( "rz2.2k",   0x0800, 0x0400, CRC(ccaf38f6) SHA1(8eb0456e8abdba0d1dda20a335a9ecbe7c38f9ed) )
4983 	ROM_LOAD( "rz5.5k",   0x1400, 0x0400, CRC(8ec9eae2) SHA1(48d7a7dc61e0417ca4093e5c2a36efd96e359233) )
4984 	ROM_LOAD( "rz6.6k",   0x1800, 0x0400, CRC(ec0edb4a) SHA1(8c6946b50ba5c319fe03c55b43c4e714387719b8) )
4985 	ROM_LOAD( "rz7.7k",   0x1c00, 0x0400, CRC(e4ab9012) SHA1(4f54e3fd3e3835a7b7d3b8d77929f4d9e42a4917) )
4986 ROM_END
4987 
4988 ROM_START( invasionrza )
4989 	ROM_REGION( 0x10000, "maincpu", 0 )
4990 	ROM_LOAD( "rz0-0.9k",   0x0000, 0x0400, CRC(3044806f) SHA1(7eaedd7fd7fcfd421432d5f6970ede12f586f644) )
4991 	ROM_LOAD( "rz1-1.8k",   0x0400, 0x0400, CRC(7c86620d) SHA1(9e92ec0aa4eee96a7fa115a14a611c488d13b9dd) )
4992 	ROM_LOAD( "rz2-2.7k",   0x0800, 0x0400, CRC(c808e941) SHA1(c17f2171d82df1984c4b048f2664dea5bd9c136b) )
4993 	ROM_LOAD( "rz5-5.4k",   0x1400, 0x0400, CRC(8ec9eae2) SHA1(48d7a7dc61e0417ca4093e5c2a36efd96e359233) )
4994 	// 2 reads of the bad rom
4995 	ROM_LOAD( "rz6-6.3k",   0x1800, 0x0400, BAD_DUMP CRC(c48df3ca) SHA1(d92064d171e099a45821c944324b993e39d894f7) )
4996 	ROM_LOAD( "rz6-6.3ka",  0x1800, 0x0400, BAD_DUMP CRC(aa51b2c3) SHA1(bb30f3827a66ec3cb8436566f6b865995d702f76) )
4997 	ROM_LOAD( "rz7-7.2k",   0x1c00, 0x0400, CRC(27dbea48) SHA1(f0bf5d31424dc72ac2e6fa01c528365efff838d2) )
4998 ROM_END
4999 
5000 /*
5001 
5002 Space Invaders (Electromar, Madrid) 1980
5003 
5004 Board by Roselson
5005 Dumped by Ricky2001 from Aumap
5006 
5007 This game runs in a clone of a Midway L-Shape Space Invaders PCB with different connectors, but identical.
5008 The board is updated with a litthe daughter board for the reset, instead of being generated in the Power supply.
5009 Most of the Texts are in Spanish but keeps the original name "Space Invaders", also in the psb is writen a Patent number, I think this means it was a licensed version.
5010 
5011 Boards Electromar 1007-A / 1007B
5012 Patente N MU221718
5013 
5014 
5015 */
5016 
5017 ROM_START( invadersem )
5018 	ROM_REGION( 0x10000, "maincpu", 0 )
5019 	ROM_LOAD( "h.bin",    0x0000, 0x0400, CRC(7fc672a5) SHA1(93c8dd27769e9c1ab812fd68031c67a5dc79d0da) )
5020 	ROM_LOAD( "g.bin",    0x0400, 0x0400, CRC(ad518883) SHA1(8f7f1f520287b738ebb6f2c70b7da2cae5db2be8) )
5021 	ROM_LOAD( "f.bin",    0x0800, 0x0400, CRC(f4a6c480) SHA1(eb179a46345d652ffd74f77956d361cebfbb1112))
5022 	ROM_LOAD( "c.bin",    0x1400, 0x0400, CRC(8f62c513) SHA1(87570241d4ab7df3ef380d57d27055af3cca7845) )
5023 	ROM_LOAD( "b.bin",    0x1800, 0x0400, CRC(2808e5c0) SHA1(aef4821d6d6e7f062e3ebecb878e6370b604224e) )
5024 	ROM_LOAD( "a.bin",    0x1c00, 0x0400, CRC(04c9b084) SHA1(d267438589de2d8332410e9641164fe68f337f73) )
5025 ROM_END
5026 
5027 ROM_START( ultrainv )
5028 	ROM_REGION( 0x10000, "maincpu", 0 )
5029 	ROM_LOAD( "in-01.bin",   0x0000, 0x0400, CRC(db9de599) SHA1(ccee1116ca924b520a126b63088a76d2ce8c396f) )
5030 	ROM_LOAD( "in-02.bin",   0x0400, 0x0400, CRC(febe6d1a) SHA1(e1c3a24b4fa5862107ada1f9d7249466e8c3f06a) )
5031 	ROM_LOAD( "in-03.bin",   0x0800, 0x0400, CRC(3d5c9820) SHA1(f3c83c660edf56a04148e2aa1c8e00427b86ca07) )
5032 	ROM_LOAD( "in-04.bin",   0x1400, 0x0400, CRC(1293b826) SHA1(165cd5d08a19eadbe954145b12807f10df9e691a) )
5033 	ROM_LOAD( "in-05.bin",   0x1800, 0x0400, CRC(e315a8c4) SHA1(dffec9e8bd7014fa34500b4bdac7feadac090482) )
5034 	ROM_LOAD( "in-06.bin",   0x1c00, 0x0400, CRC(d958478c) SHA1(9df38c400c500b45d306d52fe74cd4d5ca92c0f0) )
5035 ROM_END
5036 
5037 
5038 ROM_START( invmulti )
5039 	ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 ) // decrypted rom goes here
5040 
5041 	ROM_REGION( 0x20000, "user1", 0 )
5042 	ROM_LOAD("m803d.bin", 0x00000, 0x20000, CRC(6a62cb3c) SHA1(eb7b567098ad596859f417dd5c59c2cf1ebf1154) )
5043 ROM_END
5044 
5045 ROM_START( invmultim3a )
5046 	ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 )
5047 
5048 	ROM_REGION( 0x20000, "user1", 0 )
5049 	ROM_LOAD("m803a.bin", 0x00000, 0x20000, CRC(6d538828) SHA1(9a80c67abd32c4c8cd04320501a2aa4e2a308fc9) )
5050 ROM_END
5051 
5052 ROM_START( invmultim2c )
5053 	ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 )
5054 
5055 	ROM_REGION( 0x20000, "user1", 0 )
5056 	ROM_LOAD("m802c.bin", 0x00000, 0x20000, CRC(5b537de5) SHA1(4d8a6b622b818e88383d011c25f8f34b7372db6d) )
5057 ROM_END
5058 
5059 ROM_START( invmultim2a )
5060 	ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 )
5061 
5062 	ROM_REGION( 0x20000, "user1", 0 )
5063 	ROM_LOAD("m802a.bin", 0x00000, 0x20000, CRC(8079b1d0) SHA1(b13d910f314550eef468ee819b92788d2a002d82) )
5064 ROM_END
5065 
5066 ROM_START( invmultim1a )
5067 	ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 )
5068 
5069 	ROM_REGION( 0x20000, "user1", 0 )
5070 	ROM_LOAD("m801a.bin", 0x00000, 0x20000, CRC(f28536d2) SHA1(08ef3ea3fac38c7a478f094bfa7c369ac39515c4) )
5071 ROM_END
5072 
5073 ROM_START( invmultit3d )
5074 	ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 )
5075 
5076 	ROM_REGION( 0x20000, "user1", 0 )
5077 	ROM_LOAD("t803d.bin", 0x00000, 0x20000, CRC(4d53173c) SHA1(a9caf7fd8e2fea86ca1cf7edc104bdacf09203f8) )
5078 ROM_END
5079 
5080 ROM_START( invmultis3a )
5081 	ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 )
5082 
5083 	ROM_REGION( 0x20000, "user1", 0 )
5084 	ROM_LOAD("s083a.bin", 0x00000, 0x20000, CRC(f426d43b) SHA1(a299472f1d65f356ec01ca7cc8d3039abac20019) )
5085 ROM_END
5086 
5087 ROM_START( invmultis2a )
5088 	ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 )
5089 
5090 	ROM_REGION( 0x20000, "user1", 0 )
5091 	ROM_LOAD("s082a.bin", 0x00000, 0x20000, CRC(25f0f17e) SHA1(a3ccf823399e23dd9fdb38fd58c0acfe80b57fe3) )
5092 ROM_END
5093 
5094 ROM_START( invmultis1a )
5095 	ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 )
5096 
5097 	ROM_REGION( 0x20000, "user1", 0 )
5098 	ROM_LOAD("s081a.bin", 0x00000, 0x20000, CRC(daa77345) SHA1(0fdc9c2a6d9c0aa3233c5d31433adb1ea4e5b250) )
5099 ROM_END
5100 
5101 ROM_START( invmultip )
5102 	ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 )
5103 
5104 	ROM_REGION( 0x20000, "user1", 0 )
5105 	ROM_LOAD("s10.bin",  0x00000, 0x20000, CRC(1b43e4d3) SHA1(c50decd9caaec7f2d8b3ba74f718372d31bc1c3b) )
5106 ROM_END
5107 
5108 
5109 ROM_START( rollingc )
5110 	ROM_REGION( 0x10000, "maincpu", 0 )
5111 	ROM_LOAD( "rc01.bin",     0x0000, 0x0400, CRC(66fa50bf) SHA1(7451d4ff8d3b351a324aaecdbdc5b46672f5fdd0) )
5112 	ROM_LOAD( "rc02.bin",     0x0400, 0x0400, CRC(61c06ae4) SHA1(7685c806e20e4a4a0508a547ac08ca8f6d75bb79) )
5113 	ROM_LOAD( "rc03.bin",     0x0800, 0x0400, CRC(77e39fa0) SHA1(16bf88af1b97c5a2a81e105af08b8d9d1f10dcc8) )
5114 	ROM_LOAD( "rc04.bin",     0x0c00, 0x0400, CRC(3fdfd0f3) SHA1(4c5e7136a766f3f16399e61eaaa0e00ef6b619f7) )
5115 	ROM_LOAD( "rc05.bin",     0x1000, 0x0400, CRC(c26a8f5b) SHA1(f7a541999cfe04c6d6927d285484f0f81857e04a) )
5116 	ROM_LOAD( "rc06.bin",     0x1400, 0x0400, CRC(0b98dbe5) SHA1(33cedab82ddccb4caaf681fce553b5230a8d6f92) )
5117 	ROM_LOAD( "rc07.bin",     0x1800, 0x0400, CRC(6242145c) SHA1(b01bb02835dda89dc02604ec52e423167183e8c9) )
5118 	ROM_LOAD( "rc08.bin",     0x1c00, 0x0400, CRC(d23c2ef1) SHA1(909e3d53291dbd219f4f9e0047c65317b9f6d5bd) )
5119 
5120 	ROM_LOAD( "rc09.bin",     0x4000, 0x0800, CRC(2e2c5b95) SHA1(33f4e2789d67e355ccd99d2c0d07301ec2bd3bc1) )
5121 	ROM_LOAD( "rc10.bin",     0x4800, 0x0800, CRC(ef94c502) SHA1(07c0504b2ebce0fa6e53e6957e7b6c0e9caab430) )
5122 	ROM_LOAD( "rc11.bin",     0x5000, 0x0800, CRC(a3164b18) SHA1(7270af25fa4171f86476f5dc409e658da7fba7fc) )
5123 	ROM_LOAD( "rc12.bin",     0x5800, 0x0800, CRC(2052f6d9) SHA1(036702fc40cf133eb374ed674695d7c6c79e8311) )
5124 ROM_END
5125 
5126 ROM_START( schaser )
5127 	ROM_REGION( 0x10000, "maincpu", 0 )
5128 	ROM_LOAD( "rt13.bin",     0x0000, 0x0400, CRC(0dfbde68) SHA1(7367b138ad8448aba9222fed632a892df65cecbd) )
5129 	ROM_LOAD( "rt14.bin",     0x0400, 0x0400, CRC(5a508a25) SHA1(c681d0bbf49317e79b596fb094e66b8912f0e409) )
5130 	ROM_LOAD( "rt15.bin",     0x0800, 0x0400, CRC(2ac43a93) SHA1(d364f0940681a888c0147e06bcb01f8a0d4a24c8) )
5131 	ROM_LOAD( "rt16.bin",     0x0c00, 0x0400, CRC(f5583afc) SHA1(5e8edb43ccb138fd47ac8f3da1af79b4444a4a82) )
5132 	ROM_LOAD( "rt17.bin",     0x1000, 0x0400, CRC(51cf1155) SHA1(fd8c82d951602fd7e0ada65fc7cdee9f277c70db) )
5133 	ROM_LOAD( "rt18.bin",     0x1400, 0x0400, CRC(3f0fc73a) SHA1(b801c3f1e8e6e41c564432db7c5891f6b27293b2) )
5134 	ROM_LOAD( "rt19.bin",     0x1800, 0x0400, CRC(b66ea369) SHA1(d277f572f9c7c4301518546cf60671a6539326ee) )
5135 	ROM_LOAD( "rt20.bin",     0x1c00, 0x0400, CRC(e3a7466a) SHA1(2378970f38b0cec066ef853a6540500e468e4ab4) )
5136 	ROM_LOAD( "rt21.bin",     0x4000, 0x0400, CRC(b368ac98) SHA1(6860efe0496955db67611183be0efecda92c9c98) )
5137 	ROM_LOAD( "rt22.bin",     0x4400, 0x0400, CRC(6e060dfb) SHA1(614e2ecf676c3ea2f9ea869125cfffef2f713684) )
5138 
5139 	ROM_REGION( 0x0400, "proms", 0 )        /* background color map */
5140 	ROM_LOAD( "rt06.ic2",     0x0000, 0x0400, CRC(950cf973) SHA1(d22df09b325835a0057ccd0d54f827b374254ac6) )
5141 ROM_END
5142 
5143 ROM_START( schasera )
5144 	ROM_REGION( 0x10000, "maincpu", 0 )
5145 	ROM_LOAD( "rt13.bin",     0x0000, 0x0800, CRC(7b0bfeed) SHA1(832fe90430653d03cd0e7ea1b046524a2ca292ea) ) // sldh
5146 	ROM_LOAD( "rt15.bin",     0x0800, 0x0800, CRC(825fc8ac) SHA1(176ff0f4d0cd55be30efb184bd5bef62b92d0333) ) // sldh
5147 	ROM_LOAD( "rt17.bin",     0x1000, 0x0800, CRC(de9d3f85) SHA1(13a71fdd889023cfc65ed2c0a65236884b79b1f0) ) // sldh
5148 	ROM_LOAD( "rt19.bin",     0x1800, 0x0800, CRC(c0adab87) SHA1(4bb8e4ccfb5eaa052584555bfa03fecf19ab8a29) ) // sldh
5149 	ROM_LOAD( "rt21.bin",     0x4000, 0x0800, CRC(a3b31070) SHA1(af0108e1446a2be66cfc00d0b837fa91ab882441) ) // sldh
5150 
5151 	ROM_REGION( 0x0400, "proms", 0 )        /* background color map */
5152 	ROM_LOAD( "rt06.ic2",     0x0000, 0x0400, CRC(950cf973) SHA1(d22df09b325835a0057ccd0d54f827b374254ac6) )
5153 ROM_END
5154 
5155 ROM_START( schaserb )
5156 	ROM_REGION( 0x10000, "maincpu", 0 )
5157 	ROM_LOAD( "rt33.bin",     0x0000, 0x0800, CRC(eec6b032) SHA1(da14fcd862d6b80531cd3b858034bc5a120ed8ae) )
5158 	ROM_LOAD( "rt34.bin",     0x0800, 0x0800, CRC(13a73701) SHA1(48ddbc10dec458070274c9fabbb0c420e2a07c96) )
5159 	ROM_LOAD( "rt35.bin",     0x1000, 0x0800, CRC(de9d3f85) SHA1(13a71fdd889023cfc65ed2c0a65236884b79b1f0) )
5160 	ROM_LOAD( "rt36.bin",     0x1800, 0x0800, CRC(521ec25e) SHA1(ce53e882c11a4c36f3edc3b389d3f5ad0e0ec151) )
5161 	ROM_LOAD( "rt37.bin",     0x4000, 0x0800, CRC(44f65f19) SHA1(ee97d7987f54c9c26f5a20c72bdae04c46f94dc4) )
5162 
5163 	ROM_REGION( 0x0400, "proms", 0 )        /* background color map */
5164 	ROM_LOAD( "rt06.ic2",     0x0000, 0x0400, CRC(950cf973) SHA1(d22df09b325835a0057ccd0d54f827b374254ac6) )
5165 ROM_END
5166 
5167 ROM_START( schaserm )
5168 	ROM_REGION( 0x10000, "maincpu", 0 )
5169 	ROM_LOAD( "mr26.71",     0x0000, 0x0800, CRC(4e547879) SHA1(464fab35373d6bd6218474e7f5109425376f1db2) )
5170 	ROM_LOAD( "rt08.70",     0x0800, 0x0800, CRC(825fc8ac) SHA1(176ff0f4d0cd55be30efb184bd5bef62b92d0333) )
5171 	ROM_LOAD( "rt09.69",     0x1000, 0x0800, CRC(de9d3f85) SHA1(13a71fdd889023cfc65ed2c0a65236884b79b1f0) )
5172 	ROM_LOAD( "mr27.62",     0x1800, 0x0800, CRC(069ec108) SHA1(b12cd288d7e42002d01290f0572f9074adf2cdca) )
5173 	ROM_LOAD( "rt11.61",     0x4000, 0x0800, CRC(17a7ef7a) SHA1(1a7b3f9393dceddcd1e220cadbff7e619594f884) )
5174 
5175 	ROM_REGION( 0x0400, "proms", 0 )        /* background color map */
5176 	ROM_LOAD( "rt06.ic2",     0x0000, 0x0400, CRC(950cf973) SHA1(d22df09b325835a0057ccd0d54f827b374254ac6) )
5177 ROM_END
5178 
5179 ROM_START( crashrd )
5180 	ROM_REGION( 0x10000, "maincpu", 0 )
5181 	ROM_LOAD( "2716-5m.bin",  0x0000, 0x0800, CRC(53749427) SHA1(213828eea2d5baeae9c6553a531ec4127d795a67) )
5182 	ROM_LOAD( "2716-5n.bin",  0x0800, 0x0800, CRC(e391d768) SHA1(22a52f4a01b586489ec79d53817152594cc3189d) )
5183 	ROM_LOAD( "2716-5p.bin",  0x1000, 0x0800, CRC(fededc5d) SHA1(205079ddc5893884476672d378a457b5a603f5ae) )
5184 	ROM_LOAD( "2716-5r.bin",  0x1800, 0x0800, CRC(30830779) SHA1(dff2fa9244cd3769a167673668acb53a17c395b4) )
5185 	ROM_LOAD( "2716-5s.bin",  0x4000, 0x0800, CRC(6a974917) SHA1(4f1a4003652ef47de3d5c270f5f624d172970ec5) )
5186 
5187 	ROM_REGION( 0x0400, "proms", 0 )        /* background color map (should this have one, or should it be b+w?) */
5188 	ROM_LOAD( "rt06.ic2",     0x0000, 0x0400, CRC(950cf973) SHA1(d22df09b325835a0057ccd0d54f827b374254ac6) )
5189 ROM_END
5190 
5191 ROM_START( sflush )
5192 	ROM_REGION( 0x10000, "maincpu", 0 )
5193 	ROM_LOAD( "fr05.sc2",     0xd800, 0x800, CRC(c4f08f9f) SHA1(997f216f5244942fc1a19f5c1988adbfadc301fc) )
5194 	ROM_LOAD( "fr04.sc3",     0xe000, 0x800, CRC(87a754a5) SHA1(07c0e2c3cb7aa0086d8f4dd202a452bc6c20d4ee) )
5195 	ROM_LOAD( "fr03.sc4",     0xe800, 0x800, CRC(5b12847f) SHA1(4b62342723dd49a387fae6637c331d7c853712a3) )
5196 	ROM_LOAD( "fr02.sc5",     0xf000, 0x800, CRC(291c9b1f) SHA1(7e5b3e1605581abf3d8165f4de9d4e32a5ee3bb0) )
5197 	ROM_LOAD( "fr01.sc6",     0xf800, 0x800, CRC(55d688c6) SHA1(574a3a2ca73cabb4b8f3444aa4464e6d64daa3ad) )
5198 ROM_END
5199 
5200 ROM_START( schasercv )
5201 	ROM_REGION( 0x10000, "maincpu", 0 )
5202 	ROM_LOAD( "1",            0x0000, 0x0400, CRC(bec2b16b) SHA1(c62210ecb64d7c38e5b63481d7fe04eb59bb1068) )
5203 	ROM_LOAD( "2",            0x0400, 0x0400, CRC(9d25e608) SHA1(4cc52a93a3ab96a0ec1d07593e17832fa59b30a1) )
5204 	ROM_LOAD( "3",            0x0800, 0x0400, CRC(113d0635) SHA1(ab5e98d0b5fc37d7d69bb5c541681a0f66460440) )
5205 	ROM_LOAD( "4",            0x0c00, 0x0400, CRC(f3a43c8d) SHA1(29a7a8b7d1de763a255cfec79157fd95e7bff551) )
5206 	ROM_LOAD( "5",            0x1000, 0x0400, CRC(47c84f23) SHA1(61b475fa92b8335f8edd3a128d8ac8561658e464) )
5207 	ROM_LOAD( "6",            0x1400, 0x0400, CRC(02ff2199) SHA1(e12c235b2064cb4bb426145172e523256e3c6358) )
5208 	ROM_LOAD( "7",            0x1800, 0x0400, CRC(87d06b88) SHA1(2d743161f85e47cb8ee2a600cbee790b1ad7ad99) )
5209 	ROM_LOAD( "8",            0x1c00, 0x0400, CRC(6dfaad08) SHA1(2184c4e2f4b6bffdc4fe13e178134331fcd43253) )
5210 	ROM_LOAD( "9",            0x4000, 0x0400, CRC(3d1a2ae3) SHA1(672ad6590aebdfebc2748455fa638107f3934c41) )
5211 	ROM_LOAD( "10",           0x4400, 0x0400, CRC(037edb99) SHA1(f2fc5e61f962666e7f6bb81753ac24ea0b97e581) )
5212 
5213 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 (not used, but they were on the board) */
5214 	ROM_LOAD( "cv01",         0x0000, 0x0400, CRC(037e16ac) SHA1(d585030aaff428330c91ae94d7cd5c96ebdd67dd) )
5215 	ROM_LOAD( "cv02",         0x0400, 0x0400, CRC(8263da38) SHA1(2e7c769d129e6f8a1a31eba1e02777bb94ac32b2) )
5216 ROM_END
5217 
5218 ROM_START( schaserc )
5219 	ROM_REGION( 0x10000, "maincpu", 0 )
5220 	ROM_LOAD( "45.ic30",      0x0000, 0x0400, CRC(ca90619c) SHA1(d2f9b29290d720c57f867d1dc193e877248e6afd) )
5221 	ROM_LOAD( "46.ic36",      0x0400, 0x0400, CRC(6a016895) SHA1(6984d9d002e5d8fa14bdaf16f6ba9ca02136372c) )
5222 	ROM_LOAD( "rt15.bin",     0x0800, 0x0400, CRC(2ac43a93) SHA1(d364f0940681a888c0147e06bcb01f8a0d4a24c8) )
5223 	ROM_LOAD( "rt16.bin",     0x0c00, 0x0400, CRC(f5583afc) SHA1(5e8edb43ccb138fd47ac8f3da1af79b4444a4a82) )
5224 	ROM_LOAD( "rt17.bin",     0x1000, 0x0400, CRC(51cf1155) SHA1(fd8c82d951602fd7e0ada65fc7cdee9f277c70db) )
5225 	ROM_LOAD( "rt18.bin",     0x1400, 0x0400, CRC(3f0fc73a) SHA1(b801c3f1e8e6e41c564432db7c5891f6b27293b2) )
5226 	ROM_LOAD( "rt19.bin",     0x1800, 0x0400, CRC(b66ea369) SHA1(d277f572f9c7c4301518546cf60671a6539326ee) )
5227 	ROM_LOAD( "47.ic39",      0x1c00, 0x0400, CRC(d476e182) SHA1(87428bf0131f8bf39d506b8df424af94cd944d82) )
5228 	ROM_LOAD( "rt21.bin",     0x4000, 0x0400, CRC(b368ac98) SHA1(6860efe0496955db67611183be0efecda92c9c98) )
5229 	ROM_LOAD( "rt22.bin",     0x4400, 0x0400, CRC(6e060dfb) SHA1(614e2ecf676c3ea2f9ea869125cfffef2f713684) )
5230 
5231 	ROM_REGION( 0x0400, "proms", 0 )        /* background color map */
5232 	ROM_LOAD( "rt06.ic2",     0x0000, 0x0400, CRC(950cf973) SHA1(d22df09b325835a0057ccd0d54f827b374254ac6) )
5233 ROM_END
5234 
5235 ROM_START( lupin3 )
5236 	ROM_REGION( 0x10000, "maincpu", 0 )
5237 	ROM_LOAD( "lp01.36",      0x0000, 0x0800, CRC(fd506ee8) SHA1(67ce62f24892f0eddf3e47913dff541f41493a17) )
5238 	ROM_LOAD( "lp02.35",      0x0800, 0x0800, CRC(ec4225f8) SHA1(cd7360b3b339e5050075b498226070914fb7a031) )
5239 	ROM_LOAD( "lp03.34",      0x1000, 0x0800, CRC(9307d377) SHA1(081f6c63ff2dcc549e44ab5ff5f5ddf99d544640) )
5240 	ROM_LOAD( "lp04.33",      0x1800, 0x0800, CRC(e41e8b2b) SHA1(e67eaa8aeaf13f706afc17074fbbde3ad2cc9548) )
5241 	ROM_LOAD( "lp05.32",      0x4000, 0x0800, CRC(f5c2faf4) SHA1(8d056f8c630e4659c02dd5da759dd497e4734292) )
5242 	ROM_LOAD( "lp06.31",      0x4800, 0x0800, CRC(66289ab2) SHA1(fc9b4a7b7a08d43f34beaf1a8e68ed0ff6148534) )
5243 
5244 	ROM_REGION( 0x0800, "proms", 0 )        /* color map */
5245 	ROM_LOAD( "lp08.1",       0x0000, 0x0400, CRC(33dbd03a) SHA1(1e0ae1cad1e9a90642886ae2ef726d3f383dd6cf) )
5246 	ROM_LOAD( "lp09.2",       0x0400, 0x0400, CRC(9eaee652) SHA1(a4d2d8282ba825f3a8c0cc9bca16e1d36a0d0796) )
5247 ROM_END
5248 
5249 ROM_START( lupin3a )
5250 	ROM_REGION( 0x10000, "maincpu", 0 )
5251 	ROM_LOAD( "lp12.bin",     0x0000, 0x0800, CRC(68a7f47a) SHA1(dce99b3810331d7603fa468f1dea984e571f709b) )
5252 	ROM_LOAD( "lp13.bin",     0x0800, 0x0800, CRC(cae9a17b) SHA1(a333ba7db45325996e3254ab36162bb7577e8a38) )
5253 	ROM_LOAD( "lp14.bin",     0x1000, 0x0800, CRC(3553b9e4) SHA1(6affb5b6caf08f365c0dce669e44046295c3df91) )
5254 	ROM_LOAD( "lp15.bin",     0x1800, 0x0800, CRC(acbeef64) SHA1(50d78cdc9938285b6bf9fa81fa0f6c30b23e0756) )
5255 	ROM_LOAD( "lp16.bin",     0x4000, 0x0800, CRC(19fcdc54) SHA1(2f18ee8158321fff68886ffe793724001e8b18c2) )
5256 	ROM_LOAD( "lp17.bin",     0x4800, 0x0800, CRC(66289ab2) SHA1(fc9b4a7b7a08d43f34beaf1a8e68ed0ff6148534) )
5257 	ROM_LOAD( "lp18.bin",     0x5000, 0x0800, CRC(2f07b4ba) SHA1(982e4c437b39b45e23d15af1b2fc8c7aa3034559) )
5258 ROM_END
5259 
5260 ROM_START( polaris )
5261 	ROM_REGION( 0x10000, "maincpu", 0 )
5262 	ROM_LOAD( "ps01-1.ic71",   0x0000, 0x0800, CRC(7d41007c) SHA1(168f002fe997aac6e4141292de826d389859bb04) )
5263 	ROM_LOAD( "ps02-9.ic70",   0x0800, 0x0800, CRC(9a5c8cb2) SHA1(7a8c5d74f8b431072d9476d3ef65a3fe1d639813) )
5264 	ROM_LOAD( "ps03-1.ic69",   0x1000, 0x0800, CRC(21f32415) SHA1(6ac9ae9b55e342729fe260147021ed3911a24dc2) )
5265 	ROM_LOAD( "ps04-18.ic62",  0x1800, 0x0800, CRC(d717aef3) SHA1(e3361c06e92f82e96d7c6e3d6f8fad89bbf23689) )
5266 	ROM_LOAD( "ps05.ic61",     0x4000, 0x0800, CRC(772e31f3) SHA1(fa0b866b6df1a9217e286ca880b3bb3fb0644bf3) )
5267 	ROM_LOAD( "ps06-10.ic60",  0x4800, 0x0800, CRC(3df77bac) SHA1(b3275c34b8d42df83df2c404c5b7d220aae651fa) )
5268 	ROM_LOAD( "ps26.ic60a",    0x5000, 0x0800, CRC(9d5c3d50) SHA1(a6acf9ca6e807625156cb1759269014d5830a44f) )
5269 
5270 	ROM_REGION( 0x0400, "proms", 0 )        /* background color map */
5271 	ROM_LOAD( "ps08.1b", 0x0000, 0x0400, CRC(164aa05d) SHA1(41c699ce45c76a60c71294f25d8df6c6e6c1280a) ) /* NEC B406 or compatible BPROM (82S137) */
5272 
5273 	ROM_REGION( 0x0100, "user1", 0 )        /* cloud graphics */
5274 	ROM_LOAD( "ps07.2c", 0x0000, 0x0100, CRC(2953253b) SHA1(2fb851bc9652ca4e51d473b484ede6dab05f1b51) ) /* MB7052 or compatible BPROM (82S129) */
5275 ROM_END
5276 
5277 ROM_START( polarisa )
5278 	ROM_REGION( 0x10000, "maincpu", 0 )
5279 	ROM_LOAD( "ps01-1.ic71",   0x0000, 0x0800, CRC(7d41007c) SHA1(168f002fe997aac6e4141292de826d389859bb04) )
5280 	ROM_LOAD( "ps02-9.ic70",   0x0800, 0x0800, CRC(9a5c8cb2) SHA1(7a8c5d74f8b431072d9476d3ef65a3fe1d639813) ) // was PS09, an alternate label designation?
5281 	ROM_LOAD( "ps03-1.ic69",   0x1000, 0x0800, CRC(21f32415) SHA1(6ac9ae9b55e342729fe260147021ed3911a24dc2) )
5282 	ROM_LOAD( "ps04.ic62",     0x1800, 0x0800, CRC(65694948) SHA1(de92a7f3e3ef732b573254baa60df60f8e068a5d) )
5283 	ROM_LOAD( "ps05.ic61",     0x4000, 0x0800, CRC(772e31f3) SHA1(fa0b866b6df1a9217e286ca880b3bb3fb0644bf3) )
5284 	ROM_LOAD( "ps06-10.ic60",  0x4800, 0x0800, CRC(3df77bac) SHA1(b3275c34b8d42df83df2c404c5b7d220aae651fa) ) // was PS10, an alternate label designation?
5285 	ROM_LOAD( "ps26.ic60a",    0x5000, 0x0800, CRC(9d5c3d50) SHA1(a6acf9ca6e807625156cb1759269014d5830a44f) )
5286 
5287 	ROM_REGION( 0x0400, "proms", 0 )        /* background color map */
5288 	ROM_LOAD( "ps08.1b", 0x0000, 0x0400, CRC(164aa05d) SHA1(41c699ce45c76a60c71294f25d8df6c6e6c1280a) ) /* NEC B406 or compatible BPROM (82S137) */
5289 
5290 	ROM_REGION( 0x0100, "user1", 0 )        /* cloud graphics */
5291 	ROM_LOAD( "ps07.2c", 0x0000, 0x0100, CRC(2953253b) SHA1(2fb851bc9652ca4e51d473b484ede6dab05f1b51) ) /* MB7052 or compatible BPROM (82S129) */
5292 ROM_END
5293 
5294 ROM_START( polarisb )
5295 	ROM_REGION( 0x10000, "maincpu", 0 )
5296 	ROM_LOAD( "ps01.ic71",    0x0000, 0x0800, CRC(c04ce5a9) SHA1(62cc9b3b682ebecfb7600393862c65e26ff5263f) )
5297 	ROM_LOAD( "ps02-9.ic70",  0x0800, 0x0800, CRC(9a5c8cb2) SHA1(7a8c5d74f8b431072d9476d3ef65a3fe1d639813) ) // was PS09, an alternate label designation?
5298 	ROM_LOAD( "ps03.ic69",    0x1000, 0x0800, CRC(8680d7ea) SHA1(7fd4b8a415666c36842fed80d2798b48f8b29d0d) )
5299 	ROM_LOAD( "ps04.ic62",    0x1800, 0x0800, CRC(65694948) SHA1(de92a7f3e3ef732b573254baa60df60f8e068a5d) )
5300 	ROM_LOAD( "ps05.ic61",    0x4000, 0x0800, CRC(772e31f3) SHA1(fa0b866b6df1a9217e286ca880b3bb3fb0644bf3) )
5301 	ROM_LOAD( "ps06-10.ic60", 0x4800, 0x0800, CRC(3df77bac) SHA1(b3275c34b8d42df83df2c404c5b7d220aae651fa) ) // was PS10, an alternate label designation?
5302 
5303 	ROM_REGION( 0x0400, "proms", 0 )        /* background color map */
5304 	ROM_LOAD( "ps08.1b", 0x0000, 0x0400, CRC(164aa05d) SHA1(41c699ce45c76a60c71294f25d8df6c6e6c1280a) ) /* NEC B406 or compatible BPROM (82S137) */
5305 
5306 	ROM_REGION( 0x0100, "user1", 0 )        /* cloud graphics */
5307 	ROM_LOAD( "ps07.2c", 0x0000, 0x0100, CRC(2953253b) SHA1(2fb851bc9652ca4e51d473b484ede6dab05f1b51) ) /* MB7052 or compatible BPROM (82S129) */
5308 ROM_END
5309 
5310 ROM_START( polariso )
5311 	ROM_REGION( 0x10000, "maincpu", 0 )
5312 	ROM_LOAD( "ps01.ic71",    0x0000, 0x0800, CRC(c04ce5a9) SHA1(62cc9b3b682ebecfb7600393862c65e26ff5263f) )
5313 	ROM_LOAD( "ps02.ic70",    0x0800, 0x0800, CRC(18648e4f) SHA1(9f672e108177d5d9bc004b41eec00dc4d19269ff) )
5314 	ROM_LOAD( "ps03.ic69",    0x1000, 0x0800, CRC(8680d7ea) SHA1(7fd4b8a415666c36842fed80d2798b48f8b29d0d) )
5315 	ROM_LOAD( "ps04.ic62",    0x1800, 0x0800, CRC(65694948) SHA1(de92a7f3e3ef732b573254baa60df60f8e068a5d) )
5316 	ROM_LOAD( "ps05.ic61",    0x4000, 0x0800, CRC(772e31f3) SHA1(fa0b866b6df1a9217e286ca880b3bb3fb0644bf3) )
5317 	ROM_LOAD( "ps06.ic60",    0x4800, 0x0800, CRC(f577cb72) SHA1(7a931b5ebaf0d6941191f21afb9ed670d0251e07) )
5318 
5319 	ROM_REGION( 0x0400, "proms", 0 )        /* background color map */
5320 	ROM_LOAD( "ps08.1b", 0x0000, 0x0400, CRC(164aa05d) SHA1(41c699ce45c76a60c71294f25d8df6c6e6c1280a) ) /* NEC B406 or compatible BPROM (82S137) */
5321 
5322 	ROM_REGION( 0x0100, "user1", 0 )        /* cloud graphics */
5323 	ROM_LOAD( "ps07.2c", 0x0000, 0x0100, CRC(2953253b) SHA1(2fb851bc9652ca4e51d473b484ede6dab05f1b51) ) /* MB7052 or compatible BPROM (82S129) */
5324 ROM_END
5325 
5326 ROM_START( polarisbr ) /* aka Polaris II on flyers? */
5327 	ROM_REGION( 0x10000, "maincpu", 0 )
5328 	ROM_LOAD( "1",   0x0000, 0x0800, CRC(17015f52) SHA1(8beb4d927c08420f9990fac787a81d4bd6dd419c) )
5329 	ROM_LOAD( "2",   0x0800, 0x0800, CRC(9a5c8cb2) SHA1(7a8c5d74f8b431072d9476d3ef65a3fe1d639813) )
5330 	ROM_LOAD( "3",   0x1000, 0x0800, CRC(60118368) SHA1(e1189fd88b943fcf77a5c41c519cccdb8196910c) )
5331 	ROM_LOAD( "4",   0x1800, 0x0800, CRC(65694948) SHA1(de92a7f3e3ef732b573254baa60df60f8e068a5d) )
5332 	ROM_LOAD( "5",   0x4000, 0x0800, CRC(6cb21b31) SHA1(f9d435a3aa905f124cb87c139b047e1585d0997b) )
5333 	ROM_LOAD( "6",   0x4800, 0x0800, CRC(3df77bac) SHA1(b3275c34b8d42df83df2c404c5b7d220aae651fa) )
5334 	ROM_LOAD( "7",   0x5000, 0x0800, CRC(0d811b92) SHA1(09af62997e1e0da0525ab4f6ced775d3673d8f35) )
5335 
5336 	ROM_REGION( 0x0400, "proms", 0 )        /* background color map */
5337 	ROM_LOAD( "ps08.1b", 0x0000, 0x0400, CRC(164aa05d) SHA1(41c699ce45c76a60c71294f25d8df6c6e6c1280a) ) /* NEC B406 or compatible BPROM (82S137) */
5338 
5339 	ROM_REGION( 0x0100, "user1", 0 )        /* cloud graphics */
5340 	ROM_LOAD( "ps07.2c", 0x0000, 0x0100, CRC(2953253b) SHA1(2fb851bc9652ca4e51d473b484ede6dab05f1b51) ) /* MB7052 or compatible BPROM (82S129) */
5341 ROM_END
5342 
5343 ROM_START( ozmawars )
5344 	ROM_REGION( 0x10000, "maincpu", 0 )
5345 	ROM_LOAD( "mw01",         0x0000, 0x0800, CRC(31f4397d) SHA1(bba9765aadd608d19e2515a5edf8e0eceb70916a) )
5346 	ROM_LOAD( "mw02",         0x0800, 0x0800, CRC(d8e77c62) SHA1(84fc81cf9a924ecbb13a008cd7435b7d465bddf6) )
5347 	ROM_LOAD( "mw03",         0x1000, 0x0800, CRC(3bfa418f) SHA1(7318878202322a2263551ca463e4c70943401f68) )
5348 	ROM_LOAD( "mw04",         0x1800, 0x0800, CRC(e190ce6c) SHA1(120898e9a683f5ce874c6fde761570a26de2fa8c) )
5349 	ROM_LOAD( "mw05",         0x4000, 0x0800, CRC(3bc7d4c7) SHA1(b084f8cd2ce0f502c2e915da3eceffcbb448e9c0) )
5350 	ROM_LOAD( "mw06",         0x4800, 0x0800, CRC(99ca2eae) SHA1(8d0f220f68043eff0c85d2de7bee7fd4365fb51c) )
5351 
5352 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
5353 	/* !! not dumped yet, these were taken from sisv/intruder */
5354 	ROM_LOAD( "01.1",         0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) )
5355 	ROM_LOAD( "02.2",         0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) )
5356 ROM_END
5357 
5358 /*
5359 
5360 ------------------------------
5361 Ozma Wars by SHIN NIHON KIKAKU
5362 ------------------------------
5363 
5364 Location       Type      File ID      Checksum
5365 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5366 ROM IC36       2708        OZ1         8707
5367 ROM IC35       2708        OZ2         60A7
5368 ROM IC34       2708        OZ3         7504
5369 ROM IC33       2708        OZ4         55A1
5370 ROM IC32       2708        OZ5         6BC3
5371 ROM IC31       2708        OZ6         2808
5372 ROM IC42       2708        OZ7         FE8A
5373 ROM IC41       2708        OZ8         C03B
5374 ROM IC40       2708        OZ9         7515
5375 ROM IC39       2708        OZ10        4BD4
5376 ROM IC38       2708        OZ11        50BA
5377 ROM IC37       2708        OZ12        3411
5378 
5379 
5380 Note: CPU - CPU board           (AA017757)
5381       AUD - Audio/IO board      (CV070005)
5382       ROM - ROM board           (AA017756A)
5383 
5384           - Uses Taito's three board colour version
5385             of Space Invaders PCB
5386 
5387 */
5388 
5389 ROM_START( ozmawars2 )
5390 	ROM_REGION( 0x10000, "maincpu", 0 )
5391 	ROM_LOAD( "oz1",          0x0000, 0x0400, CRC(9300830e) SHA1(7ed349f7ad01b30aefb41dcaf97e209d00f5af6c) )
5392 	ROM_LOAD( "oz2",          0x0400, 0x0400, CRC(957fc661) SHA1(ac0edc901d8033619f62967f8eaf53a02947e109) )
5393 	ROM_LOAD( "oz3",          0x0800, 0x0400, CRC(cf8f4d6c) SHA1(effb4dc48594e1b7164b37f683a5a78b1a9bdd4f) )
5394 	ROM_LOAD( "oz4",          0x0c00, 0x0400, CRC(f51544a5) SHA1(368411a2dadaebcbb4d5b6cf6c2beec036ce817f) )
5395 	ROM_LOAD( "oz5",          0x1000, 0x0400, CRC(5597bf52) SHA1(626c7348365ed974d416485d94d057745b5d9b96) )
5396 	ROM_LOAD( "oz6",          0x1400, 0x0400, CRC(19b43578) SHA1(3609b7c77f5ee6f10f302892f56fcc8375577f20) )
5397 	ROM_LOAD( "oz7",          0x1800, 0x0400, CRC(a285bfde) SHA1(ed7a9fce4d887d3b5d596645893ea87c0bafda02) )
5398 	ROM_LOAD( "oz8",          0x1c00, 0x0400, CRC(ae59a629) SHA1(0c9ea67dc35f93ec65ec91e1dab2e4b6212428bf) )
5399 	ROM_LOAD( "oz9",          0x4000, 0x0400, CRC(df0cc633) SHA1(3725af2e5a6e9ab08dd9ada345630de19c88ce73) )
5400 	ROM_LOAD( "oz10",         0x4400, 0x0400, CRC(31b7692e) SHA1(043880750d134d04311eab55e30ee223977d3d17) )
5401 	ROM_LOAD( "oz11",         0x4800, 0x0400, CRC(660e934c) SHA1(1d50ae3a9de041b908e256892203ce1738d588f6) )
5402 	ROM_LOAD( "oz12",         0x4c00, 0x0400, CRC(8b969f61) SHA1(6d12cacc73c31a897812ccd8de24725ee56dd975) )
5403 
5404 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
5405 	/* !! not dumped yet, these were taken from sisv/intruder */
5406 	ROM_LOAD( "01.1",         0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) )
5407 	ROM_LOAD( "02.2",         0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) )
5408 ROM_END
5409 
5410 ROM_START( ozmawarsmr ) // single PCB marked CS 210. No PROMS.
5411 	ROM_REGION( 0x10000, "maincpu", 0 )
5412 	ROM_LOAD( "73.1s",        0x0000, 0x0400, CRC(9300830e) SHA1(7ed349f7ad01b30aefb41dcaf97e209d00f5af6c) )
5413 	ROM_LOAD( "74.1pr",       0x0400, 0x0400, CRC(957fc661) SHA1(ac0edc901d8033619f62967f8eaf53a02947e109) )
5414 	ROM_LOAD( "75.1n",        0x0800, 0x0400, CRC(cf8f4d6c) SHA1(effb4dc48594e1b7164b37f683a5a78b1a9bdd4f) )
5415 	ROM_LOAD( "76.1m",        0x0c00, 0x0400, CRC(f51544a5) SHA1(368411a2dadaebcbb4d5b6cf6c2beec036ce817f) )
5416 	ROM_LOAD( "77.1l",        0x1000, 0x0400, CRC(4a653fe6) SHA1(22aee4c6cc3bd474d7159a552c4fb666b78fc4fb) )
5417 	ROM_LOAD( "78.1kj",       0x1400, 0x0400, CRC(fb3db187) SHA1(bbf3e316215cefe2237115d766332ce185c8ca01) )
5418 	ROM_LOAD( "79.1h",        0x1800, 0x0400, CRC(ed2d7c34) SHA1(f468b422e9f06522b034d213cebc914afb21dda1) )
5419 	ROM_LOAD( "80.1g",        0x1c00, 0x0400, CRC(85728971) SHA1(400968f5c99b50416cdeefb4405989aa8012a3d1) )
5420 	ROM_LOAD( "81.1ef",       0x4000, 0x0400, CRC(df0cc633) SHA1(3725af2e5a6e9ab08dd9ada345630de19c88ce73) )
5421 	ROM_LOAD( "82.1d",        0x4400, 0x0400, CRC(31b7692e) SHA1(043880750d134d04311eab55e30ee223977d3d17) )
5422 	ROM_LOAD( "83.1c",        0x4800, 0x0400, CRC(50257351) SHA1(5c3eb29f36f04b7fb8f0351ccf9c8cfc7587f927) )
5423 	ROM_LOAD( "84.1b",        0x4c00, 0x0400, CRC(293303c9) SHA1(bd3770ff7cf6fa38b17cdfd0e0633d84c015dea7) )
5424 ROM_END
5425 
5426 ROM_START( solfight )
5427 	ROM_REGION( 0x10000, "maincpu", 0 )
5428 	ROM_LOAD( "solfight.m",   0x0000, 0x0800, CRC(a4f2814e) SHA1(e2437e3543dcc97eeaea32babcd4aec6455581ac) )
5429 	ROM_LOAD( "solfight.n",   0x0800, 0x0800, CRC(5657ec07) SHA1(9a2fb398841160f59483bb70060caba37addb8a4) )
5430 	ROM_LOAD( "solfight.p",   0x1000, 0x0800, CRC(ef9ce96d) SHA1(96867b4f2d72f3a8827b1eb3a0748922eaa8d608) )
5431 	ROM_LOAD( "solfight.r",   0x1800, 0x0800, CRC(4f1ef540) SHA1(a798e57959e72bfb554dd2fed0e37027312f9ed3) )
5432 	ROM_LOAD( "mw05",         0x4000, 0x0800, CRC(3bc7d4c7) SHA1(b084f8cd2ce0f502c2e915da3eceffcbb448e9c0) )
5433 	ROM_LOAD( "solfight.t",   0x4800, 0x0800, CRC(3b6fb206) SHA1(db631f4a0bd5344d130ff8d723d949e9914b6f92) )
5434 ROM_END
5435 
5436 ROM_START( spaceph ) /* Also seen in a 6-rom version which matches contents exactly (sv01+sv02, sv03+sv04, etc)*/
5437 	ROM_REGION( 0x10000, "maincpu", 0 )
5438 	ROM_LOAD( "sv01.bin",     0x0000, 0x0400, CRC(de84771d) SHA1(13a7e5eedb826cca4d59634d38db9fcf5e65b732) )
5439 	ROM_LOAD( "sv02.bin",     0x0400, 0x0400, CRC(957fc661) SHA1(ac0edc901d8033619f62967f8eaf53a02947e109) )
5440 	ROM_LOAD( "sv03.bin",     0x0800, 0x0400, CRC(dbda38b9) SHA1(73a277616a0c236b07c9ffa66f16a27a78c12d70) )
5441 	ROM_LOAD( "sv04.bin",     0x0c00, 0x0400, CRC(f51544a5) SHA1(368411a2dadaebcbb4d5b6cf6c2beec036ce817f) )
5442 	ROM_LOAD( "sv05.bin",     0x1000, 0x0400, CRC(98d02683) SHA1(f13958df8d385f532e993e4c34569d992904a4ed) )
5443 	ROM_LOAD( "sv06.bin",     0x1400, 0x0400, CRC(4ec390fd) SHA1(ade23efde5d55d282fbb28a5f8a1346601501b79) )
5444 	ROM_LOAD( "sv07.bin",     0x1800, 0x0400, CRC(170862fd) SHA1(ac64a97b1510ca81d4ef3a5fcf45b7e6c7414914) )
5445 	ROM_LOAD( "sv08.bin",     0x1c00, 0x0400, CRC(511b12cf) SHA1(08ba43024c8574ded11aa457eca24b72984f5ea9) )
5446 	ROM_LOAD( "sv09.bin",     0x4000, 0x0400, CRC(af1cd1af) SHA1(286d77e8556e475b291a3b1a53acaca8b7dc3678) )
5447 	ROM_LOAD( "sv10.bin",     0x4400, 0x0400, CRC(31b7692e) SHA1(043880750d134d04311eab55e30ee223977d3d17) )
5448 	ROM_LOAD( "sv11.bin",     0x4800, 0x0400, CRC(50257351) SHA1(5c3eb29f36f04b7fb8f0351ccf9c8cfc7587f927) )
5449 	ROM_LOAD( "sv12.bin",     0x4c00, 0x0400, CRC(a2a3366a) SHA1(87032787450216d378406122effa95ea01145bf7) )
5450 ROM_END
5451 
5452 ROM_START( ballbomb )
5453 	ROM_REGION( 0x10000, "maincpu", 0 )
5454 	ROM_LOAD( "tn01",         0x0000, 0x0800, CRC(551585b5) SHA1(7c17b046bdfca6ab107b7e68ba9bde6ca590c3d4) )
5455 	ROM_LOAD( "tn02",         0x0800, 0x0800, CRC(7e1f734f) SHA1(a15656818cd730d9bc98d00ff1e7fe3f860bd624) )
5456 	ROM_LOAD( "tn03",         0x1000, 0x0800, CRC(d93e20bc) SHA1(2bf72f813750cef8fad572a18fb8e9fd5bf38804) )
5457 	ROM_LOAD( "tn04",         0x1800, 0x0800, CRC(d0689a22) SHA1(1f6b258431b7eb878853ff979e4d97a05fb6b797) )
5458 	ROM_LOAD( "tn05-1",       0x4000, 0x0800, CRC(5d5e94f1) SHA1(b9f8ba38161ef4f0940c274e9d93fed4bb7db017) )
5459 
5460 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
5461 	ROM_LOAD( "tn06",         0x0000, 0x0400, CRC(7ec554c4) SHA1(b638605ba2043fdca4c5e18755fa5fa81ed3db07) )
5462 	ROM_LOAD( "tn07",         0x0400, 0x0400, CRC(deb0ac82) SHA1(839581c4e58cb7b0c2c14cf4f239220017cc26eb) )
5463 
5464 	ROM_REGION( 0x0100, "user1", 0 )        /* cloud graphics (missing) */
5465 	ROM_LOAD( "mb7052.2c",    0x0000, 0x0100, NO_DUMP )
5466 ROM_END
5467 
5468 ROM_START( yosakdon )
5469 	ROM_REGION( 0x10000, "maincpu", 0 )
5470 	ROM_LOAD( "yd1.bin",      0x0000, 0x0400, CRC(607899c9) SHA1(219c0c99894715818606fba49cc75517f6f43e0c) )
5471 	ROM_LOAD( "yd2.bin",      0x0400, 0x0400, CRC(78336df4) SHA1(b0b6254568d191d2d0b9c9280a3ccf2417ef3f38) )
5472 	ROM_LOAD( "yd3.bin",      0x0800, 0x0400, CRC(c5af6d52) SHA1(c40af79fe060562c64fc316881b7d0348e11ee3f) )
5473 	ROM_LOAD( "yd4.bin",      0x0c00, 0x0400, CRC(dca8064f) SHA1(77a58137cc7f0b5fbe0e9e8deb9c5be88b1ebbcf) )
5474 	ROM_LOAD( "yd5.bin",      0x1400, 0x0400, CRC(38804ff1) SHA1(9b7527b9d2b106355f0c8df46666b1e3f286b2e3) )
5475 	ROM_LOAD( "yd6.bin",      0x1800, 0x0400, CRC(988d2362) SHA1(deaf864b4e287cbc2585c2a11343b1ae82e15463) )
5476 	ROM_LOAD( "yd7.bin",      0x1c00, 0x0400, CRC(2744e68b) SHA1(5ad5a7a615d36f57b6d560425e035c15e25e9005) )
5477 ROM_END
5478 
5479 ROM_START( yosakdona )
5480 	ROM_REGION( 0x10000, "maincpu", 0 )
5481 	ROM_LOAD( "yosaku1",      0x0000, 0x0400, CRC(d132f4f0) SHA1(373c7ea1bd6debcb3dad5881793b8c31dc7a01e6) )
5482 	ROM_LOAD( "yd2.bin",      0x0400, 0x0400, CRC(78336df4) SHA1(b0b6254568d191d2d0b9c9280a3ccf2417ef3f38) )
5483 	ROM_LOAD( "yosaku3",      0x0800, 0x0400, CRC(b1a0b3eb) SHA1(4eb80668920b45dc6216424f8ca53d753a35f4f1) )
5484 	ROM_LOAD( "yosaku4",      0x0c00, 0x0400, CRC(c06c225e) SHA1(2699e3c13b09b6de16bd3ca3ca2e9d7a91b7e268) )
5485 	ROM_LOAD( "yosaku5",      0x1400, 0x0400, CRC(ae422a43) SHA1(5219680f9d6c5d984b29167f85106fa375856121) )
5486 	ROM_LOAD( "yosaku6",      0x1800, 0x0400, CRC(26b24a12) SHA1(387589fa4027d41b6fb06555661d4f92fe2f990c) )
5487 	ROM_LOAD( "yosaku7",      0x1c00, 0x0400, CRC(878d5a18) SHA1(6adc8763d5644602eed7fe6d9186a48be105aace) )
5488 ROM_END
5489 
5490 ROM_START( indianbt )
5491 	ROM_REGION( 0x10000, "maincpu", 0 )
5492 	ROM_LOAD( "1.36",       0x0000, 0x0800, CRC(ddc2b25d) SHA1(120ae17492b79d7d2ad515de9f1e3be7f8b9d4eb) )
5493 	ROM_LOAD( "2.35",       0x0800, 0x0800, CRC(6499b062) SHA1(62a301d532b9fc4e7a17cbe8d2061eb0e842bdfa) )
5494 	ROM_LOAD( "3.34",       0x1000, 0x0800, CRC(5c51675d) SHA1(1313e8794ee6cd0252452b96d42cff7907eeaa21) )
5495 	ROM_LOAD( "4.33",       0x1800, 0x0800, CRC(70ebec95) SHA1(f6e1e7a28033d89e49b88c559ea8926b1b4ff21b) )
5496 	ROM_LOAD( "5.32",       0x4000, 0x0800, CRC(7b4022f4) SHA1(10dec8110e8f4bc79764d3183bdfb3c135e27faf) )
5497 	ROM_LOAD( "6.31",       0x4800, 0x0800, CRC(89bd6f73) SHA1(5dc63871252c530ef0aae4f4cd02fee44b397815) )
5498 	ROM_LOAD( "7.42",       0x5000, 0x0800, CRC(7060ba0b) SHA1(366ce02b7b0a3391afef23b8b41cd98a91034830) )
5499 	ROM_LOAD( "8.41",       0x5800, 0x0800, CRC(eaccfc0a) SHA1(c6c2d702243bdd1d2ad5fbaaceadb5a5798577bc) )
5500 
5501 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
5502 	ROM_LOAD( "mb7054.1",   0x0000, 0x0400, CRC(4acf4db3) SHA1(842a6c9f91806b424b7cc437670b4fe0bd57dff1) )
5503 	ROM_LOAD( "mb7054.2",   0x0400, 0x0400, CRC(62cb3419) SHA1(3df65062945589f1df37359dbd3e30ae4b23f469) )
5504 ROM_END
5505 
5506 ROM_START( indianbtbr )
5507 	ROM_REGION( 0x10000, "maincpu", 0 )
5508 	ROM_LOAD( "1.36",       0x0000, 0x0800, CRC(5cf6316b) SHA1(9812fbb7139d6f33a832a2485f9cd6422146d1ae) ) // sldh
5509 	ROM_LOAD( "2.35",       0x0800, 0x0800, CRC(882c7421) SHA1(b2cc15c8693bd1fc74dddfcf52bf08984423f4bf) ) // sldh
5510 	ROM_LOAD( "3.34",       0x1000, 0x0800, CRC(5c51675d) SHA1(1313e8794ee6cd0252452b96d42cff7907eeaa21) )
5511 	ROM_LOAD( "4.33",       0x1800, 0x0800, CRC(70ebec95) SHA1(f6e1e7a28033d89e49b88c559ea8926b1b4ff21b) )
5512 	ROM_LOAD( "5.32",       0x4000, 0x0800, CRC(aa12dbae) SHA1(083425b82cfdc0f037afcf293ad03b98fc6af3e5) ) // sldh
5513 	ROM_LOAD( "6.31",       0x4800, 0x0800, CRC(d9cb1691) SHA1(c13cd8479914ba6719427b408ed589c9892f832c) ) // sldh
5514 	ROM_LOAD( "7.42",       0x5000, 0x0800, CRC(7060ba0b) SHA1(366ce02b7b0a3391afef23b8b41cd98a91034830) )
5515 	ROM_LOAD( "8.41",       0x5800, 0x0800, CRC(e96699d6) SHA1(701d370ae28608221fb4d00e12877d30122c848e) )
5516 
5517 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 */
5518 	ROM_LOAD( "mb7054.1",   0x0000, 0x0400, CRC(4acf4db3) SHA1(842a6c9f91806b424b7cc437670b4fe0bd57dff1) )
5519 	ROM_LOAD( "mb7054.2",   0x0400, 0x0400, CRC(62cb3419) SHA1(3df65062945589f1df37359dbd3e30ae4b23f469) )
5520 ROM_END
5521 
5522 ROM_START( shuttlei )
5523 	ROM_REGION( 0x10000, "maincpu", 0 )
5524 	ROM_LOAD( "1.13c",      0x0000, 0x0400, CRC(b6d4f0cd) SHA1(f855a793e78ff6283288c815b59e6942513ab4f8) )
5525 	ROM_LOAD( "2.11c",      0x0400, 0x0400, CRC(168d6138) SHA1(e0e5ba58eb5a3a00802504c48a96d63522f9865f) )
5526 	ROM_LOAD( "3.13d",      0x0800, 0x0400, CRC(804bd7fb) SHA1(f019bcc2894f9b819a14c069de8f1a7d228b79eb) )
5527 	ROM_LOAD( "4.11d",      0x0c00, 0x0400, CRC(8205b369) SHA1(685dd244881f5762d0f53cbfa935da2b857e3fba) )
5528 	ROM_LOAD( "5.13e",      0x1000, 0x0400, CRC(b50df820) SHA1(27a846ac3da4c0890a80f60483ed5750cb0b2476) )
5529 	ROM_LOAD( "8.11f",      0x1c00, 0x0400, CRC(4978552b) SHA1(5a6b6e39f57a353580ed9281d7da24950f058426) )
5530 
5531 	ROM_REGION( 0x0100, "proms", 0 )
5532 	ROM_LOAD( "82s129.2b",  0x0000, 0x0100, CRC(f108d00d) SHA1(de0cb9d18e4c9920495011f962c4497a789f651f) )
5533 ROM_END
5534 
5535 ROM_START( skylove )
5536 	ROM_REGION( 0x10000, "maincpu", 0 )
5537 	ROM_LOAD( "01",   0x0000, 0x0400, CRC(391ad7d0) SHA1(73358fff44da5fffd4e08fbb615ccc0245e3365b) )
5538 	ROM_LOAD( "02",   0x0400, 0x0400, CRC(365ba070) SHA1(8493bde493ea0d04b3563f9bc752a6ec57022524) )
5539 	ROM_LOAD( "03",   0x0800, 0x0400, CRC(47364dad) SHA1(b49704f8d49a0866cb9cd8bb867f30246e3dabc9) )
5540 	ROM_LOAD( "04",   0x0c00, 0x0400, CRC(9d76f33d) SHA1(5aa6a081a3609e6c036843049d58cc763a86fedb) )
5541 	ROM_LOAD( "05",   0x1000, 0x0400, CRC(09084954) SHA1(f5c826188ffb7a572c45aad94e794f31bebfebe5) )
5542 	ROM_LOAD( "06",   0x1400, 0x0400, CRC(6d494e82) SHA1(8e5ee1b842621cd088e80124b92b8a517e8dfbb9) )
5543 	ROM_LOAD( "07",   0x1800, 0x0400, CRC(1a9aa4b8) SHA1(0da553c6343a2740312ebafc2b936ffbbf24af04) )
5544 	ROM_LOAD( "08",   0x1c00, 0x0400, CRC(ecaacacc) SHA1(b815366d3aaa8ef311cd54a5be9fb4d60324e5a7) )
5545 ROM_END
5546 
5547 
5548 ROM_START( darthvdr )
5549 	ROM_REGION( 0x10000, "maincpu", 0 )
5550 	ROM_LOAD( "rom0",           0x0000, 0x0400, CRC(b15785b6) SHA1(f453a006019dc83bd746f3a26736e913186332e6) )
5551 	ROM_LOAD( "rom1",           0x0400, 0x0400, CRC(95947743) SHA1(59f414de21f680e0d68ca8c4b6b538c8006cfdd6) )
5552 	ROM_LOAD( "rom2",           0x0800, 0x0400, CRC(19b1731f) SHA1(2383c241de8a1ed57f03ecc7ded97585a6c10c91) )
5553 	ROM_LOAD( "rom3",           0x0c00, 0x0400, CRC(ca1b5e3c) SHA1(e54ca4a3f36b2ed5e4e42c1e8bbbde43c92796e9) )
5554 	ROM_LOAD( "rom4",           0x1000, 0x0400, CRC(eede5f41) SHA1(cd9f023057eb9598bad01b9e9d91bb4866b9bd3b) )
5555 	ROM_LOAD( "rom5",           0x1400, 0x0400, CRC(cc52a4bb) SHA1(857b75a8b01fc707db940197d6bf3b0466c4a7b5) )
5556 ROM_END
5557 
5558 ROM_START( astropal )
5559 	ROM_REGION( 0x10000, "maincpu", 0 )
5560 	ROM_LOAD( "2708.0a",   0x0000, 0x0400, CRC(e6883322) SHA1(05b0ab0dc6297209dcfdd173e762bfae3a720e8d) )
5561 	ROM_LOAD( "2708.1a",   0x0400, 0x0400, CRC(4401df1d) SHA1(16f3b957278aa67cb37bcd5defb6e4dd8ccf7d1f) )
5562 	ROM_LOAD( "2708.2a",   0x0800, 0x0400, CRC(5bac1ee4) SHA1(8c3e5f882f4798f8ed0523b60a216c989324a7c2) )
5563 	ROM_LOAD( "2708.3a",   0x0c00, 0x0400, CRC(a870afad) SHA1(1a256db2bc6baa238ee1df4eff2fdce0888f812c) )
5564 	ROM_LOAD( "2708.4a",   0x1000, 0x0400, CRC(8bd2d985) SHA1(3ff9110c1bad7d4562664da772d14750d738c2d6) )
5565 	ROM_LOAD( "2708.5a",   0x1400, 0x0400, CRC(5e97a86b) SHA1(f3500d48ecb3969b8aaea9c4e812fbf6cf4170af) )
5566 	ROM_LOAD( "2708.6a",   0x1800, 0x0400, CRC(22c354d0) SHA1(c465ca5787ad8de3be97deac1214d3abd0b27e6b) )
5567 	ROM_LOAD( "2708.7a",   0x1c00, 0x0400, CRC(aeca51c1) SHA1(767bca1e6bca41327b9ff6c3570edcabe46dec21) )
5568 ROM_END
5569 
5570 ROM_START( steelwkr )
5571 	ROM_REGION( 0x10000, "maincpu", 0 )
5572 	ROM_LOAD( "1.36",             0x0000, 0x0400, CRC(5d78873a) SHA1(293cbc067937668148181453877239cb5ed57600) )
5573 	ROM_LOAD( "2.35",             0x0400, 0x0400, CRC(99cd70c6) SHA1(a08bf4db6b39d22dfcf052cc6603aab041db0208) )
5574 	ROM_LOAD( "3.34",             0x0800, 0x0400, CRC(18103b67) SHA1(45929ea56ab15769fc68873570aab3d403e8e913) )
5575 	ROM_LOAD( "4.33",             0x0c00, 0x0400, CRC(c413ae82) SHA1(302b933b45b2aaa515434b5268fd74aec4160e3f) )
5576 	ROM_LOAD( "5.32",             0x1000, 0x0400, CRC(ca7b07b5) SHA1(cbea221c4daf84825f99bbef6d731fc2ef88feeb) )
5577 	ROM_LOAD( "6.31",             0x1400, 0x0400, CRC(f8181fa0) SHA1(a907611529a1500a2ae118e834c2d4b6d11974f1) )
5578 	ROM_LOAD( "7.42",             0x1800, 0x0400, CRC(a35f113e) SHA1(53073037db55c14055810c0bee7b85eb75bbaa72) )
5579 	ROM_LOAD( "8.41",             0x1c00, 0x0400, CRC(af208370) SHA1(ccbd002accda26cc0a02987d9801a47e5f49921a) )
5580 
5581 	ROM_REGION( 0x0800, "proms", 0 )        /* color maps player 1/player 2 (not used, but they were on the board) */
5582 	ROM_LOAD( "la05.1",         0x0000, 0x0400, CRC(98f31392) SHA1(ccdd1bd2ddd24bd6b1f8255a87e138f937eaf5b4) )
5583 	ROM_LOAD( "la06.2",         0x0400, 0x0400, CRC(98f31392) SHA1(ccdd1bd2ddd24bd6b1f8255a87e138f937eaf5b4) )
5584 ROM_END
5585 
5586 ROM_START( galactic )
5587 	ROM_REGION( 0x10000, "maincpu", 0 )
5588 	ROM_LOAD( "1",       0x0000, 0x0800, CRC(b5098f1e) SHA1(9d1d045d8abeafd4716d3052fe93e52c6b347049) ) // sldh
5589 	ROM_LOAD( "2",       0x0800, 0x0800, CRC(f97410ee) SHA1(47f1f296c905fa13f6c521edc12c10f1f0e42400) )
5590 	ROM_LOAD( "3",       0x1000, 0x0800, CRC(c1175feb) SHA1(83bf955ed3a52e1ce8c688d89725d8dee1bcc866) )
5591 	ROM_LOAD( "4",       0x1800, 0x0800, CRC(b4451d7c) SHA1(62a18e8e927ef00a7f6cb933cdc5aeae9f074dc0) )
5592 	ROM_LOAD( "5",       0x4000, 0x0800, CRC(74c9da61) SHA1(cb98105729f0fa4343b71af3c658b378ade1ed46) )
5593 	ROM_LOAD( "6",       0x4800, 0x0800, CRC(5e7c6c44) SHA1(be7eeef10462377909018cf40503766f38466022) )
5594 	ROM_LOAD( "7",       0x5000, 0x0800, CRC(02619e18) SHA1(4c59f17fbc96ca08090f08c41ca9fc72c074e9c0) )
5595 ROM_END
5596 
5597 ROM_START( spacmiss )
5598 	ROM_REGION( 0x10000, "maincpu", 0 )
5599 	ROM_LOAD( "1",       0x0000, 0x0800, CRC(e212dc88) SHA1(bc56052bf43d18081f777b936b2be792e91ba842) ) // sldh
5600 	ROM_LOAD( "2",       0x0800, 0x0800, CRC(f97410ee) SHA1(47f1f296c905fa13f6c521edc12c10f1f0e42400) )
5601 	ROM_LOAD( "3",       0x1000, 0x0800, CRC(c1175feb) SHA1(83bf955ed3a52e1ce8c688d89725d8dee1bcc866) )
5602 	ROM_LOAD( "4",       0x1800, 0x0800, CRC(b4451d7c) SHA1(62a18e8e927ef00a7f6cb933cdc5aeae9f074dc0) )
5603 	ROM_LOAD( "5",       0x4000, 0x0800, CRC(74c9da61) SHA1(cb98105729f0fa4343b71af3c658b378ade1ed46) )
5604 	ROM_LOAD( "6",       0x4800, 0x0800, CRC(5e7c6c44) SHA1(be7eeef10462377909018cf40503766f38466022) )
5605 	ROM_LOAD( "7",       0x5000, 0x0800, CRC(02619e18) SHA1(4c59f17fbc96ca08090f08c41ca9fc72c074e9c0) )
5606 
5607 	ROM_REGION( 0x0800, "user1", 0 )
5608 	ROM_LOAD( "8",       0x0000, 0x0800, CRC(942e5261) SHA1(e8af51d644eab4e7b31c14dc66bb036ad8940c42) ) // ?
5609 ROM_END
5610 
5611 ROM_START( attackfc )
5612 	ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
5613 	ROM_LOAD( "30a.bin",       0x0000, 0x0400, CRC(c12e3386) SHA1(72b1d3d67a83edf0be0b0c37ef6dcffba450f16f) )
5614 	ROM_LOAD( "36a.bin",       0x0400, 0x0400, CRC(6738dcb9) SHA1(e4c68553fc3f2d3db3d251b9cb325e2409d9c02a) )
5615 	ROM_LOAD( "31a.bin",       0x0800, 0x0400, CRC(787a4658) SHA1(5be3143bdba6a32256603be94400034a8ea1fda6) )
5616 	ROM_LOAD( "37a.bin",       0x0c00, 0x0400, CRC(ad6bfbbe) SHA1(5f5437b6c8e7dfe9649b25040862f8a51d8c43ed) )
5617 	ROM_LOAD( "32a.bin",       0x1000, 0x0400, CRC(cbe0a711) SHA1(6e5f4214a4b48b70464005f4263c9b1ec3cbbeb1) )
5618 	ROM_LOAD( "33a.bin",       0x1800, 0x0400, CRC(53147393) SHA1(57e078f1734e382e8a46be09c133daab30c75681) )
5619 	ROM_LOAD( "39a.bin",       0x1c00, 0x0400, CRC(f538cf08) SHA1(4a375a41ab5d9f0d9f9a2ebef4c448038c139204) )
5620 ROM_END
5621 
5622 ROM_START( cane )
5623 	ROM_REGION( 0x10000, "maincpu", 0 )
5624 	ROM_LOAD( "mrcane.71",     0x0000, 0x0800, CRC(47de691e) SHA1(8ed359774489ccf6023819b0d604b5a6d94b9f98) )
5625 	ROM_LOAD( "mrcane.70",     0x0800, 0x0800, CRC(3f3ee3b9) SHA1(ef45cf76697bbe037c680021ffa663856f2972d0) )
5626 	ROM_LOAD( "mrcane.69",     0x1000, 0x0800, CRC(d1fd883f) SHA1(30572ac7052d4898e458ad3130cc05f153427a64) )
5627 	ROM_LOAD( "mrcane.62",     0x1800, 0x0800, CRC(0d37cc00) SHA1(02f136b499cca35c70a6aaae475c516d91392e36) )
5628 ROM_END
5629 
5630 ROM_START( orbite ) // romset created from sources and assembled.  mrxx.69 is "00" padded to retain size consistancy
5631 	ROM_REGION( 0x10000, "maincpu", 0 )
5632 	ROM_LOAD( "mrxx.71",     0x0000, 0x0800, CRC(78cf0c8a) SHA1(0bda9352c35e2ac175bd5ce6ee42e94247f5149a) )
5633 	ROM_LOAD( "mrxx.70",     0x0800, 0x0800, CRC(2914a5c4) SHA1(ac38c3a1c537ab22301bede0013db0d485012237) )
5634 	ROM_LOAD( "mrxx.69",     0x1000, 0x0800, CRC(c3e464f5) SHA1(731897c69547eaf103ccaed156b2ef947c72274a) )
5635 ROM_END
5636 
5637 //    year  rom          parent    machine    inp        class           init           monitor ...
5638 
5639 // Taito games (+clones), starting with Space Invaders
5640 GAME( 1978, sisv1,       invaders, invaders,  sitv,      mw8080bw_state, empty_init,    ROT270, "Taito", "Space Invaders (SV Version rev 1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5641 GAME( 1978, sisv2,       invaders, invaders,  sitv,      mw8080bw_state, empty_init,    ROT270, "Taito", "Space Invaders (SV Version rev 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5642 GAME( 1978, sisv3,       invaders, invaders,  sitv,      mw8080bw_state, empty_init,    ROT270, "Taito", "Space Invaders (SV Version rev 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5643 GAME( 1978, sisv,        invaders, invaders,  sitv,      mw8080bw_state, empty_init,    ROT270, "Taito", "Space Invaders (SV Version rev 4)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5644 GAMEL(1978, sitv1,       invaders, invaders,  sitv,      mw8080bw_state, empty_init,    ROT270, "Taito", "Space Invaders (TV Version rev 1)", MACHINE_SUPPORTS_SAVE, layout_invaders )
5645 GAMEL(1978, sitv,        invaders, invaders,  sitv,      mw8080bw_state, empty_init,    ROT270, "Taito", "Space Invaders (TV Version rev 2)", MACHINE_SUPPORTS_SAVE, layout_invaders )
5646 GAME( 1979, sicv,        invaders, invadpt2,  sicv,      _8080bw_state,  empty_init,    ROT270, "Taito", "Space Invaders (CV Version, larger roms)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5647 GAME( 1979, sicv1,       invaders, invadpt2,  sicv,      _8080bw_state,  empty_init,    ROT270, "Taito", "Space Invaders (CV Version, smaller roms)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5648 GAMEL(1978, invadrmr,    invaders, invaders,  invadrmr,  mw8080bw_state, empty_init,    ROT270, "Taito / Model Racing", "Space Invaders (Model Racing)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
5649 GAMEL(1978, invaderl,    invaders, invaders,  sicv,      mw8080bw_state, empty_init,    ROT270, "Taito / Logitec", "Space Invaders (Logitec)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
5650 GAMEL(1978, invadernc,   invaders, invaders,  sicv,      mw8080bw_state, empty_init,    ROT270, "bootleg (Nas Corp)", "Space Invaders (Nas Corp bootleg)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE, layout_invaders ) // runs on original Logitec PCB, PROM dump might be bad, needs correct decoding anyway
5651 GAMEL(1978, spcewars,    invaders, spcewars,  spcewars,  _8080bw_state,  empty_init,    ROT270, "Taito / Sanritsu", "Space War (Sanritsu)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
5652 GAME( 1979, spcewarla,   invaders, spcewarla, spcewars,  _8080bw_state,  empty_init,    ROT270, "bootleg (Leisure and Allied)", "Space War (Leisure and Allied)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // unclassified, licensed or bootleg?
5653 GAMEL(1978, spceking,    invaders, invaders,  sicv,      mw8080bw_state, empty_init,    ROT270, "Taito / Leijac Corporation", "Space King", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
5654 GAMEL(1979, cosmicmo,    invaders, cosmicmo,  cosmicmo,  _8080bw_state,  empty_init,    ROT270, "Taito / Universal", "Cosmic Monsters (version II)", MACHINE_SUPPORTS_SAVE, layout_cosmicm ) // unclassified, licensed or bootleg?
5655 GAMEL(1979, cosmicm2,    invaders, cosmicmo,  cosmicmo,  _8080bw_state,  empty_init,    ROT270, "Taito / Universal", "Cosmic Monsters 2", MACHINE_SUPPORTS_SAVE, layout_cosmicm ) // unclassified, licensed or bootleg?
5656 GAMEL(1980?,sinvzen,     invaders, invaders,  sinvzen,   mw8080bw_state, empty_init,    ROT270, "Taito / Zenitone-Microsec Ltd.", "Super Invaders (Zenitone-Microsec)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
5657 GAMEL(1980, ultrainv,    invaders, invaders,  sicv,      mw8080bw_state, empty_init,    ROT270, "Taito / Konami", "Ultra Invaders", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
5658 GAMEL(1978, spaceatt,    invaders, invaders,  sicv,      mw8080bw_state, empty_init,    ROT270, "bootleg (Video Games GmbH)", "Space Attack (bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders )
5659 GAMEL(1978, spaceattbp,  invaders, invaders,  sicv,      mw8080bw_state, empty_init,    ROT270, "bootleg (Video Games GmbH)", "Space Attack (bproms)(bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders )
5660 GAMEL(1978, spaceatt2k,  invaders, invaders,  sicv,      mw8080bw_state, empty_init,    ROT270, "bootleg (Video Games GmbH)", "Space Attack (2k roms)(bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders )
5661 GAMEL(1978, cosmicin,    invaders, invaders,  sicv,      mw8080bw_state, empty_init,    ROT270, "bootleg", "Cosmic Invaders (bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders )
5662 GAMEL(1978, galmonst,    invaders, invaders,  sicv,      mw8080bw_state, empty_init,    ROT270, "bootleg (Laguna S.A.)", "Galaxy Monsters (Laguna S.A. Spanish bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders )
5663 GAMEL(1980, spaceat2,    invaders, invaders,  spaceat2,  mw8080bw_state, empty_init,    ROT270, "bootleg (Video Games UK)", "Space Attack II (bootleg of Super Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // bootleg of Zenitone-Microsec Super Invaders
5664 GAMEL(1979, spacecom,    invaders, spacecom,  spacecom,  _8080bw_state,  init_spacecom, ROT270, "bootleg", "Space Combat (bootleg of Space Invaders)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_spacecom )
5665 GAME( 1978, spacerng,    invaders, spacerng,  sitv,      _8080bw_state,  empty_init,    ROT90,  "bootleg (Leisure Time Electronics)", "Space Ranger", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // many modifications
5666 GAMEL(19??, invasion,    invaders, invaders,  invasion,  mw8080bw_state, empty_init,    ROT270, "bootleg (Sidam)", "Invasion (Sidam)", MACHINE_SUPPORTS_SAVE, layout_invaders )
5667 GAMEL(1979, invasiona,   invaders, invaders,  invasion,  mw8080bw_state, empty_init,    ROT270, "bootleg", "UFO Robot Attack (bootleg of Invasion, newer set)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // has Sidam replaced with 'Ufo Monster Attack' and standard GFX
5668 GAMEL(1979, invasiona2,  invaders, invaders,  invasion,  mw8080bw_state, empty_init,    ROT270, "bootleg", "UFO Robot Attack (bootleg of Invasion, older set)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // has Sidam replaced with 'Ufo Monster Attack' and standard GFX
5669 GAMEL(1979, invasionb,   invaders, invaders,  invasion,  mw8080bw_state, empty_init,    ROT270, "bootleg", "Invasion (Italian bootleg)", MACHINE_SUPPORTS_SAVE, layout_invaders )
5670 GAMEL(1979, invasionrz,  invaders, invaders,  invasion,  mw8080bw_state, empty_init,    ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 1, R Z SRL Bologna)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_invaders )
5671 GAMEL(1979, invasionrza, invaders, invaders,  invasion,  mw8080bw_state, empty_init,    ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 2, R Z SRL Bologna)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_invaders )
5672 GAMEL(19??, invadersem,  invaders, invaders,  sitv,      mw8080bw_state, empty_init,    ROT270, "Electromar", "Space Invaders (Electromar, Spanish)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // possibly licensed
5673 GAMEL(1978, superinv,    invaders, invaders,  superinv,  mw8080bw_state, empty_init,    ROT270, "bootleg", "Super Invaders (bootleg set 1)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // not related to Zenitone-Microsec version
5674 GAMEL(1978, sinvemag,    invaders, invaders,  sinvemag,  mw8080bw_state, empty_init,    ROT270, "bootleg (Emag)", "Super Invaders (bootleg set 2)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // not related to Zenitone-Microsec version
5675 GAMEL(1980, searthin,    invaders, invaders,  searthin,  mw8080bw_state, empty_init,    ROT270, "bootleg (Competitive Video)", "Super Earth Invasion (set 1)", MACHINE_SUPPORTS_SAVE, layout_invaders )
5676 GAMEL(1980, searthina,   invaders, invaders,  searthin,  mw8080bw_state, empty_init,    ROT270, "bootleg (Competitive Video)", "Super Earth Invasion (set 2)", MACHINE_SUPPORTS_SAVE, layout_invaders )
5677 GAMEL(1979, supinvsion,  invaders, invaders,  searthin,  mw8080bw_state, empty_init,    ROT270, "bootleg (Electromar / Irecsa)", "Super Invasion (Electromar, Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_CONTROLS, layout_invaders )
5678 GAMEL(1980, searthie,    invaders, invaders,  searthin,  mw8080bw_state, empty_init,    ROT270, "bootleg (Electrocoin)", "Super Earth Invasion (set 3)", MACHINE_SUPPORTS_SAVE, layout_invaders )
5679 GAMEL(19??, alieninv,    invaders, invaders,  alieninv,  mw8080bw_state, empty_init,    ROT270, "bootleg (Margamatics)", "Alien Invasion", MACHINE_SUPPORTS_SAVE, layout_invaders )
5680 GAMEL(19??, alieninvp2,  invaders, invaders,  searthin,  mw8080bw_state, empty_init,    ROT270, "bootleg", "Alien Invasion Part II", MACHINE_SUPPORTS_SAVE, layout_invaders )
5681 GAMEL(1979, jspecter,    invaders, invaders,  jspecter,  mw8080bw_state, empty_init,    ROT270, "bootleg (Jatre)", "Jatre Specter (set 1)", MACHINE_SUPPORTS_SAVE, layout_invaders )
5682 GAMEL(1979, jspecter2,   invaders, invaders,  jspecter,  mw8080bw_state, empty_init,    ROT270, "bootleg (Jatre)", "Jatre Specter (set 2)", MACHINE_SUPPORTS_SAVE, layout_invaders )
5683 GAMEL(1978, spacewr3,    invaders, spcewars,  sicv,      _8080bw_state,  empty_init,    ROT270, "bootleg", "Space War Part 3", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders ) // unrelated to Sanritsu's version?
5684 GAMEL(1978, swipeout,    invaders, spcewars,  sicv,      _8080bw_state,  empty_init,    ROT270, "bootleg (Beyer and Brown)", "Space Wipeout", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders )
5685 GAMEL(1978, invader4,    invaders, invaders,  sicv,      mw8080bw_state, empty_init,    ROT270, "bootleg", "Space Invaders Part Four", MACHINE_SUPPORTS_SAVE, layout_invaders )
5686 GAME( 1978, darthvdr,    invaders, darthvdr,  darthvdr,  _8080bw_state,  empty_init,    ROT270, "bootleg", "Darth Vader (bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5687 GAMEL(19??, tst_invd,    invaders, invaders,  sicv,      mw8080bw_state, empty_init,    ROT0,   "<unknown>", "Space Invaders Test ROM", MACHINE_SUPPORTS_SAVE, layout_invaders )
5688 
5689 // other Taito
5690 GAME( 1979, invadpt2,    0,        invadpt2,  invadpt2,  _8080bw_state,  empty_init,    ROT270, "Taito", "Space Invaders Part II (Taito, bigger ROMs)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5691 GAME( 1979, invadpt2a,   invadpt2, invadpt2,  invadpt2,  _8080bw_state,  empty_init,    ROT270, "Taito", "Space Invaders Part II (Taito, smaller ROMs)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5692 GAME( 1979, invadpt2br,  invadpt2, invadpt2,  invadpt2,  _8080bw_state,  empty_init,    ROT270, "Taito do Brasil", "Space Invaders Part II (Brazil)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5693 GAME( 1980, invaddlx,    invadpt2, invaders,  invadpt2,  mw8080bw_state, empty_init,    ROT270, "Taito (Midway license)", "Space Invaders Deluxe", MACHINE_SUPPORTS_SAVE )
5694 GAME( 1979, moonbase,    invadpt2, invadpt2,  invadpt2,  _8080bw_state,  empty_init,    ROT270, "Taito / Nichibutsu", "Moon Base Zeta (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // this has a 'Taito Corp' string hidden away in the rom - to display it, press P1 Right+P1 Fire+2P Start then P1 Left+P1 Fire+P1 Start at the attract gameplay sequence
5695 GAME( 1979, moonbasea,   invadpt2, invadpt2,  invadpt2,  _8080bw_state,  empty_init,    ROT270, "Taito / Nichibutsu", "Moon Base Zeta (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // this has the same string replaced with Nichibutsu, no other differences
5696 
5697 GAME( 1979, spcewarl,    0,        invadpt2,  spclaser,  _8080bw_state,  empty_init,    ROT270, "Leijac Corporation", "Space War (Leijac Corporation)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // Taito's version is actually a spin-off of this?
5698 GAME( 1980, spclaser,    spcewarl, invadpt2,  spclaser,  _8080bw_state,  empty_init,    ROT270, "Taito", "Space Laser", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
5699 GAME( 1980, intruder,    spcewarl, invadpt2,  spclaser,  _8080bw_state,  empty_init,    ROT270, "Taito (Game Plan license)", "Intruder", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5700 GAME( 1980, laser,       spcewarl, invadpt2,  spclaser,  _8080bw_state,  empty_init,    ROT270, "bootleg (Leisure Time Electronics)", "Astro Laser (bootleg of Space Laser)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
5701 
5702 GAME( 1979, lrescue,     0,        lrescue,   lrescue,   _8080bw_state,  empty_init,    ROT270, "Taito", "Lunar Rescue", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5703 GAME( 1979, grescue,     lrescue,  lrescue,   lrescue,   _8080bw_state,  empty_init,    ROT270, "Taito (Universal license?)", "Galaxy Rescue", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5704 GAME( 1980, mlander,     lrescue,  lrescue,   lrescue,   _8080bw_state,  empty_init,    ROT270, "bootleg (Leisure Time Electronics)", "Moon Lander (bootleg of Lunar Rescue)", MACHINE_SUPPORTS_SAVE )
5705 GAME( 1979, lrescuem,    lrescue,  lrescue,   lrescue,   _8080bw_state,  empty_init,    ROT270, "bootleg (Model Racing)", "Lunar Rescue (Model Racing bootleg, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5706 GAME( 1979, lrescuem2,   lrescue,  lrescue,   lrescue,   _8080bw_state,  empty_init,    ROT270, "bootleg (Model Racing)", "Lunar Rescue (Model Racing bootleg, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5707 GAME( 1979, desterth,    lrescue,  lrescue,   lrescue,   _8080bw_state,  empty_init,    ROT270, "bootleg", "Destination Earth (bootleg of Lunar Rescue)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5708 GAMEL(1980, escmars,     lrescue,  escmars,   lrescue,   _8080bw_state,  empty_init,    ROT270, "bootleg", "Escape from Mars (bootleg of Lunar Rescue)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_escmars )
5709 
5710 GAME( 1979, schaser,     0,        schaser,   schaser,   _8080bw_state,  empty_init,    ROT270, "Taito", "Space Chaser (set 1)", MACHINE_SUPPORTS_SAVE )
5711 GAME( 1979, schasera,    schaser,  schaser,   schaser,   _8080bw_state,  empty_init,    ROT270, "Taito", "Space Chaser (set 2)", MACHINE_SUPPORTS_SAVE )
5712 GAME( 1979, schaserb,    schaser,  schaser,   schaser,   _8080bw_state,  empty_init,    ROT270, "Taito", "Space Chaser (set 3)", MACHINE_SUPPORTS_SAVE )
5713 GAME( 1979, schaserc,    schaser,  schaser,   schaser,   _8080bw_state,  empty_init,    ROT270, "Taito", "Space Chaser (set 4)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS )
5714 GAME( 1979, schasercv,   schaser,  schasercv, schasercv, _8080bw_state,  empty_init,    ROT270, "Taito", "Space Chaser (CV version - set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS )
5715 GAME( 1979, schaserm,    schaser,  schaser,   schaserm,  _8080bw_state,  empty_init,    ROT270, "bootleg (Model Racing)", "Space Chaser (Model Racing bootleg)", MACHINE_SUPPORTS_SAVE ) // on original Taito PCB, hacked to be harder?
5716 GAME( 1979, crashrd,     schaser,  crashrd,   schaserm,  _8080bw_state,  empty_init,    ROT270, "bootleg (Centromatic)", "Crash Road (bootleg of Space Chaser)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND  | MACHINE_NO_COCKTAIL ) // PCB marked 'Imbader'; "Taito Corporation" on title screen replaced with a Spanish phone number
5717 
5718 GAME( 1979, sflush,      0,        sflush,    sflush,    _8080bw_state,  empty_init,    ROT270, "Taito", "Straight Flush", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL)
5719 
5720 GAME( 1980, lupin3,      0,        lupin3,    lupin3,    _8080bw_state,  empty_init,    ROT270, "Taito", "Lupin III (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5721 GAME( 1980, lupin3a,     lupin3,   lupin3a,   lupin3a,   _8080bw_state,  empty_init,    ROT270, "Taito", "Lupin III (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5722 
5723 GAME( 1980, polaris,     0,        polaris,   polaris,   _8080bw_state,  empty_init,    ROT270, "Taito", "Polaris (latest version)", MACHINE_SUPPORTS_SAVE )
5724 GAME( 1980, polarisa,    polaris,  polaris,   polaris,   _8080bw_state,  empty_init,    ROT270, "Taito", "Polaris (second revision)", MACHINE_SUPPORTS_SAVE )
5725 GAME( 1980, polarisb,    polaris,  polaris,   polaris,   _8080bw_state,  empty_init,    ROT270, "Taito", "Polaris (first revision)", MACHINE_SUPPORTS_SAVE )
5726 GAME( 1980, polariso,    polaris,  polaris,   polaris,   _8080bw_state,  empty_init,    ROT270, "Taito", "Polaris (original version)", MACHINE_SUPPORTS_SAVE )
5727 GAME( 1981, polarisbr,   polaris,  polaris,   polaris,   _8080bw_state,  empty_init,    ROT270, "Taito do Brasil", "Polaris (Brazil)", MACHINE_SUPPORTS_SAVE )
5728 
5729 GAME( 1980, ballbomb,    0,        ballbomb,  ballbomb,  _8080bw_state,  empty_init,    ROT270, "Taito", "Balloon Bomber", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )  /* missing clouds */
5730 
5731 GAME( 1980, indianbt,    0,        indianbt,  indianbt,  _8080bw_state,  empty_init,    ROT270, "Taito", "Indian Battle", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5732 GAME( 1983, indianbtbr,  indianbt, indianbtbr,indianbtbr,_8080bw_state,  empty_init,    ROT270, "Taito do Brasil", "Indian Battle (Brazil)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5733 
5734 GAME( 1980, steelwkr,    0,        steelwkr,  steelwkr,  _8080bw_state,  empty_init,    ROT0  , "Taito", "Steel Worker", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5735 
5736 GAMEL(1980?,galactic,    0,        invaders,  galactic,  mw8080bw_state, empty_init,    ROT270, "Taito do Brasil", "Galactica - Batalha Espacial", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_galactic )
5737 GAMEL(1980?,spacmiss,    galactic, invaders,  galactic,  mw8080bw_state, empty_init,    ROT270, "bootleg?", "Space Missile - Space Fighting Game", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_galactic )
5738 
5739 // Misc. manufacturers
5740 GAME( 1979, galxwars,    0,        invadpt2,  galxwars,  _8080bw_state,  empty_init,    ROT270, "Universal", "Galaxy Wars (Universal set 1)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
5741 GAME( 1979, galxwars2,   galxwars, invadpt2,  galxwars,  _8080bw_state,  empty_init,    ROT270, "Universal", "Galaxy Wars (Universal set 2)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
5742 GAME( 1979, galxwarst,   galxwars, invadpt2,  galxwars,  _8080bw_state,  empty_init,    ROT270, "Universal (Taito license?)", "Galaxy Wars (Taito?)" , MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // Copyright not displayed
5743 GAME( 1979, galxwarst2,  galxwars, invadpt2,  galxwars,  _8080bw_state,  empty_init,    ROT270, "Universal (Taito Corporation license)", "Galaxy Wars (Taito)" , MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // Copyright displayed, quite different codebase from galxwarst
5744 GAME( 1979, starw,       galxwars, invaders,  galxwars,  mw8080bw_state, empty_init,    ROT270, "bootleg", "Star Wars (bootleg of Galaxy Wars, set 1)", MACHINE_SUPPORTS_SAVE )
5745 GAME( 1979, starw1,      galxwars, starw1,    galxwars,  _8080bw_state,  empty_init,    ROT270, "bootleg (Yamashita)", "Star Wars (bootleg of Galaxy Wars, set 2)", MACHINE_SUPPORTS_SAVE )
5746 
5747 GAME( 1979, cosmo,       0,        cosmo,     cosmo,     _8080bw_state,  empty_init,    ROT90,  "TDS & MINTS", "Cosmo", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5748 
5749 GAME( 1980?,invrvnge,    0,        invrvnge,  invrvnge,  _8080bw_state,  init_invrvnge, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 1)", MACHINE_SUPPORTS_SAVE ) // copyright is either late-1980, or early-1981
5750 GAME( 1980?,invrvngea,   invrvnge, invrvnge,  invrvnge,  _8080bw_state,  init_invrvnge, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 2)", MACHINE_SUPPORTS_SAVE )
5751 GAME( 1980?,invrvngeb,   invrvnge, invrvnge,  invrvnge,  _8080bw_state,  init_invrvnge, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 3)", MACHINE_SUPPORTS_SAVE )
5752 GAME( 1980?,invrvngedu,  invrvnge, invrvnge,  invrvnge,  _8080bw_state,  init_invrvnge, ROT270, "Zenitone-Microsec Ltd. (Dutchford license)", "Invader's Revenge (Dutchford, single PCB)", MACHINE_SUPPORTS_SAVE )
5753 GAME( 1980?,invrvngegw,  invrvnge, invrvnge,  invrvnge,  _8080bw_state,  empty_init,    ROT270, "Zenitone-Microsec Ltd. (Game World license)", "Invader's Revenge (Game World, single PCB)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND )
5754 
5755 GAME( 1980, vortex,      0,        vortex,    vortex,    _8080bw_state,  init_vortex,   ROT270, "Zilec Electronics", "Vortex", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) /* Encrypted 8080/IO */
5756 
5757 GAME( 1979, rollingc,    0,        rollingc,  rollingc,  _8080bw_state,  empty_init,    ROT270, "Nichibutsu", "Rolling Crash / Moon Base", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
5758 
5759 GAME( 1979, ozmawars,    0,        invadpt2,  ozmawars,  _8080bw_state,  empty_init,    ROT270, "SNK", "Ozma Wars (set 1)", MACHINE_SUPPORTS_SAVE )
5760 GAME( 1979, ozmawars2,   ozmawars, invadpt2,  ozmawars,  _8080bw_state,  empty_init,    ROT270, "SNK", "Ozma Wars (set 2)", MACHINE_SUPPORTS_SAVE ) /* Uses Taito's three board color version of Space Invaders PCB */
5761 GAME( 1979, ozmawarsmr,  ozmawars, invaders,  ozmawars,  mw8080bw_state, empty_init,    ROT270, "bootleg (Model Racing)", "Ozma Wars (Model Racing bootleg)", MACHINE_SUPPORTS_SAVE )
5762 GAME( 1979, spaceph,     ozmawars, invaders,  spaceph,   mw8080bw_state, empty_init,    ROT270, "bootleg? (Zilec Games)", "Space Phantoms (bootleg of Ozma Wars)", MACHINE_SUPPORTS_SAVE )
5763 GAME( 1979, solfight,    ozmawars, invaders,  ozmawars,  mw8080bw_state, empty_init,    ROT270, "bootleg", "Solar Fight (bootleg of Ozma Wars)", MACHINE_SUPPORTS_SAVE )
5764 
5765 GAMEL(1979, yosakdon,    0,        yosakdon,  yosakdon,  _8080bw_state,  empty_init,    ROT270, "Wing", "Yosaku To Donbei (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_yosakdon )
5766 GAMEL(1979, yosakdona,   yosakdon, yosakdon,  yosakdon,  _8080bw_state,  empty_init,    ROT270, "Wing", "Yosaku To Donbei (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_yosakdon )
5767 
5768 GAMEL(1979, shuttlei,    0,        shuttlei,  shuttlei,  _8080bw_state,  empty_init,    ROT270, "Omori Electric Co., Ltd.", "Shuttle Invader", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_shuttlei )
5769 GAMEL(1979, skylove,     0,        shuttlei,  skylove,   _8080bw_state,  empty_init,    ROT270, "Omori Electric Co., Ltd.", "Sky Love", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_shuttlei )
5770 
5771 GAME( 1978, claybust,    0,        claybust,  claybust,  _8080bw_state,  empty_init,    ROT0,   "Model Racing", "Claybuster", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) // no titlescreen, Claybuster according to flyers
5772 GAMEL(1980, gunchamp,    0,        claybust,  gunchamp,  _8080bw_state,  empty_init,    ROT0,   "Model Racing", "Gun Champ", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND, layout_gunchamp ) // no titlescreen, Gun Champ according to original cab
5773 GAME( 1979?,cane,        0,        cane,      cane,      cane_state,     empty_init,    ROT0,   "Model Racing", "Cane (prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5774 GAME( 1979?,orbite,      0,        orbite,    orbite,    orbite_state,   empty_init,    ROT270, "Model Racing", "Orbite (prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_IS_INCOMPLETE | MACHINE_NO_SOUND_HW )
5775 
5776 GAME( 1980?,astropal,    0,        astropal,  astropal,  _8080bw_state,  empty_init,    ROT0,   "Sidam?", "Astropal", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
5777 
5778 GAMEL(1979?,attackfc,    0,        attackfc,  attackfc,  _8080bw_state,  init_attackfc, ROT0,   "Electronic Games Systems", "Attack Force", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND, layout_attackfc )
5779 
5780 GAME( 2002, invmulti,    0,        invmulti,  invmulti,  _8080bw_state,  init_invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.03D)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5781 GAME( 2002, invmultim3a, invmulti, invmulti,  invmulti,  _8080bw_state,  init_invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.03A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5782 GAME( 2002, invmultim2c, invmulti, invmulti,  invmulti,  _8080bw_state,  init_invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.02C)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5783 GAME( 2002, invmultim2a, invmulti, invmulti,  invmulti,  _8080bw_state,  init_invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.02A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5784 GAME( 2002, invmultim1a, invmulti, invmulti,  invmulti,  _8080bw_state,  init_invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.01A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5785 GAME( 2002, invmultit3d, invmulti, invmulti,  invmulti,  _8080bw_state,  init_invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (T8.03D)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5786 GAME( 2002, invmultis3a, invmulti, invmulti,  invmulti,  _8080bw_state,  init_invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (S0.83A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5787 GAME( 2002, invmultis2a, invmulti, invmulti,  invmulti,  _8080bw_state,  init_invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (S0.82A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5788 GAME( 2002, invmultis1a, invmulti, invmulti,  invmulti,  _8080bw_state,  init_invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (S0.81A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5789 GAME( 2002, invmultip,   invmulti, invmulti,  invmulti,  _8080bw_state,  init_invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
5790