1 /***************************************************************************
2 
3 Gals Panic       1990 Kaneko
4 Fantasia         1994 Comad
5 New Fantasia     1995 Comad
6 Fantasy '95      1995 Hi-max Technology Inc. (Running on a Comad PCB)
7 Miss World '96   1996 Comad
8 Fantasia II      1997 Comad
9 Gals Hustler     1997 Ace International
10 
11 driver by Nicola Salmoria
12 
13 The Comad games run on hardware similar to Gals Panic, with a different
14 sprite system. They are not ROM swaps because the addresses of work RAM
15 and of the OKI chip change from one to the other, however everything else
16 is pretty much identical.
17 
18 
19 TODO:
20 - There is a vector for IRQ4. The function does nothing in galpanic but is
21   more complicated in the Comad ones. However I'm not triggering it, and
22   they seems to work anyway...
23 - Four unknown ROMs in fantasia. The game seems to work fine without them.
24 - There was a ROM in the newfant set, obj2_14.rom, which was identical to
25   Terminator 2's t2.107. I can only assume this was a mistake of the dumper.
26 - lots of unknown reads and writes, also in galpanic but particularly in
27   the Comad ones.
28 - fantasia and newfant have a service mode but they doesn't work well (text
29   is missing or replaced by garbage). This might be just how the games are.
30 - Is there a background enable register? Or a background clear. fantasia and
31   newfant certainly look ugly as they are.
32 
33 Notes about Gals Panic:
34 -----------------------
35 The current ROM set is strange because two ROMs overlap two others replacing
36 the program.
37 
38 It's definitely a Kaneko boardset, but it could very well be they converted
39 some other game to run Gals Panic, because there's some ROMs piggybacked
40 on top of each other and some ROMs on a daughterboard plugged into smaller
41 sized ROM sockets. It's not a pirate version. The piggybacked ROMs even have
42 Kaneko stickers. The silkscreen on the board says PAMERA-4.
43 
44 There is at least another version of the Gals Panic board. It's single board,
45 so no daughterboard. There are only 4 IC's socketed, the rest is soldered to
46 the board, and no piggybacked ROMs. Board number is MDK 321 V-0    EXPRO-02
47 
48 
49 Stephh's additional notes :
50 
51   - The games might not work correctly if sound is disabled.
52   - There seems to exist 3 versions of 'galpanic' (Japan, US and World),
53     and we seem to have a World version according to the coinage.
54     Version is stored at 0x03ffff.b :
55       * 01 : Japan
56       * 02 : US
57       * 03 : World
58     In the version we have, you can only have one type of coinage
59     (there is no Dip Switch to change sort of "coin mode").
60   - In Comad games, here is a possible explanation of why the "Tilt" button
61     may hang the game and/or crash/exit MAME : if you look carefully at the
62     code, you'll notice that you have a "rts" instruction WITHOUT restoring
63     the registers saved by the "movem.l D0-D7/A0-A6, -(A7)" instruction.
64     Then, a "rte" instruction is performed.
65   - The "Demo Sounds" Dip Switch is told not to work and not to fit the
66     manual, but it appears that 00 seems to be read from in the "trap $d"
67     interruption. Is it because the addresses (0x53e830-0x53e84f) are also
68     used for 'galpanic_bgvideoram' ?
69     In the Comad games, the interruption is the same, but the addresses
70     which are checked are in full RAM. So the Dip Switch could be checked.
71 
72   - I've added a "fake" 'galpanib' romset which is in fact the same as
73     'galpanic', but with the PRG ROMS which aren't overwritten.
74     Here are a few notes about what I found :
75       * This version is also a World version (0x03ffff.b = 03).
76       * In this version, there is a "Coin Mode" Dip Switch, but no
77         "Character Test" Dip Switch.
78       * Area 0xe00000-0xe00014 is a "calculator" area. I've tried to
79         simulate it (see 'galpanib_calc*' handlers) by comparing the code
80         with the other set. I don't know if there are some other unmapped
81         reads, but the game seems to run fine with what I've done.
82       * When you press the "Tilt" button, the game enters in an endless
83         loop, but this isn't a bug ! Check code begining at 0x000e02 and
84         ending at 0x000976 for more infos.
85           -Expects watchdog to reset it- pjp
86       * Sound hasn't been tested.
87       * The Comad games are definitively based on this version, the main
88         differences being that read/writes to 0xe00000 have been replaced.
89 
90  - On Gals Hustler there is an extra test mode if you hold down player 2
91    button 1, I have no idea if its complete or not
92 
93 ***************************************************************************/
94 
95 #include "driver.h"
96 #include "machine/random.h"
97 #include "vidhrdw/generic.h"
98 
99 
100 
101 extern data16_t *galpanic_bgvideoram,*galpanic_fgvideoram;
102 extern size_t galpanic_fgvideoram_size;
103 
104 PALETTE_INIT( galpanic );
105 WRITE16_HANDLER( galpanic_bgvideoram_w );
106 WRITE16_HANDLER( galpanic_paletteram_w );
107 VIDEO_UPDATE( galpanic );
108 VIDEO_UPDATE( comad );
109 
110 
111 
112 
INTERRUPT_GEN(galpanic_interrupt)113 static INTERRUPT_GEN( galpanic_interrupt )
114 {
115 	/* IRQ 3 drives the game, IRQ 5 updates the palette */
116 	if (cpu_getiloops() != 0)
117 		cpu_set_irq_line(0, 5, HOLD_LINE);
118 	else
119 		cpu_set_irq_line(0, 3, HOLD_LINE);
120 }
121 
INTERRUPT_GEN(galhustl_interrupt)122 static INTERRUPT_GEN( galhustl_interrupt )
123 {
124 	switch ( cpu_getiloops() )
125 	{
126 		case 2:  cpu_set_irq_line(0, 5, HOLD_LINE); break;
127 		case 1:  cpu_set_irq_line(0, 4, HOLD_LINE); break;
128 		case 0:  cpu_set_irq_line(0, 3, HOLD_LINE); break;
129 	}
130 }
131 
132 
WRITE16_HANDLER(galpanic_6295_bankswitch_w)133 static WRITE16_HANDLER( galpanic_6295_bankswitch_w )
134 {
135 	if (ACCESSING_MSB)
136 	{
137 		UINT8 *rom = memory_region(REGION_SOUND1);
138 
139 		memcpy(&rom[0x30000],&rom[0x40000 + ((data >> 8) & 0x0f) * 0x10000],0x10000);
140 	}
141 }
142 
143 
144 static data16_t *galpanib_calc_data;
145 
146 static struct {
147 	UINT16 x1p, y1p, x1s, y1s;
148 	UINT16 x2p, y2p, x2s, y2s;
149 
150 	INT16 x12, y12, x21, y21;
151 
152 	UINT16 mult_a, mult_b;
153 } hit;
154 
READ16_HANDLER(galpanib_calc_r)155 static READ16_HANDLER(galpanib_calc_r)
156 {
157 	UINT16 data = 0;
158 
159 	switch (offset)
160 	{
161 		case 0x00 >> 1:	/* watchdog*/
162 			return watchdog_reset_r(0);
163 
164 		case 0x04 >> 1:
165 			/* This is similar to the hit detection from SuperNova, but much simpler */
166 
167 			/* X Absolute Collision*/
168 			if      (hit.x1p >  hit.x2p)	data |= 0x0200;
169 			else if (hit.x1p == hit.x2p)	data |= 0x0400;
170 			else if (hit.x1p <  hit.x2p)	data |= 0x0800;
171 
172 			/* Y Absolute Collision*/
173 			if      (hit.y1p >  hit.y2p)	data |= 0x2000;
174 			else if (hit.y1p == hit.y2p)	data |= 0x4000;
175 			else if (hit.y1p <  hit.y2p)	data |= 0x8000;
176 
177 			/* XY Overlap Collision*/
178 			hit.x12 = (hit.x1p) - (hit.x2p + hit.x2s);
179 			hit.y12 = (hit.y1p) - (hit.y2p + hit.y2s);
180 			hit.x21 = (hit.x1p + hit.x1s) - (hit.x2p);
181 			hit.y21 = (hit.y1p + hit.y1s) - (hit.y2p);
182 
183 			if ((hit.x12 < 0) && (hit.y12 < 0) &&
184 				(hit.x21 >= 0) && (hit.y21 >= 0))
185 					data |= 0x0001;
186 
187 			return data;
188 
189 		case 0x10 >> 1:
190 			return (((UINT32)hit.mult_a * (UINT32)hit.mult_b) >> 16);
191 		case 0x12 >> 1:
192 			return (((UINT32)hit.mult_a * (UINT32)hit.mult_b) & 0xffff);
193 
194 		case 0x14 >> 1:
195 			return (mame_rand() & 0xffff);
196 
197 		default:
198 			log_cb(RETRO_LOG_DEBUG, LOGPRE "CPU #0 PC %06x: warning - read unmapped calc address %06x\n",activecpu_get_pc(),offset<<1);
199 	}
200 
201 	return 0;
202 }
203 
WRITE16_HANDLER(galpanib_calc_w)204 static WRITE16_HANDLER(galpanib_calc_w)
205 {
206 	switch (offset)
207 	{
208 		/* p is position, s is size*/
209 		case 0x00 >> 1:
210 			hit.x1p = data;
211 			break;
212 		case 0x02 >> 1:
213 			hit.x1s = data;
214 			break;
215 		case 0x04 >> 1:
216 			hit.y1p = data;
217 			break;
218 		case 0x06 >> 1:
219 			hit.y1s = data;
220 			break;
221 		case 0x08 >> 1:
222 			hit.x2p = data;
223 			break;
224 		case 0x0a >> 1:
225 			hit.x2s = data;
226 			break;
227 		case 0x0c >> 1:
228 			hit.y2p = data;
229 			break;
230 		case 0x0e >> 1:
231 			hit.y2s = data;
232 			break;
233 		case 0x10 >> 1:
234 			hit.mult_a = data;
235 			break;
236 		case 0x12 >> 1:
237 			hit.mult_b = data;
238 			break;
239 		default:
240 			log_cb(RETRO_LOG_DEBUG, LOGPRE "CPU #0 PC %06x: warning - write unmapped hit address %06x\n",activecpu_get_pc(),offset<<1);
241 	}
242 }
243 
WRITE16_HANDLER(galpanic_bgvideoram_mirror_w)244 static WRITE16_HANDLER( galpanic_bgvideoram_mirror_w )
245 {
246 	int i;
247 	for(i = 0; i < 8; i++)
248 	{
249 		/* or offset + i * 0x2000 ?*/
250 		galpanic_bgvideoram_w(offset * 8 + i, data, mem_mask);
251 	}
252 }
253 
MEMORY_READ16_START(galpanic_readmem)254 static MEMORY_READ16_START( galpanic_readmem )
255 	{ 0x000000, 0x3fffff, MRA16_ROM },
256 	{ 0x400000, 0x400001, OKIM6295_status_0_lsb_r },
257 	{ 0x500000, 0x51ffff, MRA16_RAM },
258 	{ 0x520000, 0x53ffff, MRA16_RAM },
259 	{ 0x600000, 0x6007ff, MRA16_RAM },
260 	{ 0x700000, 0x7047ff, MRA16_RAM },
261 	{ 0x800000, 0x800001, input_port_0_word_r },
262 	{ 0x800002, 0x800003, input_port_1_word_r },
263 	{ 0x800004, 0x800005, input_port_2_word_r },
264 MEMORY_END
265 
266 static MEMORY_WRITE16_START( galpanic_writemem )
267 	{ 0x000000, 0x3fffff, MWA16_ROM },
268 	{ 0x400000, 0x400001, OKIM6295_data_0_lsb_w },
269 	{ 0x500000, 0x51ffff, MWA16_RAM, &galpanic_fgvideoram, &galpanic_fgvideoram_size },
270 	{ 0x520000, 0x53ffff, galpanic_bgvideoram_w, &galpanic_bgvideoram },	/* + work RAM */
271 	{ 0x600000, 0x6007ff, galpanic_paletteram_w, &paletteram16 },	/* 1024 colors, but only 512 seem to be used */
272 	{ 0x700000, 0x7047ff, MWA16_RAM, &spriteram16, &spriteram_size },
273 	{ 0x900000, 0x900001, galpanic_6295_bankswitch_w },
274 	{ 0xa00000, 0xa00001, MWA16_NOP },	/* ??? */
275 	{ 0xb00000, 0xb00001, MWA16_NOP },	/* ??? */
276 	{ 0xc00000, 0xc00001, MWA16_NOP },	/* ??? */
277 	{ 0xd00000, 0xd00001, MWA16_NOP },	/* ??? */
278 MEMORY_END
279 
280 static MEMORY_READ16_START( galpanib_readmem )
281 	{ 0x000000, 0x3fffff, MRA16_ROM },
282 	{ 0x400000, 0x400001, OKIM6295_status_0_lsb_r },
283 	{ 0x500000, 0x51ffff, MRA16_RAM },
284 	{ 0x520000, 0x53ffff, MRA16_RAM },
285 	{ 0x600000, 0x6007ff, MRA16_RAM },
286 	{ 0x700000, 0x7047ff, MRA16_RAM },
287 	{ 0x800000, 0x800001, input_port_0_word_r },
288 	{ 0x800002, 0x800003, input_port_1_word_r },
289 	{ 0x800004, 0x800005, input_port_2_word_r },
290 	{ 0xe00000, 0xe00015, galpanib_calc_r },
291 MEMORY_END
292 
293 static MEMORY_WRITE16_START( galpanib_writemem )
294 	{ 0x000000, 0x3fffff, MWA16_ROM },
295 	{ 0x400000, 0x400001, OKIM6295_data_0_lsb_w },
296 	{ 0x500000, 0x51ffff, MWA16_RAM, &galpanic_fgvideoram, &galpanic_fgvideoram_size },
297 	{ 0x520000, 0x53ffff, galpanic_bgvideoram_w, &galpanic_bgvideoram },	/* + work RAM */
298 	{ 0x600000, 0x6007ff, galpanic_paletteram_w, &paletteram16 },	/* 1024 colors, but only 512 seem to be used */
299 	{ 0x700000, 0x7047ff, MWA16_RAM, &spriteram16, &spriteram_size },
300 	{ 0x900000, 0x900001, galpanic_6295_bankswitch_w },
301 	{ 0xa00000, 0xa00001, MWA16_NOP },	/* ??? */
302 	{ 0xb00000, 0xb00001, MWA16_NOP },	/* ??? */
303 	{ 0xc00000, 0xc00001, MWA16_NOP },	/* ??? */
304 	{ 0xd00000, 0xd00001, MWA16_NOP },	/* ??? */
305 	{ 0xe00000, 0xe00015, galpanib_calc_w, &galpanib_calc_data },
306 MEMORY_END
307 
308 static READ16_HANDLER( kludge )
309 {
310 	return mame_rand() & 0x0700;
311 }
312 
MEMORY_READ16_START(comad_readmem)313 static MEMORY_READ16_START( comad_readmem )
314 	{ 0x000000, 0x4fffff, MRA16_ROM },
315 	{ 0x500000, 0x51ffff, MRA16_RAM },
316 	{ 0x520000, 0x53ffff, MRA16_RAM },
317 	{ 0x600000, 0x6007ff, MRA16_RAM },
318 	{ 0x700000, 0x700fff, MRA16_RAM },
319 	{ 0x800000, 0x800001, input_port_0_word_r },
320 	{ 0x800002, 0x800003, input_port_1_word_r },
321 	{ 0x800004, 0x800005, input_port_2_word_r },
322 /*	{ 0x800006, 0x800007,  },	??*/
323 	{ 0x80000a, 0x80000b, kludge },	/* bits 8-a = timer? palette update code waits for them to be 111 */
324 	{ 0x80000c, 0x80000d, kludge },	/* missw96 bits 8-a = timer? palette update code waits for them to be 111 */
325 	{ 0xc00000, 0xc0ffff, MRA16_RAM },	/* missw96 */
326 	{ 0xc80000, 0xc8ffff, MRA16_RAM },	/* fantasia, newfant */
327 	{ 0xf00000, 0xf00001, OKIM6295_status_0_msb_r },	/* fantasia, missw96 */
328 	{ 0xf80000, 0xf80001, OKIM6295_status_0_msb_r },	/* newfant */
329 MEMORY_END
330 
331 static MEMORY_WRITE16_START( comad_writemem )
332 	{ 0x000000, 0x4fffff, MWA16_ROM },
333 	{ 0x500000, 0x51ffff, MWA16_RAM, &galpanic_fgvideoram, &galpanic_fgvideoram_size },
334 	{ 0x520000, 0x53ffff, galpanic_bgvideoram_w, &galpanic_bgvideoram },	/* + work RAM */
335 	{ 0x600000, 0x6007ff, galpanic_paletteram_w, &paletteram16 },	/* 1024 colors, but only 512 seem to be used */
336 	{ 0x700000, 0x700fff, MWA16_RAM, &spriteram16, &spriteram_size },
337 	{ 0x900000, 0x900001, galpanic_6295_bankswitch_w },	/* not sure */
338 	{ 0xc00000, 0xc0ffff, MWA16_RAM },	/* missw96 */
339 	{ 0xc80000, 0xc8ffff, MWA16_RAM },	/* fantasia, newfant */
340 	{ 0xf00000, 0xf00001, OKIM6295_data_0_msb_w },	/* fantasia, missw96 */
341 	{ 0xf80000, 0xf80001, OKIM6295_data_0_msb_w },	/* newfant */
342 MEMORY_END
343 
344 static MEMORY_READ16_START( fantsia2_readmem )
345 	{ 0x000000, 0x4fffff, MRA16_ROM },
346 	{ 0x500000, 0x51ffff, MRA16_RAM },
347 	{ 0x520000, 0x53ffff, MRA16_RAM },
348 	{ 0x600000, 0x6007ff, MRA16_RAM },
349 	{ 0x700000, 0x700fff, MRA16_RAM },
350 	{ 0x800000, 0x800001, input_port_0_word_r },
351 	{ 0x800002, 0x800003, input_port_1_word_r },
352 	{ 0x800004, 0x800005, input_port_2_word_r },
353 /*	{ 0x800006, 0x800007,  },	??*/
354 	{ 0x800008, 0x800009, kludge },	/* bits 8-a = timer? palette update code waits for them to be 111 */
355 	{ 0xf80000, 0xf8ffff, MRA16_RAM },
356 	{ 0xc80000, 0xc80001, OKIM6295_status_0_msb_r },
357 MEMORY_END
358 
359 static MEMORY_WRITE16_START( fantsia2_writemem )
360 	{ 0x000000, 0x4fffff, MWA16_ROM },
361 	{ 0x500000, 0x51ffff, MWA16_RAM, &galpanic_fgvideoram, &galpanic_fgvideoram_size },
362 	{ 0x520000, 0x53ffff, galpanic_bgvideoram_w, &galpanic_bgvideoram },	/* + work RAM */
363 	{ 0x600000, 0x6007ff, galpanic_paletteram_w, &paletteram16 },	/* 1024 colors, but only 512 seem to be used */
364 	{ 0x700000, 0x700fff, MWA16_RAM, &spriteram16, &spriteram_size },
365 	{ 0x900000, 0x900001, galpanic_6295_bankswitch_w },	/* not sure */
366 	{ 0xf80000, 0xf8ffff, MWA16_RAM },
367 	{ 0xa00000, 0xa00001, MWA16_NOP },	/* coin counters, + ? */
368 	{ 0xc80000, 0xc80001, OKIM6295_data_0_msb_w },
369 MEMORY_END
370 
371 
372 static MEMORY_READ16_START( galhustl_readmem )
373 	{ 0x000000, 0x0fffff, MRA16_ROM },
374     { 0x500000, 0x51ffff, MRA16_RAM },
375 	{ 0x580000, 0x583fff, MRA16_RAM },
376 	{ 0x600000, 0x6007ff, MRA16_RAM },
377 	{ 0x600800, 0x600fff, MRA16_RAM },
378 	{ 0x680000, 0x68001f, MRA16_RAM },
379 	{ 0x700000, 0x700fff, MRA16_RAM },
380 	{ 0x780000, 0x78001f, MRA16_RAM },
381 	{ 0x800000, 0x800001, input_port_0_word_r },
382 	{ 0x800002, 0x800003, input_port_1_word_r },
383 	{ 0x800004, 0x800005, input_port_2_word_r },
384 	{ 0xd00000, 0xd00001, OKIM6295_status_0_msb_r },
385 	{ 0xe80000, 0xe8ffff, MRA16_RAM },
386 MEMORY_END
387 
388 static MEMORY_WRITE16_START( galhustl_writemem )
389 	{ 0x000000, 0x0fffff, MWA16_ROM },
390     { 0x500000, 0x51ffff, MWA16_RAM, &galpanic_fgvideoram, &galpanic_fgvideoram_size },
391 	{ 0x520000, 0x53ffff, galpanic_bgvideoram_w, &galpanic_bgvideoram },
392 	{ 0x580000, 0x583fff, galpanic_bgvideoram_mirror_w },
393 	{ 0x600000, 0x6007ff, galpanic_paletteram_w, &paletteram16 },	/* 1024 colors, but only 512 seem to be used */
394 	{ 0x600800, 0x600fff, MWA16_RAM }, /* writes only 1?*/
395 	{ 0x680000, 0x68001f, MWA16_RAM }, /* regs?*/
396 	{ 0x700000, 0x700fff, MWA16_RAM, &spriteram16, &spriteram_size },
397 	{ 0x780000, 0x78001f, MWA16_RAM }, /* regs?*/
398 	{ 0xa00000, 0xa00001, MWA16_NOP }, /* ?*/
399 	{ 0x900000, 0x900001, galpanic_6295_bankswitch_w },
400 	{ 0xd00000, 0xd00001, OKIM6295_data_0_msb_w },
401 	{ 0xe80000, 0xe8ffff, MWA16_RAM },
402 MEMORY_END
403 
404 
405 INPUT_PORTS_START( galpanic )
406 	PORT_START
407 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unused ) )
408 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
409 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
410 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )	/* flip screen? - code at 0x000522 */
411 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
412 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
413 	PORT_SERVICE( 0x0004, IP_ACTIVE_LOW )
414 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unused ) )
415 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
416 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
417 	/* Coinage - World (0x03ffff.b = 03) */
418 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) )
419 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
420 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_1C ) )
421 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )
422 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )
423 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) )
424 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_2C ) )
425 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_3C ) )
426 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_4C ) )
427 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
428 	/* Coinage - Japan (0x03ffff.b = 01) and US (0x03ffff.b = 02)
429 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) )
430 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )
431 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )
432 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )
433 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_2C ) )
434 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) )
435 	PORT_DIPSETTING(      0x0040, DEF_STR( 2C_1C ) )
436 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )
437 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )
438 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_2C ) )
439 	*/
440 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_PLAYER1 )
441 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_PLAYER1 )
442 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_PLAYER1 )
443 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER1 )
444 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
445 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )		/* "Shot2" in "test mode" */
446 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
447 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
448 
449 	PORT_START
450 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) )
451 	PORT_DIPSETTING(      0x0002, "Easy" )
452 	PORT_DIPSETTING(      0x0003, "Normal" )
453 	PORT_DIPSETTING(      0x0001, "Hard" )
454 	PORT_DIPSETTING(      0x0000, "Hardest" )
455 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unused ) )
456 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
457 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
458 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unused ) )
459 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
460 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
461 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) )
462 	PORT_DIPSETTING(      0x0010, "2" )
463 	PORT_DIPSETTING(      0x0030, "3" )
464 	PORT_DIPSETTING(      0x0020, "4" )
465 	PORT_DIPSETTING(      0x0000, "5" )
466 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )	/* demo sounds? - see notes */
467 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
468 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
469 	PORT_DIPNAME( 0x0080, 0x0080, "Character Test" )
470 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
471 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
472 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_PLAYER2 )
473 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_PLAYER2 )
474 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_PLAYER2 )
475 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER2 )
476 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
477 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )		/* "Shot2" in "test mode" */
478 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
479 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
480 
481 	PORT_START
482 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
483 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
484 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
485 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 )
486 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 )
487 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
488 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT )
489 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
490 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
491 INPUT_PORTS_END
492 
493 INPUT_PORTS_START( galpanib )
494 	PORT_START
495 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unused ) )
496 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
497 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
498 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )	/* flip screen? - code at 0x00060a */
499 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
500 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
501 	PORT_SERVICE( 0x0004, IP_ACTIVE_LOW )
502 	PORT_DIPNAME( 0x0008, 0x0008, "Coin Mode" )
503 	PORT_DIPSETTING(      0x0008, "Mode 1" )
504 	PORT_DIPSETTING(      0x0000, "Mode 2" )
505 	/* Coinage - Japan (0x03ffff.b = 01)
506 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) )
507 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )
508 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )
509 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )
510 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_2C ) )
511 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) )
512 	PORT_DIPSETTING(      0x0040, DEF_STR( 2C_1C ) )
513 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )
514 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_3C ) )
515 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_2C ) )
516 	*/
517 	/* Coin Mode 1 - US (0x03ffff.b = 02) and World (0x03ffff.b = 03) */
518 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) )
519 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )
520 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )
521 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_2C ) )
522 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
523 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) )
524 	PORT_DIPSETTING(      0x0080, DEF_STR( 2C_1C ) )
525 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )
526 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_2C ) )
527 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
528 	/* Coin Mode 2 - US (0x03ffff.b = 02) and World (0x03ffff.b = 03)
529 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) )
530 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )
531 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )
532 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_3C ) )
533 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_4C ) )
534 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) )
535 	PORT_DIPSETTING(      0x0080, DEF_STR( 2C_1C ) )
536 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )
537 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_3C ) )
538 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_4C ) )
539 	*/
540 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_PLAYER1 )
541 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_PLAYER1 )
542 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_PLAYER1 )
543 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER1 )
544 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
545 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )		/* "Shot2" in "test mode" */
546 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
547 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
548 
549 	PORT_START
550 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) )
551 	PORT_DIPSETTING(      0x0002, "Easy" )
552 	PORT_DIPSETTING(      0x0003, "Normal" )
553 	PORT_DIPSETTING(      0x0001, "Hard" )
554 	PORT_DIPSETTING(      0x0000, "Hardest" )
555 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unused ) )
556 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
557 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
558 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unused ) )
559 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
560 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
561 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) )
562 	PORT_DIPSETTING(      0x0010, "2" )
563 	PORT_DIPSETTING(      0x0030, "3" )
564 	PORT_DIPSETTING(      0x0020, "4" )
565 	PORT_DIPSETTING(      0x0000, "5" )
566 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )	/* demo sounds? - see notes */
567 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
568 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
569 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unused ) )
570 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
571 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
572 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_PLAYER2 )
573 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_PLAYER2 )
574 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_PLAYER2 )
575 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER2 )
576 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
577 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )		/* "Shot2" in "test mode" */
578 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
579 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
580 
581 	PORT_START
582 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
583 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
584 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
585 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 )
586 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 )
587 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
588 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT )
589 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
590 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
591 INPUT_PORTS_END
592 
593 INPUT_PORTS_START( fantasia )
594 	PORT_START
595 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) )
596 	PORT_DIPSETTING(      0x0002, "Easy" )
597 	PORT_DIPSETTING(      0x0003, "Normal" )
598 	PORT_DIPSETTING(      0x0001, "Hard" )
599 	PORT_DIPSETTING(      0x0000, "Hardest" )
600 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unused ) )
601 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
602 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
603 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )	/* freeze/vblank? - code at 0x000734 ('fantasia') */
604 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )		/* or 0x00075a ('newfant') - not called ? */
605 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
606 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) )
607 	PORT_DIPSETTING(      0x0010, "2" )
608 	PORT_DIPSETTING(      0x0030, "3" )
609 	PORT_DIPSETTING(      0x0020, "4" )
610 	PORT_DIPSETTING(      0x0000, "5" )
611 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )	/* demo sounds? - same "trap    #$d" as in 'galpanic' */
612 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
613 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
614 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unused ) )
615 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
616 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
617 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
618 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
619 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
620 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
621 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
622 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )		/* "Shot2" in "test mode" */
623 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
624 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
625 
626 	PORT_START
627 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unused ) )
628 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
629 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
630 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )	/* flip screen? - code at 0x00021c */
631 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
632 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
633 	PORT_SERVICE( 0x0004, IP_ACTIVE_LOW )
634 	PORT_DIPNAME( 0x0008, 0x0008, "Coin Mode" )
635 	PORT_DIPSETTING(      0x0008, "Mode 1" )
636 	PORT_DIPSETTING(      0x0000, "Mode 2" )
637 	/* Coin Mode 1 */
638 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) )
639 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )
640 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )
641 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_2C ) )
642 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
643 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) )
644 	PORT_DIPSETTING(      0x0080, DEF_STR( 2C_1C ) )
645 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )
646 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_2C ) )
647 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
648 	/* Coin Mode 2
649 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) )
650 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )
651 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )
652 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_3C ) )
653 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_4C ) )
654 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) )
655 	PORT_DIPSETTING(      0x0080, DEF_STR( 2C_1C ) )
656 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )
657 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_3C ) )
658 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_4C ) )
659 	*/
660 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
661 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
662 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
663 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
664 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
665 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )		/* "Shot2" in "test mode" */
666 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
667 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
668 
669 	PORT_START
670 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
671 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
672 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
673 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 )
674 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 )
675 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
676 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT )		/* MAME may crash when pressed (see notes) */
677 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )		/* "Service" in "test mode" */
678 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
679 INPUT_PORTS_END
680 
681 /* Same as 'fantasia', but no "Service Mode" Dip Switch (and thus no "hidden" buttons) */
682 INPUT_PORTS_START( missw96 )
683 	PORT_START
684 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) )
685 	PORT_DIPSETTING(      0x0002, "Easy" )
686 	PORT_DIPSETTING(      0x0003, "Normal" )
687 	PORT_DIPSETTING(      0x0001, "Hard" )
688 	PORT_DIPSETTING(      0x0000, "Hardest" )
689 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unused ) )
690 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
691 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
692 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )	/* freeze/vblank? - code at 0x00074e - not called ? */
693 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
694 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
695 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) )
696 	PORT_DIPSETTING(      0x0010, "2" )
697 	PORT_DIPSETTING(      0x0030, "3" )
698 	PORT_DIPSETTING(      0x0020, "4" )
699 	PORT_DIPSETTING(      0x0000, "5" )
700 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )	/* demo sounds? - same "trap    #$d" as in 'galpanic' */
701 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
702 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
703 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unused ) )
704 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
705 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
706 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
707 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
708 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
709 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
710 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
711 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
712 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
713 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
714 
715 	PORT_START
716 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unused ) )
717 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
718 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
719 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )	/* flip screen? - code at 0x00021c */
720 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
721 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
722 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unused ) )
723 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
724 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
725 	PORT_DIPNAME( 0x0008, 0x0008, "Coin Mode" )
726 	PORT_DIPSETTING(      0x0008, "Mode 1" )
727 	PORT_DIPSETTING(      0x0000, "Mode 2" )
728 	/* Coin Mode 1 */
729 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) )
730 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )
731 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )
732 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_2C ) )
733 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
734 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) )
735 	PORT_DIPSETTING(      0x0080, DEF_STR( 2C_1C ) )
736 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )
737 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_2C ) )
738 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
739 	/* Coin Mode 2
740 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) )
741 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )
742 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )
743 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_3C ) )
744 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_4C ) )
745 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) )
746 	PORT_DIPSETTING(      0x0080, DEF_STR( 2C_1C ) )
747 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )
748 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_3C ) )
749 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_4C ) )
750 	*/
751 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
752 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
753 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
754 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
755 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
756 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
757 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
758 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
759 
760 	PORT_START
761 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
762 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
763 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
764 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 )
765 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 )
766 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
767 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT )		/* MAME may crash when pressed (see notes) */
768 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
769 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
770 INPUT_PORTS_END
771 
772 INPUT_PORTS_START( galhustl )
773 	PORT_START
774 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) )
775 	PORT_DIPSETTING(      0x0000, "6" )
776 	PORT_DIPSETTING(      0x0001, "7" )
777 	PORT_DIPSETTING(      0x0003, "8" )
778 	PORT_DIPSETTING(      0x0002, "10" )
779 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
780 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
781 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
782 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
783 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
784 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
785 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
786 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
787 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
788 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
789 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
790 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
791 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Demo_Sounds ) )
792 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
793 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
794 	PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
795 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
796 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
797 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
798 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
799 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
800 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
801 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
802 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
803 
804 	PORT_START
805 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coinage ) )
806 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
807 	PORT_DIPSETTING(      0x0001, DEF_STR( 3C_1C ) )
808 	PORT_DIPSETTING(      0x0002, DEF_STR( 2C_1C ) )
809 	PORT_DIPSETTING(      0x0004, DEF_STR( 3C_2C ) )
810 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
811 	PORT_DIPSETTING(      0x0003, DEF_STR( 2C_3C ) )
812 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
813 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
814 	PORT_DIPNAME( 0x0018, 0x0018, DEF_STR( Difficulty ) )
815 	PORT_DIPSETTING(      0x0010, "Easy" )			/* 5000 - 7000 */
816 	PORT_DIPSETTING(      0x0018, "Normal" )		/* 4000 - 6000 */
817 	PORT_DIPSETTING(      0x0008, "Hard" )			/* 6000 - 8000 */
818 	PORT_DIPSETTING(      0x0000, "Hardest" )		/* 7000 - 9000 */
819 	PORT_DIPNAME( 0x0060, 0x0060, "Play Time" )
820 	PORT_DIPSETTING(      0x0040, "120 Sec" )
821 	PORT_DIPSETTING(      0x0060, "100 Sec" )
822 	PORT_DIPSETTING(      0x0020, "80 Sec" )
823 	PORT_DIPSETTING(      0x0000, "70 Sec" )
824 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
825 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
826 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
827 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
828 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
829 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
830 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
831 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
832 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
833 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
834 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
835 
836 	PORT_START
837 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
838 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
839 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
840 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 )
841 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 )
842 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
843 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
844 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
845 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
846 INPUT_PORTS_END
847 
848 
849 static struct GfxLayout spritelayout =
850 {
851 	16,16,
852 	RGN_FRAC(1,1),
853 	4,
854 	{ 0, 1, 2, 3 },
855 	{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4,
856 			64*4, 65*4, 66*4, 67*4, 68*4, 69*4, 70*4, 71*4 },
857 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
858 			16*32, 17*32, 18*32, 19*32, 20*32, 21*32, 22*32, 23*32 },
859 	128*8
860 };
861 
862 static struct GfxDecodeInfo gfxdecodeinfo[] =
863 {
864 	{ REGION_GFX1, 0, &spritelayout,  256, 16 },
865 	{ -1 } /* end of array */
866 };
867 
868 
869 
870 static struct OKIM6295interface okim6295_interface =
871 {
872 	1,                  /* 1 chip */
873 	{ 12000 },          /* 12000Hz frequency */
874 	{ REGION_SOUND1 },  /* memory region */
875 	{ 100 }
876 };
877 
MACHINE_INIT(galpanib)878 static MACHINE_INIT( galpanib )
879 {
880 	/* init watchdog */
881 	watchdog_reset_r(0);
882 }
883 
884 static MACHINE_DRIVER_START( galpanic )
885 
886 	/* basic machine hardware */
887 	MDRV_CPU_ADD_TAG("main", M68000, 8000000)
888 	MDRV_CPU_MEMORY(galpanic_readmem,galpanic_writemem)
889 	MDRV_CPU_VBLANK_INT(galpanic_interrupt,2)
890 
891 	MDRV_FRAMES_PER_SECOND(60)
892 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)	/* frames per second, vblank duration */
893 
894 	/* video hardware */
895 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
896 	MDRV_SCREEN_SIZE(256, 256)
897 	MDRV_VISIBLE_AREA(0, 256-1, 0, 224-1)
898 	MDRV_GFXDECODE(gfxdecodeinfo)
899 	MDRV_PALETTE_LENGTH(1024 + 32768)
900 	MDRV_COLORTABLE_LENGTH(1024)
901 
902 	MDRV_PALETTE_INIT(galpanic)
903 	MDRV_VIDEO_START(generic_bitmapped)
904 	MDRV_VIDEO_UPDATE(galpanic)
905 
906 	/* sound hardware */
907 	MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
908 MACHINE_DRIVER_END
909 
910 
911 static MACHINE_DRIVER_START( galpanib )
912 
913 	/* basic machine hardware */
914 	MDRV_IMPORT_FROM(galpanic)
915 	MDRV_CPU_REPLACE("main", M68000, 10000000)
916 	MDRV_CPU_MEMORY(galpanib_readmem,galpanib_writemem)
917 
918 	/* arm watchdog */
919 	MDRV_MACHINE_INIT(galpanib)
920 MACHINE_DRIVER_END
921 
922 
923 static MACHINE_DRIVER_START( comad )
924 
925 	/* basic machine hardware */
926 	MDRV_IMPORT_FROM(galpanic)
927 	MDRV_CPU_REPLACE("main", M68000, 10000000)
928 	MDRV_CPU_MEMORY(comad_readmem,comad_writemem)
929 
930 	/* video hardware */
931 	MDRV_VIDEO_UPDATE(comad)
932 MACHINE_DRIVER_END
933 
934 
935 static MACHINE_DRIVER_START( fantsia2 )
936 
937 	/* basic machine hardware */
938 	MDRV_IMPORT_FROM(comad)
939 	MDRV_CPU_REPLACE("main", M68000, 12000000)	/* ? */
940 	MDRV_CPU_MEMORY(fantsia2_readmem,fantsia2_writemem)
941 
942 	/* video hardware */
943 	MDRV_VIDEO_UPDATE(comad)
944 MACHINE_DRIVER_END
945 
946 static MACHINE_DRIVER_START( galhustl )
947 
948 	/* basic machine hardware */
949 	MDRV_IMPORT_FROM(comad)
950 	MDRV_CPU_REPLACE("main", M68000, 12000000)	/* ? */
951 	MDRV_CPU_MEMORY(galhustl_readmem,galhustl_writemem)
952 	MDRV_CPU_VBLANK_INT(galhustl_interrupt,3)
953 
954 	/* video hardware */
955 	MDRV_VIDEO_UPDATE(comad)
956 MACHINE_DRIVER_END
957 
958 /***************************************************************************
959 
960   Game driver(s)
961 
962 ***************************************************************************/
963 
964 ROM_START( galpanic )
965 	ROM_REGION( 0x400000, REGION_CPU1, 0 )	/* 68000 code */
966 	ROM_LOAD16_BYTE( "pm110.4m2",    0x000000, 0x80000, CRC(ae6b17a8) SHA1(f3a625eef45cc85cdf9760f77ea7ce93387911f9) )
967 	ROM_LOAD16_BYTE( "pm109.4m1",    0x000001, 0x80000, CRC(b85d792d) SHA1(0ed78e15f6e58285ce6944200b023ada1e673b0e) )
968 	/* The above two ROMs contain valid 68000 code, but the game doesn't */
969 	/* work. I think there might be a protection (addressed at e00000). */
970 	/* The two following ROMs replace the code with a working version. */
971 	ROM_LOAD16_BYTE( "pm112.6",      0x000000, 0x20000, CRC(7b972b58) SHA1(a7f619fca665b15f4f004ae739f5776ee2d4d432) )
972 	ROM_LOAD16_BYTE( "pm111.5",      0x000001, 0x20000, CRC(4eb7298d) SHA1(8858a40ffefbe4ecea7d5b70311c3775b7d987eb) )
973 	ROM_LOAD16_BYTE( "pm004e.8",     0x100001, 0x80000, CRC(d3af52bc) SHA1(46be057106388578defecab1cdd1793ec76ebe92) )
974 	ROM_LOAD16_BYTE( "pm005e.7",     0x100000, 0x80000, CRC(d7ec650c) SHA1(6c2250c74381497154bf516e0cf1db6bb56bb446) )
975 	ROM_LOAD16_BYTE( "pm000e.15",    0x200001, 0x80000, CRC(5d220f3f) SHA1(7ff373e01027c8832712f7a2d732f8e49b875878) )
976 	ROM_LOAD16_BYTE( "pm001e.14",    0x200000, 0x80000, CRC(90433eb1) SHA1(8688a85747ad9ecac395d782f130baa64fb9d12b) )
977 	ROM_LOAD16_BYTE( "pm002e.17",    0x300001, 0x80000, CRC(713ee898) SHA1(c9f608a57fb90e5ee15eb76a74a7afcc406d5b4e) )
978 	ROM_LOAD16_BYTE( "pm003e.16",    0x300000, 0x80000, CRC(6bb060fd) SHA1(4fc3946866c5a55e8340b62b5ad9beae723ce0da) )
979 
980 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites */
981 	ROM_LOAD( "pm006e.67",    0x000000, 0x100000, CRC(57aec037) SHA1(e6ba095b6892d4dcd76ba3343a97dd98ae29dc24) )
982 
983 	ROM_REGION( 0x140000, REGION_SOUND1, 0 )	/* OKIM6295 samples */
984 	/* 00000-2ffff is fixed, 30000-3ffff is bank switched from all the ROMs */
985 	ROM_LOAD( "pm008e.l",     0x00000, 0x80000, CRC(d9379ba8) SHA1(5ae7c743319b1a12f2b101a9f0f8fe0728ed1476) )
986 	ROM_RELOAD(               0x40000, 0x80000 )
987 	ROM_LOAD( "pm007e.u",     0xc0000, 0x80000, CRC(c7ed7950) SHA1(133258b058d3c562208d0d00b9fac71202647c32) )
988 ROM_END
989 
990 ROM_START( galpanib )
991 	ROM_REGION( 0x400000, REGION_CPU1, 0 )	/* 68000 code */
992 	ROM_LOAD16_BYTE( "pm110.4m2",    0x000000, 0x80000, CRC(ae6b17a8) SHA1(f3a625eef45cc85cdf9760f77ea7ce93387911f9) )
993 	ROM_LOAD16_BYTE( "pm109.4m1",    0x000001, 0x80000, CRC(b85d792d) SHA1(0ed78e15f6e58285ce6944200b023ada1e673b0e) )
994 	ROM_LOAD16_BYTE( "pm004e.8",     0x100001, 0x80000, CRC(d3af52bc) SHA1(46be057106388578defecab1cdd1793ec76ebe92) )
995 	ROM_LOAD16_BYTE( "pm005e.7",     0x100000, 0x80000, CRC(d7ec650c) SHA1(6c2250c74381497154bf516e0cf1db6bb56bb446) )
996 	ROM_LOAD16_BYTE( "pm000e.15",    0x200001, 0x80000, CRC(5d220f3f) SHA1(7ff373e01027c8832712f7a2d732f8e49b875878) )
997 	ROM_LOAD16_BYTE( "pm001e.14",    0x200000, 0x80000, CRC(90433eb1) SHA1(8688a85747ad9ecac395d782f130baa64fb9d12b) )
998 	ROM_LOAD16_BYTE( "pm002e.17",    0x300001, 0x80000, CRC(713ee898) SHA1(c9f608a57fb90e5ee15eb76a74a7afcc406d5b4e) )
999 	ROM_LOAD16_BYTE( "pm003e.16",    0x300000, 0x80000, CRC(6bb060fd) SHA1(4fc3946866c5a55e8340b62b5ad9beae723ce0da) )
1000 
1001 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites */
1002 	ROM_LOAD( "pm006e.67",    0x000000, 0x100000, CRC(57aec037) SHA1(e6ba095b6892d4dcd76ba3343a97dd98ae29dc24) )
1003 
1004 	ROM_REGION( 0x140000, REGION_SOUND1, 0 )	/* OKIM6295 samples */
1005 	/* 00000-2ffff is fixed, 30000-3ffff is bank switched from all the ROMs */
1006 	ROM_LOAD( "pm008e.l",     0x00000, 0x80000, CRC(d9379ba8) SHA1(5ae7c743319b1a12f2b101a9f0f8fe0728ed1476) )
1007 	ROM_RELOAD(               0x40000, 0x80000 )
1008 	ROM_LOAD( "pm007e.u",     0xc0000, 0x80000, CRC(c7ed7950) SHA1(133258b058d3c562208d0d00b9fac71202647c32) )
1009 ROM_END
1010 
1011 ROM_START( fantasia )
1012 	ROM_REGION( 0x500000, REGION_CPU1, 0 )	/* 68000 code */
1013 	ROM_LOAD16_BYTE( "prog2_16.rom", 0x000000, 0x80000, CRC(e27c6c57) SHA1(420b66928c46e76fa2496f221691dd6c34542287) )
1014 	ROM_LOAD16_BYTE( "prog1_13.rom", 0x000001, 0x80000, CRC(68d27413) SHA1(84cb7d6523325496469d621f6f4da1b719162147) )
1015 	ROM_LOAD16_BYTE( "iscr6_09.rom", 0x100000, 0x80000, CRC(2a588393) SHA1(ef66ed94dd40a95a9b0fb5c3b075c1f654f60927) )
1016 	ROM_LOAD16_BYTE( "iscr5_05.rom", 0x100001, 0x80000, CRC(6160e0f0) SHA1(faec9d082c9039885afa4560aa87c05e9ecb5217) )
1017 	ROM_LOAD16_BYTE( "iscr4_08.rom", 0x200000, 0x80000, CRC(f776b743) SHA1(bd4d666ede454a56181e109745ac4b3203b2a87c) )
1018 	ROM_LOAD16_BYTE( "iscr3_04.rom", 0x200001, 0x80000, CRC(5df0dff2) SHA1(62ebd3c79f2e8ab30d6862cc4bf80f1b56f1f572) )
1019 	ROM_LOAD16_BYTE( "iscr2_07.rom", 0x300000, 0x80000, CRC(5707d861) SHA1(33f1cff693dfcb04edbf8738d3ea2a1884e6ff0c) )
1020 	ROM_LOAD16_BYTE( "iscr1_03.rom", 0x300001, 0x80000, CRC(36cb811a) SHA1(403cef012990b0e01b481b8afc6b5811e7137833) )
1021 	ROM_LOAD16_BYTE( "imag2_10.rom", 0x400000, 0x80000, CRC(1f14a395) SHA1(12ca5a5a30963ecf90f5a006029aa1098b9ee1df) )
1022 	ROM_LOAD16_BYTE( "imag1_06.rom", 0x400001, 0x80000, CRC(faf870e4) SHA1(163a9aa3e5c550d3760d32e31048a7aa1f93db7f) )
1023 
1024 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites */
1025 	ROM_LOAD( "obj1_17.rom",  0x00000, 0x80000, CRC(aadb6eb7) SHA1(6eaa994ad7b4e8341360eaf5ddb46240316b7274) )
1026 
1027 	ROM_REGION( 0x140000, REGION_SOUND1, 0 )	/* OKIM6295 samples */
1028 	/* 00000-2ffff is fixed, 30000-3ffff is bank switched from all the ROMs */
1029 	ROM_LOAD( "mus-1_01.rom", 0x00000, 0x80000, CRC(22955efb) SHA1(791c18d1aa0c10810da05c199108f51f99fe1d49) )
1030 	ROM_RELOAD(               0x40000, 0x80000 )
1031 	ROM_LOAD( "mus-2_02.rom", 0xc0000, 0x80000, CRC(4cd4d6c3) SHA1(a617472a810aef6d82f5fe75ef2980c03c21c2fa) )
1032 
1033 	ROM_REGION16_BE( 0x200000, REGION_USER1, 0 )	/* unknown */
1034 	ROM_LOAD16_BYTE( "gscr2_15.rom", 0x000000, 0x80000, CRC(46666768) SHA1(7281c4b45f6f9f6ad89fa2bb3f67f30433c0c513) )
1035 	ROM_LOAD16_BYTE( "gscr1_12.rom", 0x000001, 0x80000, CRC(4bd25be6) SHA1(9834f081c0390ccaa1234efd2393b6495e946c64) )
1036 	ROM_LOAD16_BYTE( "gscr4_14.rom", 0x100000, 0x80000, CRC(4e7e6ed4) SHA1(3e9e942e3de398edc8ac9f82769c3f41708d3741) )
1037 	ROM_LOAD16_BYTE( "gscr3_11.rom", 0x100001, 0x80000, CRC(6d00a4c5) SHA1(8fc0d78200b82ab87658d364ebe2f2e7239722e7) )
1038 ROM_END
1039 
1040 ROM_START( fantsy95 )
1041 	ROM_REGION( 0x500000, REGION_CPU1, 0 )	/* 68000 code */
1042 	ROM_LOAD16_BYTE( "prog2.12",  0x000000, 0x80000, CRC(1e684da7) SHA1(2104a6fb5f019011009f4faa769afcada90cff97) )
1043 	ROM_LOAD16_BYTE( "prog1.7",   0x000001, 0x80000, CRC(dc4e4f6b) SHA1(9934121692a6d32164bef03c72c25dc727438e54) )
1044 	ROM_LOAD16_BYTE( "i-scr2.10", 0x100000, 0x80000, CRC(ab8756ff) SHA1(0a7aa977151962e67b15a7e0f819b1412ff8dbdc) )
1045 	ROM_LOAD16_BYTE( "i-scr1.5",  0x100001, 0x80000, CRC(d8e2ef77) SHA1(ec2c1dcc13e281288b5df43fa7a0b3cdf7357459) )
1046 	ROM_LOAD16_BYTE( "i-scr4.9",  0x200000, 0x80000, CRC(4e52eb23) SHA1(be61c0dc68c49ded2dc6e8852fd92acac4986700) )
1047 	ROM_LOAD16_BYTE( "i-scr3.4",  0x200001, 0x80000, CRC(797731f8) SHA1(571f939a7f85bd5b75a0660621961b531f44f736) )
1048 	ROM_LOAD16_BYTE( "i-scr6.8",  0x300000, 0x80000, CRC(6f8e5239) SHA1(a1c2ec79e80906ca18cf3532ce38a1495ab37e44) )
1049 	ROM_LOAD16_BYTE( "i-scr5.3",  0x300001, 0x80000, CRC(85420e3f) SHA1(d29e81cb1a33dca6232e14a0df2e21c8de45ba71) )
1050 	ROM_LOAD16_BYTE( "i-scr8.11", 0x400000, 0x80000, CRC(33db8177) SHA1(9e9aa890dfa20e5aa6f1caec7d018d992217c2fe) )
1051 	ROM_LOAD16_BYTE( "i-scr7.6",  0x400001, 0x80000, CRC(8662dd01) SHA1(a349c1cd965d3d51c20178fcce2f61ae76f4006a) )
1052 
1053 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites */
1054 	ROM_LOAD( "obj1.13",  0x00000, 0x80000, CRC(832cd451) SHA1(29dfab1d4b7a15f3fe9fbedef41d405a40235a77) )
1055 
1056 	ROM_REGION( 0x140000, REGION_SOUND1, 0 )	/* OKIM6295 samples */
1057 	/* 00000-2ffff is fixed, 30000-3ffff is bank switched from all the ROMs */
1058 	ROM_LOAD( "musc1.1", 0x00000, 0x80000, CRC(3117e2ef) SHA1(6581a7104556d44f814c537bbd74998922927034) )
1059 	ROM_RELOAD(               0x40000, 0x80000 )
1060 	ROM_LOAD( "musc2.2", 0xc0000, 0x80000, CRC(0c1109f9) SHA1(0e4ea534a32b1649e2e9bb8af7254b917ec03a90) )
1061 ROM_END
1062 
1063 ROM_START( newfant )
1064 	ROM_REGION( 0x500000, REGION_CPU1, 0 )	/* 68000 code */
1065 	ROM_LOAD16_BYTE( "prog2_12.rom", 0x000000, 0x80000, CRC(de43a457) SHA1(91db13f63b46146131c58e775119ea3b073ca409) )
1066 	ROM_LOAD16_BYTE( "prog1_07.rom", 0x000001, 0x80000, CRC(370b45be) SHA1(775873df9d3af803dbd1a392a45cad5f37b1b1c7) )
1067 	ROM_LOAD16_BYTE( "iscr2_10.rom", 0x100000, 0x80000, CRC(4f2da2eb) SHA1(4f0b72327d1bdfad24d822953f45218bfae29cff) )
1068 	ROM_LOAD16_BYTE( "iscr1_05.rom", 0x100001, 0x80000, CRC(63c6894f) SHA1(213544da570a167f3411357308c576805f6882f3) )
1069 	ROM_LOAD16_BYTE( "iscr4_09.rom", 0x200000, 0x80000, CRC(725741ec) SHA1(3455cf0aed9653c66b8b2f905ad683687d517419) )
1070 	ROM_LOAD16_BYTE( "iscr3_04.rom", 0x200001, 0x80000, CRC(51d6b362) SHA1(bcd57643ac9d79c150714ec6b6a2bb8a24acf7a5) )
1071 	ROM_LOAD16_BYTE( "iscr6_08.rom", 0x300000, 0x80000, CRC(178b2ef3) SHA1(d3c092a282278968a319e06731481570f217d404) )
1072 	ROM_LOAD16_BYTE( "iscr5_03.rom", 0x300001, 0x80000, CRC(d2b5c5fa) SHA1(80fde69bc5f4e958b5d57a5179b6e601192780f4) )
1073 	ROM_LOAD16_BYTE( "iscr8_11.rom", 0x400000, 0x80000, CRC(f4148528) SHA1(4e27fff0b7ead068a159b3ed80c5793a6166fc4e) )
1074 	ROM_LOAD16_BYTE( "iscr7_06.rom", 0x400001, 0x80000, CRC(2dee0c31) SHA1(1097006e6e5d16b24fb71615b6c0754fe0ecbe33) )
1075 
1076 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites */
1077 	ROM_LOAD( "obj1_13.rom",  0x00000, 0x80000, CRC(e6d1bc71) SHA1(df0b6c1742c01991196659bab2691230323e7b8d) )
1078 
1079 	ROM_REGION( 0x140000, REGION_SOUND1, 0 )	/* OKIM6295 samples */
1080 	/* 00000-2ffff is fixed, 30000-3ffff is bank switched from all the ROMs */
1081 	ROM_LOAD( "musc1_01.rom", 0x00000, 0x80000, CRC(10347fce) SHA1(f5fbe8ef363fe18b7104be5d2fa92943d1a5d7a2) )
1082 	ROM_RELOAD(               0x40000, 0x80000 )
1083 	ROM_LOAD( "musc2_02.rom", 0xc0000, 0x80000, CRC(b9646a8c) SHA1(e9432261ac86e4251a2c97301c6d014c05110a9c) )
1084 ROM_END
1085 
1086 ROM_START( missw96 )
1087 	ROM_REGION( 0x500000, REGION_CPU1, 0 )	/* 68000 code */
1088 	ROM_LOAD16_BYTE( "mw96_10.bin",  0x000000, 0x80000, CRC(b1309bb1) SHA1(3cc7a903cb007d8fc0f836a33780c1c9231d1629) )
1089 	ROM_LOAD16_BYTE( "mw96_06.bin",  0x000001, 0x80000, CRC(a5892bb3) SHA1(99130eb0af307fe66c9668414475e003f9c7d969) )
1090 	ROM_LOAD16_BYTE( "mw96_09.bin",  0x100000, 0x80000, CRC(7032dfdf) SHA1(53728b60d0c772f6d936be47e21b069d0a75a2b4) )
1091 	ROM_LOAD16_BYTE( "mw96_05.bin",  0x100001, 0x80000, CRC(91de5ab5) SHA1(d1153fa4745830d0fdd5bb311c38bf098ea29deb) )
1092 	ROM_LOAD16_BYTE( "mw96_08.bin",  0x200000, 0x80000, CRC(b8e66fb5) SHA1(8abc6f8d85e0ad6acbf518e11fd81debc5a90957) )
1093 	ROM_LOAD16_BYTE( "mw96_04.bin",  0x200001, 0x80000, CRC(e77a04f8) SHA1(e0043ec1d1bd5415c05ae93c9d785fc70174cb54) )
1094 	ROM_LOAD16_BYTE( "mw96_07.bin",  0x300000, 0x80000, CRC(26112ed3) SHA1(f49f92a4d1bcea322b171702591315950fbd70c6) )
1095 	ROM_LOAD16_BYTE( "mw96_03.bin",  0x300001, 0x80000, CRC(e9374a46) SHA1(eabfcc7cb9c9a2f932abc8103c3abfa8360dcbb5) )
1096 
1097 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites */
1098 	ROM_LOAD( "mw96_11.bin",  0x00000, 0x80000, CRC(3983152f) SHA1(6308e936ba54e88b34253f1d4fbd44725e9d88ae) )
1099 
1100 	ROM_REGION( 0x140000, REGION_SOUND1, 0 )	/* OKIM6295 samples */
1101 	/* 00000-2ffff is fixed, 30000-3ffff is bank switched from all the ROMs */
1102 	ROM_LOAD( "mw96_01.bin",  0x00000, 0x80000, CRC(e78a659e) SHA1(d209184c70e0d7e6d17034c6f536535cda782d42) )
1103 	ROM_RELOAD(               0x40000, 0x80000 )
1104 	ROM_LOAD( "mw96_02.bin",  0xc0000, 0x80000, CRC(60fa0c00) SHA1(391aa31e61663cc083a8a2320ba48a9859f3fd4e) )
1105 ROM_END
1106 
1107 ROM_START( fantsia2 )
1108 	ROM_REGION( 0x500000, REGION_CPU1, 0 )	/* 68000 code */
1109 	ROM_LOAD16_BYTE( "prog2.g17",    0x000000, 0x80000, CRC(57c59972) SHA1(4b1da928b537cf340a67026d07bc3dfc078b0d0f) )
1110 	ROM_LOAD16_BYTE( "prog1.f17",    0x000001, 0x80000, CRC(bf2d9a26) SHA1(92f0c1bd32f1e5e0ede3ba847242a212dfae4986) )
1111 	ROM_LOAD16_BYTE( "scr2.g16",     0x100000, 0x80000, CRC(887b1bc5) SHA1(b6fcdc8a56ea25758f363224d256e9b6c8e30244) )
1112 	ROM_LOAD16_BYTE( "scr1.f16",     0x100001, 0x80000, CRC(cbba3182) SHA1(a484819940fa1ef18ce679465c31075798748bac) )
1113 	ROM_LOAD16_BYTE( "scr4.g15",     0x200000, 0x80000, CRC(ce97e411) SHA1(be0ed41362db03f384229c708f2ba4146e5cb501) )
1114 	ROM_LOAD16_BYTE( "scr3.f15",     0x200001, 0x80000, CRC(480cc2e8) SHA1(38fe57ba1e34537f8be65fcc023ccd43369a5d94) )
1115 	ROM_LOAD16_BYTE( "scr6.g14",     0x300000, 0x80000, CRC(b29d49de) SHA1(854b76755acf58fb8a4648a0ce72ea6bdf26c555) )
1116 	ROM_LOAD16_BYTE( "scr5.f14",     0x300001, 0x80000, CRC(d5f88b83) SHA1(518a1f6732149f2851bbedca61f7313c39beb91b) )
1117 	ROM_LOAD16_BYTE( "scr8.g20",     0x400000, 0x80000, CRC(694ae2b3) SHA1(82b7a565290fce07c8393af4718fd1e6136928e9) )
1118 	ROM_LOAD16_BYTE( "scr7.f20",     0x400001, 0x80000, CRC(6068712c) SHA1(80a136d76dca566772e34d832ac11b8c7d6ce9ab) )
1119 
1120 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites */
1121 	ROM_LOAD( "obj1.1i",      0x00000, 0x80000, CRC(52e6872a) SHA1(7e5274b9a415ee0e536cd3b87f73d3eae9644669) )
1122 	ROM_LOAD( "obj2.2i",      0x80000, 0x80000, CRC(ea6e3861) SHA1(463b40f5441231a0451571a0b8afe1ed0fd4b164) )
1123 
1124 	ROM_REGION( 0x140000, REGION_SOUND1, 0 )	/* OKIM6295 samples */
1125 	/* 00000-2ffff is fixed, 30000-3ffff is bank switched from all the ROMs */
1126 	ROM_LOAD( "music2.1b",    0x00000, 0x80000, CRC(23cc4f9c) SHA1(06b5342c25de966ce590917c571e5b19af1fef7d) )
1127 	ROM_RELOAD(               0x40000, 0x80000 )
1128 	ROM_LOAD( "music1.1a",    0xc0000, 0x80000, CRC(864167c2) SHA1(c454b26b6dea993e6bd64546f92beef05e46d7d7) )
1129 ROM_END
1130 
1131 ROM_START( galhustl )
1132 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */
1133 	ROM_LOAD16_BYTE( "ue17.3", 0x00000, 0x80000, CRC(b2583dbb) SHA1(536f4aa2246ec816c4f270f9d42acc090718ee8b) )
1134 	ROM_LOAD16_BYTE( "ud17.4", 0x00001, 0x80000, CRC(470a3668) SHA1(ad86e96ab8f1f5da23fb1feaabfb9c757965418e) )
1135 
1136 	ROM_REGION( 0x140000, REGION_SOUND1, 0 )	/* OKIM6295 samples */
1137 	/* 00000-2ffff is fixed, 30000-3ffff is bank switched from all the ROMs */
1138 	ROM_LOAD( "galhstl1.ub6", 0x00000, 0x80000,  CRC(23848790) SHA1(2e77fbe04f46e258daecb4c5917e383c7c06a306) )
1139 	ROM_RELOAD(               0x40000, 0x80000 )
1140 	ROM_LOAD( "galhstl2.uc6", 0xc0000, 0x80000,  CRC(2168e54a) SHA1(87534334b16d3ddc3daefcb1b8086aff44157ccf) )
1141 
1142 	ROM_REGION( 0x100000, REGION_GFX1, 0 )
1143 	ROM_LOAD( "galhstl5.u5", 0x00000, 0x80000, CRC(44a18f15) SHA1(1217cf7fbbb442358b15016099efeface5dcbd22) )
1144 ROM_END
1145 
1146 GAMEX( 1990, galpanic, 0,        galpanic, galpanic, 0, ROT90, "Kaneko", "Gals Panic (set 1)", GAME_NO_COCKTAIL )
1147 GAMEX( 1990, galpanib, galpanic, galpanib, galpanib, 0, ROT90, "Kaneko", "Gals Panic (set 2)", GAME_NO_COCKTAIL )
1148 GAMEX( 1994, fantasia, 0,        comad,    fantasia, 0, ROT90, "Comad and New Japan System", "Fantasia", GAME_NO_COCKTAIL )
1149 GAMEX( 1995, newfant,  0,        comad,    fantasia, 0, ROT90, "Comad and New Japan System", "New Fantasia", GAME_NO_COCKTAIL )
1150 GAMEX( 1995, fantsy95, 0,        comad,    fantasia, 0, ROT90, "Hi-max Technology Inc.", "Fantasy '95", GAME_NO_COCKTAIL )
1151 GAMEX( 1996, missw96,  0,        comad,    missw96,  0, ROT0,  "Comad", "Miss World '96 Nude", GAME_NO_COCKTAIL )
1152 GAMEX( 1997, fantsia2, 0,        fantsia2, missw96,  0, ROT0,  "Comad", "Fantasia II", GAME_NO_COCKTAIL )
1153 GAME(  1997, galhustl, 0,        galhustl, galhustl, 0, ROT0,  "ACE International", "Gals Hustler" )
1154