1 /*****************************************************************************
2 
3 		ToaPlan      game hardware from 1991 - 1994
4 		Raizing/8ing game hardware from 1993 onwards
5 		-------------------------------------------------
6 		Driver by: Quench and Yochizo
7 
8    Raizing games and Truxton 2 are heavily dependent on the Raine source -
9    many thanks to Richard Bush and the Raine team. [Yochizo]
10 
11 
12 
13 Supported games:
14 
15 	Name		Board No	Maker			Game name
16 	----------------------------------------------------------------------------
17 	tekipaki	TP-020		Toaplan		Teki Paki
18 	ghox		TP-021		Toaplan		Ghox
19 	dogyuun		TP-022		Toaplan		Dogyuun
20 	kbash		TP-023		Toaplan		Knuckle Bash
21 	truxton2	TP-024		Toaplan		Truxton 2 / Tatsujin 2
22 	pipibibs	TP-025		Toaplan		Pipi & Bibis
23 	whoopee		TP-025		Toaplan		Whoopee
24 	pipibibi	bootleg?	Toaplan		Pipi & Bibis
25 	fixeight	TP-026		Toaplan		FixEight
26 	grindstm	TP-027		Toaplan		Grind Stormer  (1992)
27 	grindsta	TP-027		Toaplan		Grind Stormer  (1992) (older)
28 	vfive		TP-027		Toaplan		V-V  (V-Five)  (1993 - Japan only)
29 	batsugun	TP-030		Toaplan		Batsugun
30 	batugnsp	TP-030		Toaplan		Batsugun  (Special Version)
31 	snowbro2	??????		Toaplan		Snow Bros. 2 - With New Elves
32 
33 	sstriker	RA-MA7893-01	Raizing		Sorcer Striker
34 	mahoudai	RA-MA7893-01	Raizing		Mahou Daisakusen
35 	kingdmgp	RA-MA9402-03	Raizing/8ing	Kingdom Grandprix
36 	shippumd	RA-MA9402-03	Raizing/8ing	Shippu Mahou Daisakusen
37 	battleg		RA9503		Raizing/8ing	Battle Garegga (Type 2)
38 	battlega	RA9503		Raizing/8ing	Battle Garegga
39 	battlegb	RA9503		Raizing/8ing	Battle Garegga (New Version?)
40 	batrider	RA9704		Raizing/8ing	Armed Police Batrider - Rev B (Japan - Ver. Fri Feb 13 1998)
41 	batridra	RA9704		Raizing/8ing	Armed Police Batrider (Japan - Ver. Mon Dec 22 1997)
42 	batridrk	RA9704		Raizing/8ing	Armed Police Batrider (Korea - Ver. Fri Feb 13 1998)
43 	bbakraid	ET68-V99	8ing		Battle Bakraid (Japan - Wed Apr 7th, 1999)
44 	bbkraidu	ET68-V99	8ing		Battle Bakraid - unlimited version (Japan - Tue Jun 8th, 1999)
45 
46 	SET NOTES:
47 
48 	sstriker - might be a bootleg / hack, the region jumper is read with this set but even when set
49 	           to Japan you get all english text etc which seems a little odd, but might be correct.
50 	kingdmgp - might be a bootleg / hack, some of the tiles needed for the credits screen have been
51 	           stripped out, doesn't seem very professional, since its rare and should probably only
52 	           have a different graphics rom its nearly impossible for us to verify, a lot of boards
53 	           being sold as 'Kingdom Grand Prix' are infact conversions using Neill Corlett's
54 	           ghastly hack
55 
56 	           ** update the above two look like genuine korean release boards, raizing were probably
57 	              just missed a few things
58 
59  ****************************************************************************
60  * Battle Garegga and Armed Police Batrider have secret characters.			*
61  * Try to input the following commands to use them.							*
62  * ======================================================================== *
63  * Battle Garegga															*
64  *		After inserting a coin (pushing a credit button), input				*
65  *		UP  UP  DOWN  DOWN  LEFT  RIGHT  LEFT  RIGHT  A  B  C  START		*
66  *		then you can use Mahou Daisakusen characters.						*
67  *																			*
68  * ------------------------------------------------------------------------ *
69  * Armed Police Batrider													*
70  *		After inserting a coin (pushing a credit button), input				*
71  *		UP  UP  DOWN  DOWN  LEFT  RIGHT  LEFT  RIGHT  A  B  START			*
72  *		then you can use Mahou Daisakusen and Battle Garegga characters.	*
73  *																			*
74  ****************************************************************************
75 
76 
77  ############################################################################
78  # Battle Bakraid 'Unlimited Version' has unlocking codes to gain			#
79  # access to extra players and game features.								#
80  # Special thanks go to the 'R8ZING Shooter Tribute' page for finding		#
81  # and publishing this info.												#
82  #																			#
83  # ======================================================================== #
84  #		PLAYER SELECT: PHASE 2												#
85  # Result:	3 more fighter planes available:								#
86  # Code:	UP  UP  DOWN  DOWN  LEFT  RIGHT  LEFT  RIGHT  A  B  Start		#
87  # Conditions:																#
88  #		1. Start from the title screen										#
89  #		2. Insert Coin														#
90  #		3. Watch the 20 sec. counter and enter each part of the code right	#
91  #		   between the counting.											#
92  # Example: 12,up,11,up,10,down,9,down,8,left,7,right,6.left,5,r..			#
93  # After entering the [B] button a chime should sound. Phase 2 unlocked!	#
94  #																			#
95  # ------------------------------------------------------------------------ #
96  #		PLAYER SELECT: PHASE 3												#
97  # Result:	2 more fighter planes available:								#
98  # Code:	UP  UP  DOWN  DOWN  LEFT  RIGHT  LEFT  RIGHT  B  A  Start		#
99  # Conditions:																#
100  #		1. Start from the title screen										#
101  #		2. Insert Coin														#
102  #		3. Watch the 20 sec. counter and enter each part of the code right	#
103  #		   between the counting.											#
104  # Important: The entering of this code has to be finished before the		#
105  # counter passes 10 ! To do so, you will have to start after coin			#
106  # insertion, right before it starts to count:								#
107  # Example: up,19,up,18,down,17,down,16,left,15,right,14.left,..			#
108  # After entering the [A] button a chime should sound. Phase 3 unlocked!	#
109  #																			#
110  # ------------------------------------------------------------------------ #
111  #		TEAM EDIT: ENABLE													#
112  # Result:	Unlocks the 'team edit' feature to select a team of different	#
113  # 			ships. See selection secrets on how to enter the team edit mode.#
114  # Code:	UP  DOWN  UP  DOWN  LEFT  RIGHT  LEFT  RIGHT  A  B  Start		#
115  # Conditions:																#
116  #		1. Start from the title screen										#
117  #		2. Insert Coin														#
118  #		3. Watch the 20 sec. counter and enter each part of the code right	#
119  #		   between the counting.											#
120  # Important: This code hast to be entered so that the counter is at 0 when	#
121  # you press the final button [B]. To do so, start after second 9:			#
122  # Example: 9,up,8,down,7,up,6,down,5,left,4,right,3,left,2,right,1,A,0,B	#
123  # After entering the [B] button a chime should sound. Team edit unlocked!	#
124  #																			#
125  # ------------------------------------------------------------------------ #
126  #		SPECIAL COURSE : ENABLE												#
127  # Result:	Unlocks the boss mode, a game mode where you fight the bosses	#
128  # 			only.															#
129  # Code:	UP  DOWN  UP  DOWN  LEFT  RIGHT  LEFT  RIGHT  B  A  Start		#
130  # Conditions:																#
131  #		1. Start from the title screen										#
132  #		2. Hold [C] button													#
133  #		3. Insert Coin														#
134  #		4. Watch the 20 sec. counter and enter each part of the code right	#
135  #		   between the counting.											#
136  #		5. Release [C] button												#
137  # After entering the [A] button a chime should sound. Special course		#
138  # unlocked!																#
139  ############################################################################
140 
141 
142 
143 *************** Hardware Info ***************
144 
145 CPU:
146  MC68000P10
147  TMP68HC000N-16
148 
149 Sound CPU/MCU:
150  HD647180X0FS6 (Hitachi Z180 Compatible CPU with inernal ROM code)
151  Z84C0006PEC (Z80)
152 
153 
154 Sound Chips:
155  YM3812
156  YM2151
157  YM2151 + YM3014
158  YM2151 + M6295
159  YM2151 + M6295 + M6295
160  YMZ280B-F + YAC516-E (Digital to Analog Converter)
161 
162 
163 Graphics Custom 208pin QFP:
164  GP9001 L7A0498 TOA PLAN
165 
166 Toaplan / Raizing / 8ing games use different revisions of the custom
167 Toa Plan 208 pin QFP L7A0498 GP9001 series graphics processing chip:
168 
169 Fixeight				L7A0498 GP9001 TOA PLAN 9150
170 Grind Stormer			L7A0498 GP9001 TOA PLAN 9150
171 Truxton II				L7A0498 GP9001 TOA PLAN 9152
172 Ghox					L7A0498 GP9001 TOA PLAN 9044
173 Armed Police Batrider	L7A0498 GP9001 TOA PLAN NNG 9217 WK94254
174 Battle Garegga			L7A0498 GP9001 TOA PLAN 9236
175 Mahou Daisakusen		L7A0498 GP9001 TOA PLAN 9240
176 Battle Bakraid			L7A0498 GP9001 TOA PLAN 9335
177 
178 
179 Game status:
180 
181 Teki Paki                      Working, but no sound. Missing sound MCU dump
182 Ghox                           Working, but no sound. Missing sound MCU dump
183 Dogyuun                        Working, but no sound. MCU type unknown - its a Z?80 of some sort.
184 Knuckle Bash                   Working, but no sound. MCU dump exists, its a Z?80 of some sort.
185 Truxton 2                      Working.
186 Pipi & Bibis                   Working.
187 Whoopee                        Working. Missing sound MCU dump. Using bootleg sound CPU dump for now
188 Pipi & Bibis (Ryouta Kikaku)   Working.
189 FixEight                       Not working properly. Missing background GFX (controlled by MCU). MCU type unknown - its a Z?80 of some sort.
190 Grind Stormer                  Working, but no sound. MCU type unknown - its a Z?80 of some sort.
191 VFive                          Working, but no sound. MCU type unknown - its a Z?80 of some sort.
192 Batsugun                       Working, but no sound and wrong GFX priorities. MCU type unknown - its a Z?80 of some sort.
193 Batsugun Sp'                   Working, but no sound and wrong GFX priorities. MCU type unknown - its a Z?80 of some sort.
194 Snow Bros. 2                   Working.
195 Mahou Daisakusen               Working.
196 Shippu Mahou Daisakusen        Working.
197 Battle Garegga                 Working.
198 Armed Police Batrider          Working.
199 Battle Bakraid                 Working, but sound levels/panning/fading are bad
200 
201 
202 Notes:
203 	See Input Port definition header below, for instructions
204 	  on how to enter pause/slow motion modes.
205 	Code at $20A26 forces territory to Japan in V-Five. Some stuff
206 	  NOP'd at reset vector, and Z?80 CPU post test is skipped (bootleg ?)
207 
208 To Do / Unknowns:
209 	- Whoopee/Teki Paki sometimes tests bit 5 of the territory port
210 		just after testing for vblank. Why ?
211 	- Whoppee is currently using the sound CPU ROM (Z80) from a differnt
212 		(pirate ?) version of Pipi and Bibis (Ryouta Kikaku copyright).
213 		It really has a HD647180 CPU, and its internal ROM needs to be dumped.
214 	- Fix top character text layer (implement the line position table).
215 
216 
217 
218 *****************************************************************************/
219 
220 
221 #include "driver.h"
222 #include "vidhrdw/generic.h"
223 #include "cpu/m68000/m68000.h"
224 #include "cpu/z80/z80.h"
225 #include "machine/eeprom.h"
226 
227 
228 /**************** Machine stuff ******************/
229 #define HD64x180 0		/* Define if CPU support is available */
230 #define Zx80     0
231 
232 #define CPU_2_NONE		0x00
233 #define CPU_2_Z80		0x5a
234 #define CPU_2_HD647180	0xa5
235 #define CPU_2_Zx80		0xff
236 
237 /************ Machine RAM related values ************/
238 static data8_t *toaplan2_shared_ram;
239 static data8_t *raizing_shared_ram;		/* Shared ram used in Shippumd and Mahoudai */
240 static data16_t *toaplan2_shared_ram16;	/* Really 8bit RAM connected to Z180 */
241 static data16_t *Zx80_shared_ram;		/* Really 8bit RAM connected to Z180 */
242 static data16_t *battleg_commram16;		/* Comm ram used in Battle Garegga */
243 static data16_t *raizing_cpu_comm16;	/* Raizing commands for the Z80 */
244 static data8_t  raizing_cpu_reply[2];	/* Raizing replies to the 68K */
245 
246 /************ Video RAM related values ************/
247 extern data16_t *toaplan2_txvideoram16;
248 extern data16_t *toaplan2_txvideoram16_offs;
249 extern data16_t *toaplan2_txscrollram16;
250 extern data16_t *toaplan2_tx_gfxram16;
251 size_t toaplan2_tx_vram_size;
252 size_t toaplan2_tx_offs_vram_size;
253 size_t toaplan2_tx_scroll_vram_size;
254 size_t paletteram_size;
255 
256 /********** Status related values **********/
257 int toaplan2_sub_cpu = 0;
258 static int mcu_data = 0;
259 static int video_status;
260 static int prev_scanline;
261 //static int prev_beampos;
262 static INT8 old_p1_paddle_h;			/* For Ghox */
263 static INT8 old_p1_paddle_v;
264 static INT8 old_p2_paddle_h;
265 static INT8 old_p2_paddle_v;
266 static int current_bank = 2;			/* Z80 bank used in Battle Garegga and Batrider */
267 static int raizing_Z80_busreq;
268 static int bbakraid_unlimited_ver;
269 
270 static int current_scanline = 0;
271 static int vblank_irq;
272 
273 /**************** Video stuff ******************/
274 WRITE16_HANDLER( toaplan2_0_voffs_w );
275 WRITE16_HANDLER( toaplan2_1_voffs_w );
276 
277 READ16_HANDLER ( toaplan2_0_videoram16_r );
278 READ16_HANDLER ( toaplan2_1_videoram16_r );
279 WRITE16_HANDLER( toaplan2_0_videoram16_w );
280 WRITE16_HANDLER( toaplan2_1_videoram16_w );
281 
282 READ16_HANDLER ( toaplan2_txvideoram16_r );
283 WRITE16_HANDLER( toaplan2_txvideoram16_w );
284 READ16_HANDLER ( toaplan2_txvideoram16_offs_r );
285 WRITE16_HANDLER( toaplan2_txvideoram16_offs_w );
286 READ16_HANDLER ( toaplan2_txscrollram16_r );
287 WRITE16_HANDLER( toaplan2_txscrollram16_w );
288 READ16_HANDLER ( toaplan2_tx_gfxram16_r );
289 WRITE16_HANDLER( toaplan2_tx_gfxram16_w );
290 READ16_HANDLER ( raizing_tx_gfxram16_r );
291 WRITE16_HANDLER( raizing_tx_gfxram16_w );
292 
293 WRITE16_HANDLER( toaplan2_0_scroll_reg_select_w );
294 WRITE16_HANDLER( toaplan2_1_scroll_reg_select_w );
295 WRITE16_HANDLER( toaplan2_0_scroll_reg_data_w );
296 WRITE16_HANDLER( toaplan2_1_scroll_reg_data_w );
297 
298 WRITE16_HANDLER( batrider_objectbank_w );
299 WRITE16_HANDLER( batrider_textdata_decode );
300 
301 VIDEO_EOF( toaplan2_0 );
302 VIDEO_EOF( toaplan2_1 );
303 VIDEO_EOF( batrider_0 );
304 VIDEO_START( toaplan2_0 );
305 VIDEO_START( toaplan2_1 );
306 VIDEO_START( truxton2_0 );
307 VIDEO_START( battleg_0 );
308 VIDEO_START( batrider_0 );
309 VIDEO_UPDATE( toaplan2_0 );
310 VIDEO_UPDATE( truxton2_0 );
311 VIDEO_UPDATE( dogyuun_1 );
312 VIDEO_UPDATE( batsugun_1 );
313 VIDEO_UPDATE( batrider_0 );
314 VIDEO_UPDATE( mahoudai_0 );
315 
316 
317 /********* Video wrappers for PIPIBIBI *********/
318 READ16_HANDLER ( pipibibi_videoram16_r );
319 WRITE16_HANDLER( pipibibi_videoram16_w );
320 READ16_HANDLER ( pipibibi_spriteram16_r );
321 WRITE16_HANDLER( pipibibi_spriteram16_w );
322 WRITE16_HANDLER( pipibibi_scroll_w );
323 
324 
325 
326 /***************************************************************************
327   Initialisation handlers
328 ***************************************************************************/
329 
330 
MACHINE_INIT(toaplan2)331 static MACHINE_INIT( toaplan2 )		/* machine_init_toaplan2(); */
332 {
333 	mcu_data = 0;
334 }
335 
MACHINE_INIT(ghox)336 static MACHINE_INIT( ghox )
337 {
338 	old_p1_paddle_h = 0;
339 	old_p1_paddle_v = 0;
340 	old_p2_paddle_h = 0;
341 	old_p2_paddle_v = 0;
342 
343 	machine_init_toaplan2();
344 }
345 
MACHINE_INIT(batrider)346 static MACHINE_INIT( batrider )
347 {
348 	current_bank = 2;
349 
350 	machine_init_toaplan2();
351 }
352 
DRIVER_INIT(T2_Z80)353 static DRIVER_INIT( T2_Z80 )		/* init_t2_Z80(); */
354 {
355 	toaplan2_sub_cpu = CPU_2_Z80;
356 }
357 
DRIVER_INIT(T2_Z180)358 static DRIVER_INIT( T2_Z180 )
359 {
360 	toaplan2_sub_cpu = CPU_2_HD647180;
361 }
362 
DRIVER_INIT(T2_Zx80)363 static DRIVER_INIT( T2_Zx80 )
364 {
365 	toaplan2_sub_cpu = CPU_2_Zx80;
366 }
367 
DRIVER_INIT(T2_noZ80)368 static DRIVER_INIT( T2_noZ80 )
369 {
370 	toaplan2_sub_cpu = CPU_2_NONE;
371 }
372 
DRIVER_INIT(fixeight)373 static DRIVER_INIT( fixeight )
374 {
375 	install_mem_read16_handler(0, 0x28f002, 0x28fbff, MRA16_RAM );
376 	install_mem_write16_handler(0, 0x28f002, 0x28fbff, MWA16_RAM );
377 
378 	toaplan2_sub_cpu = CPU_2_Zx80;
379 }
380 
DRIVER_INIT(pipibibi)381 static DRIVER_INIT( pipibibi )
382 {
383 	int A;
384 	int oldword, newword;
385 
386 	data16_t *pipibibi_68k_rom = (data16_t *)(memory_region(REGION_CPU1));
387 
388 	/* unscramble the 68K ROM data. */
389 
390 	for (A = 0; A < (0x040000/2); A+=4)
391 	{
392 		newword = 0;
393 		oldword = pipibibi_68k_rom[A];
394 		newword |= ((oldword & 0x0001) << 9);
395 		newword |= ((oldword & 0x0002) << 14);
396 		newword |= ((oldword & 0x0004) << 8);
397 		newword |= ((oldword & 0x0018) << 1);
398 		newword |= ((oldword & 0x0020) << 9);
399 		newword |= ((oldword & 0x0040) << 7);
400 		newword |= ((oldword & 0x0080) << 5);
401 		newword |= ((oldword & 0x0100) << 3);
402 		newword |= ((oldword & 0x0200) >> 1);
403 		newword |= ((oldword & 0x0400) >> 8);
404 		newword |= ((oldword & 0x0800) >> 10);
405 		newword |= ((oldword & 0x1000) >> 12);
406 		newword |= ((oldword & 0x6000) >> 7);
407 		newword |= ((oldword & 0x8000) >> 12);
408 		pipibibi_68k_rom[A] = newword;
409 
410 		newword = 0;
411 		oldword = pipibibi_68k_rom[A+1];
412 		newword |= ((oldword & 0x0001) << 8);
413 		newword |= ((oldword & 0x0002) << 12);
414 		newword |= ((oldword & 0x0004) << 5);
415 		newword |= ((oldword & 0x0008) << 11);
416 		newword |= ((oldword & 0x0010) << 2);
417 		newword |= ((oldword & 0x0020) << 10);
418 		newword |= ((oldword & 0x0040) >> 1);
419 		newword |= ((oldword & 0x0080) >> 7);
420 		newword |= ((oldword & 0x0100) >> 4);
421 		newword |= ((oldword & 0x0200) << 0);
422 		newword |= ((oldword & 0x0400) >> 7);
423 		newword |= ((oldword & 0x0800) >> 1);
424 		newword |= ((oldword & 0x1000) >> 10);
425 		newword |= ((oldword & 0x2000) >> 2);
426 		newword |= ((oldword & 0x4000) >> 13);
427 		newword |= ((oldword & 0x8000) >> 3);
428 		pipibibi_68k_rom[A+1] = newword;
429 
430 		newword = 0;
431 		oldword = pipibibi_68k_rom[A+2];
432 		newword |= ((oldword & 0x000f) << 4);
433 		newword |= ((oldword & 0x00f0) >> 4);
434 		newword |= ((oldword & 0x0100) << 3);
435 		newword |= ((oldword & 0x0200) << 1);
436 		newword |= ((oldword & 0x0400) >> 1);
437 		newword |= ((oldword & 0x0800) >> 3);
438 		newword |= ((oldword & 0x1000) << 3);
439 		newword |= ((oldword & 0x2000) << 1);
440 		newword |= ((oldword & 0x4000) >> 1);
441 		newword |= ((oldword & 0x8000) >> 3);
442 		pipibibi_68k_rom[A+2] = newword;
443 
444 		newword = 0;
445 		oldword = pipibibi_68k_rom[A+3];
446 		newword |= ((oldword & 0x000f) << 4);
447 		newword |= ((oldword & 0x00f0) >> 4);
448 		newword |= ((oldword & 0x0100) << 7);
449 		newword |= ((oldword & 0x0200) << 5);
450 		newword |= ((oldword & 0x0400) << 3);
451 		newword |= ((oldword & 0x0800) << 1);
452 		newword |= ((oldword & 0x1000) >> 1);
453 		newword |= ((oldword & 0x2000) >> 3);
454 		newword |= ((oldword & 0x4000) >> 5);
455 		newword |= ((oldword & 0x8000) >> 7);
456 		pipibibi_68k_rom[A+3] = newword;
457 	}
458 
459 	toaplan2_sub_cpu = CPU_2_Z80;
460 }
461 
DRIVER_INIT(battleg)462 static DRIVER_INIT( battleg )
463 {
464 	data8_t *Z80 = (data8_t *)memory_region(REGION_CPU2);
465 
466 	/* Set Z80 bank switch */
467 	cpu_setbank(1, &Z80[0x10000]);		/* Default bank is 2 */
468 
469 	toaplan2_sub_cpu = CPU_2_Z80;
470 }
471 
DRIVER_INIT(bbakraid)472 static DRIVER_INIT( bbakraid )
473 {
474 	bbakraid_unlimited_ver = 1;
475 	toaplan2_sub_cpu = CPU_2_Z80;
476 }
477 
DRIVER_INIT(bbakrada)478 static DRIVER_INIT( bbakrada )
479 {
480 	bbakraid_unlimited_ver = 0;
481 	toaplan2_sub_cpu = CPU_2_Z80;
482 }
483 
484 
485 /***************************************************************************
486   Toaplan games
487 ***************************************************************************/
488 
READ16_HANDLER(toaplan2_inputport_0_word_r)489 READ16_HANDLER( toaplan2_inputport_0_word_r )
490 {
491 //	int retval = (current_scanline>255) ? 1 : 0;
492 	int retval = vblank_irq;
493 	return retval;
494 }
495 
toaplan2_irq(int irq_line)496 static void toaplan2_irq(int irq_line)
497 {
498 	if (cpu_getiloops() == 0) current_scanline = 255;
499 
500 	if(current_scanline == 245)
501 	{
502 		cpu_set_irq_line(0, irq_line, HOLD_LINE);
503 		vblank_irq = 1;
504 	}
505 
506 	current_scanline++;
507 	if(current_scanline > 261)
508 	{
509 		current_scanline = 0;
510 		vblank_irq = 0;
511 	}
512 }
513 
INTERRUPT_GEN(toaplan2_vblank_irq2)514 static INTERRUPT_GEN( toaplan2_vblank_irq2 ) {toaplan2_irq(2);}
INTERRUPT_GEN(toaplan2_vblank_irq3)515 static INTERRUPT_GEN( toaplan2_vblank_irq3 ) {toaplan2_irq(3);}
INTERRUPT_GEN(toaplan2_vblank_irq4)516 static INTERRUPT_GEN( toaplan2_vblank_irq4 ) {toaplan2_irq(4);}
517 
READ16_HANDLER(video_count_r)518 static READ16_HANDLER( video_count_r )
519 {
520 	/* +---------+---------+--------+---------------------------+ */
521 	/* | /H-Sync | /V-Sync | /Blank |       Scanline Count      | */
522 	/* | Bit 15  | Bit 14  | Bit 8  |  Bit 7-0 (count from #EF) | */
523 	/* +---------+---------+--------+---------------------------+ */
524 	/*************** Control Signals are active low ***************/
525 
526 //	static int current_beampos = 0;
527 
528 //	logerror("Was VC=%04x  Vbl=%02x  VS=%04x  HS=%04x - ",video_status,vblank_irq,prev_scanline,prev_beampos );
529 
530 	video_status = 0xff00;						/* Set signals inactive */
531 	video_status |= (current_scanline & 0xff);	/* Scanline */
532 
533 	if (vblank_irq) {
534 		video_status &= ~0x0100;
535 	}
536 	if (prev_scanline != current_scanline) {
537 		video_status &= ~0x8000;				/* Activate V-Sync Clk */
538 	}
539 //	if (current_beampos) {
540 //		video_status &= ~0x4000;
541 //	}
542 //	current_beampos = ~current_beampos;
543 	prev_scanline = current_scanline;
544 
545 //	logerror("Now VC=%04x  Vbl=%02x  VS=%04x  HS=%04x\n",video_status,vblank_irq,cpu_getscanline(),cpu_gethorzbeampos() );
546 
547 	return video_status;
548 }
549 
WRITE_HANDLER(toaplan2_coin_w)550 static WRITE_HANDLER( toaplan2_coin_w )
551 {
552 	/* +----------------+------ Bits 7-5 not used ------+--------------+ */
553 	/* | Coin Lockout 2 | Coin Lockout 1 | Coin Count 2 | Coin Count 1 | */
554 	/* |     Bit 3      |     Bit 2      |     Bit 1    |     Bit 0    | */
555 
556 	if (data & 0x0f)
557 	{
558 		coin_lockout_w( 0, ((data & 4) ? 0 : 1) );
559 		coin_lockout_w( 1, ((data & 8) ? 0 : 1) );
560 		coin_counter_w( 0, (data & 1) ); coin_counter_w( 0, 0 );
561 		coin_counter_w( 1, (data & 2) ); coin_counter_w( 1, 0 );
562 	}
563 	else
564 	{
565 		coin_lockout_global_w(1); /* Lock all coin slots */
566 	}
567 	if (data & 0xe0)
568 	{
569 		logerror("Writing unknown upper bits (%02x) to coin control\n",data);
570 	}
571 }
WRITE16_HANDLER(toaplan2_coin_word_w)572 static WRITE16_HANDLER( toaplan2_coin_word_w )
573 {
574 	if (ACCESSING_LSB)
575 	{
576 		toaplan2_coin_w(offset, data & 0xff);
577 		if (toaplan2_sub_cpu == CPU_2_Z80)
578 		{
579 			if (Machine->drv->sound[1].sound_type == SOUND_OKIM6295)
580 			{
581 				OKIM6295_set_bank_base(0, (((data & 0x10) >> 4) * 0x40000));
582 			}
583 		}
584 	}
585 	if (ACCESSING_MSB && (data & 0xff00) )
586 	{
587 		logerror("Writing unknown upper MSB command (%04x) to coin control\n",data & 0xff00);
588 	}
589 }
590 
READ16_HANDLER(toaplan2_shared_r)591 static READ16_HANDLER( toaplan2_shared_r )
592 {
593 	return toaplan2_shared_ram[offset] & 0xff;
594 }
595 
WRITE16_HANDLER(toaplan2_shared_w)596 static WRITE16_HANDLER( toaplan2_shared_w )
597 {
598 	if (ACCESSING_LSB)
599 	{
600 		toaplan2_shared_ram[offset] = data & 0xff;
601 	}
602 }
603 
WRITE16_HANDLER(toaplan2_hd647180_cpu_w)604 static WRITE16_HANDLER( toaplan2_hd647180_cpu_w )
605 {
606 	/* Command sent to secondary CPU. Support for HD647180 will be
607 	   required when a ROM dump becomes available for this hardware */
608 
609 	if (ACCESSING_LSB)
610 	{
611 		if (toaplan2_sub_cpu == CPU_2_Z80)			/* Whoopee */
612 		{
613 			toaplan2_shared_ram[0] = data & 0xff;
614 		}
615 		else										/* Teki Paki */
616 		{
617 			mcu_data = data & 0xff;
618 			logerror("PC:%08x Writing command (%04x) to secondary CPU shared port\n",activecpu_get_previouspc(),mcu_data);
619 		}
620 	}
621 }
622 
READ16_HANDLER(c2map_port_6_r)623 static READ16_HANDLER( c2map_port_6_r )
624 {
625 	/* For Teki Paki hardware */
626 	/* bit 4 high signifies secondary CPU is ready */
627 	/* bit 5 is tested low before V-Blank bit ??? */
628 	switch (toaplan2_sub_cpu)
629 	{
630 		case CPU_2_Z80:			mcu_data = toaplan2_shared_ram[0]; break; /* Whoopee */
631 		case CPU_2_HD647180:	mcu_data = 0xff; break;					  /* Teki Paki */
632 		default:				mcu_data = 0x00; break;
633 	}
634 	if (mcu_data == 0xff) mcu_data = 0x10;
635 	else mcu_data = 0x00;
636 	return ( mcu_data | input_port_6_r(0) );
637 }
638 
READ16_HANDLER(pipibibi_z80_status_r)639 static READ16_HANDLER( pipibibi_z80_status_r )
640 {
641 	return toaplan2_shared_ram[0] & 0xff;
642 }
643 
WRITE16_HANDLER(pipibibi_z80_task_w)644 static WRITE16_HANDLER( pipibibi_z80_task_w )
645 {
646 	if (ACCESSING_LSB)
647 	{
648 		toaplan2_shared_ram[0] = data & 0xff;
649 	}
650 }
651 
READ16_HANDLER(ghox_p1_h_analog_r)652 static READ16_HANDLER( ghox_p1_h_analog_r )
653 {
654 	INT8 value, new_value;
655 
656 	new_value = input_port_7_r(0);
657 	if (new_value == old_p1_paddle_h) return 0;
658 	value = new_value - old_p1_paddle_h;
659 	old_p1_paddle_h = new_value;
660 	return value;
661 }
662 
READ16_HANDLER(ghox_p1_v_analog_r)663 static READ16_HANDLER( ghox_p1_v_analog_r )
664 {
665 	INT8 new_value;
666 
667 	new_value = input_port_9_r(0);		/* fake vertical movement */
668 	if (new_value == old_p1_paddle_v) return input_port_1_r(0);
669 	if (new_value >  old_p1_paddle_v)
670 	{
671 		old_p1_paddle_v = new_value;
672 		return (input_port_1_r(0) | 2);
673 	}
674 	old_p1_paddle_v = new_value;
675 	return (input_port_1_r(0) | 1);
676 }
677 
READ16_HANDLER(ghox_p2_h_analog_r)678 static READ16_HANDLER( ghox_p2_h_analog_r )
679 {
680 	INT8 value, new_value;
681 
682 	new_value = input_port_8_r(0);
683 	if (new_value == old_p2_paddle_h) return 0;
684 	value = new_value - old_p2_paddle_h;
685 	old_p2_paddle_h = new_value;
686 	return value;
687 }
688 
READ16_HANDLER(ghox_p2_v_analog_r)689 static READ16_HANDLER( ghox_p2_v_analog_r )
690 {
691 	INT8 new_value;
692 
693 	new_value = input_port_10_r(0);		/* fake vertical movement */
694 	if (new_value == old_p2_paddle_v) return input_port_2_r(0);
695 	if (new_value >  old_p2_paddle_v)
696 	{
697 		old_p2_paddle_v = new_value;
698 		return (input_port_2_r(0) | 2);
699 	}
700 	old_p2_paddle_v = new_value;
701 	return (input_port_2_r(0) | 1);
702 }
703 
READ16_HANDLER(ghox_mcu_r)704 static READ16_HANDLER( ghox_mcu_r )
705 {
706 	return 0xff;
707 }
708 
WRITE16_HANDLER(ghox_mcu_w)709 static WRITE16_HANDLER( ghox_mcu_w )
710 {
711 	if (ACCESSING_LSB)
712 	{
713 		mcu_data = data;
714 		if ((data >= 0xd0) && (data < 0xe0))
715 		{
716 			offset = ((data & 0x0f) * 2) + (0x38 / 2);
717 			toaplan2_shared_ram16[offset  ] = 0x0005;	/* Return address for */
718 			toaplan2_shared_ram16[offset-1] = 0x0056;	/*   RTS instruction */
719 		}
720 		else
721 		{
722 			logerror("PC:%08x Writing %08x to HD647180 cpu shared ram status port\n",activecpu_get_previouspc(),mcu_data);
723 		}
724 		toaplan2_shared_ram16[0x56 / 2] = 0x004e;	/* Return a RTS instruction */
725 		toaplan2_shared_ram16[0x58 / 2] = 0x0075;
726 
727 		if (data == 0xd3)
728 		{
729 		toaplan2_shared_ram16[0x56 / 2] = 0x003a;	//	move.w  d1,d5
730 		toaplan2_shared_ram16[0x58 / 2] = 0x0001;
731 		toaplan2_shared_ram16[0x5a / 2] = 0x0008;	//	bclr.b  #0,d5
732 		toaplan2_shared_ram16[0x5c / 2] = 0x0085;
733 		toaplan2_shared_ram16[0x5e / 2] = 0x0000;
734 		toaplan2_shared_ram16[0x60 / 2] = 0x0000;
735 		toaplan2_shared_ram16[0x62 / 2] = 0x00cb;	//	muls.w  #3,d5
736 		toaplan2_shared_ram16[0x64 / 2] = 0x00fc;
737 		toaplan2_shared_ram16[0x66 / 2] = 0x0000;
738 		toaplan2_shared_ram16[0x68 / 2] = 0x0003;
739 		toaplan2_shared_ram16[0x6a / 2] = 0x0090;	//	sub.w   d5,d0
740 		toaplan2_shared_ram16[0x6c / 2] = 0x0045;
741 		toaplan2_shared_ram16[0x6e / 2] = 0x00e5;	//	lsl.b   #2,d1
742 		toaplan2_shared_ram16[0x70 / 2] = 0x0009;
743 		toaplan2_shared_ram16[0x72 / 2] = 0x004e;	//	rts
744 		toaplan2_shared_ram16[0x74 / 2] = 0x0075;
745 		}
746 	}
747 }
748 
READ16_HANDLER(ghox_shared_ram_r)749 static READ16_HANDLER( ghox_shared_ram_r )
750 {
751 	/* Ghox 68K reads data from MCU shared RAM and writes it to main RAM.
752 	   It then subroutine jumps to main RAM and executes this code.
753 	   Here, we're just returning a RTS instruction for now.
754 	   See above ghox_mcu_w routine.
755 
756 	   Offset $56 and $58 are accessed from around PC:0F814
757 
758 	   Offset $38 and $36 are accessed from around PC:0DA7C
759 	   Offset $3c and $3a are accessed from around PC:02E3C
760 	   Offset $40 and $3E are accessed from around PC:103EE
761 	   Offset $44 and $42 are accessed from around PC:0FB52
762 	   Offset $48 and $46 are accessed from around PC:06776
763 	*/
764 
765 	return toaplan2_shared_ram16[offset] & 0xff;
766 }
WRITE16_HANDLER(ghox_shared_ram_w)767 static WRITE16_HANDLER( ghox_shared_ram_w )
768 {
769 	if (ACCESSING_LSB)
770 	{
771 		toaplan2_shared_ram16[offset] = data & 0xff;
772 	}
773 }
READ16_HANDLER(kbash_sub_cpu_r)774 static READ16_HANDLER( kbash_sub_cpu_r )
775 {
776 /*	Knuckle Bash's  68000 reads secondary CPU status via an I/O port.
777 	If a value of 2 is read, then secondary CPU is busy.
778 	Secondary CPU must report 0xff when no longer busy, to signify that it
779 	has passed POST.
780 */
781 	return 0xff;
782 }
783 
WRITE16_HANDLER(kbash_sub_cpu_w)784 static WRITE16_HANDLER( kbash_sub_cpu_w )
785 {
786 	logerror("PC:%08x writing %04x to Zx80 secondary CPU status port %02x\n",activecpu_get_previouspc(),mcu_data,offset/2);
787 }
788 
READ16_HANDLER(shared_ram_r)789 static READ16_HANDLER( shared_ram_r )
790 {
791 /*	Other games using a Zx80 based secondary CPU, have shared memory between
792 	the 68000 and the Zx80 CPU. The 68000 reads the status of the Zx80
793 	via a location of the shared memory.
794 */
795 	return toaplan2_shared_ram16[offset] & 0xff;
796 }
797 
WRITE16_HANDLER(shared_ram_w)798 static WRITE16_HANDLER( shared_ram_w )
799 {
800 	if (ACCESSING_LSB)
801 	{
802 		data &= 0xff;
803 		switch (offset * 2)
804 		{
805 			case 0x6e8:
806 			case 0x9e8:
807 			case 0x9f0:
808 			case 0xcf0:
809 			case 0xcf8:
810 			case 0xff8: toaplan2_shared_ram16[offset + 1] = data; /* Dogyuun */
811 						toaplan2_shared_ram16[offset + 2] = data; /* FixEight */
812 						logerror("PC:%08x Writing  (%04x) to secondary CPU\n",activecpu_get_previouspc(),data);
813 						if (data == 0x81) data = 0x0001;
814 						break;
815 			default:	break;
816 		}
817 		toaplan2_shared_ram16[offset] = data;
818 	}
819 }
820 
READ16_HANDLER(Zx80_status_port_r)821 static READ16_HANDLER( Zx80_status_port_r )
822 {
823 /*** Status port includes Zx80 CPU POST codes. ************
824  *** This is actually a part of the 68000/Zx80 Shared RAM */
825 
826 	/*** Dogyuun mcu post data ***/
827 	if (mcu_data == 0x800000aa) mcu_data = 0xff;
828 	if (mcu_data == 0x00) mcu_data = 0x800000aa;
829 
830 	/*** FixEight mcu post data ***/
831 	if (mcu_data == 0x8000ffaa)
832 	{
833 #if 0 	/* check the 37B6 code */
834 		/* copy nvram data to shared ram after post is complete */
835 		fixeight_sharedram[0] = fixeight_nvram[0];	/* Dip Switch A */
836 		fixeight_sharedram[1] = fixeight_nvram[1];	/* Dip Switch B */
837 		fixeight_sharedram[2] = fixeight_nvram[2];	/* Territory */
838 #endif
839 		/* Hack Alert ! Fixeight does not have any DSW. The main CPU has a */
840 		/* game keeping service mode. It writes/reads the settings to/from */
841 		/* these shared RAM locations. The secondary CPU reads/writes them */
842 		/* from/to nvram to store the settings (a 93C45 EEPROM) */
843 		install_mem_read16_handler (0, 0x28f002, 0x28f003, MRA16_RAM);
844 		install_mem_read16_handler (0, 0x28f004, 0x28f005, input_port_5_word_r);	/* Dip Switch A - Wrong !!! */
845 		install_mem_read16_handler (0, 0x28f006, 0x28f007, input_port_6_word_r);	/* Dip Switch B - Wrong !!! */
846 		install_mem_read16_handler (0, 0x28f008, 0x28f009, input_port_7_word_r);	/* Territory Jumper block - Wrong !!! */
847 		install_mem_read16_handler (0, 0x28f00a, 0x28fbff, MRA16_RAM);
848 		install_mem_write16_handler (0, 0x28f002, 0x28f003, MWA16_RAM);
849 		install_mem_write16_handler (0, 0x28f004, 0x28f009, MWA16_NOP);
850 		install_mem_write16_handler (0, 0x28f00a, 0x28fbff, MWA16_RAM);
851 
852 		mcu_data = 0xffff;
853 	}
854 	if (mcu_data == 0xffaa) mcu_data = 0x8000ffaa;
855 	if (mcu_data == 0xff00) mcu_data = 0xffaa;
856 
857 	logerror("PC:%08x reading %08x from Zx80 secondary CPU command/status port\n",activecpu_get_previouspc(),mcu_data);
858 	return mcu_data & 0xff;
859 }
860 
WRITE16_HANDLER(Zx80_command_port_w)861 static WRITE16_HANDLER( Zx80_command_port_w )
862 {
863 	if (ACCESSING_LSB)
864 	{
865 		mcu_data = data;
866 	logerror("PC:%08x Writing command (%04x) to Zx80 secondary CPU command/status port\n",activecpu_get_previouspc(),mcu_data);
867 }
868 }
869 
READ16_HANDLER(Zx80_sharedram_r)870 static READ16_HANDLER( Zx80_sharedram_r )
871 {
872 	return Zx80_shared_ram[offset] & 0xff;
873 }
874 
WRITE16_HANDLER(Zx80_sharedram_w)875 static WRITE16_HANDLER( Zx80_sharedram_w )
876 {
877 	if (ACCESSING_LSB)
878 	{
879 		Zx80_shared_ram[offset] = data & 0xff;
880 	}
881 }
882 
WRITE16_HANDLER(oki_bankswitch_w)883 static WRITE16_HANDLER( oki_bankswitch_w )
884 {
885 	if (ACCESSING_LSB)
886 	{
887 		OKIM6295_set_bank_base(0, (data & 1) * 0x40000);
888 	}
889 }
890 
891 
892 
893 /***************************************************************************
894   Raizing games
895 ***************************************************************************/
896 
READ16_HANDLER(raizing_shared_ram_r)897 static READ16_HANDLER( raizing_shared_ram_r )
898 {
899 	return raizing_shared_ram[offset] & 0xff;
900 }
901 
WRITE16_HANDLER(raizing_shared_ram_w)902 static WRITE16_HANDLER( raizing_shared_ram_w )
903 {
904 	if (ACCESSING_LSB)
905 	{
906 		raizing_shared_ram[offset] = data & 0xff;
907 	}
908 }
909 
READ16_HANDLER(battleg_commram_r)910 static READ16_HANDLER( battleg_commram_r )
911 {
912 	return battleg_commram16[offset];
913 }
914 
WRITE16_HANDLER(battleg_commram_w)915 static WRITE16_HANDLER( battleg_commram_w )
916 {
917 	COMBINE_DATA(&battleg_commram16[offset]);
918 	cpu_set_irq_line(1, 0, HOLD_LINE);
919 	if (offset == 0) cpu_yield();	/* Command issued so switch control */
920 }
921 
READ_HANDLER(battleg_commram_check_r0)922 static READ_HANDLER( battleg_commram_check_r0 )
923 {
924 	data8_t *battleg_common_RAM = (data8_t *)battleg_commram16;
925 
926 	return battleg_common_RAM[BYTE_XOR_BE(offset * 2 + 1)];
927 }
928 
WRITE_HANDLER(battleg_commram_check_w0)929 static WRITE_HANDLER( battleg_commram_check_w0 )
930 {
931 	data8_t *battleg_common_RAM = (data8_t *)battleg_commram16;
932 
933 	battleg_common_RAM[BYTE_XOR_BE(0)] = data;
934 	cpu_yield();					/* Command issued so switch control */
935 }
936 
READ16_HANDLER(battleg_z80check_r)937 static READ16_HANDLER( battleg_z80check_r )
938 {
939 	return raizing_shared_ram[offset + 0x10] & 0xff;
940 }
941 
WRITE_HANDLER(battleg_bankswitch_w)942 static WRITE_HANDLER( battleg_bankswitch_w )
943 {
944 	data8_t *RAM = (data8_t *)memory_region(REGION_CPU2);
945 	int bankaddress;
946 	int bank;
947 
948 	bank = (data & 0x0f) - 10;
949 
950 	if (bank != current_bank)
951 	{
952 		current_bank = bank;
953 		bankaddress = 0x10000 + 0x4000 * current_bank;
954 		cpu_setbank(1, &RAM[bankaddress]);
955 	}
956 }
957 
raizing_oki6295_set_bankbase(int chip,int channel,int base)958 static void raizing_oki6295_set_bankbase( int chip, int channel, int base )
959 {
960 	/* The OKI6295 ROM space is divided in four banks, each one independantly */
961 	/* controlled. The sample table at the beginning of the addressing space  */
962 	/* is divided in four pages as well, banked together with the sample data */
963 
964 	data8_t *rom = (data8_t *)memory_region(REGION_SOUND1 + chip);
965 
966 	/* copy the samples */
967 	memcpy(rom + channel * 0x10000, rom + 0x40000 + base, 0x10000);
968 
969 	/* and also copy the samples address table */
970 	rom += channel * 0x100;
971 	memcpy(rom, rom + 0x40000 + base, 0x100);
972 }
973 
974 
WRITE_HANDLER(raizing_okim6295_bankselect_0)975 static WRITE_HANDLER( raizing_okim6295_bankselect_0 )
976 {
977 	raizing_oki6295_set_bankbase( 0, 0,  (data       & 0x0f) * 0x10000);
978 	raizing_oki6295_set_bankbase( 0, 1, ((data >> 4) & 0x0f) * 0x10000);
979 }
980 
WRITE_HANDLER(raizing_okim6295_bankselect_1)981 static WRITE_HANDLER( raizing_okim6295_bankselect_1 )
982 {
983 	raizing_oki6295_set_bankbase( 0, 2,  (data       & 0x0f) * 0x10000);
984 	raizing_oki6295_set_bankbase( 0, 3, ((data >> 4) & 0x0f) * 0x10000);
985 }
986 
WRITE_HANDLER(raizing_okim6295_bankselect_2)987 static WRITE_HANDLER( raizing_okim6295_bankselect_2 )
988 {
989 	raizing_oki6295_set_bankbase( 1, 0,  (data       & 0x0f) * 0x10000);
990 	raizing_oki6295_set_bankbase( 1, 1, ((data >> 4) & 0x0f) * 0x10000);
991 }
992 
WRITE_HANDLER(raizing_okim6295_bankselect_3)993 static WRITE_HANDLER( raizing_okim6295_bankselect_3 )
994 {
995 	raizing_oki6295_set_bankbase( 1, 2,  (data       & 0x0f) * 0x10000);
996 	raizing_oki6295_set_bankbase( 1, 3, ((data >> 4) & 0x0f) * 0x10000);
997 }
998 
WRITE_HANDLER(batrider_bankswitch_w)999 static WRITE_HANDLER( batrider_bankswitch_w )
1000 {
1001 	data8_t *RAM = (data8_t *)memory_region(REGION_CPU2);
1002 	int bankaddress;
1003 	int bank;
1004 
1005 	bank = data & 0x0f;
1006 
1007 	if (bank != current_bank)
1008 	{
1009 		current_bank = bank;
1010 		logerror("Z80 cpu set bank #%d\n", bank);
1011 		if (bank > 1)
1012 			bankaddress = 0x10000 + 0x4000 * (current_bank - 2);
1013 		else
1014 			bankaddress = 0x4000 * current_bank;
1015 		cpu_setbank(1, &RAM[bankaddress]);
1016 	}
1017 }
1018 
READ16_HANDLER(batrider_z80_busack_r)1019 static READ16_HANDLER( batrider_z80_busack_r )
1020 {
1021 	/* Bit 1 returns the status of BUSAK from the Z80.
1022 	   BUSRQ is activated via bit 0x10 on the NVRAM write port.
1023 	   These accesses are made when the 68K wants to read the Z80
1024 	   ROM code. Failure to return the correct status incurrs a Sound Error.
1025 	*/
1026 
1027 	return raizing_Z80_busreq;			/* Loop BUSRQ to BUSAK */
1028 }
WRITE16_HANDLER(batrider_z80_busreq_w)1029 static WRITE16_HANDLER( batrider_z80_busreq_w )
1030 {
1031 	if (ACCESSING_LSB)
1032 	{
1033 		raizing_Z80_busreq = (data & 0xff);
1034 	}
1035 }
1036 
READ16_HANDLER(raizing_z80rom_r)1037 static READ16_HANDLER( raizing_z80rom_r )
1038 {
1039 	data8_t *Z80_ROM_test = (data8_t *)memory_region(REGION_CPU2);
1040 
1041 	if (offset < 0x8000)
1042 		return Z80_ROM_test[offset] & 0xff;
1043 
1044 	return Z80_ROM_test[offset + 0x8000] & 0xff;
1045 }
1046 
1047 
1048 
1049 /*###################### Battle Bakraid ##############################*/
1050 
1051 /* EEPROM contents with battle Bakraid Unlimited version features unlocked */
1052 static data8_t bbakraid_unlimited_nvram[512] = {
1053 	0xc2,0x49,0x00,0x07,0xa1,0x20,0x2a,0x2a,0x2a,0x90,0x90,0x90,0x00,0x00,0x00,0x00,
1054 	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x06,0x1a,0x80,0x2a,0x2a,0x2a,0x94,
1055 	0x94,0x94,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,
1056 	0x93,0xe0,0x2a,0x2a,0x2a,0x98,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1057 	0x00,0x00,0x00,0x02,0x00,0x03,0x0d,0x40,0x2a,0x2a,0x2a,0x9c,0x9c,0x9c,0x00,0x00,
1058 	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x01,0x86,0xa0,0x2a,0x2a,
1059 	0x2a,0xa0,0xa0,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
1060 	0x00,0x07,0xa1,0x20,0x2b,0x2b,0x2b,0x90,0x90,0x90,0x00,0x00,0x00,0x00,0x00,0x00,
1061 	0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x06,0x1a,0x80,0x2b,0x2b,0x2b,0x94,0x94,0x94,
1062 	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,0x93,0xe0,
1063 	0x2b,0x2b,0x2b,0x98,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1064 	0x00,0x02,0x00,0x03,0x0d,0x40,0x2b,0x2b,0x2b,0x9c,0x9c,0x9c,0x00,0x00,0x00,0x00,
1065 	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x01,0x86,0xa0,0x2b,0x2b,0x2b,0xa0,
1066 	0xa0,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x07,
1067 	0xa1,0x20,0x23,0x23,0x23,0x90,0x90,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1068 	0x00,0x00,0x00,0x02,0x00,0x06,0x1a,0x80,0x23,0x23,0x23,0x94,0x94,0x94,0x00,0x00,
1069 	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,0x93,0xe0,0x23,0x23,
1070 	0x23,0x98,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
1071 	0x00,0x03,0x0d,0x40,0x23,0x23,0x23,0x9c,0x9c,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,
1072 	0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x01,0x86,0xa0,0x23,0x23,0x23,0xa0,0xa0,0xa0,
1073 	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x07,0xa1,0x20,
1074 	0x3f,0x3f,0x3f,0x90,0x90,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1075 	0x00,0x02,0x00,0x06,0x1a,0x80,0x3f,0x3f,0x3f,0x94,0x94,0x94,0x00,0x00,0x00,0x00,
1076 	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,0x93,0xe0,0x3f,0x3f,0x3f,0x98,
1077 	0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x03,
1078 	0x0d,0x40,0x3f,0x3f,0x3f,0x9c,0x9c,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1079 	0x00,0x00,0x00,0x02,0x00,0x01,0x86,0xa0,0x3f,0x3f,0x3f,0xa0,0xa0,0xa0,0x00,0x00,
1080 	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,0xc2,0x49,0xc2,0x49,
1081 	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1082 	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1083 	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0xcf,0x00,0x04,0x00,0x00,0x21,0xd5,
1084 	0x00,0x05,0x06,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xc2,0x49
1085 };
1086 
1087 
1088 
1089 struct EEPROM_interface eeprom_interface_93C66 =
1090 {
1091 	/* Pin 6 of the 93C66 is connected to Gnd!
1092 	   So it's configured for 512 bytes */
1093 
1094 	9,			// address bits
1095 	8,			// data bits
1096 	"*110",		// read			110 aaaaaaaaa
1097 	"*101",		// write		101 aaaaaaaaa dddddddd
1098 	"*111",		// erase		111 aaaaaaaaa
1099 	"*10000xxxxxxx",// lock			100x 00xxxx
1100 	"*10011xxxxxxx",// unlock		100x 11xxxx
1101 //	"*10001xxxx",	// write all	1 00 01xxxx dddddddd
1102 //	"*10010xxxx"	// erase all	1 00 10xxxx
1103 };
1104 
1105 
NVRAM_HANDLER(bbakraid)1106 static NVRAM_HANDLER( bbakraid )
1107 {
1108 	/* Pin 6 of 93C66 is connected to Gnd! */
1109 
1110 	if (read_or_write)
1111 		EEPROM_save(file);
1112 	else
1113 	{
1114 		EEPROM_init(&eeprom_interface_93C66);
1115 
1116 		if (file) EEPROM_load(file);
1117 		else
1118 		{
1119 			if (bbakraid_unlimited_ver == 1)
1120 				EEPROM_set_data(bbakraid_unlimited_nvram, sizeof(bbakraid_unlimited_nvram));
1121 		}
1122 	}
1123 }
1124 
READ16_HANDLER(bbakraid_nvram_r)1125 static READ16_HANDLER( bbakraid_nvram_r )
1126 {
1127 	/* Bit 1 returns the status of BUSAK from the Z80.
1128 	   BUSRQ is activated via bit 0x10 on the NVRAM write port.
1129 	   These accesses are made when the 68K wants to read the Z80
1130 	   ROM code. Failure to return the correct status incurrs a Sound Error.
1131 	*/
1132 
1133 	int data;
1134 	data  = ((EEPROM_read_bit() & 0x01) << 4);
1135 	data |= ((raizing_Z80_busreq >> 4) & 0x01);	/* Loop BUSRQ to BUSAK */
1136 
1137 	return data;
1138 }
1139 
WRITE16_HANDLER(bbakraid_nvram_w)1140 static WRITE16_HANDLER( bbakraid_nvram_w )
1141 {
1142 	if (data & ~0x001f)
1143 		logerror("CPU #0 PC:%06X - Unknown EEPROM data being written %04X\n",activecpu_get_pc(),data);
1144 
1145 	if ( ACCESSING_LSB )
1146 	{
1147 		// chip select
1148 		EEPROM_set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE );
1149 
1150 		// latch the bit
1151 		EEPROM_write_bit( (data & 0x04) >> 2 );
1152 
1153 		// clock line asserted: write latch or select next bit to read
1154 		EEPROM_set_clock_line((data & 0x08) ? ASSERT_LINE : CLEAR_LINE );
1155 	}
1156 	raizing_Z80_busreq = data & 0x10;	/* see bbakraid_nvram_r above */
1157 }
1158 
1159 
1160 /****** Battle Bakraid 68K handlers ******/
READ16_HANDLER(raizing_sndcomms_r)1161 static READ16_HANDLER ( raizing_sndcomms_r )
1162 {
1163 //	logerror("68K (PC:%06x) reading %04x from $50001%01x\n",activecpu_get_pc(),(raizing_cpu_reply[offset] & 0xff),(offset*2));
1164 	return (raizing_cpu_reply[offset] & 0xff);
1165 }
WRITE16_HANDLER(raizing_sndcomms_w)1166 static WRITE16_HANDLER ( raizing_sndcomms_w )
1167 {
1168 //	logerror("68K (PC:%06x) writing %04x to $50001%01x\n",activecpu_get_pc(),data,((offset*2)+4));
1169 	COMBINE_DATA(&raizing_cpu_comm16[offset]);
1170 
1171 	cpu_set_nmi_line(1, ASSERT_LINE);
1172 	cpu_yield();
1173 }
1174 
1175 /****** Battle Bakraid Z80 handlers ******/
READ_HANDLER(raizing_command_r)1176 static READ_HANDLER ( raizing_command_r )
1177 {
1178 	data8_t *raizing_cpu_comm = (data8_t *)raizing_cpu_comm16;
1179 
1180 	logerror("Z80 (PC:%04x) reading %02x from $48\n",activecpu_get_pc(),raizing_cpu_comm[BYTE_XOR_BE(1)]);
1181 	return raizing_cpu_comm[BYTE_XOR_BE(1)];
1182 }
READ_HANDLER(raizing_request_r)1183 static READ_HANDLER ( raizing_request_r )
1184 {
1185 	data8_t *raizing_cpu_comm = (data8_t *)raizing_cpu_comm16;
1186 
1187 	logerror("Z80 (PC:%04x) reading %02x from $4A\n",activecpu_get_pc(),raizing_cpu_comm[BYTE_XOR_BE(3)]);
1188 	return raizing_cpu_comm[BYTE_XOR_BE(3)];
1189 }
WRITE_HANDLER(raizing_command_ack_w)1190 static WRITE_HANDLER ( raizing_command_ack_w )
1191 {
1192 //	logerror("Z80 (PC:%04x) writing %02x to $40\n",activecpu_get_pc(),data);
1193 	raizing_cpu_reply[0] = data;
1194 }
WRITE_HANDLER(raizing_request_ack_w)1195 static WRITE_HANDLER ( raizing_request_ack_w )
1196 {
1197 //	logerror("Z80 (PC:%04x) writing %02x to $42\n",activecpu_get_pc(),data);
1198 	raizing_cpu_reply[1] = data;
1199 }
1200 
1201 
WRITE_HANDLER(raizing_clear_nmi_w)1202 static WRITE_HANDLER ( raizing_clear_nmi_w )
1203 {
1204 //	logerror("Clear NMI on the Z80 (Z80 PC:%06x writing %04x)\n",activecpu_get_pc(),data);
1205 	cpu_set_nmi_line(1, CLEAR_LINE);
1206 	cpu_yield();
1207 }
1208 
WRITE16_HANDLER(bbakraid_trigger_z80_irq)1209 static WRITE16_HANDLER ( bbakraid_trigger_z80_irq )
1210 {
1211 //	logerror("Triggering IRQ on the Z80 (PC:%06x)\n",activecpu_get_pc());
1212 	cpu_set_irq_line(1, 0, HOLD_LINE);
1213 	cpu_yield();
1214 }
1215 
bbakraid_irqhandler(int state)1216 static void bbakraid_irqhandler (int state)
1217 {
1218 	/* Not used ???  Connected to a test pin (TP082) */
1219 	logerror("YMZ280 is generating an interrupt. State=%08x\n",state);
1220 }
1221 
INTERRUPT_GEN(bbakraid_snd_interrupt)1222 static INTERRUPT_GEN( bbakraid_snd_interrupt )
1223 {
1224 	cpu_set_irq_line(1, 0, HOLD_LINE);
1225 }
1226 
1227 
MEMORY_READ16_START(tekipaki_readmem)1228 static MEMORY_READ16_START( tekipaki_readmem )
1229 	{ 0x000000, 0x01ffff, MRA16_ROM },
1230 	{ 0x020000, 0x03ffff, MRA16_ROM },				/* extra for Whoopee */
1231 	{ 0x080000, 0x082fff, MRA16_RAM },
1232 	{ 0x0c0000, 0x0c0fff, paletteram16_word_r },
1233 	{ 0x140004, 0x140007, toaplan2_0_videoram16_r },
1234 	{ 0x14000c, 0x14000d, toaplan2_inputport_0_word_r },	/* VBlank */
1235 	{ 0x180000, 0x180001, input_port_4_word_r },	/* Dip Switch A */
1236 	{ 0x180010, 0x180011, input_port_5_word_r },	/* Dip Switch B */
1237 	{ 0x180020, 0x180021, input_port_3_word_r },	/* Coin/System inputs */
1238 	{ 0x180030, 0x180031, c2map_port_6_r },			/* CPU 2 busy and Territory Jumper block */
1239 	{ 0x180050, 0x180051, input_port_1_word_r },	/* Player 1 controls */
1240 	{ 0x180060, 0x180061, input_port_2_word_r },	/* Player 2 controls */
1241 MEMORY_END
1242 
1243 static MEMORY_WRITE16_START( tekipaki_writemem )
1244 	{ 0x000000, 0x01ffff, MWA16_ROM },
1245 	{ 0x020000, 0x03ffff, MWA16_ROM },				/* extra for Whoopee */
1246 	{ 0x080000, 0x082fff, MWA16_RAM },
1247 	{ 0x0c0000, 0x0c0fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1248 	{ 0x140000, 0x140001, toaplan2_0_voffs_w },
1249 	{ 0x140004, 0x140007, toaplan2_0_videoram16_w },/* Tile/Sprite VideoRAM */
1250 	{ 0x140008, 0x140009, toaplan2_0_scroll_reg_select_w },
1251 	{ 0x14000c, 0x14000d, toaplan2_0_scroll_reg_data_w },
1252 	{ 0x180040, 0x180041, toaplan2_coin_word_w },	/* Coin count/lock */
1253 	{ 0x180070, 0x180071, toaplan2_hd647180_cpu_w },
1254 MEMORY_END
1255 
1256 static MEMORY_READ16_START( ghox_readmem )
1257 	{ 0x000000, 0x03ffff, MRA16_ROM },
1258 	{ 0x040000, 0x040001, ghox_p2_h_analog_r },		/* Paddle 2 */
1259 	{ 0x080000, 0x083fff, MRA16_RAM },
1260 	{ 0x0c0000, 0x0c0fff, paletteram16_word_r },
1261 	{ 0x100000, 0x100001, ghox_p1_h_analog_r },		/* Paddle 1 */
1262 	{ 0x140004, 0x140007, toaplan2_0_videoram16_r },
1263 	{ 0x14000c, 0x14000d, toaplan2_inputport_0_word_r },	/* VBlank */
1264 	{ 0x180000, 0x180001, ghox_mcu_r },				/* really part of shared RAM */
1265 	{ 0x180006, 0x180007, input_port_4_word_r },	/* Dip Switch A */
1266 	{ 0x180008, 0x180009, input_port_5_word_r },	/* Dip Switch B */
1267 	{ 0x180010, 0x180011, input_port_3_word_r },	/* Coin/System inputs */
1268 //	{ 0x18000c, 0x18000d, input_port_1_word_r },	/* Player 1 controls (real) */
1269 //	{ 0x18000e, 0x18000f, input_port_2_word_r },	/* Player 2 controls (real) */
1270 	{ 0x18000c, 0x18000d, ghox_p1_v_analog_r },		/* Player 1 controls */
1271 	{ 0x18000e, 0x18000f, ghox_p2_v_analog_r },		/* Player 2 controls */
1272 	{ 0x180500, 0x180fff, ghox_shared_ram_r },
1273 	{ 0x18100c, 0x18100d, input_port_6_word_r },	/* Territory Jumper block */
1274 MEMORY_END
1275 
1276 static MEMORY_WRITE16_START( ghox_writemem )
1277 	{ 0x000000, 0x03ffff, MWA16_ROM },
1278 	{ 0x080000, 0x083fff, MWA16_RAM },
1279 	{ 0x0c0000, 0x0c0fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1280 	{ 0x140000, 0x140001, toaplan2_0_voffs_w },
1281 	{ 0x140004, 0x140007, toaplan2_0_videoram16_w },/* Tile/Sprite VideoRAM */
1282 	{ 0x140008, 0x140009, toaplan2_0_scroll_reg_select_w },
1283 	{ 0x14000c, 0x14000d, toaplan2_0_scroll_reg_data_w },
1284 	{ 0x180000, 0x180001, ghox_mcu_w },				/* really part of shared RAM */
1285 	{ 0x180500, 0x180fff, ghox_shared_ram_w, &toaplan2_shared_ram16 },
1286 	{ 0x181000, 0x181001, toaplan2_coin_word_w },
1287 MEMORY_END
1288 
1289 static MEMORY_READ16_START( dogyuun_readmem )
1290 	{ 0x000000, 0x07ffff, MRA16_ROM },
1291 	{ 0x100000, 0x103fff, MRA16_RAM },
1292 	{ 0x200010, 0x200011, input_port_1_word_r },	/* Player 1 controls */
1293 	{ 0x200014, 0x200015, input_port_2_word_r },	/* Player 2 controls */
1294 	{ 0x200018, 0x200019, input_port_3_word_r },	/* Coin/System inputs */
1295 #if Zx80
1296 	{ 0x21e000, 0x21fbff, shared_ram_r },			/* $21f000 status port */
1297 	{ 0x21fc00, 0x21ffff, Zx80_sharedram_r },		/* 16-bit on 68000 side, 8-bit on Zx80 side */
1298 #else
1299 	{ 0x21e000, 0x21efff, shared_ram_r },
1300 	{ 0x21f000, 0x21f001, Zx80_status_port_r },		/* Zx80 status port */
1301 	{ 0x21f004, 0x21f005, input_port_4_word_r },	/* Dip Switch A */
1302 	{ 0x21f006, 0x21f007, input_port_5_word_r },	/* Dip Switch B */
1303 	{ 0x21f008, 0x21f009, input_port_6_word_r },	/* Territory Jumper block */
1304 	{ 0x21fc00, 0x21ffff, Zx80_sharedram_r },		/* 16-bit on 68000 side, 8-bit on Zx80 side */
1305 #endif
1306 	/***** The following in 0x30000x are for video controller 1 ******/
1307 	{ 0x300004, 0x300007, toaplan2_0_videoram16_r },/* tile layers */
1308 	{ 0x30000c, 0x30000d, toaplan2_inputport_0_word_r },	/* VBlank */
1309 	{ 0x400000, 0x400fff, paletteram16_word_r },
1310 	/***** The following in 0x50000x are for video controller 2 ******/
1311 	{ 0x500004, 0x500007, toaplan2_1_videoram16_r },/* tile layers 2 */
1312 	{ 0x700000, 0x700001, video_count_r },			/* test bit 8 */
1313 MEMORY_END
1314 
1315 static MEMORY_WRITE16_START( dogyuun_writemem )
1316 	{ 0x000000, 0x07ffff, MWA16_ROM },
1317 	{ 0x100000, 0x103fff, MWA16_RAM },
1318 	{ 0x200008, 0x200009, OKIM6295_data_0_lsb_w },	/// Really ?
1319 	{ 0x20001c, 0x20001d, toaplan2_coin_word_w },
1320 #if Zx80
1321 	{ 0x21e000, 0x21fbff, shared_ram_w, &toaplan2_shared_ram16 },	/* $21F000 */
1322 	{ 0x21fc00, 0x21ffff, Zx80_sharedram_w, &Zx80_shared_ram },	/* 16-bit on 68000 side, 8-bit on Zx80 side */
1323 #else
1324 	{ 0x21e000, 0x21efff, shared_ram_w, &toaplan2_shared_ram16 },
1325 	{ 0x21f000, 0x21f001, Zx80_command_port_w },	/* Zx80 command port */
1326 	{ 0x21fc00, 0x21ffff, Zx80_sharedram_w, &Zx80_shared_ram },	/* 16-bit on 68000 side, 8-bit on Zx80 side */
1327 #endif
1328 	/***** The following in 0x30000x are for video controller 1 ******/
1329 	{ 0x300000, 0x300001, toaplan2_0_voffs_w },		/* VideoRAM selector/offset */
1330 	{ 0x300004, 0x300007, toaplan2_0_videoram16_w },/* Tile/Sprite VideoRAM */
1331 	{ 0x300008, 0x300009, toaplan2_0_scroll_reg_select_w },
1332 	{ 0x30000c, 0x30000d, toaplan2_0_scroll_reg_data_w },
1333 	{ 0x400000, 0x400fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1334 	/***** The following in 0x50000x are for video controller 2 ******/
1335 	{ 0x500000, 0x500001, toaplan2_1_voffs_w },		/* VideoRAM selector/offset */
1336 	{ 0x500004, 0x500007, toaplan2_1_videoram16_w },/* Tile/Sprite VideoRAM */
1337 	{ 0x500008, 0x500009, toaplan2_1_scroll_reg_select_w },
1338 	{ 0x50000c, 0x50000d, toaplan2_1_scroll_reg_data_w },
1339 MEMORY_END
1340 
1341 static MEMORY_READ16_START( kbash_readmem )
1342 	{ 0x000000, 0x07ffff, MRA16_ROM },
1343 	{ 0x100000, 0x103fff, MRA16_RAM },
1344 	{ 0x200000, 0x200001, kbash_sub_cpu_r },
1345 	{ 0x200004, 0x200005, input_port_4_word_r },	/* Dip Switch A */
1346 	{ 0x200006, 0x200007, input_port_5_word_r },	/* Dip Switch B */
1347 	{ 0x200008, 0x200009, input_port_6_word_r },	/* Territory Jumper block */
1348 	{ 0x208010, 0x208011, input_port_1_word_r },	/* Player 1 controls */
1349 	{ 0x208014, 0x208015, input_port_2_word_r },	/* Player 2 controls */
1350 	{ 0x208018, 0x208019, input_port_3_word_r },	/* Coin/System inputs */
1351 	{ 0x300004, 0x300007, toaplan2_0_videoram16_r },/* tile layers */
1352 	{ 0x30000c, 0x30000d, toaplan2_inputport_0_word_r },	/* VBlank */
1353 	{ 0x400000, 0x400fff, paletteram16_word_r },
1354 	{ 0x700000, 0x700001, video_count_r },			/* test bit 8 */
1355 MEMORY_END
1356 
1357 static MEMORY_WRITE16_START( kbash_writemem )
1358 	{ 0x000000, 0x07ffff, MWA16_ROM },
1359 	{ 0x100000, 0x103fff, MWA16_RAM },
1360 	{ 0x200000, 0x200003, kbash_sub_cpu_w },		/* sound number to play */
1361 //	{ 0x200002, 0x200003, kbash_sub_cpu_w2 },		/* ??? */
1362 	{ 0x20801c, 0x20801d, toaplan2_coin_word_w },
1363 	{ 0x300000, 0x300001, toaplan2_0_voffs_w },
1364 	{ 0x300004, 0x300007, toaplan2_0_videoram16_w },
1365 	{ 0x300008, 0x300009, toaplan2_0_scroll_reg_select_w },
1366 	{ 0x30000c, 0x30000d, toaplan2_0_scroll_reg_data_w },
1367 	{ 0x400000, 0x400fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1368 MEMORY_END
1369 
1370 static MEMORY_READ16_START( truxton2_readmem )
1371 	{ 0x000000, 0x07ffff, MRA16_ROM },
1372 	{ 0x100000, 0x10ffff, MRA16_RAM },
1373 	{ 0x200004, 0x200007, toaplan2_0_videoram16_r },
1374 	{ 0x20000c, 0x20000d, toaplan2_inputport_0_word_r },	/* VBlank */
1375 	{ 0x300000, 0x300fff, paletteram16_word_r },
1376 	{ 0x400000, 0x401fff, toaplan2_txvideoram16_r },
1377 	{ 0x402000, 0x4021ff, toaplan2_txvideoram16_offs_r },
1378 	{ 0x402200, 0x402fff, MRA16_RAM },
1379 	{ 0x403000, 0x4031ff, toaplan2_txscrollram16_r },
1380 	{ 0x403200, 0x403fff, MRA16_RAM },
1381 	{ 0x500000, 0x50ffff, toaplan2_tx_gfxram16_r },
1382 	{ 0x600000, 0x600001, video_count_r },
1383 	{ 0x700000, 0x700001, input_port_4_word_r },	/* Dip Switch A */
1384 	{ 0x700002, 0x700003, input_port_5_word_r },	/* Dip Switch B */
1385 	{ 0x700004, 0x700005, input_port_6_word_r },	/* Territory Jumper block */
1386 	{ 0x700006, 0x700007, input_port_1_word_r },	/* Player 1 controls */
1387 	{ 0x700008, 0x700009, input_port_2_word_r },	/* Player 2 controls */
1388 	{ 0x70000a, 0x70000b, input_port_3_word_r },	/* Coin/System inputs */
1389 	{ 0x700010, 0x700011, OKIM6295_status_0_lsb_r },
1390 	{ 0x700014, 0x700015, MRA16_NOP },
1391 	{ 0x700016, 0x700017, YM2151_status_port_0_lsb_r },
1392 MEMORY_END
1393 
1394 static MEMORY_WRITE16_START( truxton2_writemem )
1395 	{ 0x000000, 0x07ffff, MWA16_ROM },
1396 	{ 0x100000, 0x10ffff, MWA16_RAM },
1397 	{ 0x200000, 0x200001, toaplan2_0_voffs_w },		/* VideoRAM selector/offset */
1398 	{ 0x200004, 0x200007, toaplan2_0_videoram16_w },
1399 	{ 0x200008, 0x200009, toaplan2_0_scroll_reg_select_w },
1400 	{ 0x20000c, 0x20000d, toaplan2_0_scroll_reg_data_w },
1401 	{ 0x300000, 0x300fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1402 	{ 0x400000, 0x401fff, toaplan2_txvideoram16_w, &toaplan2_txvideoram16, &toaplan2_tx_vram_size },
1403 	{ 0x402000, 0x4021ff, toaplan2_txvideoram16_offs_w, &toaplan2_txvideoram16_offs, &toaplan2_tx_offs_vram_size },
1404 	{ 0x402200, 0x402fff, MWA16_RAM },
1405 	{ 0x403000, 0x4031ff, toaplan2_txscrollram16_w, &toaplan2_txscrollram16, &toaplan2_tx_scroll_vram_size },
1406 	{ 0x403200, 0x403fff, MWA16_RAM },
1407 	{ 0x500000, 0x50ffff, toaplan2_tx_gfxram16_w, &toaplan2_tx_gfxram16 },
1408 	{ 0x700010, 0x700011, OKIM6295_data_0_lsb_w },
1409 	{ 0x700014, 0x700015, YM2151_register_port_0_lsb_w },
1410 	{ 0x700016, 0x700017, YM2151_data_port_0_lsb_w },
1411 	{ 0x70001e, 0x70001f, toaplan2_coin_word_w },	/* Coin count/lock */
1412 MEMORY_END
1413 
1414 static MEMORY_READ16_START( pipibibs_readmem )
1415 	{ 0x000000, 0x03ffff, MRA16_ROM },
1416 	{ 0x080000, 0x082fff, MRA16_RAM },
1417 	{ 0x0c0000, 0x0c0fff, paletteram16_word_r },
1418 	{ 0x140004, 0x140007, toaplan2_0_videoram16_r },
1419 	{ 0x14000c, 0x14000d, toaplan2_inputport_0_word_r },	/* VBlank */
1420 	{ 0x190000, 0x190fff, toaplan2_shared_r },
1421 	{ 0x19c020, 0x19c021, input_port_4_word_r },	/* Dip Switch A */
1422 	{ 0x19c024, 0x19c025, input_port_5_word_r },	/* Dip Switch B */
1423 	{ 0x19c028, 0x19c029, input_port_6_word_r },	/* Territory Jumper block */
1424 	{ 0x19c02c, 0x19c02d, input_port_3_word_r },	/* Coin/System inputs */
1425 	{ 0x19c030, 0x19c031, input_port_1_word_r },	/* Player 1 controls */
1426 	{ 0x19c034, 0x19c035, input_port_2_word_r },	/* Player 2 controls */
1427 MEMORY_END
1428 
1429 static MEMORY_WRITE16_START( pipibibs_writemem )
1430 	{ 0x000000, 0x03ffff, MWA16_ROM },
1431 	{ 0x080000, 0x082fff, MWA16_RAM },
1432 	{ 0x0c0000, 0x0c0fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1433 	{ 0x140000, 0x140001, toaplan2_0_voffs_w },
1434 	{ 0x140004, 0x140007, toaplan2_0_videoram16_w },/* Tile/Sprite VideoRAM */
1435 	{ 0x140008, 0x140009, toaplan2_0_scroll_reg_select_w },
1436 	{ 0x14000c, 0x14000d, toaplan2_0_scroll_reg_data_w },
1437 	{ 0x190000, 0x190fff, toaplan2_shared_w },
1438 	{ 0x19c01c, 0x19c01d, toaplan2_coin_word_w },	/* Coin count/lock */
1439 MEMORY_END
1440 
1441 static MEMORY_READ16_START( pipibibi_readmem )
1442 	{ 0x000000, 0x03ffff, MRA16_ROM },
1443 	{ 0x080000, 0x082fff, MRA16_RAM },
1444 	{ 0x083000, 0x0837ff, pipibibi_spriteram16_r },
1445 	{ 0x083800, 0x087fff, MRA16_RAM },
1446 	{ 0x0c0000, 0x0c0fff, paletteram16_word_r },
1447 	{ 0x120000, 0x120fff, MRA16_RAM },
1448 	{ 0x180000, 0x182fff, pipibibi_videoram16_r },
1449 	{ 0x190002, 0x190003, pipibibi_z80_status_r },	/* Z80 ready ? */
1450 	{ 0x19c020, 0x19c021, input_port_4_word_r },	/* Dip Switch A */
1451 	{ 0x19c024, 0x19c025, input_port_5_word_r },	/* Dip Switch B */
1452 	{ 0x19c028, 0x19c029, input_port_6_word_r },	/* Territory Jumper block */
1453 	{ 0x19c02c, 0x19c02d, input_port_3_word_r },	/* Coin/System inputs */
1454 	{ 0x19c030, 0x19c031, input_port_1_word_r },	/* Player 1 controls */
1455 	{ 0x19c034, 0x19c035, input_port_2_word_r },	/* Player 2 controls */
1456 MEMORY_END
1457 
1458 static MEMORY_WRITE16_START( pipibibi_writemem )
1459 	{ 0x000000, 0x03ffff, MWA16_ROM },
1460 	{ 0x080000, 0x082fff, MWA16_RAM },
1461 	{ 0x083000, 0x0837ff, pipibibi_spriteram16_w },	/* SpriteRAM */
1462 	{ 0x083800, 0x087fff, MWA16_RAM },				/* SpriteRAM (unused) */
1463 	{ 0x0c0000, 0x0c0fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1464 	{ 0x120000, 0x120fff, MWA16_RAM },				/* Copy of SpriteRAM ? */
1465 //	{ 0x13f000, 0x13f001, MWA16_NOP },				/* ??? */
1466 	{ 0x180000, 0x182fff, pipibibi_videoram16_w },	/* TileRAM */
1467 	{ 0x188000, 0x18800f, pipibibi_scroll_w },
1468 	{ 0x190010, 0x190011, pipibibi_z80_task_w },	/* Z80 task to perform */
1469 	{ 0x19c01c, 0x19c01d, toaplan2_coin_word_w },	/* Coin count/lock */
1470 MEMORY_END
1471 
1472 static MEMORY_READ16_START( fixeight_readmem )
1473 	{ 0x000000, 0x07ffff, MRA16_ROM },
1474 	{ 0x100000, 0x103fff, MRA16_RAM },
1475 	{ 0x200000, 0x200001, input_port_1_word_r },	/* Player 1 controls */
1476 	{ 0x200004, 0x200005, input_port_2_word_r },	/* Player 2 controls */
1477 	{ 0x200008, 0x200009, input_port_3_word_r },	/* Player 3 controls */
1478 	{ 0x200010, 0x200011, input_port_4_word_r },	/* Coin/System inputs */
1479 	{ 0x280000, 0x28dfff, MRA16_RAM },				/* part of shared ram ? */
1480 #if Zx80
1481 	{ 0x28e000, 0x28fbff, shared_ram_r },			/* $28f000 status port */
1482 	{ 0x28fc00, 0x28ffff, Zx80_sharedram_r },		/* 16-bit on 68000 side, 8-bit on Zx80 side */
1483 #else
1484 	{ 0x28e000, 0x28efff, shared_ram_r },
1485 	{ 0x28f000, 0x28f001, Zx80_status_port_r },		/* Zx80 status port */
1486 //	{ 0x28f002, 0x28f003, MRA16_RAM },				/* part of shared ram */
1487 //	{ 0x28f004, 0x28f005, input_port_5_word_r },	/* Dip Switch A - Wrong !!! */
1488 //	{ 0x28f006, 0x28f007, input_port_6_word_r },	/* Dip Switch B - Wrong !!! */
1489 //	{ 0x28f008, 0x28f009, input_port_7_word_r },	/* Territory Jumper block - Wrong !!! */
1490 //	{ 0x28f002, 0x28fbff, MRA16_RAM },				/* part of shared ram */
1491 	{ 0x28fc00, 0x28ffff, Zx80_sharedram_r },		/* 16-bit on 68000 side, 8-bit on Zx80 side */
1492 #endif
1493 	{ 0x300004, 0x300007, toaplan2_0_videoram16_r },
1494 	{ 0x30000c, 0x30000d, toaplan2_inputport_0_word_r },
1495 	{ 0x400000, 0x400fff, paletteram16_word_r },
1496 	{ 0x500000, 0x501fff, toaplan2_txvideoram16_r },
1497 	{ 0x502000, 0x5021ff, toaplan2_txvideoram16_offs_r },
1498 	{ 0x503000, 0x5031ff, toaplan2_txscrollram16_r },
1499 	{ 0x600000, 0x60ffff, toaplan2_tx_gfxram16_r },
1500 	{ 0x800000, 0x800001, video_count_r },
1501 MEMORY_END
1502 
1503 static MEMORY_WRITE16_START( fixeight_writemem )
1504 	{ 0x000000, 0x07ffff, MWA16_ROM },
1505 	{ 0x100000, 0x103fff, MWA16_RAM },
1506 	{ 0x20001c, 0x20001d, toaplan2_coin_word_w },	/* Coin count/lock */
1507 	{ 0x280000, 0x28dfff, MWA16_RAM },				/* part of shared ram ? */
1508 #if Zx80
1509 	{ 0x28e000, 0x28fbff, shared_ram_w, &toaplan2_shared_ram16 },	/* $28F000 */
1510 	{ 0x28fc00, 0x28ffff, Zx80_sharedram_w, &Zx80_shared_ram },	/* 16-bit on 68000 side, 8-bit on Zx80 side */
1511 #else
1512 	{ 0x28e000, 0x28efff, shared_ram_w, &toaplan2_shared_ram16 },
1513 	{ 0x28f000, 0x28f001, Zx80_command_port_w },	/* Zx80 command port */
1514 //	{ 0x28f002, 0x28f003, MWA16_RAM },				/* part of shared ram */
1515 //	{ 0x28f004, 0x28f009, MWA16_NOP },				/* part of shared ram */
1516 //	{ 0x28f002, 0x28fbff, MWA16_RAM },				/* part of shared ram */
1517 	{ 0x28fc00, 0x28ffff, Zx80_sharedram_w, &Zx80_shared_ram },	/* 16-bit on 68000 side, 8-bit on Zx80 side */
1518 #endif
1519 	{ 0x300000, 0x300001, toaplan2_0_voffs_w },		/* VideoRAM selector/offset */
1520 	{ 0x300004, 0x300007, toaplan2_0_videoram16_w },/* Tile/Sprite VideoRAM */
1521 	{ 0x300008, 0x300009, toaplan2_0_scroll_reg_select_w },
1522 	{ 0x30000c, 0x30000d, toaplan2_0_scroll_reg_data_w },
1523 	{ 0x400000, 0x400fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1524 	{ 0x500000, 0x501fff, toaplan2_txvideoram16_w, &toaplan2_txvideoram16, &toaplan2_tx_vram_size },
1525 	{ 0x502000, 0x5021ff, toaplan2_txvideoram16_offs_w, &toaplan2_txvideoram16_offs, &toaplan2_tx_offs_vram_size },
1526 	{ 0x503000, 0x5031ff, toaplan2_txscrollram16_w, &toaplan2_txscrollram16, &toaplan2_tx_scroll_vram_size },
1527 	{ 0x600000, 0x60ffff, toaplan2_tx_gfxram16_w, &toaplan2_tx_gfxram16 },
1528 MEMORY_END
1529 
1530 static MEMORY_READ16_START( vfive_readmem )
1531 	{ 0x000000, 0x07ffff, MRA16_ROM },
1532 	{ 0x100000, 0x103fff, MRA16_RAM },
1533 //	{ 0x200000, 0x20ffff, MRA16_ROM },				/* Sound ROM is here ??? */
1534 	{ 0x200010, 0x200011, input_port_1_word_r },	/* Player 1 controls */
1535 	{ 0x200014, 0x200015, input_port_2_word_r },	/* Player 2 controls */
1536 	{ 0x200018, 0x200019, input_port_3_word_r },	/* Coin/System inputs */
1537 #if Zx80
1538 	{ 0x21e000, 0x21fbff, shared_ram_r },			/* $21f000 status port */
1539 	{ 0x21fc00, 0x21ffff, Zx80_sharedram_r },		/* 16-bit on 68000 side, 8-bit on Zx80 side */
1540 #else
1541 	{ 0x21e000, 0x21efff, shared_ram_r },
1542 	{ 0x21f000, 0x21f001, Zx80_status_port_r },		/* Zx80 status port */
1543 	{ 0x21f004, 0x21f005, input_port_4_word_r },	/* Dip Switch A */
1544 	{ 0x21f006, 0x21f007, input_port_5_word_r },	/* Dip Switch B */
1545 	{ 0x21f008, 0x21f009, input_port_6_word_r },	/* Territory Jumper block */
1546 	{ 0x21fc00, 0x21ffff, Zx80_sharedram_r },		/* 16-bit on 68000 side, 8-bit on Zx80 side */
1547 #endif
1548 	{ 0x300004, 0x300007, toaplan2_0_videoram16_r },
1549 	{ 0x30000c, 0x30000d, toaplan2_inputport_0_word_r },
1550 	{ 0x400000, 0x400fff, paletteram16_word_r },
1551 	{ 0x700000, 0x700001, video_count_r },
1552 MEMORY_END
1553 
1554 static MEMORY_WRITE16_START( vfive_writemem )
1555 	{ 0x000000, 0x07ffff, MWA16_ROM },
1556 	{ 0x100000, 0x103fff, MWA16_RAM },
1557 //	{ 0x200000, 0x20ffff, MWA16_ROM },				/* Sound ROM is here ??? */
1558 	{ 0x20001c, 0x20001d, toaplan2_coin_word_w },	/* Coin count/lock */
1559 #if Zx80
1560 	{ 0x21e000, 0x21fbff, shared_ram_w, &toaplan2_shared_ram16 },	/* $21F000 */
1561 	{ 0x21fc00, 0x21ffff, Zx80_sharedram_w, &Zx80_shared_ram },	/* 16-bit on 68000 side, 8-bit on Zx80 side */
1562 #else
1563 	{ 0x21e000, 0x21efff, shared_ram_w, &toaplan2_shared_ram16 },
1564 	{ 0x21f000, 0x21f001, Zx80_command_port_w },	/* Zx80 command port */
1565 	{ 0x21fc00, 0x21ffff, Zx80_sharedram_w, &Zx80_shared_ram },	/* 16-bit on 68000 side, 8-bit on Zx80 side */
1566 #endif
1567 	{ 0x300000, 0x300001, toaplan2_0_voffs_w },		/* VideoRAM selector/offset */
1568 	{ 0x300004, 0x300007, toaplan2_0_videoram16_w },/* Tile/Sprite VideoRAM */
1569 	{ 0x300008, 0x300009, toaplan2_0_scroll_reg_select_w },
1570 	{ 0x30000c, 0x30000d, toaplan2_0_scroll_reg_data_w },
1571 	{ 0x400000, 0x400fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1572 MEMORY_END
1573 
1574 static MEMORY_READ16_START( batsugun_readmem )
1575 	{ 0x000000, 0x07ffff, MRA16_ROM },
1576 	{ 0x100000, 0x10ffff, MRA16_RAM },
1577 	{ 0x200010, 0x200011, input_port_1_word_r },	/* Player 1 controls */
1578 	{ 0x200014, 0x200015, input_port_2_word_r },	/* Player 2 controls */
1579 	{ 0x200018, 0x200019, input_port_3_word_r },	/* Coin/System inputs */
1580 	{ 0x210000, 0x21bbff, MRA16_RAM },
1581 #if Zx80
1582 	{ 0x21e000, 0x21fbff, shared_ram_r },			/* $21f000 status port */
1583 	{ 0x21fc00, 0x21ffff, Zx80_sharedram_r },		/* 16-bit on 68000 side, 8-bit on Zx80 side */
1584 #else
1585 	{ 0x21e000, 0x21efff, shared_ram_r },
1586 	{ 0x21f000, 0x21f001, Zx80_status_port_r },		/* Zx80 status port */
1587 	{ 0x21f004, 0x21f005, input_port_4_word_r },	/* Dip Switch A */
1588 	{ 0x21f006, 0x21f007, input_port_5_word_r },	/* Dip Switch B */
1589 	{ 0x21f008, 0x21f009, input_port_6_word_r },	/* Territory Jumper block */
1590 	{ 0x21fc00, 0x21ffff, Zx80_sharedram_r },		/* 16-bit on 68000 side, 8-bit on Zx80 side */
1591 #endif
1592 	/***** The following in 0x30000x are for video controller 1 ******/
1593 	{ 0x300004, 0x300007, toaplan2_0_videoram16_r },/* tile layers */
1594 	{ 0x30000c, 0x30000d, toaplan2_inputport_0_word_r },	/* VBlank */
1595 	{ 0x400000, 0x400fff, paletteram16_word_r },
1596 	/***** The following in 0x50000x are for video controller 2 ******/
1597 	{ 0x500004, 0x500007, toaplan2_1_videoram16_r },/* tile layers 2 */
1598 	{ 0x700000, 0x700001, video_count_r },
1599 MEMORY_END
1600 
1601 static MEMORY_WRITE16_START( batsugun_writemem )
1602 	{ 0x000000, 0x07ffff, MWA16_ROM },
1603 	{ 0x100000, 0x10ffff, MWA16_RAM },
1604 	{ 0x20001c, 0x20001d, toaplan2_coin_word_w },	/* Coin count/lock */
1605 	{ 0x210000, 0x21bbff, MWA16_RAM },
1606 #if Zx80
1607 	{ 0x21e000, 0x21fbff, shared_ram_w, &toaplan2_shared_ram16 },	/* $21F000 */
1608 	{ 0x21fc00, 0x21ffff, Zx80_sharedram_w, &Zx80_shared_ram },	/* 16-bit on 68000 side, 8-bit on Zx80 side */
1609 #else
1610 	{ 0x21e000, 0x21efff, shared_ram_w, &toaplan2_shared_ram16 },
1611 	{ 0x21f000, 0x21f001, Zx80_command_port_w },	/* Zx80 command port */
1612 	{ 0x21fc00, 0x21ffff, Zx80_sharedram_w, &Zx80_shared_ram },	/* 16-bit on 68000 side, 8-bit on Zx80 side */
1613 #endif
1614 	/***** The following in 0x30000x are for video controller 1 ******/
1615 	{ 0x300000, 0x300001, toaplan2_0_voffs_w },		/* VideoRAM selector/offset */
1616 	{ 0x300004, 0x300007, toaplan2_0_videoram16_w },/* Tile/Sprite VideoRAM */
1617 	{ 0x300008, 0x300009, toaplan2_0_scroll_reg_select_w },
1618 	{ 0x30000c, 0x30000d, toaplan2_0_scroll_reg_data_w },
1619 	{ 0x400000, 0x400fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1620 	/***** The following in 0x50000x are for video controller 2 ******/
1621 	{ 0x500000, 0x500001, toaplan2_1_voffs_w },		/* VideoRAM selector/offset */
1622 	{ 0x500004, 0x500007, toaplan2_1_videoram16_w },/* Tile/Sprite VideoRAM */
1623 	{ 0x500008, 0x500009, toaplan2_1_scroll_reg_select_w },
1624 	{ 0x50000c, 0x50000d, toaplan2_1_scroll_reg_data_w },
1625 MEMORY_END
1626 
1627 static MEMORY_READ16_START( snowbro2_readmem )
1628 	{ 0x000000, 0x07ffff, MRA16_ROM },
1629 	{ 0x100000, 0x10ffff, MRA16_RAM },
1630 	{ 0x300004, 0x300007, toaplan2_0_videoram16_r },/* tile layers */
1631 	{ 0x30000c, 0x30000d, toaplan2_inputport_0_word_r },	/* VBlank */
1632 	{ 0x400000, 0x400fff, paletteram16_word_r },
1633 	{ 0x500002, 0x500003, YM2151_status_port_0_lsb_r },
1634 	{ 0x600000, 0x600001, OKIM6295_status_0_lsb_r },
1635 	{ 0x700000, 0x700001, input_port_8_word_r },	/* Territory Jumper block */
1636 	{ 0x700004, 0x700005, input_port_6_word_r },	/* Dip Switch A */
1637 	{ 0x700008, 0x700009, input_port_7_word_r },	/* Dip Switch B */
1638 	{ 0x70000c, 0x70000d, input_port_1_word_r },	/* Player 1 controls */
1639 	{ 0x700010, 0x700011, input_port_2_word_r },	/* Player 2 controls */
1640 	{ 0x700014, 0x700015, input_port_3_word_r },	/* Player 3 controls */
1641 	{ 0x700018, 0x700019, input_port_4_word_r },	/* Player 4 controls */
1642 	{ 0x70001c, 0x70001d, input_port_5_word_r },	/* Coin/System inputs */
1643 MEMORY_END
1644 
1645 static MEMORY_WRITE16_START( snowbro2_writemem )
1646 	{ 0x000000, 0x07ffff, MWA16_ROM },
1647 	{ 0x100000, 0x10ffff, MWA16_RAM },
1648 	{ 0x300000, 0x300001, toaplan2_0_voffs_w },		/* VideoRAM selector/offset */
1649 	{ 0x300004, 0x300007, toaplan2_0_videoram16_w },/* Tile/Sprite VideoRAM */
1650 	{ 0x300008, 0x300009, toaplan2_0_scroll_reg_select_w },
1651 	{ 0x30000c, 0x30000d, toaplan2_0_scroll_reg_data_w },
1652 	{ 0x400000, 0x400fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1653 	{ 0x500000, 0x500001, YM2151_register_port_0_lsb_w },
1654 	{ 0x500002, 0x500003, YM2151_data_port_0_lsb_w },
1655 	{ 0x600000, 0x600001, OKIM6295_data_0_lsb_w },
1656 	{ 0x700030, 0x700031, oki_bankswitch_w },		/* Sample bank switch */
1657 	{ 0x700034, 0x700035, toaplan2_coin_word_w },	/* Coin count/lock */
1658 MEMORY_END
1659 
1660 static MEMORY_READ16_START( mahoudai_readmem )
1661 	{ 0x000000, 0x07ffff, MRA16_ROM },
1662 	{ 0x100000, 0x10ffff, MRA16_RAM },
1663 	{ 0x218000, 0x21bfff, raizing_shared_ram_r },
1664 	{ 0x21c020, 0x21c021, input_port_1_word_r },	/* Player 1 controls */
1665 	{ 0x21c024, 0x21c025, input_port_2_word_r },	/* Player 2 controls */
1666 	{ 0x21c028, 0x21c029, input_port_3_word_r },	/* Coin/System inputs */
1667 	{ 0x21c02c, 0x21c02d, input_port_4_word_r },	/* Dip Switch A */
1668 	{ 0x21c030, 0x21c031, input_port_5_word_r },	/* Dip Switch B */
1669 	{ 0x21c034, 0x21c035, input_port_6_word_r },	/* Territory Jumper block */
1670 	{ 0x21c03c, 0x21c03d, video_count_r },
1671 	{ 0x300004, 0x300007, toaplan2_0_videoram16_r },/* Tile/Sprite VideoRAM */
1672 	{ 0x30000c, 0x30000d, toaplan2_inputport_0_word_r },	/* VBlank */
1673 	{ 0x400000, 0x400fff, paletteram16_word_r },
1674 	{ 0x401000, 0x4017ff, MRA16_RAM },				/* Unused PaletteRAM */
1675 	{ 0x500000, 0x501fff, toaplan2_txvideoram16_r },
1676 	{ 0x502000, 0x5021ff, toaplan2_txvideoram16_offs_r },
1677 	{ 0x502200, 0x502fff, MRA16_RAM },
1678 	{ 0x503000, 0x5031ff, toaplan2_txscrollram16_r },
1679 	{ 0x503200, 0x503fff, MRA16_RAM },
1680 MEMORY_END
1681 
1682 static MEMORY_WRITE16_START( mahoudai_writemem )
1683 	{ 0x000000, 0x07ffff, MWA16_ROM },
1684 	{ 0x100000, 0x10ffff, MWA16_RAM },
1685 	{ 0x218000, 0x21bfff, raizing_shared_ram_w },
1686 	{ 0x21c01c, 0x21c01d, toaplan2_coin_word_w },
1687 	{ 0x300000, 0x300001, toaplan2_0_voffs_w },
1688 	{ 0x300004, 0x300007, toaplan2_0_videoram16_w },
1689 	{ 0x300008, 0x300009, toaplan2_0_scroll_reg_select_w },
1690 	{ 0x30000c, 0x30000d, toaplan2_0_scroll_reg_data_w },
1691 	{ 0x400000, 0x400fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1692 	{ 0x401000, 0x4017ff, MWA16_RAM },
1693 	{ 0x500000, 0x501fff, toaplan2_txvideoram16_w, &toaplan2_txvideoram16, &toaplan2_tx_vram_size },
1694 	{ 0x502000, 0x5021ff, toaplan2_txvideoram16_offs_w, &toaplan2_txvideoram16_offs, &toaplan2_tx_offs_vram_size },
1695 	{ 0x502200, 0x502fff, MWA16_RAM },
1696 	{ 0x503000, 0x5031ff, toaplan2_txscrollram16_w, &toaplan2_txscrollram16, &toaplan2_tx_scroll_vram_size },
1697 	{ 0x503200, 0x503fff, MWA16_RAM },
1698 MEMORY_END
1699 
1700 static MEMORY_READ16_START( shippumd_readmem )
1701 	{ 0x000000, 0x0fffff, MRA16_ROM },
1702 	{ 0x100000, 0x10ffff, MRA16_RAM },
1703 	{ 0x218000, 0x21bfff, raizing_shared_ram_r },
1704 	{ 0x21c020, 0x21c021, input_port_1_word_r },	/* Player 1 controls */
1705 	{ 0x21c024, 0x21c025, input_port_2_word_r },	/* Player 2 controls */
1706 	{ 0x21c028, 0x21c029, input_port_3_word_r },	/* Coin/System inputs */
1707 	{ 0x21c02c, 0x21c02d, input_port_4_word_r },	/* Dip Switch A */
1708 	{ 0x21c030, 0x21c031, input_port_5_word_r },	/* Dip Switch B */
1709 	{ 0x21c034, 0x21c035, input_port_6_word_r },	/* Territory Jumper block */
1710 	{ 0x21c03c, 0x21c03d, video_count_r },
1711 	{ 0x300004, 0x300007, toaplan2_0_videoram16_r },/* Tile/Sprite VideoRAM */
1712 	{ 0x30000c, 0x30000d, toaplan2_inputport_0_word_r },	/* VBlank */
1713 	{ 0x400000, 0x400fff, paletteram16_word_r },
1714 	{ 0x401000, 0x4017ff, MRA16_RAM },				/* Unused PaletteRAM */
1715 	{ 0x500000, 0x501fff, toaplan2_txvideoram16_r },
1716 	{ 0x502000, 0x5021ff, toaplan2_txvideoram16_offs_r },
1717 	{ 0x502200, 0x502fff, MRA16_RAM },
1718 	{ 0x503000, 0x5031ff, toaplan2_txscrollram16_r },
1719 	{ 0x503200, 0x503fff, MRA16_RAM },
1720 MEMORY_END
1721 
1722 static MEMORY_WRITE16_START( shippumd_writemem )
1723 	{ 0x000000, 0x0fffff, MWA16_ROM },
1724 	{ 0x100000, 0x10ffff, MWA16_RAM },
1725 	{ 0x218000, 0x21bfff, raizing_shared_ram_w },
1726 //	{ 0x21c008, 0x21c009, MWA16_NOP },				/* ??? */
1727 	{ 0x21c01c, 0x21c01d, toaplan2_coin_word_w },
1728 	{ 0x300000, 0x300001, toaplan2_0_voffs_w },
1729 	{ 0x300004, 0x300007, toaplan2_0_videoram16_w },
1730 	{ 0x300008, 0x300009, toaplan2_0_scroll_reg_select_w },
1731 	{ 0x30000c, 0x30000d, toaplan2_0_scroll_reg_data_w },
1732 	{ 0x400000, 0x400fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1733 	{ 0x401000, 0x4017ff, MWA16_RAM },
1734 	{ 0x500000, 0x501fff, toaplan2_txvideoram16_w, &toaplan2_txvideoram16, &toaplan2_tx_vram_size },
1735 	{ 0x502000, 0x5021ff, toaplan2_txvideoram16_offs_w, &toaplan2_txvideoram16_offs, &toaplan2_tx_offs_vram_size },
1736 	{ 0x502200, 0x502fff, MWA16_RAM },
1737 	{ 0x503000, 0x5031ff, toaplan2_txscrollram16_w, &toaplan2_txscrollram16, &toaplan2_tx_scroll_vram_size },
1738 	{ 0x503200, 0x503fff, MWA16_RAM },
1739 MEMORY_END
1740 
1741 static MEMORY_READ16_START( battleg_readmem )
1742 	{ 0x000000, 0x0fffff, MRA16_ROM },
1743 	{ 0x100000, 0x10ffff, MRA16_RAM },
1744 	{ 0x218020, 0x218023, battleg_z80check_r },
1745 	{ 0x21c020, 0x21c021, input_port_1_word_r },	/* Player 1 controls */
1746 	{ 0x21c024, 0x21c025, input_port_2_word_r },	/* Player 2 controls */
1747 	{ 0x21c028, 0x21c029, input_port_3_word_r },	/* Coin/System inputs */
1748 	{ 0x21c02c, 0x21c02d, input_port_4_word_r },	/* Dip Switch A */
1749 	{ 0x21c030, 0x21c031, input_port_5_word_r },	/* Dip Switch B */
1750 	{ 0x21c034, 0x21c035, input_port_6_word_r },	/* Territory Jumper block */
1751 	{ 0x21c03c, 0x21c03d, video_count_r },
1752 	{ 0x300004, 0x300007, toaplan2_0_videoram16_r },/* Tile/Sprite VideoRAM */
1753 	{ 0x30000c, 0x30000d, toaplan2_inputport_0_word_r },	/* VBlank */
1754 	{ 0x400000, 0x400fff, paletteram16_word_r },
1755 	{ 0x500000, 0x501fff, toaplan2_txvideoram16_r },
1756 	{ 0x502000, 0x5021ff, toaplan2_txvideoram16_offs_r },
1757 	{ 0x502200, 0x502fff, MRA16_RAM },
1758 	{ 0x503000, 0x5031ff, toaplan2_txscrollram16_r },
1759 	{ 0x503200, 0x503fff, MRA16_RAM },
1760 	{ 0x600000, 0x600fff, battleg_commram_r },		/* CommRAM check */
1761 MEMORY_END
1762 
1763 static MEMORY_WRITE16_START( battleg_writemem )
1764 	{ 0x000000, 0x0fffff, MWA16_ROM },
1765 	{ 0x100000, 0x10ffff, MWA16_RAM },
1766 	{ 0x21c01c, 0x21c01d, toaplan2_coin_word_w },
1767 	{ 0x300000, 0x300001, toaplan2_0_voffs_w },
1768 	{ 0x300004, 0x300007, toaplan2_0_videoram16_w },
1769 	{ 0x300008, 0x300009, toaplan2_0_scroll_reg_select_w },
1770 	{ 0x30000c, 0x30000d, toaplan2_0_scroll_reg_data_w },
1771 	{ 0x400000, 0x400fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
1772 	{ 0x500000, 0x501fff, toaplan2_txvideoram16_w, &toaplan2_txvideoram16, &toaplan2_tx_vram_size },
1773 	{ 0x502000, 0x5021ff, toaplan2_txvideoram16_offs_w, &toaplan2_txvideoram16_offs, &toaplan2_tx_offs_vram_size },
1774 	{ 0x502200, 0x502fff, MWA16_RAM },
1775 	{ 0x503000, 0x5031ff, toaplan2_txscrollram16_w, &toaplan2_txscrollram16, &toaplan2_tx_scroll_vram_size },
1776 	{ 0x503200, 0x503fff, MWA16_RAM },
1777 	{ 0x600000, 0x600fff, battleg_commram_w, &battleg_commram16 },
1778 MEMORY_END
1779 
1780 static MEMORY_READ16_START( batrider_readmem )
1781 	{ 0x000000, 0x1fffff, MRA16_ROM },
1782 	{ 0x200000, 0x201fff, toaplan2_txvideoram16_r },/* Text VideoRAM */
1783 	{ 0x202000, 0x202fff, paletteram16_word_r },
1784 	{ 0x203000, 0x2031ff, toaplan2_txvideoram16_offs_r },
1785 	{ 0x203200, 0x2033ff, toaplan2_txscrollram16_r },
1786 	{ 0x203400, 0x207fff, raizing_tx_gfxram16_r },	/* Main RAM actually */
1787 	{ 0x208000, 0x20ffff, MRA16_RAM },
1788 	{ 0x300000, 0x37ffff, raizing_z80rom_r },
1789 	{ 0x400000, 0x400001, toaplan2_inputport_0_word_r },	/* VBlank */
1790 	{ 0x400008, 0x40000b, toaplan2_0_videoram16_r },/* Tile/Sprite VideoRAM */
1791 	{ 0x500000, 0x500001, input_port_1_word_r },
1792 	{ 0x500002, 0x500003, input_port_2_word_r },
1793 	{ 0x500004, 0x500005, input_port_3_word_r },
1794 	{ 0x500006, 0x500007, video_count_r },
1795 	{ 0x500008, 0x50000b, raizing_sndcomms_r },
1796 	{ 0x50000c, 0x50000d, batrider_z80_busack_r },
1797 MEMORY_END
1798 
1799 static MEMORY_WRITE16_START( batrider_writemem )
1800 	{ 0x000000, 0x1fffff, MWA16_ROM },
1801 	{ 0x200000, 0x201fff, toaplan2_txvideoram16_w, &toaplan2_txvideoram16, &toaplan2_tx_vram_size },
1802 	{ 0x202000, 0x202fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 , &paletteram_size },
1803 	{ 0x203000, 0x2031ff, toaplan2_txvideoram16_offs_w, &toaplan2_txvideoram16_offs, &toaplan2_tx_offs_vram_size },
1804 	{ 0x203200, 0x2033ff, toaplan2_txscrollram16_w, &toaplan2_txscrollram16, &toaplan2_tx_scroll_vram_size },
1805 	{ 0x203400, 0x207fff, raizing_tx_gfxram16_w },
1806 	{ 0x208000, 0x20ffff, MWA16_RAM },
1807 	{ 0x400000, 0x400001, toaplan2_0_scroll_reg_data_w },
1808 	{ 0x400004, 0x400005, toaplan2_0_scroll_reg_select_w },
1809 	{ 0x400008, 0x40000b, toaplan2_0_videoram16_w },
1810 	{ 0x40000c, 0x40000d, toaplan2_0_voffs_w },
1811 	{ 0x500010, 0x500011, toaplan2_coin_word_w },
1812 	{ 0x500020, 0x500023, raizing_sndcomms_w, &raizing_cpu_comm16 },
1813 	{ 0x500060, 0x500061, batrider_z80_busreq_w },
1814 	{ 0x500080, 0x500081, batrider_textdata_decode },
1815 	{ 0x5000c0, 0x5000cf, batrider_objectbank_w },
1816 MEMORY_END
1817 
1818 static MEMORY_READ16_START( bbakraid_readmem )
1819 	{ 0x000000, 0x1fffff, MRA16_ROM },
1820 	{ 0x200000, 0x201fff, toaplan2_txvideoram16_r },/* Text VideoRAM */
1821 	{ 0x202000, 0x202fff, paletteram16_word_r },
1822 	{ 0x203000, 0x2031ff, toaplan2_txvideoram16_offs_r },
1823 	{ 0x203200, 0x2033ff, toaplan2_txscrollram16_r },
1824 	{ 0x203400, 0x207fff, raizing_tx_gfxram16_r },	/* Main RAM actually */
1825 	{ 0x208000, 0x20ffff, MRA16_RAM },
1826 	{ 0x300000, 0x33ffff, raizing_z80rom_r },
1827 	{ 0x400000, 0x400001, toaplan2_inputport_0_word_r },	/* VBlank */
1828 	{ 0x400008, 0x40000b, toaplan2_0_videoram16_r },/* Tile/Sprite VideoRAM */
1829 	{ 0x500000, 0x500001, input_port_1_word_r },
1830 	{ 0x500002, 0x500003, input_port_2_word_r },
1831 	{ 0x500004, 0x500005, input_port_3_word_r },
1832 	{ 0x500006, 0x500007, video_count_r },
1833 	{ 0x500010, 0x500013, raizing_sndcomms_r },
1834 	{ 0x500018, 0x500019, bbakraid_nvram_r },
1835 MEMORY_END
1836 
1837 static MEMORY_WRITE16_START( bbakraid_writemem )
1838 	{ 0x000000, 0x1fffff, MWA16_ROM },
1839 	{ 0x200000, 0x201fff, toaplan2_txvideoram16_w, &toaplan2_txvideoram16, &toaplan2_tx_vram_size },
1840 	{ 0x202000, 0x202fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 , &paletteram_size },
1841 	{ 0x203000, 0x2031ff, toaplan2_txvideoram16_offs_w, &toaplan2_txvideoram16_offs, &toaplan2_tx_offs_vram_size },
1842 	{ 0x203200, 0x2033ff, toaplan2_txscrollram16_w, &toaplan2_txscrollram16, &toaplan2_tx_scroll_vram_size },
1843 	{ 0x203400, 0x207fff, raizing_tx_gfxram16_w },
1844 	{ 0x208000, 0x20ffff, MWA16_RAM },
1845 	{ 0x400000, 0x400001, toaplan2_0_scroll_reg_data_w },
1846 	{ 0x400004, 0x400005, toaplan2_0_scroll_reg_select_w },
1847 	{ 0x400008, 0x40000b, toaplan2_0_videoram16_w },
1848 	{ 0x40000c, 0x40000d, toaplan2_0_voffs_w },
1849 	{ 0x500008, 0x500009, bbakraid_trigger_z80_irq },
1850 	{ 0x500010, 0x500011, toaplan2_coin_word_w },
1851 	{ 0x500014, 0x500017, raizing_sndcomms_w, &raizing_cpu_comm16 },
1852 	{ 0x50001e, 0x50001f, bbakraid_nvram_w },
1853 	{ 0x500080, 0x500081, batrider_textdata_decode },
1854 	{ 0x5000c0, 0x5000cf, batrider_objectbank_w },
1855 MEMORY_END
1856 
1857 
1858 
1859 static MEMORY_READ_START( sound_readmem )
1860 	{ 0x0000, 0x7fff, MRA_ROM },
1861 	{ 0x8000, 0x87ff, MRA_RAM },
1862 	{ 0xe000, 0xe000, YM3812_status_port_0_r },
1863 MEMORY_END
1864 
1865 static MEMORY_WRITE_START( sound_writemem )
1866 	{ 0x0000, 0x7fff, MWA_ROM },
1867 	{ 0x8000, 0x87ff, MWA_RAM, &toaplan2_shared_ram },
1868 	{ 0xe000, 0xe000, YM3812_control_port_0_w },
1869 	{ 0xe001, 0xe001, YM3812_write_port_0_w },
1870 MEMORY_END
1871 
1872 static MEMORY_READ_START( raizing_sound_readmem )
1873 	{ 0x0000, 0xbfff, MRA_ROM },
1874 	{ 0xc000, 0xdfff, MRA_RAM },
1875 	{ 0xe001, 0xe001, YM2151_status_port_0_r },
1876 	{ 0xe004, 0xe004, OKIM6295_status_0_r },
1877 MEMORY_END
1878 
1879 static MEMORY_WRITE_START( raizing_sound_writemem )
1880 	{ 0x0000, 0xbfff, MWA_ROM },
1881 	{ 0xc000, 0xdfff, MWA_RAM, &raizing_shared_ram },
1882 	{ 0xe000, 0xe000, YM2151_register_port_0_w },
1883 	{ 0xe001, 0xe001, YM2151_data_port_0_w },
1884 	{ 0xe004, 0xe004, OKIM6295_data_0_w },
1885 	{ 0xe00e, 0xe00e, toaplan2_coin_w },
1886 MEMORY_END
1887 
1888 static MEMORY_READ_START( battleg_sound_readmem )
1889 	{ 0x0000, 0x7fff, MRA_ROM },
1890 	{ 0x8000, 0xbfff, MRA_BANK1 },
1891 	{ 0xc000, 0xdfff, MRA_RAM },
1892 	{ 0xe001, 0xe001, YM2151_status_port_0_r },
1893 	{ 0xe004, 0xe004, OKIM6295_status_0_r },
1894 	{ 0xe01c, 0xe01d, battleg_commram_check_r0 },
1895 MEMORY_END
1896 
1897 static MEMORY_WRITE_START( battleg_sound_writemem )
1898 	{ 0x0000, 0xbfff, MWA_ROM },
1899 	{ 0xc000, 0xdfff, MWA_RAM, &raizing_shared_ram },
1900 	{ 0xe000, 0xe000, YM2151_register_port_0_w },
1901 	{ 0xe001, 0xe001, YM2151_data_port_0_w },
1902 	{ 0xe004, 0xe004, OKIM6295_data_0_w },
1903 	{ 0xe006, 0xe006, raizing_okim6295_bankselect_0 },
1904 	{ 0xe008, 0xe008, raizing_okim6295_bankselect_1 },
1905 	{ 0xe00a, 0xe00a, battleg_bankswitch_w },
1906 	{ 0xe00c, 0xe00c, battleg_commram_check_w0 },
1907 MEMORY_END
1908 
1909 static MEMORY_READ_START( batrider_sound_readmem )
1910 	{ 0x0000, 0x7fff, MRA_ROM },
1911 	{ 0x8000, 0xbfff, MRA_BANK1 },
1912 	{ 0xc000, 0xdfff, MRA_RAM },
1913 MEMORY_END
1914 
1915 static MEMORY_WRITE_START( batrider_sound_writemem )
1916 	{ 0x0000, 0xbfff, MWA_ROM },
1917 	{ 0xc000, 0xdfff, MWA_RAM },
1918 MEMORY_END
1919 
1920 static PORT_READ_START( batrider_sound_readport )
1921 	{ 0x48, 0x48, raizing_command_r },
1922 	{ 0x4a, 0x4a, raizing_request_r },
1923 	{ 0x81, 0x81, YM2151_status_port_0_r },
1924 	{ 0x82, 0x82, OKIM6295_status_0_r },
1925 	{ 0x84, 0x84, OKIM6295_status_1_r },
1926 PORT_END
1927 
1928 static PORT_WRITE_START( batrider_sound_writeport )
1929 	{ 0x40, 0x40, raizing_command_ack_w },		/* Tune control */
1930 	{ 0x42, 0x42, raizing_request_ack_w },		/* Tune to play */
1931 	{ 0x46, 0x46, raizing_clear_nmi_w },		/* Clear the NMI state */
1932 	{ 0x80, 0x80, YM2151_register_port_0_w },
1933 	{ 0x81, 0x81, YM2151_data_port_0_w },
1934 	{ 0x82, 0x82, OKIM6295_data_0_w },
1935 	{ 0x84, 0x84, OKIM6295_data_1_w },
1936 	{ 0x88, 0x88, batrider_bankswitch_w },
1937 	{ 0xc0, 0xc0, raizing_okim6295_bankselect_0 },
1938 	{ 0xc2, 0xc2, raizing_okim6295_bankselect_1 },
1939 	{ 0xc4, 0xc4, raizing_okim6295_bankselect_2 },
1940 	{ 0xc6, 0xc6, raizing_okim6295_bankselect_3 },
1941 PORT_END
1942 
1943 static MEMORY_READ_START( bbakraid_sound_readmem )
1944 	{ 0x0000, 0x7fff, MRA_ROM },
1945 	{ 0x8000, 0xbfff, MRA_BANK1 },
1946 	{ 0xc000, 0xffff, MRA_RAM },
1947 MEMORY_END
1948 
1949 static MEMORY_WRITE_START( bbakraid_sound_writemem )
1950 	{ 0x0000, 0xbfff, MWA_ROM },	/* Only 2FFFh valid code */
1951 	{ 0xc000, 0xffff, MWA_RAM },
1952 MEMORY_END
1953 
1954 static PORT_READ_START( bbakraid_sound_readport )
1955 	{ 0x48, 0x48, raizing_command_r },
1956 	{ 0x4a, 0x4a, raizing_request_r },
1957 	{ 0x81, 0x81, YMZ280B_status_0_r },
1958 PORT_END
1959 
1960 static PORT_WRITE_START( bbakraid_sound_writeport )
1961 	{ 0x40, 0x40, raizing_command_ack_w },		/* Tune control */
1962 	{ 0x42, 0x42, raizing_request_ack_w },		/* Tune to play */
1963 	{ 0x46, 0x46, raizing_clear_nmi_w },		/* Clear the NMI state */
1964 	{ 0x80, 0x80, YMZ280B_register_0_w },
1965 	{ 0x81, 0x81, YMZ280B_data_0_w },
1966 PORT_END
1967 
1968 
1969 #if HD64x180
1970 static MEMORY_READ_START( hd647180_readmem )
1971 	{ 0x0000, 0x7fff, MRA_ROM },
1972 	{ 0xfe00, 0xffff, MRA_RAM },			/* Internal 512 bytes of RAM */
1973 MEMORY_END
1974 
1975 static MEMORY_WRITE_START( hd647180_writemem )
1976 	{ 0x0000, 0x7fff, MWA_ROM },
1977 	{ 0xfe00, 0xffff, MWA_RAM },			/* Internal 512 bytes of RAM */
1978 MEMORY_END
1979 #endif
1980 
1981 
1982 #if Zx80
1983 static MEMORY_READ_START( Zx80_readmem )
1984 	{ 0x00000, 0x03fff, MRA_ROM },
1985 //	{ 0x00000, 0x007ff, MRA_RAM },			/* External shared RAM (Banked) */
1986 	{ 0x04000, 0x04000, YM2151_status_port_0_r },
1987 	{ 0x04002, 0x04002, OKIM6295_status_0_r },
1988 	{ 0x04008, 0x04008, input_port_1_r },
1989 	{ 0x0400a, 0x0400a, input_port_2_r },
1990 	{ 0x0400c, 0x0400c, input_port_3_r },
1991 	{ 0x0fe00, 0x0ffff, MRA_RAM },			/* Internal 512 bytes of RAM */
1992 	{ 0x80000, 0x87fff, MRA_RAM },			/* External shared RAM (ROM for KBASH) */
1993 MEMORY_END
1994 
1995 static MEMORY_WRITE_START( Zx80_writemem )
1996 	{ 0x00000, 0x03fff, MWA_ROM, },
1997 //	{ 0x00000, 0x007ff, MWA_RAM, },			/* External shared RAM (Banked) */
1998 	{ 0x04000, 0x04000, YM2151_register_port_0_w },
1999 	{ 0x04001, 0x04001, YM2151_data_port_0_w },
2000 	{ 0x04002, 0x04002, OKIM6295_data_0_w },
2001 	{ 0x04004, 0x04004, oki_bankswitch_w },
2002 	{ 0x0400e, 0x0400e, toaplan2_coin_w },
2003 	{ 0x0fe00, 0x0ffff, MWA_RAM },			/* Internal 512 bytes of RAM */
2004 	{ 0x80000, 0x87fff, MWA_RAM, &Zx80_sharedram },	/* External shared RAM (ROM for KBASH) */
2005 MEMORY_END
2006 
2007 static PORT_READ_START( Zx80_readport )
2008 	{ 0x0060, 0x0060, input_port_4_r },		/* Directly mapped I/O ports */
2009 	{ 0x0061, 0x0061, input_port_5_r },		/* Directly mapped I/O ports */
2010 	{ 0x0062, 0x0062, input_port_6_r },		/* Directly mapped I/O ports */
2011 PORT_END
2012 #endif
2013 
2014 
2015 
2016 /*****************************************************************************
2017 	Input Port definitions
2018 	Service input of the TOAPLAN2_SYSTEM_INPUTS is used as a Pause type input.
2019 	If you press then release the following buttons, the following occurs:
2020 	Service & P2 start            : The game will pause.
2021 	P1 start                      : The game will continue.
2022 	Service & P1 start & P2 start : The game will play in slow motion.
2023 *****************************************************************************/
2024 
2025 #define  TOAPLAN2_PLAYER_INPUT( player, button3, button4 )						\
2026 	PORT_START																	\
2027 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | player )	\
2028 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | player )	\
2029 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | player )	\
2030 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | player )	\
2031 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 | player )					\
2032 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 | player )					\
2033 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, button3 | player )						\
2034 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, button4 | player )						\
2035 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2036 
2037 #define  SNOWBRO2_PLAYER_INPUT( player, button3, button4 )						\
2038 	PORT_START																	\
2039 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | player )	\
2040 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | player )	\
2041 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | player )	\
2042 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | player )	\
2043 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 | player )					\
2044 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 | player )					\
2045 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, button3 )									\
2046 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, button4 )									\
2047 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2048 
2049 #define  TOAPLAN2_SYSTEM_INPUTS						\
2050 	PORT_START										\
2051 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SERVICE1 )\
2052 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_TILT )	\
2053 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_COIN1 )	\
2054 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_COIN2 )	\
2055 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_START1 )	\
2056 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_START2 )	\
2057 	PORT_BIT( 0xff84, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2058 
2059 #define DSWA_8											\
2060 	PORT_START		/* (4) DSWA */						\
2061 	PORT_DIPNAME( 0x01,	0x00, DEF_STR( Unused ) )		\
2062 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )			\
2063 	PORT_DIPSETTING(	0x01, DEF_STR( On ) )			\
2064 	PORT_DIPNAME( 0x02,	0x00, DEF_STR( Flip_Screen ) )	\
2065 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )			\
2066 	PORT_DIPSETTING(	0x02, DEF_STR( On ) )			\
2067 	PORT_SERVICE( 0x04,	IP_ACTIVE_HIGH )				\
2068 	PORT_DIPNAME( 0x08,	0x00, DEF_STR( Demo_Sounds ) )	\
2069 	PORT_DIPSETTING(	0x08, DEF_STR( Off ) )			\
2070 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
2071 
2072 #define EUROPEAN_COINAGE_8							\
2073 	PORT_DIPNAME( 0x30,	0x00, DEF_STR( Coin_A ) )	\
2074 	PORT_DIPSETTING(	0x30, DEF_STR( 4C_1C ) )	\
2075 	PORT_DIPSETTING(	0x20, DEF_STR( 3C_1C ) )	\
2076 	PORT_DIPSETTING(	0x10, DEF_STR( 2C_1C ) )	\
2077 	PORT_DIPSETTING(	0x00, DEF_STR( 1C_1C ) )	\
2078 	PORT_DIPNAME( 0xc0,	0x00, DEF_STR( Coin_B ) )	\
2079 	PORT_DIPSETTING(	0x00, DEF_STR( 1C_2C ) )	\
2080 	PORT_DIPSETTING(	0x40, DEF_STR( 1C_3C ) )	\
2081 	PORT_DIPSETTING(	0x80, DEF_STR( 1C_4C ) )	\
2082 	PORT_DIPSETTING(	0xc0, DEF_STR( 1C_6C ) )
2083 
2084 #define NONEUROPEAN_COINAGE_8						\
2085 	PORT_DIPNAME( 0x30,	0x00, DEF_STR( Coin_A ) )	\
2086 	PORT_DIPSETTING(	0x20, DEF_STR( 2C_1C ) )	\
2087 	PORT_DIPSETTING(	0x00, DEF_STR( 1C_1C ) )	\
2088 	PORT_DIPSETTING(	0x30, DEF_STR( 2C_3C ) )	\
2089 	PORT_DIPSETTING(	0x10, DEF_STR( 1C_2C ) )	\
2090 	PORT_DIPNAME( 0xc0,	0x00, DEF_STR( Coin_B ) )	\
2091 	PORT_DIPSETTING(	0x80, DEF_STR( 2C_1C ) )	\
2092 	PORT_DIPSETTING(	0x00, DEF_STR( 1C_1C ) )	\
2093 	PORT_DIPSETTING(	0xc0, DEF_STR( 2C_3C ) )	\
2094 	PORT_DIPSETTING(	0x40, DEF_STR( 1C_2C ) )
2095 
2096 #define EUROPEAN_COINAGE_16								\
2097 	PORT_DIPNAME( 0x0030,	0x0000, DEF_STR( Coin_A ) )	\
2098 	PORT_DIPSETTING(		0x0030, DEF_STR( 4C_1C ) )	\
2099 	PORT_DIPSETTING(		0x0020, DEF_STR( 3C_1C ) )	\
2100 	PORT_DIPSETTING(		0x0010, DEF_STR( 2C_1C ) )	\
2101 	PORT_DIPSETTING(		0x0000, DEF_STR( 1C_1C ) )	\
2102 	PORT_DIPNAME( 0x00c0,	0x0000, DEF_STR( Coin_B ) )	\
2103 	PORT_DIPSETTING(		0x0000, DEF_STR( 1C_2C ) )	\
2104 	PORT_DIPSETTING(		0x0040, DEF_STR( 1C_3C ) )	\
2105 	PORT_DIPSETTING(		0x0080, DEF_STR( 1C_4C ) )	\
2106 	PORT_DIPSETTING(		0x00c0, DEF_STR( 1C_6C ) )
2107 
2108 #define NONEUROPEAN_COINAGE_16							\
2109 	PORT_DIPNAME( 0x0030,	0x0000, DEF_STR( Coin_A ) )	\
2110 	PORT_DIPSETTING(		0x0020, DEF_STR( 2C_1C ) )	\
2111 	PORT_DIPSETTING(		0x0000, DEF_STR( 1C_1C ) )	\
2112 	PORT_DIPSETTING(		0x0030, DEF_STR( 2C_3C ) )	\
2113 	PORT_DIPSETTING(		0x0010, DEF_STR( 1C_2C ) )	\
2114 	PORT_DIPNAME( 0xc0,		0x0000, DEF_STR( Coin_B ) )	\
2115 	PORT_DIPSETTING(		0x0080, DEF_STR( 2C_1C ) )	\
2116 	PORT_DIPSETTING(		0x0000, DEF_STR( 1C_1C ) )	\
2117 	PORT_DIPSETTING(		0x00c0, DEF_STR( 2C_3C ) )	\
2118 	PORT_DIPSETTING(		0x0040, DEF_STR( 1C_2C ) )
2119 
2120 #define DIFFICULTY_8									\
2121 	PORT_DIPNAME( 0x03,	0x00, DEF_STR( Difficulty ) )	\
2122 	PORT_DIPSETTING(	0x01, "Easy" )					\
2123 	PORT_DIPSETTING(	0x00, "Medium" )				\
2124 	PORT_DIPSETTING(	0x02, "Hard" )					\
2125 	PORT_DIPSETTING(	0x03, "Hardest" )
2126 
2127 #define LIVES_8										\
2128 	PORT_DIPNAME( 0x30,	0x00, DEF_STR( Lives ) )	\
2129 	PORT_DIPSETTING(	0x30, "1" )					\
2130 	PORT_DIPSETTING(	0x20, "2" )					\
2131 	PORT_DIPSETTING(	0x00, "3" )					\
2132 	PORT_DIPSETTING(	0x10, "5" )
2133 
2134 #define DIFFICULTY_16										\
2135 	PORT_DIPNAME( 0x0003,	0x0000, DEF_STR( Difficulty ) )	\
2136 	PORT_DIPSETTING(		0x0001, "Easy" )				\
2137 	PORT_DIPSETTING(		0x0000, "Medium" )				\
2138 	PORT_DIPSETTING(		0x0002, "Hard" )				\
2139 	PORT_DIPSETTING(		0x0003, "Hardest" )
2140 
2141 #define LIVES_16										\
2142 	PORT_DIPNAME( 0x0030,	0x0000, DEF_STR( Lives ) )	\
2143 	PORT_DIPSETTING(		0x0030, "1" )				\
2144 	PORT_DIPSETTING(		0x0020, "2" )				\
2145 	PORT_DIPSETTING(		0x0000, "3" )				\
2146 	PORT_DIPSETTING(		0x0010, "5" )
2147 
2148 
2149 
2150 
2151 INPUT_PORTS_START( tekipaki )
2152 	PORT_START		/* (0) VBlank */
2153 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
2154 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2155 
2156 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN, IPT_UNKNOWN )
2157 
2158 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN, IPT_UNKNOWN )
2159 
2160 	TOAPLAN2_SYSTEM_INPUTS
2161 
2162 	DSWA_8
2163 	EUROPEAN_COINAGE_8
2164 //	NONEUROPEAN_COINAGE_8
2165 
2166 	PORT_START		/* (5) DSWB */
2167 	DIFFICULTY_8
2168 	PORT_DIPNAME( 0x04,	0x00, DEF_STR( Unused ) )
2169 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
2170 	PORT_DIPSETTING(	0x04, DEF_STR( On ) )
2171 	PORT_DIPNAME( 0x08,	0x00, DEF_STR( Unused ) )
2172 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
2173 	PORT_DIPSETTING(	0x08, DEF_STR( On ) )
2174 	PORT_DIPNAME( 0x10,	0x00, DEF_STR( Unused ) )
2175 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
2176 	PORT_DIPSETTING(	0x10, DEF_STR( On ) )
2177 	PORT_DIPNAME( 0x20,	0x00, DEF_STR( Unused ) )
2178 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
2179 	PORT_DIPSETTING(	0x20, DEF_STR( On ) )
2180 	PORT_DIPNAME( 0x40,	0x00, "Game Mode" )
2181 	PORT_DIPSETTING(	0x00, "Normal" )
2182 	PORT_DIPSETTING(	0x40, "Stop" )
2183 	PORT_DIPNAME( 0x80,	0x00, DEF_STR( Unused ) )
2184 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
2185 	PORT_DIPSETTING(	0x80, DEF_STR( On ) )
2186 
2187 	PORT_START		/* (6) Territory Jumper block */
2188 	PORT_DIPNAME( 0x0f,	0x02, "Territory" )
2189 	PORT_DIPSETTING(	0x02, "Europe" )
2190 	PORT_DIPSETTING(	0x01, "USA" )
2191 	PORT_DIPSETTING(	0x00, "Japan" )
2192 	PORT_DIPSETTING(	0x03, "Hong Kong" )
2193 	PORT_DIPSETTING(	0x05, "Taiwan" )
2194 	PORT_DIPSETTING(	0x04, "Korea" )
2195 	PORT_DIPSETTING(	0x07, "USA (Romstar)" )
2196 	PORT_DIPSETTING(	0x08, "Hong Kong (Honest Trading Co.)" )
2197 	PORT_DIPSETTING(	0x06, "Taiwan (Spacy Co. Ltd)" )
2198 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2199 INPUT_PORTS_END
2200 
2201 INPUT_PORTS_START( ghox )
2202 	PORT_START		/* (0) VBlank */
2203 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
2204 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2205 
2206 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN, IPT_UNKNOWN )
2207 
2208 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN, IPT_UNKNOWN )
2209 
2210 	TOAPLAN2_SYSTEM_INPUTS
2211 
2212 	DSWA_8
2213 	EUROPEAN_COINAGE_8
2214 //	NONEUROPEAN_COINAGE_8
2215 
2216 	PORT_START		/* (5) DSWB */
2217 	DIFFICULTY_8
2218 	PORT_DIPNAME( 0x0c,	0x00, DEF_STR( Bonus_Life ) )
2219 	PORT_DIPSETTING(	0x00, "100k and every 200k" )
2220 	PORT_DIPSETTING(	0x04, "100k and every 300k" )
2221 	PORT_DIPSETTING(	0x08, "100k only" )
2222 	PORT_DIPSETTING(	0x0c, "None" )
2223 	LIVES_8
2224 	PORT_BITX(	  0x40,	0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
2225 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
2226 	PORT_DIPSETTING(	0x40, DEF_STR( On ) )
2227 	PORT_DIPNAME( 0x80,	0x00, DEF_STR( Unused ) )
2228 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
2229 	PORT_DIPSETTING(	0x80, DEF_STR( On ) )
2230 
2231 	PORT_START		/* (6) Territory Jumper block */
2232 	PORT_DIPNAME( 0x0f,	0x02, "Territory" )
2233 	PORT_DIPSETTING(	0x02, "Europe" )
2234 	PORT_DIPSETTING(	0x01, "USA" )
2235 	PORT_DIPSETTING(	0x00, "Japan" )
2236 	PORT_DIPSETTING(	0x04, "Korea" )
2237 	PORT_DIPSETTING(	0x03, "Hong Kong (Honest Trading Co.)" )
2238 	PORT_DIPSETTING(	0x05, "Taiwan" )
2239 	PORT_DIPSETTING(	0x06, "Spain & Portugal (APM Electronics SA)" )
2240 	PORT_DIPSETTING(	0x07, "Italy (Star Electronica SRL)" )
2241 	PORT_DIPSETTING(	0x08, "UK (JP Leisure Ltd)" )
2242 	PORT_DIPSETTING(	0x0a, "Europe (Nova Apparate GMBH & Co)" )
2243 	PORT_DIPSETTING(	0x0d, "Europe (Taito Corporation Japan)" )
2244 	PORT_DIPSETTING(	0x09, "USA (Romstar)" )
2245 	PORT_DIPSETTING(	0x0b, "USA (Taito America Corporation)" )
2246 	PORT_DIPSETTING(	0x0c, "USA (Taito Corporation Japan)" )
2247 	PORT_DIPSETTING(	0x0e, "Japan (Taito Corporation)" )
2248 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2249 
2250 	PORT_START		/* (7)  Paddle 1 (left-right)  read at $100000 */
2251 	PORT_ANALOG( 0xff,	0x00, IPT_DIAL | IPF_PLAYER1, 25, 15, 0, 0xff )
2252 
2253 	PORT_START		/* (8)  Paddle 2 (left-right)  read at $040000 */
2254 	PORT_ANALOG( 0xff,	0x00, IPT_DIAL | IPF_PLAYER2, 25, 15, 0, 0xff )
2255 
2256 	PORT_START		/* (9)  Paddle 1 (fake up-down) */
2257 	PORT_ANALOG( 0xff,	0x00, IPT_DIAL_V | IPF_PLAYER1, 15, 0, 0, 0xff )
2258 
2259 	PORT_START		/* (10) Paddle 2 (fake up-down) */
2260 	PORT_ANALOG( 0xff,	0x00, IPT_DIAL_V | IPF_PLAYER2, 15, 0, 0, 0xff )
2261 INPUT_PORTS_END
2262 
2263 INPUT_PORTS_START( dogyuun )
2264 	PORT_START		/* (0) VBlank */
2265 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
2266 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2267 
2268 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_BUTTON3, IPT_UNKNOWN )
2269 
2270 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_BUTTON3, IPT_UNKNOWN )
2271 
2272 	TOAPLAN2_SYSTEM_INPUTS
2273 
2274 	PORT_START		/* (4) DSWA */
2275 	PORT_DIPNAME( 0x0001,	0x0000, DEF_STR( Free_Play) )
2276 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2277 	PORT_DIPSETTING(		0x0001, DEF_STR( On ) )
2278 	PORT_DIPNAME( 0x0002,	0x0000, DEF_STR( Flip_Screen ) )
2279 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2280 	PORT_DIPSETTING(		0x0002, DEF_STR( On ) )
2281 	PORT_SERVICE( 0x0004,	IP_ACTIVE_HIGH )		/* Service Mode */
2282 	PORT_DIPNAME( 0x0008,	0x0000, DEF_STR( Demo_Sounds ) )
2283 	PORT_DIPSETTING(		0x0008, DEF_STR( Off ) )
2284 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
2285 	EUROPEAN_COINAGE_16
2286 //	NONEUROPEAN_COINAGE_16
2287 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2288 
2289 	PORT_START		/* (5) DSWB */
2290 	DIFFICULTY_16
2291 	PORT_DIPNAME( 0x000c,	0x0000, DEF_STR( Bonus_Life ) )
2292 	PORT_DIPSETTING(		0x0004, "200k, 400k and 600k" )
2293 	PORT_DIPSETTING(		0x0000, "200k only" )
2294 	PORT_DIPSETTING(		0x0008, "400k only" )
2295 	PORT_DIPSETTING(		0x000c, "None" )
2296 	LIVES_16
2297 	PORT_BITX(	  0x0040,	0x0000, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
2298 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2299 	PORT_DIPSETTING(		0x0040, DEF_STR( On ) )
2300 	PORT_DIPNAME( 0x0080,	0x0000, "Allow Continue" )
2301 	PORT_DIPSETTING(		0x0080, DEF_STR( No ) )
2302 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
2303 
2304 	PORT_START		/* (6) Territory Jumper block */
2305 	PORT_DIPNAME( 0x0f,	0x03, "Territory" )
2306 	PORT_DIPSETTING(	0x03, "Europe" )
2307 	PORT_DIPSETTING(	0x01, "USA" )
2308 	PORT_DIPSETTING(	0x00, "Japan" )
2309 	PORT_DIPSETTING(	0x05, "Korea (Unite Trading license)" )
2310 	PORT_DIPSETTING(	0x04, "Hong Kong (Charterfield license)" )
2311 	PORT_DIPSETTING(	0x06, "Taiwan" )
2312 	PORT_DIPSETTING(	0x08, "South East Asia (Charterfield license)" )
2313 	PORT_DIPSETTING(	0x0c, "USA (Atari Games Corp license)" )
2314 	PORT_DIPSETTING(	0x0f, "Japan (Taito Corp license)" )
2315 /*	Duplicate settings
2316 	PORT_DIPSETTING(	0x0b, "Europe" )
2317 	PORT_DIPSETTING(	0x07, "USA" )
2318 	PORT_DIPSETTING(	0x0a, "Korea (Unite Trading license)" )
2319 	PORT_DIPSETTING(	0x09, "Hong Kong (Charterfield license)" )
2320 	PORT_DIPSETTING(	0x0b, "Taiwan" )
2321 	PORT_DIPSETTING(	0x0d, "South East Asia (Charterfield license)" )
2322 	PORT_DIPSETTING(	0x0c, "USA (Atari Games Corp license)" )
2323 */
2324 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )	/* bit 0x10 sound ready */
2325 INPUT_PORTS_END
2326 
2327 INPUT_PORTS_START( kbash )
2328 	PORT_START		/* (0) VBlank */
2329 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
2330 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2331 
2332 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_BUTTON3, IPT_UNKNOWN )
2333 
2334 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_BUTTON3, IPT_UNKNOWN )
2335 
2336 	TOAPLAN2_SYSTEM_INPUTS
2337 
2338 	PORT_START		/* (4) DSWA */
2339 	PORT_DIPNAME( 0x0001,	0x0000, "Continue Mode" )
2340 	PORT_DIPSETTING(		0x0000, "Normal" )
2341 	PORT_DIPSETTING(		0x0001, "Discount" )
2342 	PORT_DIPNAME( 0x0002,	0x0000, DEF_STR( Flip_Screen ) )
2343 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2344 	PORT_DIPSETTING(		0x0002, DEF_STR( On ) )
2345 	PORT_SERVICE( 0x0004,	IP_ACTIVE_HIGH )		/* Service Mode */
2346 	PORT_DIPNAME( 0x0008,	0x0000, DEF_STR( Demo_Sounds ) )
2347 	PORT_DIPSETTING(		0x0008, DEF_STR( Off ) )
2348 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
2349 	EUROPEAN_COINAGE_16
2350 //	NONEUROPEAN_COINAGE_16
2351 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2352 
2353 	PORT_START		/* (5) DSWB */
2354 	DIFFICULTY_16
2355 	PORT_DIPNAME( 0x000c,	0x0000, DEF_STR( Bonus_Life ) )
2356 	PORT_DIPSETTING(		0x0000, "100k and every 400k" )
2357 	PORT_DIPSETTING(		0x0004, "100k only" )
2358 	PORT_DIPSETTING(		0x0008, "200k only" )
2359 	PORT_DIPSETTING(		0x000c, "None" )
2360 	/* Lives are different in this game */
2361 	PORT_DIPNAME( 0x0030,	0x0000, DEF_STR( Lives ) )
2362 	PORT_DIPSETTING(		0x0030, "1" )
2363 	PORT_DIPSETTING(		0x0000, "2" )
2364 	PORT_DIPSETTING(		0x0020, "3" )
2365 	PORT_DIPSETTING(		0x0010, "4" )
2366 	PORT_BITX(	  0x0040,	0x0000, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
2367 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2368 	PORT_DIPSETTING(		0x0040, DEF_STR( On ) )
2369 	PORT_DIPNAME( 0x0080,	0x0000, "Allow Continue" )
2370 	PORT_DIPSETTING(		0x0080, DEF_STR( No ) )
2371 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
2372 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2373 
2374 	PORT_START		/* (6) Territory Jumper block */
2375 	PORT_DIPNAME( 0x000f,	0x000a, "Territory" )
2376 	PORT_DIPSETTING(		0x000a, "Europe" )
2377 	PORT_DIPSETTING(		0x0009, "USA" )
2378 	PORT_DIPSETTING(		0x0000, "Japan" )
2379 	PORT_DIPSETTING(		0x0003, "Korea" )
2380 	PORT_DIPSETTING(		0x0004, "Hong Kong" )
2381 	PORT_DIPSETTING(		0x0007, "Taiwan" )
2382 	PORT_DIPSETTING(		0x0006, "South East Asia" )
2383 	PORT_DIPSETTING(		0x0002, "Europe, USA (Atari License)" )
2384 	PORT_DIPSETTING(		0x0001, "USA, Europe (Atari License)" )
2385 	PORT_BIT( 0xfff0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2386 INPUT_PORTS_END
2387 
2388 INPUT_PORTS_START( truxton2 )
2389 	PORT_START		/* (0) VBlank */
2390 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
2391 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2392 
2393 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN, IPT_BUTTON4 )
2394 
2395 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN, IPT_BUTTON4 )
2396 
2397 	TOAPLAN2_SYSTEM_INPUTS
2398 
2399 	PORT_START		/* (4) DSWA */
2400 	PORT_DIPNAME( 0x0001,	0x0000, "Rapid Fire" )
2401 	PORT_DIPSETTING(		0x0001, DEF_STR( Off ) )
2402 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
2403 	PORT_DIPNAME( 0x0002,	0x0000, DEF_STR( Flip_Screen ) )
2404 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2405 	PORT_DIPSETTING(		0x0002, DEF_STR( On ) )
2406 	PORT_SERVICE( 0x0004,	IP_ACTIVE_HIGH )		/* Service Mode */
2407 	PORT_DIPNAME( 0x0008,	0x0000, DEF_STR( Demo_Sounds ) )
2408 	PORT_DIPSETTING(		0x0008, DEF_STR( Off ) )
2409 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
2410 	EUROPEAN_COINAGE_16
2411 //	NONEUROPEAN_COINAGE_16
2412 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2413 
2414 	PORT_START		/* (5) DSWB */
2415 	DIFFICULTY_16
2416 	PORT_DIPNAME( 0x000c,	0x0000, DEF_STR( Bonus_Life ) )
2417 	PORT_DIPSETTING(		0x0000, "70k and 200k" )
2418 	PORT_DIPSETTING(		0x0004, "100k and 250k" )
2419 	PORT_DIPSETTING(		0x0008, "100k only" )
2420 	PORT_DIPSETTING(		0x000c, "200k only" )
2421 	/* Lives are different in this game */
2422 	PORT_DIPNAME( 0x0030,	0x0000, DEF_STR( Lives ) )
2423 	PORT_DIPSETTING(		0x0030, "2" )
2424 	PORT_DIPSETTING(		0x0000, "3" )
2425 	PORT_DIPSETTING(		0x0020, "4" )
2426 	PORT_DIPSETTING(		0x0010, "5" )
2427 	PORT_BITX(	  0x0040,	0x0000, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
2428 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2429 	PORT_DIPSETTING(		0x0040, DEF_STR( On ) )
2430 	PORT_DIPNAME( 0x0080,	0x0000, "Allow Continue" )
2431 	PORT_DIPSETTING(		0x0080, DEF_STR( No ) )
2432 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
2433 
2434 	PORT_START		/* (6) Territory Jumper block */
2435 	PORT_DIPNAME( 0x07,	0x02, "Territory" )
2436 	PORT_DIPSETTING(	0x02, "Europe" )
2437 	PORT_DIPSETTING(	0x01, "USA" )
2438 	PORT_DIPSETTING(	0x00, "Japan" )
2439 	PORT_DIPSETTING(	0x03, "Hong Kong" )
2440 	PORT_DIPSETTING(	0x05, "Taiwan" )
2441 	PORT_DIPSETTING(	0x06, "Asia" )
2442 	PORT_DIPSETTING(	0x04, "Korea" )
2443 INPUT_PORTS_END
2444 
2445 INPUT_PORTS_START( pipibibs )
2446 	PORT_START		/* (0) VBlank */
2447 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
2448 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2449 
2450 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN, IPT_UNKNOWN )
2451 
2452 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN, IPT_UNKNOWN )
2453 
2454 	TOAPLAN2_SYSTEM_INPUTS
2455 
2456 	DSWA_8
2457 	EUROPEAN_COINAGE_8
2458 //	NONEUROPEAN_COINAGE_8
2459 
2460 	PORT_START		/* (5) DSWB */
2461 	DIFFICULTY_8
2462 	PORT_DIPNAME( 0x0c,	0x00, DEF_STR( Bonus_Life ) )
2463 	PORT_DIPSETTING(	0x04, "150k and every 200k" )
2464 	PORT_DIPSETTING(	0x00, "200k and every 300k" )
2465 	PORT_DIPSETTING(	0x08, "200k only" )
2466 	PORT_DIPSETTING(	0x0c, "None" )
2467 	LIVES_8
2468 	PORT_BITX(	  0x40,	0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
2469 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
2470 	PORT_DIPSETTING(	0x40, DEF_STR( On ) )
2471 	PORT_DIPNAME( 0x80,	0x00, DEF_STR( Unused ) )
2472 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
2473 	PORT_DIPSETTING(	0x80, DEF_STR( On ) )
2474 
2475 	PORT_START		/* (6) Territory Jumper block */
2476 	PORT_DIPNAME( 0x07,	0x06, "Territory" )
2477 	PORT_DIPSETTING(	0x06, "Europe" )
2478 	PORT_DIPSETTING(	0x04, "USA" )
2479 	PORT_DIPSETTING(	0x00, "Japan" )
2480 	PORT_DIPSETTING(	0x02, "Hong Kong (Honest Trading Co.)" )
2481 	PORT_DIPSETTING(	0x03, "Taiwan" )
2482 	PORT_DIPSETTING(	0x01, "Asia" )
2483 	PORT_DIPSETTING(	0x07, "Europe (Nova Apparate GMBH & Co)" )
2484 	PORT_DIPSETTING(	0x05, "USA (Romstar)" )
2485 	PORT_DIPNAME( 0x08,	0x00, "Nudity" )
2486 	PORT_DIPSETTING(	0x08, "Low" )
2487 	PORT_DIPSETTING(	0x00, "High, but censored" )
2488 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2489 INPUT_PORTS_END
2490 
2491 INPUT_PORTS_START( whoopee )
2492 	PORT_START		/* (0) VBlank */
2493 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
2494 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2495 
2496 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN, IPT_UNKNOWN )
2497 
2498 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN, IPT_UNKNOWN )
2499 
2500 	TOAPLAN2_SYSTEM_INPUTS
2501 
2502 	DSWA_8
2503 //	EUROPEAN_COINAGE_8
2504 	NONEUROPEAN_COINAGE_8
2505 
2506 	PORT_START		/* (5) DSWB */
2507 	DIFFICULTY_8
2508 	PORT_DIPNAME( 0x0c,	0x00, DEF_STR( Bonus_Life ) )
2509 	PORT_DIPSETTING(	0x04, "150k and every 200k" )
2510 	PORT_DIPSETTING(	0x00, "200k and every 300k" )
2511 	PORT_DIPSETTING(	0x08, "200k only" )
2512 	PORT_DIPSETTING(	0x0c, "None" )
2513 	LIVES_8
2514 	PORT_BITX(	  0x40,	0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
2515 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
2516 	PORT_DIPSETTING(	0x40, DEF_STR( On ) )
2517 	PORT_DIPNAME( 0x80,	0x00, DEF_STR( Unused ) )
2518 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
2519 	PORT_DIPSETTING(	0x80, DEF_STR( On ) )
2520 
2521 	PORT_START		/* (6) Territory Jumper block */
2522 	PORT_DIPNAME( 0x07,	0x00, "Territory" )
2523 	PORT_DIPSETTING(	0x06, "Europe" )
2524 	PORT_DIPSETTING(	0x04, "USA" )
2525 	PORT_DIPSETTING(	0x00, "Japan" )
2526 	PORT_DIPSETTING(	0x02, "Hong Kong (Honest Trading Co.)" )
2527 	PORT_DIPSETTING(	0x03, "Taiwan" )
2528 	PORT_DIPSETTING(	0x01, "Asia" )
2529 	PORT_DIPSETTING(	0x07, "Europe (Nova Apparate GMBH & Co)" )
2530 	PORT_DIPSETTING(	0x05, "USA (Romstar)" )
2531 	PORT_DIPNAME( 0x08,	0x08, "Nudity" )
2532 	PORT_DIPSETTING(	0x08, "Low" )
2533 	PORT_DIPSETTING(	0x00, "High, but censored" )
2534 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )	/* bit 0x10 sound ready */
2535 INPUT_PORTS_END
2536 
2537 INPUT_PORTS_START( pipibibi )
2538 	PORT_START		/* (0) VBlank */
2539 //	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )		/* This video HW */
2540 //	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )		/* doesnt wait for VBlank */
2541 
2542 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN, IPT_UNKNOWN )
2543 
2544 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN, IPT_UNKNOWN )
2545 
2546 	TOAPLAN2_SYSTEM_INPUTS
2547 
2548 	PORT_START		/* (4) DSWA */
2549 	PORT_DIPNAME( 0x01,	0x00, DEF_STR( Unused ) )
2550 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
2551 	PORT_DIPSETTING(	0x01, DEF_STR( On ) )
2552 	/* This video HW doesn't support flip screen */
2553 //	PORT_DIPNAME( 0x02,	0x00, DEF_STR( Flip_Screen ) )
2554 //	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
2555 //	PORT_DIPSETTING(	0x02, DEF_STR( On ) )
2556 	PORT_SERVICE( 0x04,	IP_ACTIVE_HIGH )		/* Service Mode */
2557 	PORT_DIPNAME( 0x08,	0x00, DEF_STR( Demo_Sounds ) )
2558 	PORT_DIPSETTING(	0x08, DEF_STR( Off ) )
2559 	PORT_DIPSETTING(	0x00, DEF_STR( On ) )
2560 //	EUROPEAN_COINAGE_8
2561 	NONEUROPEAN_COINAGE_8
2562 
2563 	PORT_START		/* (5) DSWB */
2564 	DIFFICULTY_8
2565 	PORT_DIPNAME( 0x0c,	0x00, DEF_STR( Bonus_Life ) )
2566 	PORT_DIPSETTING(	0x04, "150k and every 200k" )
2567 	PORT_DIPSETTING(	0x00, "200k and every 300k" )
2568 	PORT_DIPSETTING(	0x08, "200k only" )
2569 	PORT_DIPSETTING(	0x0c, "None" )
2570 	LIVES_8
2571 	PORT_BITX(	  0x40,	0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
2572 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
2573 	PORT_DIPSETTING(	0x40, DEF_STR( On ) )
2574 	PORT_DIPNAME( 0x80,	0x00, DEF_STR( Unused ) )
2575 	PORT_DIPSETTING(	0x00, DEF_STR( Off ) )
2576 	PORT_DIPSETTING(	0x80, DEF_STR( On ) )
2577 
2578 	PORT_START		/* (6) Territory Jumper block */
2579 	PORT_DIPNAME( 0x07,	0x05, "Territory" )
2580 	PORT_DIPSETTING(	0x07, "World (Ryouta Kikaku)" )
2581 	PORT_DIPSETTING(	0x00, "Japan (Ryouta Kikaku)" )
2582 	PORT_DIPSETTING(	0x02, "World" )
2583 	PORT_DIPSETTING(	0x05, "Europe" )
2584 	PORT_DIPSETTING(	0x04, "USA" )
2585 	PORT_DIPSETTING(	0x01, "Hong Kong (Honest Trading Co.)" )
2586 	PORT_DIPSETTING(	0x06, "Spain & Portugal (APM Electronics SA)" )
2587 //	PORT_DIPSETTING(	0x03, "World" )
2588 	PORT_DIPNAME( 0x08,	0x00, "Nudity" )
2589 	PORT_DIPSETTING(	0x08, "Low" )
2590 	PORT_DIPSETTING(	0x00, "High, but censored" )
2591 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2592 INPUT_PORTS_END
2593 
2594 INPUT_PORTS_START( fixeight )
2595 	PORT_START		/* (0) VBlank */
2596 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
2597 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2598 
2599 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN, IPT_UNKNOWN )
2600 
2601 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN, IPT_UNKNOWN )
2602 
2603 	SNOWBRO2_PLAYER_INPUT( IPF_PLAYER3, IPT_START3, IPT_UNKNOWN )
2604 
2605 	PORT_START		/* service input is a push-button marked 'Test SW' */
2606 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_COIN3 )
2607 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_TILT )
2608 	PORT_BITX(0x0004, IP_ACTIVE_HIGH, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
2609 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_COIN1 )
2610 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_COIN2 )
2611 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_START1 )
2612 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_START2 )
2613 	PORT_BIT( 0xff80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2614 
2615 #if 0
2616 	PORT_START		/* Fake input, to display message */
2617 	PORT_DIPNAME( 0x00,	0x00, "    Press service button" )
2618 	PORT_DIPSETTING(	0x00, "" )
2619 	PORT_DIPNAME( 0x00,	0x00, "  for game keeping options" )
2620 	PORT_DIPSETTING(	0x00, "" )
2621 	PORT_DIPNAME( 0x00,	0x00, "" )
2622 	PORT_DIPSETTING(	0x00, "" )
2623 #endif
2624 
2625 	PORT_START		/* (4) DSWA */
2626 	PORT_DIPNAME( 0x0001,	0x0000, "Maximum Players" )
2627 	PORT_DIPSETTING(		0x0000, "2" )
2628 	PORT_DIPSETTING(		0x0001, "3" )
2629 	PORT_DIPNAME( 0x0002,	0x0000, DEF_STR( Flip_Screen ) )
2630 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2631 	PORT_DIPSETTING(		0x0002, DEF_STR( On ) )
2632 	PORT_DIPNAME( 0x0004,	0x0004, "Shooting style" )
2633 	PORT_DIPSETTING(		0x0004, "Semi-auto" )
2634 	PORT_DIPSETTING(		0x0000, "Fully-auto" )
2635 	PORT_DIPNAME( 0x0008,	0x0000, DEF_STR( Demo_Sounds ) )
2636 	PORT_DIPSETTING(		0x0008, DEF_STR( Off ) )
2637 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
2638 	EUROPEAN_COINAGE_16
2639 //	NONEUROPEAN_COINAGE_16
2640 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2641 
2642 	PORT_START		/* (5) DSWB */
2643 	DIFFICULTY_16
2644 	PORT_DIPNAME( 0x000c,	0x0000, DEF_STR( Bonus_Life ) )
2645 	PORT_DIPSETTING(		0x0004, "300k and every 300k" )
2646 	PORT_DIPSETTING(		0x0008, "300k only" )
2647 	PORT_DIPSETTING(		0x0000, "500k and every 500k" )
2648 	PORT_DIPSETTING(		0x000c, "None" )
2649 	LIVES_16
2650 	PORT_BITX(	  0x0040,	0x0000, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
2651 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2652 	PORT_DIPSETTING(		0x0040, DEF_STR( On ) )
2653 	PORT_DIPNAME( 0x0080,	0x0000, "Allow Continue" )
2654 	PORT_DIPSETTING(		0x0080, DEF_STR( No ) )
2655 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
2656 
2657 	PORT_START		/* (6) Territory Jumper block */
2658 	PORT_DIPNAME( 0x0f,	0x09, "Territory" )
2659 	PORT_DIPSETTING(	0x09, "Europe" )
2660 	PORT_DIPSETTING(	0x08, "Europe (Taito Corp)" )
2661 	PORT_DIPSETTING(	0x0b, "USA" )
2662 	PORT_DIPSETTING(	0x0a, "USA (Taito America Corp)" )
2663 	PORT_DIPSETTING(	0x0e, "Japan" )
2664 	PORT_DIPSETTING(	0x0f, "Japan (Taito corp)" )
2665 	PORT_DIPSETTING(	0x01, "Korea" )
2666 	PORT_DIPSETTING(	0x00, "Korea (Taito Corp)" )
2667 	PORT_DIPSETTING(	0x03, "Hong Kong" )
2668 	PORT_DIPSETTING(	0x02, "Hong Kong (Taito Corp)" )
2669 	PORT_DIPSETTING(	0x05, "Taiwan" )
2670 	PORT_DIPSETTING(	0x04, "Taiwan (Taito corp)" )
2671 	PORT_DIPSETTING(	0x07, "South East Asia" )
2672 	PORT_DIPSETTING(	0x06, "South East Asia (Taito corp)" )
2673 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2674 INPUT_PORTS_END
2675 
2676 INPUT_PORTS_START( grindstm )
2677 	PORT_START		/* (0) VBlank */
2678 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
2679 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2680 
2681 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN, IPT_UNKNOWN )
2682 
2683 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN, IPT_UNKNOWN )
2684 
2685 	TOAPLAN2_SYSTEM_INPUTS
2686 
2687 	PORT_START		/* (4) DSWA */
2688 	PORT_DIPNAME( 0x0001,	0x0000, DEF_STR( Cabinet ) )
2689 	PORT_DIPSETTING(		0x0000, DEF_STR( Upright ) )
2690 	PORT_DIPSETTING(		0x0001, DEF_STR( Cocktail ) )
2691 	PORT_DIPNAME( 0x0002,	0x0000, DEF_STR( Flip_Screen ) )
2692 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2693 	PORT_DIPSETTING(		0x0002, DEF_STR( On ) )
2694 	PORT_SERVICE( 0x0004,	IP_ACTIVE_HIGH )		/* Service Mode */
2695 	PORT_DIPNAME( 0x0008,	0x0000, DEF_STR( Demo_Sounds ) )
2696 	PORT_DIPSETTING(		0x0008, DEF_STR( Off ) )
2697 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
2698 	EUROPEAN_COINAGE_16
2699 //	NONEUROPEAN_COINAGE_16
2700 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2701 
2702 	PORT_START		/* (5) DSWB */
2703 	DIFFICULTY_16
2704 	PORT_DIPNAME( 0x000c,	0x0000, DEF_STR( Bonus_Life ) )
2705 	PORT_DIPSETTING(		0x0008, "200k only" )
2706 	PORT_DIPSETTING(		0x0004, "300k and every 800k" )
2707 	PORT_DIPSETTING(		0x0000, "300k and 800k" )
2708 	PORT_DIPSETTING(		0x000c, "None" )
2709 	LIVES_16
2710 	PORT_BITX(	  0x0040,	0x0000, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
2711 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2712 	PORT_DIPSETTING(		0x0040, DEF_STR( On ) )
2713 	PORT_DIPNAME( 0x0080,	0x0000, "Allow Continue" )
2714 	PORT_DIPSETTING(		0x0080, DEF_STR( No ) )
2715 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
2716 
2717 	PORT_START		/* (6) Territory Jumper block */
2718 	PORT_DIPNAME( 0x0f,	0x08, "Territory" )
2719 	PORT_DIPSETTING(	0x08, "Europe" )
2720 	PORT_DIPSETTING(	0x0b, "USA" )
2721 	PORT_DIPSETTING(	0x01, "Korea" )
2722 	PORT_DIPSETTING(	0x03, "Hong Kong" )
2723 	PORT_DIPSETTING(	0x05, "Taiwan" )
2724 	PORT_DIPSETTING(	0x07, "South East Asia" )
2725 	PORT_DIPSETTING(	0x0a, "USA (American Sammy Corporation License)" )
2726 	PORT_DIPSETTING(	0x00, "Korea (Unite Trading License)" )
2727 	PORT_DIPSETTING(	0x02, "Hong Kong (Charterfield License)" )
2728 	PORT_DIPSETTING(	0x04, "Taiwan (Anomoto International Inc License)" )
2729 	PORT_DIPSETTING(	0x06, "South East Asia (Charterfield License)" )
2730 /*	Duplicate settings
2731 	PORT_DIPSETTING(	0x09, "Europe" )
2732 	PORT_DIPSETTING(	0x0d, "USA" )
2733 	PORT_DIPSETTING(	0x0e, "Korea" )
2734 	PORT_DIPSETTING(	0x0f, "Korea" )
2735 	PORT_DIPSETTING(	0x0c, "USA (American Sammy Corporation License)" )
2736 */
2737 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )	/* bit 0x10 sound ready */
2738 INPUT_PORTS_END
2739 
2740 INPUT_PORTS_START( vfive )
2741 	PORT_START		/* (0) VBlank */
2742 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
2743 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2744 
2745 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN, IPT_UNKNOWN )
2746 
2747 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN, IPT_UNKNOWN )
2748 
2749 	TOAPLAN2_SYSTEM_INPUTS
2750 
2751 	PORT_START		/* (4) DSWA */
2752 	PORT_DIPNAME( 0x0001,	0x0000, DEF_STR( Cabinet ) )
2753 	PORT_DIPSETTING(		0x0000, DEF_STR( Upright ) )
2754 	PORT_DIPSETTING(		0x0001, DEF_STR( Cocktail ) )
2755 	PORT_DIPNAME( 0x0002,	0x0000, DEF_STR( Flip_Screen ) )
2756 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2757 	PORT_DIPSETTING(		0x0002, DEF_STR( On ) )
2758 	PORT_SERVICE( 0x0004,	IP_ACTIVE_HIGH )		/* Service Mode */
2759 	PORT_DIPNAME( 0x0008,	0x0000, DEF_STR( Demo_Sounds ) )
2760 	PORT_DIPSETTING(		0x0008, DEF_STR( Off ) )
2761 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
2762 	NONEUROPEAN_COINAGE_16
2763 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2764 
2765 	PORT_START		/* (5) DSWB */
2766 	DIFFICULTY_16
2767 	PORT_DIPNAME( 0x000c,	0x0000, DEF_STR( Bonus_Life ) )
2768 	PORT_DIPSETTING(		0x0008, "200k only" )
2769 	PORT_DIPSETTING(		0x0004, "300k and every 800k" )
2770 	PORT_DIPSETTING(		0x0000, "300k and 800k" )
2771 	PORT_DIPSETTING(		0x000c, "None" )
2772 	LIVES_16
2773 	PORT_BITX(	  0x0040,	0x0000, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
2774 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2775 	PORT_DIPSETTING(		0x0040, DEF_STR( On ) )
2776 	PORT_DIPNAME( 0x0080,	0x0000, "Allow Continue" )
2777 	PORT_DIPSETTING(		0x0080, DEF_STR( No ) )
2778 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
2779 
2780 	PORT_START		/* (6) Territory Jumper block */
2781 	/* Territory is forced to Japan in this set. */
2782 	PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )	/* bit 0x10 sound ready */
2783 INPUT_PORTS_END
2784 
2785 INPUT_PORTS_START( batsugun )
2786 	PORT_START		/* (0) VBlank */
2787 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
2788 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2789 
2790 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN, IPT_UNKNOWN )
2791 
2792 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN, IPT_UNKNOWN )
2793 
2794 	TOAPLAN2_SYSTEM_INPUTS
2795 
2796 	PORT_START		/* (4) DSWA */
2797 	PORT_DIPNAME( 0x0001,	0x0000, "Continue Mode" )
2798 	PORT_DIPSETTING(		0x0000, "Normal" )
2799 	PORT_DIPSETTING(		0x0001, "Discount" )
2800 	PORT_DIPNAME( 0x0002,	0x0000, DEF_STR( Flip_Screen ) )
2801 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2802 	PORT_DIPSETTING(		0x0002, DEF_STR( On ) )
2803 	PORT_SERVICE( 0x0004,	IP_ACTIVE_HIGH )		/* Service Mode */
2804 	PORT_DIPNAME( 0x0008,	0x0000, DEF_STR( Demo_Sounds ) )
2805 	PORT_DIPSETTING(		0x0008, DEF_STR( Off ) )
2806 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
2807 	EUROPEAN_COINAGE_16
2808 //	NONEUROPEAN_COINAGE_16
2809 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2810 
2811 	PORT_START		/* (5) DSWB */
2812 	DIFFICULTY_16
2813 	PORT_DIPNAME( 0x000c,	0x0000, DEF_STR( Bonus_Life ) )
2814 	PORT_DIPSETTING(		0x0004, "500k and every 600k" )
2815 	PORT_DIPSETTING(		0x0000, "1000k only" )
2816 	PORT_DIPSETTING(		0x0008, "1500k only" )
2817 	PORT_DIPSETTING(		0x000c, "None" )
2818 	LIVES_16
2819 	PORT_BITX(	  0x0040,	0x0000, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
2820 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2821 	PORT_DIPSETTING(		0x0040, DEF_STR( On ) )
2822 	PORT_DIPNAME( 0x0080,	0x0000, "Allow Continue" )
2823 	PORT_DIPSETTING(		0x0080, DEF_STR( No ) )
2824 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
2825 
2826 	PORT_START		/* (6) Territory Jumper block */
2827 	PORT_DIPNAME( 0x000f,	0x0009, "Territory" )
2828 	PORT_DIPSETTING(		0x0009, "Europe" )
2829 	PORT_DIPSETTING(		0x000b, "USA" )
2830 	PORT_DIPSETTING(		0x000e, "Japan" )
2831 //	PORT_DIPSETTING(		0x000f, "Japan" )
2832 	PORT_DIPSETTING(		0x0001, "Korea" )
2833 	PORT_DIPSETTING(		0x0003, "Hong Kong" )
2834 	PORT_DIPSETTING(		0x0005, "Taiwan" )
2835 	PORT_DIPSETTING(		0x0007, "South East Asia" )
2836 	PORT_DIPSETTING(		0x0008, "Europe (Taito Corp License)" )
2837 	PORT_DIPSETTING(		0x000a, "USA (Taito Corp License)" )
2838 	PORT_DIPSETTING(		0x000c, "Japan (Taito Corp License)" )
2839 //	PORT_DIPSETTING(		0x000d, "Japan (Taito Corp License)" )
2840 	PORT_DIPSETTING(		0x0000, "Korea (Unite Trading License)" )
2841 	PORT_DIPSETTING(		0x0002, "Hong Kong (Taito Corp License)" )
2842 	PORT_DIPSETTING(		0x0004, "Taiwan (Taito Corp License)" )
2843 	PORT_DIPSETTING(		0x0006, "South East Asia (Taito Corp License)" )
2844 	PORT_BIT( 0xfff0, IP_ACTIVE_HIGH, IPT_UNKNOWN )	/* bit 0x10 sound ready */
2845 INPUT_PORTS_END
2846 
2847 INPUT_PORTS_START( snowbro2 )
2848 	PORT_START		/* (0) VBlank */
2849 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
2850 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2851 
2852 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN, IPT_UNKNOWN )
2853 
2854 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN, IPT_UNKNOWN )
2855 
2856 	SNOWBRO2_PLAYER_INPUT( IPF_PLAYER3, IPT_START3, IPT_UNKNOWN )
2857 
2858 	SNOWBRO2_PLAYER_INPUT( IPF_PLAYER4, IPT_START4, IPT_UNKNOWN )
2859 
2860 	TOAPLAN2_SYSTEM_INPUTS
2861 
2862 	PORT_START		/* (6) DSWA */
2863 	PORT_DIPNAME( 0x0001,	0x0000, "Continue Mode" )
2864 	PORT_DIPSETTING(		0x0000, "Normal" )
2865 	PORT_DIPSETTING(		0x0001, "Discount" )
2866 	PORT_DIPNAME( 0x0002,	0x0000, DEF_STR( Flip_Screen ) )
2867 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2868 	PORT_DIPSETTING(		0x0002, DEF_STR( On ) )
2869 	PORT_SERVICE( 0x0004,	IP_ACTIVE_HIGH )		/* Service Mode */
2870 	PORT_DIPNAME( 0x0008,	0x0000, DEF_STR( Demo_Sounds ) )
2871 	PORT_DIPSETTING(		0x0008, DEF_STR( Off ) )
2872 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
2873 	NONEUROPEAN_COINAGE_16
2874 	/*  The following are listed in service mode for European territory,
2875 		but are not actually used in game play. */
2876 //	EUROPEAN_COINAGE_16
2877 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2878 
2879 	PORT_START		/* (7) DSWB */
2880 	DIFFICULTY_16
2881 	PORT_DIPNAME( 0x000c,	0x0000, DEF_STR( Bonus_Life ) )
2882 	PORT_DIPSETTING(		0x0004, "100k and every 500k" )
2883 	PORT_DIPSETTING(		0x0000, "100k only" )
2884 	PORT_DIPSETTING(		0x0008, "200k only" )
2885 	PORT_DIPSETTING(		0x000c, "None" )
2886 	/* Lives have one different value */
2887 	PORT_DIPNAME( 0x0030,	0x0000, DEF_STR( Lives ) )
2888 	PORT_DIPSETTING(		0x0030, "1" )
2889 	PORT_DIPSETTING(		0x0020, "2" )
2890 	PORT_DIPSETTING(		0x0000, "3" )
2891 	PORT_DIPSETTING(		0x0010, "4" )
2892 	PORT_BITX(	  0x0040,	0x0000, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
2893 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2894 	PORT_DIPSETTING(		0x0040, DEF_STR( On ) )
2895 	PORT_DIPNAME( 0x0080,	0x0000, "Maximum Players" )
2896 	PORT_DIPSETTING(		0x0080, "2" )
2897 	PORT_DIPSETTING(		0x0000, "4" )
2898 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2899 
2900 	PORT_START		/* (8) Territory Jumper block */
2901 	PORT_DIPNAME( 0x1c00,	0x0800, "Territory" )
2902 	PORT_DIPSETTING(		0x0800, "Europe" )
2903 	PORT_DIPSETTING(		0x0400, "USA" )
2904 	PORT_DIPSETTING(		0x0000, "Japan" )
2905 	PORT_DIPSETTING(		0x0c00, "Korea" )
2906 	PORT_DIPSETTING(		0x1000, "Hong Kong" )
2907 	PORT_DIPSETTING(		0x1400, "Taiwan" )
2908 	PORT_DIPSETTING(		0x1800, "South East Asia" )
2909 	PORT_DIPSETTING(		0x1c00, DEF_STR( Unused ) )
2910 	PORT_DIPNAME( 0x2000,	0x0000, "Show All Rights Reserved" )
2911 	PORT_DIPSETTING(		0x0000, DEF_STR( No ) )
2912 	PORT_DIPSETTING(		0x2000, DEF_STR( Yes ) )
2913 	PORT_BIT( 0xc3ff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2914 INPUT_PORTS_END
2915 
2916 INPUT_PORTS_START( sstriker )
2917 	PORT_START		/* (0) VBlank */
2918 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
2919 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2920 
2921 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN, IPT_UNKNOWN )
2922 
2923 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN, IPT_UNKNOWN )
2924 
2925 	TOAPLAN2_SYSTEM_INPUTS
2926 
2927 	PORT_START		/* (4) DSWA */
2928 	PORT_DIPNAME( 0x0001,	0x0000, DEF_STR( Free_Play ) )
2929 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2930 	PORT_DIPSETTING(		0x0001, DEF_STR( On ) )
2931 	PORT_DIPNAME( 0x0002,	0x0000, DEF_STR( Flip_Screen ) )
2932 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2933 	PORT_DIPSETTING(		0x0002, DEF_STR( On ) )
2934 	PORT_SERVICE( 0x0004,	IP_ACTIVE_HIGH )		/* Service Mode */
2935 	PORT_DIPNAME( 0x0008,	0x0000, DEF_STR( Demo_Sounds ) )
2936 	PORT_DIPSETTING(		0x0008, DEF_STR( Off ) )
2937 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
2938 	NONEUROPEAN_COINAGE_16
2939 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2940 
2941 	PORT_START		/* (5) DSWB */
2942 	DIFFICULTY_16
2943 	PORT_DIPNAME( 0x000c,	0x0000, DEF_STR( Bonus_Life ) )
2944 	PORT_DIPSETTING(		0x0004, "200k and 500k" )
2945 	PORT_DIPSETTING(		0x0000, "Every 300k" )
2946 	PORT_DIPSETTING(		0x0008, "200k only" )
2947 	PORT_DIPSETTING(		0x000c, "None" )
2948 	LIVES_16
2949 	PORT_BITX(	  0x0040,	0x0000, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
2950 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2951 	PORT_DIPSETTING(		0x0040, DEF_STR( On ) )
2952 	PORT_DIPNAME( 0x0080,	0x0000, "Allow Continue" )
2953 	PORT_DIPSETTING(		0x0080, DEF_STR( No ) )
2954 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
2955 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2956 
2957 	PORT_START		/* (6) Territory Jumper block */
2958 	PORT_DIPNAME( 0x000e,	0x0004, "Territory" )
2959 	PORT_DIPSETTING(		0x0004, "Europe" )
2960 	PORT_DIPSETTING(		0x0002, "USA" )
2961 	PORT_DIPSETTING(		0x0000, "Japan" )
2962 	PORT_DIPSETTING(		0x0006, "South East Asia" )
2963 	PORT_DIPSETTING(		0x0008, "China" )
2964 	PORT_DIPSETTING(		0x000a, "Korea" )
2965 	PORT_DIPSETTING(		0x000c, "Hong Kong" )
2966 	PORT_DIPSETTING(		0x000e, "Taiwan" )
2967 
2968 	PORT_BIT( 0xfff1, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2969 INPUT_PORTS_END
2970 
2971 INPUT_PORTS_START( mahoudai )
2972 	PORT_START		/* (0) VBlank */
2973 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
2974 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2975 
2976 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN, IPT_UNKNOWN )
2977 
2978 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN, IPT_UNKNOWN )
2979 
2980 	TOAPLAN2_SYSTEM_INPUTS
2981 
2982 	PORT_START		/* (4) DSWA */
2983 	PORT_DIPNAME( 0x0001,	0x0000, DEF_STR( Free_Play ) )
2984 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2985 	PORT_DIPSETTING(		0x0001, DEF_STR( On ) )
2986 	PORT_DIPNAME( 0x0002,	0x0000, DEF_STR( Flip_Screen ) )
2987 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
2988 	PORT_DIPSETTING(		0x0002, DEF_STR( On ) )
2989 	PORT_SERVICE( 0x0004,	IP_ACTIVE_HIGH )		/* Service Mode */
2990 	PORT_DIPNAME( 0x0008,	0x0000, DEF_STR( Demo_Sounds ) )
2991 	PORT_DIPSETTING(		0x0008, DEF_STR( Off ) )
2992 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
2993 	NONEUROPEAN_COINAGE_16
2994 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2995 
2996 	PORT_START		/* (5) DSWB */
2997 	DIFFICULTY_16
2998 	PORT_DIPNAME( 0x000c,	0x0000, DEF_STR( Bonus_Life ) )
2999 	PORT_DIPSETTING(		0x0004, "200k and 500k" )
3000 	PORT_DIPSETTING(		0x0000, "Every 300k" )
3001 	PORT_DIPSETTING(		0x0008, "200k only" )
3002 	PORT_DIPSETTING(		0x000c, "None" )
3003 	LIVES_16
3004 	PORT_BITX(	  0x0040,	0x0000, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
3005 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3006 	PORT_DIPSETTING(		0x0040, DEF_STR( On ) )
3007 	PORT_DIPNAME( 0x0080,	0x0000, "Allow Continue" )
3008 	PORT_DIPSETTING(		0x0080, DEF_STR( No ) )
3009 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
3010 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3011 
3012 	PORT_START		/* (6) Territory Jumper block */
3013 	/* not used, it seems. This setting forces Japan for Territory */
3014 	PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3015 INPUT_PORTS_END
3016 
3017 INPUT_PORTS_START( kingdmgp )
3018 	PORT_START		/* (0) VBlank */
3019 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
3020 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3021 
3022 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN, IPT_UNKNOWN )
3023 
3024 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN, IPT_UNKNOWN )
3025 
3026 	TOAPLAN2_SYSTEM_INPUTS
3027 
3028 	PORT_START		/* (4) DSWA */
3029 	PORT_DIPNAME( 0x0001,	0x0000, DEF_STR( Free_Play ) )
3030 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3031 	PORT_DIPSETTING(		0x0001, DEF_STR( On ) )
3032 	PORT_DIPNAME( 0x0002,	0x0000, DEF_STR( Flip_Screen ) )
3033 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3034 	PORT_DIPSETTING(		0x0002, DEF_STR( On ) )
3035 	PORT_SERVICE( 0x0004,	IP_ACTIVE_HIGH )		/* Service Mode */
3036 	PORT_DIPNAME( 0x0008,	0x0000, DEF_STR( Demo_Sounds ) )
3037 	PORT_DIPSETTING(		0x0008, DEF_STR( Off ) )
3038 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
3039 	NONEUROPEAN_COINAGE_16
3040 	/*  When Territory is set to Europe, the Coin A and B have
3041 		different values */
3042 //	EUROPEAN_COINAGE_16
3043 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3044 
3045 	PORT_START		/* (5) DSWB */
3046 	DIFFICULTY_16
3047 	PORT_DIPNAME( 0x000c,	0x0000, DEF_STR( Bonus_Life ) )
3048 	PORT_DIPSETTING(		0x0004, "200k and 500k" )
3049 	PORT_DIPSETTING(		0x0000, "Every 300k" )
3050 	PORT_DIPSETTING(		0x0008, "200k only" )
3051 	PORT_DIPSETTING(		0x000c, "None" )
3052 	LIVES_16
3053 	PORT_BITX(	  0x0040,	0x0000, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
3054 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3055 	PORT_DIPSETTING(		0x0040, DEF_STR( On ) )
3056 	PORT_DIPNAME( 0x0080,	0x0000, "Allow Continue" )
3057 	PORT_DIPSETTING(		0x0080, DEF_STR( No ) )
3058 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
3059 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3060 
3061 	PORT_START		/* (6) Territory Jumper block */
3062 	/* Title screen is wrong when set to Japan for Territory */
3063 	PORT_DIPNAME( 0x000e,	0x0004, "Territory" )
3064 	PORT_DIPSETTING(		0x0004, "Europe" )
3065 	PORT_DIPSETTING(		0x0002, "USA" )
3066 //	PORT_DIPSETTING(		0x0000, "Japan" )
3067 	PORT_DIPSETTING(		0x0006, "South East Asia" )
3068 	PORT_DIPSETTING(		0x0008, "China" )
3069 	PORT_DIPSETTING(		0x000a, "Korea" )
3070 	PORT_DIPSETTING(		0x000c, "Hong Kong" )
3071 	PORT_DIPSETTING(		0x000e, "Taiwan" )
3072 	PORT_BIT( 0xfff1, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3073 INPUT_PORTS_END
3074 
3075 INPUT_PORTS_START( shippumd )
3076 	PORT_START		/* (0) VBlank */
3077 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
3078 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3079 
3080 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_UNKNOWN, IPT_UNKNOWN )
3081 
3082 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_UNKNOWN, IPT_UNKNOWN )
3083 
3084 	TOAPLAN2_SYSTEM_INPUTS
3085 
3086 	PORT_START		/* (4) DSWA */
3087 	PORT_DIPNAME( 0x0001,	0x0000, DEF_STR( Free_Play ) )
3088 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3089 	PORT_DIPSETTING(		0x0001, DEF_STR( On ) )
3090 	PORT_DIPNAME( 0x0002,	0x0000, DEF_STR( Flip_Screen ) )
3091 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3092 	PORT_DIPSETTING(		0x0002, DEF_STR( On ) )
3093 	PORT_SERVICE( 0x0004,	IP_ACTIVE_HIGH )		/* Service Mode */
3094 	PORT_DIPNAME( 0x0008,	0x0000, DEF_STR( Demo_Sounds ) )
3095 	PORT_DIPSETTING(		0x0008, DEF_STR( Off ) )
3096 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
3097 	NONEUROPEAN_COINAGE_16
3098 	/*  When Territory is set to Europe, the Coin A and B have
3099 		different values */
3100 //	EUROPEAN_COINAGE_16
3101 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3102 
3103 	PORT_START		/* (5) DSWB */
3104 	DIFFICULTY_16
3105 	PORT_DIPNAME( 0x000c,	0x0000, DEF_STR( Bonus_Life ) )
3106 	PORT_DIPSETTING(		0x0004, "200k and 500k" )
3107 	PORT_DIPSETTING(		0x0000, "Every 300k" )
3108 	PORT_DIPSETTING(		0x0008, "200k only" )
3109 	PORT_DIPSETTING(		0x000c, "None" )
3110 	LIVES_16
3111 	PORT_BITX(	  0x0040,	0x0000, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
3112 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3113 	PORT_DIPSETTING(		0x0040, DEF_STR( On ) )
3114 	PORT_DIPNAME( 0x0080,	0x0000, "Allow Continue" )
3115 	PORT_DIPSETTING(		0x0080, DEF_STR( No ) )
3116 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
3117 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3118 
3119 	PORT_START		/* (6) Territory Jumper block */
3120 	 /* Title screen is corrupt for anything but Japan setting so this forces it to Japan */
3121 	PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3122 INPUT_PORTS_END
3123 
3124 INPUT_PORTS_START( battleg )
3125 	PORT_START		/* (0) VBlank */
3126 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
3127 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3128 
3129 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_BUTTON3, IPT_UNKNOWN )
3130 
3131 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_BUTTON3, IPT_UNKNOWN )
3132 
3133 	TOAPLAN2_SYSTEM_INPUTS
3134 
3135 	PORT_START		/* (4) DSWA */
3136 	PORT_SERVICE( 0x0001,	IP_ACTIVE_HIGH )		/* Service Mode */
3137 	PORT_DIPNAME( 0x0002,	0x0000, "Credits to Start" )
3138 	PORT_DIPSETTING(		0x0000, "1" )
3139 	PORT_DIPSETTING(		0x0002, "2" )
3140 	PORT_DIPNAME( 0x001c,	0x0000, DEF_STR( Coin_A ) )
3141 	PORT_DIPSETTING(		0x0018, DEF_STR( 4C_1C ) )
3142 	PORT_DIPSETTING(		0x0014, DEF_STR( 3C_1C ) )
3143 	PORT_DIPSETTING(		0x0010, DEF_STR( 2C_1C ) )
3144 	PORT_DIPSETTING(		0x0000, DEF_STR( 1C_1C ) )
3145 	PORT_DIPSETTING(		0x0004, DEF_STR( 1C_2C ) )
3146 	PORT_DIPSETTING(		0x0008, DEF_STR( 1C_3C ) )
3147 	PORT_DIPSETTING(		0x000c, DEF_STR( 1C_4C ) )
3148 	PORT_DIPSETTING(		0x001c, DEF_STR( Free_Play ) )
3149 	PORT_DIPNAME( 0x00e0,	0x0000, DEF_STR( Coin_B ) )
3150 	PORT_DIPSETTING(		0x00c0, DEF_STR( 4C_1C ) )
3151 	PORT_DIPSETTING(		0x00a0, DEF_STR( 3C_1C ) )
3152 	PORT_DIPSETTING(		0x0080, DEF_STR( 2C_1C ) )
3153 	PORT_DIPSETTING(		0x0000, DEF_STR( 1C_1C ) )
3154 	PORT_DIPSETTING(		0x0020, DEF_STR( 1C_2C ) )
3155 	PORT_DIPSETTING(		0x0040, DEF_STR( 1C_3C ) )
3156 	PORT_DIPSETTING(		0x0060, DEF_STR( 1C_4C ) )
3157 //	PORT_DIPSETTING(		0x00e0, DEF_STR( 1C_1C ) )
3158 	/*  When Coin_A is set to Free_Play, Coin_A becomes Coin_A and Coin_B,
3159 		and Coin_B becomes the following dips */
3160 //	PORT_DIPNAME( 0x0020,	0x0000, "Joystick Mode" )
3161 //	PORT_DIPSETTING(		0x0000, "90 degrees ACW" )
3162 //	PORT_DIPSETTING(		0x0020, "Normal" )
3163 //	PORT_DIPNAME( 0x0040,	0x0000, "Effect" )
3164 //	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3165 //	PORT_DIPSETTING(		0x0040, DEF_STR( On ) )
3166 //	PORT_DIPNAME( 0x0080,	0x0000, "Music" )
3167 //	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3168 //	PORT_DIPSETTING(		0x0080, DEF_STR( On ) )
3169 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3170 
3171 	PORT_START		/* (5) DSWB */
3172 	DIFFICULTY_16
3173 	PORT_DIPNAME( 0x0004,	0x0000, DEF_STR( Flip_Screen ) )
3174 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3175 	PORT_DIPSETTING(		0x0004, DEF_STR( On ) )
3176 	PORT_DIPNAME( 0x0008,	0x0000, DEF_STR( Demo_Sounds ) )
3177 	PORT_DIPSETTING(		0x0008, DEF_STR( Off ) )
3178 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
3179 	PORT_DIPNAME( 0x0070,	0x0000, DEF_STR( Lives ) )
3180 	PORT_DIPSETTING(		0x0030, "1" )
3181 	PORT_DIPSETTING(		0x0020, "2" )
3182 	PORT_DIPSETTING(		0x0000, "3" )
3183 	PORT_DIPSETTING(		0x0010, "4" )
3184 	PORT_DIPSETTING(		0x0040, "5" )
3185 	PORT_DIPSETTING(		0x0050, "6" )
3186 	PORT_BITX( 0,			0x0060, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Infinite", 0, 0 )
3187 //	PORT_BITX( 0,			0x0070, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Invulnerability", 0, 0 )
3188 	PORT_DIPNAME( 0x0080,	0x0000, DEF_STR( Bonus_Life ) )
3189 	/* Bonus_Life for Non European territories */
3190 //	PORT_DIPSETTING(		0x0000, "Every 1000k" )
3191 //	PORT_DIPSETTING(		0x0080, "1000k and 2000k" )
3192 	/* Bonus_Life values for European territories */
3193 	PORT_DIPSETTING(		0x0080, "Every 2000k" )
3194 	PORT_DIPSETTING(		0x0000, "None" )
3195 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3196 
3197 	PORT_START		/* (6) DSWC / Territory Jumper block */
3198 	PORT_DIPNAME( 0x0004,	0x0000, "Allow Continue" )
3199 	PORT_DIPSETTING(		0x0004, DEF_STR( No ) )
3200 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
3201 	PORT_DIPNAME( 0x0008,	0x0000, "Stage Edit" )
3202 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3203 	PORT_DIPSETTING(		0x0008, DEF_STR( On ) )
3204 	PORT_DIPNAME( 0x0003,	0x0001, "Territory" )
3205 	PORT_DIPSETTING(		0x0001, "Denmark (German Tuning license)" )
3206 	/* These Settings End Up Reporting ROM-0 as BAD */
3207 //	PORT_DIPSETTING(		0x0002, "USA (Fabtek license)" )
3208 //	PORT_DIPSETTING(		0x0000, "Japan" )
3209 	PORT_DIPSETTING(		0x0003, "China" )
3210 	PORT_BIT( 0xfff0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3211 INPUT_PORTS_END
3212 
3213 INPUT_PORTS_START( battlega )
3214 	PORT_START		/* (0) VBlank */
3215 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
3216 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3217 
3218 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_BUTTON3, IPT_UNKNOWN )
3219 
3220 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_BUTTON3, IPT_UNKNOWN )
3221 
3222 	TOAPLAN2_SYSTEM_INPUTS
3223 
3224 	PORT_START		/* (4) DSWA */
3225 	PORT_SERVICE( 0x0001,	IP_ACTIVE_HIGH )		/* Service Mode */
3226 	PORT_DIPNAME( 0x0002,	0x0000, "Credits to Start" )
3227 	PORT_DIPSETTING(		0x0000, "1" )
3228 	PORT_DIPSETTING(		0x0002, "2" )
3229 	PORT_DIPNAME( 0x001c,	0x0000, DEF_STR( Coin_A ) )
3230 	PORT_DIPSETTING(		0x0018, DEF_STR( 4C_1C ) )
3231 	PORT_DIPSETTING(		0x0014, DEF_STR( 3C_1C ) )
3232 	PORT_DIPSETTING(		0x0010, DEF_STR( 2C_1C ) )
3233 	PORT_DIPSETTING(		0x0000, DEF_STR( 1C_1C ) )
3234 	PORT_DIPSETTING(		0x0004, DEF_STR( 1C_2C ) )
3235 	PORT_DIPSETTING(		0x0008, DEF_STR( 1C_3C ) )
3236 	PORT_DIPSETTING(		0x000c, DEF_STR( 1C_4C ) )
3237 	PORT_DIPSETTING(		0x001c, DEF_STR( Free_Play ) )
3238 	PORT_DIPNAME( 0x00e0,	0x0000, DEF_STR( Coin_B ) )
3239 	PORT_DIPSETTING(		0x00c0, DEF_STR( 4C_1C ) )
3240 	PORT_DIPSETTING(		0x00a0, DEF_STR( 3C_1C ) )
3241 	PORT_DIPSETTING(		0x0080, DEF_STR( 2C_1C ) )
3242 	PORT_DIPSETTING(		0x0000, DEF_STR( 1C_1C ) )
3243 	PORT_DIPSETTING(		0x0020, DEF_STR( 1C_2C ) )
3244 	PORT_DIPSETTING(		0x0040, DEF_STR( 1C_3C ) )
3245 	PORT_DIPSETTING(		0x0060, DEF_STR( 1C_4C ) )
3246 //	PORT_DIPSETTING(		0x00e0, DEF_STR( 1C_1C ) )
3247 	/*  When Coin_A is set to Free_Play, Coin_A becomes Coin_A and Coin_B,
3248 		and Coin_B becomes the following dips */
3249 //	PORT_DIPNAME( 0x0020,	0x0000, "Joystick Mode" )
3250 //	PORT_DIPSETTING(		0x0000, "90 degrees ACW" )
3251 //	PORT_DIPSETTING(		0x0020, "Normal" )
3252 //	PORT_DIPNAME( 0x0040,	0x0000, "Effect" )
3253 //	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3254 //	PORT_DIPSETTING(		0x0040, DEF_STR( On ) )
3255 //	PORT_DIPNAME( 0x0080,	0x0000, "Music" )
3256 //	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3257 //	PORT_DIPSETTING(		0x0080, DEF_STR( On ) )
3258 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3259 
3260 	PORT_START		/* (5) DSWB */
3261 	DIFFICULTY_16
3262 	PORT_DIPNAME( 0x0004,	0x0000, DEF_STR( Flip_Screen ) )
3263 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3264 	PORT_DIPSETTING(		0x0004, DEF_STR( On ) )
3265 	PORT_DIPNAME( 0x0008,	0x0000, DEF_STR( Demo_Sounds ) )
3266 	PORT_DIPSETTING(		0x0008, DEF_STR( Off ) )
3267 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
3268 	PORT_DIPNAME( 0x0070,	0x0000, DEF_STR( Lives ) )
3269 	PORT_DIPSETTING(		0x0030, "1" )
3270 	PORT_DIPSETTING(		0x0020, "2" )
3271 	PORT_DIPSETTING(		0x0000, "3" )
3272 	PORT_DIPSETTING(		0x0010, "4" )
3273 	PORT_DIPSETTING(		0x0040, "5" )
3274 	PORT_DIPSETTING(		0x0050, "6" )
3275 	PORT_BITX( 0,			0x0060, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Infinite", 0, 0 )
3276 //	PORT_BITX( 0,			0x0070, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Invulnerability", 0, 0 )
3277 	PORT_DIPNAME( 0x0080,	0x0000, DEF_STR( Bonus_Life ) )
3278 	/* Bonus_Life for Non European territories */
3279 //	PORT_DIPSETTING(		0x0000, "Every 1000k" )
3280 //	PORT_DIPSETTING(		0x0080, "1000k and 2000k" )
3281 	/* Bonus_Life values for European territories */
3282 	PORT_DIPSETTING(		0x0080, "Every 2000k" )
3283 	PORT_DIPSETTING(		0x0000, "None" )
3284 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3285 
3286 	PORT_START		/* (6) DSWC / Territory Jumper block */
3287 	PORT_DIPNAME( 0x0004,	0x0000, "Allow Continue" )
3288 	PORT_DIPSETTING(		0x0004, DEF_STR( No ) )
3289 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
3290 	PORT_DIPNAME( 0x0008,	0x0000, "Stage Edit" )
3291 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3292 	PORT_DIPSETTING(		0x0008, DEF_STR( On ) )
3293 	PORT_DIPNAME( 0x0003,	0x0001, "Territory" )
3294 	PORT_DIPSETTING(		0x0001, "Europe (German Tuning license)" )
3295 	PORT_DIPSETTING(		0x0002, "USA (Fabtek license)" )
3296 	PORT_DIPSETTING(		0x0000, "Japan" )
3297 	PORT_DIPSETTING(		0x0003, "Asia" )
3298 	PORT_BIT( 0xfff0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3299 INPUT_PORTS_END
3300 
3301 INPUT_PORTS_START( battlegb )
3302 	PORT_START		/* (0) VBlank */
3303 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
3304 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3305 
3306 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER1, IPT_BUTTON3, IPT_UNKNOWN )
3307 
3308 	TOAPLAN2_PLAYER_INPUT( IPF_PLAYER2, IPT_BUTTON3, IPT_UNKNOWN )
3309 
3310 	TOAPLAN2_SYSTEM_INPUTS
3311 
3312 	PORT_START		/* (4) DSWA */
3313 	PORT_SERVICE( 0x0001,	IP_ACTIVE_HIGH )		/* Service Mode */
3314 	PORT_DIPNAME( 0x0002,	0x0000, "Credits to Start" )
3315 	PORT_DIPSETTING(		0x0000, "1" )
3316 	PORT_DIPSETTING(		0x0002, "2" )
3317 	PORT_DIPNAME( 0x001c,	0x0000, DEF_STR( Coin_A ) )
3318 	PORT_DIPSETTING(		0x0018, DEF_STR( 4C_1C ) )
3319 	PORT_DIPSETTING(		0x0014, DEF_STR( 3C_1C ) )
3320 	PORT_DIPSETTING(		0x0010, DEF_STR( 2C_1C ) )
3321 	PORT_DIPSETTING(		0x0000, DEF_STR( 1C_1C ) )
3322 	PORT_DIPSETTING(		0x0004, DEF_STR( 1C_2C ) )
3323 	PORT_DIPSETTING(		0x0008, DEF_STR( 1C_3C ) )
3324 	PORT_DIPSETTING(		0x000c, DEF_STR( 1C_4C ) )
3325 	PORT_DIPSETTING(		0x001c, DEF_STR( Free_Play ) )
3326 	PORT_DIPNAME( 0x00e0,	0x0000, DEF_STR( Coin_B ) )
3327 	PORT_DIPSETTING(		0x00c0, DEF_STR( 4C_1C ) )
3328 	PORT_DIPSETTING(		0x00a0, DEF_STR( 3C_1C ) )
3329 	PORT_DIPSETTING(		0x0080, DEF_STR( 2C_1C ) )
3330 	PORT_DIPSETTING(		0x0000, DEF_STR( 1C_1C ) )
3331 	PORT_DIPSETTING(		0x0020, DEF_STR( 1C_2C ) )
3332 	PORT_DIPSETTING(		0x0040, DEF_STR( 1C_3C ) )
3333 	PORT_DIPSETTING(		0x0060, DEF_STR( 1C_4C ) )
3334 //	PORT_DIPSETTING(		0x00e0, DEF_STR( 1C_1C ) )
3335 	/*  When Coin_A is set to Free_Play, Coin_A becomes Coin_A and Coin_B,
3336 		and Coin_B becomes the following dips */
3337 //	PORT_DIPNAME( 0x0020,	0x0000, "Joystick Mode" )
3338 //	PORT_DIPSETTING(		0x0000, "90 degrees ACW" )
3339 //	PORT_DIPSETTING(		0x0020, "Normal" )
3340 //	PORT_DIPNAME( 0x0040,	0x0000, "Effect" )
3341 //	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3342 //	PORT_DIPSETTING(		0x0040, DEF_STR( On ) )
3343 //	PORT_DIPNAME( 0x0080,	0x0000, "Music" )
3344 //	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3345 //	PORT_DIPSETTING(		0x0080, DEF_STR( On ) )
3346 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3347 
3348 	PORT_START		/* (5) DSWB */
3349 	DIFFICULTY_16
3350 	PORT_DIPNAME( 0x0004,	0x0000, DEF_STR( Flip_Screen ) )
3351 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3352 	PORT_DIPSETTING(		0x0004, DEF_STR( On ) )
3353 	PORT_DIPNAME( 0x0008,	0x0000, DEF_STR( Demo_Sounds ) )
3354 	PORT_DIPSETTING(		0x0008, DEF_STR( Off ) )
3355 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
3356 	PORT_DIPNAME( 0x0070,	0x0000, DEF_STR( Lives ) )
3357 	PORT_DIPSETTING(		0x0030, "1" )
3358 	PORT_DIPSETTING(		0x0020, "2" )
3359 	PORT_DIPSETTING(		0x0000, "3" )
3360 	PORT_DIPSETTING(		0x0010, "4" )
3361 	PORT_DIPSETTING(		0x0040, "5" )
3362 	PORT_DIPSETTING(		0x0050, "6" )
3363 	PORT_BITX( 0,			0x0060, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Infinite", 0, 0 )
3364 //	PORT_BITX( 0,			0x0070, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Invulnerability", 0, 0 )
3365 	PORT_DIPNAME( 0x0080,	0x0000, DEF_STR( Bonus_Life ) )
3366 	/* Bonus_Life for Non European territories */
3367 //	PORT_DIPSETTING(		0x0000, "Every 1000k" )
3368 //	PORT_DIPSETTING(		0x0080, "1000k and 2000k" )
3369 	/* Bonus_Life values for European territories */
3370 	PORT_DIPSETTING(		0x0080, "Every 2000k" )
3371 	PORT_DIPSETTING(		0x0000, "None" )
3372 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3373 
3374 	PORT_START		/* (6) DSWC / Territory Jumper block */
3375 	PORT_DIPNAME( 0x0004,	0x0000, "Allow Continue" )
3376 	PORT_DIPSETTING(		0x0004, DEF_STR( No ) )
3377 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
3378 	PORT_DIPNAME( 0x0008,	0x0000, "Stage Edit" )
3379 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3380 	PORT_DIPSETTING(		0x0008, DEF_STR( On ) )
3381 	PORT_DIPNAME( 0x0003,	0x0001, "Territory" )
3382 	PORT_DIPSETTING(		0x0001, "Austria (German Tuning license)" )
3383 	/* These Settings End Up Reporting ROM-0 as BAD */
3384 //	PORT_DIPSETTING(		0x0002, "USA (Fabtek license)" )
3385 //	PORT_DIPSETTING(		0x0000, "Japan" )
3386 	PORT_DIPSETTING(		0x0003, "Hong Kong" )
3387 	PORT_BIT( 0xfff0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3388 INPUT_PORTS_END
3389 
3390 INPUT_PORTS_START( batrider )
3391 	PORT_START		/* (0) VBlank */
3392 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
3393 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3394 
3395 	PORT_START		/* (1) Player Inputs */
3396 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
3397 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
3398 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
3399 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
3400 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER1 )
3401 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER1 )
3402 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 | IPF_PLAYER1 )
3403 	PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
3404 	PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
3405 	PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
3406 	PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
3407 	PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
3408 	PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER2 )
3409 	PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 | IPF_PLAYER2 )
3410 	PORT_BIT( 0x8080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3411 
3412 	PORT_START		/* (2) Coin/System and DSWC */
3413 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_COIN3 )
3414 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_TILT )
3415 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_SERVICE1 )
3416 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_COIN1 )
3417 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_COIN2 )
3418 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_START1 )
3419 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_START2 )
3420 	PORT_DIPNAME( 0x0100,	0x0000, DEF_STR( Flip_Screen ) )
3421 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3422 	PORT_DIPSETTING(		0x0100, DEF_STR( On ) )
3423 	PORT_DIPNAME( 0x0200,	0x0000, DEF_STR( Demo_Sounds ) )
3424 	PORT_DIPSETTING(		0x0200, DEF_STR( Off ) )
3425 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
3426 	PORT_DIPNAME( 0x0400,	0x0000, "Stage Edit" )
3427 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3428 	PORT_DIPSETTING(		0x0400, DEF_STR( On ) )
3429 	PORT_DIPNAME( 0x0800,	0x0000, "Allow Continue" )
3430 	PORT_DIPSETTING(		0x0800, DEF_STR( No ) )
3431 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
3432 	PORT_BITX(	  0x1000,	0x0000, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
3433 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3434 	PORT_DIPSETTING(		0x1000, DEF_STR( On ) )
3435 	/*  These Dips are showed only when Coin_A is set to Free_Play.
3436 		They are the last 3 Unused dips. Seems to be debug options */
3437 //	PORT_DIPNAME( 0x2000,	0x0000, "Guest Player" )
3438 //	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3439 //	PORT_DIPSETTING(		0x2000, DEF_STR( On ) )
3440 //	PORT_DIPNAME( 0x4000,	0x0000, "Player Select" )
3441 //	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3442 //	PORT_DIPSETTING(		0x4000, DEF_STR( On ) )
3443 //	PORT_DIPNAME( 0x8000,	0x0000, "Special Course" )
3444 //	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3445 //	PORT_DIPSETTING(		0x8000, DEF_STR( On ) )
3446 	PORT_DIPNAME( 0x2000,	0x0000, DEF_STR( Unused ) )
3447 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3448 	PORT_DIPSETTING(		0x2000, DEF_STR( On ) )
3449 	PORT_DIPNAME( 0x4000,	0x0000, DEF_STR( Unused ) )
3450 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3451 	PORT_DIPSETTING(		0x4000, DEF_STR( On ) )
3452 	PORT_DIPNAME( 0x8000,	0x0000, DEF_STR( Unused ) )
3453 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3454 	PORT_DIPSETTING(		0x8000, DEF_STR( On ) )
3455 
3456 	PORT_START		/* (3) DSWA and DSWB */
3457 	PORT_SERVICE( 0x0001,	IP_ACTIVE_HIGH )		/* Service Mode */
3458 	PORT_DIPNAME( 0x0002,	0x0000, "Credits to Start" )
3459 	PORT_DIPSETTING(		0x0000, "1" )
3460 	PORT_DIPSETTING(		0x0002, "2" )
3461 	/* When Coin_A is set to Free_Play, dip 0x0002 becomes: */
3462 //	PORT_DIPNAME( 0x0002,	0x0000, "Joystick Mode" )
3463 //	PORT_DIPSETTING(		0x0000, "Normal" )
3464 //	PORT_DIPSETTING(		0x0002, "90 degrees ACW" )
3465 	PORT_DIPNAME( 0x001c,	0x0000, DEF_STR( Coin_A ) )
3466 	PORT_DIPSETTING(		0x0018, DEF_STR( 4C_1C ) )
3467 	PORT_DIPSETTING(		0x0014, DEF_STR( 3C_1C ) )
3468 	PORT_DIPSETTING(		0x0010, DEF_STR( 2C_1C ) )
3469 	PORT_DIPSETTING(		0x0000, DEF_STR( 1C_1C ) )
3470 	PORT_DIPSETTING(		0x0004, DEF_STR( 1C_2C ) )
3471 	PORT_DIPSETTING(		0x0008, DEF_STR( 1C_3C ) )
3472 	PORT_DIPSETTING(		0x000c, DEF_STR( 1C_4C ) )
3473 	PORT_DIPSETTING(		0x001c, DEF_STR( Free_Play ) )
3474 	PORT_DIPNAME( 0x00e0,	0x0000, DEF_STR( Coin_B ) )
3475 	PORT_DIPSETTING(		0x00c0, DEF_STR( 4C_1C ) )
3476 	PORT_DIPSETTING(		0x00a0, DEF_STR( 3C_1C ) )
3477 	PORT_DIPSETTING(		0x0080, DEF_STR( 2C_1C ) )
3478 	PORT_DIPSETTING(		0x0000, DEF_STR( 1C_1C ) )
3479 	PORT_DIPSETTING(		0x0020, DEF_STR( 1C_2C ) )
3480 	PORT_DIPSETTING(		0x0040, DEF_STR( 1C_3C ) )
3481 	PORT_DIPSETTING(		0x0060, DEF_STR( 1C_4C ) )
3482 //	PORT_DIPSETTING(		0x00e0, DEF_STR( 1C_1C ) )
3483 	/* Coin_B becomes the following dips, when Coin_A is set to Free_Play */
3484 //	PORT_DIPNAME( 0x0020,	0x0000, "Hit Score" )
3485 //	PORT_DIPSETTING(		0x0020, DEF_STR( Off ) )
3486 //	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
3487 //	PORT_DIPNAME( 0x0040,	0x0000, "Sound Effect" )
3488 //	PORT_DIPSETTING(		0x0040, DEF_STR( Off ) )
3489 //	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
3490 //	PORT_DIPNAME( 0x0080,	0x0000, "Music" )
3491 //	PORT_DIPSETTING(		0x0080, DEF_STR( Off ) )
3492 //	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
3493 	PORT_DIPNAME( 0x0300,	0x0000, DEF_STR( Difficulty ) )
3494 	PORT_DIPSETTING(		0x0100, "Easy" )
3495 	PORT_DIPSETTING(		0x0000, "Medium" )
3496 	PORT_DIPSETTING(		0x0200, "Hard" )
3497 	PORT_DIPSETTING(		0x0300, "Hardest" )
3498 	PORT_DIPNAME( 0x0c00,	0x0000, "Timer" )
3499 	PORT_DIPSETTING(		0x0400, "Easy" )
3500 	PORT_DIPSETTING(		0x0000, "Medium" )
3501 	PORT_DIPSETTING(		0x0800, "Hard" )
3502 	PORT_DIPSETTING(		0x0c00, "Hardest" )
3503 	PORT_DIPNAME( 0x3000,	0x0000, DEF_STR( Lives ) )
3504 	PORT_DIPSETTING(		0x3000, "1" )
3505 	PORT_DIPSETTING(		0x2000, "2" )
3506 	PORT_DIPSETTING(		0x0000, "3" )
3507 	PORT_DIPSETTING(		0x1000, "4" )
3508 	PORT_DIPNAME( 0xc000,	0x0000, DEF_STR( Bonus_Life ) )
3509 	PORT_DIPSETTING(		0x4000, "Every 1000k" )
3510 	PORT_DIPSETTING(		0x0000, "Every 1500k" )
3511 	PORT_DIPSETTING(		0x8000, "Every 2000k" )
3512 	PORT_DIPSETTING(		0xc000, "None" )
3513 INPUT_PORTS_END
3514 
3515 INPUT_PORTS_START( bbakraid )
3516 	PORT_START		/* (0) VBlank */
3517 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_VBLANK )
3518 	PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3519 
3520 	PORT_START		/* (1) Player Inputs */
3521 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
3522 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
3523 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
3524 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
3525 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER1 )
3526 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER1 )
3527 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 | IPF_PLAYER1 )
3528 	PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
3529 	PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
3530 	PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
3531 	PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
3532 	PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
3533 	PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER2 )
3534 	PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 | IPF_PLAYER2 )
3535 	PORT_BIT( 0x8080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3536 
3537 	PORT_START		/* (2) Coin/System and DSW-3 */
3538 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_COIN3 )
3539 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_TILT )
3540 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_SERVICE1 )
3541 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_COIN1 )
3542 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_COIN2 )
3543 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_START1 )
3544 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_START2 )
3545 	PORT_DIPNAME( 0x0100,	0x0000, DEF_STR( Flip_Screen ) )
3546 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3547 	PORT_DIPSETTING(		0x0100, DEF_STR( On ) )
3548 	PORT_DIPNAME( 0x0200,	0x0000, DEF_STR( Demo_Sounds ) )
3549 	PORT_DIPSETTING(		0x0200, DEF_STR( Off ) )
3550 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
3551 	PORT_DIPNAME( 0x0400,	0x0000, "Stage Edit" )
3552 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3553 	PORT_DIPSETTING(		0x0400, DEF_STR( On ) )
3554 	PORT_DIPNAME( 0x0800,	0x0000, "Allow Continue" )
3555 	PORT_DIPSETTING(		0x0800, DEF_STR( No ) )
3556 	PORT_DIPSETTING(		0x0000, DEF_STR( Yes ) )
3557 	PORT_BITX(	  0x1000,	0x0000, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
3558 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3559 	PORT_DIPSETTING(		0x1000, DEF_STR( On ) )
3560 	PORT_DIPNAME( 0x2000,	0x0000, "Save Scores" )
3561 	PORT_DIPSETTING(		0x2000, DEF_STR( Off ) )
3562 	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
3563 	PORT_DIPNAME( 0x4000,	0x0000, DEF_STR( Unused ) )
3564 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3565 	PORT_DIPSETTING(		0x4000, DEF_STR( On ) )
3566 	PORT_DIPNAME( 0x8000,	0x0000, DEF_STR( Unused ) )
3567 	PORT_DIPSETTING(		0x0000, DEF_STR( Off ) )
3568 	PORT_DIPSETTING(		0x8000, DEF_STR( On ) )
3569 
3570 	PORT_START		/* (3) DSWA and DSWB */
3571 	PORT_SERVICE( 0x0001,	IP_ACTIVE_HIGH )		/* Service Mode */
3572 	PORT_DIPNAME( 0x0002,	0x0000, "Credits to Start" )
3573 	PORT_DIPSETTING(		0x0000, "1" )
3574 	PORT_DIPSETTING(		0x0002, "2" )
3575 	/* When Coin_A is set to Free_Play, dip 0x0002 becomes: */
3576 //	PORT_DIPNAME( 0x0002,	0x0000, "Joystick Mode" )
3577 //	PORT_DIPSETTING(		0x0000, "Normal" )
3578 //	PORT_DIPSETTING(		0x0002, "90 degrees ACW" )
3579 	PORT_DIPNAME( 0x001c,	0x0000, DEF_STR( Coin_A ) )
3580 	PORT_DIPSETTING(		0x0018, DEF_STR( 4C_1C ) )
3581 	PORT_DIPSETTING(		0x0014, DEF_STR( 3C_1C ) )
3582 	PORT_DIPSETTING(		0x0010, DEF_STR( 2C_1C ) )
3583 	PORT_DIPSETTING(		0x0000, DEF_STR( 1C_1C ) )
3584 	PORT_DIPSETTING(		0x0004, DEF_STR( 1C_2C ) )
3585 	PORT_DIPSETTING(		0x0008, DEF_STR( 1C_3C ) )
3586 	PORT_DIPSETTING(		0x000c, DEF_STR( 1C_4C ) )
3587 	PORT_DIPSETTING(		0x001c, DEF_STR( Free_Play ) )
3588 	PORT_DIPNAME( 0x00e0,	0x0000, DEF_STR( Coin_B ) )
3589 	PORT_DIPSETTING(		0x00c0, DEF_STR( 4C_1C ) )
3590 	PORT_DIPSETTING(		0x00a0, DEF_STR( 3C_1C ) )
3591 	PORT_DIPSETTING(		0x0080, DEF_STR( 2C_1C ) )
3592 	PORT_DIPSETTING(		0x0000, DEF_STR( 1C_1C ) )
3593 	PORT_DIPSETTING(		0x0020, DEF_STR( 1C_2C ) )
3594 	PORT_DIPSETTING(		0x0040, DEF_STR( 1C_3C ) )
3595 	PORT_DIPSETTING(		0x0060, DEF_STR( 1C_4C ) )
3596 //	PORT_DIPSETTING(		0x00e0, DEF_STR( 1C_1C ) )
3597 	/* Coin_B becomes the following dips, when Coin_A is set to Free_Play */
3598 	/* Coin_B slot also behaves in freeplay mode when Coin_A is in freeplay */
3599 //	PORT_DIPNAME( 0x0020,	0x0000, "Hit Score" )
3600 //	PORT_DIPSETTING(		0x0020, DEF_STR( Off ) )
3601 //	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
3602 //	PORT_DIPNAME( 0x0040,	0x0000, "Sound Effect" )
3603 //	PORT_DIPSETTING(		0x0040, DEF_STR( Off ) )
3604 //	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
3605 //	PORT_DIPNAME( 0x0080,	0x0000, "Music" )
3606 //	PORT_DIPSETTING(		0x0080, DEF_STR( Off ) )
3607 //	PORT_DIPSETTING(		0x0000, DEF_STR( On ) )
3608 	PORT_DIPNAME( 0x0300,	0x0000, DEF_STR( Difficulty ) )
3609 	PORT_DIPSETTING(		0x0100, "Easy" )
3610 	PORT_DIPSETTING(		0x0000, "Medium" )
3611 	PORT_DIPSETTING(		0x0200, "Hard" )
3612 	PORT_DIPSETTING(		0x0300, "Hardest" )
3613 	PORT_DIPNAME( 0x0c00,	0x0000, "Timer" )
3614 	PORT_DIPSETTING(		0x0400, "Low" )
3615 	PORT_DIPSETTING(		0x0000, "Medium" )
3616 	PORT_DIPSETTING(		0x0800, "High" )
3617 	PORT_DIPSETTING(		0x0c00, "Highest" )
3618 	PORT_DIPNAME( 0x3000,	0x0000, DEF_STR( Lives ) )
3619 	PORT_DIPSETTING(		0x3000, "1" )
3620 	PORT_DIPSETTING(		0x2000, "2" )
3621 	PORT_DIPSETTING(		0x0000, "3" )
3622 	PORT_DIPSETTING(		0x1000, "4" )
3623 	PORT_DIPNAME( 0xc000,	0x0000, DEF_STR( Bonus_Life ) )
3624 	PORT_DIPSETTING(		0x0000, "Every 200k" )
3625 	PORT_DIPSETTING(		0x4000, "Every 300k" )
3626 	PORT_DIPSETTING(		0x8000, "Every 400k" )
3627 	PORT_DIPSETTING(		0xc000, "None" )
3628 INPUT_PORTS_END
3629 
3630 
3631 
3632 static struct GfxLayout tilelayout =
3633 {
3634 	16,16,	/* 16x16 */
3635 	RGN_FRAC(1,2),	/* Number of tiles */
3636 	4,		/* 4 bits per pixel */
3637 	{ RGN_FRAC(1,2)+8, RGN_FRAC(1,2), 8, 0 },
3638 	{ 0, 1, 2, 3, 4, 5, 6, 7,
3639 		8*16+0, 8*16+1, 8*16+2, 8*16+3, 8*16+4, 8*16+5, 8*16+6, 8*16+7 },
3640 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
3641 		16*16, 17*16, 18*16, 19*16, 20*16, 21*16, 22*16, 23*16 },
3642 	8*4*16
3643 };
3644 
3645 static struct GfxLayout spritelayout =
3646 {
3647 	8,8,	/* 8x8 */
3648 	RGN_FRAC(1,2),	/* Number of 8x8 sprites */
3649 	4,		/* 4 bits per pixel */
3650 	{ RGN_FRAC(1,2)+8, RGN_FRAC(1,2), 8, 0 },
3651 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
3652 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
3653 	8*16
3654 };
3655 
3656 static struct GfxLayout raizing_textlayout =
3657 {
3658 	8,8,	/* 8x8 characters */
3659 	1024,	/* 1024 characters */
3660 	4,		/* 4 bits per pixel */
3661 	{ 0, 1, 2, 3 },
3662 	{ 0, 4, 8, 12, 16, 20, 24, 28 },
3663 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
3664 	8*32
3665 };
3666 
3667 #ifdef MSB_FIRST
3668 static struct GfxLayout truxton2_tx_tilelayout =
3669 {
3670 	8,8,	/* 8x8 characters */
3671 	1024,	/* 1024 characters */
3672 	4,		/* 4 bits per pixel */
3673 	{ 0, 1, 2, 3 },
3674 	{ 0+8, 4+8, 16+8, 20+8, 32+8, 36+8, 48+8, 52+8 },
3675 	{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 },
3676 	8*64
3677 };
3678 
3679 static struct GfxLayout batrider_tx_tilelayout =
3680 {
3681 	8,8,	/* 8x8 characters */
3682 	1024,	/* 1024 characters */
3683 	4,		/* 4 bits per pixel */
3684 	{ 0, 1, 2, 3 },
3685 	{ 8, 12, 0, 4, 24, 28, 16, 20 },
3686 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
3687 	8*32
3688 };
3689 #else
3690 static struct GfxLayout truxton2_tx_tilelayout =
3691 {
3692 	8,8,	/* 8x8 characters */
3693 	1024,	/* 1024 characters */
3694 	4,		/* 4 bits per pixel */
3695 	{ 0, 1, 2, 3 },
3696 	{ 0, 4, 16, 20, 32, 36, 48, 52 },
3697 	{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 },
3698 	8*64
3699 };
3700 
3701 static struct GfxLayout batrider_tx_tilelayout =
3702 {
3703 	8,8,	/* 8x8 characters */
3704 	1024,	/* 1024 characters */
3705 	4,		/* 4 bits per pixel */
3706 	{ 0, 1, 2, 3 },
3707 	{ 0, 4, 8, 12, 16, 20, 24, 28 },
3708 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
3709 	8*32
3710 };
3711 #endif
3712 
3713 static struct GfxDecodeInfo gfxdecodeinfo[] =
3714 {
3715 	{ REGION_GFX1, 0, &tilelayout,   0, 128 },
3716 	{ REGION_GFX1, 0, &spritelayout, 0,  64 },
3717 	{ -1 } /* end of array */
3718 };
3719 
3720 static struct GfxDecodeInfo gfxdecodeinfo_2[] =
3721 {
3722 	{ REGION_GFX1, 0, &tilelayout,   0, 128 },
3723 	{ REGION_GFX1, 0, &spritelayout, 0,  64 },
3724 	{ REGION_GFX2, 0, &tilelayout,   0, 128 },
3725 	{ REGION_GFX2, 0, &spritelayout, 0,  64 },
3726 	{ -1 } /* end of array */
3727 };
3728 
3729 static struct GfxDecodeInfo truxton2_gfxdecodeinfo[] =
3730 {
3731 	{ REGION_GFX1, 0,       &tilelayout            , 0, 128 },
3732 	{ REGION_GFX1, 0,       &spritelayout          , 0,  64 },
3733 //	{ REGION_CPU1, 0x40000, &truxton2_tx_tilelayout, 0, 128 },	/* Truxton 2 */
3734 //	{ REGION_CPU1, 0x68000, &truxton2_tx_tilelayout, 0, 128 },	/* Fix Eight */
3735 	{ 0, 0, &truxton2_tx_tilelayout,  0, 128 },
3736 	{ -1 } /* end of array */
3737 };
3738 
3739 static struct GfxDecodeInfo raizing_gfxdecodeinfo[] =
3740 {
3741 	{ REGION_GFX1, 0, &tilelayout,         0, 128 },
3742 	{ REGION_GFX1, 0, &spritelayout,       0,  64 },
3743 	{ REGION_GFX2, 0, &raizing_textlayout, 0, 128 },		/* Extra-text layer */
3744 	{ -1 } /* end of array */
3745 };
3746 
3747 /* This is wrong a bit. Text layer is dynamically changed. */
3748 static struct GfxDecodeInfo batrider_gfxdecodeinfo[] =
3749 {
3750 	{ REGION_GFX1, 0, &tilelayout,             0, 128 },
3751 	{ REGION_GFX1, 0, &spritelayout,           0,  64 },
3752 	{ 0,           0, &batrider_tx_tilelayout, 0,  16 },
3753 	{ -1 } /* end of array */
3754 };
3755 
3756 
irqhandler(int linestate)3757 static void irqhandler(int linestate)
3758 {
3759 	cpu_set_irq_line(1,0,linestate);
3760 }
3761 
3762 static struct YM3812interface ym3812_interface =
3763 {
3764 	1,				/* 1 chip  */
3765 	27000000/8,		/* 3.375MHz , 27MHz Oscillator */
3766 	{ 100 },		/* volume */
3767 	{ irqhandler },
3768 };
3769 
3770 static struct YM2151interface ym2151_interface =
3771 {
3772 	1,				/* 1 chip */
3773 	27000000/8,		/* 3.375MHz , 27MHz Oscillator */
3774 	{ YM3012_VOL(25,MIXER_PAN_LEFT,25,MIXER_PAN_RIGHT) },
3775 	{ 0 }
3776 };
3777 
3778 static struct YM2151interface raizing_ym2151_interface =
3779 {
3780 	1,				/* 1 chip */
3781 	32000000/8,		/* 4.00MHz , 32MHz Oscillator */
3782 	{ YM3012_VOL(25,MIXER_PAN_LEFT,25,MIXER_PAN_RIGHT) },
3783 	{ 0 }
3784 };
3785 
3786 
3787 static struct OKIM6295interface okim6295_interface =
3788 {
3789 	1,						/* 1 chip */
3790 	{ 27000000/10/132 },	/* frequency (Hz). 2.7MHz to 6295 (using B mode) */
3791 	{ REGION_SOUND1 },		/* memory region */
3792 	{ 25 }
3793 };
3794 
3795 static struct OKIM6295interface raizing_okim6295_interface =
3796 {
3797 	1,						/* 1 chip */
3798 	{ 32000000/32/132 },	/* frequency (Hz) 1MHz to 6295 (using B mode) */
3799 	{ REGION_SOUND1 },		/* memory region */
3800 	{ 25 }
3801 };
3802 
3803 static struct OKIM6295interface battleg_okim6295_interface =
3804 {
3805 	1,						/* 1 chip */
3806 	{ 32000000/16/132 },	/* frequency (Hz). 2MHz to 6295 (using B mode) */
3807 	{ REGION_SOUND1 },		/* memory region */
3808 	{ 25 }
3809 };
3810 
3811 static struct OKIM6295interface batrider_okim6295_interface =
3812 {
3813 	2,										/* 2 chips */
3814 	{ 32000000/10/132, 32000000/10/165 },	/* frequency (Hz). 3.2MHz to two 6295 (using B mode / A mode) */
3815 	{ REGION_SOUND1, REGION_SOUND2 },		/* memory region */
3816 	{ 25, 25 }
3817 };
3818 
3819 static struct YMZ280Binterface ymz280b_interface =
3820 {
3821 	1,
3822 	{ 16934400 },
3823 	{ REGION_SOUND1 },
3824 	{ YM3012_VOL(100,MIXER_PAN_LEFT,100,MIXER_PAN_RIGHT) },
3825 	{ bbakraid_irqhandler }
3826 };
3827 
3828 
3829 
3830 static MACHINE_DRIVER_START( tekipaki )
3831 
3832 	/* basic machine hardware */
3833 	MDRV_CPU_ADD(M68000, 10000000)			/* 10MHz Oscillator */
3834 	MDRV_CPU_MEMORY(tekipaki_readmem,tekipaki_writemem)
3835 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq4,262)
3836 
3837 #if HD64x180
3838 	MDRV_CPU_ADD(Z180, 10000000)			/* HD647180 CPU actually */
3839 	MDRV_CPU_MEMORY(hd647180_readmem,hd647180_writemem)
3840 #endif
3841 
3842 	MDRV_FRAMES_PER_SECOND(60)
3843 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
3844 
3845 	MDRV_MACHINE_INIT(toaplan2)
3846 
3847 	/* video hardware */
3848 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
3849 	MDRV_SCREEN_SIZE(32*16, 32*16)
3850 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
3851 	MDRV_GFXDECODE(gfxdecodeinfo)
3852 	MDRV_PALETTE_LENGTH(2048)
3853 
3854 	MDRV_VIDEO_START(toaplan2_0)
3855 	MDRV_VIDEO_EOF(toaplan2_0)
3856 	MDRV_VIDEO_UPDATE(toaplan2_0)
3857 
3858 	/* sound hardware */
3859 	MDRV_SOUND_ADD(YM3812, ym3812_interface)
3860 MACHINE_DRIVER_END
3861 
3862 
3863 static MACHINE_DRIVER_START( ghox )
3864 
3865 	/* basic machine hardware */
3866 	MDRV_CPU_ADD(M68000, 10000000)			/* 10MHz Oscillator */
3867 	MDRV_CPU_MEMORY(ghox_readmem,ghox_writemem)
3868 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq4,262)
3869 
3870 #if HD64x180
3871 	MDRV_CPU_ADD(Z180, 10000000)			/* HD647180 CPU actually */
3872 	MDRV_CPU_MEMORY(hd647180_readmem,hd647180_writemem)
3873 #endif
3874 
3875 	MDRV_FRAMES_PER_SECOND(60)
3876 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
3877 
3878 	MDRV_MACHINE_INIT(ghox)
3879 
3880 	/* video hardware */
3881 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
3882 	MDRV_SCREEN_SIZE(32*16, 32*16)
3883 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
3884 	MDRV_GFXDECODE(gfxdecodeinfo)
3885 	MDRV_PALETTE_LENGTH(2048)
3886 
3887 	MDRV_VIDEO_START(toaplan2_0)
3888 	MDRV_VIDEO_EOF(toaplan2_0)
3889 	MDRV_VIDEO_UPDATE(toaplan2_0)
3890 
3891 	/* sound hardware */
3892 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
3893 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
3894 MACHINE_DRIVER_END
3895 
3896 
3897 static MACHINE_DRIVER_START( dogyuun )
3898 
3899 	/* basic machine hardware */
3900 	MDRV_CPU_ADD(M68000, 16000000)			/* 16MHz Oscillator */
3901 	MDRV_CPU_MEMORY(dogyuun_readmem,dogyuun_writemem)
3902 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq4,262)
3903 
3904 #if Zx80
3905 	MDRV_CPU_ADD(Z180, 16000000)			/* Z?80 type Toaplan marked CPU ??? */
3906 	MDRV_CPU_MEMORY(Zx80_readmem,Zx80_writemem)
3907 	MDRV_CPU_PORTS(Zx80_readport,0)
3908 #endif
3909 
3910 	MDRV_FRAMES_PER_SECOND( (27000000.0 / 4) / (432 * 263) )
3911 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
3912 
3913 	MDRV_MACHINE_INIT(toaplan2)
3914 
3915 	/* video hardware */
3916 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
3917 	MDRV_SCREEN_SIZE(32*16, 32*16)
3918 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
3919 	MDRV_GFXDECODE(gfxdecodeinfo_2)
3920 	MDRV_PALETTE_LENGTH(2048)
3921 
3922 	MDRV_VIDEO_START(toaplan2_1)
3923 	MDRV_VIDEO_EOF(toaplan2_1)
3924 	MDRV_VIDEO_UPDATE(dogyuun_1)
3925 
3926 	/* sound hardware */
3927 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
3928 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
3929 	MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
3930 MACHINE_DRIVER_END
3931 
3932 
3933 static MACHINE_DRIVER_START( kbash )
3934 
3935 	/* basic machine hardware */
3936 	MDRV_CPU_ADD(M68000, 16000000)			/* 16MHz Oscillator */
3937 	MDRV_CPU_MEMORY(kbash_readmem,kbash_writemem)
3938 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq4,262)
3939 
3940 #if Zx80
3941 	MDRV_CPU_ADD(Z180, 16000000)			/* Z?80 type Toaplan marked CPU ??? */
3942 	MDRV_CPU_MEMORY(Zx80_readmem,Zx80_writemem)
3943 	MDRV_CPU_PORTS(Zx80_readport,0)
3944 #endif
3945 
3946 	MDRV_FRAMES_PER_SECOND(60)
3947 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
3948 
3949 	MDRV_MACHINE_INIT(toaplan2)
3950 
3951 	/* video hardware */
3952 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
3953 	MDRV_SCREEN_SIZE(32*16, 32*16)
3954 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
3955 	MDRV_GFXDECODE(gfxdecodeinfo)
3956 	MDRV_PALETTE_LENGTH(2048)
3957 
3958 	MDRV_VIDEO_START(toaplan2_0)
3959 	MDRV_VIDEO_EOF(toaplan2_0)
3960 	MDRV_VIDEO_UPDATE(toaplan2_0)
3961 
3962 	/* sound hardware */
3963 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
3964 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
3965 	MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
3966 MACHINE_DRIVER_END
3967 
3968 
3969 static MACHINE_DRIVER_START( truxton2 )
3970 
3971 	/* basic machine hardware */
3972 	MDRV_CPU_ADD(M68000, 16000000)			/* 16MHz Oscillator */
3973 	MDRV_CPU_MEMORY(truxton2_readmem,truxton2_writemem)
3974 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq2,262)
3975 
3976 	MDRV_FRAMES_PER_SECOND( (27000000.0 / 4) / (432 * 263) )
3977 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
3978 
3979 	MDRV_MACHINE_INIT(toaplan2)
3980 
3981 	/* video hardware */
3982 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
3983 	MDRV_SCREEN_SIZE(32*16, 32*16)
3984 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
3985 	MDRV_GFXDECODE(truxton2_gfxdecodeinfo)
3986 	MDRV_PALETTE_LENGTH(2048)
3987 
3988 	MDRV_VIDEO_START(truxton2_0)
3989 	MDRV_VIDEO_EOF(toaplan2_0)
3990 	MDRV_VIDEO_UPDATE(truxton2_0)
3991 
3992 	/* sound hardware */
3993 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
3994 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
3995 	MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
3996 MACHINE_DRIVER_END
3997 
3998 
3999 static MACHINE_DRIVER_START( pipibibs )
4000 
4001 	/* basic machine hardware */
4002 	MDRV_CPU_ADD(M68000, 10000000)			/* 10MHz Oscillator */
4003 	MDRV_CPU_MEMORY(pipibibs_readmem,pipibibs_writemem)
4004 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq4,262)
4005 
4006 	MDRV_CPU_ADD(Z80,27000000/8)			/* ??? 3.37MHz , 27MHz Oscillator */
4007 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
4008 
4009 	MDRV_FRAMES_PER_SECOND(60)
4010 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
4011 	MDRV_INTERLEAVE(10)
4012 
4013 	MDRV_MACHINE_INIT(toaplan2)
4014 
4015 	/* video hardware */
4016 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
4017 	MDRV_SCREEN_SIZE(32*16, 32*16)
4018 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
4019 	MDRV_GFXDECODE(gfxdecodeinfo)
4020 	MDRV_PALETTE_LENGTH(2048)
4021 
4022 	MDRV_VIDEO_START(toaplan2_0)
4023 	MDRV_VIDEO_EOF(toaplan2_0)
4024 	MDRV_VIDEO_UPDATE(toaplan2_0)
4025 
4026 	/* sound hardware */
4027 	MDRV_SOUND_ADD(YM3812, ym3812_interface)
4028 MACHINE_DRIVER_END
4029 
4030 
4031 static MACHINE_DRIVER_START( whoopee )
4032 
4033 	/* basic machine hardware */
4034 	MDRV_CPU_ADD(M68000, 10000000)			/* 10MHz Oscillator */
4035 	MDRV_CPU_MEMORY(tekipaki_readmem,tekipaki_writemem)
4036 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq4,262)
4037 
4038 	MDRV_CPU_ADD(Z80, 27000000/8)			/* This should be a HD647180 */
4039 											/* Change this to 10MHz when HD647180 gets dumped. 10MHz Oscillator */
4040 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
4041 
4042 	MDRV_FRAMES_PER_SECOND(60)
4043 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
4044 	MDRV_INTERLEAVE(10)
4045 
4046 	MDRV_MACHINE_INIT(toaplan2)
4047 
4048 	/* video hardware */
4049 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
4050 	MDRV_SCREEN_SIZE(32*16, 32*16)
4051 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
4052 	MDRV_GFXDECODE(gfxdecodeinfo)
4053 	MDRV_PALETTE_LENGTH(2048)
4054 
4055 	MDRV_VIDEO_START(toaplan2_0)
4056 	MDRV_VIDEO_EOF(toaplan2_0)
4057 	MDRV_VIDEO_UPDATE(toaplan2_0)
4058 
4059 	/* sound hardware */
4060 	MDRV_SOUND_ADD(YM3812, ym3812_interface)
4061 MACHINE_DRIVER_END
4062 
4063 
4064 static MACHINE_DRIVER_START( pipibibi )
4065 
4066 	/* basic machine hardware */
4067 	MDRV_CPU_ADD(M68000, 10000000)			/* 10MHz Oscillator */
4068 	MDRV_CPU_MEMORY(pipibibi_readmem,pipibibi_writemem)
4069 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq4,262)
4070 
4071 	MDRV_CPU_ADD(Z80,27000000/8)			/* ??? 3.37MHz */
4072 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
4073 
4074 	MDRV_FRAMES_PER_SECOND(60)
4075 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
4076 	MDRV_INTERLEAVE(10)
4077 
4078 	MDRV_MACHINE_INIT(toaplan2)
4079 
4080 	/* video hardware */
4081 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
4082 	MDRV_SCREEN_SIZE(32*16, 32*16)
4083 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
4084 	MDRV_GFXDECODE(gfxdecodeinfo)
4085 	MDRV_PALETTE_LENGTH(2048)
4086 
4087 	MDRV_VIDEO_START(toaplan2_0)
4088 	MDRV_VIDEO_EOF(toaplan2_0)
4089 	MDRV_VIDEO_UPDATE(toaplan2_0)
4090 
4091 	/* sound hardware */
4092 	MDRV_SOUND_ADD(YM3812, ym3812_interface)
4093 MACHINE_DRIVER_END
4094 
4095 
4096 static MACHINE_DRIVER_START( fixeight )
4097 
4098 	/* basic machine hardware */
4099 	MDRV_CPU_ADD(M68000, 16000000)			/* 16MHz Oscillator */
4100 	MDRV_CPU_MEMORY(fixeight_readmem,fixeight_writemem)
4101 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq4,262)
4102 
4103 #if Zx80
4104 	MDRV_CPU_ADD(Z180, 16000000)			/* Z?80 type Toaplan marked CPU ??? */
4105 	MDRV_CPU_MEMORY(Zx80_readmem,Zx80_writemem)
4106 	MDRV_CPU_PORTS(Zx80_readport,0)
4107 #endif
4108 
4109 	MDRV_FRAMES_PER_SECOND( (27000000.0 / 4) / (432 * 263) )
4110 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
4111 
4112 	MDRV_MACHINE_INIT(toaplan2)
4113 ///	MDRV_NVRAM_HANDLER(fixeight)		/* See 37B6 code */
4114 
4115 	/* video hardware */
4116 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
4117 	MDRV_SCREEN_SIZE(32*16, 32*16)
4118 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
4119 	MDRV_GFXDECODE(truxton2_gfxdecodeinfo)
4120 	MDRV_PALETTE_LENGTH(2048)
4121 
4122 	MDRV_VIDEO_START(truxton2_0)
4123 	MDRV_VIDEO_EOF(toaplan2_0)
4124 	MDRV_VIDEO_UPDATE(truxton2_0)
4125 
4126 	/* sound hardware */
4127 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
4128 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
4129 	MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
4130 MACHINE_DRIVER_END
4131 
4132 
4133 static MACHINE_DRIVER_START( vfive )
4134 
4135 	/* basic machine hardware */
4136 	MDRV_CPU_ADD(M68000, 10000000)			/* 10MHz Oscillator */
4137 	MDRV_CPU_MEMORY(vfive_readmem,vfive_writemem)
4138 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq4,262)
4139 
4140 #if Zx80
4141 	MDRV_CPU_ADD(Z180, 10000000)			/* Z?80 type Toaplan marked CPU ??? */
4142 	MDRV_CPU_MEMORY(Zx80_readmem,Zx80_writemem)
4143 	MDRV_CPU_PORTS(Zx80_readport,0)
4144 #endif
4145 
4146 	MDRV_FRAMES_PER_SECOND( (27000000.0 / 4) / (432 * 263) )
4147 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
4148 
4149 	MDRV_MACHINE_INIT(toaplan2)
4150 
4151 	/* video hardware */
4152 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
4153 	MDRV_SCREEN_SIZE(32*16, 32*16)
4154 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
4155 	MDRV_GFXDECODE(gfxdecodeinfo)
4156 	MDRV_PALETTE_LENGTH(2048)
4157 
4158 	MDRV_VIDEO_START(toaplan2_0)
4159 	MDRV_VIDEO_EOF(toaplan2_0)
4160 	MDRV_VIDEO_UPDATE(toaplan2_0)
4161 
4162 	/* sound hardware */
4163 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
4164 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
4165 MACHINE_DRIVER_END
4166 
4167 
4168 static MACHINE_DRIVER_START( batsugun )
4169 
4170 	/* basic machine hardware */
4171 	MDRV_CPU_ADD(M68000,32000000/2)			/* 16MHz , 32MHz Oscillator */
4172 	MDRV_CPU_MEMORY(batsugun_readmem,batsugun_writemem)
4173 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq4,262)
4174 
4175 #if Zx80
4176 	MDRV_CPU_ADD(Z180, 32000000/2)			/* Z?80 type Toaplan marked CPU ??? */
4177 	MDRV_CPU_MEMORY(Zx80_readmem,Zx80_writemem)
4178 	MDRV_CPU_PORTS(Zx80_readport,0)
4179 #endif
4180 
4181 	MDRV_FRAMES_PER_SECOND(60)
4182 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
4183 
4184 	MDRV_MACHINE_INIT(toaplan2)
4185 
4186 	/* video hardware */
4187 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
4188 	MDRV_SCREEN_SIZE(32*16, 32*16)
4189 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
4190 	MDRV_GFXDECODE(gfxdecodeinfo_2)
4191 	MDRV_PALETTE_LENGTH(2048)
4192 
4193 	MDRV_VIDEO_START(toaplan2_1)
4194 	MDRV_VIDEO_EOF(toaplan2_1)
4195 	MDRV_VIDEO_UPDATE(batsugun_1)
4196 
4197 	/* sound hardware */
4198 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
4199 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
4200 	MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
4201 MACHINE_DRIVER_END
4202 
4203 
4204 static MACHINE_DRIVER_START( snowbro2 )
4205 
4206 	/* basic machine hardware */
4207 	MDRV_CPU_ADD(M68000, 16000000)
4208 	MDRV_CPU_MEMORY(snowbro2_readmem,snowbro2_writemem)
4209 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq4,262)
4210 
4211 	MDRV_FRAMES_PER_SECOND(60)
4212 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
4213 
4214 	MDRV_MACHINE_INIT(toaplan2)
4215 
4216 	/* video hardware */
4217 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
4218 	MDRV_SCREEN_SIZE(32*16, 32*16)
4219 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
4220 	MDRV_GFXDECODE(gfxdecodeinfo)
4221 	MDRV_PALETTE_LENGTH(2048)
4222 
4223 	MDRV_VIDEO_START(toaplan2_0)
4224 	MDRV_VIDEO_EOF(toaplan2_0)
4225 	MDRV_VIDEO_UPDATE(toaplan2_0)
4226 
4227 	/* sound hardware */
4228 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
4229 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
4230 	MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
4231 MACHINE_DRIVER_END
4232 
4233 
4234 static MACHINE_DRIVER_START( mahoudai )
4235 
4236 	/* basic machine hardware */
4237 	MDRV_CPU_ADD(M68000,32000000/2)			/* 16MHz , 32MHz Oscillator */
4238 	MDRV_CPU_MEMORY(mahoudai_readmem,mahoudai_writemem)
4239 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq4,262)
4240 
4241 	MDRV_CPU_ADD(Z80,32000000/8)			/* 4MHz , 32MHz Oscillator */
4242 	MDRV_CPU_MEMORY(raizing_sound_readmem,raizing_sound_writemem)
4243 
4244 	MDRV_FRAMES_PER_SECOND(60)
4245 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
4246 	MDRV_INTERLEAVE(10)
4247 
4248 	MDRV_MACHINE_INIT(toaplan2)
4249 
4250 	/* video hardware */
4251 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
4252 	MDRV_SCREEN_SIZE(32*16, 32*16)
4253 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
4254 	MDRV_GFXDECODE(raizing_gfxdecodeinfo)
4255 	MDRV_PALETTE_LENGTH(2048)
4256 
4257 	MDRV_VIDEO_START(battleg_0)
4258 	MDRV_VIDEO_EOF(toaplan2_0)
4259 	MDRV_VIDEO_UPDATE(mahoudai_0)
4260 
4261 	/* sound hardware */
4262 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
4263 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
4264 	MDRV_SOUND_ADD(OKIM6295, raizing_okim6295_interface)
4265 MACHINE_DRIVER_END
4266 
4267 
4268 static MACHINE_DRIVER_START( shippumd )
4269 
4270 	/* basic machine hardware */
4271 	MDRV_CPU_ADD(M68000,32000000/2)			/* 16MHz , 32MHz Oscillator */
4272 	MDRV_CPU_MEMORY(shippumd_readmem,shippumd_writemem)
4273 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq4,262)
4274 
4275 	MDRV_CPU_ADD(Z80,32000000/8)			/* 4MHz , 32MHz Oscillator */
4276 	MDRV_CPU_MEMORY(raizing_sound_readmem,raizing_sound_writemem)
4277 
4278 	MDRV_FRAMES_PER_SECOND(60)
4279 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
4280 	MDRV_INTERLEAVE(10)
4281 
4282 	MDRV_MACHINE_INIT(toaplan2)
4283 
4284 	/* video hardware */
4285 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
4286 	MDRV_SCREEN_SIZE(32*16, 32*16)
4287 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
4288 	MDRV_GFXDECODE(raizing_gfxdecodeinfo)
4289 	MDRV_PALETTE_LENGTH(2048)
4290 
4291 	MDRV_VIDEO_START(battleg_0)
4292 	MDRV_VIDEO_EOF(toaplan2_0)
4293 	MDRV_VIDEO_UPDATE(truxton2_0)
4294 
4295 	/* sound hardware */
4296 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
4297 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
4298 	MDRV_SOUND_ADD(OKIM6295, raizing_okim6295_interface)
4299 MACHINE_DRIVER_END
4300 
4301 
4302 static MACHINE_DRIVER_START( battleg )
4303 
4304 	/* basic machine hardware */
4305 	MDRV_CPU_ADD(M68000,32000000/2)			/* 16MHz , 32MHz Oscillator */
4306 	MDRV_CPU_MEMORY(battleg_readmem,battleg_writemem)
4307 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq4,262)
4308 
4309 	MDRV_CPU_ADD(Z80,32000000/8)			/* 4MHz , 32MHz Oscillator */
4310 	MDRV_CPU_MEMORY(battleg_sound_readmem,battleg_sound_writemem)
4311 
4312 	MDRV_FRAMES_PER_SECOND(60)
4313 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
4314 	MDRV_INTERLEAVE(10)
4315 
4316 	MDRV_MACHINE_INIT(toaplan2)
4317 
4318 	/* video hardware */
4319 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
4320 	MDRV_SCREEN_SIZE(32*16, 32*16)
4321 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
4322 	MDRV_GFXDECODE(raizing_gfxdecodeinfo)
4323 	MDRV_PALETTE_LENGTH(2048)
4324 
4325 	MDRV_VIDEO_START(battleg_0)
4326 	MDRV_VIDEO_EOF(toaplan2_0)
4327 	MDRV_VIDEO_UPDATE(truxton2_0)
4328 
4329 	/* sound hardware */
4330 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
4331 	MDRV_SOUND_ADD(YM2151, raizing_ym2151_interface)
4332 	MDRV_SOUND_ADD(OKIM6295, battleg_okim6295_interface)
4333 MACHINE_DRIVER_END
4334 
4335 
4336 static MACHINE_DRIVER_START( batrider )
4337 
4338 	/* basic machine hardware */
4339 	MDRV_CPU_ADD(M68000,32000000/2)			/* 16MHz , 32MHz Oscillator */
4340 	MDRV_CPU_MEMORY(batrider_readmem,batrider_writemem)
4341 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq2,262)
4342 
4343 	MDRV_CPU_ADD(Z80,32000000/8)			/* 4MHz , 32MHz Oscillator */
4344 	MDRV_CPU_MEMORY(batrider_sound_readmem,batrider_sound_writemem)
4345 	MDRV_CPU_PORTS(batrider_sound_readport,batrider_sound_writeport)
4346 
4347 	MDRV_FRAMES_PER_SECOND(60)
4348 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
4349 	MDRV_INTERLEAVE(10)
4350 
4351 	MDRV_MACHINE_INIT(batrider)
4352 
4353 	/* video hardware */
4354 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
4355 	MDRV_SCREEN_SIZE(32*16, 32*16)
4356 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
4357 	MDRV_GFXDECODE(batrider_gfxdecodeinfo)
4358 	MDRV_PALETTE_LENGTH(2048)
4359 
4360 	MDRV_VIDEO_START(batrider_0)
4361 	MDRV_VIDEO_EOF(batrider_0)
4362 	MDRV_VIDEO_UPDATE(batrider_0)
4363 
4364 	/* sound hardware */
4365 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
4366 	MDRV_SOUND_ADD(YM2151, raizing_ym2151_interface)
4367 	MDRV_SOUND_ADD(OKIM6295, batrider_okim6295_interface)
4368 MACHINE_DRIVER_END
4369 
4370 static MACHINE_DRIVER_START( bbakraid )
4371 
4372 	/* basic machine hardware */
4373 	MDRV_CPU_ADD(M68000,32000000/2)
4374 	MDRV_CPU_MEMORY(bbakraid_readmem,bbakraid_writemem)
4375 	MDRV_CPU_VBLANK_INT(toaplan2_vblank_irq3,262)
4376 
4377 	MDRV_CPU_ADD(Z80,32000000/4)
4378 	MDRV_CPU_MEMORY(bbakraid_sound_readmem,bbakraid_sound_writemem)
4379 	MDRV_CPU_PORTS(bbakraid_sound_readport,bbakraid_sound_writeport)
4380 	MDRV_CPU_PERIODIC_INT(bbakraid_snd_interrupt, 388)
4381 	MDRV_FRAMES_PER_SECOND(60)
4382 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
4383 	MDRV_INTERLEAVE(262)
4384 
4385 	MDRV_MACHINE_INIT(toaplan2)
4386 	MDRV_NVRAM_HANDLER(bbakraid)
4387 
4388 	/* video hardware */
4389 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK)
4390 	MDRV_SCREEN_SIZE(32*16, 32*16)
4391 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
4392 	MDRV_GFXDECODE(batrider_gfxdecodeinfo)
4393 	MDRV_PALETTE_LENGTH(2048)
4394 
4395 	MDRV_VIDEO_START(batrider_0)
4396 	MDRV_VIDEO_UPDATE(batrider_0)
4397 
4398 	/* sound hardware */
4399 	MDRV_SOUND_ADD(YMZ280B, ymz280b_interface)
4400 MACHINE_DRIVER_END
4401 
4402 
4403 
4404 /***************************************************************************
4405 
4406   Game driver(s)
4407 
4408 ***************************************************************************/
4409 
4410 /* -------------------------- Toaplan games ------------------------- */
4411 ROM_START( tekipaki )
4412 	ROM_REGION( 0x020000, REGION_CPU1, 0 )			/* Main 68K code */
4413 	ROM_LOAD16_BYTE( "tp020-1.bin", 0x000000, 0x010000, CRC(d8420bd5) SHA1(30c1ad9e053cd7e79adb42aa428ebee28e144755) )
4414 	ROM_LOAD16_BYTE( "tp020-2.bin", 0x000001, 0x010000, CRC(7222de8e) SHA1(8352ae23efc24a2e20cc24b6d37cb8fc6b1a730c) )
4415 
4416 #if HD64x180
4417 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Sound HD647180 code */
4418 	/* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
4419 	ROM_LOAD( "hd647180.020", 0x00000, 0x08000, NO_DUMP )
4420 #endif
4421 
4422 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )
4423 	ROM_LOAD( "tp020-4.bin", 0x000000, 0x080000, CRC(3ebbe41e) SHA1(cea196c5f83e1a23d5b538a0db9bbbffa7af5118) )
4424 	ROM_LOAD( "tp020-3.bin", 0x080000, 0x080000, CRC(2d5e2201) SHA1(5846c844eedd48305c1c67dc645b6e070b3f5b98) )
4425 ROM_END
4426 
4427 ROM_START( ghox )
4428 	ROM_REGION( 0x040000, REGION_CPU1, 0 )			/* Main 68K code */
4429 	ROM_LOAD16_BYTE( "tp021-01.u10", 0x000000, 0x020000, CRC(9e56ac67) SHA1(daf241d9e55a6e60fc004ed61f787641595b1e62) )
4430 	ROM_LOAD16_BYTE( "tp021-02.u11", 0x000001, 0x020000, CRC(15cac60f) SHA1(6efa3a50a5dfe6ef4072738d6a7d0d95dca8a675) )
4431 
4432 #if HD64x180
4433 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Sound HD647180 code */
4434 	/* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
4435 	ROM_LOAD( "hd647180.021", 0x00000, 0x08000, NO_DUMP )
4436 #endif
4437 
4438 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )
4439 	ROM_LOAD( "tp021-03.u36", 0x000000, 0x080000, CRC(a15d8e9d) SHA1(640a33997bdce8e84bea6a944139716379839037) )
4440 	ROM_LOAD( "tp021-04.u37", 0x080000, 0x080000, CRC(26ed1c9a) SHA1(37da8af86ea24327444c2d4ad3dfbd936208d43d) )
4441 ROM_END
4442 
4443 ROM_START( dogyuun )
4444 	ROM_REGION( 0x080000, REGION_CPU1, 0 )			/* Main 68K code */
4445 	ROM_LOAD16_WORD( "tp022_01.r16", 0x000000, 0x080000, CRC(72f18907) SHA1(9d1b3800764a63e046644c78a2e0339280e038cb) )
4446 
4447 	/* Secondary CPU is a Toaplan marked chip, (TS-002-MACH  TOA PLAN) */
4448 	/* Its a Z?80 of some sort - 94 pin chip. */
4449 #if Zx80
4450 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Secondary CPU code */
4451 	/* Secondary CPU is a Toaplan marked chip ??? */
4452 //	ROM_LOAD( "tp022.mcu", 0x00000, 0x08000, NO_DUMP )
4453 #endif
4454 
4455 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
4456 	ROM_LOAD16_WORD_SWAP( "tp022_3.w92", 0x000000, 0x100000, CRC(191b595f) SHA1(89344946daa18087cc83f92027cf5da659b1c7a5) )
4457 	ROM_LOAD16_WORD_SWAP( "tp022_4.w93", 0x100000, 0x100000, CRC(d58d29ca) SHA1(90d142fef37764ef817347a2bed77892a288a077) )
4458 
4459 	ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE )
4460 	ROM_LOAD16_WORD_SWAP( "tp022_5.w16", 0x000000, 0x200000, CRC(d4c1db45) SHA1(f5655467149ba737128c2f54c9c6cdaca6e4c35c) )
4461 	ROM_LOAD16_WORD_SWAP( "tp022_6.w17", 0x200000, 0x200000, CRC(d48dc74f) SHA1(081b5a00a2ff2bd82b98b30aab3cb5b6ae1014d5) )
4462 
4463 	ROM_REGION( 0x40000, REGION_SOUND1, 0 )		/* ADPCM Samples */
4464 	ROM_LOAD( "tp022_2.w30", 0x00000, 0x40000, CRC(043271b3) SHA1(c7eaa929e55dd956579b824ea9d20a1d0129a925) )
4465 ROM_END
4466 
4467 ROM_START( kbash )
4468 	ROM_REGION( 0x080000, REGION_CPU1, 0 )			/* Main 68K code */
4469 	ROM_LOAD16_WORD_SWAP( "kbash01.bin", 0x000000, 0x080000, CRC(2965f81d) SHA1(46f2df30fa92c80ba5a37f75e756424e15534784) )
4470 
4471 	/* Secondary CPU is a Toaplan marked chip, (TS-004-Dash  TOA PLAN) */
4472 	/* Its a Z?80 of some sort - 94 pin chip. */
4473 #if Zx80
4474 	ROM_REGION( 0x88000, REGION_CPU2, 0 )			/* Sound Z?80 code */
4475 	ROM_LOAD( "kbash02.bin", 0x80000, 0x08000, CRC(4cd882a1) SHA1(7199a5c384918f775f0815e09c46b2a58141814a) )
4476 #else
4477 	ROM_REGION( 0x08000, REGION_USER1, 0 )
4478 	ROM_LOAD( "kbash02.bin", 0x00200, 0x07e00, CRC(4cd882a1) SHA1(7199a5c384918f775f0815e09c46b2a58141814a) )
4479 	ROM_CONTINUE(			 0x00000, 0x00200 )
4480 #endif
4481 
4482 	ROM_REGION( 0x800000, REGION_GFX1, ROMREGION_DISPOSE )
4483 	ROM_LOAD( "kbash03.bin", 0x000000, 0x200000, CRC(32ad508b) SHA1(e473489beaf649d3e5236770eb043327e309850c) )
4484 	ROM_LOAD( "kbash05.bin", 0x200000, 0x200000, CRC(b84c90eb) SHA1(17a1531d884d9a9696d1b25d65f9155f02396e0e) )
4485 	ROM_LOAD( "kbash04.bin", 0x400000, 0x200000, CRC(e493c077) SHA1(0edcfb70483ad07206695d9283031b85cd198a36) )
4486 	ROM_LOAD( "kbash06.bin", 0x600000, 0x200000, CRC(9084b50a) SHA1(03b58278619524d2f09a4b1c152d5e057e792a56) )
4487 
4488 	ROM_REGION( 0x40000, REGION_SOUND1, 0 )		/* ADPCM Samples */
4489 	ROM_LOAD( "kbash07.bin", 0x00000, 0x40000, CRC(3732318f) SHA1(f0768459f5ad2dee53d408a0a5ae3a314864e667) )
4490 ROM_END
4491 
4492 ROM_START( truxton2 )
4493 	ROM_REGION( 0x080000, REGION_CPU1, 0 )			/* Main 68K code */
4494 	ROM_LOAD16_WORD( "tp024_1.bin", 0x000000, 0x080000, CRC(f5cfe6ee) SHA1(30979888a4cd6500244117748f28386a7e20a169) )
4495 
4496 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
4497 	ROM_LOAD( "tp024_4.bin", 0x000000, 0x100000, CRC(805c449e) SHA1(fdf985344145bd320b88b9b0c25e73066c9b2ada) )
4498 	ROM_LOAD( "tp024_3.bin", 0x100000, 0x100000, CRC(47587164) SHA1(bac493e2d5507286b984957b289c929335d27eaa) )
4499 
4500 	ROM_REGION( 0x80000, REGION_SOUND1, 0 )			/* ADPCM Samples */
4501 	ROM_LOAD( "tp024_2.bin", 0x00000, 0x80000, CRC(f2f6cae4) SHA1(bb4e8c36531bed97ced4696ca12fd40ede2531aa) )
4502 ROM_END
4503 
4504 ROM_START( pipibibs )
4505 	ROM_REGION( 0x040000, REGION_CPU1, 0 )			/* Main 68K code */
4506 	ROM_LOAD16_BYTE( "tp025-1.bin", 0x000000, 0x020000, CRC(b2ea8659) SHA1(400431b656dbfbd5a9bc5961c3ea04c4d38b6f77) )
4507 	ROM_LOAD16_BYTE( "tp025-2.bin", 0x000001, 0x020000, CRC(dc53b939) SHA1(e4de371f97ba7c350273ad43b7f58ff31672a269) )
4508 
4509 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Sound Z80 code */
4510 	ROM_LOAD( "tp025-5.bin", 0x0000, 0x8000, CRC(bf8ffde5) SHA1(79c09cc9a0ea979f5af5a7e5ad671ea486f5f43e) )
4511 
4512 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
4513 	ROM_LOAD( "tp025-4.bin", 0x000000, 0x100000, CRC(ab97f744) SHA1(c1620e614345dbd5c6567e4cb6f55c61b900d0ee) )
4514 	ROM_LOAD( "tp025-3.bin", 0x100000, 0x100000, CRC(7b16101e) SHA1(ae0119bbfa0937d18c4fbb0a3ef7cdc3b9fa6b56) )
4515 ROM_END
4516 
4517 ROM_START( whoopee )
4518 	ROM_REGION( 0x040000, REGION_CPU1, 0 )			/* Main 68K code */
4519 	ROM_LOAD16_BYTE( "whoopee.1", 0x000000, 0x020000, CRC(28882e7e) SHA1(8fcd278a7d005eb81cd9e461139c0c0f756a4fa4) )
4520 	ROM_LOAD16_BYTE( "whoopee.2", 0x000001, 0x020000, CRC(6796f133) SHA1(d4e657be260ba3fd3f0556ade617882513b52685) )
4521 
4522 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Sound Z80 code */
4523 	/* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
4524 	/* use the Z80 version from the bootleg Pipi & Bibis set for now */
4525 	ROM_LOAD( "hd647180.025", 0x00000, 0x08000, BAD_DUMP CRC(101c0358) SHA1(162e02d00b7bdcdd3b48a0cd0527b7428435ec50)  )
4526 
4527 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
4528 	ROM_LOAD( "tp025-4.bin", 0x000000, 0x100000, CRC(ab97f744) SHA1(c1620e614345dbd5c6567e4cb6f55c61b900d0ee) )
4529 	ROM_LOAD( "tp025-3.bin", 0x100000, 0x100000, CRC(7b16101e) SHA1(ae0119bbfa0937d18c4fbb0a3ef7cdc3b9fa6b56) )
4530 ROM_END
4531 
4532 ROM_START( pipibibi )
4533 	ROM_REGION( 0x040000, REGION_CPU1, 0 )			/* Main 68K code */
4534 	ROM_LOAD16_BYTE( "ppbb06.bin", 0x000000, 0x020000, CRC(14c92515) SHA1(2d7f7c89272bb2a8115f163ad651bef3bca5107e) )
4535 	ROM_LOAD16_BYTE( "ppbb05.bin", 0x000001, 0x020000, CRC(3d51133c) SHA1(d7bd94ad11e9aeb5a5165c5ac6f71950849bcd2f) )
4536 
4537 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Sound Z80 code */
4538 	ROM_LOAD( "ppbb08.bin", 0x0000, 0x8000, CRC(101c0358) SHA1(162e02d00b7bdcdd3b48a0cd0527b7428435ec50) )
4539 
4540 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
4541 	/* GFX data differs slightly from Toaplan boards ??? */
4542 	ROM_LOAD16_BYTE( "ppbb01.bin", 0x000000, 0x080000, CRC(0fcae44b) SHA1(ac72bc79e3a5d0a81647c312d310d00ace017272) )
4543 	ROM_LOAD16_BYTE( "ppbb02.bin", 0x000001, 0x080000, CRC(8bfcdf87) SHA1(4537a7d646d3014f069c6fd0be457bb32e2f18ac) )
4544 	ROM_LOAD16_BYTE( "ppbb03.bin", 0x100000, 0x080000, CRC(abdd2b8b) SHA1(a4246dd63515f01d1227c9a9e16d9f1c739ee39e) )
4545 	ROM_LOAD16_BYTE( "ppbb04.bin", 0x100001, 0x080000, CRC(70faa734) SHA1(4448f4dbded56c142e57293d371e0a422c3a667e) )
4546 
4547 	ROM_REGION( 0x8000, REGION_USER1, 0 )			/* ??? Some sort of table */
4548 	ROM_LOAD( "ppbb07.bin", 0x0000, 0x8000, CRC(456dd16e) SHA1(84779ee64d3ea33ba1ba4dee39b504a81c6811a1) )
4549 ROM_END
4550 
4551 ROM_START( fixeight )
4552 	ROM_REGION( 0x080000, REGION_CPU1, 0 )			/* Main 68K code */
4553 	ROM_LOAD16_WORD_SWAP( "tp-026-1", 0x000000, 0x080000, CRC(f7b1746a) )
4554 
4555 #if Zx80
4556 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Secondary CPU code */
4557 	/* Secondary CPU is a Toaplan marked chip, (TS-001-Turbo  TOA PLAN) */
4558 	/* Its a Z?80 of some sort - 94 pin chip. */
4559 //	ROM_LOAD( "tp-026.mcu", 0x0000, 0x8000, NO_DUMP )
4560 #endif
4561 
4562 	ROM_REGION( 0x400000, REGION_GFX1, ROMREGION_DISPOSE )
4563 	ROM_LOAD( "tp-026-3", 0x000000, 0x200000, CRC(e5578d98) )
4564 	ROM_LOAD( "tp-026-4", 0x200000, 0x200000, CRC(b760cb53) )
4565 
4566 	ROM_REGION( 0x40000, REGION_SOUND1, 0 )			/* ADPCM Samples */
4567 	ROM_LOAD( "tp-026-2", 0x00000, 0x40000, CRC(85063f1f) )
4568 
4569 	ROM_REGION( 0x80, REGION_USER1, 0 )
4570 	/* Serial EEPROM (93C45) connected to Secondary CPU */
4571 	ROM_LOAD( "93c45.u21", 0x00, 0x80, CRC(40d75df0) )
4572 ROM_END
4573 
4574 ROM_START( grindstm )
4575 	ROM_REGION( 0x080000, REGION_CPU1, 0 )			/* Main 68K code */
4576 	ROM_LOAD16_WORD_SWAP( "01.bin", 0x000000, 0x080000, CRC(4923f790) SHA1(1c2d66b432d190d0fb6ac7ca0ec0687aea3ccbf4) )
4577 
4578 #if Zx80
4579 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Sound CPU code */
4580 	/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4581 	/* Its a Z?80 of some sort - 94 pin chip. */
4582 //	ROM_LOAD( "tp027.mcu", 0x8000, 0x8000, NO_DUMP )
4583 #endif
4584 
4585 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
4586 	ROM_LOAD( "tp027_02.bin", 0x000000, 0x100000, CRC(877b45e8) SHA1(b3ed8d8dbbe51a1919afc55d619d2b6771971493) )
4587 	ROM_LOAD( "tp027_03.bin", 0x100000, 0x100000, CRC(b1fc6362) SHA1(5e97e3cce31be57689d394a50178cda4d80cce5f) )
4588 ROM_END
4589 
4590 ROM_START( grindsta )
4591 	ROM_REGION( 0x080000, REGION_CPU1, 0 )			/* Main 68K code */
4592 	ROM_LOAD16_WORD_SWAP( "tp027-01.rom", 0x000000, 0x080000, CRC(8d8c0392) SHA1(824dde274c8bef8a87c54d8ccdda7f0feb8d11e1) )
4593 
4594 #if Zx80
4595 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Sound CPU code */
4596 	/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4597 	/* Its a Z?80 of some sort - 94 pin chip. */
4598 //	ROM_LOAD( "tp027.mcu", 0x8000, 0x8000, NO_DUMP )
4599 #endif
4600 
4601 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
4602 	ROM_LOAD( "tp027_02.bin", 0x000000, 0x100000, CRC(877b45e8) SHA1(b3ed8d8dbbe51a1919afc55d619d2b6771971493) )
4603 	ROM_LOAD( "tp027_03.bin", 0x100000, 0x100000, CRC(b1fc6362) SHA1(5e97e3cce31be57689d394a50178cda4d80cce5f) )
4604 ROM_END
4605 
4606 ROM_START( vfive )
4607 	ROM_REGION( 0x080000, REGION_CPU1, 0 )			/* Main 68K code */
4608 	ROM_LOAD16_WORD_SWAP( "tp027_01.bin", 0x000000, 0x080000, CRC(731d50f4) SHA1(794255d0a809cda9170f5bac473df9d7f0efdac8) )
4609 
4610 #if Zx80
4611 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Sound CPU code */
4612 	/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4613 	/* Its a Z?80 of some sort - 94 pin chip. */
4614 //	ROM_LOAD( "tp027.mcu", 0x8000, 0x8000, NO_DUMP )
4615 #endif
4616 
4617 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
4618 	ROM_LOAD( "tp027_02.bin", 0x000000, 0x100000, CRC(877b45e8) SHA1(b3ed8d8dbbe51a1919afc55d619d2b6771971493) )
4619 	ROM_LOAD( "tp027_03.bin", 0x100000, 0x100000, CRC(b1fc6362) SHA1(5e97e3cce31be57689d394a50178cda4d80cce5f) )
4620 ROM_END
4621 
4622 ROM_START( batsugun )
4623 	ROM_REGION( 0x080000, REGION_CPU1, 0 )			/* Main 68K code */
4624 	ROM_LOAD16_WORD_SWAP( "tp030_01.bin", 0x000000, 0x080000, CRC(3873d7dd) SHA1(baf6187d7d554cfcf4a86b63f07fc30df7ef84c9) )
4625 
4626 #if Zx80
4627 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Sound CPU code */
4628 	/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4629 	/* Its a Z?80 of some sort - 94 pin chip. */
4630 //	ROM_LOAD( "tp030.mcu", 0x8000, 0x8000, NO_DUMP )
4631 #endif
4632 
4633 	ROM_REGION( 0x400000, REGION_GFX1, ROMREGION_DISPOSE )
4634 	ROM_LOAD( "tp030_3l.bin", 0x000000, 0x100000, CRC(3024b793) SHA1(e161db940f069279356fca2c5bf2753f07773705) )
4635 	ROM_LOAD( "tp030_3h.bin", 0x100000, 0x100000, CRC(ed75730b) SHA1(341f0f728144a049486d996c9bb14078578c6879) )
4636 	ROM_LOAD( "tp030_4l.bin", 0x200000, 0x100000, CRC(fedb9861) SHA1(4b0917056bd359b21935358c6bcc729262be6417) )
4637 	ROM_LOAD( "tp030_4h.bin", 0x300000, 0x100000, CRC(d482948b) SHA1(31be7dc5cff072403b783bf203b9805ffcad7284) )
4638 
4639 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
4640 	ROM_LOAD( "tp030_5.bin",  0x000000, 0x100000, CRC(bcf5ba05) SHA1(40f98888a29cdd30cda5dfb60fdc667c69b0fdb0) )
4641 	ROM_LOAD( "tp030_6.bin",  0x100000, 0x100000, CRC(0666fecd) SHA1(aa8f921fc51590b5b05bbe0b0ad0cce5ff359c64) )
4642 
4643 	ROM_REGION( 0x40000, REGION_SOUND1, 0 )			/* ADPCM Samples */
4644 	ROM_LOAD( "tp030_2.bin", 0x00000, 0x40000, CRC(276146f5) SHA1(bf11d1f6782cefcad77d52af4f7e6054a8f93440) )
4645 ROM_END
4646 
4647 ROM_START( batugnsp )
4648 	ROM_REGION( 0x080000, REGION_CPU1, 0 )			/* Main 68K code */
4649 	ROM_LOAD16_WORD_SWAP( "tp030-sp.u69", 0x000000, 0x080000, CRC(8072a0cd) SHA1(3a0a9cdf894926a16800c4882a2b00383d981367) )
4650 
4651 #if Zx80
4652 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Sound CPU code */
4653 	/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4654 	/* Its a Z?80 of some sort - 94 pin chip. */
4655 //	ROM_LOAD( "tp030.mcu", 0x8000, 0x8000, NO_DUMP )
4656 #endif
4657 
4658 	ROM_REGION( 0x400000, REGION_GFX1, ROMREGION_DISPOSE )
4659 	ROM_LOAD( "tp030_3l.bin", 0x000000, 0x100000, CRC(3024b793) SHA1(e161db940f069279356fca2c5bf2753f07773705) )
4660 	ROM_LOAD( "tp030_3h.bin", 0x100000, 0x100000, CRC(ed75730b) SHA1(341f0f728144a049486d996c9bb14078578c6879) )
4661 	ROM_LOAD( "tp030_4l.bin", 0x200000, 0x100000, CRC(fedb9861) SHA1(4b0917056bd359b21935358c6bcc729262be6417) )
4662 	ROM_LOAD( "tp030_4h.bin", 0x300000, 0x100000, CRC(d482948b) SHA1(31be7dc5cff072403b783bf203b9805ffcad7284) )
4663 
4664 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
4665 	ROM_LOAD( "tp030_5.bin",  0x000000, 0x100000, CRC(bcf5ba05) SHA1(40f98888a29cdd30cda5dfb60fdc667c69b0fdb0) )
4666 	ROM_LOAD( "tp030_6.bin",  0x100000, 0x100000, CRC(0666fecd) SHA1(aa8f921fc51590b5b05bbe0b0ad0cce5ff359c64) )
4667 
4668 	ROM_REGION( 0x40000, REGION_SOUND1, 0 )			/* ADPCM Samples */
4669 	ROM_LOAD( "tp030_2.bin", 0x00000, 0x40000, CRC(276146f5) SHA1(bf11d1f6782cefcad77d52af4f7e6054a8f93440) )
4670 ROM_END
4671 
4672 ROM_START( snowbro2 )
4673 	ROM_REGION( 0x080000, REGION_CPU1, 0 )			/* Main 68K code */
4674 	ROM_LOAD16_WORD_SWAP( "pro-4", 0x000000, 0x080000, CRC(4c7ee341) SHA1(ad46c605a38565d0148daac301be4e4b72302fe7) )
4675 
4676 	ROM_REGION( 0x300000, REGION_GFX1, ROMREGION_DISPOSE )
4677 	ROM_LOAD( "rom2-l", 0x000000, 0x100000, CRC(e9d366a9) SHA1(e87e3966fce3395324b90db6c134b3345104c04b) )
4678 	ROM_LOAD( "rom2-h", 0x100000, 0x080000, CRC(9aab7a62) SHA1(611f6a15fdbac5d3063426a365538c1482e996bf) )
4679 	ROM_LOAD( "rom3-l", 0x180000, 0x100000, CRC(eb06e332) SHA1(7cd597bfffc153d178530c0f0903bebd751c9dd1) )
4680 	ROM_LOAD( "rom3-h", 0x280000, 0x080000, CRC(df4a952a) SHA1(b76af61c8437caca573ff1312832898666a611aa) )
4681 
4682 	ROM_REGION( 0x80000, REGION_SOUND1, 0 )			/* ADPCM Samples */
4683 	ROM_LOAD( "rom4", 0x00000, 0x80000, CRC(638f341e) SHA1(aa3fca25f099339ece1878ea730c5e9f18ec4823) )
4684 ROM_END
4685 
4686 /* -------------------------- Raizing games ------------------------- */
4687 
4688 ROM_START( sstriker )
4689 	ROM_REGION( 0x080000, REGION_CPU1, 0 )			/* Main 68K code */
4690 	ROM_LOAD16_WORD_SWAP( "ra-ma-01.01", 0x000000, 0x080000, CRC(92259f84) SHA1(127e62e407d95efd360bfe2cac9577f326abf6ef) )
4691 
4692 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Sound Z80 code */
4693 	ROM_LOAD( "ra_ma_01.02", 0x00000, 0x10000, CRC(eabfa46d) SHA1(402c99ebf88f9025f74f0a28ced22b7882a65eb3) )
4694 
4695 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
4696 	ROM_LOAD( "ra_ma_01.03",  0x000000, 0x100000, CRC(54e2bd95) SHA1(341359dd46152615675bb90e8a184216c8feebff) )
4697 	ROM_LOAD( "ra_ma_01.04",  0x100000, 0x100000, CRC(21cd378f) SHA1(e1695bccec949d18b1c03e9c42dca384554b0d7c) )
4698 
4699 	ROM_REGION( 0x008000, REGION_GFX2, ROMREGION_DISPOSE )
4700 	ROM_LOAD( "ra-ma-01.05",  0x000000, 0x008000, CRC(88b58841) SHA1(1d16b538c11a291bd1f46a510bfbd6259b45a0b5) )
4701 
4702 	ROM_REGION( 0x40000, REGION_SOUND1, 0 )			/* ADPCM Samples */
4703 	ROM_LOAD( "ra_ma_01.06", 0x00000, 0x40000, CRC(6edb2ab8) SHA1(e3032e8eda2686f30df4b7a088c5a4d4d45782ed) )
4704 ROM_END
4705 
4706 ROM_START( mahoudai )
4707 	ROM_REGION( 0x080000, REGION_CPU1, 0 )			/* Main 68K code */
4708 	ROM_LOAD16_WORD_SWAP( "ra_ma_01.01", 0x000000, 0x080000, CRC(970ccc5c) SHA1(c87cab83bde0284e631f02e50068407fee81d941) )
4709 
4710 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Sound Z80 code */
4711 	ROM_LOAD( "ra_ma_01.02", 0x00000, 0x10000, CRC(eabfa46d) SHA1(402c99ebf88f9025f74f0a28ced22b7882a65eb3) )
4712 
4713 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
4714 	ROM_LOAD( "ra_ma_01.03",  0x000000, 0x100000, CRC(54e2bd95) SHA1(341359dd46152615675bb90e8a184216c8feebff) )
4715 	ROM_LOAD( "ra_ma_01.04",  0x100000, 0x100000, CRC(21cd378f) SHA1(e1695bccec949d18b1c03e9c42dca384554b0d7c) )
4716 
4717 	ROM_REGION( 0x008000, REGION_GFX2, ROMREGION_DISPOSE )
4718 	ROM_LOAD( "ra_ma_01.05",  0x000000, 0x008000, CRC(c00d1e80) SHA1(53e64c4c0c6309130b37597d13b44a9e95b717d8) )
4719 
4720 	ROM_REGION( 0x40000, REGION_SOUND1, 0 )			/* ADPCM Samples */
4721 	ROM_LOAD( "ra_ma_01.06", 0x00000, 0x40000, CRC(6edb2ab8) SHA1(e3032e8eda2686f30df4b7a088c5a4d4d45782ed) )
4722 ROM_END
4723 
4724 ROM_START( kingdmgp )
4725 	ROM_REGION( 0x100000, REGION_CPU1, 0 )			/* Main 68K code */
4726 	ROM_LOAD16_BYTE( "ma02rom1.bin", 0x000000, 0x080000, CRC(a678b149) SHA1(8c1a631e023dbba0a3fa6cd1b7d10dec1663213a) )
4727 	ROM_LOAD16_BYTE( "ma02rom0.bin", 0x000001, 0x080000, CRC(f226a212) SHA1(526acf3d05fdc88054a772fbea3de2af532bf3d2) )
4728 
4729 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Sound Z80 code */
4730 	ROM_LOAD( "ma02rom2.bin", 0x00000, 0x10000, CRC(dde8a57e) SHA1(f522a3f17e229c71512464349760a9e27778bf6a) )
4731 
4732 	ROM_REGION( 0x400000, REGION_GFX1, ROMREGION_DISPOSE )
4733 	ROM_LOAD( "ma02rom3.bin",  0x000000, 0x200000, CRC(0e797142) SHA1(a480ccd151e49b886d3175a6deff56e1f2c26c3e) )
4734 	ROM_LOAD( "ma02rom4.bin",  0x200000, 0x200000, CRC(72a6fa53) SHA1(ce92e65205b84361cfb90305a61e9541b5c4dc2f) )
4735 
4736 	ROM_REGION( 0x008000, REGION_GFX2, ROMREGION_DISPOSE )
4737 	ROM_LOAD( "ma02rom5.eng",  0x000000, 0x008000, CRC(8c28460b) SHA1(0aed170762f6044896a7e608df60bbd37c583a71) )
4738 
4739 	ROM_REGION( 0x80000, REGION_SOUND1, 0 )			/* ADPCM Samples */
4740 	ROM_LOAD( "ma02rom6.bin", 0x00000, 0x80000, CRC(199e7cae) SHA1(0f5e13cc8ec42c80bb4bbff90aba29cdb15213d4) )
4741 ROM_END
4742 
4743 ROM_START( shippumd )
4744 	ROM_REGION( 0x100000, REGION_CPU1, 0 )			/* Main 68K code */
4745 	ROM_LOAD16_BYTE( "ma02rom1.bin", 0x000000, 0x080000, CRC(a678b149) SHA1(8c1a631e023dbba0a3fa6cd1b7d10dec1663213a) )
4746 	ROM_LOAD16_BYTE( "ma02rom0.bin", 0x000001, 0x080000, CRC(f226a212) SHA1(526acf3d05fdc88054a772fbea3de2af532bf3d2) )
4747 
4748 	ROM_REGION( 0x10000, REGION_CPU2, 0 )			/* Sound Z80 code */
4749 	ROM_LOAD( "ma02rom2.bin", 0x00000, 0x10000, CRC(dde8a57e) SHA1(f522a3f17e229c71512464349760a9e27778bf6a) )
4750 
4751 	ROM_REGION( 0x400000, REGION_GFX1, ROMREGION_DISPOSE )
4752 	ROM_LOAD( "ma02rom3.bin",  0x000000, 0x200000, CRC(0e797142) SHA1(a480ccd151e49b886d3175a6deff56e1f2c26c3e) )
4753 	ROM_LOAD( "ma02rom4.bin",  0x200000, 0x200000, CRC(72a6fa53) SHA1(ce92e65205b84361cfb90305a61e9541b5c4dc2f) )
4754 
4755 	ROM_REGION( 0x008000, REGION_GFX2, ROMREGION_DISPOSE )
4756 	ROM_LOAD( "ma02rom5.bin",  0x000000, 0x008000, CRC(116ae559) SHA1(4cc2d2a23cc0aefd457111b7990e47184e79204c) )
4757 
4758 	ROM_REGION( 0x80000, REGION_SOUND1, 0 )			/* ADPCM Samples */
4759 	ROM_LOAD( "ma02rom6.bin", 0x00000, 0x80000, CRC(199e7cae) SHA1(0f5e13cc8ec42c80bb4bbff90aba29cdb15213d4) )
4760 ROM_END
4761 
4762 ROM_START( battleg )
4763 	ROM_REGION( 0x100000, REGION_CPU1, 0 )			/* Main 68K code */
4764 	ROM_LOAD16_BYTE( "u123", 0x000000, 0x080000, CRC(88a4e66a) SHA1(ca97e564eed0c5e028b937312e55da56400d5c8c) )
4765 	ROM_LOAD16_BYTE( "u65",  0x000001, 0x080000, CRC(5dea32a3) SHA1(59df6689e3eb5ea9e49a758604d21a64c65ca14d) )
4766 
4767 	ROM_REGION( 0x28000, REGION_CPU2, 0 )			/* Sound Z80 code + bank */
4768 	ROM_LOAD( "snd.bin", 0x00000, 0x08000, CRC(68632952) SHA1(fb834db83157948e2b420b6051102a9c6ac3969b) )
4769 	ROM_CONTINUE(        0x10000, 0x18000 )
4770 
4771 	ROM_REGION( 0x800000, REGION_GFX1, ROMREGION_DISPOSE )
4772 	ROM_LOAD( "rom4.bin",  0x000000, 0x200000, CRC(b333d81f) SHA1(5481465f1304334fd55798be2f44324c57c2dbcb) )
4773 	ROM_LOAD( "rom3.bin",  0x200000, 0x200000, CRC(51b9ebfb) SHA1(30e0c326f5175aa436df8dba08f6f4e08130b92f) )
4774 	ROM_LOAD( "rom2.bin",  0x400000, 0x200000, CRC(b330e5e2) SHA1(5d48e9d56f99d093b6390e0af1609fd796df2d35) )
4775 	ROM_LOAD( "rom1.bin",  0x600000, 0x200000, CRC(7eafdd70) SHA1(7c8da8e86c3f9491719b1d7d5d285568d7614f38) )
4776 
4777 	ROM_REGION( 0x010000, REGION_GFX2, ROMREGION_DISPOSE )
4778 	ROM_LOAD( "text.u81", 0x00000, 0x08000, CRC(e67fd534) SHA1(987d0edffc2c243a13d4567319ea3d185eaadbf8) )
4779 
4780 	ROM_REGION( 0x140000, REGION_SOUND1, 0 )		/* ADPCM Samples */
4781 	ROM_LOAD( "rom5.bin", 0x040000, 0x100000, CRC(f6d49863) SHA1(3a3c354852adad06e8a051511abfab7606bce382) )
4782 ROM_END
4783 
4784 ROM_START( battlega )
4785 	ROM_REGION( 0x100000, REGION_CPU1, 0 )			/* Main 68K code */
4786 	ROM_LOAD16_BYTE( "prg0.bin", 0x000000, 0x080000, CRC(f80c2fc2) SHA1(a9aac5c7f5439b6fe8d1b3db1fb02a27cc28fdf6) )
4787 	ROM_LOAD16_BYTE( "prg1.bin", 0x000001, 0x080000, CRC(2ccfdd1e) SHA1(7a9f11f851854f3f8389b9c3c0906ebb8dc28712) )
4788 
4789 	ROM_REGION( 0x28000, REGION_CPU2, 0 )			/* Sound Z80 code + bank */
4790 	ROM_LOAD( "snd.bin", 0x00000, 0x08000, CRC(68632952) SHA1(fb834db83157948e2b420b6051102a9c6ac3969b) )
4791 	ROM_CONTINUE(        0x10000, 0x18000 )
4792 
4793 	ROM_REGION( 0x800000, REGION_GFX1, ROMREGION_DISPOSE )
4794 	ROM_LOAD( "rom4.bin",  0x000000, 0x200000, CRC(b333d81f) SHA1(5481465f1304334fd55798be2f44324c57c2dbcb) )
4795 	ROM_LOAD( "rom3.bin",  0x200000, 0x200000, CRC(51b9ebfb) SHA1(30e0c326f5175aa436df8dba08f6f4e08130b92f) )
4796 	ROM_LOAD( "rom2.bin",  0x400000, 0x200000, CRC(b330e5e2) SHA1(5d48e9d56f99d093b6390e0af1609fd796df2d35) )
4797 	ROM_LOAD( "rom1.bin",  0x600000, 0x200000, CRC(7eafdd70) SHA1(7c8da8e86c3f9491719b1d7d5d285568d7614f38) )
4798 
4799 	ROM_REGION( 0x010000, REGION_GFX2, ROMREGION_DISPOSE )
4800 	ROM_LOAD( "text.u81", 0x00000, 0x08000, CRC(e67fd534) SHA1(987d0edffc2c243a13d4567319ea3d185eaadbf8) )
4801 
4802 	ROM_REGION( 0x140000, REGION_SOUND1, 0 )		/* ADPCM Samples */
4803 	ROM_LOAD( "rom5.bin", 0x040000, 0x100000, CRC(f6d49863) SHA1(3a3c354852adad06e8a051511abfab7606bce382) )
4804 ROM_END
4805 
4806 ROM_START( battlegb )
4807 	ROM_REGION( 0x100000, REGION_CPU1, 0 )			/* Main 68K code */
4808 	ROM_LOAD16_BYTE( "prg_0.bin", 0x000000, 0x080000, CRC(951ecc07) SHA1(a82e4b59e4a974566e59f3ab2fbae1aec7d88a2b) )
4809 	ROM_LOAD16_BYTE( "prg_1.bin", 0x000001, 0x080000, CRC(729a60c6) SHA1(cb6f5d138bb82c32910f42d8ee16fa573a23cef3) )
4810 
4811 	ROM_REGION( 0x28000, REGION_CPU2, 0 )			/* Sound Z80 code + bank */
4812 	ROM_LOAD( "snd.bin", 0x00000, 0x08000, CRC(68632952) SHA1(fb834db83157948e2b420b6051102a9c6ac3969b) )
4813 	ROM_CONTINUE(        0x10000, 0x18000 )
4814 
4815 	ROM_REGION( 0x800000, REGION_GFX1, ROMREGION_DISPOSE )
4816 	ROM_LOAD( "rom4.bin",  0x000000, 0x200000, CRC(b333d81f) SHA1(5481465f1304334fd55798be2f44324c57c2dbcb) )
4817 	ROM_LOAD( "rom3.bin",  0x200000, 0x200000, CRC(51b9ebfb) SHA1(30e0c326f5175aa436df8dba08f6f4e08130b92f) )
4818 	ROM_LOAD( "rom2.bin",  0x400000, 0x200000, CRC(b330e5e2) SHA1(5d48e9d56f99d093b6390e0af1609fd796df2d35) )
4819 	ROM_LOAD( "rom1.bin",  0x600000, 0x200000, CRC(7eafdd70) SHA1(7c8da8e86c3f9491719b1d7d5d285568d7614f38) )
4820 
4821 	ROM_REGION( 0x010000, REGION_GFX2, ROMREGION_DISPOSE )
4822 	ROM_LOAD( "text.u81", 0x00000, 0x08000, CRC(e67fd534) SHA1(987d0edffc2c243a13d4567319ea3d185eaadbf8) )
4823 
4824 	ROM_REGION( 0x140000, REGION_SOUND1, 0 )		/* ADPCM Samples */
4825 	ROM_LOAD( "rom5.bin", 0x040000, 0x100000, CRC(f6d49863) SHA1(3a3c354852adad06e8a051511abfab7606bce382) )
4826 ROM_END
4827 
4828 ROM_START( batrider )
4829 	ROM_REGION( 0x200000, REGION_CPU1, 0 )			/* Main 68k code */
4830 	ROM_LOAD16_BYTE( "prg0b.u22", 0x000000, 0x080000, CRC(4f3fc729) SHA1(b32d51c254741b82171a86c271679522a7aefd34) )
4831 	ROM_LOAD16_BYTE( "prg1b.u23", 0x000001, 0x080000, CRC(8e70b492) SHA1(f84f2039826ae815afb058d71c1dbd190f9d524d) )
4832 	ROM_LOAD16_BYTE( "prg2.u21" , 0x100000, 0x080000, CRC(bdaa5fbf) SHA1(abd72ac633c0c8e7b4b1d7902c0d6e014ba995fe) )
4833 	ROM_LOAD16_BYTE( "prg3.u24" , 0x100001, 0x080000, CRC(7aa9f941) SHA1(99bdbad7a96d461073b06a53c50fc57c2fd6fc6d) )
4834 
4835 	ROM_REGION( 0x48000, REGION_CPU2, 0 )			/* Sound Z80 code + bank */
4836 	ROM_LOAD( "snd.u77", 0x00000, 0x08000, CRC(56682696) SHA1(a372450d9a6d535123dfc31d8116074b168ab646) )
4837 	ROM_CONTINUE(        0x10000, 0x38000 )
4838 
4839 	ROM_REGION( 0x1000000, REGION_GFX1, ROMREGION_DISPOSE )
4840 	ROM_LOAD( "rom-1.bin", 0x000000, 0x400000, CRC(0df69ca2) SHA1(49670347ebd7e1067ff988cf842b275b7ee7b5f7) )
4841 	ROM_LOAD( "rom-3.bin", 0x400000, 0x400000, CRC(60167d38) SHA1(fd2429808c59ef51fd5f5db84ea89a8dc504186e) )
4842 	ROM_LOAD( "rom-2.bin", 0x800000, 0x400000, CRC(1bfea593) SHA1(ce06dc3097ae56b0df56d104bbf7efc9b5d968d4) )
4843 	ROM_LOAD( "rom-4.bin", 0xc00000, 0x400000, CRC(bee03c94) SHA1(5bc1e6769c42857c03456426b502fcb86a114f19) )
4844 
4845 	ROM_REGION( 0x140000, REGION_SOUND1, 0 )		/* ADPCM Samples 1 */
4846 	ROM_LOAD( "rom-5.bin", 0x040000, 0x100000, CRC(4274daf6) SHA1(85557b4707d529e5914f03c7a856864f5c24950e) )
4847 
4848 	ROM_REGION( 0x140000, REGION_SOUND2, 0 )		/* ADPCM Samples 2 */
4849 	ROM_LOAD( "rom-6.bin", 0x040000, 0x100000, CRC(2a1c2426) SHA1(8abc3688ffc5ebb94b8d5118d4fa0908f07fe791) )
4850 ROM_END
4851 
4852 ROM_START( batridra )
4853 	ROM_REGION( 0x200000, REGION_CPU1, 0 )			/* Main 68k code */
4854 	ROM_LOAD16_BYTE( "prg0.bin", 0x000000, 0x080000, CRC(f93ea27c) SHA1(41023c2ee1efd70b5aa9c70e1ddd9e5c3d51d68a) )
4855 	ROM_LOAD16_BYTE( "prg1.bin", 0x000001, 0x080000, CRC(8ae7f592) SHA1(8a20ebf85eca621f578d2302c3a3988647b077a7) )
4856 	ROM_LOAD16_BYTE( "prg2.u21", 0x100000, 0x080000, CRC(bdaa5fbf) SHA1(abd72ac633c0c8e7b4b1d7902c0d6e014ba995fe) )
4857 	ROM_LOAD16_BYTE( "prg3.u24", 0x100001, 0x080000, CRC(7aa9f941) SHA1(99bdbad7a96d461073b06a53c50fc57c2fd6fc6d) )
4858 
4859 	ROM_REGION( 0x48000, REGION_CPU2, 0 )			/* Sound Z80 code + bank */
4860 	ROM_LOAD( "snd.u77", 0x00000, 0x08000, CRC(56682696) SHA1(a372450d9a6d535123dfc31d8116074b168ab646) )
4861 	ROM_CONTINUE(        0x10000, 0x38000 )
4862 
4863 	ROM_REGION( 0x1000000, REGION_GFX1, ROMREGION_DISPOSE )
4864 	ROM_LOAD( "rom-1.bin", 0x000000, 0x400000, CRC(0df69ca2) SHA1(49670347ebd7e1067ff988cf842b275b7ee7b5f7) )
4865 	ROM_LOAD( "rom-3.bin", 0x400000, 0x400000, CRC(60167d38) SHA1(fd2429808c59ef51fd5f5db84ea89a8dc504186e) )
4866 	ROM_LOAD( "rom-2.bin", 0x800000, 0x400000, CRC(1bfea593) SHA1(ce06dc3097ae56b0df56d104bbf7efc9b5d968d4) )
4867 	ROM_LOAD( "rom-4.bin", 0xc00000, 0x400000, CRC(bee03c94) SHA1(5bc1e6769c42857c03456426b502fcb86a114f19) )
4868 
4869 	ROM_REGION( 0x140000, REGION_SOUND1, 0 )		/* ADPCM Samples 1 */
4870 	ROM_LOAD( "rom-5.bin", 0x040000, 0x100000, CRC(4274daf6) SHA1(85557b4707d529e5914f03c7a856864f5c24950e) )
4871 
4872 	ROM_REGION( 0x140000, REGION_SOUND2, 0 )		/* ADPCM Samples 2 */
4873 	ROM_LOAD( "rom-6.bin", 0x040000, 0x100000, CRC(2a1c2426) SHA1(8abc3688ffc5ebb94b8d5118d4fa0908f07fe791) )
4874 ROM_END
4875 
4876 ROM_START( batridrk )
4877 	ROM_REGION( 0x200000, REGION_CPU1, 0 )			/* Main 68k code */
4878 	ROM_LOAD16_BYTE( "prg0.u22", 0x000000, 0x080000, CRC(d9d8c907) SHA1(69c197f2a41f288913f042de9eb8274c0df3ac27) )
4879 	ROM_LOAD16_BYTE( "prg1.u23", 0x000001, 0x080000, CRC(8e70b492) SHA1(f84f2039826ae815afb058d71c1dbd190f9d524d) )
4880 	ROM_LOAD16_BYTE( "prg2.u21", 0x100000, 0x080000, CRC(bdaa5fbf) SHA1(abd72ac633c0c8e7b4b1d7902c0d6e014ba995fe) )
4881 	ROM_LOAD16_BYTE( "prg3.u24", 0x100001, 0x080000, CRC(7aa9f941) SHA1(99bdbad7a96d461073b06a53c50fc57c2fd6fc6d) )
4882 
4883 	ROM_REGION( 0x48000, REGION_CPU2, 0 )			/* Sound Z80 code + bank */
4884 	ROM_LOAD( "snd.u77", 0x00000, 0x08000, CRC(56682696) SHA1(a372450d9a6d535123dfc31d8116074b168ab646) )
4885 	ROM_CONTINUE(        0x10000, 0x38000 )
4886 
4887 	ROM_REGION( 0x1000000, REGION_GFX1, ROMREGION_DISPOSE )
4888 	ROM_LOAD( "rom-1.bin", 0x000000, 0x400000, CRC(0df69ca2) SHA1(49670347ebd7e1067ff988cf842b275b7ee7b5f7) )
4889 	ROM_LOAD( "rom-3.bin", 0x400000, 0x400000, CRC(60167d38) SHA1(fd2429808c59ef51fd5f5db84ea89a8dc504186e) )
4890 	ROM_LOAD( "rom-2.bin", 0x800000, 0x400000, CRC(1bfea593) SHA1(ce06dc3097ae56b0df56d104bbf7efc9b5d968d4) )
4891 	ROM_LOAD( "rom-4.bin", 0xc00000, 0x400000, CRC(bee03c94) SHA1(5bc1e6769c42857c03456426b502fcb86a114f19) )
4892 
4893 	ROM_REGION( 0x140000, REGION_SOUND1, 0 )		/* ADPCM Samples 1 */
4894 	ROM_LOAD( "rom-5.bin", 0x040000, 0x100000, CRC(4274daf6) SHA1(85557b4707d529e5914f03c7a856864f5c24950e) )
4895 
4896 	ROM_REGION( 0x140000, REGION_SOUND2, 0 )		/* ADPCM Samples 2 */
4897 	ROM_LOAD( "rom-6.bin", 0x040000, 0x100000, CRC(2a1c2426) SHA1(8abc3688ffc5ebb94b8d5118d4fa0908f07fe791) )
4898 ROM_END
4899 
4900 ROM_START( bbakraid )
4901 	ROM_REGION( 0x200000, REGION_CPU1, 0 )			/* Main 68k code */
4902 	ROM_LOAD16_BYTE( "prg0u022.bin", 0x000000, 0x080000, CRC(0dd59512) SHA1(c6a4e6aa49c6ac3b04ae62a0a4cc8084ae048381) )
4903 	ROM_LOAD16_BYTE( "prg1u023.bin", 0x000001, 0x080000, CRC(fecde223) SHA1(eb5ac0eda49b4b0f3d25d8a8bb356e77a453d3a7) )
4904 	ROM_LOAD16_BYTE( "prg2u021.bin", 0x100000, 0x080000, CRC(ffba8656) SHA1(6526bb65fad3384de3f301a7d1095cbf03757433) )
4905 	ROM_LOAD16_BYTE( "prg3u024.bin", 0x100001, 0x080000, CRC(834b8ad6) SHA1(0dd6223bb0749819ad29811eeb04fd08d937abb0) )
4906 
4907 	ROM_REGION( 0x28000, REGION_CPU2, 0 )			/* Sound Z80 code */
4908 	ROM_LOAD( "sndu0720.bin", 0x00000, 0x08000, CRC(e62ab246) SHA1(00d23689dd423ecd4024c58b5903d16e890f1dff) )
4909 	ROM_CONTINUE(             0x10000, 0x18000 )
4910 
4911 	ROM_REGION( 0x1000000, REGION_GFX1, ROMREGION_DISPOSE )
4912 	ROM_LOAD( "gfxu0510.bin", 0x000000, 0x400000, CRC(9cca3446) SHA1(1123f8b8bfbe59a2c572cdf61f1ad27ff37f0f0d) )
4913 	ROM_LOAD( "gfxu0512.bin", 0x400000, 0x400000, CRC(a2a281d5) SHA1(d9a6623f9433ad682223f9780c26cd1523ebc5c5) )
4914 	ROM_LOAD( "gfxu0511.bin", 0x800000, 0x400000, CRC(e16472c0) SHA1(6068d679a8b3b65e05acd58a7ce9ead90177049f) )
4915 	ROM_LOAD( "gfxu0513.bin", 0xc00000, 0x400000, CRC(8bb635a0) SHA1(9064f1a2d8bb88ddbca702fb8556d0dfe6a5cadc) )
4916 
4917 	ROM_REGION( 0x0c00000, REGION_SOUND1, 0 )	/* YMZ280B Samples */
4918 	ROM_LOAD( "rom6.829", 0x000000, 0x400000, CRC(8848b4a0) SHA1(e0dce136c5d5a4c1a92b863e57848cd5927d06f1) )
4919 	ROM_LOAD( "rom7.830", 0x400000, 0x400000, CRC(d6224267) SHA1(5c9b7b13effbef9f707811f84bfe50ca85e605e3) )
4920 	ROM_LOAD( "rom8.831", 0x800000, 0x400000, CRC(a101dfb0) SHA1(4b729b0d562e09df35438e9e6b457b8de2690a6e) )
4921 ROM_END
4922 
4923 ROM_START( bbakradu )
4924 	ROM_REGION( 0x200000, REGION_CPU1, 0 )			/* Main 68k code */
4925 	ROM_LOAD16_BYTE( "prg0u022.new", 0x000000, 0x080000, CRC(fa8d38d3) SHA1(aba91d87a8a62d3fe1139b4437b16e2f844264ad) )
4926 	ROM_LOAD16_BYTE( "prg1u023.new", 0x000001, 0x080000, CRC(4ae9aa64) SHA1(45fdf72141c4c9f24a38d4218c65874799b9c868) )
4927 	ROM_LOAD16_BYTE( "prg2u021.bin", 0x100000, 0x080000, CRC(ffba8656) SHA1(6526bb65fad3384de3f301a7d1095cbf03757433) )
4928 	ROM_LOAD16_BYTE( "prg3u024.bin", 0x100001, 0x080000, CRC(834b8ad6) SHA1(0dd6223bb0749819ad29811eeb04fd08d937abb0) )
4929 
4930 	ROM_REGION( 0x28000, REGION_CPU2, 0 )			/* Sound Z80 code */
4931 	ROM_LOAD( "sndu0720.bin", 0x00000, 0x08000, CRC(e62ab246) SHA1(00d23689dd423ecd4024c58b5903d16e890f1dff) )
4932 	ROM_CONTINUE(             0x10000, 0x18000 )
4933 
4934 	ROM_REGION( 0x1000000, REGION_GFX1, ROMREGION_DISPOSE )
4935 	ROM_LOAD( "gfxu0510.bin", 0x000000, 0x400000, CRC(9cca3446) SHA1(1123f8b8bfbe59a2c572cdf61f1ad27ff37f0f0d) )
4936 	ROM_LOAD( "gfxu0512.bin", 0x400000, 0x400000, CRC(a2a281d5) SHA1(d9a6623f9433ad682223f9780c26cd1523ebc5c5) )
4937 	ROM_LOAD( "gfxu0511.bin", 0x800000, 0x400000, CRC(e16472c0) SHA1(6068d679a8b3b65e05acd58a7ce9ead90177049f) )
4938 	ROM_LOAD( "gfxu0513.bin", 0xc00000, 0x400000, CRC(8bb635a0) SHA1(9064f1a2d8bb88ddbca702fb8556d0dfe6a5cadc) )
4939 
4940 	ROM_REGION( 0x0c00000, REGION_SOUND1, 0 )	/* YMZ280B Samples */
4941 	ROM_LOAD( "rom6.829", 0x000000, 0x400000, CRC(8848b4a0) SHA1(e0dce136c5d5a4c1a92b863e57848cd5927d06f1) )
4942 	ROM_LOAD( "rom7.830", 0x400000, 0x400000, CRC(d6224267) SHA1(5c9b7b13effbef9f707811f84bfe50ca85e605e3) )
4943 	ROM_LOAD( "rom8.831", 0x800000, 0x400000, CRC(a101dfb0) SHA1(4b729b0d562e09df35438e9e6b457b8de2690a6e) )
4944 ROM_END
4945 
4946 
4947 
4948 /* The following is in order of Toaplan Board/game numbers */
4949 /* See list at top of file */
4950 /* Whoopee machine to be changed to Teki Paki when (if) HD647180 is dumped */
4951 /* Whoopee  init   to be changed to T2_Z180   when (if) HD647180 is dumped */
4952 
4953 /*   ( YEAR  NAME      PARENT    MACHINE   INPUT     INIT      MONITOR COMPANY    FULLNAME     FLAGS ) */
4954 GAMEX( 1991, tekipaki, 0,        tekipaki, tekipaki, T2_Z180,  ROT0,   "Toaplan", "Teki Paki", GAME_NO_SOUND )
4955 GAMEX( 1991, ghox,     0,        ghox,     ghox,     T2_Z180,  ROT270, "Toaplan", "Ghox", GAME_NO_SOUND )
4956 GAMEX( 1992, dogyuun,  0,        dogyuun,  dogyuun,  T2_Zx80,  ROT270, "Toaplan", "Dogyuun", GAME_NO_SOUND )
4957 GAMEX( 1993, kbash,    0,        kbash,    kbash,    T2_Zx80,  ROT0,   "Toaplan", "Knuckle Bash", GAME_NO_SOUND )
4958 GAME ( 1992, truxton2, 0,        truxton2, truxton2, T2_noZ80, ROT270, "Toaplan", "Truxton II / Tatsujin II / Tatsujin Oh (Japan)" )
4959 GAME ( 1991, pipibibs, 0,        pipibibs, pipibibs, T2_Z80,   ROT0,   "Toaplan", "Pipi & Bibis / Whoopee!!" )
4960 GAME ( 1991, whoopee,  pipibibs, whoopee,  whoopee,  T2_Z80,   ROT0,   "Toaplan", "Whoopee!! / Pipi & Bibis" )
4961 GAME ( 1991, pipibibi, pipibibs, pipibibi, pipibibi, pipibibi, ROT0,   "[Toaplan] Ryouta Kikaku", "Pipi & Bibis / Whoopee!! (bootleg ?)" )
4962 GAMEX( 1992, fixeight, 0,        fixeight, fixeight, fixeight, ROT270, "Toaplan", "FixEight", GAME_NOT_WORKING )
4963 GAMEX( 1992, grindstm, vfive,    vfive,    grindstm, T2_Zx80,  ROT270, "Toaplan", "Grind Stormer", GAME_NO_SOUND )
4964 GAMEX( 1992, grindsta, vfive,    vfive,    grindstm, T2_Zx80,  ROT270, "Toaplan", "Grind Stormer (older set)", GAME_NO_SOUND )
4965 GAMEX( 1993, vfive,    0,        vfive,    vfive,    T2_Zx80,  ROT270, "Toaplan", "V-Five (Japan)", GAME_NO_SOUND )
4966 GAMEX( 1993, batsugun, 0,        batsugun, batsugun, T2_Zx80,  ROT270, "Toaplan", "Batsugun", GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
4967 GAMEX( 1993, batugnsp, batsugun, batsugun, batsugun, T2_Zx80,  ROT270, "Toaplan", "Batsugun (Special Ver.)", GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
4968 GAME ( 1994, snowbro2, 0,        snowbro2, snowbro2, T2_noZ80, ROT0,   "[Toaplan] Hanafram", "Snow Bros. 2 - With New Elves / Otenki Paradise" )
4969 GAME ( 1993, mahoudai, 0,        mahoudai, mahoudai, T2_Z80,   ROT270, "Raizing (Able license)", "Mahou Daisakusen (Japan)" )
4970 GAME ( 1993, sstriker, mahoudai, mahoudai, sstriker, T2_Z80,   ROT270, "Raizing", "Sorcer Striker (World)" ) // from korean board
4971 GAME ( 1994, shippumd, 0,        shippumd, shippumd, T2_Z80,   ROT270, "Raizing / Eighting", "Shippu Mahou Daisakusen (Japan)" )
4972 GAME ( 1994, kingdmgp, shippumd, shippumd, kingdmgp, T2_Z80,   ROT270, "Raizing / Eighting", "Kingdom Grandprix (World)" ) // from korean board, missing letters on credits screen but this is correct
4973 GAME ( 1996, battleg,  0,        battleg,  battleg,  battleg,  ROT270, "Raizing / Eighting", "Battle Garegga - Type 2 (Denmark / China) (Tue Apr 2 1996)" )
4974 GAME ( 1996, battlega, battleg,  battleg,  battlega, battleg,  ROT270, "Raizing / Eighting", "Battle Garegga (Europe / USA / Japan / Asia) (Sat Feb 3 1996)" )
4975 GAME ( 1996, battlegb, battleg,  battleg,  battlegb, battleg,  ROT270, "Raizing / Eighting", "Battle Garegga (Austria / Hong Kong) (Sat Mar 2 1996)" ) // displays New Version when set to HK
4976 GAME ( 1998, batrider, 0,        batrider, batrider, battleg,  ROT270, "Raizing / Eighting", "Armed Police Batrider (Japan, version B)" )
4977 GAME ( 1998, batridra, batrider, batrider, batrider, battleg,  ROT270, "Raizing / Eighting", "Armed Police Batrider (Japan, version A)" )
4978 GAME ( 1998, batridrk, batrider, batrider, batrider, battleg,  ROT270, "Raizing / Eighting", "Armed Police Batrider (Korea, version B)" )
4979 GAME ( 1999, bbakraid, 0,        bbakraid, bbakraid, bbakraid, ROT270, "Eighting", "Battle Bakraid (Japan) (Wed Apr 7 1999)")
4980 GAME ( 1999, bbakradu, bbakraid, bbakraid, bbakraid, bbakrada, ROT270, "Eighting", "Battle Bakraid - Unlimited version (Japan) (Tue Jun 8 1999)")
4981