1 #include "../machine/toaplan1.c"
2 #include "../vidhrdw/toaplan1.c"
3 
4 /***************************************************************************
5 
6 		ToaPlan game hardware from 1988-1991
7 		------------------------------------
8 		MAME Driver by: Darren Olafson
9 		Technical info: Carl-Henrik Sk�rstedt  &  Magnus Danielsson
10 		Driver updates: Quench
11 		Video updates : SUZ
12 
13 
14 Supported games:
15 
16 	ROM set		Toaplan
17 	name		board No		Game name
18 	--------------------------------------------------
19 	rallybik	TP-012		Rally Bike/Dash Yarou
20 	truxton		TP-013B		Truxton/Tatsujin
21 	hellfire	TP-???		HellFire
22 	zerowing	TP-015		Zero Wing
23 	demonwld	TP-016		Demon's World/Horror Story
24 	samesame	TP-017		Same Same Same! (Japan)	 [1989]
25 	fireshrk	TP-017		Fire Shark (World)		 [1990]
26 	outzone		TP-018		Out Zone
27 	outzonep	??????		Out Zone (Pirate).  Note this uses different ROM
28 							  layout for GFX ROMs. Result is the same though.
29 							  See ROM load for details.
30 	vimana		TP-019		Vimana
31 	vimana2		TP-019		Vimana (alternate)
32 	vimanan		TP-019		Vimana (Nova Apparate GMBH & Co  license)
33 
34 To Do:
35 	Add support for HD647180 (Z180) sound CPUs (once their internal
36 	ROMS are dumped). These are:
37 		Fire Shark
38 		Vimana
39 
40 ***************************************************************************/
41 
42 #include "driver.h"
43 #include "vidhrdw/generic.h"
44 
45 
46 /**************** Machine stuff ******************/
47 int  toaplan1_interrupt(void);
48 WRITE_HANDLER( toaplan1_int_enable_w );
49 READ_HANDLER( toaplan1_shared_r );
50 WRITE_HANDLER( toaplan1_shared_w );
51 READ_HANDLER( toaplan1_unk_r );
52 READ_HANDLER( samesame_port_6_r );
53 READ_HANDLER( vimana_mcu_r );
54 WRITE_HANDLER( vimana_mcu_w );
55 READ_HANDLER( vimana_input_port_5_r );
56 
57 READ_HANDLER( demonwld_dsp_r );
58 WRITE_HANDLER( demonwld_dsp_w );
59 WRITE_HANDLER( demonwld_dsp_ctrl_w );
60 
61 void toaplan1_init_machine(void);
62 
63 WRITE_HANDLER( rallybik_coin_w );
64 WRITE_HANDLER( toaplan1_coin_w );
65 
66 unsigned char *toaplan1_sharedram;
67 
68 
69 /**************** Video stuff ******************/
70 READ_HANDLER( toaplan1_vblank_r );
71 WRITE_HANDLER( toaplan1_flipscreen_w );
72 
73 READ_HANDLER( toaplan1_videoram1_r );
74 WRITE_HANDLER( toaplan1_videoram1_w );
75 READ_HANDLER( toaplan1_videoram2_r );
76 WRITE_HANDLER( toaplan1_videoram2_w );
77 READ_HANDLER( rallybik_videoram3_r );
78 READ_HANDLER( toaplan1_videoram3_r );
79 WRITE_HANDLER( toaplan1_videoram3_w );
80 READ_HANDLER( toaplan1_colorram1_r );
81 WRITE_HANDLER( toaplan1_colorram1_w );
82 READ_HANDLER( toaplan1_colorram2_r );
83 WRITE_HANDLER( toaplan1_colorram2_w );
84 
85 READ_HANDLER( video_ofs_r );
86 WRITE_HANDLER( video_ofs_w );
87 READ_HANDLER( video_ofs3_r );
88 WRITE_HANDLER( video_ofs3_w );
89 READ_HANDLER( scrollregs_r );
90 WRITE_HANDLER( scrollregs_w );
91 WRITE_HANDLER( offsetregs_w );
92 WRITE_HANDLER( layers_offset_w );
93 
94 void toaplan1_eof_callback(void);
95 void rallybik_eof_callback(void);
96 void samesame_eof_callback(void);
97 int  toaplan1_vh_start(void);
98 void toaplan1_vh_stop(void);
99 int  rallybik_vh_start(void);
100 void rallybik_vh_stop(void);
101 void toaplan1_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
102 void rallybik_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
103 
104 extern unsigned char *toaplan1_colorram1;
105 extern unsigned char *toaplan1_colorram2;
106 extern size_t colorram1_size;
107 extern size_t colorram2_size;
108 
109 
110 
111 
112 static struct MemoryReadAddress rallybik_readmem[] =
113 {
114 	{ 0x000000, 0x07ffff, MRA_ROM },
115 	{ 0x080000, 0x083fff, MRA_BANK1 },
116 	{ 0x0c0000, 0x0c0fff, MRA_BANK2 },				/* sprite ram data */
117 	{ 0x100002, 0x100003, video_ofs3_r },
118 	{ 0x100004, 0x100007, rallybik_videoram3_r },	/* tile layers */
119 	{ 0x100010, 0x10001f, scrollregs_r },
120 	{ 0x140000, 0x140001, input_port_0_r },
121 	{ 0x144000, 0x1447ff, toaplan1_colorram1_r },
122 	{ 0x146000, 0x1467ff, toaplan1_colorram2_r },
123 	{ 0x180000, 0x180fff, toaplan1_shared_r },
124 	{ -1 }
125 };
126 static struct MemoryWriteAddress rallybik_writemem[] =
127 {
128 	{ 0x000000, 0x07ffff, MWA_ROM },
129 	{ 0x080000, 0x083fff, MWA_BANK1 },
130 	{ 0x0c0000, 0x0c0fff, MWA_BANK2, &spriteram, &spriteram_size },	/* sprite ram data */
131 	{ 0x100002, 0x100003, video_ofs3_w },
132 	{ 0x100004, 0x100007, toaplan1_videoram3_w },	/* tile layers */
133 	{ 0x100010, 0x10001f, scrollregs_w },
134 	{ 0x140000, 0x140001, toaplan1_int_enable_w },
135 	{ 0x140008, 0x14000f, layers_offset_w },
136 	{ 0x144000, 0x1447ff, toaplan1_colorram1_w, &toaplan1_colorram1, &colorram1_size },
137 	{ 0x146000, 0x1467ff, toaplan1_colorram2_w, &toaplan1_colorram2, &colorram2_size },
138 	{ 0x180000, 0x180fff, toaplan1_shared_w, &toaplan1_sharedram },
139 	{ 0x1c0000, 0x1c0003, offsetregs_w },
140 	{ -1 }
141 };
142 
143 static struct MemoryReadAddress truxton_readmem[] =
144 {
145 	{ 0x000000, 0x07ffff, MRA_ROM },
146 	{ 0x080000, 0x083fff, MRA_BANK1 },
147 	{ 0x0c0000, 0x0c0001, input_port_0_r },
148 	{ 0x0c0002, 0x0c0003, video_ofs_r },
149 	{ 0x0c0004, 0x0c0005, toaplan1_videoram1_r },	/* sprites info */
150 	{ 0x0c0006, 0x0c0007, toaplan1_videoram2_r },	/* sprite size ? */
151 	{ 0x100002, 0x100003, video_ofs3_r },
152 	{ 0x100004, 0x100007, toaplan1_videoram3_r },	/* tile layers */
153 	{ 0x100010, 0x10001f, scrollregs_r },
154 	{ 0x144000, 0x1447ff, toaplan1_colorram1_r },
155 	{ 0x146000, 0x1467ff, toaplan1_colorram2_r },
156 	{ 0x180000, 0x180fff, toaplan1_shared_r },
157 	{ -1 }
158 };
159 static struct MemoryWriteAddress truxton_writemem[] =
160 {
161 	{ 0x000000, 0x07ffff, MWA_ROM },
162 	{ 0x080000, 0x083fff, MWA_BANK1 },
163 	{ 0x0c0002, 0x0c0003, video_ofs_w },
164 	{ 0x0c0004, 0x0c0005, toaplan1_videoram1_w },	/* sprites info */
165 	{ 0x0c0006, 0x0c0007, toaplan1_videoram2_w },	/* sprite size ? */
166 	{ 0x100002, 0x100003, video_ofs3_w },
167 	{ 0x100004, 0x100007, toaplan1_videoram3_w },	/* tile layers */
168 	{ 0x100010, 0x10001f, scrollregs_w },
169 	{ 0x140000, 0x140001, toaplan1_int_enable_w },
170 	{ 0x140008, 0x14000f, layers_offset_w },
171 	{ 0x144000, 0x1447ff, toaplan1_colorram1_w, &toaplan1_colorram1, &colorram1_size },
172 	{ 0x146000, 0x1467ff, toaplan1_colorram2_w, &toaplan1_colorram2, &colorram2_size },
173 	{ 0x180000, 0x180fff, toaplan1_shared_w, &toaplan1_sharedram },
174 	{ 0x1c0000, 0x1c0003, offsetregs_w },
175 	{ 0x1c0006, 0x1c0007, toaplan1_flipscreen_w },
176 	{ -1 }
177 };
178 
179 static struct MemoryReadAddress hellfire_readmem[] =
180 {
181 	{ 0x000000, 0x03ffff, MRA_ROM },
182 	{ 0x040000, 0x047fff, MRA_BANK1 },
183 	{ 0x084000, 0x0847ff, toaplan1_colorram1_r },
184 	{ 0x086000, 0x0867ff, toaplan1_colorram2_r },
185 	{ 0x0c0000, 0x0c0fff, toaplan1_shared_r },
186 	{ 0x100002, 0x100003, video_ofs3_r },
187 	{ 0x100004, 0x100007, toaplan1_videoram3_r },	/* tile layers */
188 	{ 0x100010, 0x10001f, scrollregs_r },
189 	{ 0x140000, 0x140001, input_port_0_r },
190 	{ 0x140002, 0x140003, video_ofs_r },
191 	{ 0x140004, 0x140005, toaplan1_videoram1_r },	/* sprites info */
192 	{ 0x140006, 0x140007, toaplan1_videoram2_r },	/* sprite size ? */
193 	{ -1 }	/* end of table */
194 };
195 static struct MemoryWriteAddress hellfire_writemem[] =
196 {
197 	{ 0x000000, 0x03ffff, MWA_ROM },
198 	{ 0x040000, 0x047fff, MWA_BANK1 },
199 	{ 0x080002, 0x080003, toaplan1_int_enable_w },
200 	{ 0x080008, 0x08000f, layers_offset_w },
201 	{ 0x084000, 0x0847ff, toaplan1_colorram1_w, &toaplan1_colorram1, &colorram1_size },
202 	{ 0x086000, 0x0867ff, toaplan1_colorram2_w, &toaplan1_colorram2, &colorram2_size },
203 	{ 0x0c0000, 0x0c0fff, toaplan1_shared_w, &toaplan1_sharedram },
204 	{ 0x100002, 0x100003, video_ofs3_w },
205 	{ 0x100004, 0x100007, toaplan1_videoram3_w },	/* tile layers */
206 	{ 0x100010, 0x10001f, scrollregs_w },
207 	{ 0x140002, 0x140003, video_ofs_w },
208 	{ 0x140004, 0x140005, toaplan1_videoram1_w },	/* sprites info */
209 	{ 0x140006, 0x140007, toaplan1_videoram2_w },	/* sprite size ? */
210 	{ 0x180000, 0x180003, offsetregs_w },
211 	{ 0x180006, 0x180007, toaplan1_flipscreen_w },
212 	{ -1 }	/* end of table */
213 };
214 
215 static struct MemoryReadAddress zerowing_readmem[] =
216 {
217 	{ 0x000000, 0x07ffff, MRA_ROM },
218 	{ 0x080000, 0x087fff, MRA_BANK1 },
219 	{ 0x400000, 0x400005, toaplan1_unk_r },
220 	{ 0x404000, 0x4047ff, toaplan1_colorram1_r },
221 	{ 0x406000, 0x4067ff, toaplan1_colorram2_r },
222 	{ 0x440000, 0x440fff, toaplan1_shared_r },
223 	{ 0x480002, 0x480003, video_ofs3_r },
224 	{ 0x480004, 0x480007, toaplan1_videoram3_r },	/* tile layers */
225 	{ 0x480010, 0x48001f, scrollregs_r },
226 	{ 0x4c0000, 0x4c0001, input_port_0_r },
227 	{ 0x4c0002, 0x4c0003, video_ofs_r },
228 	{ 0x4c0004, 0x4c0005, toaplan1_videoram1_r },	/* sprites info */
229 	{ 0x4c0006, 0x4c0007, toaplan1_videoram2_r },	/* sprite size ? */
230 	{ -1 }	/* end of table */
231 };
232 static struct MemoryWriteAddress zerowing_writemem[] =
233 {
234 	{ 0x000000, 0x07ffff, MWA_ROM },
235 	{ 0x080000, 0x087fff, MWA_BANK1 },
236 	{ 0x0c0000, 0x0c0003, offsetregs_w },
237 	{ 0x0c0006, 0x0c0007, toaplan1_flipscreen_w },
238 	{ 0x400002, 0x400003, toaplan1_int_enable_w },
239 	{ 0x400008, 0x40000f, layers_offset_w },
240 	{ 0x404000, 0x4047ff, toaplan1_colorram1_w, &toaplan1_colorram1, &colorram1_size },
241 	{ 0x406000, 0x4067ff, toaplan1_colorram2_w, &toaplan1_colorram2, &colorram2_size },
242 	{ 0x440000, 0x440fff, toaplan1_shared_w, &toaplan1_sharedram },
243 	{ 0x480002, 0x480003, video_ofs3_w },
244 	{ 0x480004, 0x480007, toaplan1_videoram3_w },	/* tile layers */
245 	{ 0x480010, 0x48001f, scrollregs_w },
246 	{ 0x4c0002, 0x4c0003, video_ofs_w },
247 	{ 0x4c0004, 0x4c0005, toaplan1_videoram1_w },	/* sprites info */
248 	{ 0x4c0006, 0x4c0007, toaplan1_videoram2_w },	/* sprite size ? */
249 	{ -1 }	/* end of table */
250 };
251 
252 static struct MemoryReadAddress demonwld_readmem[] =
253 {
254 	{ 0x000000, 0x03ffff, MRA_ROM },
255 	{ 0x400000, 0x400001, input_port_0_r },
256 	{ 0x404000, 0x4047ff, toaplan1_colorram1_r },
257 	{ 0x406000, 0x4067ff, toaplan1_colorram2_r },
258 	{ 0x600000, 0x600fff, toaplan1_shared_r },
259 	{ 0x800002, 0x800003, video_ofs3_r },
260 	{ 0x800004, 0x800007, toaplan1_videoram3_r },	/* tile layers */
261 	{ 0x800010, 0x80001f, scrollregs_r },
262 	{ 0xa00000, 0xa00001, input_port_0_r },
263 	{ 0xa00002, 0xa00003, video_ofs_r },
264 	{ 0xa00004, 0xa00005, toaplan1_videoram1_r },	/* sprites info */
265 	{ 0xa00006, 0xa00007, toaplan1_videoram2_r },	/* sprite size ? */
266 	{ 0xc00000, 0xc03fff, MRA_BANK1},
267 	{ -1 }
268 };
269 static struct MemoryWriteAddress demonwld_writemem[] =
270 {
271 	{ 0x000000, 0x03ffff, MWA_ROM },
272 	{ 0x340006, 0x340007, toaplan1_flipscreen_w },
273 	{ 0x404000, 0x4047ff, toaplan1_colorram1_w, &toaplan1_colorram1, &colorram1_size },
274 	{ 0x406000, 0x4067ff, toaplan1_colorram2_w, &toaplan1_colorram2, &colorram2_size },
275 	{ 0x600000, 0x600fff, toaplan1_shared_w, &toaplan1_sharedram },
276 	{ 0x800002, 0x800003, video_ofs3_w },
277 	{ 0x800004, 0x800007, toaplan1_videoram3_w },	/* tile layers */
278 	{ 0x800010, 0x80001f, scrollregs_w },
279 	{ 0x400000, 0x400001, toaplan1_int_enable_w },
280 	{ 0x400008, 0x40000f, layers_offset_w },
281 	{ 0xa00002, 0xa00003, video_ofs_w },
282 	{ 0xa00004, 0xa00005, toaplan1_videoram1_w },	/* sprites info */
283 	{ 0xa00006, 0xa00007, toaplan1_videoram2_w },	/* sprite size ? */
284 	{ 0xc00000, 0xc03fff, MWA_BANK1},
285 	{ 0xe00000, 0xe00003, offsetregs_w },
286 	{ 0xe0000a, 0xe0000b, demonwld_dsp_ctrl_w },			/* DSP Comms control */
287 	{ -1 }
288 };
289 
290 static struct MemoryReadAddress samesame_readmem[] =
291 {
292 	{ 0x000000, 0x00ffff, MRA_ROM },
293 	{ 0x040000, 0x07ffff, MRA_ROM },
294 	{ 0x0c0000, 0x0c3fff, MRA_BANK1 },
295 	{ 0x100000, 0x100001, toaplan1_vblank_r },
296 	{ 0x104000, 0x1047ff, toaplan1_colorram1_r },
297 	{ 0x106000, 0x1067ff, toaplan1_colorram2_r },
298 	{ 0x140000, 0x140001, input_port_1_r },
299 	{ 0x140002, 0x140003, input_port_2_r },
300 	{ 0x140004, 0x140005, input_port_3_r },
301 	{ 0x140006, 0x140007, input_port_4_r },
302 	{ 0x140008, 0x140009, input_port_5_r },
303 	{ 0x14000a, 0x14000b, samesame_port_6_r },		/* Territory, and MCU ready */
304 	{ 0x180002, 0x180003, video_ofs3_r },
305 	{ 0x180004, 0x180007, toaplan1_videoram3_r },	/* tile layers */
306 	{ 0x180010, 0x18001f, scrollregs_r },
307 	{ 0x1c0000, 0x1c0001, input_port_0_r },
308 	{ 0x1c0002, 0x1c0003, video_ofs_r },
309 	{ 0x1c0004, 0x1c0005, toaplan1_videoram1_r },	/* sprites info */
310 	{ 0x1c0006, 0x1c0007, toaplan1_videoram2_r },	/* sprite size ? */
311 	{ -1 }	/* end of table */
312 };
313 static struct MemoryWriteAddress samesame_writemem[] =
314 {
315 	{ 0x000000, 0x00ffff, MWA_ROM },
316 	{ 0x040000, 0x07ffff, MWA_ROM },
317 	{ 0x080000, 0x080003, offsetregs_w },
318 	{ 0x080006, 0x080007, toaplan1_flipscreen_w },
319 	{ 0x0c0000, 0x0c3fff, MWA_BANK1 },			/* Frame done at $c1ada */
320 /*	{ 0x100000, 0x100001, ??? },				disable palette refresh ? */
321 	{ 0x100002, 0x100003, toaplan1_int_enable_w },
322 	{ 0x100008, 0x10000f, layers_offset_w },
323 	{ 0x104000, 0x1047ff, toaplan1_colorram1_w, &toaplan1_colorram1, &colorram1_size },
324 	{ 0x106000, 0x1067ff, toaplan1_colorram2_w, &toaplan1_colorram2, &colorram2_size },
325 	{ 0x14000c, 0x14000d, toaplan1_coin_w },	/* Coin counter/lockout */
326 //	{ 0x14000e, 0x14000f, samesame_mcu_w },		/* Commands sent to HD647180 */
327 	{ 0x180002, 0x180003, video_ofs3_w },
328 	{ 0x180004, 0x180007, toaplan1_videoram3_w },	/* tile layers */
329 	{ 0x180010, 0x18001f, scrollregs_w },
330 /*	{ 0x1c0000, 0x1c0001, ??? },				disable sprite refresh ? */
331 	{ 0x1c0002, 0x1c0003, video_ofs_w },
332 	{ 0x1c0004, 0x1c0005, toaplan1_videoram1_w },	/* sprites info */
333 	{ 0x1c0006, 0x1c0007, toaplan1_videoram2_w },	/* sprite size ? */
334 	{ -1 }	/* end of table */
335 };
336 
337 static struct MemoryReadAddress outzone_readmem[] =
338 {
339 	{ 0x000000, 0x07ffff, MRA_ROM },
340 	{ 0x100000, 0x100001, input_port_0_r },
341 	{ 0x100002, 0x100003, video_ofs_r },
342 	{ 0x100004, 0x100005, toaplan1_videoram1_r },	/* sprites info */
343 	{ 0x100006, 0x100007, toaplan1_videoram2_r },
344 	{ 0x140000, 0x140fff, toaplan1_shared_r },
345 	{ 0x200002, 0x200003, video_ofs3_r },
346 	{ 0x200004, 0x200007, toaplan1_videoram3_r },	/* tile layers */
347 	{ 0x200010, 0x20001f, scrollregs_r },
348 	{ 0x240000, 0x243fff, MRA_BANK1 },
349 	{ 0x300000, 0x300001, toaplan1_vblank_r },
350 	{ 0x304000, 0x3047ff, toaplan1_colorram1_r },
351 	{ 0x306000, 0x3067ff, toaplan1_colorram2_r },
352 	{ -1 }
353 };
354 static struct MemoryWriteAddress outzone_writemem[] =
355 {
356 	{ 0x000000, 0x07ffff, MWA_ROM },
357 	{ 0x100002, 0x100003, video_ofs_w },
358 	{ 0x100004, 0x100005, toaplan1_videoram1_w },	/* sprites info */
359 	{ 0x100006, 0x100007, toaplan1_videoram2_w },
360 	{ 0x140000, 0x140fff, toaplan1_shared_w, &toaplan1_sharedram },
361 	{ 0x200002, 0x200003, video_ofs3_w },
362 	{ 0x200004, 0x200007, toaplan1_videoram3_w },	/* tile layers */
363 	{ 0x200010, 0x20001f, scrollregs_w },
364 	{ 0x240000, 0x243fff, MWA_BANK1 },
365 	{ 0x300000, 0x300001, toaplan1_int_enable_w },
366 	{ 0x300008, 0x30000f, layers_offset_w },
367 	{ 0x304000, 0x3047ff, toaplan1_colorram1_w, &toaplan1_colorram1, &colorram1_size },
368 	{ 0x306000, 0x3067ff, toaplan1_colorram2_w, &toaplan1_colorram2, &colorram2_size },
369 	{ 0x340000, 0x340003, offsetregs_w },
370 	{ 0x340006, 0x340007, toaplan1_flipscreen_w },
371 	{ -1 }
372 };
373 
374 static struct MemoryReadAddress vimana_readmem[] =
375 {
376 	{ 0x000000, 0x03ffff, MRA_ROM },
377 	{ 0x0c0000, 0x0c0001, input_port_0_r },
378 	{ 0x0c0002, 0x0c0003, video_ofs_r },
379 	{ 0x0c0004, 0x0c0005, toaplan1_videoram1_r },	/* sprites info */
380 	{ 0x0c0006, 0x0c0007, toaplan1_videoram2_r },	/* sprite size ? */
381 	{ 0x400000, 0x400001, toaplan1_vblank_r },
382 	{ 0x404000, 0x4047ff, toaplan1_colorram1_r },
383 	{ 0x406000, 0x4067ff, toaplan1_colorram2_r },
384 	{ 0x440000, 0x440005, vimana_mcu_r },
385 	{ 0x440006, 0x440007, input_port_3_r },
386 	{ 0x440008, 0x440009, vimana_input_port_5_r },
387 	{ 0x44000a, 0x44000b, input_port_1_r },
388 	{ 0x44000c, 0x44000d, input_port_2_r },
389 	{ 0x44000e, 0x44000f, input_port_4_r },
390 	{ 0x440010, 0x440011, input_port_6_r },
391 	{ 0x480000, 0x487fff, MRA_BANK1 },
392 	{ 0x4c0000, 0x4c0001, toaplan1_unk_r },
393 	{ 0x4c0002, 0x4c0003, video_ofs3_r },
394 	{ 0x4c0004, 0x4c0007, toaplan1_videoram3_r },	/* tile layers */
395 	{ 0x4c0010, 0x4c001f, scrollregs_r },
396 	{ -1 }	/* end of table */
397 };
398 static struct MemoryWriteAddress vimana_writemem[] =
399 {
400 	{ 0x000000, 0x03ffff, MWA_ROM },
401 	{ 0x080000, 0x080003, offsetregs_w },
402 	{ 0x080006, 0x080007, toaplan1_flipscreen_w },
403 	{ 0x0c0002, 0x0c0003, video_ofs_w },
404 	{ 0x0c0004, 0x0c0005, toaplan1_videoram1_w },	/* sprites info */
405 	{ 0x0c0006, 0x0c0007, toaplan1_videoram2_w },	/* sprite size ? */
406 	{ 0x400002, 0x400003, toaplan1_int_enable_w },	/* IRQACK? */
407 	{ 0x400008, 0x40000f, layers_offset_w },
408 	{ 0x404000, 0x4047ff, toaplan1_colorram1_w, &toaplan1_colorram1, &colorram1_size },
409 	{ 0x406000, 0x4067ff, toaplan1_colorram2_w, &toaplan1_colorram2, &colorram2_size },
410 	{ 0x440000, 0x440005, vimana_mcu_w },
411 	{ 0x480000, 0x487fff, MWA_BANK1 },
412 	{ 0x4c0002, 0x4c0003, video_ofs3_w },
413 	{ 0x4c0004, 0x4c0007, toaplan1_videoram3_w },	/* tile layers */
414 	{ 0x4c0010, 0x4c001f, scrollregs_w },
415 	{ -1 }	/* end of table */
416 };
417 
418 
419 
420 static struct MemoryReadAddress sound_readmem[] =
421 {
422 	{ 0x0000, 0x7fff, MRA_ROM },
423 	{ 0x8000, 0xffff, MRA_RAM },
424 	{ -1 }	/* end of table */
425 };
426 static struct MemoryWriteAddress sound_writemem[] =
427 {
428 	{ 0x0000, 0x7fff, MWA_ROM },
429 	{ 0x8000, 0xffff, MWA_RAM, &toaplan1_sharedram },
430 	{ -1 }	/* end of table */
431 };
432 
433 
434 static struct IOReadPort truxton_sound_readport[] =
435 {
436 	{ 0x00, 0x00, input_port_1_r },	/* Player 1 */
437 	{ 0x10, 0x10, input_port_2_r },	/* Player 2 */
438 	{ 0x20, 0x20, input_port_5_r },	/* Coin/Start inputs */
439 	{ 0x40, 0x40, input_port_3_r },	/* DSW1 */
440 	{ 0x50, 0x50, input_port_4_r },	/* DSW2 */
441 	{ 0x60, 0x60, YM3812_status_port_0_r },
442 	{ 0x70, 0x70, input_port_6_r },	/* Territory Jumper Block for Truxton */
443 	{ -1 }	/* end of table */
444 };
445 static struct IOWritePort truxton_sound_writeport[] =
446 {
447 	{ 0x30, 0x30, toaplan1_coin_w },	/* Coin counter/lockout */
448 	{ 0x60, 0x60, YM3812_control_port_0_w },
449 	{ 0x61, 0x61, YM3812_write_port_0_w },
450 	{ -1 }	/* end of table */
451 };
452 static struct IOWritePort rallybik_sound_writeport[] =
453 {
454 	{ 0x30, 0x30, rallybik_coin_w },	/* Coin counter/lockout */
455 	{ 0x60, 0x60, YM3812_control_port_0_w },
456 	{ 0x61, 0x61, YM3812_write_port_0_w },
457 	{ -1 }	/* end of table */
458 };
459 
460 static struct IOReadPort hellfire_sound_readport[] =
461 {
462 	{ 0x00, 0x00, input_port_3_r },	/* DSW1 */
463 	{ 0x10, 0x10, input_port_4_r },	/* DSW2 */
464 	{ 0x20, 0x20, input_port_6_r },	/* Territory Jumper Block */
465 	{ 0x40, 0x40, input_port_1_r },	/* Player 1 */
466 	{ 0x50, 0x50, input_port_2_r },	/* Player 2 */
467 	{ 0x60, 0x60, input_port_5_r },	/* Coin/Start inputs */
468 	{ 0x70, 0x70, YM3812_status_port_0_r },
469 	{ -1 }	/* end of table */
470 };
471 static struct IOWritePort hellfire_sound_writeport[] =
472 {
473 	{ 0x30, 0x30, toaplan1_coin_w },	/* Coin counter/lockout */
474 	{ 0x70, 0x70, YM3812_control_port_0_w },
475 	{ 0x71, 0x71, YM3812_write_port_0_w },
476 	{ -1 }	/* end of table */
477 };
478 
479 static struct IOReadPort zerowing_sound_readport[] =
480 {
481 	{ 0x00, 0x00, input_port_1_r },	/* Player 1 */
482 	{ 0x08, 0x08, input_port_2_r },	/* Player 2 */
483 	{ 0x20, 0x20, input_port_3_r },	/* DSW1 */
484 	{ 0x28, 0x28, input_port_4_r },	/* DSW2 */
485 	{ 0x80, 0x80, input_port_5_r },	/* Coin/Start inputs */
486 	{ 0x88, 0x88, input_port_6_r },	/* Territory Jumper Block */
487 	{ 0xa8, 0xa8, YM3812_status_port_0_r },
488 	{ -1 }	/* end of table */
489 };
490 static struct IOWritePort zerowing_sound_writeport[] =
491 {
492 	{ 0xa0, 0xa0, toaplan1_coin_w },	/* Coin counter/lockout */
493 	{ 0xa8, 0xa8, YM3812_control_port_0_w },
494 	{ 0xa9, 0xa9, YM3812_write_port_0_w },
495 	{ -1 }	/* end of table */
496 };
497 
498 static struct IOReadPort demonwld_sound_readport[] =
499 {
500 	{ 0x00, 0x00, YM3812_status_port_0_r },
501 	{ 0x20, 0x20, input_port_6_r },
502 	{ 0x60, 0x60, input_port_5_r },
503 	{ 0x80, 0x80, input_port_1_r },
504 	{ 0xa0, 0xa0, input_port_4_r },
505 	{ 0xc0, 0xc0, input_port_2_r },
506 	{ 0xe0, 0xe0, input_port_3_r },
507 	{ -1 }	/* end of table */
508 };
509 static struct IOWritePort demonwld_sound_writeport[] =
510 {
511 	{ 0x00, 0x00, YM3812_control_port_0_w },
512 	{ 0x01, 0x01, YM3812_write_port_0_w },
513 	{ 0x40, 0x40, toaplan1_coin_w },	/* Coin counter/lockout */
514 	{ -1 }	/* end of table */
515 };
516 
517 static struct IOReadPort outzone_sound_readport[] =
518 {
519 	{ 0x08, 0x08, input_port_3_r },
520 	{ 0x0c, 0x0c, input_port_4_r },
521 	{ 0x10, 0x10, input_port_5_r },
522 	{ 0x14, 0x14, input_port_1_r },
523 	{ 0x18, 0x18, input_port_2_r },
524 	{ 0x1c, 0x1c, input_port_6_r },
525 	{ 0x00, 0x00, YM3812_status_port_0_r },
526 	{ -1 }	/* end of table */
527 };
528 static struct IOWritePort outzone_sound_writeport[] =
529 {
530 	{ 0x00, 0x00, YM3812_control_port_0_w },
531 	{ 0x01, 0x01, YM3812_write_port_0_w },
532 	{ 0x04, 0x04, toaplan1_coin_w },	/* Coin counter/lockout */
533 	{ -1 }	/* end of table */
534 };
535 
536 static struct MemoryReadAddress DSP_readmem[] =
537 {
538 	{ 0x0000, 0x0fff, MRA_ROM },	/* 0x800 words */
539 	{ 0x8000, 0x811f, MRA_RAM },	/* The real DSP has this at address 0 */
540 									/* View this at 4000h in the debugger */
541 	{ -1 }	/* end of table */
542 };
543 
544 static struct MemoryWriteAddress DSP_writemem[] =
545 {
546 	{ 0x0000, 0x0fff, MWA_ROM },	/* 0x800 words */
547 	{ 0x8000, 0x811f, MWA_RAM },	/* The real DSP has this at address 0 */
548 									/* View this at 4000h in the debugger */
549 	{ -1 }	/* end of table */
550 };
551 
552 static struct IOReadPort DSP_readport[] =
553 {
554 	{ 0x01, 0x01, demonwld_dsp_r },
555 	{ -1 }	/* end of table */
556 };
557 
558 static struct IOWritePort DSP_writeport[] =
559 {
560 	{ 0x00, 0x03, demonwld_dsp_w },
561 	{ -1 }	/* end of table */
562 };
563 
564 
565 /*****************************************************************************
566 	Input Port definitions
567 *****************************************************************************/
568 
569 
570 #define  TOAPLAN1_PLAYER_INPUT( player, button3 )										\
571 	PORT_START																	\
572 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | player )	\
573 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | player )	\
574 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | player )	\
575 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | player )	\
576 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | player )						\
577 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 | player )						\
578 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, button3 | player )									\
579 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
580 
581 #define  TOAPLAN1_SYSTEM_INPUTS						\
582 	PORT_START										\
583 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN3 ) 	\
584 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_TILT )		\
585 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )	\
586 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )		\
587 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 )		\
588 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )	\
589 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )	\
590 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
591 
592 
593 
594 INPUT_PORTS_START( rallybik )
595 	PORT_START		/* VBlank */
596 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_VBLANK )
597 	PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
598 
599 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN )
600 
601 	TOAPLAN1_PLAYER_INPUT( IPF_COCKTAIL, IPT_UNKNOWN )
602 
603 	PORT_START		/* DSW A */
604 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
605 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
606 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
607 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
608 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
609 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
610 	PORT_SERVICE( 0x04, IP_ACTIVE_HIGH )
611 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
612 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
613 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
614 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
615 	PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) )
616 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
617 	PORT_DIPSETTING(    0x30, DEF_STR( 2C_3C ) )
618 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
619 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
620 	PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
621 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
622 	PORT_DIPSETTING(    0xc0, DEF_STR( 2C_3C ) )
623 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_2C ) )
624 
625 	PORT_START		/* DSW B */
626 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
627 	PORT_DIPSETTING(    0x01, "Easy" )
628 	PORT_DIPSETTING(    0x00, "Medium" )
629 	PORT_DIPSETTING(    0x02, "Hard" )
630 	PORT_DIPSETTING(    0x03, "Hardest" )
631 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
632 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
633 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
634 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
635 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
636 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
637 	PORT_DIPNAME( 0x30, 0x20, "Territory/Copyright" )
638 	PORT_DIPSETTING(    0x20, "World/Taito Corp Japan" )
639 	PORT_DIPSETTING(    0x10, "USA/Taito America" )
640 	PORT_DIPSETTING(    0x00, "Japan/Taito Corp" )
641 	PORT_DIPSETTING(    0x30, "USA/Taito America (Romstar)" )
642 	PORT_DIPNAME( 0x40, 0x00, "Dip Switch Display" )
643 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
644 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
645 	PORT_DIPNAME( 0x80, 0x00, "Allow Continue" )
646 	PORT_DIPSETTING(    0x80, DEF_STR( No ) )
647 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
648 
649 	TOAPLAN1_SYSTEM_INPUTS
650 
651 INPUT_PORTS_END
652 
653 INPUT_PORTS_START( truxton )
654 	PORT_START		/* VBlank */
655 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_VBLANK )
656 	PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
657 
658 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN )
659 
660 	TOAPLAN1_PLAYER_INPUT( IPF_COCKTAIL, IPT_UNKNOWN )
661 
662 	PORT_START		/* DSW A */
663 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
664 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
665 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
666 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
667 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
668 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
669 	PORT_SERVICE( 0x04, IP_ACTIVE_HIGH )
670 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
671 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
672 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
673 /* credits per coin options change, depending on the territory setting */
674 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
675 	PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) )
676 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
677 	PORT_DIPSETTING(    0x30, DEF_STR( 2C_3C ) )
678 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
679 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
680 	PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
681 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
682 	PORT_DIPSETTING(    0xc0, DEF_STR( 2C_3C ) )
683 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_2C ) )
684 /* The following are coin settings for Japan
685 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
686 	PORT_DIPSETTING(    0x30, DEF_STR( 4C_1C ) )
687 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
688 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
689 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
690 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
691 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
692 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_3C ) )
693 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_4C ) )
694 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_6C ) )
695 */
696 
697 	PORT_START		/* DSW B */
698 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
699 	PORT_DIPSETTING(    0x01, "Easy" )
700 	PORT_DIPSETTING(    0x00, "Medium" )
701 	PORT_DIPSETTING(    0x02, "Hard" )
702 	PORT_DIPSETTING(    0x03, "Hardest" )
703 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
704 	PORT_DIPSETTING(    0x04, "50K, every 150K" )
705 	PORT_DIPSETTING(    0x00, "70K, every 200K" )
706 	PORT_DIPSETTING(    0x08, "100K only" )
707 	PORT_DIPSETTING(    0x0c, "None" )
708 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
709 	PORT_DIPSETTING(    0x30, "2" )
710 	PORT_DIPSETTING(    0x00, "3" )
711 	PORT_DIPSETTING(    0x20, "4" )
712 	PORT_DIPSETTING(    0x10, "5" )
713 	PORT_DIPNAME( 0x40, 0x00, "Show Dip Switches" )
714 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
715 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
716 	PORT_DIPNAME( 0x80, 0x00, "Allow Continue" )
717 	PORT_DIPSETTING(    0x80, DEF_STR( No ) )
718 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
719 
720 	TOAPLAN1_SYSTEM_INPUTS
721 
722 	PORT_START		/* Territory Jumper Block */
723 	PORT_DIPNAME( 0x07, 0x02, "Territory/Copyright" )
724 	PORT_DIPSETTING(    0x02, "World/Taito Corp" )
725 	PORT_DIPSETTING(    0x06, "World/Taito America" )
726 	PORT_DIPSETTING(    0x04, "US/Taito America" )
727 	PORT_DIPSETTING(    0x01, "US/Romstar" )
728 	PORT_DIPSETTING(    0x00, "Japan/Taito Corp" )
729 //	PORT_DIPSETTING(    0x05, "Same as 0x04" )
730 //	PORT_DIPSETTING(    0x03, "Same as 0x02" )
731 //	PORT_DIPSETTING(    0x07, "Same as 0x06" )
732 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unused ) )
733 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
734 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
735 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
736 INPUT_PORTS_END
737 
738 INPUT_PORTS_START( hellfire )
739 	PORT_START		/* VBlank */
740 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_VBLANK )
741 	PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
742 
743 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN )
744 
745 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN )
746 
747 	PORT_START		/* DSW A */
748 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unused ) )
749 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
750 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
751 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
752 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
753 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
754 	PORT_SERVICE( 0x04, IP_ACTIVE_HIGH )
755 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
756 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
757 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
758 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
759 	PORT_DIPSETTING(    0x30, DEF_STR( 4C_1C ) )
760 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
761 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
762 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
763 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
764 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
765 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_3C ) )
766 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_4C ) )
767 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_6C ) )
768 
769 	PORT_START		/* DSWB */
770 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
771 	PORT_DIPSETTING(    0x01, "Easy" )
772 	PORT_DIPSETTING(    0x00, "Medium" )
773 	PORT_DIPSETTING(    0x02, "Hard" )
774 	PORT_DIPSETTING(    0x03, "Hardest" )
775 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
776     PORT_DIPSETTING(    0x00, "70K, every 200K" )
777     PORT_DIPSETTING(    0x04, "100K, every 250K" )
778 	PORT_DIPSETTING(    0x08, "100K" )
779 	PORT_DIPSETTING(    0x0c, "200K" )
780 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
781 	PORT_DIPSETTING(    0x30, "2" )
782 	PORT_DIPSETTING(    0x00, "3" )
783 	PORT_DIPSETTING(    0x20, "4" )
784 	PORT_DIPSETTING(    0x10, "5" )
785 	PORT_BITX(    0x40, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
786 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
787 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
788 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unused ) )
789 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
790 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
791 
792 	TOAPLAN1_SYSTEM_INPUTS
793 
794 	PORT_START		/* Territory Jumper block */
795 	PORT_DIPNAME( 0x03, 0x02, "Territory" )
796 	PORT_DIPSETTING(    0x02, "Europe" )
797 //	PORT_DIPSETTING(    0x03, "Europe" )
798 	PORT_DIPSETTING(    0x01, "US" )
799 	PORT_DIPSETTING(    0x00, "Japan" )
800 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unused ) )
801 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
802 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
803 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unused ) )
804 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
805 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
806 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
807 INPUT_PORTS_END
808 
809 INPUT_PORTS_START( zerowing )
810 	PORT_START		/* VBlank */
811 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_VBLANK )
812 	PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
813 
814 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN )
815 
816 	TOAPLAN1_PLAYER_INPUT( IPF_COCKTAIL, IPT_UNKNOWN )
817 
818 	PORT_START		/* DSW A */
819 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
820 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
821 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
822 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
823 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
824 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
825 	PORT_SERVICE( 0x04, IP_ACTIVE_HIGH )
826 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
827 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
828 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
829 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
830 	PORT_DIPSETTING(    0x30, DEF_STR( 4C_1C ) )
831 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
832 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
833 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
834 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
835 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
836 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_3C ) )
837 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_4C ) )
838 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_6C ) )
839 
840 	PORT_START		/* DSW B */
841 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
842 	PORT_DIPSETTING(    0x01, "Easy" )
843 	PORT_DIPSETTING(    0x00, "Medium" )
844 	PORT_DIPSETTING(    0x02, "Hard" )
845 	PORT_DIPSETTING(    0x03, "Hardest" )
846 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
847     PORT_DIPSETTING(    0x00, "200K, every 500K" )
848     PORT_DIPSETTING(    0x04, "500K, every 1M" )
849 	PORT_DIPSETTING(    0x08, "500K" )
850 	PORT_DIPSETTING(    0x0c, "None" )
851 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
852 	PORT_DIPSETTING(    0x30, "2" )
853 	PORT_DIPSETTING(    0x00, "3" )
854 	PORT_DIPSETTING(    0x20, "4" )
855 	PORT_DIPSETTING(    0x10, "5" )
856 	PORT_BITX(    0x40, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
857 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
858 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
859 	PORT_DIPNAME( 0x80, 0x00, "Allow Continue" )
860 	PORT_DIPSETTING(    0x80, DEF_STR( No ) )
861 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
862 
863 	TOAPLAN1_SYSTEM_INPUTS
864 
865 	PORT_START		/* Territory Jumper block */
866 	PORT_DIPNAME( 0x03, 0x02, "Territory" )
867 	PORT_DIPSETTING(    0x02, "Europe" )
868 //	PORT_DIPSETTING(    0x03, "Europe" )
869 	PORT_DIPSETTING(    0x01, "US" )
870 	PORT_DIPSETTING(    0x00, "Japan" )
871 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unused ) )
872 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
873 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
874 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unused ) )
875 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
876 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
877 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
878 INPUT_PORTS_END
879 
880 INPUT_PORTS_START( demonwld )
881 	PORT_START		/* VBlank */
882 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_VBLANK )
883 	PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
884 
885 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER1, IPT_BUTTON3 )
886 
887 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER2, IPT_BUTTON3 )
888 
889 	PORT_START		/* DSW A */
890 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unused ) )
891 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
892 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
893 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
894 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
895 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
896 	PORT_SERVICE( 0x04, IP_ACTIVE_HIGH )
897 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
898 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
899 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
900 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
901 	PORT_DIPSETTING(    0x30, DEF_STR( 4C_1C ) )
902 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
903 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
904 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
905 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
906 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
907 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_3C ) )
908 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_4C ) )
909 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_6C ) )
910 
911 	PORT_START		/* DSW B */
912 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
913 	PORT_DIPSETTING(    0x01, "Easy" )
914 	PORT_DIPSETTING(    0x00, "Medium" )
915 	PORT_DIPSETTING(    0x02, "Hard" )
916 	PORT_DIPSETTING(    0x03, "Hardest" )
917 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
918 	PORT_DIPSETTING(    0x00, "30K, every 100K" )
919     PORT_DIPSETTING(    0x04, "50K and 100K" )
920 	PORT_DIPSETTING(    0x08, "100K only" )
921 	PORT_DIPSETTING(    0x0c, "None" )
922 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
923 	PORT_DIPSETTING(    0x30, "1" )
924 	PORT_DIPSETTING(    0x20, "2" )
925 	PORT_DIPSETTING(    0x00, "3" )
926 	PORT_DIPSETTING(    0x10, "5" )
927 	PORT_BITX(    0x40, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
928 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
929 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
930 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unused ) )
931 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
932 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
933 
934 	TOAPLAN1_SYSTEM_INPUTS
935 
936 	PORT_START		/* Territory Jumper Block */
937 	PORT_DIPNAME( 0x03, 0x02, "Territory/Copyright" )
938 	PORT_DIPSETTING(    0x02, "World/Taito Japan" )
939 	PORT_DIPSETTING(    0x03, "US/Toaplan" )
940 	PORT_DIPSETTING(    0x01, "US/Taito America" )
941 	PORT_DIPSETTING(    0x00, "Japan/Taito Corp" )
942 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
943 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
944 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
945 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
946 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
947 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
948 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
949 INPUT_PORTS_END
950 
951 INPUT_PORTS_START( samesame )
952 	PORT_START		/* VBlank */
953 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_VBLANK )
954 	PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
955 
956 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN )
957 
958 	TOAPLAN1_PLAYER_INPUT( IPF_COCKTAIL, IPT_UNKNOWN )
959 
960 	PORT_START		/* DSW A */
961 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
962 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
963 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
964 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
965 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
966 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
967 	PORT_SERVICE( 0x04, IP_ACTIVE_HIGH )
968 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
969 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
970 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
971 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
972 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
973 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
974 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
975 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
976 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
977 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
978 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
979 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
980 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
981 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
982 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
983 /* settings listed in service mode, but not actually used ???
984 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
985 	PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) )
986 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
987 	PORT_DIPSETTING(    0x30, DEF_STR( 2C_3C ) )
988 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
989 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
990 	PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
991 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
992 	PORT_DIPSETTING(    0xc0, DEF_STR( 2C_3C ) )
993 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_2C ) )
994 */
995 
996 	PORT_START		/* DSW B */
997 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
998 	PORT_DIPSETTING(    0x01, "Easy" )
999 	PORT_DIPSETTING(    0x00, "Medium" )
1000 	PORT_DIPSETTING(    0x02, "Hard" )
1001 	PORT_DIPSETTING(    0x03, "Hardest" )
1002 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
1003 	PORT_DIPSETTING(    0x04, "50K, every 150K" )
1004 	PORT_DIPSETTING(    0x00, "70K, every 200K" )
1005 	PORT_DIPSETTING(    0x08, "100K" )
1006 	PORT_DIPSETTING(    0x0c, "None" )
1007 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
1008 	PORT_DIPSETTING(    0x30, "2" )
1009 	PORT_DIPSETTING(    0x00, "3" )
1010 	PORT_DIPSETTING(    0x20, "4" )
1011 	PORT_DIPSETTING(    0x10, "5" )
1012 	PORT_BITX(    0x40, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
1013 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1014 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
1015 	PORT_DIPNAME( 0x80, 0x00, "Allow Continue" )
1016 	PORT_DIPSETTING(    0x80, DEF_STR( No ) )
1017 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
1018 
1019 	TOAPLAN1_SYSTEM_INPUTS
1020 
1021 	PORT_START		/* Territory Jumper Block */
1022 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
1023 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1024 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
1025 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
1026 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1027 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
1028 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
1029 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1030 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
1031 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
1032 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1033 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
1034 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1035 INPUT_PORTS_END
1036 
1037 INPUT_PORTS_START( fireshrk )
1038 	PORT_START		/* VBlank */
1039 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_VBLANK )
1040 	PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1041 
1042 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN )
1043 
1044 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN )
1045 
1046 	PORT_START		/* DSW A */
1047 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unused ) )
1048 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1049 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
1050 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
1051 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1052 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
1053 	PORT_SERVICE( 0x04, IP_ACTIVE_HIGH )
1054 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
1055 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1056 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1057 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
1058 	PORT_DIPSETTING(    0x30, DEF_STR( 4C_1C ) )
1059 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
1060 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
1061 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
1062 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
1063 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
1064 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_3C ) )
1065 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_4C ) )
1066 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_6C ) )
1067 
1068 	PORT_START		/* DSW B */
1069 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
1070 	PORT_DIPSETTING(    0x01, "Easy" )
1071 	PORT_DIPSETTING(    0x00, "Medium" )
1072 	PORT_DIPSETTING(    0x02, "Hard" )
1073 	PORT_DIPSETTING(    0x03, "Hardest" )
1074 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
1075 	PORT_DIPSETTING(    0x04, "50K, every 150K" )
1076 	PORT_DIPSETTING(    0x00, "70K, every 200K" )
1077 	PORT_DIPSETTING(    0x08, "100K" )
1078 	PORT_DIPSETTING(    0x0c, "None" )
1079 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
1080 	PORT_DIPSETTING(    0x30, "2" )
1081 	PORT_DIPSETTING(    0x00, "3" )
1082 	PORT_DIPSETTING(    0x20, "4" )
1083 	PORT_DIPSETTING(    0x10, "5" )
1084 	PORT_BITX(    0x40, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
1085 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1086 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
1087 	PORT_DIPNAME( 0x80,	0x00, DEF_STR( Unused ) )
1088 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
1089 	PORT_DIPSETTING(	0x80, DEF_STR( On ) )
1090 
1091 	TOAPLAN1_SYSTEM_INPUTS
1092 
1093 	PORT_START		/* Territory Jumper Block */
1094 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
1095 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1096 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
1097 	PORT_DIPNAME( 0x06, 0x02, "Territory" )
1098 	PORT_DIPSETTING(    0x02, "Europe" )
1099 	PORT_DIPSETTING(    0x04, "USA" )
1100 	PORT_DIPSETTING(    0x00, "USA (Romstar)" )
1101 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
1102 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1103 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
1104 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1105 INPUT_PORTS_END
1106 
1107 INPUT_PORTS_START( outzone )
1108 	PORT_START		/* VBlank */
1109 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_VBLANK )
1110 	PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1111 
1112 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER1, IPT_BUTTON3 )
1113 
1114 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER2, IPT_BUTTON3 )
1115 
1116 	PORT_START		/* DSW A */
1117 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unused ) )
1118 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1119 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
1120 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
1121 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1122 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
1123 	PORT_SERVICE( 0x04, IP_ACTIVE_HIGH )
1124 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
1125 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1126 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1127 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
1128 	PORT_DIPSETTING(    0x30, DEF_STR( 4C_1C ) )
1129 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
1130 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
1131 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
1132 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
1133 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
1134 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_3C ) )
1135 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_4C ) )
1136 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_6C ) )
1137 
1138 	PORT_START		/* DSW B */
1139 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
1140 	PORT_DIPSETTING(    0x01, "Easy" )
1141 	PORT_DIPSETTING(    0x00, "Medium" )
1142 	PORT_DIPSETTING(    0x02, "Hard" )
1143 	PORT_DIPSETTING(    0x03, "Hardest" )
1144 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
1145 	PORT_DIPSETTING(    0x00, "Every 300K" )
1146 	PORT_DIPSETTING(    0x04, "200K and 500K" )
1147 	PORT_DIPSETTING(    0x08, "300K only" )
1148 	PORT_DIPSETTING(    0x0c, "None" )
1149 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
1150 	PORT_DIPSETTING(    0x30, "1" )
1151 	PORT_DIPSETTING(    0x20, "2" )
1152 	PORT_DIPSETTING(    0x00, "3" )
1153 	PORT_DIPSETTING(    0x10, "5" )
1154 	PORT_BITX( 0x40,    0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", 0 ,0 )
1155 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1156 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
1157 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unused ) )
1158 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1159 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
1160 
1161 	TOAPLAN1_SYSTEM_INPUTS
1162 
1163 	PORT_START		/* Territory Jumper Block */
1164 	PORT_DIPNAME( 0x07, 0x02, "Territory" )
1165 	PORT_DIPSETTING(    0x02, "Europe" )
1166 	PORT_DIPSETTING(    0x01, "US" )
1167 	PORT_DIPSETTING(    0x00, "Japan" )
1168 	PORT_DIPSETTING(    0x03, "Hong Kong" )
1169 	PORT_DIPSETTING(    0x04, "Korea" )
1170 	PORT_DIPSETTING(    0x05, "Taiwan" )
1171 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
1172 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1173 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
1174 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1175 INPUT_PORTS_END
1176 
1177 INPUT_PORTS_START( vimana )
1178 	PORT_START		/* VBlank */
1179 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_VBLANK )
1180 	PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1181 
1182 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER1, IPT_BUTTON3 )
1183 
1184 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER2, IPT_BUTTON3 )
1185 
1186 	PORT_START		/* DSW A */
1187 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unused ) )
1188 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1189 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
1190 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
1191 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1192 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
1193 	PORT_SERVICE( 0x04, IP_ACTIVE_HIGH )
1194 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
1195 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1196 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1197 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
1198 	PORT_DIPSETTING(    0x30, DEF_STR( 4C_1C ) )
1199 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
1200 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
1201 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
1202 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
1203 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
1204 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_3C ) )
1205 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_4C ) )
1206 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_6C ) )
1207 
1208 	PORT_START		/* DSW B */
1209 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
1210 	PORT_DIPSETTING(    0x01, "Easy" )
1211 	PORT_DIPSETTING(    0x00, "Medium" )
1212 	PORT_DIPSETTING(    0x02, "Hard" )
1213 	PORT_DIPSETTING(    0x03, "Hardest" )
1214 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
1215 	PORT_DIPSETTING(    0x00, "70K and 200K" )
1216 	PORT_DIPSETTING(    0x04, "100K and 250K" )
1217 	PORT_DIPSETTING(    0x08, "100K" )
1218 	PORT_DIPSETTING(    0x0c, "200K" )
1219 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
1220 	PORT_DIPSETTING(    0x30, "2" )
1221 	PORT_DIPSETTING(    0x00, "3" )
1222 	PORT_DIPSETTING(    0x20, "4" )
1223 	PORT_DIPSETTING(    0x10, "5" )
1224 	PORT_BITX(    0x40, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
1225 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1226 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
1227 	PORT_DIPNAME( 0x80, 0x00, "Allow Continue" )
1228 	PORT_DIPSETTING(    0x80, DEF_STR( No ) )
1229 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
1230 
1231 	TOAPLAN1_SYSTEM_INPUTS
1232 
1233 	PORT_START		/* Territory Jumper Block */
1234 	PORT_DIPNAME( 0x0f, 0x02, "Territory" )
1235 	PORT_DIPSETTING(    0x02, "Europe" )
1236 	PORT_DIPSETTING(    0x01, "US" )
1237 	PORT_DIPSETTING(    0x00, "Japan" )
1238 	PORT_DIPSETTING(    0x03, "Hong Kong" )
1239 	PORT_DIPSETTING(    0x04, "Korea" )
1240 	PORT_DIPSETTING(    0x05, "Taiwan" )
1241 //	PORT_DIPSETTING(    0x06, "Taiwan" )
1242 //	PORT_DIPSETTING(    0x07, "US" )
1243 //	PORT_DIPSETTING(    0x08, "Hong Kong" )
1244 //	PORT_DIPSETTING(    0x09, DEF_STR( Unused ) )
1245 //	PORT_DIPSETTING(    0x0a, DEF_STR( Unused ) )
1246 //	PORT_DIPSETTING(    0x0b, DEF_STR( Unused ) )
1247 //	PORT_DIPSETTING(    0x0c, DEF_STR( Unused ) )
1248 //	PORT_DIPSETTING(    0x0d, DEF_STR( Unused ) )
1249 //	PORT_DIPSETTING(    0x0e, DEF_STR( Unused ) )
1250 //	PORT_DIPSETTING(    0x0f, "Japan" )
1251 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1252 INPUT_PORTS_END
1253 
1254 INPUT_PORTS_START( vimanan )
1255 	PORT_START		/* VBlank */
1256 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_VBLANK )
1257 	PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1258 
1259 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER1, IPT_BUTTON3 )
1260 
1261 	TOAPLAN1_PLAYER_INPUT( IPF_PLAYER2, IPT_BUTTON3 )
1262 
1263 	PORT_START		/* DSW A */
1264 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unused ) )
1265 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1266 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
1267 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
1268 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1269 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
1270 	PORT_SERVICE( 0x04, IP_ACTIVE_HIGH )
1271 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
1272 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1273 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1274 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unused ) )
1275 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1276 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
1277 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unused ) )
1278 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1279 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1280 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unused ) )
1281 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1282 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
1283 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unused ) )
1284 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1285 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
1286 /* settings for other territories (non Nova license)
1287 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
1288 	PORT_DIPSETTING(    0x30, DEF_STR( 4C_1C ) )
1289 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
1290 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
1291 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
1292 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
1293 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
1294 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_3C ) )
1295 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_4C ) )
1296 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_6C ) )
1297 */
1298 
1299 	PORT_START		/* DSW B */
1300 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
1301 	PORT_DIPSETTING(    0x01, "Easy" )
1302 	PORT_DIPSETTING(    0x00, "Medium" )
1303 	PORT_DIPSETTING(    0x02, "Hard" )
1304 	PORT_DIPSETTING(    0x03, "Hardest" )
1305 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
1306 	PORT_DIPSETTING(    0x00, "70K and 200K" )
1307 	PORT_DIPSETTING(    0x04, "100K and 250K" )
1308 	PORT_DIPSETTING(    0x08, "100K" )
1309 	PORT_DIPSETTING(    0x0c, "200K" )
1310 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
1311 	PORT_DIPSETTING(    0x30, "2" )
1312 	PORT_DIPSETTING(    0x00, "3" )
1313 	PORT_DIPSETTING(    0x20, "4" )
1314 	PORT_DIPSETTING(    0x10, "5" )
1315 	PORT_BITX(    0x40, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
1316 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1317 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
1318 	PORT_DIPNAME( 0x80, 0x00, "Allow Continue" )
1319 	PORT_DIPSETTING(    0x80, DEF_STR( No ) )
1320 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
1321 
1322 	TOAPLAN1_SYSTEM_INPUTS
1323 
1324 	PORT_START		/* Territory Jumper Block */
1325 	PORT_DIPNAME( 0x0f, 0x02, "Territory" )
1326 	PORT_DIPSETTING(    0x02, "Europe" )
1327 	PORT_DIPSETTING(    0x01, "US" )
1328 	PORT_DIPSETTING(    0x00, "Japan" )
1329 	PORT_DIPSETTING(    0x03, "Hong Kong" )
1330 	PORT_DIPSETTING(    0x04, "Korea" )
1331 	PORT_DIPSETTING(    0x05, "Taiwan" )
1332 //	PORT_DIPSETTING(    0x06, "Taiwan" )
1333 //	PORT_DIPSETTING(    0x07, "US" )
1334 //	PORT_DIPSETTING(    0x08, "Hong Kong" )
1335 //	PORT_DIPSETTING(    0x09, DEF_STR( Unused ) )
1336 //	PORT_DIPSETTING(    0x0a, DEF_STR( Unused ) )
1337 //	PORT_DIPSETTING(    0x0b, DEF_STR( Unused ) )
1338 //	PORT_DIPSETTING(    0x0c, DEF_STR( Unused ) )
1339 //	PORT_DIPSETTING(    0x0d, DEF_STR( Unused ) )
1340 //	PORT_DIPSETTING(    0x0e, DEF_STR( Unused ) )
1341 //	PORT_DIPSETTING(    0x0f, "Japan" )
1342 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1343 INPUT_PORTS_END
1344 
1345 
1346 static struct GfxLayout tilelayout =
1347 {
1348 	8,8,	/* 8x8 */
1349 	16384,	/* 16384 tiles */
1350 	4,		/* 4 bits per pixel */
1351 	{ 3*8*0x20000, 2*8*0x20000, 1*8*0x20000, 0*8*0x20000 },
1352 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
1353 	{ 0, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38 },
1354 	64
1355 };
1356 
1357 static struct GfxLayout rallybik_spr_layout =
1358 {
1359 	16,16,	/* 16*16 sprites */
1360 	2048,	/* 2048 sprites */
1361 	4,		/* 4 bits per pixel */
1362 	{ 0*2048*32*8, 1*2048*32*8, 2*2048*32*8, 3*2048*32*8 },
1363 	{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
1364 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
1365 			8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
1366 	32*8	/* every sprite takes 32 consecutive bytes */
1367 };
1368 
1369 static struct GfxLayout vm_tilelayout =
1370 {
1371 	8,8,	/* 8x8 */
1372 	32768,	/* 32768 tiles */
1373 	4,		/* 4 bits per pixel */
1374 	{ 8*0x80000+8, 8*0x80000, 8, 0 },
1375 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
1376 	{ 0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70 },
1377 	128
1378 };
1379 
1380 
1381 static struct GfxDecodeInfo gfxdecodeinfo[] =
1382 {
1383 	{ REGION_GFX1, 0x00000, &tilelayout,		0, 64 },
1384 	{ REGION_GFX2, 0x00000, &tilelayout,	64*16, 64 },
1385 	{ -1 } /* end of array */
1386 };
1387 
1388 static struct GfxDecodeInfo rallybik_gfxdecodeinfo[] =
1389 {
1390 	{ REGION_GFX1, 0x00000, &tilelayout,			  0, 64 },
1391 	{ REGION_GFX2, 0x00000, &rallybik_spr_layout, 64*16, 64 },
1392 	{ -1 } /* end of array */
1393 };
1394 
1395 static struct GfxDecodeInfo outzone_gfxdecodeinfo[] =
1396 {
1397 	{ REGION_GFX1, 0x00000, &vm_tilelayout, 	0, 64 },
1398 	{ REGION_GFX2, 0x00000, &tilelayout,	64*16, 64 },
1399 	{ -1 } /* end of array */
1400 };
1401 
1402 static struct GfxDecodeInfo vm_gfxdecodeinfo[] =
1403 {
1404 	{ REGION_GFX1, 0x00000, &tilelayout,		0, 64 },
1405 	{ REGION_GFX2, 0x00000, &vm_tilelayout, 64*16, 64 },
1406 	{ -1 } /* end of array */
1407 };
1408 
1409 
irqhandler(int linestate)1410 static void irqhandler(int linestate)
1411 {
1412 	cpu_set_irq_line(1,0,linestate);
1413 }
1414 
1415 static struct YM3812interface ym3812_interface =
1416 {
1417 	1,
1418 	28000000/8,		/* 3.5Mhz (28Mhz Oscillator) */
1419 	{ 255 },
1420 	{ irqhandler },
1421 };
1422 
1423 
1424 
1425 static struct MachineDriver machine_driver_rallybik =
1426 {
1427 	/* basic machine hardware */
1428 	{
1429 		{
1430 			CPU_M68000,
1431 			10000000,
1432 			rallybik_readmem,rallybik_writemem,0,0,
1433 			toaplan1_interrupt,1
1434 		},
1435 		{
1436 			CPU_Z80,
1437 			28000000/8,		/* 3.5Mhz (28Mhz Oscillator) */
1438 			sound_readmem,sound_writemem,truxton_sound_readport,rallybik_sound_writeport,
1439 			ignore_interrupt,0
1440 		}
1441 	},
1442 	60, DEFAULT_REAL_60HZ_VBLANK_DURATION,	/* frames per second, vblank duration */
1443 	10,
1444 	toaplan1_init_machine,
1445 
1446 	/* video hardware */
1447 	320, 240, { 0, 319, 0, 239 },
1448 	rallybik_gfxdecodeinfo,
1449 	64*16+64*16, 64*16+64*16,
1450 	0,
1451 
1452 	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK | VIDEO_BUFFERS_SPRITERAM,
1453 	rallybik_eof_callback,
1454 	rallybik_vh_start,
1455 	rallybik_vh_stop,
1456 	rallybik_vh_screenrefresh,
1457 
1458 	/* sound hardware */
1459 	0,0,0,0,
1460 	{
1461 		{
1462 			SOUND_YM3812,
1463 			&ym3812_interface
1464 		},
1465 	}
1466 };
1467 
1468 static struct MachineDriver machine_driver_truxton =
1469 {
1470 	/* basic machine hardware */
1471 	{
1472 		{
1473 			CPU_M68000,
1474 			10000000,
1475 			truxton_readmem,truxton_writemem,0,0,
1476 			toaplan1_interrupt,1
1477 		},
1478 		{
1479 			CPU_Z80,
1480 			28000000/8,		/* 3.5Mhz (28Mhz Oscillator) */
1481 			sound_readmem,sound_writemem,truxton_sound_readport,truxton_sound_writeport,
1482 			ignore_interrupt,0
1483 		}
1484 	},
1485 	60, DEFAULT_REAL_60HZ_VBLANK_DURATION,	/* frames per second, vblank duration */
1486 	10,
1487 	toaplan1_init_machine,
1488 
1489 	/* video hardware */
1490 	320, 240, { 0, 319, 0, 239 },
1491 	gfxdecodeinfo,
1492 	64*16+64*16, 64*16+64*16,
1493 	0,
1494 
1495 	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
1496 	toaplan1_eof_callback,
1497 	toaplan1_vh_start,
1498 	toaplan1_vh_stop,
1499 	toaplan1_vh_screenrefresh,
1500 
1501 	/* sound hardware */
1502 	0,0,0,0,
1503 	{
1504 		{
1505 			SOUND_YM3812,
1506 			&ym3812_interface
1507 		},
1508 	}
1509 };
1510 
1511 static struct MachineDriver machine_driver_hellfire =
1512 {
1513 	/* basic machine hardware */
1514 	{
1515 		{
1516 			CPU_M68000,
1517 			10000000,
1518 			hellfire_readmem,hellfire_writemem,0,0,
1519 			toaplan1_interrupt,1
1520 		},
1521 		{
1522 			CPU_Z80,
1523 			28000000/8,		/* 3.5Mhz (28Mhz Oscillator) */
1524 			sound_readmem,sound_writemem,hellfire_sound_readport,hellfire_sound_writeport,
1525 			ignore_interrupt,0
1526 		}
1527 	},
1528 	60, DEFAULT_REAL_60HZ_VBLANK_DURATION,	/* frames per second, vblank duration */
1529 	10,
1530 	toaplan1_init_machine,
1531 
1532 	/* video hardware */
1533 	320, 256, { 0, 319, 16, 255 },
1534 	gfxdecodeinfo,
1535 	64*16+64*16, 64*16+64*16,
1536 	0,
1537 
1538 	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
1539 	toaplan1_eof_callback,
1540 	toaplan1_vh_start,
1541 	toaplan1_vh_stop,
1542 	toaplan1_vh_screenrefresh,
1543 
1544 	/* sound hardware */
1545 	0,0,0,0,
1546 	{
1547 		{
1548 			SOUND_YM3812,
1549 			&ym3812_interface
1550 		},
1551 	}
1552 };
1553 
1554 static struct MachineDriver machine_driver_zerowing =
1555 {
1556 	/* basic machine hardware */
1557 	{
1558 		{
1559 			CPU_M68000,
1560 			10000000,
1561 			zerowing_readmem,zerowing_writemem,0,0,
1562 			toaplan1_interrupt,1
1563 		},
1564 		{
1565 			CPU_Z80,
1566 			28000000/8,		/* 3.5Mhz (28Mhz Oscillator) */
1567 			sound_readmem,sound_writemem,zerowing_sound_readport,zerowing_sound_writeport,
1568 			ignore_interrupt,0
1569 		}
1570 	},
1571 	60, DEFAULT_REAL_60HZ_VBLANK_DURATION,	/* frames per second, vblank duration */
1572 	10,
1573 	toaplan1_init_machine,
1574 
1575 	/* video hardware */
1576 	320, 256, { 0, 319, 16, 255 },
1577 	gfxdecodeinfo,
1578 	64*16+64*16, 64*16+64*16,
1579 	0,
1580 
1581 	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
1582 	toaplan1_eof_callback,
1583 	toaplan1_vh_start,
1584 	toaplan1_vh_stop,
1585 	toaplan1_vh_screenrefresh,
1586 
1587 	/* sound hardware */
1588 	0,0,0,0,
1589 	{
1590 		{
1591 			SOUND_YM3812,
1592 			&ym3812_interface
1593 		},
1594 	}
1595 };
1596 
1597 static struct MachineDriver machine_driver_demonwld =
1598 {
1599 	/* basic machine hardware */
1600 	{
1601 		{
1602 			CPU_M68000,
1603 			10000000,
1604 			demonwld_readmem,demonwld_writemem,0,0,
1605 			toaplan1_interrupt,1
1606 		},
1607 		{
1608 			CPU_Z80,
1609 			28000000/8,		/* 3.5Mhz (28Mhz Oscillator) */
1610 			sound_readmem,sound_writemem,demonwld_sound_readport,demonwld_sound_writeport,
1611 			ignore_interrupt,0
1612 		},
1613 		{
1614 			CPU_TMS320C10,
1615 			28000000/8,		/* 3.5 MHz */
1616 			DSP_readmem,DSP_writemem,DSP_readport,DSP_writeport,
1617 			ignore_interrupt,0	/* IRQs are caused by 68000 */
1618 		}
1619 	},
1620 	60, DEFAULT_REAL_60HZ_VBLANK_DURATION,	/* frames per second, vblank duration */
1621 	10,
1622 	toaplan1_init_machine,
1623 
1624 	/* video hardware */
1625 	320, 256, { 0, 319, 16, 255 },
1626 	gfxdecodeinfo,
1627 	64*16+64*16, 64*16+64*16,
1628 	0,
1629 
1630 	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
1631 	toaplan1_eof_callback,
1632 	toaplan1_vh_start,
1633 	toaplan1_vh_stop,
1634 	toaplan1_vh_screenrefresh,
1635 
1636 	/* sound hardware */
1637 	0,0,0,0,
1638 	{
1639 		{
1640 			SOUND_YM3812,
1641 			&ym3812_interface
1642 		},
1643 	}
1644 };
1645 
1646 static struct MachineDriver machine_driver_samesame =
1647 {
1648 	/* basic machine hardware */
1649 	{
1650 		{
1651 			CPU_M68000,
1652 			10000000,
1653 			samesame_readmem,samesame_writemem,0,0,
1654 			toaplan1_interrupt,1
1655 		}
1656 	},
1657 	60, DEFAULT_REAL_60HZ_VBLANK_DURATION,	/* frames per second, vblank duration */
1658 	1,
1659 	toaplan1_init_machine,
1660 
1661 	/* video hardware */
1662 	320, 240, { 0, 319, 0, 239 },
1663 	gfxdecodeinfo,
1664 	64*16+64*16, 64*16+64*16,
1665 	0,
1666 
1667 	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
1668 	samesame_eof_callback,
1669 	toaplan1_vh_start,
1670 	toaplan1_vh_stop,
1671 	toaplan1_vh_screenrefresh,
1672 
1673 	/* sound hardware */
1674 	0,0,0,0,
1675 	{
1676 		{
1677 			SOUND_YM3812,
1678 			&ym3812_interface
1679 		},
1680 	}
1681 };
1682 
1683 static struct MachineDriver machine_driver_outzone =
1684 {
1685 	/* basic machine hardware */
1686 	{
1687 		{
1688 			CPU_M68000,
1689 			10000000,
1690 			outzone_readmem,outzone_writemem,0,0,
1691 			toaplan1_interrupt,1
1692 		},
1693 		{
1694 			CPU_Z80,
1695 			28000000/8,		/* 3.5Mhz (28Mhz Oscillator) */
1696 			sound_readmem,sound_writemem,outzone_sound_readport,outzone_sound_writeport,
1697 			ignore_interrupt,0
1698 		}
1699 	},
1700 	60, DEFAULT_REAL_60HZ_VBLANK_DURATION,	/* frames per second, vblank duration */
1701 	10,
1702 	toaplan1_init_machine,
1703 
1704 	/* video hardware */
1705 	320, 240, {0, 319, 0, 239 },
1706 	outzone_gfxdecodeinfo,
1707 	64*16+64*16, 64*16+64*16,
1708 	0,
1709 
1710 	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
1711 	toaplan1_eof_callback,
1712 	toaplan1_vh_start,
1713 	toaplan1_vh_stop,
1714 	toaplan1_vh_screenrefresh,
1715 
1716 	/* sound hardware */
1717 	0,0,0,0,
1718 	{
1719 		{
1720 			SOUND_YM3812,
1721 			&ym3812_interface
1722 		},
1723 	}
1724 };
1725 
1726 static struct MachineDriver machine_driver_vimana =
1727 {
1728 	/* basic machine hardware */
1729 	{
1730 		{
1731 			CPU_M68000,
1732 			10000000,
1733 			vimana_readmem,vimana_writemem,0,0,
1734 			toaplan1_interrupt,1
1735 		}
1736 	},
1737 	60, DEFAULT_REAL_60HZ_VBLANK_DURATION,	/* frames per second, vblank duration */
1738 	1,
1739 	toaplan1_init_machine,
1740 
1741 	/* video hardware */
1742 	320, 240, { 0, 319, 0, 239 },
1743 	vm_gfxdecodeinfo,
1744 	64*16+64*16, 64*16+64*16,
1745 	0,
1746 
1747 	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
1748 	toaplan1_eof_callback,
1749 	toaplan1_vh_start,
1750 	toaplan1_vh_stop,
1751 	toaplan1_vh_screenrefresh,
1752 
1753 	/* sound hardware */
1754 	0,0,0,0,
1755 	{
1756 		{
1757 			SOUND_YM3812,
1758 			&ym3812_interface
1759 		},
1760 	}
1761 };
1762 
1763 
1764 
1765 
1766 /***************************************************************************
1767 
1768   Game driver(s)
1769 
1770 ***************************************************************************/
1771 
1772 ROM_START( rallybik )
1773 	ROM_REGION( 0x080000, REGION_CPU1 )	/* Main 68K code */
1774 	ROM_LOAD_EVEN( "b45-02.rom",  0x000000, 0x08000, 0x383386d7 )
1775 	ROM_LOAD_ODD ( "b45-01.rom",  0x000000, 0x08000, 0x7602f6a7 )
1776 	ROM_LOAD_EVEN( "b45-04.rom",  0x040000, 0x20000, 0xe9b005b1 )
1777 	ROM_LOAD_ODD ( "b45-03.rom",  0x040000, 0x20000, 0x555344ce )
1778 
1779 	ROM_REGION( 0x10000, REGION_CPU2 )	/* Sound Z80 code */
1780 	ROM_LOAD( "b45-05.rom",  0x0000, 0x4000, 0x10814601 )
1781 
1782 	ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1783 	ROM_LOAD( "b45-09.bin",  0x00000, 0x20000, 0x1dc7b010 )
1784 	ROM_LOAD( "b45-08.bin",  0x20000, 0x20000, 0xfab661ba )
1785 	ROM_LOAD( "b45-07.bin",  0x40000, 0x20000, 0xcd3748b4 )
1786 	ROM_LOAD( "b45-06.bin",  0x60000, 0x20000, 0x144b085c )
1787 
1788 	ROM_REGION( 0x40000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1789 	ROM_LOAD( "b45-11.rom",  0x00000, 0x10000, 0x0d56e8bb )
1790 	ROM_LOAD( "b45-10.rom",  0x10000, 0x10000, 0xdbb7c57e )
1791 	ROM_LOAD( "b45-12.rom",  0x20000, 0x10000, 0xcf5aae4e )
1792 	ROM_LOAD( "b45-13.rom",  0x30000, 0x10000, 0x1683b07c )
1793 
1794 	ROM_REGION( 0x240, REGION_PROMS )		/* nibble bproms, lo/hi order to be determined */
1795 	ROM_LOAD( "b45-15.bpr",  0x000, 0x100, 0x24e7d62f )	/* sprite priority control ?? */
1796 	ROM_LOAD( "b45-16.bpr",  0x100, 0x100, 0xa50cef09 )	/* sprite priority control ?? */
1797 	ROM_LOAD( "b45-14.bpr",  0x200, 0x020, 0xf72482db )	/* sprite control ?? */
1798 	ROM_LOAD( "b45-17.bpr",  0x220, 0x020, 0xbc88cced )	/* sprite attribute (flip/position) ?? */
1799 ROM_END
1800 
1801 ROM_START( truxton )
1802 	ROM_REGION( 0x040000, REGION_CPU1 )	/* Main 68K code */
1803 	ROM_LOAD_EVEN( "b65_11.bin",  0x000000, 0x20000, 0x1a62379a )
1804 	ROM_LOAD_ODD ( "b65_10.bin",  0x000000, 0x20000, 0xaff5195d )
1805 
1806 	ROM_REGION( 0x10000, REGION_CPU2 )	/* Sound Z80 code */
1807 	ROM_LOAD( "b65_09.bin",  0x0000, 0x8000, 0xf1c0f410 )
1808 
1809 	ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1810 	ROM_LOAD( "b65_08.bin",  0x00000, 0x20000, 0xd2315b37 )
1811 	ROM_LOAD( "b65_07.bin",  0x20000, 0x20000, 0xfb83252a )
1812 	ROM_LOAD( "b65_06.bin",  0x40000, 0x20000, 0x36cedcbe )
1813 	ROM_LOAD( "b65_05.bin",  0x60000, 0x20000, 0x81cd95f1 )
1814 
1815 	ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1816 	ROM_LOAD( "b65_04.bin",  0x00000, 0x20000, 0x8c6ff461 )
1817 	ROM_LOAD( "b65_03.bin",  0x20000, 0x20000, 0x58b1350b )
1818 	ROM_LOAD( "b65_02.bin",  0x40000, 0x20000, 0x1dd55161 )
1819 	ROM_LOAD( "b65_01.bin",  0x60000, 0x20000, 0xe974937f )
1820 ROM_END
1821 
1822 ROM_START( hellfire )
1823 	ROM_REGION( 0x040000, REGION_CPU1 )	/* Main 68K code */
1824 	ROM_LOAD_EVEN( "b90-14.bin",  0x000000, 0x20000, 0x101df9f5 )
1825 	ROM_LOAD_ODD ( "b90-15.bin",  0x000000, 0x20000, 0xe67fd452 )
1826 
1827 	ROM_REGION( 0x10000, REGION_CPU2 )	/* Sound Z80 code */
1828 	ROM_LOAD( "b90-03.bin",  0x0000, 0x8000, 0x4058fa67 )
1829 
1830 	ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1831 	ROM_LOAD( "b90-04.bin",  0x00000, 0x20000, 0xea6150fc )
1832 	ROM_LOAD( "b90-05.bin",  0x20000, 0x20000, 0xbb52c507 )
1833 	ROM_LOAD( "b90-06.bin",  0x40000, 0x20000, 0xcf5b0252 )
1834 	ROM_LOAD( "b90-07.bin",  0x60000, 0x20000, 0xb98af263 )
1835 
1836 	ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1837 	ROM_LOAD( "b90-11.bin",  0x00000, 0x20000, 0xc33e543c )
1838 	ROM_LOAD( "b90-10.bin",  0x20000, 0x20000, 0x35fd1092 )
1839 	ROM_LOAD( "b90-09.bin",  0x40000, 0x20000, 0xcf01009e )
1840 	ROM_LOAD( "b90-08.bin",  0x60000, 0x20000, 0x3404a5e3 )
1841 ROM_END
1842 
1843 ROM_START( zerowing )
1844 	ROM_REGION( 0x080000, REGION_CPU1 )	/* Main 68K code */
1845 	ROM_LOAD_EVEN( "o15-11.rom",  0x000000, 0x08000, 0x6ff2b9a0 )
1846 	ROM_LOAD_ODD ( "o15-12.rom",  0x000000, 0x08000, 0x9773e60b )
1847 	ROM_LOAD_EVEN( "o15-09.rom",  0x040000, 0x20000, 0x13764e95 )
1848 	ROM_LOAD_ODD ( "o15-10.rom",  0x040000, 0x20000, 0x351ba71a )
1849 
1850 	ROM_REGION( 0x10000, REGION_CPU2 )	/* Sound Z80 code */
1851 	ROM_LOAD( "o15-13.rom",  0x0000, 0x8000, 0xe7b72383 )
1852 
1853 	ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1854 	ROM_LOAD( "o15-05.rom",  0x00000, 0x20000, 0x4e5dd246 )
1855 	ROM_LOAD( "o15-06.rom",  0x20000, 0x20000, 0xc8c6d428 )
1856 	ROM_LOAD( "o15-07.rom",  0x40000, 0x20000, 0xefc40e99 )
1857 	ROM_LOAD( "o15-08.rom",  0x60000, 0x20000, 0x1b019eab )
1858 
1859 	ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1860 	ROM_LOAD( "o15-03.rom",  0x00000, 0x20000, 0x7f245fd3 )
1861 	ROM_LOAD( "o15-04.rom",  0x20000, 0x20000, 0x0b1a1289 )
1862 	ROM_LOAD( "o15-01.rom",  0x40000, 0x20000, 0x70570e43 )
1863 	ROM_LOAD( "o15-02.rom",  0x60000, 0x20000, 0x724b487f )
1864 ROM_END
1865 
1866 ROM_START( demonwld )
1867 	ROM_REGION( 0x040000, REGION_CPU1 )	/* Main 68K code */
1868 	ROM_LOAD_EVEN( "rom10",  0x000000, 0x20000, 0x036ee46c )
1869 	ROM_LOAD_ODD ( "rom09",  0x000000, 0x20000, 0xbed746e3 )
1870 
1871 	ROM_REGION( 0x10000, REGION_CPU2 )	/* Sound Z80 code */
1872 	ROM_LOAD( "rom11",  0x0000, 0x8000, 0x397eca1b )
1873 
1874 	ROM_REGION( 0x10000, REGION_CPU3 )	/* Co-Processor TMS320C10 MCU code */
1875 	ROM_LOAD_EVEN( "dsp_22.bin",  0x0000, 0x0800, 0x79389a71 )
1876 	ROM_LOAD_ODD ( "dsp_21.bin",  0x0000, 0x0800, 0x2d135376 )
1877 
1878 	ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1879 	ROM_LOAD( "rom05",  0x00000, 0x20000, 0x6506c982 )
1880 	ROM_LOAD( "rom07",  0x20000, 0x20000, 0xa3a0d993 )
1881 	ROM_LOAD( "rom06",  0x40000, 0x20000, 0x4fc5e5f3 )
1882 	ROM_LOAD( "rom08",  0x60000, 0x20000, 0xeb53ab09 )
1883 
1884 	ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1885 	ROM_LOAD( "rom01",  0x00000, 0x20000, 0x1b3724e9 )
1886 	ROM_LOAD( "rom02",  0x20000, 0x20000, 0x7b20a44d )
1887 	ROM_LOAD( "rom03",  0x40000, 0x20000, 0x2cacdcd0 )
1888 	ROM_LOAD( "rom04",  0x60000, 0x20000, 0x76fd3201 )
1889 
1890 	ROM_REGION( 0x40, REGION_PROMS )		/* nibble bproms, lo/hi order to be determined */
1891 	ROM_LOAD( "prom12.bpr",  0x00, 0x20, 0xbc88cced )	/* sprite attribute (flip/position) ?? */
1892 	ROM_LOAD( "prom13.bpr",  0x20, 0x20, 0xa1e17492 )	/* ??? */
1893 ROM_END
1894 
1895 ROM_START( samesame )
1896 	ROM_REGION( 0x080000, REGION_CPU1 )	/* Main 68K code */
1897 	ROM_LOAD_EVEN( "o17_09.bin",  0x000000, 0x08000, 0x3f69e437 )
1898 	ROM_LOAD_ODD ( "o17_10.bin",  0x000000, 0x08000, 0x4e723e0a )
1899 	ROM_LOAD_EVEN( "o17_11.bin",  0x040000, 0x20000, 0xbe07d101 )
1900 	ROM_LOAD_ODD ( "o17_12.bin",  0x040000, 0x20000, 0xef698811 )
1901 
1902 	ROM_REGION( 0x10000, REGION_CPU2 )	/* Sound HD647180 code */
1903 	/* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
1904 	ROM_LOAD( "hd647180.017",  0x00000, 0x08000, 0x00000000 )
1905 
1906 	ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1907 	ROM_LOAD( "o17_05.bin",  0x00000, 0x20000, 0x565315f8 )
1908 	ROM_LOAD( "o17_06.bin",  0x20000, 0x20000, 0x95262d4c )
1909 	ROM_LOAD( "o17_07.bin",  0x40000, 0x20000, 0x4c4b735c )
1910 	ROM_LOAD( "o17_08.bin",  0x60000, 0x20000, 0x95c6586c )
1911 
1912 	ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1913 	ROM_LOAD( "o17_01.bin",  0x00000, 0x20000, 0xea12e491 )
1914 	ROM_LOAD( "o17_02.bin",  0x20000, 0x20000, 0x32a13a9f )
1915 	ROM_LOAD( "o17_03.bin",  0x40000, 0x20000, 0x68723dc9 )
1916 	ROM_LOAD( "o17_04.bin",  0x60000, 0x20000, 0xfe0ecb13 )
1917 ROM_END
1918 
1919 ROM_START( fireshrk )
1920 	ROM_REGION( 0x080000, REGION_CPU1 )	/* Main 68K code */
1921 	ROM_LOAD_EVEN( "9.bin",  0x000000, 0x08000, 0xf0c70e6f )
1922 	ROM_LOAD_ODD ( "10.bin", 0x000000, 0x08000, 0x9d253d77 )
1923 	ROM_LOAD_EVEN( "11.bin", 0x040000, 0x20000, 0x6beac378 )
1924 	ROM_LOAD_ODD ( "12.bin", 0x040000, 0x20000, 0x6adb6eb5 )
1925 
1926 	ROM_REGION( 0x10000, REGION_CPU2 )	/* Sound HD647180 code */
1927 	/* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
1928 	ROM_LOAD( "hd647180.017",  0x00000, 0x08000, 0x00000000 )
1929 
1930 	ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1931 	ROM_LOAD( "o17_05.bin",  0x00000, 0x20000, 0x565315f8 )
1932 	ROM_LOAD( "o17_06.bin",  0x20000, 0x20000, 0x95262d4c )
1933 	ROM_LOAD( "o17_07.bin",  0x40000, 0x20000, 0x4c4b735c )
1934 	ROM_LOAD( "o17_08.bin",  0x60000, 0x20000, 0x95c6586c )
1935 
1936 	ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1937 	ROM_LOAD( "o17_01.bin",  0x00000, 0x20000, 0xea12e491 )
1938 	ROM_LOAD( "o17_02.bin",  0x20000, 0x20000, 0x32a13a9f )
1939 	ROM_LOAD( "o17_03.bin",  0x40000, 0x20000, 0x68723dc9 )
1940 	ROM_LOAD( "o17_04.bin",  0x60000, 0x20000, 0xfe0ecb13 )
1941 ROM_END
1942 
1943 ROM_START( outzone )
1944 	ROM_REGION( 0x040000, REGION_CPU1 )	/* Main 68K code */
1945 	ROM_LOAD_EVEN( "rom7.bin",  0x000000, 0x20000, 0x936e25d8 )
1946 	ROM_LOAD_ODD ( "rom8.bin",  0x000000, 0x20000, 0xd19b3ecf )
1947 
1948 	ROM_REGION( 0x10000, REGION_CPU2 )	/* Sound Z80 code */
1949 	ROM_LOAD( "rom9.bin",  0x0000, 0x8000, 0x73d8e235 )
1950 
1951 	ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1952 	ROM_LOAD( "rom5.bin",  0x00000, 0x80000, 0xc64ec7b6 )
1953 	ROM_LOAD( "rom6.bin",  0x80000, 0x80000, 0x64b6c5ac )
1954 
1955 	ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1956 	ROM_LOAD( "rom2.bin",  0x00000, 0x20000, 0x6bb72d16 )
1957 	ROM_LOAD( "rom1.bin",  0x20000, 0x20000, 0x0934782d )
1958 	ROM_LOAD( "rom3.bin",  0x40000, 0x20000, 0xec903c07 )
1959 	ROM_LOAD( "rom4.bin",  0x60000, 0x20000, 0x50cbf1a8 )
1960 ROM_END
1961 
1962 ROM_START( outzonep )
1963 	ROM_REGION( 0x040000, REGION_CPU1 )	/* Main 68K code */
1964 	ROM_LOAD_EVEN( "18.bin",  0x000000, 0x20000, 0x31a171bb )
1965 	ROM_LOAD_ODD ( "19.bin",  0x000000, 0x20000, 0x804ecfd1 )
1966 
1967 	ROM_REGION( 0x10000, REGION_CPU2 )	/* Sound Z80 code */
1968 	ROM_LOAD( "rom9.bin",  0x0000, 0x8000, 0x73d8e235 )
1969 
1970 	ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
1971 	ROM_LOAD( "rom5.bin",  0x00000, 0x80000, 0xc64ec7b6 )
1972 	ROM_LOAD( "rom6.bin",  0x80000, 0x80000, 0x64b6c5ac )
1973 /* same data, different layout
1974 	ROM_LOAD_GFX_EVEN( "04.bin",  0x000000, 0x10000, 0x3d11eae0 )
1975 	ROM_LOAD_GFX_ODD ( "08.bin",  0x000000, 0x10000, 0xc7628891 )
1976 	ROM_LOAD_GFX_EVEN( "13.bin",  0x080000, 0x10000, 0xb23dd87e )
1977 	ROM_LOAD_GFX_ODD ( "09.bin",  0x080000, 0x10000, 0x445651ba )
1978 	ROM_LOAD_GFX_EVEN( "03.bin",  0x020000, 0x10000, 0x6b347646 )
1979 	ROM_LOAD_GFX_ODD ( "07.bin",  0x020000, 0x10000, 0x461b47f9 )
1980 	ROM_LOAD_GFX_EVEN( "14.bin",  0x0a0000, 0x10000, 0xb28ae37a )
1981 	ROM_LOAD_GFX_ODD ( "10.bin",  0x0a0000, 0x10000, 0x6596a076 )
1982 	ROM_LOAD_GFX_EVEN( "02.bin",  0x040000, 0x10000, 0x11a781c3 )
1983 	ROM_LOAD_GFX_ODD ( "06.bin",  0x040000, 0x10000, 0x1055da17 )
1984 	ROM_LOAD_GFX_EVEN( "15.bin",  0x0c0000, 0x10000, 0x9c9e811b )
1985 	ROM_LOAD_GFX_ODD ( "11.bin",  0x0c0000, 0x10000, 0x4c4d44dc )
1986 	ROM_LOAD_GFX_EVEN( "01.bin",  0x060000, 0x10000, 0xe8c46aea )
1987 	ROM_LOAD_GFX_ODD ( "05.bin",  0x060000, 0x10000, 0xf8a2fe01 )
1988 	ROM_LOAD_GFX_EVEN( "16.bin",  0x0e0000, 0x10000, 0xcffcb99b )
1989 	ROM_LOAD_GFX_ODD ( "12.bin",  0x0e0000, 0x10000, 0x90d37ded )
1990 */
1991 
1992 	ROM_REGION( 0x80000, REGION_GFX2 | REGIONFLAG_DISPOSE )
1993 	ROM_LOAD( "rom2.bin",  0x00000, 0x20000, 0x6bb72d16 )
1994 	ROM_LOAD( "rom1.bin",  0x20000, 0x20000, 0x0934782d )
1995 	ROM_LOAD( "rom3.bin",  0x40000, 0x20000, 0xec903c07 )
1996 	ROM_LOAD( "rom4.bin",  0x60000, 0x20000, 0x50cbf1a8 )
1997 ROM_END
1998 
1999 ROM_START( vimana )
2000 	ROM_REGION( 0x040000, REGION_CPU1 )	/* Main 68K code */
2001 	ROM_LOAD_EVEN( "vim07.bin",  0x000000, 0x20000, 0x1efaea84 )
2002 	ROM_LOAD_ODD ( "vim08.bin",  0x000000, 0x20000, 0xe45b7def )
2003 
2004 	ROM_REGION( 0x10000, REGION_CPU2 )	/* Sound HD647180 code */
2005 	/* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
2006 	ROM_LOAD( "hd647180.019",  0x00000, 0x08000, 0x00000000 )
2007 
2008 	ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
2009 	ROM_LOAD( "vim6.bin",  0x00000, 0x20000, 0x2886878d )
2010 	ROM_LOAD( "vim5.bin",  0x20000, 0x20000, 0x61a63d7a )
2011 	ROM_LOAD( "vim4.bin",  0x40000, 0x20000, 0xb0515768 )
2012 	ROM_LOAD( "vim3.bin",  0x60000, 0x20000, 0x0b539131 )
2013 
2014 	ROM_REGION( 0x100000, REGION_GFX2 | REGIONFLAG_DISPOSE )
2015 	ROM_LOAD( "vim1.bin",  0x00000, 0x80000, 0xcdde26cd )
2016 	ROM_LOAD( "vim2.bin",  0x80000, 0x80000, 0x1dbfc118 )
2017 
2018 	ROM_REGION( 0x40, REGION_PROMS )		/* nibble bproms, lo/hi order to be determined */
2019 	ROM_LOAD( "tp019-09.bpr",  0x00, 0x20, 0xbc88cced )	/* sprite attribute (flip/position) ?? */
2020 	ROM_LOAD( "tp019-10.bpr",  0x20, 0x20, 0xa1e17492 )	/* ??? */
2021 ROM_END
2022 
2023 ROM_START( vimana2 )
2024 	ROM_REGION( 0x040000, REGION_CPU1 )	/* Main 68K code */
2025 	ROM_LOAD_EVEN( "vimana07.bin",  0x000000, 0x20000, 0x5a4bf73e )
2026 	ROM_LOAD_ODD ( "vimana08.bin",  0x000000, 0x20000, 0x03ba27e8 )
2027 
2028 	ROM_REGION( 0x10000, REGION_CPU2 )	/* Sound HD647180 code */
2029 	/* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
2030 	ROM_LOAD( "hd647180.019",  0x00000, 0x08000, 0x00000000 )
2031 
2032 	ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
2033 	ROM_LOAD( "vim6.bin",  0x00000, 0x20000, 0x2886878d )
2034 	ROM_LOAD( "vim5.bin",  0x20000, 0x20000, 0x61a63d7a )
2035 	ROM_LOAD( "vim4.bin",  0x40000, 0x20000, 0xb0515768 )
2036 	ROM_LOAD( "vim3.bin",  0x60000, 0x20000, 0x0b539131 )
2037 
2038 	ROM_REGION( 0x100000, REGION_GFX2 | REGIONFLAG_DISPOSE )
2039 	ROM_LOAD( "vim1.bin",  0x00000, 0x80000, 0xcdde26cd )
2040 	ROM_LOAD( "vim2.bin",  0x80000, 0x80000, 0x1dbfc118 )
2041 
2042 	ROM_REGION( 0x40, REGION_PROMS )		/* nibble bproms, lo/hi order to be determined */
2043 	ROM_LOAD( "tp019-09.bpr",  0x00, 0x20, 0xbc88cced )	/* sprite attribute (flip/position) ?? */
2044 	ROM_LOAD( "tp019-10.bpr",  0x20, 0x20, 0xa1e17492 )	/* ??? */
2045 ROM_END
2046 
2047 ROM_START( vimanan )
2048 	ROM_REGION( 0x040000, REGION_CPU1 )	/* Main 68K code */
2049 	ROM_LOAD_EVEN( "tp019-07.rom",  0x000000, 0x20000, 0x78888ff2 )
2050 	ROM_LOAD_ODD ( "tp019-08.rom",  0x000000, 0x20000, 0x6cd2dc3c )
2051 
2052 	ROM_REGION( 0x10000, REGION_CPU2 )	/* Sound HD647180 code */
2053 	/* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
2054 	ROM_LOAD( "hd647180.019",  0x00000, 0x08000, 0x00000000 )
2055 
2056 	ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
2057 	ROM_LOAD( "vim6.bin",  0x00000, 0x20000, 0x2886878d )
2058 	ROM_LOAD( "vim5.bin",  0x20000, 0x20000, 0x61a63d7a )
2059 	ROM_LOAD( "vim4.bin",  0x40000, 0x20000, 0xb0515768 )
2060 	ROM_LOAD( "vim3.bin",  0x60000, 0x20000, 0x0b539131 )
2061 
2062 	ROM_REGION( 0x100000, REGION_GFX2 | REGIONFLAG_DISPOSE )
2063 	ROM_LOAD( "vim1.bin",  0x00000, 0x80000, 0xcdde26cd )
2064 	ROM_LOAD( "vim2.bin",  0x80000, 0x80000, 0x1dbfc118 )
2065 
2066 	ROM_REGION( 0x40, REGION_PROMS )		/* nibble bproms, lo/hi order to be determined */
2067 	ROM_LOAD( "tp019-09.bpr",  0x00, 0x20, 0xbc88cced )	/* sprite attribute (flip/position) ?? */
2068 	ROM_LOAD( "tp019-10.bpr",  0x20, 0x20, 0xa1e17492 )	/* ??? */
2069 ROM_END
2070 
2071 
2072 
2073 GAME ( 1988, rallybik, 0,        rallybik, rallybik, 0, ROT270, "[Toaplan] Taito Corporation", "Rally Bike / Dash Yarou" )
2074 GAME ( 1988, truxton,  0,        truxton,  truxton,  0, ROT270, "[Toaplan] Taito Corporation", "Truxton / Tatsujin" )
2075 GAME ( 1989, hellfire, 0,        hellfire, hellfire, 0, ROT0,   "Toaplan (Taito license)", "Hellfire" )
2076 GAME ( 1989, zerowing, 0,        zerowing, zerowing, 0, ROT0,   "Toaplan", "Zero Wing" )
2077 GAME ( 1989, demonwld, 0,        demonwld, demonwld, 0, ROT0,   "Toaplan (Taito license)", "Demon's World / Horror Story" )
2078 GAMEX( 1990, fireshrk, 0,        samesame, fireshrk, 0, ROT270, "Toaplan", "Fire Shark", GAME_NO_SOUND )
2079 GAMEX( 1989, samesame, fireshrk, samesame, samesame, 0, ROT270, "Toaplan", "Same! Same! Same!", GAME_NO_SOUND )
2080 GAME ( 1990, outzone,  0,        outzone,  outzone,  0, ROT270, "Toaplan", "Out Zone" )
2081 GAME ( 1990, outzonep, outzone,  outzone,  outzone,  0, ROT270, "bootleg", "Out Zone (bootleg)" )
2082 GAMEX( 1991, vimana,   0,        vimana,   vimana,   0, ROT270, "Toaplan", "Vimana (set 1)", GAME_NO_SOUND )
2083 GAMEX( 1991, vimana2,  vimana,   vimana,   vimana,   0, ROT270, "Toaplan", "Vimana (set 2)", GAME_NO_SOUND )
2084 GAMEX( 1991, vimanan,  vimana,   vimana,   vimanan,  0, ROT270, "Toaplan (Nova Apparate GMBH & Co license)", "Vimana (Nova Apparate GMBH & Co)", GAME_NO_SOUND )
2085