1 /* Jaleco MegaSystem 32 (Preliminary Driver)
2 
3 
4 Used by Jaleco in the Mid-90's this system, based on the V70 processor consisted
5 of a two board set up, the first a standard mainboard and the second a 'cartridge'
6 
7 -- Hardware Information (from Guru) --
8 
9 MS32 Motherboard
10 ----------------
11 
12 PCB ID  : MB-93140A EB91022-20079-1
13 CPU     : NEC D70632GD-20 (V70)
14 SOUND   : Z80, YMF271, YAC513
15 OSC     : 48.000MHz, 16.9344MHz, 40.000MHz
16 RAM     : Cypress CY7C199-25 (x10)
17           Sharp LH528256-70 (x5)
18           Sharp LH5168D-10 (x1)
19           OKI M511664-80 (x8)
20 DIPs    : 8 position (x3)
21 OTHER   : 5.5v battery
22           Some PALs
23           2 pin connector for right speaker (sound out is STEREO)
24 
25           Custom chips:
26                        JALECO SS91022-01 (208 PIN PQFP)
27                        JALECO SS91022-02 (100 PIN PQFP)
28                        JALECO SS91022-03 (176 PIN PQFP) *
29                        JALECO SS91022-05 (120 PIN PQFP) *
30                        JALECO SS91022-07 (208 PIN PQFP)
31                        JALECO GS91022-01 (120 PIN PQFP)
32                        JALECO GS91022-02 (160 PIN PQFP)
33                        JALECO GS91022-03 (100 PIN PQFP)
34                        JALECO GS91022-04 (100 PIN PQFP) *
35 
36 ROMs:     None
37 
38 Chips marked * also appear on a non-megasystem 32 tetris 2 plus board
39 
40 MS32 Cartridge
41 --------------
42 
43 Game Roms + Custom Chip
44 
45 The Custom chip is probably related to the encryption?
46 
47 Desert War     - Custom chip: JALECO SS91022-10 (144 pin PQFP) (located on small plug-in board with) (ID: SE93139 EB91022-30056)
48 Game Paradise  - Custom chip: JALECO SS91022-10 9515EV 420201 06441
49 Tetris Plus 2  - Custom chip: JALECO SS91022-10 9513EV 370121 06441
50 Tetris Plus    - Custom chip: JALECO SS92046-01 9412EV 450891 06441
51 kirarast       - Custom chip: JALECO SS92047-01 9425EV 367821 06441
52 Gratia (set 1) - Custom chip: JALECO SS92047-01 9423EV 450891 06441
53 Gratia (set 2) - Custom chip: JALECO SS91022-10
54 P47-Aces       - Custom chip: JALECO SS92048-01 9410EV 436091 06441
55 Angel Kiss     - Custom chip: Jaleco SS92047-01
56 others are unknown
57 
58 Notes
59 -----
60 
61 Some of the roms for each game are encrypted.
62 
63 The only difference between the two Gratia sets is in the encrypted ROMs (they use
64 different custom chips). The program is the same.
65 
66 16x16x8 'Scroll' Tiles (Non-Roz BG Layer)
67 8x8x8 'Ascii' Tiles (FG Layer)
68 
69 
70 ToDo / Notes
71 ------------
72 
73 Z80 + Sound Bits
74 
75 Re-Add Priorities
76 
77 Dip switches/inputs in t2m32 and f1superb
78 some games (hayaosi1) don't seeem to have service mode even if it's listed among the dips
79 service mode is still accessible through F1 though
80 
81 Fix Anything Else (Palette etc.)
82 
83 Replace CPU divider with Idle skip since we don't know how fast the v70 really is (cpu timing is ignored)...
84 
85 Mirror Ram addresses?
86 
87 Not sure about the main "global brightness" control register, I don't think it can make the palette
88 completely black because of kirarast attract mode, so I'm making it cut by 50% at most.
89 
90 gametngk seems to need some kind of shadow sprites but the only difference in the sprite attributes is one of the
91     priority bits, forcing sprites of that priority to be shadows doesn't work
92 tetrisp needs shadows as well, see the game selection screen.
93 
94 The above might be related to the second "global brightness" control register, which is 000000 in all games
95 except gametngk, tetrisp, tp2m32 and gratia.
96 
97 horizontal position of tx and bg tilemaps is off by 1 pixel in some games
98 
99 There should be NVRAM somewhere, maybe fc000000-fc007fff
100 
101 bbbxing: some sprite/roz/bg alignment issues
102 
103 gratia: at the beginning of a level it shows the level name in the bottom right corner, scrolling it up
104 	and making the score display scroll out of the screen. Is this correct ar should there be a raster
105 	effect keeping the score on screen? And why didn't they just use sprites to do that?
106 
107 gratia: the 3d sky shown at the beginning of the game has a black gap near the end. It would not be visible
108 	if I made the "global brightness" register cut to 100% instead of 50%. Mmmm...
109 
110 gratia: the 3d sky seems to be the only place needed the "wrap" parameter to draw_roz to be set. All other
111 	games work fine with it not set, and there are many places where it definitely must not be set.
112 
113 gratia: at the beginning of the game, before the sky appears, the city background appears for
114 	an instant. Missing layer enable register?
115 
116 background color: pen 0 is correct for gametngk, but wrong for f1superb. Maybe it dpeends on the layer
117 	priority order?
118 
119 roz layer wrapping: currently it's always ON, breaking places where it gets very small so it gets
120 	repeated on the screen (p47aces, kirarast, bbbxing, gametngk need it OFF).
121 	gratia and desertwr need it ON.
122 
123 there are sprite lag issues, but they might be caused by cpu timing so it's better to leave
124 	them alone until the CPU clock is correct.
125 
126 
127 Not Working Games
128 -----------------
129 
130 tp2m32 - writes invalid SBR, enables interrupts, crashes (fixed patching the bogus SBR).
131 f1superb - the road is straight despite the road signs saying otherwise? :-p
132          - there are 4 unknown ROMS which might be related to the above.
133          - the handler for IRQ 11 also seems to be valid, the game might need it.
134 
135 
136 Jaleco Megasystem 32 Game List - thanks to Yasuhiro
137 ---------------------------------------------------
138 
139 P-47 Aces (p47aces)
140 Game Tengoku / Game Paradise (gametngk)
141 Tetris Plus (tetrisp)
142 Tetris Plus 2 (tp2m32)
143 Best Bout Boxing (bbbxing)
144 Wangan Sensou / Desert War (desertwr)
145 Second Earth Gratia (92047-01 version) (gratia)
146 *Second Earth Gratia  (91022-10 version) (gratiaa)
147 *Super Strong Warriors
148 F-1 Super Battle (f1superb)
149 
150 Idol Janshi Su-Chi-Pi 2 (47pie2)
151 Ryuusei Janshi Kirara Star (kirarast)
152 Mahjong Angel Kiss
153 *Vs. Janshi Brand New Stars
154 
155 Hayaoshi Quiz Ouza Ketteisen (hayaosi1)
156 *Hayaoshi Quiz Nettou Namahousou
157 *Hayaoshi Quiz Grand Champion Taikai
158 
159 Maybe some more...
160 
161 Games marked * need dumping / redumping
162 
163 */
164 
165 /********** BITS & PIECES **********/
166 
167 #include "driver.h"
168 
169 extern data32_t *ms32_fce00000;
170 extern data32_t *ms32_roz_ctrl;
171 extern data32_t *ms32_tx_scroll;
172 extern data32_t *ms32_bg_scroll;
173 extern data32_t *ms32_priram;
174 extern data32_t *ms32_palram;
175 extern data32_t *ms32_bgram;
176 extern data32_t *ms32_rozram;
177 extern data32_t *ms32_lineram;
178 extern data32_t *ms32_spram;
179 extern data32_t *ms32_txram;
180 extern data32_t *ms32_mainram;
181 
182 WRITE32_HANDLER( ms32_brightness_w );
183 WRITE32_HANDLER( ms32_palram_w );
184 READ32_HANDLER( ms32_txram_r );
185 WRITE32_HANDLER( ms32_txram_w );
186 READ32_HANDLER( ms32_rozram_r );
187 WRITE32_HANDLER( ms32_rozram_w );
188 READ32_HANDLER( ms32_lineram_r );
189 WRITE32_HANDLER( ms32_lineram_w );
190 READ32_HANDLER( ms32_bgram_r );
191 WRITE32_HANDLER( ms32_bgram_w );
192 READ32_HANDLER( ms32_spram_r );
193 WRITE32_HANDLER( ms32_spram_w );
194 READ32_HANDLER( ms32_priram_r );
195 WRITE32_HANDLER( ms32_priram_w );
196 WRITE32_HANDLER( ms32_gfxctrl_w );
197 VIDEO_START( ms32 );
198 VIDEO_UPDATE( ms32 );
199 
200 static data32_t *ms32_fc000000;
201 
202 static data32_t *ms32_mahjong_input_select;
203 
204 static data32_t to_main;
205 
206 /********** READ INPUTS **********/
207 
READ32_HANDLER(ms32_read_inputs1)208 static READ32_HANDLER ( ms32_read_inputs1 )
209 {
210 	int a,b,c,d;
211 	a = readinputport(0);	/* unknown*/
212 	b = readinputport(1);	/* System inputs*/
213 	c = readinputport(2);	/* Player 1 inputs*/
214 	d = readinputport(3);	/* Player 2 inputs*/
215 	return a << 24 | b << 16 | c << 0 | d << 8;
216 }
217 
218 
READ32_HANDLER(ms32_mahjong_read_inputs1)219 static READ32_HANDLER ( ms32_mahjong_read_inputs1 )
220 {
221 	int a,b,c,d;
222 	a = readinputport(0);	/* unknown*/
223 	b = readinputport(1);	/* System inputs*/
224 
225 	switch (ms32_mahjong_input_select[0])
226 	{
227 		case 0x01:
228 			c = readinputport(8);	/* Player 1 inputs*/
229 			break;
230 		case 0x02:
231 			c = readinputport(9);	/* Player 1 inputs*/
232 			break;
233 		case 0x04:
234 			c = readinputport(10);	/* Player 1 inputs*/
235 			break;
236 		case 0x08:
237 			c = readinputport(11);	/* Player 1 inputs*/
238 			break;
239 		case 0x10:
240 			c = readinputport(12);	/* Player 1 inputs*/
241 			break;
242 		default:
243 			c = 0;
244 
245 	}
246 	d = readinputport(3);	/* Player 2 inputs*/
247 	return a << 24 | b << 16 | c << 0 | d << 8;
248 }
249 
250 
READ32_HANDLER(ms32_read_inputs2)251 static READ32_HANDLER ( ms32_read_inputs2 )
252 {
253 	int a,b,c,d;
254 	a = readinputport(4);	/* Dip 1*/
255 	b = readinputport(5);	/* Dip 2*/
256 	c = readinputport(6);	/* Dip 3*/
257 	d = readinputport(7);	/* unused ?*/
258 	return a << 8 | b << 0 | c << 16 | d << 24;
259 }
260 
READ32_HANDLER(ms32_read_inputs3)261 static READ32_HANDLER ( ms32_read_inputs3 )
262 {
263 	int a,b,c,d;
264 	a = readinputport(10); /* unused?*/
265 	b = readinputport(10); /* unused?*/
266 	c = readinputport(9);
267 	d = (readinputport(8) - 0xb0) & 0xff;
268 	return a << 24 | b << 16 | c << 8 | d << 0;
269 }
270 
WRITE32_HANDLER(ms32_sound_w)271 static WRITE32_HANDLER( ms32_sound_w )
272 {
273 	soundlatch_w(0, data & 0xff);
274 	cpu_set_irq_line(1, IRQ_LINE_NMI, ASSERT_LINE);
275 
276 	/* give the Z80 time to respond*/
277 	cpu_spinuntil_time(TIME_IN_USEC(40));
278 }
279 
READ32_HANDLER(ms32_sound_r)280 static READ32_HANDLER( ms32_sound_r )
281 {
282 	return to_main^0xff;
283 }
284 
WRITE32_HANDLER(reset_sub_w)285 static WRITE32_HANDLER( reset_sub_w )
286 {
287 	if(data) cpu_set_reset_line(1,PULSE_LINE); /* 0 too ?*/
288 }
289 
290 
291 
292 
293 /********** MEMORY MAP **********/
294 
295 /* some games games test more ram than others .. ram areas with closed comments before
296 the lines get tested by various games but I'm not sure are really used, maybe they're
297 mirror addresses? */
298 
299 /*
300 p47 aces:
301 there are bugs in the test routine, so it checks twice the amount of RAM
302 actually present, relying on mirror addresses.
303 See how ASCII and SCROLL overlap.
304 SCRATCH RAM   fee00000-fee1ffff
305 ASCII RAM     fec00000-fec0ffff (actually fec00000-fec07fff ?)
306 SCROLL RAM    fec08000-fec17fff (actually fec08000-fec0ffff ?)
307 ROTATE RAM    fe000000-fe03ffff (actually fe000000-fe01ffff ?)
308 OBJECT RAM    fe800000-fe87ffff (actually fe800000-fe83ffff ?)
309 COLOR RAM     fd400000-fd40ffff (this one is actually larger than tested)
310 PRIORITY RAM  fd180000-fd1bffff (actually fd180000-fd19ffff ?)
311 SOUND RAM
312 
313 This applies to most of the other games.
314 Also, gametngk uses mirror addresses for the background during gameplay, without
315 support for them bad tiles appear in the bg.
316 */
317 
318 
MEMORY_READ32_START(ms32_readmem)319 static MEMORY_READ32_START( ms32_readmem )
320 	{ 0x00000000, 0x001fffff, MRA32_ROM },
321 	{ 0xfc000000, 0xfc007fff, MRA32_RAM },
322 	{ 0xfc800000, 0xfc800003, MRA32_NOP },	/* sound? */
323 	{ 0xfcc00004, 0xfcc00007, ms32_read_inputs1 },
324 	{ 0xfcc00010, 0xfcc00013, ms32_read_inputs2 },
325 /**/{ 0xfce00600, 0xfce0065f, MRA32_RAM },	/* roz control registers */
326 /**/{ 0xfce00a00, 0xfce00a17, MRA32_RAM },	/* tx scroll registers */
327 /**/{ 0xfce00a20, 0xfce00a37, MRA32_RAM },	/* bg scroll registers */
328 
329 	{ 0xfd000000, 0xfd000003, ms32_sound_r },
330 	{ 0xfd0e0000, 0xfd0e0003, ms32_read_inputs3 }, /* analog controls in f1superb? */
331 
332 /**/{ 0xfd104000, 0xfd105fff, MRA32_RAM },  /* f1superb */
333 /**/{ 0xfd144000, 0xfd145fff, MRA32_RAM },  /* f1superb */
334 
335 	{ 0xfd180000, 0xfd19ffff, ms32_priram_r },	/* priority ram */
336 	{ 0xfd1a0000, 0xfd1bffff, ms32_priram_r },	/* mirror only used by memory test in service mode */
337 
338 	{ 0xfd400000, 0xfd43ffff, MRA32_RAM }, /* Palette */
339 /**/{ 0xfd440000, 0xfd47ffff, MRA32_RAM },  /* f1superb color */
340 
341 /**/{ 0xfdc00000, 0xfdc006ff, MRA32_RAM },  /* f1superb */
342 /**/{ 0xfde00000, 0xfde01fff, MRA32_RAM },  /* f1superb lineram */
343 	{ 0xfe000000, 0xfe01ffff, ms32_rozram_r },	/* roz layer */
344 	{ 0xfe020000, 0xfe03ffff, ms32_rozram_r },	/* mirror only used by memory test in service mode */
345 	{ 0xfe200000, 0xfe201fff, ms32_lineram_r }, /* line ram for roz layer */
346 /**/{ 0xfe202000, 0xfe2fffff, MRA32_RAM },  /* f1superb vram */
347 
348 	{ 0xfe800000, 0xfe83ffff, ms32_spram_r },	/* sprites */
349 	{ 0xfe840000, 0xfe87ffff, ms32_spram_r },	/* mirror only used by memory test in service mode */
350 	{ 0xfec00000, 0xfec07fff, ms32_txram_r },	/* tx layer */
351 	{ 0xfec08000, 0xfec0ffff, ms32_bgram_r },	/* bg layer */
352 	{ 0xfec10000, 0xfec17fff, ms32_txram_r },	/* mirror only used by memory test in service mode */
353 	{ 0xfec18000, 0xfec1ffff, ms32_bgram_r },
354 	{ 0xfee00000, 0xfee1ffff, MRA32_RAM },
355 	{ 0xffe00000, 0xffffffff, MRA32_BANK1 },
356 MEMORY_END
357 
358 static WRITE32_HANDLER( pip_w )
359 {
360 	if (data)
361 		usrintf_showmessage("fce00a7c = %02x",data);
362 }
363 
MEMORY_WRITE32_START(ms32_writemem)364 static MEMORY_WRITE32_START( ms32_writemem )
365 	{ 0x00000000, 0x001fffff, MWA32_ROM },
366 	{ 0xfc000000, 0xfc007fff, MWA32_RAM, &ms32_fc000000 },	/* NVRAM?*/
367 	{ 0xfc800000, 0xfc800003, ms32_sound_w }, /* sound? */
368 	{ 0xfce00000, 0xfce00003, ms32_gfxctrl_w },	/* flip screen + other unknown bits */
369 	{ 0xfce00034, 0xfce00037, MWA32_NOP }, /* irq ack?*/
370 	{ 0xfce00038, 0xfce0003b, reset_sub_w },
371 	{ 0xfce00050, 0xfce0005f, MWA32_NOP },	/* watchdog? I haven't investigated*/
372 /*	{ 0xfce00000, 0xfce0007f, MWA32_RAM, &ms32_fce00000 },*/  /* registers not ram? */
373 	{ 0xfce00280, 0xfce0028f, ms32_brightness_w },	/* global brightness control*/
374 	{ 0xfce00600, 0xfce0065f, MWA32_RAM, &ms32_roz_ctrl },	/* roz control registers */
375 /*	{ 0xfce00800, 0xfce0085f, */ /* f1superb, roz #2 control?*/
376 	{ 0xfce00a00, 0xfce00a17, MWA32_RAM, &ms32_tx_scroll },	/* tx layer scroll */
377 	{ 0xfce00a20, 0xfce00a37, MWA32_RAM, &ms32_bg_scroll },	/* bg layer scroll */
378 	{ 0xfce00a7c, 0xfce00a7f, pip_w },	/* ??? layer related? seems to be always 0*/
379 /*	{ 0xfce00e00, 0xfce00e03,  },	coin counters + something else*/
380 
381 /*	{ 0xfd104000, 0xfd105fff, MWA32_RAM },*/  /* f1superb */
382 /*	{ 0xfd144000, 0xfd145fff, MWA32_RAM },*/  /* f1superb */
383 
384 	{ 0xfd180000, 0xfd19ffff, ms32_priram_w, &ms32_priram },	/* priority ram */
385 	{ 0xfd1a0000, 0xfd1bffff, ms32_priram_w },			/* mirror only used by memory test in service mode */
386 
387 	{ 0xfd1c0000, 0xfd1c0003, MWA32_RAM, &ms32_mahjong_input_select }, /* ?*/
388 
389 	{ 0xfd400000, 0xfd43ffff, ms32_palram_w, &ms32_palram }, /* Palette */
390 /**/{ 0xfd440000, 0xfd47ffff, MWA32_RAM },  /* f1superb color */
391 /*	{ 0xfdc00000, 0xfdc006ff, MWA32_RAM },  // f1superb */
392 /*	{ 0xfde00000, 0xfde01fff, MWA32_RAM },  // f1superb, lineram #2? */
393 
394 	{ 0xfe000000, 0xfe01ffff, ms32_rozram_w, &ms32_rozram },	/* roz layer */
395 	{ 0xfe020000, 0xfe03ffff, ms32_rozram_w },		/* mirror only used by memory test in service mode */
396 	{ 0xfe1ffc88, 0xfe1fffff, MWA32_NOP },	/* gratia writes here before falling into lineram, could be a mirror */
397 	{ 0xfe200000, 0xfe201fff, ms32_lineram_w, &ms32_lineram }, /* line ram for roz layer */
398 /**/{ 0xfe202000, 0xfe2fffff, MWA32_RAM },  /* f1superb vram */
399 /**/{ 0xfe100000, 0xfe1fffff, MWA32_RAM },  /* gratia writes here ?! /*/
400 	{ 0xfe800000, 0xfe83ffff, ms32_spram_w, &ms32_spram },	/* sprites */
401 	{ 0xfe840000, 0xfe87ffff, ms32_spram_w },		/* mirror only used by memory test in service mode */
402 	{ 0xfec00000, 0xfec07fff, ms32_txram_w, &ms32_txram },	/* tx layer */
403 	{ 0xfec08000, 0xfec0ffff, ms32_bgram_w, &ms32_bgram },	/* bg layer */
404 	{ 0xfec10000, 0xfec17fff, ms32_txram_w },		/* mirror only used by memory test in service mode */
405 	{ 0xfec18000, 0xfec1ffff, ms32_bgram_w },		/* mirror used by gametngk at the beginning of the game */
406 	{ 0xfee00000, 0xfee1ffff, MWA32_RAM, &ms32_mainram },
407 	{ 0xffe00000, 0xffffffff, MWA32_ROM },
408 MEMORY_END
409 
410 /********** INPUT PORTS **********/
411 
412 #define MS32_UNUSED_PORT \
413 	PORT_START \
414 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) \
415 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) \
416 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) \
417 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) \
418 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) \
419 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) \
420 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) \
421 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
422 
423 #define MS32_SYSTEM_INPUTS \
424 	PORT_START \
425 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) \
426 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) \
427 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) \
428 	PORT_BITX(0x08, IP_ACTIVE_LOW, IPT_SERVICE, "Test", KEYCODE_F1, IP_JOY_NONE ) \
429 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) \
430 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
431 	/* bits 6 and 7 might be different from game to game */
432 
433 #define MS32_UNKNOWN_INPUTS \
434 	PORT_START \
435 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
436 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
437 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
438 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
439 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
440 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
441 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
442 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
443 
444 #define MS32_PLAYER_INPUTS(_n_, _b1_, _b2_, _b3_, _b4_) \
445 	PORT_START \
446 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER##_n_ ) \
447 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER##_n_ ) \
448 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER##_n_ ) \
449 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER##_n_ ) \
450 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_##_b1_         | IPF_PLAYER##_n_ ) \
451 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_##_b2_         | IPF_PLAYER##_n_ ) \
452 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_##_b3_         | IPF_PLAYER##_n_ ) \
453 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_##_b4_         | IPF_PLAYER##_n_ )
454 
455 #define MS32_DIP1 \
456 	PORT_START \
457 	PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coin_A ) ) \
458 	PORT_DIPSETTING(    0x00, DEF_STR( 5C_1C ) ) \
459 	PORT_DIPSETTING(    0x80, DEF_STR( 4C_1C ) ) \
460 	PORT_DIPSETTING(    0x40, DEF_STR( 3C_1C ) ) \
461 	PORT_DIPSETTING(    0xc0, DEF_STR( 2C_1C ) ) \
462 	PORT_DIPSETTING(    0xe0, DEF_STR( 1C_1C ) ) \
463 	PORT_DIPSETTING(    0x60, DEF_STR( 1C_2C ) ) \
464 	PORT_DIPSETTING(    0xa0, DEF_STR( 1C_3C ) ) \
465 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_4C ) ) \
466 	PORT_DIPNAME( 0x1c, 0x1c, DEF_STR( Coin_B ) ) \
467 	PORT_DIPSETTING(    0x00, DEF_STR( 5C_1C ) ) \
468 	PORT_DIPSETTING(    0x10, DEF_STR( 4C_1C ) ) \
469 	PORT_DIPSETTING(    0x08, DEF_STR( 3C_1C ) ) \
470 	PORT_DIPSETTING(    0x18, DEF_STR( 2C_1C ) ) \
471 	PORT_DIPSETTING(    0x1c, DEF_STR( 1C_1C ) ) \
472 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_2C ) ) \
473 	PORT_DIPSETTING(    0x14, DEF_STR( 1C_3C ) ) \
474 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) ) \
475 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Free_Play ) ) \
476 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) ) \
477 	PORT_DIPSETTING(    0x00, DEF_STR( On ) ) \
478 	PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
479 
480 
481 /*INPUT_PORTS_START( ms32 )
482 	MS32_UNKNOWN_INPUTS
483 
484 	MS32_SYSTEM_INPUTS
485 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER1 )
486 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER2 )
487 
488 	MS32_PLAYER_INPUTS(1, BUTTON1, BUTTON2, BUTTON3, BUTTON4)
489 	MS32_PLAYER_INPUTS(2, BUTTON1, BUTTON2, BUTTON3, BUTTON4)
490 
491 	MS32_DIP1
492 
493 	PORT_START	// DIP2
494 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
495 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
496 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
497 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
498 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
499 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
500 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
501 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
502 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
503 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
504 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
505 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
506 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
507 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
508 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
509 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
510 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
511 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
512 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
513 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
514 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
515 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
516 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
517 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
518 
519 	PORT_START	// DIP3
520 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
521 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
522 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
523 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
524 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
525 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
526 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
527 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
528 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
529 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
530 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
531 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
532 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
533 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
534 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
535 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
536 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
537 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
538 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
539 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
540 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
541 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
542 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
543 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
544 
545 	MS32_UNUSED_PORT
546 
547 INPUT_PORTS_END
548 */
549 
550 INPUT_PORTS_START( bbbxing )
551 	MS32_UNKNOWN_INPUTS
552 
553 	MS32_SYSTEM_INPUTS
554 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )			/* BUTTON5 in "test mode"*/
555 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )			/* BUTTON5 in "test mode"*/
556 
557 	MS32_PLAYER_INPUTS(1, BUTTON1, BUTTON2, BUTTON3, UNKNOWN)	/* BUTTON4 in "test mode"*/
558 	MS32_PLAYER_INPUTS(2, BUTTON1, BUTTON2, BUTTON3, UNKNOWN)	/* BUTTON4 in "test mode"*/
559 
560 	MS32_DIP1
561 
562 	PORT_START	/* DIP2*/
563 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
564 	PORT_DIPSETTING(    0x00, "Easy" )
565 	PORT_DIPSETTING(    0xc0, "Normal" )
566 	PORT_DIPSETTING(    0x40, "Hard" )
567 	PORT_DIPSETTING(    0x80, "Hardest" )
568 	PORT_DIPNAME( 0x30, 0x00, "Timer Speed" )
569 	PORT_DIPSETTING(    0x00, "60/60" )
570 	PORT_DIPSETTING(    0x20, "50/60" )
571 	PORT_DIPSETTING(    0x10, "40/60" )
572 	PORT_DIPSETTING(    0x30, "35/60" )
573 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
574 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
575 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
576 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) )
577 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
578 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
579 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) )
580 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
581 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
582 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
583 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
584 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
585 
586 	PORT_START	/* DIP3*/
587 #if 0	/* this is what you have in the "test mode", but I don't see what this means 8( */
588 	PORT_DIPNAME( 0x80, 0x80, "Jyogi" )
589 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
590 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
591 	PORT_DIPNAME( 0x40, 0x40, "Kim" )
592 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
593 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
594 	PORT_DIPNAME( 0x20, 0x20, "Thamalatt" )
595 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
596 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
597 	PORT_DIPNAME( 0x10, 0x10, "Jose" )
598 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
599 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
600 	PORT_DIPNAME( 0x08, 0x08, "Carolde" )
601 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
602 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
603 	PORT_DIPNAME( 0x04, 0x04, "Biff" )
604 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
605 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
606 	PORT_DIPNAME( 0x02, 0x02, "Grute" )
607 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
608 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
609 #else
610 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
611 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
612 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
613 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
614 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
615 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
616 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
617 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
618 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
619 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
620 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
621 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
622 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
623 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
624 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
625 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
626 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
627 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
628 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
629 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
630 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
631 #endif
632 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) )
633 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
634 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
635 
636 	MS32_UNUSED_PORT
637 
638 INPUT_PORTS_END
639 
640 INPUT_PORTS_START( desertwr )
641 	MS32_UNKNOWN_INPUTS
642 
643 	MS32_SYSTEM_INPUTS
644 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
645 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
646 
647 	MS32_PLAYER_INPUTS(1, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)
648 	MS32_PLAYER_INPUTS(2, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)
649 
650 	MS32_DIP1
651 
652 	PORT_START	/* DIP2*/
653 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
654 	PORT_DIPSETTING(    0x00, "Easy" )
655 	PORT_DIPSETTING(    0xc0, "Normal" )
656 	PORT_DIPSETTING(    0x40, "Hard" )
657 	PORT_DIPSETTING(    0x80, "Hardest" )
658 	PORT_DIPNAME( 0x30, 0x30, "Armors" )
659 /*	PORT_DIPSETTING(    0x00, "2" )		*/ /* duplicate setting ?*/
660 	PORT_DIPSETTING(    0x10, "2" )
661 	PORT_DIPSETTING(    0x30, "3" )
662 	PORT_DIPSETTING(    0x20, "4" )
663 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
664 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
665 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
666 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) )
667 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
668 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
669 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) )
670 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
671 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
672 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
673 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
674 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
675 
676 	PORT_START	/* DIP3*/
677 	PORT_DIPNAME( 0x80, 0x00, "Language" )
678 	PORT_DIPSETTING(    0x80, "Japanese" )
679 	PORT_DIPSETTING(    0x00, "English" )
680 	PORT_DIPNAME( 0x40, 0x40, "FBI Logo" )
681 	PORT_DIPSETTING(    0x40, DEF_STR( No ) )
682 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
683 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
684 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
685 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
686 	PORT_DIPNAME( 0x10, 0x00, "Title screen" )
687 	PORT_DIPSETTING(    0x10, "Japanese" )
688 	PORT_DIPSETTING(    0x00, "English" )
689 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
690 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
691 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
692 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) )
693 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
694 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
695 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) )
696 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
697 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
698 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) )
699 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
700 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
701 
702 	MS32_UNUSED_PORT
703 
704 INPUT_PORTS_END
705 
706 INPUT_PORTS_START( gametngk )
707 	MS32_UNKNOWN_INPUTS
708 
709 	MS32_SYSTEM_INPUTS
710 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
711 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
712 
713 	MS32_PLAYER_INPUTS(1, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)	/* BUTTON3 and BUTTON4 in "test mode"*/
714 	MS32_PLAYER_INPUTS(2, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)	/* BUTTON3 and BUTTON4 in "test mode"*/
715 
716 	MS32_DIP1
717 
718 	PORT_START	/* DIP2*/
719 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
720 	PORT_DIPSETTING(    0x00, "Easy" )
721 	PORT_DIPSETTING(    0xc0, "Normal" )
722 	PORT_DIPSETTING(    0x40, "Hard" )
723 	PORT_DIPSETTING(    0x80, "Hardest" )
724 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
725 	PORT_DIPSETTING(    0x00, "1" )
726 	PORT_DIPSETTING(    0x30, "3" )
727 	PORT_DIPSETTING(    0x10, "4" )
728 	PORT_DIPSETTING(    0x20, "5" )
729 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
730 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
731 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
732 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) )
733 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
734 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
735 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) )
736 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
737 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
738 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
739 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
740 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
741 
742 	PORT_START	/* DIP3*/
743 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
744 	PORT_DIPNAME( 0x80, 0x00, "Language" )
745 	PORT_DIPSETTING(    0x80, "Japanese" )
746 	PORT_DIPSETTING(    0x00, "English" )
747 	PORT_DIPNAME( 0x40, 0x40, "FBI Logo" )
748 	PORT_DIPSETTING(    0x40, DEF_STR( No ) )
749 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
750 	PORT_DIPNAME( 0x20, 0x20, "Voice" )
751 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
752 	PORT_DIPSETTING(    0x20, DEF_STR( Yes ) )
753 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
754 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
755 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
756 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
757 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
758 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
759 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) )
760 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
761 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
762 	PORT_BITX(    0x02, 0x02, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
763 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
764 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
765 	PORT_DIPNAME( 0x01, 0x01, "Freeze" )
766 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
767 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
768 
769 	MS32_UNUSED_PORT
770 
771 INPUT_PORTS_END
772 
773 INPUT_PORTS_START( tetrisp )
774 	MS32_UNKNOWN_INPUTS
775 
776 	MS32_SYSTEM_INPUTS
777 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
778 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
779 
780 	/* There are inputs for players 3 and 4 in the "test mode",
781 	   but NO addresses are read to check them ! */
782 
783 	MS32_PLAYER_INPUTS(1, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)	/* BUTTON3 and BUTTON4 in "test mode"*/
784 	MS32_PLAYER_INPUTS(2, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)	/* BUTTON3 and BUTTON4 in "test mode"*/
785 
786 	MS32_DIP1
787 
788 	PORT_START	/* DIP2*/
789 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
790 	PORT_DIPSETTING(    0x00, "Easy" )
791 	PORT_DIPSETTING(    0xc0, "Normal" )
792 	PORT_DIPSETTING(    0x40, "Hard" )
793 	PORT_DIPSETTING(    0x80, "Hardest" )
794 	PORT_DIPNAME( 0x30, 0x30, "Winning Rounds (Player VS Player)" )
795 	PORT_DIPSETTING(    0x00, "1/1" )
796 	PORT_DIPSETTING(    0x30, "2/3" )
797 	PORT_DIPSETTING(    0x10, "3/5" )
798 	PORT_DIPSETTING(    0x20, "4/7" )
799 	PORT_DIPNAME( 0x0c, 0x0c, "Join In" )
800 	PORT_DIPSETTING(    0x0c, "All Modes" )
801 	PORT_DIPSETTING(    0x04, "Normal and Puzzle Modes" )
802 	PORT_DIPSETTING(    0x08, "VS Mode" )
803 /*	PORT_DIPSETTING(    0x00, "Normal and Puzzle Modes" )		*/ /* "can't play normal mode" in "test mode"*/
804 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) )
805 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
806 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
807 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
808 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
809 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
810 
811 	PORT_START	/* DIP3*/
812 	PORT_DIPNAME( 0x80, 0x00, "Language" )
813 	PORT_DIPSETTING(    0x80, "Japanese" )
814 	PORT_DIPSETTING(    0x00, "English" )
815 	PORT_DIPNAME( 0x40, 0x40, "FBI Logo" )
816 	PORT_DIPSETTING(    0x40, DEF_STR( No ) )
817 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
818 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
819 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
820 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
821 	PORT_DIPNAME( 0x10, 0x10, "Voice" )
822 	PORT_DIPSETTING(    0x00, "English Only" )
823 	PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
824 	PORT_DIPNAME( 0x08, 0x08, "After VS Mode" )
825 	PORT_DIPSETTING(    0x08, "Game Ends" )
826 	PORT_DIPSETTING(    0x00, "Winner Continues" )
827 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) )
828 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
829 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
830 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) )
831 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
832 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
833 	PORT_DIPNAME( 0x01, 0x01, "Freeze" )
834 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
835 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
836 
837 	MS32_UNUSED_PORT
838 
839 INPUT_PORTS_END
840 
841 INPUT_PORTS_START( tp2m32 )
842 	MS32_UNKNOWN_INPUTS
843 
844 	MS32_SYSTEM_INPUTS
845 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER1 )
846 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER2 )
847 
848 	MS32_PLAYER_INPUTS(1, BUTTON1, BUTTON2, BUTTON3, BUTTON4)
849 	MS32_PLAYER_INPUTS(2, BUTTON1, BUTTON2, BUTTON3, BUTTON4)
850 
851 	MS32_DIP1
852 
853 	PORT_START	/* DIP2*/
854 	PORT_DIPNAME( 0xc0, 0xc0, "Endless Difficulty" )
855 	PORT_DIPSETTING(    0x00, "Easy" )
856 	PORT_DIPSETTING(    0xc0, "Normal" )
857 	PORT_DIPSETTING(    0x40, "Hard" )
858 	PORT_DIPSETTING(    0x80, "Very Hard" )
859 	PORT_DIPNAME( 0x30, 0x30, "Puzzle Difficulty" )
860 	PORT_DIPSETTING(    0x00, "Easy" )
861 	PORT_DIPSETTING(    0x30, "Normal" )
862 	PORT_DIPSETTING(    0x10, "Hard" )
863 	PORT_DIPSETTING(    0x20, "Very Hard" )
864 	PORT_DIPNAME( 0x0c, 0x0c, "VS Match" )
865 	PORT_DIPSETTING(    0x00, "1" )
866 	PORT_DIPSETTING(    0x0c, "3" )
867 	PORT_DIPSETTING(    0x04, "5" )
868 	PORT_DIPSETTING(    0x08, "7" )
869 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) )
870 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
871 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
872 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
873 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
874 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
875 
876 	PORT_START	/* DIP3*/
877 	PORT_DIPNAME( 0x80, 0x00, "Language" )
878 	PORT_DIPSETTING(    0x80, "Japanese" )
879 	PORT_DIPSETTING(    0x00, "English" )
880 	PORT_DIPNAME( 0x40, 0x40, "FBI Logo" )
881 	PORT_DIPSETTING(    0x40, DEF_STR( No ) )
882 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
883 	PORT_DIPNAME( 0x20, 0x20, "Voice" )
884 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
885 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
886 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
887 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
888 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
889 	PORT_DIPNAME( 0x08, 0x08, "Join In" )
890 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
891 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
892 	PORT_DIPNAME( 0x06, 0x06, "Bomb" )
893 	PORT_DIPSETTING(    0x04, "0" )
894 	PORT_DIPSETTING(    0x02, "1" )
895 	PORT_DIPSETTING(    0x06, "2" )
896 	PORT_DIPSETTING(    0x00, "3" )
897 	PORT_DIPNAME( 0x01, 0x01, "Freeze" )
898 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
899 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
900 
901 	MS32_UNUSED_PORT
902 
903 INPUT_PORTS_END
904 
905 /* The Dip Switches for this game are completely wrong in the "test mode" ! */
906 INPUT_PORTS_START( p47aces )
907 	MS32_UNKNOWN_INPUTS
908 
909 	MS32_SYSTEM_INPUTS
910 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
911 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
912 
913 	MS32_PLAYER_INPUTS(1, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)	/* BUTTON3 and BUTTON4 in "test mode"*/
914 	MS32_PLAYER_INPUTS(2, BUTTON1, BUTTON2, UNKNOWN, UNKNOWN)	/* BUTTON3 and BUTTON4 in "test mode"*/
915 
916 	MS32_DIP1
917 
918 	PORT_START	/* DIP2*/
919 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
920 	PORT_DIPSETTING(    0x00, "Easy" )
921 	PORT_DIPSETTING(    0xc0, "Normal" )
922 	PORT_DIPSETTING(    0x40, "Hard" )
923 	PORT_DIPSETTING(    0x80, "Hardest" )
924 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
925 	PORT_DIPSETTING(    0x00, "1" )
926 	PORT_DIPSETTING(    0x20, "2" )
927 	PORT_DIPSETTING(    0x30, "3" )
928 	PORT_DIPSETTING(    0x10, "4" )
929 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
930 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
931 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
932 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) )
933 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
934 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
935 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) )
936 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
937 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
938 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
939 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
940 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
941 
942 	PORT_START	/* DIP3*/
943 	PORT_DIPNAME( 0x80, 0x00, "Language" )
944 	PORT_DIPSETTING(    0x80, "Japanese" )
945 	PORT_DIPSETTING(    0x00, "English" )
946 	PORT_DIPNAME( 0x40, 0x40, "FBI Logo" )
947 	PORT_DIPSETTING(    0x40, DEF_STR( No ) )
948 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
949 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
950 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
951 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
952 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
953 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
954 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
955 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
956 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
957 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
958 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) )
959 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
960 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
961 	PORT_DIPNAME( 0x03, 0x03, "FG/BG X offset" )
962 	PORT_DIPSETTING(    0x03, "0/0" )
963 	PORT_DIPSETTING(    0x02, "5/5" )
964 /*	PORT_DIPSETTING(    0x01, "5/5" )*/
965 	PORT_DIPSETTING(    0x00, "2/4" )
966 
967 	MS32_UNUSED_PORT
968 
969 INPUT_PORTS_END
970 
971 INPUT_PORTS_START( gratia )
972 	MS32_UNKNOWN_INPUTS
973 
974 	MS32_SYSTEM_INPUTS
975 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
976 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
977 
978 	MS32_PLAYER_INPUTS(1, BUTTON1, BUTTON2, BUTTON3, UNKNOWN)	/* BUTTON4 in "test mode"*/
979 	MS32_PLAYER_INPUTS(2, BUTTON1, BUTTON2, BUTTON3, UNKNOWN)	/* BUTTON4 in "test mode"*/
980 
981 	MS32_DIP1
982 
983 	PORT_START	/* DIP2*/
984 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
985 	PORT_DIPSETTING(    0x00, "Easy" )
986 	PORT_DIPSETTING(    0xc0, "Normal" )
987 	PORT_DIPSETTING(    0x40, "Hard" )
988 	PORT_DIPSETTING(    0x80, "Hardest" )
989 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
990 	PORT_DIPSETTING(    0x00, "1" )
991 	PORT_DIPSETTING(    0x20, "2" )
992 	PORT_DIPSETTING(    0x30, "3" )
993 	PORT_DIPSETTING(    0x10, "4" )
994 	PORT_BITX(    0x08, 0x08, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
995 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
996 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
997 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Bonus_Life ) )
998 	PORT_DIPSETTING(    0x04, "200k and every 1000k" )
999 	PORT_DIPSETTING(    0x00, "None" )
1000 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) )
1001 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1002 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
1003 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
1004 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1005 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1006 
1007 	PORT_START	/* DIP3*/
1008 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1009 	PORT_DIPNAME( 0x80, 0x00, "Language" )
1010 	PORT_DIPSETTING(    0x80, "Japanese" )
1011 	PORT_DIPSETTING(    0x00, "English" )
1012 	PORT_DIPNAME( 0x40, 0x40, "FBI Logo" )
1013 	PORT_DIPSETTING(    0x40, DEF_STR( No ) )
1014 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
1015 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
1016 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1017 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1018 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
1019 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1020 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1021 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
1022 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1023 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1024 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) )
1025 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1026 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1027 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) )
1028 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1029 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1030 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) )
1031 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1032 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1033 
1034 	MS32_UNUSED_PORT
1035 
1036 INPUT_PORTS_END
1037 
1038 INPUT_PORTS_START( hayaosi1 )
1039 	MS32_UNKNOWN_INPUTS
1040 
1041 	MS32_SYSTEM_INPUTS
1042 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1043 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1044 
1045 	PORT_START
1046 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
1047 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
1048 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
1049 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
1050 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
1051 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
1052 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER1 )	/* "Buzzer" (input 0 in "test mode")*/
1053 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER3 )	/* "Buzzer" (input 0 in "test mode")*/
1054 
1055 	PORT_START
1056 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
1057 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )
1058 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
1059 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 )
1060 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
1061 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER3 )
1062 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER2 )	/* "Buzzer" (input 0 in "test mode")*/
1063 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
1064 
1065 	MS32_DIP1	/* "Service Mode" Dip Switch doesn't work ! Use the "Test" button instead !*/
1066 
1067 	PORT_START	/* DIP2*/
1068 	PORT_DIPNAME( 0xc0, 0xc0, "Computer's AI (VS Mode)" )
1069 	PORT_DIPSETTING(    0x40, "Low" )
1070 	PORT_DIPSETTING(    0xc0, "Normal" )
1071 	PORT_DIPSETTING(    0x80, "High" )
1072 	PORT_DIPSETTING(    0x00, "Highest" )
1073 	/*  Lap    Time    Questions */
1074       /*   1     1:00        4     */
1075       /*   2     1:00        6     */
1076       /*   3     1:30        8     */
1077       /*   4     1:30       10     */
1078       /*   4     2:00       14     */
1079       /* final   2:00       18     */
1080 	PORT_DIPNAME( 0x30, 0x30, "Time (Race Mode)" )
1081 	PORT_DIPSETTING(    0x00, "Default - 0:15" )
1082 	PORT_DIPSETTING(    0x20, "Default - 0:10" )
1083 	PORT_DIPSETTING(    0x30, "Default" )
1084 	PORT_DIPSETTING(    0x10, "Default + 0:15" )
1085 	/* Round   Default    More */
1086       /*   1       10        15  */
1087 	PORT_DIPNAME( 0x08, 0x08, "Questions (VS Mode)" )	/* TO DO : check all rounds*/
1088 	PORT_DIPSETTING(    0x08, "Default" )
1089 	PORT_DIPSETTING(    0x00, "More" )
1090 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )		/* "Unused" ?*/
1091 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1092 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1093 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )		/* "Demo Sounds" ?*/
1094 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1095 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1096 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )		/* "Flip Screen" ?*/
1097 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1098 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1099 
1100 	PORT_START	/* DIP3*/
1101 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
1102 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1103 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1104 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
1105 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1106 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1107 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
1108 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1109 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1110 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
1111 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1112 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1113 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
1114 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1115 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1116 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) )
1117 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1118 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1119 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) )
1120 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1121 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1122 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) )
1123 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1124 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1125 
1126 	MS32_UNUSED_PORT
1127 
1128 INPUT_PORTS_END
1129 
1130 INPUT_PORTS_START( kirarast )	/* player 1 inputs done? others?*/
1131 	MS32_UNKNOWN_INPUTS
1132 
1133 	MS32_SYSTEM_INPUTS
1134 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1135 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1136 
1137 	MS32_UNUSED_PORT /* p1*/
1138 	MS32_UNUSED_PORT /* p2*/
1139 
1140 	MS32_DIP1
1141 
1142 	PORT_START	/* DIP2*/
1143 	PORT_DIPNAME( 0xe0, 0xe0, DEF_STR (Difficulty) )
1144 	PORT_DIPSETTING(    0x00, "Easiest" )
1145 	PORT_DIPSETTING(    0x80, "Very Easy" )
1146 	PORT_DIPSETTING(    0x40, "Easier" )
1147 	PORT_DIPSETTING(    0xc0, "Easy" )
1148 	PORT_DIPSETTING(    0xe0, "Normal" )
1149 	PORT_DIPSETTING(    0x60, "Hard" )
1150 	PORT_DIPSETTING(    0xa0, "Harder" )
1151 	PORT_DIPSETTING(    0x20, "Hardest" )
1152 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds) )
1153 	PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1154 	PORT_DIPSETTING( 0x10, DEF_STR( On ) )
1155 	PORT_DIPNAME( 0x08, 0x08, "Tumo Pinfu" )
1156 	PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1157 	PORT_DIPSETTING( 0x08, DEF_STR( On ) )
1158 	PORT_DIPNAME( 0x04, 0x04, "Campaign Mode" )
1159 	PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1160 	PORT_DIPSETTING( 0x04, DEF_STR( On ) )
1161 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
1162 	PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
1163 	PORT_DIPSETTING( 0x02, DEF_STR( On ) )
1164 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
1165 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1166 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1167 
1168 	PORT_START	/* DIP3*/
1169 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1170 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1171 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1172 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1173 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1174 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1175 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1176 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1177 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1178 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1179 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1180 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1181 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1182 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1183 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1184 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1185 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1186 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1187 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
1188 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1189 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1190 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
1191 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1192 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1193 
1194 	MS32_UNUSED_PORT
1195 
1196 	PORT_START	/* Mahjong Inputs 0x01*/
1197 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_START1 )
1198 	PORT_BITX( 0x02, IP_ACTIVE_LOW, 0, "P1 A",     KEYCODE_A,        IP_JOY_NONE )
1199 	PORT_BITX( 0x04, IP_ACTIVE_LOW, 0, "P1 E",     KEYCODE_E,        IP_JOY_NONE )
1200 	PORT_BITX( 0x08, IP_ACTIVE_LOW, 0, "P1 M",     KEYCODE_M,        IP_JOY_NONE )
1201 	PORT_BITX( 0x10, IP_ACTIVE_LOW, 0, "P1 I",     KEYCODE_I,        IP_JOY_NONE )
1202 	PORT_BITX( 0x20, IP_ACTIVE_LOW, 0, "P1 Kan",   KEYCODE_LCONTROL, IP_JOY_NONE )
1203 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1204 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1205 
1206 	PORT_START	/* Mahjong Inputs 0x02*/
1207 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1208 	PORT_BITX( 0x02, IP_ACTIVE_LOW, 0, "P1 B",     KEYCODE_B,        IP_JOY_NONE )
1209 	PORT_BITX( 0x04, IP_ACTIVE_LOW, 0, "P1 F",     KEYCODE_F,        IP_JOY_NONE )
1210 	PORT_BITX( 0x08, IP_ACTIVE_LOW, 0, "P1 N",     KEYCODE_N,        IP_JOY_NONE )
1211 	PORT_BITX( 0x10, IP_ACTIVE_LOW, 0, "P1 J",     KEYCODE_J,        IP_JOY_NONE )
1212 	PORT_BITX( 0x20, IP_ACTIVE_LOW, 0, "P1 Reach", KEYCODE_LSHIFT,   IP_JOY_NONE )
1213 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1214 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1215 
1216 	PORT_START	/* Mahjong Inputs 0x04*/
1217 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1218 	PORT_BITX( 0x02, IP_ACTIVE_LOW, 0, "P1 C",     KEYCODE_C,        IP_JOY_NONE )
1219 	PORT_BITX( 0x04, IP_ACTIVE_LOW, 0, "P1 G",     KEYCODE_G,        IP_JOY_NONE )
1220 	PORT_BITX( 0x08, IP_ACTIVE_LOW, 0, "P1 Chi",   KEYCODE_SPACE,    IP_JOY_NONE )
1221 	PORT_BITX( 0x10, IP_ACTIVE_LOW, 0, "P1 K",     KEYCODE_K,        IP_JOY_NONE )
1222 	PORT_BITX( 0x20, IP_ACTIVE_LOW, 0, "P1 Ron",   KEYCODE_Z,        IP_JOY_NONE )
1223 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1224 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1225 
1226 	PORT_START	/* Mahjong Inputs 0x08*/
1227 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1228 	PORT_BITX( 0x02, IP_ACTIVE_LOW, 0, "P1 D",     KEYCODE_D,        IP_JOY_NONE )
1229 	PORT_BITX( 0x04, IP_ACTIVE_LOW, 0, "P1 H",     KEYCODE_H,        IP_JOY_NONE )
1230 	PORT_BITX( 0x08, IP_ACTIVE_LOW, 0, "P1 Pon",   KEYCODE_LALT,     IP_JOY_NONE )
1231 	PORT_BITX( 0x10, IP_ACTIVE_LOW, 0, "P1 L",     KEYCODE_L,        IP_JOY_NONE )
1232 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1233 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1234 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1235 
1236 	PORT_START	/* Mahjong Inputs 0x10*/
1237 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1238 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1239 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1240 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1241 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1242 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1243 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1244 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1245 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1246 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1247 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1248 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1249 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1250 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1251 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1252 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1253 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1254 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1255 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
1256 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1257 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1258 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
1259 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1260 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1261 INPUT_PORTS_END
1262 
1263 INPUT_PORTS_START( f1superb )	/* Mostly wrong !*/
1264 	MS32_UNKNOWN_INPUTS
1265 
1266 	MS32_SYSTEM_INPUTS
1267 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER1 )
1268 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER2 )
1269 
1270 	PORT_START
1271 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
1272 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
1273 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
1274 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )
1275 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
1276 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
1277 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
1278 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 )
1279 
1280 	PORT_START
1281 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
1282 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
1283 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
1284 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER3 )
1285 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER4 )
1286 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER4 )
1287 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER4 )
1288 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER4 )
1289 
1290 	MS32_DIP1
1291 
1292 	PORT_START	/* DIP2*/
1293 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1294 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1295 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1296 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1297 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1298 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1299 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1300 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1301 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1302 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1303 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1304 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1305 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1306 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1307 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1308 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1309 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1310 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1311 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
1312 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1313 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1314 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
1315 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1316 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1317 
1318 	PORT_START	/* DIP3*/
1319 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1320 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1321 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1322 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1323 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1324 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1325 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1326 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1327 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1328 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1329 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1330 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1331 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1332 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1333 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1334 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1335 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1336 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1337 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
1338 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1339 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1340 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
1341 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1342 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1343 
1344 	MS32_UNUSED_PORT
1345 
1346 	PORT_START	/* Acceleration (wrong?)*/
1347 	PORT_ANALOG( 0xff, 0x00, IPT_AD_STICK_Y | IPF_REVERSE | IPF_PLAYER1, 50, 15, 0, 0xff)
1348 
1349 
1350 	PORT_START	/* Steering*/
1351 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X | IPF_PLAYER1, 50, 15, 0x00, 0xff)
1352 
1353 	PORT_START	/* Shift + Brake*/
1354 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1355 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1356 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1357 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1358 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1359 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1360 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1361 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1362 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1363 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1364 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1365 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1366 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1367 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1368 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1369 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1370 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1371 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1372 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
1373 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1374 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1375 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
1376 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1377 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1378 
1379 INPUT_PORTS_END
1380 
1381 /********** GFX DECODE **********/
1382 
1383 /* sprites are contained in 256x256 "tiles" */
1384 static struct GfxLayout spritelayout =
1385 {
1386 	256,256,
1387 	RGN_FRAC(1,1),
1388 	8,
1389 	{ GFX_RAW },
1390 	{ 0 },		/* org displacement */
1391 	{ 256*8 },	/* line modulo */
1392 	256*256*8	/* char modulo */
1393 };
1394 
1395 static struct GfxLayout bglayout =
1396 {
1397 	16,16,
1398 	RGN_FRAC(1,1),
1399 	8,
1400 	{ GFX_RAW },
1401 	{ 0 },		/* org displacement */
1402 	{ 16*8 },	/* line modulo */
1403 	16*16*8		/* char modulo */
1404 };
1405 
1406 
1407 static struct GfxLayout txlayout =
1408 {
1409 	8,8,
1410 	RGN_FRAC(1,1),
1411 	8,
1412 	{ GFX_RAW },
1413 	{ 0 },		/* org displacement */
1414 	{ 8*8 },	/* line modulo */
1415 	8*8*8		/* char modulo */
1416 };
1417 
1418 static struct GfxDecodeInfo ms32_gfxdecodeinfo[] =
1419 {
1420 	{ REGION_GFX1, 0, &spritelayout, 0x0000, 0x10 },
1421 	{ REGION_GFX2, 0, &bglayout,     0x2000, 0x10 },
1422 	{ REGION_GFX3, 0, &bglayout,     0x1000, 0x10 },
1423 	{ REGION_GFX4, 0, &txlayout,     0x6000, 0x10 },
1424 	{ -1 }
1425 };
1426 
1427 
1428 
1429 /********** INTERRUPTS **********/
1430 
1431 /* Irqs used in desertwr:
1432    1  - 6a0 - minimal
1433    9  - 6c8 - minimal
1434    10 - 6d4 - big, vbl?
1435 */
1436 
1437 static UINT16 irqreq;
1438 
irq_callback(int irqline)1439 static int irq_callback(int irqline)
1440 {
1441 	int i;
1442 	for(i=15; i>=0 && !(irqreq & (1<<i)); i--);
1443 	irqreq &= ~(1<<i);
1444 	if(!irqreq)
1445 		cpu_set_irq_line(0, 0, CLEAR_LINE);
1446 	return i;
1447 }
1448 
irq_init(void)1449 static void irq_init(void)
1450 {
1451 	irqreq = 0;
1452 	cpu_set_irq_line(0, 0, CLEAR_LINE);
1453 	cpu_set_irq_callback(0, irq_callback);
1454 }
1455 
irq_raise(int level)1456 static void irq_raise(int level)
1457 {
1458 	irqreq |= (1<<level);
1459 	cpu_set_irq_line(0, 0, ASSERT_LINE);
1460 }
1461 
INTERRUPT_GEN(ms32_interrupt)1462 static INTERRUPT_GEN(ms32_interrupt)
1463 {
1464 	if( cpu_getiloops() == 0 ) irq_raise(10);
1465 	if( cpu_getiloops() == 1 ) irq_raise(9);
1466 	/* hayaosi1 needs at least 12 IRQ 0 per frame to work (see code at FFE02289)
1467 	   kirarast needs it too, at least 8 per frame, but waits for a variable amount
1468 	   47pi2 needs ?? per frame (otherwise it hangs when you lose)
1469 	   in different points. Could this be a raster interrupt?
1470 	   Other games using it but not needing it to work:
1471 	   desertwr
1472 	   p47aces
1473 	   */
1474 	if( cpu_getiloops() >= 3 && cpu_getiloops() <= 32 ) irq_raise(0);
1475 }
1476 
1477 /********** SOUND **********/
1478 
1479 /*
1480  Jaleco Mega System 32 sound Z80
1481 
1482  RAM 62256 - the highest RAM adr line is grounded, only 16k is used
1483 
1484  0000-3eff: program ROM (fixed)
1485  3f00-3f0f: YMF271-F
1486  3f10     : RW :command latch
1487  3f20	  : RW :2nd command latch  ?? (not connected on PCB)
1488  3f40     : W : YMF271 pin 4 (bit 1) , YMF271 pin 39 (bit 4)
1489  3f70	  : W : unknown ? connected to JALECO GS91022-04 pin 55 (from GAL)
1490  3f80	  : Bank select - $bB
1491  4000-7fff: RAM
1492  8000-bfff: banked ROM area #1 - bank B+1
1493  c000-ffff: banked ROM area #2 - bank b+1
1494 
1495  IRQ is unused (YMF271 timers are polled to control tempo)
1496  NMI reads the command latch
1497  code at $38 reads the 2nd command latch ??
1498 */
1499 
READ_HANDLER(latch_r)1500 static READ_HANDLER( latch_r )
1501 {
1502 	cpu_set_irq_line(1, IRQ_LINE_NMI, CLEAR_LINE);
1503 	return soundlatch_r(0)^0xff;
1504 }
1505 
WRITE_HANDLER(ms32_snd_bank_w)1506 static WRITE_HANDLER( ms32_snd_bank_w )
1507 {
1508 		cpu_setbank(4, memory_region(REGION_CPU2) + 0x14000+0x4000*(data&0xf));
1509 		cpu_setbank(5, memory_region(REGION_CPU2) + 0x14000+0x4000*(data>>4));
1510 }
1511 
WRITE_HANDLER(to_main_w)1512 static WRITE_HANDLER( to_main_w )
1513 {
1514 		to_main=data;
1515 		irq_raise(1);
1516 }
1517 
MEMORY_READ_START(ms32_snd_readmem)1518 static MEMORY_READ_START( ms32_snd_readmem )
1519 	{ 0x0000, 0x3eff, MRA_ROM },
1520 	{ 0x3f00, 0x3f0f, YMF271_0_r },
1521 	{ 0x3f10, 0x3f10, latch_r },
1522 	{ 0x3f20, 0x3f20, MRA_NOP }, /* 2nd latch ? */
1523 	{ 0x4000, 0x7fff, MRA_RAM },
1524 	{ 0x8000, 0xbfff, MRA_BANK4 },
1525 	{ 0xc000, 0xffff, MRA_BANK5 },
1526 MEMORY_END
1527 
1528 static MEMORY_WRITE_START( ms32_snd_writemem )
1529 	{ 0x0000, 0x3eff, MWA_ROM },
1530 	{ 0x3f00, 0x3f0f, YMF271_0_w },
1531 	{ 0x3f10, 0x3f10, to_main_w },
1532 	{ 0x3f20, 0x3f20, MWA_NOP }, /* to_main2_w  ? */
1533 	{ 0x3f40, 0x3f40, MWA_NOP },   /* YMF271 pin 4 (bit 1) , YMF271 pin 39 (bit 4) */
1534 	{ 0x3f70, 0x3f70, MWA_NOP },   /* watchdog? banking? very noisy*/
1535 	{ 0x3f80, 0x3f80, ms32_snd_bank_w },
1536 	{ 0x4000, 0x7fff, MWA_RAM },
1537 	{ 0x8000, 0xffff, MWA_ROM },
1538 MEMORY_END
1539 
1540 static struct YMF271interface ymf271_interface =
1541 {
1542 	1,
1543 	{ REGION_SOUND1, },
1544 	{ YM3012_VOL(100,MIXER_PAN_LEFT,100,MIXER_PAN_RIGHT),},
1545 	{ 0 },
1546 };
1547 
1548 /********** MACHINE INIT **********/
1549 
MACHINE_INIT(ms32)1550 static MACHINE_INIT( ms32 )
1551 {
1552 	cpu_setbank(1, memory_region(REGION_CPU1));
1553 	cpu_setbank(4, memory_region(REGION_CPU2) + 0x14000);
1554 	cpu_setbank(5, memory_region(REGION_CPU2) + 0x18000);
1555 	irq_init();
1556 }
1557 
1558 /********** MACHINE DRIVER **********/
1559 
1560 static MACHINE_DRIVER_START( ms32 )
1561 
1562 	/* basic machine hardware */
1563 	MDRV_CPU_ADD(V70, 20000000) /* 20MHz*/
MDRV_CPU_MEMORY(ms32_readmem,ms32_writemem)1564 	MDRV_CPU_MEMORY(ms32_readmem,ms32_writemem)
1565 	MDRV_CPU_VBLANK_INT(ms32_interrupt,32)
1566 
1567 	MDRV_CPU_ADD(Z80, 4000000)
1568 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
1569 	MDRV_CPU_MEMORY(ms32_snd_readmem, ms32_snd_writemem)
1570 
1571 	MDRV_FRAMES_PER_SECOND(60)
1572 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
1573 	MDRV_INTERLEAVE(1000)
1574 
1575 	MDRV_MACHINE_INIT(ms32)
1576 
1577 	/* video hardware */
1578 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER|VIDEO_NEEDS_6BITS_PER_GUN)
1579 	MDRV_SCREEN_SIZE(40*8, 28*8)
1580 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
1581 	MDRV_GFXDECODE(ms32_gfxdecodeinfo)
1582 	MDRV_PALETTE_LENGTH(0x8000)
1583 
1584 	MDRV_VIDEO_START(ms32)
1585 	MDRV_VIDEO_UPDATE(ms32)
1586 
1587 	/* sound hardware */
1588 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
1589 	MDRV_SOUND_ADD(YMF271, ymf271_interface)
1590 MACHINE_DRIVER_END
1591 
1592 
1593 /********** ROM LOADING **********/
1594 
1595 ROM_START( bbbxing )
1596 	ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* V70 code */
1597  	ROM_LOAD32_BYTE( "bbbx25.bin", 0x000003, 0x80000, CRC(b526b41e) SHA1(44945931b159646468a954d5acdd2c6c61daf098) )
1598 	ROM_LOAD32_BYTE( "bbbx27.bin", 0x000002, 0x80000, CRC(45b27ad8) SHA1(0af415b17400aabecdcb6d1d069f28b64780017f) )
1599 	ROM_LOAD32_BYTE( "bbbx29.bin", 0x000001, 0x80000, CRC(85bbbe79) SHA1(bc5ebb96491762e6a0d202ddf7faeb57c66211b4) )
1600 	ROM_LOAD32_BYTE( "bbbx31.bin", 0x000000, 0x80000, CRC(e0c865ed) SHA1(f21e8dc174c50d7afdd3f82c1c66dfcc002bdd07) )
1601 
1602 	ROM_REGION( 0x1100000, REGION_GFX1, 0 ) /* sprites, don't dispose since we use GFX_RAW */
1603 	ROM_LOAD32_WORD( "bbbx1.bin",   0x0000002, 0x200000, CRC(c1c10c3b) SHA1(e1f739f38e148c4d7aff6b81b3e42131c5c6c3dd) )
1604 	ROM_LOAD32_WORD( "bbbx13.bin",  0x0000000, 0x200000, CRC(4b8c1574) SHA1(c389c70b532d54528a175f460ca3f329b34cf67c) )
1605 	ROM_LOAD32_WORD( "bbbx2.bin",   0x0400002, 0x200000, CRC(03b77c1e) SHA1(f156ae6a4f2a8ae99815eb5a7b28425d273c1c3e) )
1606 	ROM_LOAD32_WORD( "bbbx14.bin",  0x0400000, 0x200000, CRC(e9cfd83b) SHA1(8580c571a4144ea27c7fca7e86e3e4f5e4f5facb) )
1607 	ROM_LOAD32_WORD( "bbbx3.bin",   0x0800002, 0x200000, CRC(bba0d1a4) SHA1(15f8de7478182c36927a84ee8de8eb8ac3e65d7b) )
1608 	ROM_LOAD32_WORD( "bbbx15.bin",  0x0800000, 0x200000, CRC(6ab64a10) SHA1(4ee2cec6b9f8d729ff53851f7949c5cd3a8029d8) )
1609 	ROM_LOAD32_WORD( "bbbx4.bin",   0x0c00002, 0x200000, CRC(97f97e3a) SHA1(260603a10fe742986aa4f7fb90e4f141bdadae17) )
1610 	ROM_LOAD32_WORD( "bbbx16.bin",  0x0c00000, 0x200000, CRC(e001d6cb) SHA1(c887dbf192e6b46c86fd86bb5f58b44ab8fe8d73) )
1611 	ROM_LOAD32_WORD( "bbbx5.bin",   0x1000002, 0x080000, CRC(64989edf) SHA1(033eab0e8a53607b2bb420f6356804b2cfa1544c) )
1612 	ROM_LOAD32_WORD( "bbbx17.bin",  0x1000000, 0x080000, CRC(1d7ebaf0) SHA1(5aac7cb01013ce3be206318678aced5812bff9a9) )
1613 
1614 	ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* roz tiles, don't dispose since we use GFX_RAW */
1615 	ROM_LOAD( "bbbx9.bin",   0x000000, 0x200000, CRC(a41cb650) SHA1(1c55a4afe55c1250806f2d93c25842dc3fb7f987) )
1616 
1617 	ROM_REGION( 0x200000, REGION_GFX3, 0 ) /* bg tiles, don't dispose since we use GFX_RAW */
1618 	ROM_LOAD( "bbbx11.bin",  0x000000, 0x200000, CRC(85238ca9) SHA1(1ce32d585fe66764d621c11882ef9d2abaea6256) )
1619 
1620 	ROM_REGION( 0x080000, REGION_GFX4, 0 ) /* tx tiles, don't dispose since we use GFX_RAW */
1621 	ROM_LOAD( "bbbx32-2.bin",0x000000, 0x080000, CRC(3ffdae75) SHA1(2b837d28f7ecdd49e8525bd5c249e83021d5fe9f) )
1622 
1623 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* z80 program */
1624 	ROM_LOAD( "bbbx21.bin",  0x000000, 0x040000, CRC(5f3ea01f) SHA1(761f6a5852312d2b12de009f3cf0476f5b2e906c) )
1625 	ROM_RELOAD(              0x010000, 0x40000 )
1626 
1627 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* samples */
1628 	ROM_LOAD( "bbbx22.bin",  0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) /* common samples*/
1629 	ROM_LOAD( "bbbx23.bin",  0x200000, 0x200000, CRC(b7875a23) SHA1(62bb4c1318f98ea68894658d92ce08e84d386d0c) )
1630 ROM_END
1631 
1632 ROM_START( 47pie2 )
1633 	ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* V70 code */
1634 	ROM_LOAD32_BYTE( "93166-26.v11", 0x000003, 0x80000, CRC(e4e62134) SHA1(224b3e8dba56009bf2af6eceb7495e60302a6360) )
1635 	ROM_LOAD32_BYTE( "93166-27.v11", 0x000002, 0x80000, CRC(7bd00919) SHA1(60565b5e1da5fee00ac4a7fb1202d7150dab49ee) )
1636 	ROM_LOAD32_BYTE( "93166-28.v11", 0x000001, 0x80000, CRC(aa49eec2) SHA1(173afc596caa1c464fc3247cb64d36c1d97a1520) )
1637 	ROM_LOAD32_BYTE( "93166-29.v11", 0x000000, 0x80000, CRC(92763e41) SHA1(eb593bbb586661c4c4e8728d845b146974d0bdf8) )
1638 
1639 	ROM_REGION( 0x1000000, REGION_GFX1, 0 ) /* sprites, don't dispose since we use GFX_RAW */
1640 	ROM_LOAD32_WORD( "94019-02.1",  0x000002, 0x200000, CRC(f9d692f2) SHA1(666df55d26e00be39073173fa3616ac9dafbe615) )
1641 	ROM_LOAD32_WORD( "94019-01.13", 0x000000, 0x200000, CRC(1ddfe825) SHA1(27fbf492fdb4f0b4b8db18330e840c130213e15e) )
1642 	ROM_LOAD32_WORD( "94019-04.2",  0x400002, 0x200000, CRC(24ca77ec) SHA1(a5c575224ab276cbed5785f40fc0d35dd2748e74) )
1643 	ROM_LOAD32_WORD( "94019-03.14", 0x400000, 0x200000, CRC(b26426c4) SHA1(2d95137edea7d0c380dd8fd99852254ad3e4c837) )
1644 	ROM_LOAD32_WORD( "94019-06.3",  0x800002, 0x200000, CRC(c8aa4b57) SHA1(55da6a43ba6f0cb32f5d024f67cae21d04019d2a) )
1645 	ROM_LOAD32_WORD( "94019-05.15", 0x800000, 0x200000, CRC(1da63eb4) SHA1(8193ad27ddfe6ba242b73082d1b4a400e88401ba) )
1646 	ROM_LOAD32_WORD( "94019-08.4",  0xc00002, 0x200000, CRC(4b07edc9) SHA1(22aaa923a94a7bec997d2adabc8ec2c7696c33a5) )
1647 	ROM_LOAD32_WORD( "94019-07.16", 0xc00000, 0x200000, CRC(34f471a8) SHA1(4c9c358a9bfdb436a211caa14d085e631609681d) )
1648 
1649 	ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* roz tiles, don't dispose since we use GFX_RAW */
1650 	ROM_LOAD( "94019-09.11", 0x000000, 0x200000, CRC(cde7bb6f) SHA1(47454dac4ce67ce8d7e0c5ef3a732477ac8170a7) )
1651 
1652 	ROM_REGION( 0x100000, REGION_GFX3, 0 ) /* bg tiles, don't dispose since we use GFX_RAW */
1653 	ROM_LOAD( "94019-12.10", 0x000000, 0x100000, CRC(15ae05d9) SHA1(ac00d3766c42ccba4585b9acfacc81bcb940ac26) )
1654 
1655 	ROM_REGION( 0x080000, REGION_GFX4, 0 ) /* tx tiles, don't dispose since we use GFX_RAW */
1656 	ROM_LOAD( "93166-30.bin", 0x000000, 0x080000, CRC(0c738883) SHA1(e552c1842d759e5e617eb9c6cc178620a461b4dd) )
1657 
1658 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* z80 program */
1659 	ROM_LOAD( "93166-21.bin", 0x000000, 0x040000, CRC(e7fd1bf4) SHA1(74567530364bfd93bffddb588758d8498e197668) )
1660 	ROM_RELOAD(              0x010000, 0x40000 )
1661 
1662 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* samples */
1663 	ROM_LOAD( "94019-10.22", 0x000000, 0x200000, CRC(745d41ec) SHA1(9118d0f27b65c9d37970326ccf86fdccb81d32f5) )
1664 	ROM_LOAD( "94019-11.23", 0x200000, 0x200000, CRC(021dc350) SHA1(c71936091f86440201fdbdc94b0d1d22c4018188) )
1665 ROM_END
1666 
1667 ROM_START( 47pie2o )
1668 	ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* V70 code */
1669 	ROM_LOAD32_BYTE( "93166-26.v10", 0x000003, 0x80000, CRC(21dc94dd) SHA1(faf2eea891cb061d5df47ef31d9538feb0c1233c) )
1670 	ROM_LOAD32_BYTE( "93166-27.v10", 0x000002, 0x80000, CRC(5bf18a7d) SHA1(70869dc37e6ad79ce4e85db71a03c5cccf9d732b) )
1671 	ROM_LOAD32_BYTE( "93166-28.v10", 0x000001, 0x80000, CRC(b1261d51) SHA1(3f393aeb7a076c4d2d2cc7f22ead05f405186d80) )
1672 	ROM_LOAD32_BYTE( "93166-29.v10", 0x000000, 0x80000, CRC(9211c82a) SHA1(0aa3f93293b81e0f66b985046eb5e91708693959) )
1673 
1674 	ROM_REGION( 0x1000000, REGION_GFX1, 0 ) /* sprites, don't dispose since we use GFX_RAW */
1675 	ROM_LOAD32_WORD( "94019-02.1",  0x000002, 0x200000, CRC(f9d692f2) SHA1(666df55d26e00be39073173fa3616ac9dafbe615) )
1676 	ROM_LOAD32_WORD( "94019-01.13", 0x000000, 0x200000, CRC(1ddfe825) SHA1(27fbf492fdb4f0b4b8db18330e840c130213e15e) )
1677 	ROM_LOAD32_WORD( "94019-04.2",  0x400002, 0x200000, CRC(24ca77ec) SHA1(a5c575224ab276cbed5785f40fc0d35dd2748e74) )
1678 	ROM_LOAD32_WORD( "94019-03.14", 0x400000, 0x200000, CRC(b26426c4) SHA1(2d95137edea7d0c380dd8fd99852254ad3e4c837) )
1679 	ROM_LOAD32_WORD( "94019-06.3",  0x800002, 0x200000, CRC(c8aa4b57) SHA1(55da6a43ba6f0cb32f5d024f67cae21d04019d2a) )
1680 	ROM_LOAD32_WORD( "94019-05.15", 0x800000, 0x200000, CRC(1da63eb4) SHA1(8193ad27ddfe6ba242b73082d1b4a400e88401ba) )
1681 	ROM_LOAD32_WORD( "94019-08.4",  0xc00002, 0x200000, CRC(4b07edc9) SHA1(22aaa923a94a7bec997d2adabc8ec2c7696c33a5) )
1682 	ROM_LOAD32_WORD( "94019-07.16", 0xc00000, 0x200000, CRC(34f471a8) SHA1(4c9c358a9bfdb436a211caa14d085e631609681d) )
1683 
1684 	ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* roz tiles, don't dispose since we use GFX_RAW */
1685 	ROM_LOAD( "94019-09.11", 0x000000, 0x200000, CRC(cde7bb6f) SHA1(47454dac4ce67ce8d7e0c5ef3a732477ac8170a7) )
1686 
1687 	ROM_REGION( 0x100000, REGION_GFX3, 0 ) /* bg tiles, don't dispose since we use GFX_RAW */
1688 	ROM_LOAD( "94019-12.10", 0x000000, 0x100000, CRC(15ae05d9) SHA1(ac00d3766c42ccba4585b9acfacc81bcb940ac26) )
1689 
1690 	ROM_REGION( 0x080000, REGION_GFX4, 0 ) /* tx tiles, don't dispose since we use GFX_RAW */
1691 	ROM_LOAD( "93166-30.bin", 0x000000, 0x080000, CRC(0c738883) SHA1(e552c1842d759e5e617eb9c6cc178620a461b4dd) )
1692 
1693 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* z80 program */
1694 	ROM_LOAD( "93166-21.bin", 0x000000, 0x040000, CRC(e7fd1bf4) SHA1(74567530364bfd93bffddb588758d8498e197668) )
1695 	ROM_RELOAD(              0x010000, 0x40000 )
1696 
1697 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* samples */
1698 	ROM_LOAD( "94019-10.22", 0x000000, 0x200000, CRC(745d41ec) SHA1(9118d0f27b65c9d37970326ccf86fdccb81d32f5) )
1699 	ROM_LOAD( "94019-11.23", 0x200000, 0x200000, CRC(021dc350) SHA1(c71936091f86440201fdbdc94b0d1d22c4018188) )
1700 ROM_END
1701 
1702 ROM_START( desertwr )
1703 	ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* V70 code */
1704  	ROM_LOAD32_BYTE( "93166-26.37", 0x000003, 0x80000, CRC(582b9584) SHA1(027a987cde7e9e1b24aef6a3086eba61679ad0b6) )
1705 	ROM_LOAD32_BYTE( "93166-27.38", 0x000002, 0x80000, CRC(cb60dda3) SHA1(0499b8ab19abdf8db8c18d778b3f9f6e0d277ff0) )
1706 	ROM_LOAD32_BYTE( "93166-28.39", 0x000001, 0x80000, CRC(0de40efb) SHA1(c49c3b27939e428dec1f642b7fdb9a1ff760289a) )
1707 	ROM_LOAD32_BYTE( "93166-29.40", 0x000000, 0x80000, CRC(fc25eae2) SHA1(a4d47fcb4d4c3285cf67d77d8a21478f344b98ca) )
1708 
1709 	ROM_REGION( 0x1000000, REGION_GFX1, 0 ) /* sprites, don't dispose since we use GFX_RAW */
1710 	ROM_LOAD32_WORD( "94038-01.20", 0x000000, 0x200000, CRC(f11f83e2) SHA1(e3c99e6583003210483163c79182cb14aa334702) )
1711 	ROM_LOAD32_WORD( "94038-02.3",  0x000002, 0x200000, CRC(3d1fa710) SHA1(5fae3e8c714cca88e22e432dd7275c6898c631a8) )
1712 	ROM_LOAD32_WORD( "94038-03.21", 0x400000, 0x200000, CRC(84fd5790) SHA1(6187ff32a63f3b4105ea875f52237f0d4314f8b6) )
1713 	ROM_LOAD32_WORD( "94038-04.4",  0x400002, 0x200000, CRC(b9ef5b78) SHA1(e2f160a93532f67948a557db717d44c926ae0e49) )
1714 	ROM_LOAD32_WORD( "94038-05.22", 0x800000, 0x200000, CRC(feee1b8d) SHA1(39e1d424dd56257139ab5ab8e897caa1c9cd4e71) )
1715 	ROM_LOAD32_WORD( "94038-06.5",  0x800002, 0x200000, CRC(d417f289) SHA1(39cca11989bb5dc95ef03013d23a7c100bcb36ab) )
1716 	ROM_LOAD32_WORD( "94038-07.23", 0xc00000, 0x200000, CRC(426f4193) SHA1(98a16a70c225d7cd061fcd6e88992d393e6ef9fd) )
1717 	ROM_LOAD32_WORD( "94038-08.6",  0xc00002, 0x200000, CRC(f4088399) SHA1(9d53880996f85776815840bca1f8c3958de4c275) )
1718 
1719 	ROM_REGION( 0x400000, REGION_GFX2, 0 ) /* roz tiles, don't dispose since we use GFX_RAW */
1720 	ROM_LOAD( "94038-11.13", 0x000000, 0x200000, CRC(bf2ec3a3) SHA1(904cd5ab2e855bdb94bc70efa6db42af672337d7) )
1721 	ROM_LOAD( "94038-12.14", 0x200000, 0x200000, CRC(d0e113da) SHA1(57f27cbd58421a0afe724fec5628c4a29aad8868) )
1722 
1723 	ROM_REGION( 0x400000, REGION_GFX3, 0 ) /* bg tiles, don't dispose since we use GFX_RAW */
1724 	ROM_LOAD( "94038-09.12", 0x000000, 0x200000, CRC(72ec1ce7) SHA1(88bd9ca3aa7a6410e8fcf6fd70304f12724653bb) )
1725 	ROM_LOAD( "94038-10.11", 0x200000, 0x200000, CRC(1e17f2a9) SHA1(19e6be1daa157593fbab84149f1f739dd39c9226) )
1726 
1727 	ROM_REGION( 0x080000, REGION_GFX4, 0 ) /* tx tiles, don't dispose since we use GFX_RAW */
1728 	ROM_LOAD( "93166-30.41", 0x000000, 0x080000, CRC(980ab89c) SHA1(8468fc13a5988e25750e8d99ff464f46e86ab412) )
1729 
1730 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* z80 program */
1731 	ROM_LOAD( "93166-21.30", 0x000000, 0x040000, CRC(9300be4c) SHA1(a8e9c1704abf26545aeb9a5d28fd0cafd38f2d84) )
1732 	ROM_RELOAD(              0x010000, 0x40000 )
1733 
1734 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* samples */
1735 	ROM_LOAD( "92042-01.33", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) /* common samples*/
1736 	ROM_LOAD( "94038-13.34", 0x200000, 0x200000, CRC(b0cac8f2) SHA1(f7d2e32d9c2f301341f7c02678c2c1e09ce655ba) )
1737 ROM_END
1738 
1739 ROM_START( f1superb )
1740 	ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* V70 code */
1741  	ROM_LOAD32_BYTE( "f1sb26.bin", 0x000003, 0x80000, CRC(042fccd5) SHA1(4a69de3aef51adad502d54987468170b9e7bb8ac) )
1742 	ROM_LOAD32_BYTE( "f1sb27.bin", 0x000002, 0x80000, CRC(5f96cf32) SHA1(c9c64576a8bb81a8e8bbe30b054ed33afd760b93) )
1743 	ROM_LOAD32_BYTE( "f1sb28.bin", 0x000001, 0x80000, CRC(cfda8003) SHA1(460146556f606bf213d7e2ab29d2eb8827131bd0) )
1744 	ROM_LOAD32_BYTE( "f1sb29.bin", 0x000000, 0x80000, CRC(f21f1481) SHA1(97a97ff3b9a71b1a024d8f2cfe57a1d02cec5ea4) )
1745 
1746 	ROM_REGION( 0x2000000, REGION_GFX1, 0 ) /* 8x8 not all? */
1747 	ROM_LOAD32_WORD( "f1sb1.bin",  0x0000002, 0x200000, CRC(53a3a97b) SHA1(c8cd501ae10d9eb48a02e4e59a1ce389a27afc44) )
1748 	ROM_LOAD32_WORD( "f1sb13.bin", 0x0000000, 0x200000, CRC(36565a99) SHA1(db08ff3107dcc07ca31140715d7d4b7bd27fa4c5) )
1749 	ROM_LOAD32_WORD( "f1sb2.bin",  0x0400002, 0x200000, CRC(a452f50a) SHA1(3782a37203b652ea5df5b04dc74a0fdace7b14cc) )
1750 	ROM_LOAD32_WORD( "f1sb14.bin", 0x0400000, 0x200000, CRC(c0c20490) SHA1(9e93beae38c5cfca9f381b4d134c1d95cfa2223a) )
1751 	ROM_LOAD32_WORD( "f1sb3.bin",  0x0800002, 0x200000, CRC(265d068c) SHA1(a2a7850fbc2a04e448f772544d2f6925f9aaf99c) )
1752 	ROM_LOAD32_WORD( "f1sb15.bin", 0x0800000, 0x200000, CRC(575a146e) SHA1(bf67a89ac3145d38564b9dbc3c650c9d5f2bcd92) )
1753 	ROM_LOAD32_WORD( "f1sb4.bin",  0x0c00002, 0x200000, CRC(0ccc66fd) SHA1(07ffef821300386224a7743e8f83088e3437c6db) )
1754 	ROM_LOAD32_WORD( "f1sb16.bin", 0x0c00000, 0x200000, CRC(a2d017a1) SHA1(6c1dd67a1c9c18d69f7dbf7d4637671809be5c89) )
1755 	ROM_LOAD32_WORD( "f1sb5.bin",  0x1000002, 0x200000, CRC(bff4271b) SHA1(dc5672f51348fe0a79352eeafaeeefd78428fe5a) )
1756 	ROM_LOAD32_WORD( "f1sb17.bin", 0x1000000, 0x200000, CRC(2b9739d5) SHA1(db9e93fe79dfa041584730df9cc678caad073251) )
1757 	ROM_LOAD32_WORD( "f1sb6.bin",  0x1400002, 0x200000, CRC(6caf48ec) SHA1(18ea445970285950c61c8eff74a3ab6387816990) )
1758 	ROM_LOAD32_WORD( "f1sb18.bin", 0x1400000, 0x200000, CRC(c49055ff) SHA1(6038dc497583229060ad686090d6940c0a3d1558) )
1759 	ROM_LOAD32_WORD( "f1sb7.bin",  0x1800002, 0x200000, CRC(a5458947) SHA1(7743d67a167f6eecfac6614d1336c6df425e5e95) )
1760 	ROM_LOAD32_WORD( "f1sb19.bin", 0x1800000, 0x200000, CRC(b7cacf0d) SHA1(cea52b1062cf154ccba11640798902b0f9ddeb77) )
1761 	ROM_LOAD32_WORD( "f1sb8.bin",  0x1c00002, 0x200000, CRC(ba3f1533) SHA1(3ff1c4cca8358fc8daf0d2c381672569085ac9ae) )
1762 	ROM_LOAD32_WORD( "f1sb20.bin", 0x1c00000, 0x200000, CRC(fa349897) SHA1(31e08aa2821e409057e3094333b9ecbe04a6a38a) )
1763 
1764 	ROM_REGION( 0x800000, REGION_GFX2, 0 ) /* roz tiles, don't dispose since we use GFX_RAW */
1765 	ROM_LOAD( "f1sb9.bin",  0x000000, 0x200000, CRC(66b12e1f) SHA1(4dc3f162a5116403cc0c491af335208672c8e9af) )
1766 	ROM_LOAD( "f1sb10.bin", 0x200000, 0x200000, CRC(893d7f4b) SHA1(b2734f20f703a0dcf8b1fdaebf2b6198b2fb0f51) )
1767 	ROM_LOAD( "f1sb11.bin", 0x400000, 0x200000, CRC(0b848bb5) SHA1(e4c0e434add151112352d6068e5de1a7098e6346) )
1768 	ROM_LOAD( "f1sb12.bin", 0x600000, 0x200000, CRC(edecd5f4) SHA1(9b86802d08e5c8ec1a6dcea75dc8f050d3e96970) )
1769 
1770 	ROM_REGION( 0x200000, REGION_GFX3, 0 ) /* bg tiles, don't dispose since we use GFX_RAW */
1771 	ROM_LOAD( "f1sb31.bin", 0x000000, 0x200000, CRC(1d0d2efd) SHA1(e6446ef9c71be9316c286157f71e0043347c6a5c) )
1772 
1773 	ROM_REGION( 0x080000, REGION_GFX4, 0 ) /* tx tiles, don't dispose since we use GFX_RAW */
1774 	ROM_LOAD( "f1sb32.bin", 0x000000, 0x080000, CRC(1b31fcce) SHA1(354cc6f43cd3bf3ba921ac8c5631ab993bedf563) )
1775 
1776 	ROM_REGION( 0x800000, REGION_USER1, 0 ) /* extra ROMs, unknown */
1777 	ROM_LOAD( "f1sb2b.bin", 0x000000, 0x200000, CRC(18d73b16) SHA1(f06f4d31b15658cc1e1b559ae3b8a90b797546ca) )
1778 	ROM_LOAD( "f1sb3b.bin", 0x200000, 0x200000, CRC(ce728fe0) SHA1(e0fd7b8f4d3dc9e2b15ddf027c61e67e5c1f22b5) )
1779 	ROM_LOAD( "f1sb4b.bin", 0x400000, 0x200000, CRC(077180c5) SHA1(ab16739da709ecdbbb1264beba349ef6ecf3f8b1) )
1780 	ROM_LOAD( "f1sb5b.bin", 0x600000, 0x200000, CRC(efabc47d) SHA1(195afde8a1f45da4fc04c3080a3cf5fdfff7be5e) )
1781 
1782 	ROM_REGION( 0x40000, REGION_CPU2, 0 ) /* z80 program */
1783 	ROM_LOAD( "f1sb21.bin", 0x000000, 0x040000, CRC(e131e1c7) SHA1(33f95a074930c49548069518d8c6dcde7fa25627) )
1784 
1785 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* samples */
1786 	ROM_LOAD( "f1sb23.bin", 0x000000, 0x200000, CRC(bfefa3ab) SHA1(7770cc9b091e258ede7f2780df61a592cc008dd7) )
1787 	ROM_LOAD( "f1sb24.bin", 0x200000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) /* common samples*/
1788 ROM_END
1789 
1790 ROM_START( gratia )
1791 	ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* V70 code */
1792  	ROM_LOAD32_BYTE( "94019.026", 0x000003, 0x80000, CRC(f398cba5) SHA1(11e06abebfdfc8a99b5c56e9f6ed389f645b6c72) )
1793 	ROM_LOAD32_BYTE( "94019.027", 0x000002, 0x80000, CRC(ba3318c5) SHA1(9b100988b998c39b586b51fe9fee874dbf711610) )
1794 	ROM_LOAD32_BYTE( "94019.028", 0x000001, 0x80000, CRC(e0762e89) SHA1(a567c347e7f73f1ef1c753d14ac4f58311380fac) )
1795 	ROM_LOAD32_BYTE( "94019.029", 0x000000, 0x80000, CRC(8059800b) SHA1(7548d01b6ea15e962353b3585db6515e5819e5ce) )
1796 
1797 	ROM_REGION( 0x0c00000, REGION_GFX1, 0 ) /* sprites, don't dispose since we use GFX_RAW */
1798 	ROM_LOAD32_WORD( "94019.01", 0x000000, 0x200000, CRC(92d8ae9b) SHA1(02b36e6e14b28a9830e07fd328772dbb20b76889) )
1799 	ROM_LOAD32_WORD( "94019.02", 0x000002, 0x200000, CRC(f7bd9cc4) SHA1(5658bfb4081439ab06c6ade2531581aa60d1c6be) )
1800 	ROM_LOAD32_WORD( "94019.03", 0x400000, 0x200000, CRC(62a69590) SHA1(d95cc1e1ec85161ee6cd1ae77b405cf8ef81217a) )
1801 	ROM_LOAD32_WORD( "94019.04", 0x400002, 0x200000, CRC(5a76a39b) SHA1(fc7c1ff9a0a3c2639fc52720aefe8b2a9e5d2857) )
1802 	ROM_LOAD32_WORD( "94019.05", 0x800000, 0x200000, CRC(a16994df) SHA1(9170b1fd9252d7a9601c3b2e6b1ba86686730b86) )
1803 	ROM_LOAD32_WORD( "94019.06", 0x800002, 0x200000, CRC(01d52ef1) SHA1(1585c7eb3729bab78467f627b7b671d619451a74) )
1804 
1805 	ROM_REGION( 0x400000, REGION_GFX2, 0 ) /* roz tiles, don't dispose since we use GFX_RAW */
1806 	ROM_LOAD( "94019.08", 0x000000, 0x200000, CRC(abd124e0) SHA1(2da1d818c909e4abbb79ed03f3dbf15d744439ce) )
1807 	ROM_LOAD( "94019.09", 0x200000, 0x200000, CRC(711ab08b) SHA1(185b80b965ac3aba4857b4f83637008c2c1cc6ff) )
1808 
1809 	ROM_REGION( 0x200000, REGION_GFX3, 0 ) /* bg tiles, don't dispose since we use GFX_RAW */
1810 	ROM_LOAD( "94019_2.07", 0x000000, 0x200000, CRC(043f969b) SHA1(ad10339e561c1a65451a2e9a8e79ceda3787674a) )
1811 
1812 	ROM_REGION( 0x080000, REGION_GFX4, 0 ) /* tx tiles, don't dispose since we use GFX_RAW */
1813 	ROM_LOAD( "94019_2.030",0x000000, 0x080000, CRC(f9543fcf) SHA1(8466c7893bc6c43e2a80b8f91a776fd0a345ea6c) )
1814 
1815 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* z80 program */
1816 	ROM_LOAD( "94019.021",0x000000, 0x040000, CRC(6e8dd039) SHA1(f1e69c9b40b14ba0f8377a6d9b6c3933919bc803) )
1817 	ROM_RELOAD(              0x010000, 0x40000 )
1818 
1819 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* samples */
1820 	ROM_LOAD( "92042.01", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) /* common rom?*/
1821 	ROM_LOAD( "94019.10", 0x200000, 0x200000, CRC(a751e316) SHA1(3d658370c71b83582fd132b3da441089df9bfd05) )
1822 ROM_END
1823 
1824 ROM_START( gratiaa )
1825 	ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* V70 code */
1826  	ROM_LOAD32_BYTE( "94019.026", 0x000003, 0x80000, CRC(f398cba5) SHA1(11e06abebfdfc8a99b5c56e9f6ed389f645b6c72) )
1827 	ROM_LOAD32_BYTE( "94019.027", 0x000002, 0x80000, CRC(ba3318c5) SHA1(9b100988b998c39b586b51fe9fee874dbf711610) )
1828 	ROM_LOAD32_BYTE( "94019.028", 0x000001, 0x80000, CRC(e0762e89) SHA1(a567c347e7f73f1ef1c753d14ac4f58311380fac) )
1829 	ROM_LOAD32_BYTE( "94019.029", 0x000000, 0x80000, CRC(8059800b) SHA1(7548d01b6ea15e962353b3585db6515e5819e5ce) )
1830 
1831 	ROM_REGION( 0x0c00000, REGION_GFX1, 0 ) /* sprites, don't dispose since we use GFX_RAW */
1832 	ROM_LOAD32_WORD( "94019.01", 0x000000, 0x200000, CRC(92d8ae9b) SHA1(02b36e6e14b28a9830e07fd328772dbb20b76889) )
1833 	ROM_LOAD32_WORD( "94019.02", 0x000002, 0x200000, CRC(f7bd9cc4) SHA1(5658bfb4081439ab06c6ade2531581aa60d1c6be) )
1834 	ROM_LOAD32_WORD( "94019.03", 0x400000, 0x200000, CRC(62a69590) SHA1(d95cc1e1ec85161ee6cd1ae77b405cf8ef81217a) )
1835 	ROM_LOAD32_WORD( "94019.04", 0x400002, 0x200000, CRC(5a76a39b) SHA1(fc7c1ff9a0a3c2639fc52720aefe8b2a9e5d2857) )
1836 	ROM_LOAD32_WORD( "94019.05", 0x800000, 0x200000, CRC(a16994df) SHA1(9170b1fd9252d7a9601c3b2e6b1ba86686730b86) )
1837 	ROM_LOAD32_WORD( "94019.06", 0x800002, 0x200000, CRC(01d52ef1) SHA1(1585c7eb3729bab78467f627b7b671d619451a74) )
1838 
1839 	ROM_REGION( 0x400000, REGION_GFX2, 0 ) /* roz tiles, don't dispose since we use GFX_RAW */
1840 	ROM_LOAD( "94019.08", 0x000000, 0x200000, CRC(abd124e0) SHA1(2da1d818c909e4abbb79ed03f3dbf15d744439ce) )
1841 	ROM_LOAD( "94019.09", 0x200000, 0x200000, CRC(711ab08b) SHA1(185b80b965ac3aba4857b4f83637008c2c1cc6ff) )
1842 
1843 	ROM_REGION( 0x200000, REGION_GFX3, 0 ) /* bg tiles, don't dispose since we use GFX_RAW */
1844 	ROM_LOAD( "94019.07", 0x000000, 0x200000, BAD_DUMP CRC(acb75824) SHA1(3b43e00a2d240761565042c8feead25a83ef0eb1)  )	/* FIXED BITS (xxxxxxxx11111111)*/
1845 
1846 	ROM_REGION( 0x080000, REGION_GFX4, 0 ) /* tx tiles, don't dispose since we use GFX_RAW */
1847 	ROM_LOAD( "94019.030",0x000000, 0x080000, CRC(026b5379) SHA1(b9237477f1bf8ae83174e8231492fe667e6d6a13) )
1848 
1849 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* z80 program */
1850 	ROM_LOAD( "94019.021",0x000000, 0x040000, CRC(6e8dd039) SHA1(f1e69c9b40b14ba0f8377a6d9b6c3933919bc803) )
1851 	ROM_RELOAD(              0x010000, 0x40000 )
1852 
1853 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* samples */
1854 	ROM_LOAD( "92042.01", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) /* common rom?*/
1855 	ROM_LOAD( "94019.10", 0x200000, 0x200000, CRC(a751e316) SHA1(3d658370c71b83582fd132b3da441089df9bfd05) )
1856 ROM_END
1857 
1858 ROM_START( gametngk )
1859 	ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* V70 code */
1860  	ROM_LOAD32_BYTE( "mr94041.26", 0x000003, 0x80000, CRC(e622e774) SHA1(203c2a3563a337af4cec92a66e0fa410d901b01f) )
1861 	ROM_LOAD32_BYTE( "mr94041.27", 0x000002, 0x80000, CRC(da862b9c) SHA1(17dc6da08d7f5551c8f4bc4d9c416dbfc82d8397) )
1862 	ROM_LOAD32_BYTE( "mr94041.28", 0x000001, 0x80000, CRC(b3738934) SHA1(cd07572e55e83807e76179cfc6b97e0410067911) )
1863 	ROM_LOAD32_BYTE( "mr94041.29", 0x000000, 0x80000, CRC(45154a45) SHA1(4c7c2c6738fdfe54ebe41a0ac6222cbfce5d7757) )
1864 
1865 	ROM_REGION( 0x1000000, REGION_GFX1, 0 ) /* sprites, don't dispose since we use GFX_RAW */
1866 	ROM_LOAD32_WORD( "mr94041.01", 0x0000000, 0x200000, CRC(3f99adf7) SHA1(cbb8d2fc253b0c58e7eb9286c66e6b36daf9d4af) )
1867 	ROM_LOAD32_WORD( "mr94041.02", 0x0000002, 0x200000, CRC(c3c5ae69) SHA1(5ed7f57a7139f87c680c68e44ea4022b917a9381) )
1868 	ROM_LOAD32_WORD( "mr94041.03", 0x0400000, 0x200000, CRC(d858b6de) SHA1(a06cf529c9508c8c8508894e2e004373edd9debf) )
1869 	ROM_LOAD32_WORD( "mr94041.04", 0x0400002, 0x200000, CRC(8c96ca20) SHA1(097cab64ef8e515c59178c36171f87bed4b3d1e5) )
1870 	ROM_LOAD32_WORD( "mr94041.05", 0x0800000, 0x200000, CRC(ac664a0b) SHA1(bd002822a38369599a1b5a7456957de1d9cd976e) )
1871 	ROM_LOAD32_WORD( "mr94041.06", 0x0800002, 0x200000, CRC(70dd0dd4) SHA1(da648c16ad0cb12ac66656522da14392be7772c9) )
1872 	ROM_LOAD32_WORD( "mr94041.07", 0x0c00000, 0x200000, CRC(a6966af5) SHA1(3a65824f3f325af39d8e9932357ce9f8878f0321) )
1873 	ROM_LOAD32_WORD( "mr94041.08", 0x0c00002, 0x200000, CRC(d7d2f73a) SHA1(0eb28f4cdea73aa8fed0b62cbac6cd7d7694c2ee) )
1874 
1875 	ROM_REGION( 0x400000, REGION_GFX2, 0 ) /* roz tiles, don't dispose since we use GFX_RAW */
1876 	ROM_LOAD( "mr94041.11", 0x000000, 0x200000, CRC(00dcdbc3) SHA1(f7e34bc9f714ea81fc9855d90db792dd1e99bae8) )
1877 	ROM_LOAD( "mr94041.12", 0x200000, 0x200000, CRC(0ce48329) SHA1(9c198cef998eb3b9c33123bd8cc02210498f82d9) )
1878 
1879 	ROM_REGION( 0x400000, REGION_GFX3, 0 ) /* bg tiles, don't dispose since we use GFX_RAW */
1880 	ROM_LOAD( "mr94041.09", 0x000000, 0x200000, CRC(a33e6051) SHA1(d6e34b022eb36dcfa8cfe6d6d1254f994b3b3dca) )
1881 	ROM_LOAD( "mr94041.10", 0x200000, 0x200000, CRC(b3497147) SHA1(df7d8ea7ec3e3df5e0c6658f14995df5479181bf) )
1882 
1883 	ROM_REGION( 0x080000, REGION_GFX4, 0 ) /* tx tiles, don't dispose since we use GFX_RAW */
1884 	ROM_LOAD( "mr94041.30", 0x000000, 0x080000, CRC(c0f27b7f) SHA1(874fe80aa4b46520f844ef6efa61f28eabccbc4f) )
1885 
1886 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* z80 program */
1887 	ROM_LOAD( "mr94041.21", 0x000000, 0x040000, CRC(38dcb837) SHA1(29fdde54e52dec4ee39a6f2db8e0d67774320d15) )
1888 	ROM_RELOAD(              0x010000, 0x40000 )
1889 
1890 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* samples */
1891 	ROM_LOAD( "mr94041.13", 0x000000, 0x200000, CRC(fba84caf) SHA1(318270dbf825a8e0f315992c49a2dc34dd1df7c1) )
1892 	ROM_LOAD( "mr94041.14", 0x200000, 0x200000, CRC(2d6308bd) SHA1(600b6ccdbb976301075e0b287124a9fd5fe7fc1b) )
1893 ROM_END
1894 
1895 ROM_START( hayaosi1 )
1896 	ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* V70 code */
1897  	ROM_LOAD32_BYTE( "mb93138a.25", 0x000003, 0x80000, CRC(563c6f2f) SHA1(bc2a61fd2e0adf58256feeef8491b67af6d6eacf) )
1898 	ROM_LOAD32_BYTE( "mb93138a.27", 0x000002, 0x80000, CRC(fe8e283a) SHA1(fc6c06ae296110b1f5794187d5208b17541614cb) )
1899 	ROM_LOAD32_BYTE( "mb93138a.29", 0x000001, 0x80000, CRC(e6fe3d0d) SHA1(9a0caab82b160991b4f2ac993e7e4b4c5d3bb15e) )
1900 	ROM_LOAD32_BYTE( "mb93138a.31", 0x000000, 0x80000, CRC(d944bf8c) SHA1(ce93b5d2ebe886b38dc42b1e554b17dc951a51b4) )
1901 
1902 	ROM_REGION( 0x900000, REGION_GFX1, 0 ) /* sprites, don't dispose since we use GFX_RAW */
1903 	ROM_LOAD32_WORD( "mr93038.04",  0x000000, 0x200000, CRC(ab5edb11) SHA1(b7742aefbce9efc512c3526714b6f20a6c03af60) )
1904 	ROM_LOAD32_WORD( "mr93038.05",  0x000002, 0x200000, CRC(274522f1) SHA1(717435d6bf1b2a2220a2f0a53b070bb81cc2ed2b) )
1905 	ROM_LOAD32_WORD( "mr93038.06",  0x400000, 0x200000, CRC(f9961ebf) SHA1(e91b160cb5a76e3f6044cc71681dadf2fbff7e8b) )
1906 	ROM_LOAD32_WORD( "mr93038.07",  0x400002, 0x200000, CRC(1abef1c5) SHA1(4b40adaebf9d9963493bfb285badbb19a5b181be) )
1907 	ROM_LOAD32_WORD( "mb93138a.15", 0x800000, 0x080000, CRC(a5f64d87) SHA1(11bf017f700faba57a5a2edced7a5d81a581bc50) )
1908 	ROM_LOAD32_WORD( "mb93138a.3",  0x800002, 0x080000, CRC(a2ae2b21) SHA1(65cee4e5e0a9b8dcac578e34210e1af7d7b2e6f7) )
1909 
1910 	ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* roz tiles, don't dispose since we use GFX_RAW */
1911 	ROM_LOAD( "mr93038.03",  0x000000, 0x200000, CRC(6999dec9) SHA1(eb4c6ba200cd08b41509314c659feb3af12117ee) )
1912 
1913 	ROM_REGION( 0x100000, REGION_GFX3, 0 ) /* bg tiles, don't dispose since we use GFX_RAW */
1914 	ROM_LOAD( "mr93038.08",  0x000000, 0x100000, CRC(21282cb0) SHA1(52ea94a6457f7684674783c362052bcc40086dd0) )
1915 
1916 	ROM_REGION( 0x080000, REGION_GFX4, 0 ) /* tx tiles, don't dispose since we use GFX_RAW */
1917 	ROM_LOAD( "mb93138a.32", 0x000000, 0x080000, CRC(f563a144) SHA1(14d86e4992329811857e1faf282cd9ec530a364c) )
1918 
1919 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* z80 program */
1920 	ROM_LOAD( "mb93138a.21", 0x000000, 0x040000, CRC(8e8048b0) SHA1(93285a0570ed829b36f4e8c57d133a7dd14f123d) )
1921 	ROM_RELOAD(              0x010000, 0x40000 )
1922 
1923 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* samples - 8-bit signed PCM */
1924 	ROM_LOAD( "mr92042.01",  0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) /* common samples*/
1925 	ROM_LOAD( "mr93038.01",  0x200000, 0x200000, CRC(b8a38bfc) SHA1(1aa7b69beebceb6f09a1ee006de054cb84002e94) )
1926 ROM_END
1927 
1928 ROM_START( kirarast )
1929 	ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* V70 code */
1930  	ROM_LOAD32_BYTE( "mr95025.26", 0x000003, 0x80000, CRC(eb7faf5f) SHA1(5b79ff3043db5ef2622ae1665145462d949c9bb8) )
1931 	ROM_LOAD32_BYTE( "mr95025.27", 0x000002, 0x80000, CRC(80644d05) SHA1(6da8bf8aeb1477112f9022c0c5f472cbcd27df8e) )
1932 	ROM_LOAD32_BYTE( "mr95025.28", 0x000001, 0x80000, CRC(6df8c384) SHA1(3ad01d3d51cfc1f48029c16ee1cc74fc59d7603c) )
1933 	ROM_LOAD32_BYTE( "mr95025.29", 0x000000, 0x80000, CRC(3b6e681b) SHA1(148fa10631db53a4ad1dcdfb60b4f0654e077396) )
1934 
1935 	ROM_REGION( 0x1000000, REGION_GFX1, 0 ) /* sprites, don't dispose since we use GFX_RAW */
1936 	ROM_LOAD32_WORD( "mr95025.01",  0x000000, 0x200000, CRC(02279069) SHA1(fb3ce00701271d0163f72e4f2e56faa9f16d8fd0) )
1937 	ROM_LOAD32_WORD( "mr95025.02",  0x000002, 0x200000, CRC(885161d4) SHA1(1bc82de0b2759758d437db3ef9f0f7805f759b59) )
1938 	ROM_LOAD32_WORD( "mr95025.03",  0x400000, 0x200000, CRC(1ae06df9) SHA1(e1493a386fd8c54c88afab43d13d73869ae467ee) )
1939 	ROM_LOAD32_WORD( "mr95025.04",  0x400002, 0x200000, CRC(91ab7006) SHA1(0b99c352a696e21b2f31207cbf9b4a64edf543ce) )
1940 	ROM_LOAD32_WORD( "mr95025.05",  0x800000, 0x200000, CRC(e61af029) SHA1(685315e833a168383c4c5cdaf72de172f14995b6) )
1941 	ROM_LOAD32_WORD( "mr95025.06",  0x800002, 0x200000, CRC(63f64ffc) SHA1(a2a109be24b5f1ec2e41e423d4194394ea8c3c8b) )
1942 	ROM_LOAD32_WORD( "mr95025.07",  0xc00000, 0x200000, CRC(0263a010) SHA1(b9c85647b406c89f0e839eac93eaf5d2e6963f7d) )
1943 	ROM_LOAD32_WORD( "mr95025.08",  0xc00002, 0x200000, CRC(8efc00d6) SHA1(f750e0e21310ceceeae3ad80eb2fe2920f5a0076) )
1944 
1945 	ROM_REGION( 0x400000, REGION_GFX2, 0 ) /* roz tiles, don't dispose since we use GFX_RAW */
1946 	ROM_LOAD( "mr95025.10",  0x000000, 0x200000, CRC(ba7ad413) SHA1(b1f1c218dea3217f21d5e2f44db3786055ed879a) )
1947 	ROM_LOAD( "mr95025.11",  0x200000, 0x200000, CRC(11557299) SHA1(6efa56f897ab026f965376a0d4032f7a0d20cafe) )
1948 
1949 	ROM_REGION( 0x200000, REGION_GFX3, 0 ) /* bg tiles, don't dispose since we use GFX_RAW */
1950 	ROM_LOAD( "mr95025.09",  0x000000, 0x200000, CRC(ca6cbd17) SHA1(9d16ef187b062590315066218e89bdf33cfd9865) )
1951 
1952 	ROM_REGION( 0x080000, REGION_GFX4, 0 ) /* tx tiles, don't dispose since we use GFX_RAW */
1953 	ROM_LOAD( "mr95025.30",  0x000000, 0x080000, CRC(aee6e0c2) SHA1(dee985f7a9773ba7a4d31a3833a7775d778bbe5a) )
1954 
1955 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* z80 program */
1956 	ROM_LOAD( "mr95025.21",  0x000000, 0x040000, CRC(a6c70c7f) SHA1(fe2108f3e8d46ed53d8c5c98e8d0fdb19b77075d) )
1957 	ROM_RELOAD(              0x010000, 0x40000 )
1958 
1959 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* samples - 8-bit signed PCM */
1960 	ROM_LOAD( "mr95025.12",  0x000000, 0x200000, CRC(1dd4f766) SHA1(455befd3a216f2197cd2e7e4899d4f1af7d20bf7) )
1961 	ROM_LOAD( "mr95025.13",  0x200000, 0x200000, CRC(0adfe5b8) SHA1(02309e5789b58896e5f68603502c76d4a917bd91) )
1962 ROM_END
1963 
1964 ROM_START( akiss )
1965 	ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* V70 code */
1966  	ROM_LOAD32_BYTE( "93166.26", 0x000003, 0x80000, CRC(5bdd01ee) SHA1(21b8e07bb7ef6b437a43719b02deeba970330900) )
1967 	ROM_LOAD32_BYTE( "93166.27", 0x000002, 0x80000, CRC(bb11b2c9) SHA1(86ba06d28bc8f560ac3d05515d061e05c90d1628) )
1968 	ROM_LOAD32_BYTE( "93166.28", 0x000001, 0x80000, CRC(20565478) SHA1(d532ab55be287f45d8d81317bb844c675eb1292c) )
1969 	ROM_LOAD32_BYTE( "93166.29", 0x000000, 0x80000, CRC(ff454f0d) SHA1(db81aaaf4160eb62badbe08fc01543463470ac97) )
1970 
1971 	ROM_REGION( 0x1000000, REGION_GFX1, 0 ) /* sprites, don't dispose since we use GFX_RAW */
1972 	ROM_LOAD32_WORD( "95008-01.13", 0x000000, 0x200000, CRC(1be66420) SHA1(9fc85e6108f230418e012ad05586010235139039))
1973 	ROM_LOAD32_WORD( "95008-02.1",  0x000002, 0x200000, CRC(1cc4808e) SHA1(70a19d66b4f187320c67760bc453b6afb7d66f9a) )
1974 	ROM_LOAD32_WORD( "95008-03.14", 0x400000, 0x200000, CRC(4045f0dc) SHA1(5ba9786618ecad9410dbdf3664f9dda848a754f7) )
1975 	ROM_LOAD32_WORD( "95008-04.2",  0x400002, 0x200000, CRC(ef3c139d) SHA1(3de374e77443dd4e967dbb5da820fe1c8c78aa1b) )
1976 	ROM_LOAD32_WORD( "95008-05.15", 0x800000, 0x200000, CRC(43ea4a84) SHA1(d9d9898edcf432998ed6b9a1622812def45cf369) )
1977 	ROM_LOAD32_WORD( "95008-06.3",  0x800002, 0x200000, CRC(24f23d4e) SHA1(8a7b6f28f25227391df73edb096695c5fe8df7dc))
1978 	ROM_LOAD32_WORD( "95008-07.16", 0xc00000, 0x200000, CRC(bf47747e) SHA1(b97121953f41039182e25ea023802df4524cf9bd) )
1979 	ROM_LOAD32_WORD( "95008-08.4",  0xc00002, 0x200000, CRC(34829a09) SHA1(7229c56fee53a9d4d29cf0c9dec471b6cc4dc30b) )
1980 
1981 	ROM_REGION( 0x400000, REGION_GFX2, 0 ) /* roz tiles, don't dispose since we use GFX_RAW */
1982 	ROM_LOAD( "95008-10.11",  0x000000, 0x200000, CRC(52da2e9e) SHA1(d7a29bdd1c6801aa8d36bc098e75091c63ba0766) )
1983 
1984 	ROM_REGION( 0x200000, REGION_GFX3, 0 ) /* bg tiles, don't dispose since we use GFX_RAW */
1985 	ROM_LOAD( "95008-09.10",  0x000000, 0x200000,CRC(7236f6a0) SHA1(98dbb55f08d669ef3bf69394bb9739d0e6137fcb) )
1986 
1987 	ROM_REGION( 0x080000, REGION_GFX4, 0 ) /* tx tiles, don't dispose since we use GFX_RAW */
1988 	ROM_LOAD( "93166.30",  0x000000, 0x080000, CRC(1807c1ea) SHA1(94696b8319c4982cb5d33423f56e2348f210cdb5) )
1989 
1990 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* z80 program */
1991 	ROM_LOAD( "93166.21",  0x000000, 0x040000, CRC(01a03687) SHA1(2340c4ed19f434e8c23709edfc93259313aefaf9))
1992 	ROM_RELOAD(              0x010000, 0x40000 )
1993 
1994 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* samples - 8-bit signed PCM */
1995 	ROM_LOAD( "95008-11.22",  0x000000, 0x200000, CRC(23b9af76) SHA1(98b4087c142500dc759bda94d71c77634452a7ad))
1996 	ROM_LOAD( "95008-12.23",  0x200000, 0x200000, CRC(780a2f45) SHA1(770cbf04e34ae7d72e6eb2304bcdfaff483cd8c1))
1997 ROM_END
1998 
1999 ROM_START( p47aces )
2000 	ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* V70 code */
2001  	ROM_LOAD32_BYTE( "p47-26.bin", 0x000003, 0x80000, CRC(e017b819) SHA1(942fb48e8bb3a263534a0351a1a9979d786bc475) )
2002 	ROM_LOAD32_BYTE( "p47-27.bin", 0x000002, 0x80000, CRC(bd1b81e0) SHA1(b15f157fe3a30295f999a4c285da2d6f22d7fba6) )
2003  	ROM_LOAD32_BYTE( "p47-28.bin", 0x000001, 0x80000, CRC(4742a5f7) SHA1(cd297aa150082c545647c9a755cf2cdbdc98c988) )
2004 	ROM_LOAD32_BYTE( "p47-29.bin", 0x000000, 0x80000, CRC(86e17d8b) SHA1(73004f243c6dfb86ce4cc61475dc7caaf452750e) )
2005 
2006 	ROM_REGION( 0xe00000, REGION_GFX1, 0 ) /* sprites, don't dispose since we use GFX_RAW */
2007 	ROM_LOAD32_WORD( "p47-01.bin",  0x000002, 0x200000, CRC(28732d3c) SHA1(15b2687bcad31793fc7d6a9dc3eccb7ad9b5f659) )
2008 	ROM_LOAD32_WORD( "p47-13.bin",  0x000000, 0x200000, CRC(a6ccf999) SHA1(5d32fb6f6987ede6c125bec9581da4695ad64dff) )
2009 	ROM_LOAD32_WORD( "p47-02.bin",  0x400002, 0x200000, CRC(128db576) SHA1(f6561f54f6b95842a5f14d29682449bf0d837a85) )
2010 	ROM_LOAD32_WORD( "p47-14.bin",  0x400000, 0x200000, CRC(efc52b38) SHA1(589caaaba4e3ddaf41e05f0f12b8d4bc6d63fa5c) )
2011 	ROM_LOAD32_WORD( "p47-03.bin",  0x800002, 0x200000, CRC(324cd504) SHA1(79b3ef3ae0aa14d903113ccf5b57d459c329cf12) )
2012 	ROM_LOAD32_WORD( "p47-15.bin",  0x800000, 0x200000, CRC(ca164b17) SHA1(ea1cb0894632442f40d321b5843125f874768aae) )
2013 	ROM_LOAD32_WORD( "p47-04.bin",  0xc00002, 0x100000, CRC(4b3372be) SHA1(cdc7d7615b6b5d45ca071b2967980dc6c6294ac0) )
2014 	ROM_LOAD32_WORD( "p47-16.bin",  0xc00000, 0x100000, CRC(c23c5467) SHA1(5ff51ecb86ccbae2af160599890e13a7cc70072d) )
2015 
2016 	ROM_REGION( 0x400000, REGION_GFX2, 0 ) /* roz tiles, don't dispose since we use GFX_RAW */
2017 	ROM_LOAD( "p47-11.bin",  0x000000, 0x200000, CRC(c1fe16b3) SHA1(8b9d2483ba06ab8072676e73d949c696535b3d26) )
2018 	ROM_LOAD( "p47-12.bin",  0x200000, 0x200000, CRC(75871325) SHA1(9191263a52ec6ac325cf6130b35be7cdd1ec2f50) )
2019 
2020 	ROM_REGION( 0x400000, REGION_GFX3, 0 ) /* bg tiles, don't dispose since we use GFX_RAW */
2021 	ROM_LOAD( "p47-10.bin",  0x000000, 0x200000, CRC(a44e9e06) SHA1(ff51796e160d996e931b92049e6214982f270caa) )
2022 	ROM_LOAD( "p47-09.bin",  0x200000, 0x200000, CRC(226014a6) SHA1(090bdc1f6d2b9d33b431dbb49a457a4bb36cd3ad) )
2023 
2024 	ROM_REGION( 0x080000, REGION_GFX4, 0 ) /* tx tiles, don't dispose since we use GFX_RAW */
2025 	ROM_LOAD( "p47-30.bin",  0x000000, 0x080000, CRC(7ba90fad) SHA1(c0a3d4458816f00b8f5eb4b6d4531d1abeaccbe5) )
2026 
2027 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* z80 program */
2028 	ROM_LOAD( "p47-21.bin",  0x000000, 0x040000, CRC(f2d43927) SHA1(69ac20f339a515d58cafbcd6f7d7982ca5cda681) )
2029 	ROM_RELOAD(              0x010000, 0x40000 )
2030 
2031 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* samples - 8-bit signed PCM */
2032 	ROM_LOAD( "p47-22.bin",  0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) )
2033 	ROM_LOAD( "p47-23.bin",  0x200000, 0x200000, CRC(547fa4d4) SHA1(8a5ecb3300646762f63d37a27e643e1f6ce5e775) )
2034 ROM_END
2035 
2036 ROM_START( tetrisp )
2037 	ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* V70 code */
2038  	ROM_LOAD32_BYTE( "mr95024.26", 0x000003, 0x80000, CRC(d318a9ba) SHA1(cae86d86518fdfeb736e7b2040277c76cc3b4017) )
2039 	ROM_LOAD32_BYTE( "mr95024.27", 0x000002, 0x80000, CRC(2d69b6d3) SHA1(f0a513f449aa25808672fb27e3691ccabfba48a1) )
2040 	ROM_LOAD32_BYTE( "mr95024.28", 0x000001, 0x80000, CRC(87522e16) SHA1(4f0d8abec046884d89c559e3a4a5ac9e0e47a0dc) )
2041 	ROM_LOAD32_BYTE( "mr95024.29", 0x000000, 0x80000, CRC(43a61941) SHA1(a097c88c45d8486eb6ffdd13904b6eb2a3fa45b9) )
2042 
2043 	ROM_REGION( 0x400000, REGION_GFX1, 0 ) /* sprites, don't dispose since we use GFX_RAW */
2044 	ROM_LOAD32_WORD( "mr95024.01", 0x000002, 0x200000, CRC(cb0e92b9) SHA1(179cc9e2d819d7f6238e924184e8a383d172aa72) )
2045 	ROM_LOAD32_WORD( "mr95024.13", 0x000000, 0x200000, CRC(4a825990) SHA1(f99ba9f88f5582259ba0e50480451d4e9d1d03b7) )
2046 
2047 	ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* roz tiles, don't dispose since we use GFX_RAW */
2048 	ROM_LOAD( "mr95024.11", 0x000000, 0x200000, CRC(c0d5246f) SHA1(413285f6b40001281c4fcec1ce73400c3ae610ed) )
2049 
2050 	ROM_REGION( 0x200000, REGION_GFX3, 0 ) /* bg tiles, don't dispose since we use GFX_RAW */
2051 	ROM_LOAD( "mr95024.10", 0x000000, 0x200000, CRC(a03e4a8d) SHA1(d52c78d5e9d874dce514ffb035f2424409d8fb7a) )
2052 
2053 	ROM_REGION( 0x080000, REGION_GFX4, 0 ) /* tx tiles, don't dispose since we use GFX_RAW */
2054 	ROM_LOAD( "mr95024.30", 0x000000, 0x080000, CRC(cea7002d) SHA1(5462edaeb9339790b95ed15a4bfaab8fae655b12) )
2055 
2056 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* z80 program */
2057 	ROM_LOAD( "mr95024.21", 0x000000, 0x040000, CRC(5c565e3b) SHA1(d349a8ca50d03c06d8978e6d3632b624f019dee4) )
2058 	ROM_RELOAD(              0x010000, 0x40000 )
2059 
2060 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* samples */
2061 	ROM_LOAD( "mr95024.22", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) /* common samples*/
2062 	ROM_LOAD( "mr95024.23", 0x200000, 0x200000, CRC(57502a17) SHA1(ce880188854dc17d9ebbfa3c373469cf5e6858c2) )
2063 ROM_END
2064 
2065 ROM_START( tp2m32 )
2066 	ROM_REGION( 0x200000, REGION_CPU1, 0 ) /* V70 code */
2067 	ROM_LOAD32_BYTE( "tp2m3226.26", 0x000003, 0x80000, CRC(152f0ccf) SHA1(1e318e125a54216ebf3f85740db1dd85aacac819) )
2068 	ROM_LOAD32_BYTE( "tp2m3227.27", 0x000002, 0x80000, CRC(d89468d0) SHA1(023fbc13b0f6332217904c89225b330aa5742f20) )
2069 	ROM_LOAD32_BYTE( "tp2m3228.28", 0x000001, 0x80000, CRC(041aac23) SHA1(3f7863ffa897978493e98445fe020dccbe521752) )
2070 	ROM_LOAD32_BYTE( "tp2m3229.29", 0x000000, 0x80000, CRC(4e83b2ca) SHA1(2766793f050a6952f4f53a763686f95bd7544f3f) )
2071 
2072 	ROM_REGION( 0x800000, REGION_GFX1, 0 ) /* sprites, don't dispose since we use GFX_RAW */
2073 	ROM_LOAD32_WORD( "96019-01.9", 0x000000, 0x400000, CRC(06f7dc64) SHA1(722c51b707b9854c0293afdff18b27ec7cae6719) )
2074 	ROM_LOAD32_WORD( "96019-02.8", 0x000002, 0x400000, CRC(3e613bed) SHA1(038b5e43fa3d69654107c8093126eeb2e8fa4ddc) )
2075 
2076 	ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* roz tiles, don't dispose since we use GFX_RAW */
2077 	ROM_LOAD( "tp2m3204.11", 0x000000, 0x200000, CRC(b5a03129) SHA1(a50d8b70615c49216f647534d1658c1a6d58a783) )
2078 
2079 	ROM_REGION( 0x400000, REGION_GFX3, 0 ) /* bg tiles, don't dispose since we use GFX_RAW */
2080 	ROM_LOAD( "tp2m3203.10", 0x000000, 0x400000, CRC(94af8057) SHA1(e3bc6e02fe4c503ae51284770a76abbeff989147) )
2081 
2082 	ROM_REGION( 0x080000, REGION_GFX4, 0 ) /* tx tiles, don't dispose since we use GFX_RAW */
2083 	ROM_LOAD( "tp2m3230.30", 0x000000, 0x080000, CRC(6845e476) SHA1(61c33714db2e2b5ccdcef0e0d3efdc391fe6aba2) )
2084 
2085 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* z80 program */
2086 	ROM_LOAD( "tp2m3221.21", 0x000000, 0x040000, CRC(2bcc4176) SHA1(74740fa13ab81b9819b4cfbe9d34a0749ba23b8f) )
2087 	ROM_RELOAD(              0x010000, 0x40000 )
2088 
2089 	ROM_REGION( 0x400000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* samples */
2090 	ROM_LOAD( "tp2m3205.22", 0x000000, 0x200000, CRC(74aa5c31) SHA1(7e3f86198fb678244fab76bee9c72bbdfc818118) )
2091 ROM_END
2092 
2093 /********** DECRYPT **********/
2094 
2095 /* 4 known types */
2096 
2097 /* SS91022-10: desertwr, gratiaa, tp2m32, gametngk */
2098 
2099 /* SS92046_01: bbbxing, f1superb, tetrisp, hayaosi1 */
2100 
2101 /* SS92047-01: gratia, kirarast */
2102 
2103 /* SS92048-01: p47aces, 47pie2, 47pie2o */
2104 
2105 static void rearrange_sprites(void)
2106 {
2107 	/* sprites are not encrypted, but we need to move the data around to handle them as 256x256 tiles */
2108 	int i;
2109 	unsigned char *source_data;
2110 	int source_size;
2111 
2112 	unsigned char *result_data;
2113 
2114 	source_data = memory_region       ( REGION_GFX1 );
2115 	source_size = memory_region_length( REGION_GFX1 );
2116 
2117 	result_data = malloc(source_size);
2118 	if (!result_data) return;
2119 
2120 	for(i=0; i<source_size; i++)
2121 	{
2122 		int j = (i & ~0x07f8) | ((i & 0x00f8) << 3) | ((i & 0x0700) >> 5);
2123 
2124 		result_data[i] = source_data[j];
2125 	}
2126 
2127 	memcpy (source_data, result_data, source_size);
2128 	free (result_data);
2129 }
2130 
2131 
decrypt_ms32_tx(int addr_xor,int data_xor)2132 static void decrypt_ms32_tx(int addr_xor,int data_xor)
2133 {
2134 	int i;
2135 	unsigned char *source_data;
2136 	int source_size;
2137 
2138 	unsigned char *result_data;
2139 
2140 	source_data = memory_region       ( REGION_GFX4 );
2141 	source_size = memory_region_length( REGION_GFX4 );
2142 
2143 	result_data = malloc(source_size);
2144 	if (!result_data) return;
2145 
2146 	addr_xor ^= 0x1005d;
2147 
2148 	for(i=0; i<source_size; i++)
2149 	{
2150 		int j;
2151 
2152 		/* two groups of cascading XORs for the address */
2153 		j = 0;
2154 		i ^= addr_xor;
2155 
2156 		if (BIT(i,18)) j ^= 0x40000;	/* 18*/
2157 		if (BIT(i,17)) j ^= 0x60000;	/* 17*/
2158 		if (BIT(i, 7)) j ^= 0x70000;	/* 16*/
2159 		if (BIT(i, 3)) j ^= 0x78000;	/* 15*/
2160 		if (BIT(i,14)) j ^= 0x7c000;	/* 14*/
2161 		if (BIT(i,13)) j ^= 0x7e000;	/* 13*/
2162 		if (BIT(i, 0)) j ^= 0x7f000;	/* 12*/
2163 		if (BIT(i,11)) j ^= 0x7f800;	/* 11*/
2164 		if (BIT(i,10)) j ^= 0x7fc00;	/* 10*/
2165 
2166 		if (BIT(i, 9)) j ^= 0x00200;	/*  9*/
2167 		if (BIT(i, 8)) j ^= 0x00300;	/*  8*/
2168 		if (BIT(i,16)) j ^= 0x00380;	/*  7*/
2169 		if (BIT(i, 6)) j ^= 0x003c0;	/*  6*/
2170 		if (BIT(i,12)) j ^= 0x003e0;	/*  5*/
2171 		if (BIT(i, 4)) j ^= 0x003f0;	/*  4*/
2172 		if (BIT(i,15)) j ^= 0x003f8;	/*  3*/
2173 		if (BIT(i, 2)) j ^= 0x003fc;	/*  2*/
2174 		if (BIT(i, 1)) j ^= 0x003fe;	/*  1*/
2175 		if (BIT(i, 5)) j ^= 0x003ff;	/*  0*/
2176 
2177 		i ^= addr_xor;
2178 
2179 		/* simple XOR for the data */
2180 		result_data[i] = source_data[j] ^ (i & 0xff) ^ data_xor;
2181 	}
2182 
2183 	memcpy (source_data, result_data, source_size);
2184 	free (result_data);
2185 }
2186 
decrypt_ms32_bg(int addr_xor,int data_xor)2187 static void decrypt_ms32_bg(int addr_xor,int data_xor)
2188 {
2189 	int i;
2190 	unsigned char *source_data;
2191 	int source_size;
2192 
2193 	unsigned char *result_data;
2194 
2195 	source_data = memory_region       ( REGION_GFX3 );
2196 	source_size = memory_region_length( REGION_GFX3 );
2197 
2198 	result_data = malloc(source_size);
2199 	if (!result_data) return;
2200 
2201 	addr_xor ^= 0xc1c5b;
2202 
2203 	for(i=0; i<source_size; i++)
2204 	{
2205 		int j;
2206 
2207 		/* two groups of cascading XORs for the address */
2208 		j = (i & ~0xfffff);	/* top bits are not affected */
2209 		i ^= addr_xor;
2210 
2211 		if (BIT(i,19)) j ^= 0x80000;	/* 19*/
2212 		if (BIT(i, 8)) j ^= 0xc0000;	/* 18*/
2213 		if (BIT(i,17)) j ^= 0xe0000;	/* 17*/
2214 		if (BIT(i, 2)) j ^= 0xf0000;	/* 16*/
2215 		if (BIT(i,15)) j ^= 0xf8000;	/* 15*/
2216 		if (BIT(i,14)) j ^= 0xfc000;	/* 14*/
2217 		if (BIT(i,13)) j ^= 0xfe000;	/* 13*/
2218 		if (BIT(i,12)) j ^= 0xff000;	/* 12*/
2219 		if (BIT(i, 1)) j ^= 0xff800;	/* 11*/
2220 		if (BIT(i,10)) j ^= 0xffc00;	/* 10*/
2221 
2222 		if (BIT(i, 9)) j ^= 0x00200;	/*  9*/
2223 		if (BIT(i, 3)) j ^= 0x00300;	/*  8*/
2224 		if (BIT(i, 7)) j ^= 0x00380;	/*  7*/
2225 		if (BIT(i, 6)) j ^= 0x003c0;	/*  6*/
2226 		if (BIT(i, 5)) j ^= 0x003e0;	/*  5*/
2227 		if (BIT(i, 4)) j ^= 0x003f0;	/*  4*/
2228 		if (BIT(i,18)) j ^= 0x003f8;	/*  3*/
2229 		if (BIT(i,16)) j ^= 0x003fc;	/*  2*/
2230 		if (BIT(i,11)) j ^= 0x003fe;	/*  1*/
2231 		if (BIT(i, 0)) j ^= 0x003ff;	/*  0*/
2232 
2233 		i ^= addr_xor;
2234 
2235 		/* simple XOR for the data */
2236 		result_data[i] = source_data[j] ^ (i & 0xff) ^ data_xor;
2237 	}
2238 
2239 	memcpy (source_data, result_data, source_size);
2240 	free (result_data);
2241 }
2242 
2243 
2244 
2245 /* SS91022-10: desertwr, gratiaa, tp2m32, gametngk */
DRIVER_INIT(ss91022_10)2246 static DRIVER_INIT (ss91022_10)
2247 {
2248 	rearrange_sprites();
2249 	decrypt_ms32_tx(0x00000,0x35);
2250 	decrypt_ms32_bg(0x00000,0xa3);
2251 }
2252 
2253 /* SS92046_01: bbbxing, f1superb, tetrisp, hayaosi1 */
DRIVER_INIT(ss92046_01)2254 static DRIVER_INIT (ss92046_01)
2255 {
2256 	rearrange_sprites();
2257 	decrypt_ms32_tx(0x00020,0x7e);
2258 	decrypt_ms32_bg(0x00001,0x9b);
2259 }
2260 
2261 /* SS92047-01: gratia, kirarast */
DRIVER_INIT(ss92047_01)2262 static DRIVER_INIT (ss92047_01)
2263 {
2264 	rearrange_sprites();
2265 	decrypt_ms32_tx(0x24000,0x18);
2266 	decrypt_ms32_bg(0x24000,0x55);
2267 }
2268 
2269 /* SS92048-01: p47aces, 47pie2, 47pie2o */
DRIVER_INIT(ss92048_01)2270 static DRIVER_INIT (ss92048_01)
2271 {
2272 	rearrange_sprites();
2273 	decrypt_ms32_tx(0x20400,0xd6);
2274 	decrypt_ms32_bg(0x20400,0xd4);
2275 }
2276 
DRIVER_INIT(kirarast)2277 static DRIVER_INIT (kirarast)
2278 {
2279 /*	{ 0xfcc00004, 0xfcc00007, ms32_mahjong_read_inputs1 }*/
2280 	install_mem_read32_handler(0, 0xfcc00004, 0xfcc00007, ms32_mahjong_read_inputs1 );
2281 
2282 	init_ss92047_01();
2283 }
2284 
2285 static DRIVER_INIT (47pie2)
2286 {
2287 /*	{ 0xfcc00004, 0xfcc00007, ms32_mahjong_read_inputs1 }*/
2288 	install_mem_read32_handler(0, 0xfcc00004, 0xfcc00007, ms32_mahjong_read_inputs1 );
2289 
2290 	init_ss92048_01();
2291 }
2292 
DRIVER_INIT(tp2m32)2293 static DRIVER_INIT (tp2m32)
2294 {
2295 	data32_t *pROM = (data32_t *)memory_region(REGION_CPU1);
2296 	/* fix SBR register */
2297 	pROM[0x1b848/4] &= 0x0000ffff;
2298 
2299 	init_ss91022_10();
2300 }
2301 
DRIVER_INIT(f1superb)2302 static DRIVER_INIT (f1superb)
2303 {
2304 	data32_t *pROM = (data32_t *)memory_region(REGION_CPU1);
2305 	pROM[0x19d04/4]=0x167a021a; /* bne->br  : sprite Y offset table is always copied to RAM*/
2306 	init_ss92046_01();
2307 }
2308 
2309 /********** GAME DRIVERS **********/
2310 
2311 GAMEX( 1994, hayaosi1, 0,        ms32, hayaosi1, ss92046_01, ROT0,   "Jaleco", "Hayaoshi Quiz Ouza Ketteisen", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2312 GAMEX( 1994, bbbxing,  0,        ms32, bbbxing,  ss92046_01, ROT0,   "Jaleco", "Best Bout Boxing", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2313 GAMEX( 1994, 47pie2,   0,        ms32, kirarast, 47pie2,     ROT0,   "Jaleco", "Idol Janshi Su-Chi-Pie 2 (v1.1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2314 GAMEX( 1994, 47pie2o,  47pie2,   ms32, kirarast, 47pie2,     ROT0,   "Jaleco", "Idol Janshi Su-Chi-Pie 2 (v1.0)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2315 GAMEX( 1995, desertwr, 0,        ms32, desertwr, ss91022_10, ROT270, "Jaleco", "Desert War - Wangan Sensou", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND  )
2316 GAMEX( 1995, gametngk, 0,        ms32, gametngk, ss91022_10, ROT270, "Jaleco", "The Game Paradise - Master of Shooting! - Game Tengoku - The Game Paradise", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2317 GAMEX( 1995, tetrisp,  0,        ms32, tetrisp,  ss92046_01, ROT0,   "Jaleco / BPS", "Tetris Plus", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2318 GAMEX( 1995, p47aces,  0,        ms32, p47aces,  ss92048_01, ROT0,   "Jaleco", "P-47 Aces", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2319 GAMEX( 1995, akiss,    0,        ms32, kirarast, kirarast,   ROT0,   "Jaleco", "Mahjong Angel Kiss", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2320 GAMEX( 1996, gratia,   0,        ms32, gratia,   ss92047_01, ROT0,   "Jaleco", "Gratia - Second Earth (92047-01 version)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2321 GAMEX( 1996, gratiaa,  gratia,   ms32, gratia,   ss91022_10, ROT0,   "Jaleco", "Gratia - Second Earth (91022-10 version)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2322 GAMEX( 1996, kirarast, 0,        ms32, kirarast, kirarast,   ROT0,   "Jaleco", "Ryuusei Janshi Kirara Star", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2323 GAMEX( 1997, tp2m32,   tetrisp2, ms32, tp2m32,   tp2m32,     ROT0,   "Jaleco", "Tetris Plus 2 (MegaSystem 32 Version)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2324 
2325 /* these boot and show something */
2326 GAMEX( 1994, f1superb, 0,        ms32, f1superb, f1superb, ROT0,   "Jaleco", "F1 Super Battle", GAME_NOT_WORKING | GAME_NO_SOUND )
2327