1 /*****************************************************************************
2 
3 	Irem M90/M97 system games:
4 
5 	Hasamu							1991 M90
6 	Bomberman						1992 M90
7 	Bomberman World / Atomic Punk	1992 M97
8 	Quiz F-1 1,2finish				1992 M97
9 	Risky Challenge / Gussun Oyoyo	1993 M97
10 	Shisensho II					1993 M97
11 
12 
13 	Uses M72 sound hardware.
14 
15 	Emulation by Bryan McPhail, mish@tendril.co.uk, thanks to Chris Hardy!
16 
17 Notes:
18 
19 - Samples are not played in bbmanw/atompunk.
20 
21 - Not sure about the clock speeds. In hasamu and quizf1 service mode, the
22   selection moves too fast with the clock set at 16 MHz. It's still fast at
23   8 MHz, but at least it's usable.
24 
25 *****************************************************************************/
26 
27 #include "driver.h"
28 #include "vidhrdw/generic.h"
29 #include "m92.h"
30 #include "machine/irem_cpu.h"
31 #include "sndhrdw/m72.h"
32 #include "state.h"
33 
34 static int bankaddress;
35 
36 extern unsigned char *m90_video_data;
37 
38 VIDEO_UPDATE( m90 );
39 VIDEO_UPDATE( m90_bootleg );
40 WRITE_HANDLER( m90_video_control_w );
41 WRITE_HANDLER( m90_video_w );
42 VIDEO_START( m90 );
43 
44 /***************************************************************************/
45 
set_m90_bank(void)46 static void set_m90_bank(void)
47 {
48 	data8_t *rom = memory_region(REGION_USER1);
49 
50 	if (!rom)
51 		usrintf_showmessage("bankswitch with no banked ROM!");
52 	else
53 		cpu_setbank(1,rom + bankaddress);
54 }
55 
56 /***************************************************************************/
57 
WRITE_HANDLER(m90_coincounter_w)58 static WRITE_HANDLER( m90_coincounter_w )
59 {
60 	if (offset==0)
61 	{
62 		coin_counter_w(0,data & 0x01);
63 		coin_counter_w(1,data & 0x02);
64 
65 		if (data&0xfe) logerror("Coin counter %02x\n",data);
66 	}
67 }
68 
WRITE_HANDLER(quizf1_bankswitch_w)69 static WRITE_HANDLER( quizf1_bankswitch_w )
70 {
71 	if (offset == 0)
72 	{
73 		bankaddress = 0x10000 * (data & 0x0f);
74 		set_m90_bank();
75 	}
76 }
77 
78 /***************************************************************************/
79 
MEMORY_READ_START(readmem)80 static MEMORY_READ_START( readmem )
81 	{ 0x00000, 0x7ffff, MRA_ROM },
82 	{ 0x80000, 0x8ffff, MRA_BANK1 },	/* Quiz F1 only */
83 	{ 0xa0000, 0xa3fff, MRA_RAM },
84 	{ 0xd0000, 0xdffff, MRA_RAM },
85 	{ 0xe0000, 0xe03ff, paletteram_r },
86 	{ 0xffff0, 0xfffff, MRA_ROM },
87 MEMORY_END
88 
89 static MEMORY_WRITE_START( writemem )
90 	{ 0x00000, 0x7ffff, MWA_ROM },
91 	{ 0x80000, 0x8ffff, MWA_ROM },	/* Quiz F1 only */
92 	{ 0xa0000, 0xa3fff, MWA_RAM },
93 	{ 0xd0000, 0xdffff, m90_video_w, &m90_video_data },
94 	{ 0xe0000, 0xe03ff, paletteram_xBBBBBGGGGGRRRRR_w, &paletteram },
95 	{ 0xffff0, 0xfffff, MWA_ROM },
96 MEMORY_END
97 
98 static MEMORY_READ_START( bootleg_readmem )
99 	{ 0x00000, 0x3ffff, MRA_ROM },
100 	{ 0x60000, 0x60fff, MRA_RAM },
101 	{ 0xa0000, 0xa3fff, MRA_RAM },
102 	{ 0xd0000, 0xdffff, MRA_RAM },
103 	{ 0xe0000, 0xe03ff, paletteram_r },
104 	{ 0xffff0, 0xfffff, MRA_ROM },
105 MEMORY_END
106 
107 static MEMORY_WRITE_START( bootleg_writemem )
108 	{ 0x00000, 0x3ffff, MWA_ROM },
109 	{ 0x6000e, 0x60fff, MWA_RAM, &spriteram },
110 	{ 0xa0000, 0xa3fff, MWA_RAM },
111 //	{ 0xd0000, 0xdffff, m90_bootleg_video_w, &m90_video_data },
112 	{ 0xe0000, 0xe03ff, paletteram_xBBBBBGGGGGRRRRR_w, &paletteram },
113 	{ 0xffff0, 0xfffff, MWA_ROM },
114 MEMORY_END
115 
116 static PORT_READ_START( readport )
117 	{ 0x00, 0x00, input_port_0_r }, /* Player 1 */
118 	{ 0x01, 0x01, input_port_1_r }, /* Player 2 */
119 	{ 0x02, 0x02, input_port_2_r }, /* Coins */
120 	{ 0x03, 0x03, MRA_NOP },		/* Unused?  High byte of above */
121 	{ 0x04, 0x04, input_port_3_r }, /* Dip 1 */
122 	{ 0x05, 0x05, input_port_4_r }, /* Dip 2 */
123 	{ 0x06, 0x06, input_port_5_r }, /* Player 3 */
124 	{ 0x07, 0x07, input_port_6_r }, /* Player 4 */
125 PORT_END
126 
127 static PORT_WRITE_START( writeport )
128 	{ 0x00, 0x01, m72_sound_command_w },
129 	{ 0x02, 0x03, m90_coincounter_w },
130 	{ 0x04, 0x05, quizf1_bankswitch_w },
131 	{ 0x80, 0x8f, m90_video_control_w },
132 PORT_END
133 
134 /*****************************************************************************/
135 
136 static MEMORY_READ_START( sound_readmem )
137 	{ 0x0000, 0xefff, MRA_ROM },
138 	{ 0xf000, 0xffff, MRA_RAM },
139 MEMORY_END
140 
141 static MEMORY_WRITE_START( sound_writemem )
142 	{ 0x0000, 0xefff, MWA_ROM },
143 	{ 0xf000, 0xffff, MWA_RAM },
144 MEMORY_END
145 
146 static PORT_READ_START( sound_readport )
147 	{ 0x01, 0x01, YM2151_status_port_0_r },
148 	{ 0x80, 0x80, soundlatch_r },
149 	{ 0x84, 0x84, m72_sample_r },
150 PORT_END
151 
152 static PORT_WRITE_START( sound_writeport )
153 	{ 0x00, 0x00, YM2151_register_port_0_w },
154 	{ 0x01, 0x01, YM2151_data_port_0_w },
155 	{ 0x80, 0x81, rtype2_sample_addr_w },
156 	{ 0x82, 0x82, m72_sample_w },
157 	{ 0x83, 0x83, m72_sound_irq_ack_w },
158 PORT_END
159 
160 static PORT_READ_START( bbmanw_sound_readport )
161 	{ 0x41, 0x41, YM2151_status_port_0_r },
162 	{ 0x42, 0x42, soundlatch_r },
163 //	{ 0x41, 0x41, m72_sample_r },
164 PORT_END
165 
166 static PORT_WRITE_START( bbmanw_sound_writeport )
167 	{ 0x40, 0x40, YM2151_register_port_0_w },
168 	{ 0x41, 0x41, YM2151_data_port_0_w },
169 	{ 0x42, 0x42, m72_sound_irq_ack_w },
170 //	{ 0x40, 0x41, rtype2_sample_addr_w },
171 //	{ 0x42, 0x42, m72_sample_w },
172 PORT_END
173 
174 /*****************************************************************************/
175 
176 
177 INPUT_PORTS_START( hasamu )
178 	IREM_JOYSTICK_1_2(1)
179 	IREM_JOYSTICK_1_2(2)
180 	IREM_COINS
181 
182 	PORT_START	/* Dip switch bank 1 */
183 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
184 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
185 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
186 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
187 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
188 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
189 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
190 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
191 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
192 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
193 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
194 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
195 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
196 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
197 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
198 	PORT_DIPNAME( 0x20, 0x20, "Allow Continue" )
199 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
200 	PORT_DIPSETTING(    0x20, DEF_STR( Yes ) )
201 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
202 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
203 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
204 	PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
205 
206 	PORT_START	/* Dip switch bank 2 */
207 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
208 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
209 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
210 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
211 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
212 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
213 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
214 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
215 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
216 	PORT_DIPNAME( 0x08, 0x08, "Coin Mode" )
217 	PORT_DIPSETTING(    0x08, "1" )
218 	PORT_DIPSETTING(    0x00, "2" )
219 	/* Coin Mode 1 */
220 	IREM_COIN_MODE_1_NEW
221 	/* Coin Mode 2, not supported yet */
222 //	IREM_COIN_MODE_2
223 INPUT_PORTS_END
224 
225 INPUT_PORTS_START( dynablst )
226 	IREM_JOYSTICK_1_2(1)
227 	IREM_JOYSTICK_1_2(2)
228 	IREM_COINS
229 
230 	PORT_START	/* Dip switch bank 1 */
231 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
232 	PORT_DIPSETTING(    0x02, "2" )
233 	PORT_DIPSETTING(    0x03, "3" )
234 	PORT_DIPSETTING(    0x01, "4" )
235 	PORT_DIPSETTING(    0x00, "5" )
236 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
237 	PORT_DIPSETTING(    0x08, "Easy" )
238 	PORT_DIPSETTING(    0x0c, "Medium" )
239 	PORT_DIPSETTING(    0x04, "Hard" )
240 	PORT_DIPSETTING(    0x00, "Hardest" )
241 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )	/* Manual says "NOT USE" */
242 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
243 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
244 	PORT_DIPNAME( 0x20, 0x20, "Allow Continue" )
245 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
246 	PORT_DIPSETTING(    0x20, DEF_STR( Yes ) )
247 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
248 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
249 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
250 	PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
251 
252 	PORT_START	/* Dip switch bank 2 */
253 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
254 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
255 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
256 	PORT_DIPNAME( 0x06, 0x06, DEF_STR( Cabinet ) )
257 	PORT_DIPSETTING(    0x04, "2 Player Upright" )
258 	PORT_DIPSETTING(    0x06, "4 Player Upright A" ) /* Seperate Coin Slots */
259 	PORT_DIPSETTING(    0x02, "4 Player Upright B" ) /* Shared Coin Slots */
260 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )  /* This setting shows screen with offset, no cocktail support :-( */
261 	PORT_DIPNAME( 0x08, 0x08, "Coin Mode" )
262 	PORT_DIPSETTING(    0x08, "1" )
263 	PORT_DIPSETTING(    0x00, "2" )
264 	/* Coin Mode 1 */
265 	IREM_COIN_MODE_1_NEW
266 	/* Coin Mode 2, not supported yet */
267 //	IREM_COIN_MODE_2
268 
269 	IREM_JOYSTICK_3_4(3)
270 	IREM_JOYSTICK_3_4(4)
271 INPUT_PORTS_END
272 
273 INPUT_PORTS_START( bombrman ) /* Does not appear to support 4 players or cocktail mode */
274 	IREM_JOYSTICK_1_2(1)
275 	IREM_JOYSTICK_1_2(2)
276 	IREM_COINS
277 
278 	PORT_START	/* Dip switch bank 1 */
279 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
280 	PORT_DIPSETTING(    0x02, "2" )
281 	PORT_DIPSETTING(    0x03, "3" )
282 	PORT_DIPSETTING(    0x01, "4" )
283 	PORT_DIPSETTING(    0x00, "5" )
284 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
285 	PORT_DIPSETTING(    0x08, "Easy" )
286 	PORT_DIPSETTING(    0x0c, "Medium" )
287 	PORT_DIPSETTING(    0x04, "Hard" )
288 	PORT_DIPSETTING(    0x00, "Hardest" )
289 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )	/* Manual says "NOT USE" */
290 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
291 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
292 	PORT_DIPNAME( 0x20, 0x20, "Allow Continue" )
293 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
294 	PORT_DIPSETTING(    0x20, DEF_STR( Yes ) )
295 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
296 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
297 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
298 	PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
299 
300 	PORT_START	/* Dip switch bank 2 */
301 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
302 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
303 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
304 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )	/* Manual says "NOT USE" */
305 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
306 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
307 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )	/* Manual says "NOT USE" */
308 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
309 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
310 	PORT_DIPNAME( 0x08, 0x08, "Coin Mode" )
311 	PORT_DIPSETTING(    0x08, "1" )
312 	PORT_DIPSETTING(    0x00, "2" )
313 	/* Coin Mode 1 */
314 	IREM_COIN_MODE_1_NEW
315 	/* Coin Mode 2, not supported yet */
316 //	IREM_COIN_MODE_2
317 INPUT_PORTS_END
318 
319 INPUT_PORTS_START( bbmanw )
320 	IREM_JOYSTICK_1_2(1)
321 	IREM_JOYSTICK_1_2(2)
322 	IREM_COINS
323 
324 	PORT_START	/* Dip switch bank 1 */
325 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
326 	PORT_DIPSETTING(    0x02, "2" )
327 	PORT_DIPSETTING(    0x03, "3" )
328 	PORT_DIPSETTING(    0x01, "4" )
329 	PORT_DIPSETTING(    0x00, "5" )
330 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
331 	PORT_DIPSETTING(    0x08, "Easy" )
332 	PORT_DIPSETTING(    0x0c, "Medium" )
333 	PORT_DIPSETTING(    0x04, "Hard" )
334 	PORT_DIPSETTING(    0x00, "Hardest" )
335 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
336 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
337 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
338 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
339 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
340 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
341 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
342 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
343 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
344 	PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
345 
346 	PORT_START	/* Dip switch bank 2 */
347 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
348 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
349 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
350 	PORT_DIPNAME( 0x06, 0x06, DEF_STR( Cabinet ) )
351 	PORT_DIPSETTING(    0x04, "2 Player" )
352 	PORT_DIPSETTING(    0x06, "4 Player Seprate Coins" )		/* Each player has a seperate Coin Slot */
353 	PORT_DIPSETTING(    0x02, "4 Player Shared Coins" )		/* All 4 players Share coin 1&2 */
354 	PORT_DIPSETTING(    0x00, "4 Player 1&2 3&4 Share Coins" )	/* Players 1&2 share coin 1&2, Players 3&4 share coin 3&4 */
355 	PORT_DIPNAME( 0x08, 0x08, "Coin Mode" )
356 	PORT_DIPSETTING(    0x08, "1" )
357 	PORT_DIPSETTING(    0x00, "2" )
358 	/* Coin Mode 1 */
359 	IREM_COIN_MODE_1_NEW
360 	/* Coin Mode 2, not supported yet */
361 //	IREM_COIN_MODE_2
362 
363 	IREM_JOYSTICK_3_4(3)
364 	IREM_JOYSTICK_3_4(4)
365 INPUT_PORTS_END
366 
367 INPUT_PORTS_START( quizf1 )
368 	PORT_START
369 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
370 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
371 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
372 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
373 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )
374 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
375 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
376 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
377 	PORT_START
378 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
379 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
380 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
381 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
382 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 )
383 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
384 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
385 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
386 	IREM_COINS
387 
388 	PORT_START	/* Dip switch bank 1 */
389 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
390 	PORT_DIPSETTING(    0x02, "2" )
391 	PORT_DIPSETTING(    0x03, "3" )
392 	PORT_DIPSETTING(    0x01, "4" )
393 	PORT_DIPSETTING(    0x00, "5" )
394 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) /* Probably difficulty */
395 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
396 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
397 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
398 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
399 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
400 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
401 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
402 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
403 	PORT_DIPNAME( 0x20, 0x00, "Input Device" )	/* input related (joystick/buttons select?) */
404 	PORT_DIPSETTING(    0x20, "Joystick" )
405 	PORT_DIPSETTING(    0x00, "Buttons" )
406 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
407 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
408 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
409 	PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
410 
411 	PORT_START	/* Dip switch bank 2 */
412 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
413 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
414 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
415 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
416 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
417 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
418 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
419 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
420 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
421 	PORT_DIPNAME( 0x08, 0x08, "Coin Mode" )
422 	PORT_DIPSETTING(    0x08, "1" )
423 	PORT_DIPSETTING(    0x00, "2" )
424 	/* Coin Mode 1 */
425 	IREM_COIN_MODE_1_NEW
426 	/* Coin Mode 2, not supported yet */
427 //	IREM_COIN_MODE_2
428 INPUT_PORTS_END
429 
430 INPUT_PORTS_START( m97 )
431 	IREM_JOYSTICK_1_2(1)
432 	IREM_JOYSTICK_1_2(2)
433 	IREM_COINS
434 
435 	PORT_START	/* Dip switch bank 1 */
436 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
437 	PORT_DIPSETTING(    0x02, "2" )
438 	PORT_DIPSETTING(    0x03, "3" )
439 	PORT_DIPSETTING(    0x01, "4" )
440 	PORT_DIPSETTING(    0x00, "5" )
441 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) /* Probably difficulty */
442 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
443 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
444 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
445 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
446 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
447 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
448 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
449 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
450 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
451 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
452 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
453 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
454 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
455 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
456 	PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
457 
458 	PORT_START	/* Dip switch bank 2 */
459 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
460 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
461 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
462 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
463 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
464 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
465 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
466 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
467 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
468 	PORT_DIPNAME( 0x08, 0x08, "Coin Mode" )
469 	PORT_DIPSETTING(    0x08, "1" )
470 	PORT_DIPSETTING(    0x00, "2" )
471 	/* Coin Mode 1 */
472 	IREM_COIN_MODE_1_NEW
473 	/* Coin Mode 2, not supported yet */
474 //	IREM_COIN_MODE_2
475 INPUT_PORTS_END
476 
477 /*****************************************************************************/
478 
479 static struct GfxLayout charlayout =
480 {
481 	8,8,
482 	RGN_FRAC(1,4),
483 	4,
484 	{ RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
485 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
486 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
487 	8*8
488 };
489 
490 static struct GfxLayout spritelayout =
491 {
492 	16,16,
493 	RGN_FRAC(1,4),
494 	4,
495 	{ RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
496 	{ 0, 1, 2, 3, 4, 5, 6, 7,
497 		16*8+0, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+7 },
498 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
499 			8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
500 	32*8
501 };
502 
503 static struct GfxDecodeInfo gfxdecodeinfo[] =
504 {
505 	{ REGION_GFX1, 0, &charlayout,     0, 16 },
506 	{ REGION_GFX1, 0, &spritelayout, 256, 16 },
507 	{ -1 } /* end of array */
508 };
509 
510 /*****************************************************************************/
511 
512 static struct YM2151interface ym2151_interface =
513 {
514 	1,			/* 1 chip */
515 	3579545,	/* 3.579545 MHz */
516 	{ YM3012_VOL(90,MIXER_PAN_LEFT,90,MIXER_PAN_RIGHT) },
517 	{ m72_ym2151_irq_handler },
518 	{ 0 }
519 };
520 
521 static struct DACinterface dac_interface =
522 {
523 	1,	/* 1 channel */
524 	{ 60 }
525 };
526 
INTERRUPT_GEN(m90_interrupt)527 static INTERRUPT_GEN( m90_interrupt )
528 {
529 	cpu_set_irq_line_and_vector(0, 0, HOLD_LINE, 0x60/4);
530 }
531 
532 
533 
534 static MACHINE_DRIVER_START( m90 )
535 
536 	/* basic machine hardware */
537 	MDRV_CPU_ADD(V30,32000000/4)	/* 8 MHz ??????? */
MDRV_CPU_MEMORY(readmem,writemem)538 	MDRV_CPU_MEMORY(readmem,writemem)
539 	MDRV_CPU_PORTS(readport,writeport)
540 	MDRV_CPU_VBLANK_INT(m90_interrupt,1)
541 
542 	MDRV_CPU_ADD(Z80, 3579545)
543 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 3.579545 MHz */
544 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
545 	MDRV_CPU_PORTS(sound_readport,sound_writeport)
546 	MDRV_CPU_VBLANK_INT(nmi_line_pulse,128)	/* clocked by V1? (Vigilante) */
547 								/* IRQs are generated by main Z80 and YM2151 */
548 	MDRV_FRAMES_PER_SECOND(60)
549 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
550 
551 	MDRV_MACHINE_INIT(m72_sound)
552 
553 	/* video hardware */
554 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
555 	MDRV_SCREEN_SIZE(64*8, 64*8)
556 	MDRV_VISIBLE_AREA(6*8, 54*8-1, 17*8, 47*8-1)
557 	MDRV_GFXDECODE(gfxdecodeinfo)
558 	MDRV_PALETTE_LENGTH(512)
559 
560 	MDRV_VIDEO_START(m90)
561 	MDRV_VIDEO_UPDATE(m90)
562 
563 	/* sound hardware */
564 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
565 	MDRV_SOUND_ADD(DAC, dac_interface)
566 MACHINE_DRIVER_END
567 
568 static MACHINE_DRIVER_START( quizf1 )
569 
570 	MDRV_IMPORT_FROM( m90 )
571 	MDRV_VISIBLE_AREA(6*8, 54*8-1, 17*8-8, 47*8-1+8)
572 
573 MACHINE_DRIVER_END
574 
575 
576 static MACHINE_DRIVER_START( bombrman )
577 
578 	/* basic machine hardware */
579 	MDRV_CPU_ADD(V30,32000000/4)	/* 8 MHz ??????? */
580 	MDRV_CPU_MEMORY(readmem,writemem)
581 	MDRV_CPU_PORTS(readport,writeport)
582 	MDRV_CPU_VBLANK_INT(m90_interrupt,1)
583 
584 	MDRV_CPU_ADD(Z80, 3579545)
585 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 3.579545 MHz */
586 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
587 	MDRV_CPU_PORTS(sound_readport,sound_writeport)
588 	MDRV_CPU_VBLANK_INT(nmi_line_pulse,128)	/* clocked by V1? (Vigilante) */
589 								/* IRQs are generated by main Z80 and YM2151 */
590 	MDRV_FRAMES_PER_SECOND(60)
591 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
592 	MDRV_MACHINE_INIT(m72_sound)
593 
594 	/* video hardware */
595 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
596 	MDRV_SCREEN_SIZE(64*8, 64*8)
597 	MDRV_VISIBLE_AREA(10*8, 50*8-1, 17*8, 47*8-1)
598 	MDRV_GFXDECODE(gfxdecodeinfo)
599 	MDRV_PALETTE_LENGTH(512)
600 
601 	MDRV_VIDEO_START(m90)
602 	MDRV_VIDEO_UPDATE(m90)
603 
604 	/* sound hardware */
605 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
606 	MDRV_SOUND_ADD(DAC, dac_interface)
607 MACHINE_DRIVER_END
608 
609 
610 static MACHINE_DRIVER_START( bbmanw )
611 
612 	/* basic machine hardware */
613 	MDRV_CPU_ADD(V30,32000000/4)	/* 8 MHz ??????? */
614 	MDRV_CPU_MEMORY(readmem,writemem)
615 	MDRV_CPU_PORTS(readport,writeport)
616 	MDRV_CPU_VBLANK_INT(m90_interrupt,1)
617 
618 	MDRV_CPU_ADD(Z80, 3579545)
619 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 3.579545 MHz */
620 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
621 	MDRV_CPU_PORTS(bbmanw_sound_readport,bbmanw_sound_writeport)
622 	MDRV_CPU_VBLANK_INT(nmi_line_pulse,128)	/* clocked by V1? (Vigilante) */
623 								/* IRQs are generated by main Z80 and YM2151 */
624 	MDRV_FRAMES_PER_SECOND(60)
625 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
626 	MDRV_MACHINE_INIT(m72_sound)
627 
628 	/* video hardware */
629 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
630 	MDRV_SCREEN_SIZE(64*8, 64*8)
631 	MDRV_VISIBLE_AREA(10*8, 50*8-1, 17*8, 47*8-1)
632 	MDRV_GFXDECODE(gfxdecodeinfo)
633 	MDRV_PALETTE_LENGTH(512)
634 
635 	MDRV_VIDEO_START(m90)
636 	MDRV_VIDEO_UPDATE(m90)
637 
638 	/* sound hardware */
639 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
640 	MDRV_SOUND_ADD(DAC, dac_interface)
641 MACHINE_DRIVER_END
642 
643 
644 static MACHINE_DRIVER_START( bootleg )
645 
646 	/* basic machine hardware */
647 	MDRV_CPU_ADD(V30,32000000/4)	/* 16 MHz */
648 	MDRV_CPU_MEMORY(bootleg_readmem,bootleg_writemem)
649 	MDRV_CPU_PORTS(readport,writeport)
650 	MDRV_CPU_VBLANK_INT(m90_interrupt,1)
651 
652 	MDRV_CPU_ADD(Z80, 3579545)
653 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 3.579545 MHz */
654 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
655 	MDRV_CPU_PORTS(sound_readport,sound_writeport)
656 	MDRV_CPU_VBLANK_INT(nmi_line_pulse,128)	/* clocked by V1? (Vigilante) */
657 								/* IRQs are generated by main Z80 and YM2151 */
658 	MDRV_FRAMES_PER_SECOND(60)
659 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
660 	MDRV_MACHINE_INIT(m72_sound)
661 
662 	/* video hardware */
663 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
664 	MDRV_SCREEN_SIZE(320, 240)
665 	MDRV_VISIBLE_AREA(0, 319, 0, 239)
666 	MDRV_GFXDECODE(gfxdecodeinfo)
667 	MDRV_PALETTE_LENGTH(512)
668 
669 	MDRV_VIDEO_START(m90)
670 	MDRV_VIDEO_UPDATE(m90)
671 
672 	/* sound hardware */
673 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
674 	MDRV_SOUND_ADD(DAC, dac_interface)
675 MACHINE_DRIVER_END
676 
677 /***************************************************************************/
678 
679 #define CODE_SIZE 0x100000
680 
681 ROM_START( hasamu )
682 	ROM_REGION( CODE_SIZE * 2, REGION_CPU1, 0 )
683 	ROM_LOAD16_BYTE( "hasc-p1.bin",  0x00001, 0x20000, CRC(53df9834) SHA1(2e7e38157a497e3def69c4abcae5803f71a098da) )
684 	ROM_LOAD16_BYTE( "hasc-p0.bin",  0x00000, 0x20000, CRC(dff0ba6e) SHA1(83e20b3ae10b57c1e58d3d44bfca2ffd5f142056) )
685 	ROM_COPY( REGION_CPU1, 0x3fff0,  0xffff0, 0x10 )	/* start vector */
686 
687 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
688 	ROM_LOAD( "hasc-sp.bin",    0x0000, 0x10000, CRC(259b1687) SHA1(39c3a89b1d0f5fec2a94a3048cc4639fe96820e2) )
689 
690 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
691 	ROM_LOAD( "hasc-c0.bin",    0x000000, 0x20000, CRC(dd5a2174) SHA1(c28499419f961d126a838dd1390db74c1475ee02) )
692 	ROM_LOAD( "hasc-c1.bin",    0x020000, 0x20000, CRC(76b8217c) SHA1(8b21562875d856a1ce4863f325d049090f5716ae) )
693 	ROM_LOAD( "hasc-c2.bin",    0x040000, 0x20000, CRC(d90f9a68) SHA1(c9eab3e87dd5d3eb88461be493d88f5482c9e257) )
694 	ROM_LOAD( "hasc-c3.bin",    0x060000, 0x20000, CRC(6cfe0d39) SHA1(104feeacbbc86b168c41cd37fc5797781d9b5a0f) )
695 
696 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )	/* samples */
697 	/* No samples */
698 ROM_END
699 
700 ROM_START( bombrman )
701 	ROM_REGION( CODE_SIZE * 2, REGION_CPU1, 0 )
702 	ROM_LOAD16_BYTE( "bbm-p1.bin",   0x00001, 0x20000, CRC(982bd166) SHA1(ed67393ec319127616bff5fa3b7f84e8ac8e1d93) )
703 	ROM_LOAD16_BYTE( "bbm-p0.bin",   0x00000, 0x20000, CRC(0a20afcc) SHA1(a42b7458938300b0c84c820c1ea627aed9080f1b) )
704 	ROM_COPY( REGION_CPU1, 0x3fff0,  0xffff0, 0x10 )	/* start vector */
705 
706 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
707 	ROM_LOAD( "bbm-sp.bin",    0x0000, 0x10000, CRC(251090cd) SHA1(9245072c1afbfa3e4a1d1549942765d58bd78ed3) )
708 
709 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )
710 	ROM_LOAD( "bbm-c0.bin",    0x000000, 0x40000, CRC(695d2019) SHA1(3537e9fb0e7dc13d6113b4af71cba3c73392335a) )
711 	ROM_LOAD( "bbm-c1.bin",    0x040000, 0x40000, CRC(4c7c8bbc) SHA1(31ab5557d96c4184a9c02ed1c309f3070d148e25) )
712 	ROM_LOAD( "bbm-c2.bin",    0x080000, 0x40000, CRC(0700d406) SHA1(0d43a31a726b0de0004beef41307de2508106b69) )
713 	ROM_LOAD( "bbm-c3.bin",    0x0c0000, 0x40000, CRC(3c3613af) SHA1(f9554a73e95102333e449f6e81f2bb817ec00881) )
714 
715 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )	/* samples */
716 	ROM_LOAD( "bbm-v0.bin",    0x0000, 0x20000, CRC(0fa803fe) SHA1(d2ac1e624de38bed385442ceae09a76f203fa084) )
717 ROM_END
718 
719 
720 ROM_START( dynablst )
721 	ROM_REGION( CODE_SIZE * 2, REGION_CPU1, 0 )
722 	ROM_LOAD16_BYTE( "bbm-cp1e.d10",   0x00001, 0x20000, CRC(27667681) SHA1(7d5f762026ea01817a65ea13b4b5793640e3e8fd) )
723 	ROM_LOAD16_BYTE( "bbm-cp0e.bin",   0x00000, 0x20000, CRC(95db7a67) SHA1(1a224d73615a60530cbcc54fdbb526e8d5a6c555) )
724 	ROM_COPY( REGION_CPU1, 0x3fff0,  0xffff0, 0x10 )	/* start vector */
725 
726 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
727 	ROM_LOAD( "bbm-sp.bin",    0x0000, 0x10000, CRC(251090cd) SHA1(9245072c1afbfa3e4a1d1549942765d58bd78ed3) )
728 
729 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )
730 	ROM_LOAD( "bbm-c0.bin",    0x000000, 0x40000, CRC(695d2019) SHA1(3537e9fb0e7dc13d6113b4af71cba3c73392335a) )
731 	ROM_LOAD( "bbm-c1.bin",    0x040000, 0x40000, CRC(4c7c8bbc) SHA1(31ab5557d96c4184a9c02ed1c309f3070d148e25) )
732 	ROM_LOAD( "bbm-c2.bin",    0x080000, 0x40000, CRC(0700d406) SHA1(0d43a31a726b0de0004beef41307de2508106b69) )
733 	ROM_LOAD( "bbm-c3.bin",    0x0c0000, 0x40000, CRC(3c3613af) SHA1(f9554a73e95102333e449f6e81f2bb817ec00881) )
734 
735 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )	/* samples */
736 	ROM_LOAD( "bbm-v0.bin",    0x0000, 0x20000, CRC(0fa803fe) SHA1(d2ac1e624de38bed385442ceae09a76f203fa084) )
737 ROM_END
738 
739 ROM_START( dynablsb )
740 	ROM_REGION( 0x100000, REGION_CPU1, 0 )
741 	ROM_LOAD16_BYTE( "db2-26.bin",   0x00001, 0x20000, CRC(a78c72f8) SHA1(e3ed1bce0278bada6357b5d0823511fa0241f3cd) )
742 	ROM_LOAD16_BYTE( "db3-25.bin",   0x00000, 0x20000, CRC(bf3137c3) SHA1(64bbca4b3a509b552ee8a19b3b50fe6638fd90e2) )
743 	ROM_COPY( REGION_CPU1, 0x3fff0,  0xffff0, 0x10 )	/* start vector */
744 
745 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
746 	ROM_LOAD( "db1-17.bin",    0x0000, 0x10000, CRC(e693c32f) SHA1(b6f228d26318718eedae765de9479706a3e4c38d) )
747 
748 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )
749 	ROM_LOAD( "bbm-c0.bin",    0x000000, 0x40000, CRC(695d2019) SHA1(3537e9fb0e7dc13d6113b4af71cba3c73392335a) )
750 	ROM_LOAD( "bbm-c1.bin",    0x040000, 0x40000, CRC(4c7c8bbc) SHA1(31ab5557d96c4184a9c02ed1c309f3070d148e25) )
751 	ROM_LOAD( "bbm-c2.bin",    0x080000, 0x40000, CRC(0700d406) SHA1(0d43a31a726b0de0004beef41307de2508106b69) )
752 	ROM_LOAD( "bbm-c3.bin",    0x0c0000, 0x40000, CRC(3c3613af) SHA1(f9554a73e95102333e449f6e81f2bb817ec00881) )
753 
754 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )	/* samples */
755 	/* Does this have a sample rom? */
756 ROM_END
757 
758 ROM_START( bbmanw )
759 	ROM_REGION( CODE_SIZE * 2, REGION_CPU1, 0 )
760 	ROM_LOAD16_BYTE( "db_h0-b.rom",  0x00001, 0x40000, CRC(567d3709) SHA1(1447fc68798589a8757ee2d133d053b80f052113) )
761 	ROM_LOAD16_BYTE( "db_l0-b.rom",  0x00000, 0x40000, CRC(e762c22b) SHA1(b389a65adf1348e6529a992d9b68178d7503238e) )
762 	ROM_COPY( REGION_CPU1, 0x7fff0,  0xffff0, 0x10 )	/* start vector */
763 
764 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
765 	ROM_LOAD( "db_sp.rom",    0x0000, 0x10000, CRC(6bc1689e) SHA1(099c275632965e19eb6131863f69d2afa9916e90) )
766 
767 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
768 	ROM_LOAD( "bbm2_c0.bin",  0x000000, 0x40000, CRC(e7ce058a) SHA1(f2336718ecbce4771f27abcdc4d28fe91c702a9e) )
769 	ROM_LOAD( "bbm2_c1.bin",  0x080000, 0x40000, CRC(636a78a9) SHA1(98562ea056e5bd36c1a094ae6f267367236d166f) )
770 	ROM_LOAD( "bbm2_c2.bin",  0x100000, 0x40000, CRC(9ac2142f) SHA1(744fe1acae2fcba0051c303b644081546b4aed9e) )
771 	ROM_LOAD( "bbm2_c3.bin",  0x180000, 0x40000, CRC(47af1750) SHA1(dce176a6ca95852208b6eba7fb88a0d96467c34b) )
772 
773 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )
774 	ROM_LOAD( "db_w04m.rom",    0x0000, 0x20000, CRC(4ad889ed) SHA1(b685892a2348f17f89c6d6ce91216f6cf1e33751) )
775 ROM_END
776 
777 ROM_START( bbmanwj )
778 	ROM_REGION( CODE_SIZE * 2, REGION_CPU1, 0 )
779 	ROM_LOAD16_BYTE( "bbm2_h0.bin",  0x00001, 0x40000, CRC(e1407b91) SHA1(6c94afc6b1d2a469295890ee5dd9d9d5a02ae5c4) )
780 	ROM_LOAD16_BYTE( "bbm2_l0.bin",  0x00000, 0x40000, CRC(20873b49) SHA1(30ae595f7961cd56f2506608ae76973b2d0e73ca) )
781 	ROM_COPY( REGION_CPU1, 0x7fff0,  0xffff0, 0x10 )	/* start vector */
782 
783 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
784 	ROM_LOAD( "bbm2sp-b.bin", 0x0000, 0x10000, CRC(b8d8108c) SHA1(ef4fb46d843819c273db2083754eb312f5abd44e) )
785 
786 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
787 	ROM_LOAD( "bbm2_c0.bin",  0x000000, 0x40000, CRC(e7ce058a) SHA1(f2336718ecbce4771f27abcdc4d28fe91c702a9e) )
788 	ROM_LOAD( "bbm2_c1.bin",  0x080000, 0x40000, CRC(636a78a9) SHA1(98562ea056e5bd36c1a094ae6f267367236d166f) )
789 	ROM_LOAD( "bbm2_c2.bin",  0x100000, 0x40000, CRC(9ac2142f) SHA1(744fe1acae2fcba0051c303b644081546b4aed9e) )
790 	ROM_LOAD( "bbm2_c3.bin",  0x180000, 0x40000, CRC(47af1750) SHA1(dce176a6ca95852208b6eba7fb88a0d96467c34b) )
791 
792 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )	/* samples */
793 	ROM_LOAD( "bbm2_vo.bin",  0x0000, 0x20000, CRC(0ae655ff) SHA1(78752182662fd8f5b55bbbc2787c9f2b04096ea1) )
794 ROM_END
795 
796 ROM_START( atompunk )
797 	ROM_REGION( CODE_SIZE * 2, REGION_CPU1, 0 )
798 	ROM_LOAD16_BYTE( "bm2-ho-a.9f",  0x00001, 0x40000, CRC(7d858682) SHA1(03580e2903becb69766023585c6ecffbb8e0b9c5) )
799 	ROM_LOAD16_BYTE( "bm2-lo-a.9k",  0x00000, 0x40000, CRC(c7568031) SHA1(ff4d0809260a088f530098a0173eec16fa6396f1) )
800 	ROM_COPY( REGION_CPU1, 0x7fff0,  0xffff0, 0x10 )	/* start vector */
801 
802 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
803 	ROM_LOAD( "db_sp.rom",             0x0000, 0x10000, CRC(6bc1689e) SHA1(099c275632965e19eb6131863f69d2afa9916e90) )
804 
805 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
806 	ROM_LOAD( "bbm2_c0.bin",  0x000000, 0x40000, CRC(e7ce058a) SHA1(f2336718ecbce4771f27abcdc4d28fe91c702a9e) )
807 	ROM_LOAD( "bbm2_c1.bin",  0x080000, 0x40000, CRC(636a78a9) SHA1(98562ea056e5bd36c1a094ae6f267367236d166f) )
808 	ROM_LOAD( "bbm2_c2.bin",  0x100000, 0x40000, CRC(9ac2142f) SHA1(744fe1acae2fcba0051c303b644081546b4aed9e) )
809 	ROM_LOAD( "bbm2_c3.bin",  0x180000, 0x40000, CRC(47af1750) SHA1(dce176a6ca95852208b6eba7fb88a0d96467c34b) )
810 
811 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )	/* samples */
812 	ROM_LOAD( "db_w04m.rom",           0x0000, 0x20000, CRC(4ad889ed) SHA1(b685892a2348f17f89c6d6ce91216f6cf1e33751) )
813 ROM_END
814 
815 ROM_START( quizf1 )
816 	ROM_REGION( CODE_SIZE * 2, REGION_CPU1, 0 )
817 	ROM_LOAD16_BYTE( "qf1-h0-.77",   0x000001, 0x40000, CRC(280e3049) SHA1(3b1f303d803f844fd260ed93e4d12a72876e4dbe) )
818 	ROM_LOAD16_BYTE( "qf1-l0-.79",   0x000000, 0x40000, CRC(94588a6f) SHA1(ee912739c7719fc2b099da0c63f7473eedcfc718) )
819 	ROM_COPY( REGION_CPU1, 0x7fff0,  0xffff0, 0x10 )	/* start vector */
820 
821 	ROM_REGION( 0x100000, REGION_USER1, 0 )
822 	ROM_LOAD16_BYTE( "qf1-h1-.78",   0x000001, 0x80000, CRC(c6c2eb2b) SHA1(83de08b0c72da8c3e4786063802d83cb1015032a) )	/* banked at 80000-8FFFF */
823 	ROM_LOAD16_BYTE( "qf1-l1-.80",   0x000000, 0x80000, CRC(3132c144) SHA1(de3ae35cdfbb1231cab343142ac700df00f9b77a) )
824 
825 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
826 	ROM_LOAD( "qf1-sp-.33",   0x0000, 0x10000, CRC(0664fa9f) SHA1(db003beb4f8461bf4411efa8df9f700770fb153b) )
827 
828 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
829 	ROM_LOAD( "qf1-c0-.81",   0x000000, 0x80000, CRC(c26b521e) SHA1(eb5d33a21d1f82e361e0c0945abcf42562c32f03) )
830 	ROM_LOAD( "qf1-c1-.82",   0x080000, 0x80000, CRC(db9d7394) SHA1(06b41288c41df8ae0cafb53e77b519d0419cf1d9) )
831 	ROM_LOAD( "qf1-c2-.83",   0x100000, 0x80000, CRC(0b1460ae) SHA1(c6394e6bb2a4e3722c20d9f291cb6ba7aad5766d) )
832 	ROM_LOAD( "qf1-c3-.84",   0x180000, 0x80000, CRC(2d32ff37) SHA1(f414f6bad1ffc4396fd757155e602bdefdc99408) )
833 
834 	ROM_REGION( 0x40000, REGION_SOUND1, 0 )	/* samples */
835 	ROM_LOAD( "qf1-v0-.30",   0x0000, 0x40000, CRC(b8d16e7c) SHA1(28a20afb171dc68848f9fe793f53571d4c7502dd) )
836 ROM_END
837 
838 ROM_START( riskchal )
839 	ROM_REGION( CODE_SIZE * 2, REGION_CPU1, 0 )
840 	ROM_LOAD16_BYTE( "rc_h0.rom",    0x00001, 0x40000, CRC(4c9b5344) SHA1(61e26950a672c6404e2386acdd098536b61b9933) )
841 	ROM_LOAD16_BYTE( "rc_l0.rom",    0x00000, 0x40000, CRC(0455895a) SHA1(1072b8d280f7ccc48cd8fbd81323e1f8c8d0db95) )
842 	ROM_COPY( REGION_CPU1, 0x7fff0,  0xffff0, 0x10 )	/* start vector */
843 
844 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
845 	ROM_LOAD( "rc_sp.rom",    0x0000, 0x10000, CRC(bb80094e) SHA1(1c62e702c395b7ebb666a79af1912b270d5f95aa) )
846 
847 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
848 	ROM_LOAD( "rc_c0.rom",    0x000000, 0x80000, CRC(84d0b907) SHA1(a686ccd67d068e5e4ba41bb8b73fdc1cad8eb5ee) )
849 	ROM_LOAD( "rc_c1.rom",    0x080000, 0x80000, CRC(cb3784ef) SHA1(51b8cdc35c8f3b452939ab6023a15f1c7e1a4423) )
850 	ROM_LOAD( "rc_c2.rom",    0x100000, 0x80000, CRC(687164d7) SHA1(0f0beb0a85ae5ae4434d1e45a27bbe67f5ee378a) )
851 	ROM_LOAD( "rc_c3.rom",    0x180000, 0x80000, CRC(c86be6af) SHA1(c8a66b8b38a62e3eebb4a0e65a85e20f91182097) )
852 
853 	ROM_REGION( 0x40000, REGION_SOUND1, 0 )	/* samples */
854 	ROM_LOAD( "rc_v0.rom",    0x0000, 0x40000, CRC(cddac360) SHA1(a3b18325991473c6d54b778a02bed86180aad37c) )
855 ROM_END
856 
857 ROM_START( gussun )
858 	ROM_REGION( CODE_SIZE * 2, REGION_CPU1, 0 )
859 	ROM_LOAD16_BYTE( "l4_h0.rom",    0x00001, 0x40000, CRC(9d585e61) SHA1(e108a9dc2dc1b75c1439271a2391f943c3a53fe1) )
860 	ROM_LOAD16_BYTE( "l4_l0.rom",    0x00000, 0x40000, CRC(c7b4c519) SHA1(44887ccf54f5e507d2db4f09a7c2b7b9ea217058) )
861 	ROM_COPY( REGION_CPU1, 0x7fff0,  0xffff0, 0x10 )	/* start vector */
862 
863 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
864 	ROM_LOAD( "rc_sp.rom",    0x0000, 0x10000, CRC(bb80094e) SHA1(1c62e702c395b7ebb666a79af1912b270d5f95aa) )
865 
866 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
867 	ROM_LOAD( "rc_c0.rom",    0x000000, 0x80000, CRC(84d0b907) SHA1(a686ccd67d068e5e4ba41bb8b73fdc1cad8eb5ee) )
868 	ROM_LOAD( "rc_c1.rom",    0x080000, 0x80000, CRC(cb3784ef) SHA1(51b8cdc35c8f3b452939ab6023a15f1c7e1a4423) )
869 	ROM_LOAD( "rc_c2.rom",    0x100000, 0x80000, CRC(687164d7) SHA1(0f0beb0a85ae5ae4434d1e45a27bbe67f5ee378a) )
870 	ROM_LOAD( "rc_c3.rom",    0x180000, 0x80000, CRC(c86be6af) SHA1(c8a66b8b38a62e3eebb4a0e65a85e20f91182097) )
871 
872 	ROM_REGION( 0x40000, REGION_SOUND1, 0 )	/* samples */
873 	ROM_LOAD( "rc_v0.rom",    0x0000, 0x40000, CRC(cddac360) SHA1(a3b18325991473c6d54b778a02bed86180aad37c) )
874 ROM_END
875 
876 ROM_START( shisen2 )
877 	ROM_REGION( CODE_SIZE * 2, REGION_CPU1, 0 )
878 	ROM_LOAD16_BYTE( "sis2-ho-.rom", 0x00001, 0x40000, CRC(6fae0aea) SHA1(7ebecbfdb17e15b8c0ebd293cd42a618c596782e) )
879 	ROM_LOAD16_BYTE( "sis2-lo-.rom", 0x00000, 0x40000, CRC(2af25182) SHA1(ec6dcc3913e1b7e7a3958b78610e83f51c404e07) )
880 	ROM_COPY( REGION_CPU1, 0x7fff0,  0xffff0, 0x10 )	/* start vector */
881 
882 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
883 	ROM_LOAD( "sis2-sp-.rom", 0x0000, 0x10000, CRC(6fc0ff3a) SHA1(2b8c648c1fb5d516552fc260b8f18ffd56bbe062) )
884 
885 	ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
886 	ROM_LOAD( "ic81.rom",     0x000000, 0x80000, CRC(5a7cb88f) SHA1(ce3befcd956b803655b261c2ece911f444aa3a13) )
887 	ROM_LOAD( "ic82.rom",     0x080000, 0x80000, CRC(54a7852c) SHA1(887e7543f09d00323ce1986e72c5613dde1dc6cc) )
888 	ROM_LOAD( "ic83.rom",     0x100000, 0x80000, CRC(2bd65dc6) SHA1(b50dec707ea5a71972df0a8dc47141d75e8f874e) )
889 	ROM_LOAD( "ic84.rom",     0x180000, 0x80000, CRC(876d5fdb) SHA1(723c58268be60f4973e914df238b264708d3f1e3) )
890 ROM_END
891 
892 
893 
894 static DRIVER_INIT( hasamu )
895 {
896 	irem_cpu_decrypt(0,gunforce_decryption_table);
897 }
898 
DRIVER_INIT(bombrman)899 static DRIVER_INIT( bombrman )
900 {
901 	irem_cpu_decrypt(0,bomberman_decryption_table);
902 }
903 
904 /* Bomberman World executes encrypted code from RAM! */
WRITE_HANDLER(bbmanw_ram_write)905 static WRITE_HANDLER (bbmanw_ram_write)
906 {
907 	unsigned char *RAM = memory_region(REGION_CPU1);
908 	RAM[0x0a0c00+offset]=data;
909 	RAM[0x1a0c00+offset]=dynablaster_decryption_table[data];
910 }
911 
DRIVER_INIT(bbmanw)912 static DRIVER_INIT( bbmanw )
913 {
914 	irem_cpu_decrypt(0,dynablaster_decryption_table);
915 
916 	install_mem_write_handler(0, 0xa0c00, 0xa0cff, bbmanw_ram_write);
917 }
918 
DRIVER_INIT(quizf1)919 static DRIVER_INIT( quizf1 )
920 {
921 	irem_cpu_decrypt(0,lethalth_decryption_table);
922 
923 	bankaddress = 0;
924 	set_m90_bank();
925 
926 	state_save_register_int("main", 0, "bankaddress", &bankaddress);
927 	state_save_register_func_postload(set_m90_bank);
928 }
929 
DRIVER_INIT(riskchal)930 static DRIVER_INIT( riskchal )
931 {
932 	irem_cpu_decrypt(0,gussun_decryption_table);
933 }
934 
DRIVER_INIT(shisen2)935 static DRIVER_INIT( shisen2 )
936 {
937 	irem_cpu_decrypt(0,shisen2_decryption_table);
938 }
939 
940 
941 
942 GAMEX(1991, hasamu,   0,        m90,      hasamu,   hasamu,   ROT0, "Irem", "Hasamu (Japan)", GAME_NO_COCKTAIL )
943 GAMEX(1991, bbmanw,   0,        bbmanw,   bbmanw,   bbmanw,   ROT0, "Irem", "Bomber Man World (World)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
944 GAMEX(1991, bbmanwj,  bbmanw,   bombrman, bbmanw,   bbmanw,   ROT0, "Irem", "Bomber Man World (Japan)", GAME_NO_COCKTAIL )
945 GAMEX(1992, dynablst, 0,        bombrman, dynablst, bombrman, ROT0, "Irem (licensed from Hudson Soft)", "Dynablaster (World)", GAME_NO_COCKTAIL )
946 GAMEX(1992, bombrman, dynablst, bombrman, bombrman, bombrman, ROT0, "Irem (licensed from Hudson Soft)", "Bomberman (Japan)", GAME_NO_COCKTAIL )
947 GAMEX(1992, dynablsb, dynablst, bootleg,  bombrman, 0,        ROT0, "bootleg", "Dynablaster (bootleg)", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
948 GAMEX(1992, atompunk, bbmanw,   bbmanw,   bbmanw,   bbmanw,   ROT0, "Irem America", "New Atomic Punk - Global Quest (US)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
949 GAMEX(1992, quizf1,   0,        quizf1,   quizf1,   quizf1,   ROT0, "Irem", "Quiz F-1 1,2finish", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL )
950 GAMEX(1993, riskchal, 0,        m90,      m97,      riskchal, ROT0, "Irem", "Risky Challenge", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
951 GAMEX(1993, gussun,   riskchal, m90,      m97,      riskchal, ROT0, "Irem", "Gussun Oyoyo (Japan)", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
952 GAMEX(1993, shisen2,  0,        m90,      m97,      shisen2,  ROT0, "Tamtex", "Shisensho II", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
953