1 /***************************************************************************
2 Namco System 21
3 
4 	There are at least three hardware variations, all of which are based on
5 	Namco System2:
6 
7 	1. Winning Run was a mass-produced prototype
8 		(point ROMs and 2d sprites are different format)
9 
10 	2. Cyber Sled uses 4xTMS320C25
11 
12 	3. Starblade uses 5xTMS320C20
13 
14 
15 Known Issues:
16   - The sprite layer's (tx,ty) registers are currently hacked for each game.
17 
18   - There's some low level rendering glitches (namcos3d.c)
19 	ROLT (roll type) specifies the order in which rotation transformations
20 	should be applied, i.e. xyz or xzy (matrix multiplication is not associative).
21 	The current meaning of ROLT seems to be consistant across System21 games, and even
22 	System22, but it's surely not 100% correct in the current implementation -
23 	There are some suspiciously oriented objects.
24 
25   - Starblade has some missing background graphics (i.e. the spaceport runway at
26 	beginning of stage#1, various large startship cruisers drifting in space, etc.
27 	The main CPU doesn't include information for these objects in its display list, nor
28 	does it seem to pass any temporal parameters to the DSP.
29 
30   	I think these things rely on custom DSP code/data written by the main CPU on startup,
31 	though I'd love to be proven wrong.  Consider that some of the other games (including
32 	Starblade itself) render comparably complex scenes all explicitly described by the
33 	the object display list.
34 
35   - Starblade's point ROMs frequently contain an apparently garbage value in the most
36   	significant byte, but the ROMs have been confirmed to be good.  We currently mask it
37   	out, depending on rendering context.
38 
39   - Starblade (and probably other games) writes a lot of data/code to the DSP processors on
40 	startup.  Once it is disassembled and understood, it may be possible to insert a
41 	trojan to fetch the DSP kernel ROM code, and faithfully emulate all aspects of
42 	the system.
43 
44   - Solvalou does some interesting communication with the DSP processors on startup, and
45   	refuses to run if a problem occurs.  The routines testing the return code have been
46   	patched out for now.
47 
48   - Possible bad sprite banking: see CyberSled title screen
49 
50   - Some incorrect polygon colors in CyberSled (note that we currently map only a small
51   	slice of the palette).
52 
53   - The palette has many banks of similar color entries varying in intensity from
54   	dark to bright.  Perhaps these are used for different shading schemes depending
55 	on view angle to a surface?
56 
57   - Controls not mapped in CyberSled
58 
59   - Lamps/vibration outputs not mapped
60 
61 -----------------------------------------------------------------------
62 Board 1 : DSP Board - 1st PCB. (Uppermost)
63 DSP Type 1 : 4 x TMS320C25 connected x 4 x Namco Custom chip 67 (68 pin PLCC) (Cybersled)
64 DSP Type 2 : 5 x TMS320C20 (Starblade)
65 OSC: 40.000MHz
66 RAM: HM62832 x 2, M5M5189 x 4, ISSI IS61C68 x 16
67 ROMS: TMS27C040
68 Custom Chips:
69 4 x Namco Custom 327 (24 pin NDIP), each one located next to a chip 67.
70 4 x Namco Custom chip 342 (160 pin PQFP), there are 3 leds (red/green/yellow) connected to each 342 chip. (12 leds total)
71 2 x Namco Custom 197 (28 pin NDIP)
72 Namco Custom chip 317 IDC (180 pin PQFP)
73 Namco Custom chip 195 (160 pin PQFP)
74 -----------------------------------------------------------------------
75 Board 2 : Unknown Board - 2nd PCB (no roms)
76 OSC: 20.000MHz
77 RAM: HM62256 x 10, 84256 x 4, CY7C128 x 5, M5M5178 x 4
78 OTHER Chips:
79 MB8422-90LP
80 L7A0565 316 (111) x 1 (100 PIN PQFP)
81 150 (64 PIN PQFP)
82 167 (128 PIN PQFP)
83 L7A0564 x 2 (100 PIN PQFP)
84 157 x 16 (24 PIN NDIP)
85 -----------------------------------------------------------------------
86 Board 3 : CPU Board - 3rd PCB (looks very similar to Namco System 2 CPU PCB)
87 CPU: MC68000P12 x 2 @ 12 MHz (16-bit)
88 Sound CPU: MC68B09EP (3 MHz)
89 Sound Chips: C140 24-channel PCM (Sound Effects), YM2151 (Music), YM3012 (?)
90 XTAL: 3.579545 MHz
91 OSC: 49.152 MHz
92 RAM: MB8464 x 2, MCM2018 x 2, HM65256 x 4, HM62256 x 2
93 
94 Other Chips:
95 Sharp PC900 - Opto-isolator
96 Sharp PC910 - Opto-isolator
97 HN58C65P (EEPROM)
98 MB3771
99 MB87077-SK x 2 (24 pin NDIP, located in sound section)
100 LB1760 (16 pin DIP, located next to SYS87B-2B)
101 CY7C132 (48 PIN DIP)
102 
103 Namco Custom:
104 148 x 2 (64 pin PQFP)
105 C68 (64 pin PQFP)
106 139 (64 pin PQFP)
107 137 (28 pin NDIP)
108 149 (28 pin NDIP, near C68)
109 -----------------------------------------------------------------------
110 Board 4 : 4th PCB (bottom-most)
111 OSC: 38.76922 MHz
112 There is a 6 wire plug joining this PCB with the CPU PCB. It appears to be video cable (RGB, Sync etc..)
113 Jumpers:
114 JP7 INTERLACE = SHORTED (Other setting is NON-INTERLACE)
115 JP8 68000 = SHORTED (Other setting is 68020)
116 Namco Custom Chips:
117 C355 (160 pin PQFP)
118 187 (120 pin PQFP)
119 138 (64 pin PQFP)
120 165 (28 pin NDIP)
121 -----------------------------------------------------------------------
122 
123 -------------------
124 Air Combat by NAMCO
125 -------------------
126 malcor
127 
128 
129 Location        Device     File ID      Checksum
130 -------------------------------------------------
131 CPU68  1J       27C4001    MPR-L.AC1      9859   [ main program ]  [ rev AC1 ]
132 CPU68  3J       27C4001    MPR-U.AC1      97F1   [ main program ]  [ rev AC1 ]
133 CPU68  1J       27C4001    MPR-L.AC2      C778   [ main program ]  [ rev AC2 ]
134 CPU68  3J       27C4001    MPR-U.AC2      6DD9   [ main program ]  [ rev AC2 ]
135 CPU68  1C      MB834000    EDATA1-L.AC1   7F77   [    data      ]
136 CPU68  3C      MB834000    EDATA1-U.AC1   FA2F   [    data      ]
137 CPU68  3A      MB834000    EDATA-U.AC1    20F2   [    data      ]
138 CPU68  1A      MB834000    EDATA-L.AC1    9E8A   [    data      ]
139 CPU68  8J        27C010    SND0.AC1       71A8   [  sound prog  ]
140 CPU68  12B     MB834000    VOI0.AC1       08CF   [   voice 0    ]
141 CPU68  12C     MB834000    VOI1.AC1       925D   [   voice 1    ]
142 CPU68  12D     MB834000    VOI2.AC1       C498   [   voice 2    ]
143 CPU68  12E     MB834000    VOI3.AC1       DE9F   [   voice 3    ]
144 CPU68  4C        27C010    SPR-L.AC1      473B   [ slave prog L ]  [ rev AC1 ]
145 CPU68  6C        27C010    SPR-U.AC1      CA33   [ slave prog U ]  [ rev AC1 ]
146 CPU68  4C        27C010    SPR-L.AC2      08CE   [ slave prog L ]  [ rev AC2 ]
147 CPU68  6C        27C010    SPR-U.AC2      A3F1   [ slave prog U ]  [ rev AC2 ]
148 OBJ(B) 5S       HN62344    OBJ0.AC1       CB72   [ object data  ]
149 OBJ(B) 5X       HN62344    OBJ1.AC1       85E2   [ object data  ]
150 OBJ(B) 3S       HN62344    OBJ2.AC1       89DC   [ object data  ]
151 OBJ(B) 3X       HN62344    OBJ3.AC1       58FF   [ object data  ]
152 OBJ(B) 4S       HN62344    OBJ4.AC1       46D6   [ object data  ]
153 OBJ(B) 4X       HN62344    OBJ5.AC1       7B91   [ object data  ]
154 OBJ(B) 2S       HN62344    OBJ6.AC1       5736   [ object data  ]
155 OBJ(B) 2X       HN62344    OBJ7.AC1       6D45   [ object data  ]
156 OBJ(B) 17N     PLHS18P8    3P0BJ3         4342
157 OBJ(B) 17N     PLHS18P8    3POBJ4         1143
158 DSP    2N       HN62344    AC1-POIL.L     8AAF   [   DSP data   ]
159 DSP    2K       HN62344    AC1-POIL.L     CF90   [   DSP data   ]
160 DSP    2E       HN62344    AC1-POIH       4D02   [   DSP data   ]
161 DSP    17D     GAL16V8A    3PDSP5         6C00
162 
163 
164 NOTE:  CPU68  - CPU board        2252961002  (2252971002)
165        OBJ(B) - Object board     8623961803  (8623963803)
166        DSP    - DSP board        8623961703  (8623963703)
167        PGN(C) - PGN board        2252961300  (8623963600)
168 
169        Namco System 21 Hardware
170 
171        ROMs that have the same locations are different revisions
172        of the same ROMs (AC1 or AC2).
173 
174 
175 Jumper settings:
176 
177 
178 Location    Position set    alt. setting
179 ----------------------------------------
180 
181 CPU68 PCB:
182 
183   JP2          /D-ST           /VBL
184   JP3
185 */
186 
187 #include "driver.h"
188 #include "vidhrdw/generic.h"
189 #include "namcos2.h"
190 #include "cpu/m6809/m6809.h"
191 #include "namcoic.h"
192 
193 /* globals (shared by videohrdw/namcos21.c) */
194 
195 data16_t *namcos21_dspram16;
196 data16_t *namcos21_spritepos;
197 
198 /* private data */
199 
200 static data16_t	*mpDataROM;
201 static data16_t	*mpSharedRAM1;
202 static data8_t	*mpDualPortRAM;
203 static data16_t	*mpSharedRAM2;
204 
205 extern WRITE16_HANDLER( namcos21_polyattr0_w );
206 extern WRITE16_HANDLER( namcos21_polyattr1_w );
207 extern WRITE16_HANDLER( namcos21_objattr_w );
208 
209 /* dual port ram memory handlers */
210 
READ16_HANDLER(namcos2_68k_dualportram_word_r)211 static READ16_HANDLER( namcos2_68k_dualportram_word_r )
212 {
213 	return mpDualPortRAM[offset];
214 }
215 
WRITE16_HANDLER(namcos2_68k_dualportram_word_w)216 static WRITE16_HANDLER( namcos2_68k_dualportram_word_w )
217 {
218 	if( ACCESSING_LSB )
219 	{
220 		mpDualPortRAM[offset] = data & 0xff;
221 	}
222 }
223 
READ_HANDLER(namcos2_dualportram_byte_r)224 static READ_HANDLER( namcos2_dualportram_byte_r )
225 {
226 	return mpDualPortRAM[offset];
227 }
228 
WRITE_HANDLER(namcos2_dualportram_byte_w)229 static WRITE_HANDLER( namcos2_dualportram_byte_w )
230 {
231 	mpDualPortRAM[offset] = data;
232 }
233 
234 /* shared RAM memory handlers */
235 
READ16_HANDLER(shareram1_r)236 static READ16_HANDLER( shareram1_r )
237 {
238 	return mpSharedRAM1[offset];
239 }
240 
WRITE16_HANDLER(shareram1_w)241 static WRITE16_HANDLER( shareram1_w )
242 {
243 	COMBINE_DATA( &mpSharedRAM1[offset] );
244 }
245 
READ16_HANDLER(shareram2_r)246 static READ16_HANDLER( shareram2_r )
247 {
248 	return mpSharedRAM2[offset];
249 }
250 
WRITE16_HANDLER(shareram2_w)251 static WRITE16_HANDLER( shareram2_w )
252 {
253 	COMBINE_DATA(&mpSharedRAM2[offset]);
254 }
255 
256 /* memory handlers for shared DSP RAM (used to pass 3d parameters) */
257 
READ16_HANDLER(dspram16_r)258 static READ16_HANDLER( dspram16_r )
259 {
260 	/* log_cb(RETRO_LOG_DEBUG, LOGPRE  "polyram[%08x] == %04x; pc==0x%08x\n",
261 		offset*2, namcos21_dspram16[offset], activecpu_get_pc() ); */
262 	return namcos21_dspram16[offset];
263 }
264 
WRITE16_HANDLER(dspram16_w)265 static WRITE16_HANDLER( dspram16_w )
266 {
267 	COMBINE_DATA( &namcos21_dspram16[offset] );
268 	/* log_cb(RETRO_LOG_DEBUG, LOGPRE  "polyram[%08x] := %04x\n", offset*2, namcos21_dspram16[offset] ); */
269 }
270 
READ16_HANDLER(dsp_status_r)271 static READ16_HANDLER( dsp_status_r )
272 {
273 	return 1;
274 }
275 
276 /* some games have read-only areas where more ROMs are mapped */
277 
READ16_HANDLER(data_r)278 static READ16_HANDLER( data_r )
279 {
280 	return mpDataROM[offset];
281 }
282 
READ16_HANDLER(data2_r)283 static READ16_HANDLER( data2_r )
284 {
285 	return mpDataROM[0x100000/2+offset];
286 }
287 
288 /* palette memory handlers */
289 
READ16_HANDLER(paletteram16_r)290 static READ16_HANDLER( paletteram16_r )
291 {
292 	return paletteram16[offset];
293 }
294 
WRITE16_HANDLER(paletteram16_w)295 static WRITE16_HANDLER( paletteram16_w )
296 {
297 	COMBINE_DATA(&paletteram16[offset]);
298 }
299 
300 
301 /*************************************************************/
302 /* MASTER 68000 CPU Memory declarations 					 */
303 /*************************************************************/
304 
MEMORY_READ16_START(readmem_master_default)305 static MEMORY_READ16_START( readmem_master_default )
306 	{ 0x000000, 0x0fffff, MRA16_ROM },
307 	{ 0x100000, 0x10ffff, MRA16_RAM },
308 	{ 0x180000, 0x183fff, NAMCOS2_68K_EEPROM_R },
309 	{ 0x1c0000, 0x1fffff, namcos2_68k_master_C148_r },
310 	{ 0x200000, 0x20ffff, dspram16_r },
311 	{ 0x440000, 0x440001, dsp_status_r },
312 	{ 0x480000, 0x4807ff, MRA16_RAM },
313 	{ 0x700000, 0x7141ff, namco_obj16_r },
314 	{ 0x740000, 0x760001, MRA16_RAM }, /* palette */
315 	{ 0x800000, 0x8fffff, data_r },
316 	{ 0x900000, 0x90ffff, shareram1_r },
317 	{ 0xa00000, 0xa00fff, namcos2_68k_dualportram_word_r },
318 	{ 0xb00000, 0xb03fff, MRA16_RAM },
319 	{ 0xd00000, 0xdfffff, data2_r },
320 MEMORY_END
321 
322 static MEMORY_WRITE16_START( writemem_master_default )
323 	{ 0x000000, 0x0fffff, MWA16_ROM },
324 	{ 0x100000, 0x10ffff, MWA16_RAM },
325 	{ 0x180000, 0x183fff, NAMCOS2_68K_EEPROM_W },
326 	{ 0x1c0000, 0x1fffff, namcos2_68k_master_C148_w },
327 	{ 0x200000, 0x20ffff, dspram16_w },
328 	{ 0x400000, 0x400001, namcos21_polyattr0_w },
329 	{ 0x440000, 0x440001, namcos21_polyattr1_w },
330 	{ 0x480000, 0x4807ff, MWA16_RAM },
331 	{ 0x700000, 0x7141ff, namco_obj16_w },
332 	{ 0x720000, 0x72000f, namcos21_objattr_w },
333 	{ 0x740000, 0x760001, MWA16_RAM, &paletteram16 },
334 	{ 0x900000, 0x90ffff, shareram1_w, &mpSharedRAM1 },
335 	{ 0xa00000, 0xa00fff, namcos2_68k_dualportram_word_w },
336 	{ 0xb00000, 0xb03fff, MWA16_RAM, &mpSharedRAM2 },
337 MEMORY_END
338 
339 /*************************************************************/
340 /* SLAVE 68000 CPU Memory declarations						 */
341 /*************************************************************/
342 
343 static MEMORY_READ16_START( readmem_slave_default )
344 	{ 0x000000, 0x07ffff, MRA16_ROM },
345 	{ 0x100000, 0x13ffff, MRA16_RAM },
346 	{ 0x1c0000, 0x1fffff, namcos2_68k_slave_C148_r },
347 	{ 0x200000, 0x20ffff, MRA16_RAM }, /* DSP RAM */
348 	{ 0x700000, 0x7141ff, namco_obj16_r },
349 	{ 0x740000, 0x760001, paletteram16_r },
350 	{ 0x800000, 0x8fffff, data_r },
351 	{ 0x900000, 0x90ffff, shareram1_r },
352 	{ 0xa00000, 0xa00fff, namcos2_68k_dualportram_word_r },
353 	{ 0xb00000, 0xb03fff, shareram2_r },
354 	{ 0xd00000, 0xdfffff, data2_r },
355 MEMORY_END
356 
357 static MEMORY_WRITE16_START( writemem_slave_default )
358 	{ 0x000000, 0x07ffff, MWA16_ROM },
359 	{ 0x100000, 0x13ffff, MWA16_RAM },
360 	{ 0x1c0000, 0x1fffff, namcos2_68k_slave_C148_w },
361 	{ 0x200000, 0x20ffff, MWA16_RAM, &namcos21_dspram16 },
362 	{ 0x700000, 0x7141ff, namco_obj16_w },
363 	{ 0x718000, 0x718001, MWA16_NOP },
364 	{ 0x740000, 0x760001, paletteram16_w },
365 	{ 0x900000, 0x90ffff, shareram1_w },
366 	{ 0xa00000, 0xa00fff, namcos2_68k_dualportram_word_w },
367 	{ 0xb00000, 0xb03fff, shareram2_w },
368 MEMORY_END
369 
370 /*************************************************************/
371 /* SOUND 6809 CPU Memory declarations						 */
372 /*************************************************************/
373 
374 static MEMORY_READ_START( readmem_sound )
375 	{ 0x0000, 0x3fff, BANKED_SOUND_ROM_R }, /* banked */
376 	{ 0x4000, 0x4001, YM2151_status_port_0_r },
377 	{ 0x5000, 0x6fff, C140_r },
378 	{ 0x7000, 0x77ff, namcos2_dualportram_byte_r },
379 	{ 0x7800, 0x7fff, namcos2_dualportram_byte_r },	/* mirror */
380 	{ 0x8000, 0x9fff, MRA_RAM },
381 	{ 0xd000, 0xffff, MRA_ROM },
382 MEMORY_END
383 
384 static MEMORY_WRITE_START( writemem_sound )
385 	{ 0x0000, 0x3fff, MWA_ROM },
386 	{ 0x4000, 0x4000, YM2151_register_port_0_w },
387 	{ 0x4001, 0x4001, YM2151_data_port_0_w },
388 	{ 0x5000, 0x6fff, C140_w },
389 	{ 0x7000, 0x77ff, namcos2_dualportram_byte_w, &mpDualPortRAM },
390 	{ 0x7800, 0x7fff, namcos2_dualportram_byte_w }, /* mirror */
391 	{ 0x8000, 0x9fff, MWA_RAM },
392 	{ 0xa000, 0xbfff, MWA_NOP }, /* amplifier enable on 1st write */
393 	{ 0xc000, 0xc001, namcos2_sound_bankselect_w },
394 	{ 0xd001, 0xd001, MWA_NOP }, /* watchdog */
395 	{ 0xc000, 0xffff, MWA_NOP }, /* avoid debug log noise; games write frequently to 0xe000 */
396 MEMORY_END
397 
398 /*************************************************************/
399 /* I/O HD63705 MCU Memory declarations						 */
400 /*************************************************************/
401 
402 static MEMORY_READ_START( readmem_mcu )
403 	{ 0x0000, 0x0000, MRA_NOP },
404 	{ 0x0001, 0x0001, input_port_0_r },			/* p1,p2 start */
405 	{ 0x0002, 0x0002, input_port_1_r },			/* coins */
406 	{ 0x0003, 0x0003, namcos2_mcu_port_d_r },
407 	{ 0x0007, 0x0007, input_port_10_r },		/* fire buttons */
408 	{ 0x0010, 0x0010, namcos2_mcu_analog_ctrl_r },
409 	{ 0x0011, 0x0011, namcos2_mcu_analog_port_r },
410 	{ 0x0008, 0x003f, MRA_RAM },
411 	{ 0x0040, 0x01bf, MRA_RAM },
412 	{ 0x01c0, 0x1fff, MRA_ROM },
413 	{ 0x2000, 0x2000, input_port_11_r }, /* dipswitches */
414 	{ 0x3000, 0x3000, input_port_12_r }, /* DIAL0 */
415 	{ 0x3001, 0x3001, input_port_13_r }, /* DIAL1 */
416 	{ 0x3002, 0x3002, input_port_14_r }, /* DIAL2 */
417 	{ 0x3003, 0x3003, input_port_15_r }, /* DIAL3 */
418 	{ 0x5000, 0x57ff, namcos2_dualportram_byte_r },
419 	{ 0x6000, 0x6fff, MRA_NOP }, /* watchdog */
420 	{ 0x8000, 0xffff, MRA_ROM },
421 MEMORY_END
422 
423 static MEMORY_WRITE_START( writemem_mcu )
424 	{ 0x0003, 0x0003, namcos2_mcu_port_d_w },
425 	{ 0x0010, 0x0010, namcos2_mcu_analog_ctrl_w },
426 	{ 0x0011, 0x0011, namcos2_mcu_analog_port_w },
427 	{ 0x0000, 0x003f, MWA_RAM },
428 	{ 0x0040, 0x01bf, MWA_RAM },
429 	{ 0x01c0, 0x1fff, MWA_ROM },
430 	{ 0x5000, 0x57ff, namcos2_dualportram_byte_w, &mpDualPortRAM },
431 	{ 0x8000, 0xffff, MWA_ROM },
432 MEMORY_END
433 
434 static struct GfxLayout tile_layout =
435 {
436 	16,16,
437 	RGN_FRAC(1,4),	/* number of tiles */
438 	8,		/* bits per pixel */
439 	{		/* plane offsets */
440 		0,1,2,3,4,5,6,7
441 	},
442 	{ /* x offsets */
443 		0*8,RGN_FRAC(1,4)+0*8,RGN_FRAC(2,4)+0*8,RGN_FRAC(3,4)+0*8,
444 		1*8,RGN_FRAC(1,4)+1*8,RGN_FRAC(2,4)+1*8,RGN_FRAC(3,4)+1*8,
445 		2*8,RGN_FRAC(1,4)+2*8,RGN_FRAC(2,4)+2*8,RGN_FRAC(3,4)+2*8,
446 		3*8,RGN_FRAC(1,4)+3*8,RGN_FRAC(2,4)+3*8,RGN_FRAC(3,4)+3*8
447 	},
448 	{ /* y offsets */
449 		0*32,1*32,2*32,3*32,
450 		4*32,5*32,6*32,7*32,
451 		8*32,9*32,10*32,11*32,
452 		12*32,13*32,14*32,15*32
453 	},
454 	8*64 /* sprite offset */
455 };
456 
457 static struct GfxDecodeInfo gfxdecodeinfo[] =
458 {
459 	{ REGION_GFX1, 0x000000, &tile_layout,  0x1000, 0x10 },
460 	{ -1 }
461 };
462 
463 static struct YM2151interface ym2151_interface =
464 {
465 	1,			/* 1 chip */
466 	3579580,	/* 3.58 MHz ? */
467 	{ YM3012_VOL(50,MIXER_PAN_LEFT,50,MIXER_PAN_RIGHT) },
468 	{ NULL }	/* YM2151 IRQ line is NOT connected on the PCB */
469 };
470 
471 static struct C140interface C140_interface_typeA =
472 {
473 	C140_TYPE_SYSTEM21_A,
474 	8000000/374,
475 	REGION_SOUND1,
476 	50
477 };
478 
479 static struct C140interface C140_interface_typeB =
480 {
481 	C140_TYPE_SYSTEM21_B,
482 	8000000/374,
483 	REGION_SOUND1,
484 	50
485 };
486 
487 static MACHINE_DRIVER_START( s21base )
488 
489 	/* basic machine hardware */
490 	MDRV_CPU_ADD(M68000,12288000) /* Master */
MDRV_CPU_MEMORY(readmem_master_default,writemem_master_default)491 	MDRV_CPU_MEMORY(readmem_master_default,writemem_master_default)
492 	MDRV_CPU_VBLANK_INT(namcos2_68k_master_vblank,1)
493 
494 	MDRV_CPU_ADD(M68000,12288000) /* Slave */
495 	MDRV_CPU_MEMORY(readmem_slave_default,writemem_slave_default)
496 	MDRV_CPU_VBLANK_INT(namcos2_68k_slave_vblank,1)
497 
498 	MDRV_CPU_ADD(M6809,3072000) /* Sound */
499 	MDRV_CPU_MEMORY(readmem_sound,writemem_sound)
500 	MDRV_CPU_VBLANK_INT(irq0_line_hold,2)
501 	MDRV_CPU_PERIODIC_INT(irq1_line_hold,120)
502 
503 	MDRV_CPU_ADD(HD63705,2048000) /* IO */
504 	MDRV_CPU_MEMORY(readmem_mcu,writemem_mcu)
505 	MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
506 
507 	MDRV_FRAMES_PER_SECOND(60)
508 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
509 	MDRV_INTERLEAVE(100) /* 100 CPU slices per frame */
510 
511 	MDRV_MACHINE_INIT(namcos2)
512 	MDRV_NVRAM_HANDLER(namcos2)
513 
514 	/* video hardware */
515 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_NEEDS_6BITS_PER_GUN)
516 	MDRV_SCREEN_SIZE(62*8, 60*8)
517 	MDRV_VISIBLE_AREA(0*8, 62*8-1, 0*8, 60*8-1)
518 	MDRV_GFXDECODE(gfxdecodeinfo)
519 	MDRV_PALETTE_LENGTH(NAMCOS21_NUM_COLORS)
520 	MDRV_COLORTABLE_LENGTH(NAMCOS21_NUM_COLORS)
521 
522 	MDRV_VIDEO_START(namcos21)
523 	MDRV_VIDEO_UPDATE(namcos21_default)
524 
525 MACHINE_DRIVER_END
526 
527 static MACHINE_DRIVER_START( poly_c140_typeA )
528 	MDRV_IMPORT_FROM(s21base)
529 
530 	/* sound hardware */
531 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
532 	MDRV_SOUND_ADD(C140, C140_interface_typeA)
533 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
534 MACHINE_DRIVER_END
535 
536 static MACHINE_DRIVER_START( poly_c140_typeB )
537 	MDRV_IMPORT_FROM(s21base)
538 
539 	/* sound hardware */
540 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
541 	MDRV_SOUND_ADD(C140, C140_interface_typeB)
542 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
543 MACHINE_DRIVER_END
544 
545 
546 ROM_START( aircombu )
547 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Master */
548 	ROM_LOAD16_BYTE( "mpr-u.ac2",  0x000000, 0x80000, CRC(a7133f85) SHA1(9f1c99dd503f1fc81096170fd272e33ae8a7de2f) )
549 	ROM_LOAD16_BYTE( "mpr-l.ac2",  0x000001, 0x80000, CRC(520a52e6) SHA1(74306e02abfe08aa1afbf325b74dbc0840c3ad3a) )
550 
551 	ROM_REGION( 0x40000, REGION_CPU2, 0 ) /* Slave */
552 	ROM_LOAD16_BYTE( "spr-u.ac2",  0x000000, 0x20000, CRC(42aca956) SHA1(10ea2400bb4d5b2d805e2de43ca0e0f54597f660) )
553 	ROM_LOAD16_BYTE( "spr-l.ac2",  0x000001, 0x20000, CRC(3e15fa19) SHA1(65dbb33ab6b3c06c793613348ebb7b110b8bba0d) )
554 
555 	ROM_REGION( 0x030000, REGION_CPU3, 0 ) /* Sound */
556 	ROM_LOAD( "snd0.ac1",	0x00c000, 0x004000, CRC(5c1fb84b) SHA1(20e4d81289dbe58ffcfc947251a6ff1cc1e36436) )
557 	ROM_CONTINUE(      		0x010000, 0x01c000 )
558 	ROM_RELOAD(				0x010000, 0x020000 )
559 
560 	ROM_REGION( 0x010000, REGION_CPU4, 0 ) /* I/O MCU */
561 	ROM_LOAD( "sys2mcpu.bin",  0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
562 	ROM_LOAD( "sys2c65c.bin",  0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
563 
564 	ROM_REGION( 0x400000, REGION_GFX1, ROMREGION_DISPOSE )
565 	ROM_LOAD( "obj0.ac2",  0x000000, 0x80000, CRC(8327ff22) SHA1(16f6022dedb7a74590898bc8ed3e8a97993c4635) )
566 	ROM_LOAD( "obj4.ac2",  0x080000, 0x80000, CRC(e433e344) SHA1(98ade550cf066fcb5c09fa905f441a1464d4d625) )
567 	ROM_LOAD( "obj1.ac2",  0x100000, 0x80000, CRC(43af566d) SHA1(99f0d9f005e28040f5cc10de2198893946a31d09) )
568 	ROM_LOAD( "obj5.ac2",  0x180000, 0x80000, CRC(ecb19199) SHA1(8e0aa1bc1141c4b09576ab08970d0c7629560643) )
569 	ROM_LOAD( "obj2.ac2",  0x200000, 0x80000, CRC(dafbf489) SHA1(c53ccb3e1b4a6a660bd28c8abe52ccc3f85d111f) )
570 	ROM_LOAD( "obj6.ac2",  0x280000, 0x80000, CRC(24cc3f36) SHA1(e50af176eb3034c9cab7613ca614f5cc2c62f95e) )
571 	ROM_LOAD( "obj3.ac2",  0x300000, 0x80000, CRC(bd555a1d) SHA1(96e432b30da6f5f7ccb768c516b1f7186bc0d4c9) )
572 	ROM_LOAD( "obj7.ac2",  0x380000, 0x80000, CRC(d561fbe3) SHA1(a23976e10bddf74d4a6b292f044dfd0affbab101) )
573 
574 	ROM_REGION16_BE( 0x200000, REGION_USER1, 0 ) /* collision */
575 	ROM_LOAD16_BYTE( "edata-u.ac1",		0x000000, 0x80000, CRC(82320c71) SHA1(2be98d46853febb46e1cc728af2735c0e00ce303) )
576 	ROM_LOAD16_BYTE( "edata-l.ac1", 	0x000001, 0x80000, CRC(fd7947d3) SHA1(2696eeae37de6d256e626cc3f3cea7b0f6eff60e) )
577 	ROM_LOAD16_BYTE( "edata1-u.ac2",	0x100000, 0x80000, CRC(40c07095) SHA1(5d9beaf5bc411ac66785d70980977b08446f46e3) )
578 	ROM_LOAD16_BYTE( "edata1-l.ac1",	0x100001, 0x80000, CRC(a87087dd) SHA1(cd9b83a8f07886ab44e4ded68002b44338777e8c) )
579 
580 	ROM_REGION32_BE( 0x400000, REGION_USER2, ROMREGION_ERASE )		/* 24bit signed point data */
581 	ROM_LOAD32_BYTE( "poih.ac1",   0x000001, 0x80000, CRC(573bbc3b) SHA1(371be12b915db6872049f18980c1b55544cfc445) )	/* most significant */
582 	ROM_LOAD32_BYTE( "poil-u.ac1", 0x000002, 0x80000, CRC(d99084b9) SHA1(c604d60a2162af7610e5ff7c1aa4195f7df82efe) )
583 	ROM_LOAD32_BYTE( "poil-l.ac1", 0x000003, 0x80000, CRC(abb32307) SHA1(8e936ba99479215dd33a951d81ec2b04020dfd62) )	/* least significant */
584 
585 	ROM_REGION( 0x200000, REGION_SOUND1, 0 ) /* sound samples */
586 	ROM_LOAD("voi0.ac1",0x000000,0x80000,CRC(f427b119) SHA1(bd45bbe41c8be26d6c997fcdc226d080b416a2cf) )
587 	ROM_LOAD("voi1.ac1",0x080000,0x80000,CRC(c9490667) SHA1(4b6fbe635c32469870a8e6f82742be6a9d4918c9) )
588 	ROM_LOAD("voi2.ac1",0x100000,0x80000,CRC(1fcb51ba) SHA1(80fc815e5fad76d20c3795ab1d89b57d9abc3efd) )
589 	ROM_LOAD("voi3.ac1",0x180000,0x80000,CRC(cd202e06) SHA1(72a18f5ba402caefef14b8d1304f337eaaa3eb1d) )
590 ROM_END
591 
592 ROM_START( aircombj )
593 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Master */
594 	ROM_LOAD16_BYTE( "mpr-u.ac1",  0x000000, 0x80000, CRC(a4dec813) SHA1(2ee8b3492d30db4c841f695151880925a5e205e0) )
595 	ROM_LOAD16_BYTE( "mpr-l.ac1",  0x000001, 0x80000, CRC(8577b6a2) SHA1(32194e392fbd051754be88eb8c90688c65c65d85) )
596 
597 	ROM_REGION( 0x40000, REGION_CPU2, 0 ) /* Slave */
598 	ROM_LOAD16_BYTE( "spr-u.ac1",  0x000000, 0x20000, CRC(5810e219) SHA1(c312ffd8324670897871b12d521779570dc0f580) )
599 	ROM_LOAD16_BYTE( "spr-l.ac1",  0x000001, 0x20000, CRC(175a7d6c) SHA1(9e31dde6646cd9b6dcdbdb3f2326177508559e56) )
600 
601 	ROM_REGION( 0x030000, REGION_CPU3, 0 ) /* Sound */
602 	ROM_LOAD( "snd0.ac1",	0x00c000, 0x004000, CRC(5c1fb84b) SHA1(20e4d81289dbe58ffcfc947251a6ff1cc1e36436) )
603 	ROM_CONTINUE(			0x010000, 0x01c000 )
604 	ROM_RELOAD(				0x010000, 0x020000 )
605 
606 	ROM_REGION( 0x010000, REGION_CPU4, 0 ) /* I/O MCU */
607 	ROM_LOAD( "sys2mcpu.bin",  0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
608 	ROM_LOAD( "sys2c65c.bin",  0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
609 
610 	ROM_REGION( 0x400000, REGION_GFX1, ROMREGION_DISPOSE )
611 	ROM_LOAD( "obj0.ac1",  0x000000, 0x80000, CRC(d2310c6a) SHA1(9bb8fdfc2c232574777248f4959975f9a20e3105) )
612 	ROM_LOAD( "obj4.ac1",  0x080000, 0x80000, CRC(0c93b478) SHA1(a92ffbcf04b64e0eee5bcf37008e247700641b25) )
613 	ROM_LOAD( "obj1.ac1",  0x100000, 0x80000, CRC(f5783a77) SHA1(0be1815ceb4ce4fa7ab75ba588e090f20ee0cac9) )
614 	ROM_LOAD( "obj5.ac1",  0x180000, 0x80000, CRC(476aed15) SHA1(0e53fdf02e8ffe7852a1fa8bd2f64d0e58f3dc09) )
615 	ROM_LOAD( "obj2.ac1",  0x200000, 0x80000, CRC(01343d5c) SHA1(64171fed1d1f8682b3d70d3233ea017719f4cc63) )
616 	ROM_LOAD( "obj6.ac1",  0x280000, 0x80000, CRC(c67607b1) SHA1(df64ea7920cf64271fe742d3d0a57f842ee61e8d) )
617 	ROM_LOAD( "obj3.ac1",  0x300000, 0x80000, CRC(7717f52e) SHA1(be1df3f4d0fdcaa5d3c81a724e5eb9d14136c6f5) )
618 	ROM_LOAD( "obj7.ac1",  0x380000, 0x80000, CRC(cfa9fe5f) SHA1(0da25663b89d653c87ed32d15f7c82f3035702ab) )
619 
620 	ROM_REGION16_BE( 0x200000, REGION_USER1, 0 )
621 	ROM_LOAD16_BYTE( "edata-u.ac1",   0x000000, 0x80000, CRC(82320c71) SHA1(2be98d46853febb46e1cc728af2735c0e00ce303) )
622 	ROM_LOAD16_BYTE( "edata-l.ac1",   0x000001, 0x80000, CRC(fd7947d3) SHA1(2696eeae37de6d256e626cc3f3cea7b0f6eff60e) )
623 	ROM_LOAD16_BYTE( "edata1-u.ac1",  0x100000, 0x80000, CRC(a9547509) SHA1(1bc663cec03b60ad968896bbc2546f02efda135e) )
624 	ROM_LOAD16_BYTE( "edata1-l.ac1",  0x100001, 0x80000, CRC(a87087dd) SHA1(cd9b83a8f07886ab44e4ded68002b44338777e8c) )
625 
626 	ROM_REGION32_BE( 0x400000, REGION_USER2, ROMREGION_ERASE )		/* 24bit signed point data */
627 	ROM_LOAD32_BYTE( "poih.ac1",   0x000001, 0x80000, CRC(573bbc3b) SHA1(371be12b915db6872049f18980c1b55544cfc445) )	/* most significant */
628 	ROM_LOAD32_BYTE( "poil-u.ac1", 0x000002, 0x80000, CRC(d99084b9) SHA1(c604d60a2162af7610e5ff7c1aa4195f7df82efe) )
629 	ROM_LOAD32_BYTE( "poil-l.ac1", 0x000003, 0x80000, CRC(abb32307) SHA1(8e936ba99479215dd33a951d81ec2b04020dfd62) )	/* least significant */
630 
631 	ROM_REGION( 0x200000, REGION_SOUND1, 0 ) /* sound samples */
632 	ROM_LOAD("voi0.ac1",0x000000,0x80000,CRC(f427b119) SHA1(bd45bbe41c8be26d6c997fcdc226d080b416a2cf) )
633 	ROM_LOAD("voi1.ac1",0x080000,0x80000,CRC(c9490667) SHA1(4b6fbe635c32469870a8e6f82742be6a9d4918c9) )
634 	ROM_LOAD("voi2.ac1",0x100000,0x80000,CRC(1fcb51ba) SHA1(80fc815e5fad76d20c3795ab1d89b57d9abc3efd) )
635 	ROM_LOAD("voi3.ac1",0x180000,0x80000,CRC(cd202e06) SHA1(72a18f5ba402caefef14b8d1304f337eaaa3eb1d) )
636 ROM_END
637 
638 ROM_START( cybsled )
639 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Master */
640 	ROM_LOAD16_BYTE( "mpru.3j",  0x000000, 0x80000, CRC(cc5a2e83) SHA1(b794051b2c351e9ca43351603845e4e563f6740f) )
641 	ROM_LOAD16_BYTE( "mprl.1j",  0x000001, 0x80000, CRC(f7ee8b48) SHA1(6d36eb3dba9cf7f5f5e1a26c156e77a2dad3f257) )
642 
643 	ROM_REGION( 0x100000, REGION_CPU2, 0 ) /* Slave */
644 	ROM_LOAD16_BYTE( "spru.6c",  0x000000, 0x80000, CRC(28dd707b) SHA1(11297ceae4fe78d170785a5cf9ad77833bbe7fff) )
645 	ROM_LOAD16_BYTE( "sprl.4c",  0x000001, 0x80000, CRC(437029de) SHA1(3d275a2b0ce6909e77e657c371bd22597ea9d398) )
646 
647 	ROM_REGION( 0x030000, REGION_CPU3, 0 ) /* Sound */
648 	ROM_LOAD( "snd0.8j",	0x00c000, 0x004000, CRC(3dddf83b) SHA1(e16119cbef176b6f8f8ace773fcbc201e987823f) )
649 	ROM_CONTINUE(			0x010000, 0x01c000 )
650 	ROM_RELOAD(				0x010000, 0x020000 )
651 
652 	ROM_REGION( 0x010000, REGION_CPU4, 0 ) /* I/O MCU */
653 	ROM_LOAD( "sys2mcpu.bin",  0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
654 	ROM_LOAD( "sys2c65c.bin",  0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
655 
656 	ROM_REGION( 0x400000, REGION_GFX1, ROMREGION_DISPOSE )
657 	ROM_LOAD( "obj0.5s",  0x000000, 0x80000, CRC(5ae542d5) SHA1(99b1a3ed476da4a97cb864538909d7b831f0fd3b) )
658 	ROM_LOAD( "obj4.4s",  0x080000, 0x80000, CRC(57904076) SHA1(b1dc0d99543bc4b9584b37ffc12c6ebc59e30e3b) )
659 	ROM_LOAD( "obj1.5x",  0x100000, 0x80000, CRC(4aae3eff) SHA1(c80240bd2f4228a0261a14adb6b10560b31b5aa0) )
660 	ROM_LOAD( "obj5.4x",  0x180000, 0x80000, CRC(0e11ca47) SHA1(076a9a4cfddbee2d8aaa06110333090d8fdbefeb) )
661 	ROM_LOAD( "obj2.3s",  0x200000, 0x80000, CRC(d64ec4c3) SHA1(0bed1cafc21ed8cef3850fb81e30076977086eb0) )
662 	ROM_LOAD( "obj6.2s",  0x280000, 0x80000, CRC(7748b485) SHA1(adb4da419a6cdbefd0fef182d866a3479be379af) )
663 	ROM_LOAD( "obj3.3x",  0x300000, 0x80000, CRC(3d1f7168) SHA1(392dddcc79fe61dcc6514a91ac27b5e36825d8b7) )
664 	ROM_LOAD( "obj7.2x",  0x380000, 0x80000, CRC(b6eb6ad2) SHA1(85a660c5e44012491be7d4e783cce6ba12c135cb) )
665 
666 	ROM_REGION16_BE( 0x200000, REGION_USER1, 0 )
667 	ROM_LOAD16_BYTE( "datau.3a",   0x000000, 0x80000, CRC(570da15d) SHA1(9ebe756f10756c079a92fb522332e9e52ff715c3) )
668 	ROM_LOAD16_BYTE( "datal.1a",   0x000001, 0x80000, CRC(9cf96f9e) SHA1(91783f48b93e03c778c6641ca8fb419c13b0d3c5) )
669 	ROM_LOAD16_BYTE( "edata0u.3b", 0x100000, 0x80000, CRC(77452533) SHA1(48fc199bcc1beb23c714eebd9b09b153c980170b) )
670 	ROM_LOAD16_BYTE( "edata0l.1b", 0x100001, 0x80000, CRC(e812e290) SHA1(719e0a026ae8ef63d0d0269b67669ea9b4d950dd) )
671 
672 	ROM_REGION32_BE( 0x400000, REGION_USER2, ROMREGION_ERASE )		/* 24bit signed point data */
673 	ROM_LOAD32_BYTE( "poih1.2f",  0x000001, 0x80000, CRC(eaf8bac3) SHA1(7a2caf6672af158b4a23ce4626342d1f17d1a4e4) )	/* most significant */
674 	ROM_LOAD32_BYTE( "poilu1.2k", 0x000002, 0x80000, CRC(c544a8dc) SHA1(4cce5f2ab3519b4aa7edbdd15b2d79a7fdcade3c) )
675 	ROM_LOAD32_BYTE( "poill1.2n", 0x000003, 0x80000, CRC(30acb99b) SHA1(a28dcb3e5405f166644f6353a903c1143ee268f1) )	/* least significant */
676 	ROM_LOAD32_BYTE( "poih2.2j",  0x200001, 0x80000, CRC(4079f342) SHA1(fa36aed1abbda54a42f29b183007474580870319) )
677 	ROM_LOAD32_BYTE( "poilu2.2l", 0x200002, 0x80000, CRC(61d816d4) SHA1(7991957b910d32530151abc7f469fcf1de62d8f3) )
678 	ROM_LOAD32_BYTE( "poill2.2p", 0x200003, 0x80000, CRC(faf09158) SHA1(b56ebed6012362b1d599c396a43e90a1e4d9dc38) )
679 
680 	ROM_REGION( 0x200000, REGION_SOUND1, 0 ) /* sound samples */
681 	ROM_LOAD("voi0.12b",0x000000,0x80000,CRC(99d7ce46) SHA1(b75f4055c3ce847daabfacda22df14e3f80c4fb9) )
682 	ROM_LOAD("voi1.12c",0x080000,0x80000,CRC(2b335f06) SHA1(2b2cd407c34388b56496f84a414daa153780b098) )
683 	ROM_LOAD("voi2.12d",0x100000,0x80000,CRC(10cd15f0) SHA1(9b721654ed97a13287373c1b2854ac9aeddc271f) )
684 	ROM_LOAD("voi3.12e",0x180000,0x80000,CRC(c902b4a4) SHA1(816357ec1a02a7ebf817ac1182e9c50ce5ca71f6) )
685 ROM_END
686 
687 ROM_START( starblad )
688 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Master */
689 	ROM_LOAD16_BYTE( "st1_mpu.bin",  0x000000, 0x80000, CRC(483a311c) SHA1(dd9416b8d4b0f8b361630e312eac71c113064eae) )
690 	ROM_LOAD16_BYTE( "st1_mpl.bin",  0x000001, 0x80000, CRC(0a4dd661) SHA1(fc2b71a255a8613693c4d1c79ddd57a6d396165a) )
691 
692 	ROM_REGION( 0x080000, REGION_CPU2, 0 ) /* Slave */
693 	ROM_LOAD16_BYTE( "st1_spu.bin",  0x000000, 0x40000, CRC(9f9a55db) SHA1(72bf5d6908cc57cc490fa2292b4993d796b2974d) )
694 	ROM_LOAD16_BYTE( "st1_spl.bin",  0x000001, 0x40000, CRC(acbe39c7) SHA1(ca48b7ea619b1caaf590eed33001826ce7ef36d8) )
695 
696 	ROM_REGION( 0x030000, REGION_CPU3, 0 ) /* Sound */
697 	ROM_LOAD( "st1snd0.bin",		 0x00c000, 0x004000, CRC(c0e934a3) SHA1(678ed6705c6f494d7ecb801a4ef1b123b80979a5) )
698 	ROM_CONTINUE(					 0x010000, 0x01c000 )
699 	ROM_RELOAD( 					 0x010000, 0x020000 )
700 
701 	ROM_REGION( 0x010000, REGION_CPU4, 0 ) /* I/O MCU */
702 	ROM_LOAD( "sys2mcpu.bin",  0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
703 	ROM_LOAD( "sys2c65c.bin",  0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
704 
705 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE ) /* sprites */
706 	ROM_LOAD( "st1obj0.bin",  0x000000, 0x80000, CRC(5d42c71e) SHA1(f1aa2bb31bbbcdcac8e94334b1c78238cac1a0e7) )
707 	ROM_LOAD( "st1obj1.bin",  0x080000, 0x80000, CRC(c98011ad) SHA1(bc34c21428e0ef5887051c0eb0fdef5397823a82) )
708 	ROM_LOAD( "st1obj2.bin",  0x100000, 0x80000, CRC(6cf5b608) SHA1(c8537fbe97677c4c8a365b1cf86c4645db7a7d6b) )
709 	ROM_LOAD( "st1obj3.bin",  0x180000, 0x80000, CRC(cdc195bb) SHA1(91443917a6982c286b6f15381d441d061aefb138) )
710 
711 	ROM_REGION16_BE( 0x100000, REGION_USER1, 0 )
712 	ROM_LOAD16_BYTE( "st1_du.bin",  0x000000, 0x20000, CRC(2433e911) SHA1(95f5f00d3bacda4996e055a443311fb9f9a5fe2f) )
713 	ROM_LOAD16_BYTE( "st1_dl.bin",  0x000001, 0x20000, CRC(4a2cc252) SHA1(d9da9992bac878f8a1f5e84cc3c6d457b4705e8f) )
714 
715 	ROM_REGION32_BE( 0x400000, REGION_USER2, ROMREGION_ERASE ) /* 24bit signed point data */
716 	ROM_LOAD32_BYTE( "st1pt0h.bin", 0x000001, 0x80000, CRC(84eb355f) SHA1(89a248b8be2e0afcee29ba4c4c9cca65d5fb246a) )
717 	ROM_LOAD32_BYTE( "st1pt0u.bin", 0x000002, 0x80000, CRC(1956cd0a) SHA1(7d21b3a59f742694de472c545a1f30c3d92e3390) )
718 	ROM_LOAD32_BYTE( "st1pt0l.bin", 0x000003, 0x80000, CRC(ff577049) SHA1(1e1595174094e88d5788753d05ce296c1f7eca75) )
719 	/**/
720 	ROM_LOAD32_BYTE( "st1pt1h.bin", 0x200001, 0x80000, CRC(96b1bd7d) SHA1(55da7896dda2aa4c35501a55c8605a065b02aa17) )
721 	ROM_LOAD32_BYTE( "st1pt1u.bin", 0x200002, 0x80000, CRC(ecf21047) SHA1(ddb13f5a2e7d192f0662fa420b49f89e1e991e66) )
722 	ROM_LOAD32_BYTE( "st1pt1l.bin", 0x200003, 0x80000, CRC(01cb0407) SHA1(4b58860bbc353de8b4b8e83d12b919d9386846e8) )
723 
724 	ROM_REGION( 0x200000, REGION_SOUND1, 0 ) /* sound samples */
725 	ROM_LOAD("st1voi0.bin",0x000000,0x80000,CRC(5b3d43a9) SHA1(cdc04f19dc91dca9fa88ba0c2fca72aa195a3694) )
726 	ROM_LOAD("st1voi1.bin",0x080000,0x80000,CRC(413e6181) SHA1(e827ec11f5755606affd2635718512aeac9354da) )
727 	ROM_LOAD("st1voi2.bin",0x100000,0x80000,CRC(067d0720) SHA1(a853b2d43027a46c5e707fc677afdaae00f450c7) )
728 	ROM_LOAD("st1voi3.bin",0x180000,0x80000,CRC(8b5aa45f) SHA1(e1214e639200758ad2045bde0368a2d500c1b84a) )
729 ROM_END
730 
731 ROM_START( solvalou )
732 	ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* Master */
733 	ROM_LOAD16_BYTE( "sv1mpu.bin",  0x000000, 0x20000, CRC(b6f92762) SHA1(d177328b3da2ab0580e101478142bc8c373d6140) )
734 	ROM_LOAD16_BYTE( "sv1mpl.bin",  0x000001, 0x20000, CRC(28c54c42) SHA1(32fcca2eb4bb8ba8c2587b03d3cf59f072f7fac5) )
735 
736 	ROM_REGION( 0x80000, REGION_CPU2, 0 ) /* Slave */
737 	ROM_LOAD16_BYTE( "sv1spu.bin",  0x000000, 0x20000, CRC(ebd4bf82) SHA1(67946360d680a675abcb3c131bac0502b2455573) )
738 	ROM_LOAD16_BYTE( "sv1spl.bin",  0x000001, 0x20000, CRC(7acab679) SHA1(764297c9601be99dbbffb75bbc6fe4a40ea38529) )
739 
740 	ROM_REGION( 0x030000, REGION_CPU3, 0 ) /* Sound */
741 	ROM_LOAD( "sv1snd0.bin",    0x00c000, 0x004000, CRC(5e007864) SHA1(94da2d51544c6127056beaa251353038646da15f) )
742 	ROM_CONTINUE(				0x010000, 0x01c000 )
743 	ROM_RELOAD(					0x010000, 0x020000 )
744 
745 	ROM_REGION( 0x010000, REGION_CPU4, 0 ) /* I/O MCU */
746 	ROM_LOAD( "sys2mcpu.bin",  0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
747 	ROM_LOAD( "sys2c65c.bin",  0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
748 
749 	ROM_REGION( 0x400000, REGION_GFX1, ROMREGION_DISPOSE )
750 	ROM_LOAD( "sv1obj0.bin",  0x000000, 0x80000, CRC(773798bb) SHA1(51ab76c95030bab834f1a74ae677b2f0afc18c52) )
751 	ROM_LOAD( "sv1obj4.bin",  0x080000, 0x80000, CRC(33a008a7) SHA1(4959a0ac24ad64f1367e2d8d63d39a0273c60f3e) )
752 	ROM_LOAD( "sv1obj1.bin",  0x100000, 0x80000, CRC(a36d9e79) SHA1(928d9995e97ee7509e23e6cc64f5e7bfb5c02d42) )
753 	ROM_LOAD( "sv1obj5.bin",  0x180000, 0x80000, CRC(31551245) SHA1(385452ea4830c466263ad5241313ac850dfef756) )
754 	ROM_LOAD( "sv1obj2.bin",  0x200000, 0x80000, CRC(c8672b8a) SHA1(8da037b27d2c2b178aab202781f162371458f788) )
755 	ROM_LOAD( "sv1obj6.bin",  0x280000, 0x80000, CRC(fe319530) SHA1(8f7e46c8f0b86c7515f6d763b795ce07d11c77bc) )
756 	ROM_LOAD( "sv1obj3.bin",  0x300000, 0x80000, CRC(293ef1c5) SHA1(f677883bfec16bbaeb0a01ac565d0e6cac679174) )
757 	ROM_LOAD( "sv1obj7.bin",  0x380000, 0x80000, CRC(95ed6dcb) SHA1(931706ce3fea630823ce0c79febec5eec0cc623d) )
758 
759 	ROM_REGION16_BE( 0x100000, REGION_USER1, 0 )
760 	ROM_LOAD16_BYTE( "sv1du.bin",  0x000000, 0x80000, CRC(2e561996) SHA1(982158481e5649f21d5c2816fdc80cb725ed1419) )
761 	ROM_LOAD16_BYTE( "sv1dl.bin",  0x000001, 0x80000, CRC(495fb8dd) SHA1(813d1da4109652008d72b3bdb03032efc5c0c2d5) )
762 
763 	ROM_REGION32_BE( 0x400000, REGION_USER2, ROMREGION_ERASE )		/* 24bit signed point data */
764 	ROM_LOAD32_BYTE( "sv1pt0h.bin", 0x000001, 0x80000, CRC(3be21115) SHA1(c9f30353c1216f64199f87cd34e787efd728e739) ) /* most significant */
765 	ROM_LOAD32_BYTE( "sv1pt0u.bin", 0x000002, 0x80000, CRC(4aacfc42) SHA1(f0e179e057183b41744ca429764f44306f0ce9bf) )
766 	ROM_LOAD32_BYTE( "sv1pt0l.bin", 0x000003, 0x80000, CRC(6a4dddff) SHA1(9ed182d21d328c6a684ee6658a9dfcf3f3dd8646) ) /* least significant */
767 
768 	ROM_REGION( 0x200000, REGION_SOUND1, 0 ) /* sound samples */
769 	ROM_LOAD("sv1voi0.bin",0x000000,0x80000,CRC(7f61bbcf) SHA1(b3b7e66e24d9cb16ebd139237c1e51f5d60c1585) )
770 	ROM_LOAD("sv1voi1.bin",0x080000,0x80000,CRC(c732e66c) SHA1(14e75dd9bea4055f85eb2bcbf69cf6695a3f7ec4) )
771 	ROM_LOAD("sv1voi2.bin",0x100000,0x80000,CRC(51076298) SHA1(ec52c9ae3029118f3ea3732948d6de28f5fba561) )
772 	ROM_LOAD("sv1voi3.bin",0x180000,0x80000,CRC(33085ff3) SHA1(0a30b91618c250a5e7bd896a8ceeb3d16da178a9) )
773 ROM_END
774 
775 ROM_START( winrun91 )
776 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Master */
777 	ROM_LOAD16_BYTE( "mpu.3k",  0x000000, 0x20000, CRC(80a0e5be) SHA1(6613b95e164c2032ea9043e4161130c6b3262492) )
778 	ROM_LOAD16_BYTE( "mpl.1k",  0x000001, 0x20000, CRC(942172d8) SHA1(21d8dfd2165b5ceb0399fdb53d9d0f51f1255803) )
779 
780 	ROM_REGION( 0x080000, REGION_CPU2, 0 ) /* Slave */
781 	ROM_LOAD16_BYTE( "spu.6b",  0x000000, 0x20000, CRC(0221d4b2) SHA1(65fd38b1cfaa6693d71248561d764a9ea1098c56) )
782 	ROM_LOAD16_BYTE( "spl.4b",  0x000001, 0x20000, CRC(288799e2) SHA1(2c4bf0cf9c71458fff4dd77e426a76685d9e1bab) )
783 
784 	ROM_REGION( 0x030000, REGION_CPU3, 0 ) /* Sound */
785 	ROM_LOAD( "snd0.7c",	0x00c000, 0x004000, CRC(6a321e1e) SHA1(b2e77cac4ed7609593fa5a462c9d78526451e477) )
786 	ROM_CONTINUE(			0x010000, 0x01c000 )
787 	ROM_RELOAD(				0x010000, 0x020000 )
788 
789 	ROM_REGION( 0x010000, REGION_CPU4, 0 ) /* I/O MCU */
790 	ROM_LOAD( "sys2mcpu.bin",  0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
791 	ROM_LOAD( "sys2c65c.bin",  0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
792 
793 	ROM_REGION16_BE( 0x100000, REGION_USER1, 0 )
794 	ROM_LOAD16_BYTE( "d0u.3a",  0x000000, 0x20000, CRC(dcb27da5) SHA1(ecd72397d10313fe8dcb8589bdc5d88d4298b26c) )
795 	ROM_LOAD16_BYTE( "d0l.1a",  0x000001, 0x20000, CRC(f692a8f3) SHA1(4c29f60400b18d9ef0425de149618da6cf762ca4) )
796 	ROM_LOAD16_BYTE( "d1u.3b",  0x000000, 0x20000, CRC(ac2afd1b) SHA1(510eb41931164b086c85ba0a86d6f10b88f5e534) )
797 	ROM_LOAD16_BYTE( "d1l.1b",  0x000001, 0x20000, CRC(ebb51af1) SHA1(87b7b64ee662bf652add1e1199e42391d0e2f7e8) )
798 
799 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* sprites */
800 	ROM_LOAD( "gd0l.3p",  0x00000, 0x40000, CRC(9a29500e) SHA1(c605f86b138e0a4c3163ffd967482e298a15fbe7) )
801 	ROM_LOAD( "gd1u.1s",  0x40000, 0x40000, CRC(17e5a61c) SHA1(272ebd7daa56847f1887809535362331b5465dec) )
802 	ROM_LOAD( "gd0u.1p",  0x80000, 0x40000, CRC(33f5a19b) SHA1(b1dbd242168007f80e13e11c78b34abc1668883e) )
803 	ROM_LOAD( "gd1l.3s",  0xc0000, 0x40000, CRC(64df59a2) SHA1(1e9d0945b94780bb0be16803e767466d2cda07e8) )
804 
805 	ROM_REGION32_BE( 0x400000, REGION_USER2, ROMREGION_ERASE ) /* 16 bit point data? */
806 	ROM_LOAD32_BYTE( "pt0u.8j", 0x00002, 0x20000, CRC(abf512a6) SHA1(e86288039d6c4dedfa95b11cb7e4b87637f90c09) )
807 	ROM_LOAD32_BYTE( "pt0l.8d", 0x00003, 0x20000, CRC(ac8d468c) SHA1(d1b457a19a5d3259d0caf933f42b3a02b485867b) )
808 	ROM_LOAD32_BYTE( "pt1u.8l", 0x80002, 0x20000, CRC(7e5dab74) SHA1(5bde219d5b4305d38d17b494b2e759f05d05329f) )
809 	ROM_LOAD32_BYTE( "pt1l.8e", 0x80003, 0x20000, CRC(38a54ec5) SHA1(5c6017c98cae674868153ff2d64532027cf0ab83) )
810 
811 	ROM_REGION16_BE( 0x80000, REGION_USER3, 0 ) /* ? */
812 	ROM_LOAD( "gp0l.3j",  0x00000, 0x20000, CRC(5c18f596) SHA1(215cbda62254e31b4ff6431623384df1639bfdb7) )
813 	ROM_LOAD( "gp0u.1j",  0x00001, 0x20000, CRC(f5469a29) SHA1(38b6ea1fbe482b69fbb0e2f44f44a0ca2a49f6bc) )
814 	ROM_LOAD( "gp1l.3l",  0x40000, 0x20000, CRC(96c2463c) SHA1(e43db580e7b454af04c22e894108fbb56da0eeb5) )
815 	ROM_LOAD( "gp1u.1l",  0x40001, 0x20000, CRC(146ab6b8) SHA1(aefb89585bf311f8d33f18298fea326ef1f19f1e) )
816 
817 	ROM_REGION( 0x200000, REGION_SOUND1, 0 ) /* sound samples */
818 	ROM_LOAD("avo1.11c",0x000000,0x80000,CRC(9fb33af3) SHA1(666630a8e5766ca4c3275961963c3e713dfdda2d) )
819 	ROM_LOAD("avo3.11e",0x080000,0x80000,CRC(76e22f92) SHA1(0e1b8d35a5b9c20cc3192d935f0c9da1e69679d2) )
820 ROM_END
821 
822 static void namcos21_init( int game_type )
823 {
824 	data32_t *pMem = (data32_t *)memory_region(REGION_USER2);
825 	int numWords = memory_region_length(REGION_USER2)/4;
826 	int i;
827 
828 	/* sign-extend the 24 bit point data into a more-convenient 32 bit format */
829 	for( i=0; i<numWords; i++ )
830 	{
831 		if( pMem[i] &  0x00800000 )
832 		{
833 			pMem[i] |= 0xff000000;
834 		}
835 	}
836 	namcos2_gametype = game_type;
837 	mpDataROM = (data16_t *)memory_region( REGION_USER1 );
838 } /* namcos21_init */
839 
DRIVER_INIT(winrun)840 static DRIVER_INIT( winrun )
841 {
842 	namcos21_init( NAMCOS21_WINRUN91 );
843 }
844 
DRIVER_INIT(aircombt)845 static DRIVER_INIT( aircombt )
846 {
847 #if 0
848 	/* replace first four tests of aircombj with special "hidden" tests */
849 	data16_t *pMem = (data16_t *)memory_region( REGION_CPU1 );
850 	pMem[0x2a32/2] = 0x90;
851 	pMem[0x2a34/2] = 0x94;
852 	pMem[0x2a36/2] = 0x88;
853 	pMem[0x2a38/2] = 0x8c;
854 #endif
855 
856 	namcos21_init( NAMCOS21_AIRCOMBAT );
857 }
858 
DRIVER_INIT(starblad)859 DRIVER_INIT( starblad )
860 {
861 	namcos21_init( NAMCOS21_STARBLADE );
862 }
863 
864 
DRIVER_INIT(cybsled)865 DRIVER_INIT( cybsled )
866 {
867 	namcos21_init( NAMCOS21_CYBERSLED );
868 }
869 
DRIVER_INIT(solvalou)870 DRIVER_INIT( solvalou )
871 {
872 	data16_t *pMem = (data16_t *)memory_region( REGION_CPU1 );
873 
874 	/* patch out DSP memtest/clear */
875 	pMem[0x1FD7C/2] = 0x4E71;
876 	pMem[0x1FD7E/2] = 0x4E71;
877 
878 	/* patch out DSP test/populate */
879 	pMem[0x1FDA6/2] = 0x4E71;
880 	pMem[0x1FDA8/2] = 0x4E71;
881 
882 	namcos21_init( NAMCOS21_SOLVALOU );
883 }
884 
885 /*************************************************************/
886 /*															 */
887 /*	NAMCO SYSTEM 21 INPUT PORTS								 */
888 /*															 */
889 /*************************************************************/
890 
891 INPUT_PORTS_START( default )
892 	PORT_START		/* 63B05Z0 - PORT B */
893 	PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNUSED )
894 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
895 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
896 
897 	PORT_START		/* 63B05Z0 - PORT C & SCI */
898 	PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
899 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
900 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
901 	PORT_DIPNAME( 0x40, 0x40, "Test Switch")
902 	PORT_DIPSETTING(	0x40, DEF_STR( Off ) )
903 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
904 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )
905 
906 	PORT_START		/* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 0 */
907 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
908 	PORT_START      /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 1 */
909 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X,  15, 10, 0x60, 0x9f )
910 	PORT_START      /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 2 */
911 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_Y,  20, 10, 0x60, 0x9f )
912 	PORT_START		/* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 3 */
913 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
914 	PORT_START		/* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 4 */
915 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
916 	PORT_START		/* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 5 */
917 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
918 	PORT_START		/* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 6 */
919 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
920 	PORT_START		/* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 7 */
921 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
922 
923 	PORT_START		/* 63B05Z0 - PORT H */
924 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 )
925 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 )
926 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
927 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 )
928 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
929 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
930 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
931 
932 	PORT_START		/* 63B05Z0 - $2000 DIP SW */
933 	PORT_DIPNAME( 0x01, 0x01, "DSW1 (Test Mode)")
934 	PORT_DIPSETTING(	0x01, DEF_STR( Off ) )
935 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
936 	PORT_DIPNAME( 0x02, 0x02, "DSW2")
937 	PORT_DIPSETTING(	0x02, DEF_STR( Off ) )
938 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
939 	PORT_DIPNAME( 0x04, 0x04, "DSW3")
940 	PORT_DIPSETTING(	0x04, DEF_STR( Off ) )
941 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
942 	PORT_DIPNAME( 0x08, 0x08, "DSW4")
943 	PORT_DIPSETTING(	0x08, DEF_STR( Off ) )
944 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
945 	PORT_DIPNAME( 0x10, 0x10, "DSW5")
946 	PORT_DIPSETTING(	0x10, DEF_STR( Off ) )
947 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
948 	PORT_DIPNAME( 0x20, 0x20, "DSW6")
949 	PORT_DIPSETTING(	0x20, DEF_STR( Off ) )
950 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
951 	PORT_DIPNAME( 0x40, 0x40, "DSW7")
952 	PORT_DIPSETTING(	0x40, DEF_STR( Off ) )
953 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
954 	PORT_DIPNAME( 0x80, 0x80, "DSW8")
955 	PORT_DIPSETTING(	0x80, DEF_STR( Off ) )
956 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
957 
958 	PORT_START		/* 63B05Z0 - $3000 */
959 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
960 	PORT_START		/* 63B05Z0 - $3001 */
961 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
962 	PORT_START		/* 63B05Z0 - $3002 */
963 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
964 	PORT_START		/* 63B05Z0 - $3003 */
965 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
966 INPUT_PORTS_END
967 
968 INPUT_PORTS_START( aircombt )
969 	PORT_START		/* IN#0: 63B05Z0 - PORT B */
970 	PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNUSED )
971 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
972 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
973 
974 	PORT_START		/* IN#1: 63B05Z0 - PORT C & SCI */
975 	PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
976 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
977 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
978 	PORT_DIPNAME( 0x40, 0x40, "Test Switch")
979 	PORT_DIPSETTING(	0x40, DEF_STR( Off ) )
980 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
981 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )
982 
983 	PORT_START		/* IN#2: 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 0 */
984 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
985 
986 	PORT_START		/* IN#3: 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 1 */
987 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X|IPF_CENTER, 100, 4, 0x00, 0xff )
988 
989 	PORT_START		/* IN#4: 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 2 */
990 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_Y|IPF_CENTER, 100, 4, 0x00, 0xff )
991 
992 	PORT_START		/* IN#5: 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 3 */
993 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X|IPF_CENTER|IPF_PLAYER2, 100, 4, 0x00, 0xff )
994 
995 	PORT_START		/* IN#6: 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 4 */
996 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
997 	PORT_START		/* IN#7: 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 5 */
998 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
999 	PORT_START		/* IN#8: 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 6 */
1000 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1001 	PORT_START		/* IN#9: 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 7 */
1002 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1003 
1004 	PORT_START		/* IN#10: 63B05Z0 - PORT H */
1005 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 )
1006 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 )
1007 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 ) /*/???*/
1008 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) /* prev color*/
1009 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) /* ???next color*/
1010 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
1011 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
1012 
1013 	PORT_START		/* IN#11: 63B05Z0 - $2000 DIP SW */
1014 	PORT_DIPNAME( 0x01, 0x01, "DSW1 (Test Mode)")
1015 	PORT_DIPSETTING(	0x01, DEF_STR( Off ) )
1016 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
1017 	PORT_DIPNAME( 0x02, 0x02, "DSW2")
1018 	PORT_DIPSETTING(	0x02, DEF_STR( Off ) )
1019 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
1020 	PORT_DIPNAME( 0x04, 0x04, "DSW3")
1021 	PORT_DIPSETTING(	0x04, DEF_STR( Off ) )
1022 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
1023 	PORT_DIPNAME( 0x08, 0x08, "DSW4")
1024 	PORT_DIPSETTING(	0x08, DEF_STR( Off ) )
1025 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
1026 	PORT_DIPNAME( 0x10, 0x10, "DSW5")
1027 	PORT_DIPSETTING(	0x10, DEF_STR( Off ) )
1028 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
1029 	PORT_DIPNAME( 0x20, 0x20, "DSW6")
1030 	PORT_DIPSETTING(	0x20, DEF_STR( Off ) )
1031 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
1032 	PORT_DIPNAME( 0x40, 0x40, "DSW7")
1033 	PORT_DIPSETTING(	0x40, DEF_STR( Off ) )
1034 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
1035 	PORT_DIPNAME( 0x80, 0x80, "DSW8")
1036 	PORT_DIPSETTING(	0x80, DEF_STR( Off ) )
1037 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
1038 
1039 	PORT_START		/* IN#12: 63B05Z0 - $3000 */
1040 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1041 	PORT_START		/* IN#13: 63B05Z0 - $3001 */
1042 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1043 	PORT_START		/* IN#14: 63B05Z0 - $3002 */
1044 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1045 	PORT_START		/* IN#15: 63B05Z0 - $3003 */
1046 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1047 INPUT_PORTS_END
1048 
1049 
1050 /*    YEAR, NAME,     PARENT,   MACHINE,          INPUT,        INIT,     MONITOR,    COMPANY, FULLNAME,	    	FLAGS */
1051 GAME( 1992, aircombj, 0,	    poly_c140_typeB,  aircombt, 	aircombt, ROT0,		  "Namco", "Air Combat (Japan)" ) /* mostly working */
1052 GAME( 1992, aircombu, aircombj,poly_c140_typeB,  aircombt, 	aircombt, ROT0, 	  "Namco", "Air Combat (US)" ) /* mostly working */
1053 GAME( 1993, cybsled,  0,       poly_c140_typeA,  default,      cybsled,  ROT0,       "Namco", "Cyber Sled" ) /* mostly working */
1054 /* 199?, Driver's Eyes */
1055 /* 1992, ShimDrive */
1056 GAMEX( 1991, solvalou, 0, 	    poly_c140_typeA,  default,	    solvalou, ROT0, 	  "Namco", "Solvalou (Japan)",	GAME_IMPERFECT_GRAPHICS ) /* working and playable */
1057 GAMEX( 1991, starblad, 0, 	    poly_c140_typeA,  default,  	starblad, ROT0, 	  "Namco", "Starblade",			GAME_IMPERFECT_GRAPHICS ) /* working and playable */
1058 /* 1988, Winning Run */
1059 /* 1989, Winning Run Suzuka Grand Prix */
1060 GAMEX( 1991, winrun91, 0, 	    poly_c140_typeB,  default,	    winrun,	  ROT0, 	  "Namco", "Winning Run 91", 	GAME_NOT_WORKING ) /* not working */
1061