1 /***************************************************************************
2
3 TODO:
4 - Find out how layers are enabled\disabled
5 - sprite/char priority
6 - dangar input ports
7 - wrong title screen in ninjemak
8 - bit 3 of ninjemak_gfxbank_w, there currently is a kludge to clear text RAM
9 but it should really copy stuff from the extra ROM.
10
11
12 Galivan
13 (C) 1985 Nihon Bussan
14
15 driver by
16
17 Luca Elia (l.elia@tin.it)
18 Olivier Galibert
19
20
21 Ninja Emaki (US)
22 (c)1986 NihonBussan Co.,Ltd.
23
24 Youma Ninpou Chou (Japan)
25 (c)1986 NihonBussan Co.,Ltd.
26
27 Driver by Takahiro Nogi (nogi@kt.rim.or.jp) 1999/12/17 -
28
29 ***************************************************************************/
30
31 #include "driver.h"
32 #include "vidhrdw/generic.h"
33
34 WRITE_HANDLER( galivan_scrollx_w );
35 WRITE_HANDLER( galivan_scrolly_w );
36 WRITE_HANDLER( galivan_videoram_w );
37 WRITE_HANDLER( galivan_colorram_w );
38 WRITE_HANDLER( galivan_gfxbank_w );
39 PALETTE_INIT( galivan );
40 VIDEO_START( galivan );
41 VIDEO_UPDATE( galivan );
42
43 WRITE_HANDLER( ninjemak_scrollx_w );
44 WRITE_HANDLER( ninjemak_scrolly_w );
45 WRITE_HANDLER( ninjemak_gfxbank_w );
46 VIDEO_START( ninjemak );
47 VIDEO_UPDATE( ninjemak );
48
49
50
MACHINE_INIT(galivan)51 static MACHINE_INIT( galivan )
52 {
53 unsigned char *RAM = memory_region(REGION_CPU1);
54
55 cpu_setbank(1,&RAM[0x10000]);
56 /* layers = 0x60;*/
57 }
58
WRITE_HANDLER(galivan_sound_command_w)59 static WRITE_HANDLER( galivan_sound_command_w )
60 {
61 soundlatch_w(offset,(data << 1) | 1);
62 }
63
READ_HANDLER(galivan_sound_command_r)64 static READ_HANDLER( galivan_sound_command_r )
65 {
66 int data;
67
68 data = soundlatch_r(offset);
69 soundlatch_clear_w(0,0);
70 return data;
71 }
72
READ_HANDLER(IO_port_c0_r)73 static READ_HANDLER( IO_port_c0_r )
74 {
75 return (0x58); /* To Avoid Reset on Ufo Robot dangar */
76 }
77
78
79 /* the scroll registers are memory mapped in ninjemak, I/O ports in the others */
WRITE_HANDLER(ninjemak_videoreg_w)80 static WRITE_HANDLER( ninjemak_videoreg_w )
81 {
82 switch (offset)
83 {
84 case 0x0b:
85 ninjemak_scrolly_w(0, data);
86 break;
87 case 0x0c:
88 ninjemak_scrolly_w(1, data);
89 break;
90 case 0x0d:
91 ninjemak_scrollx_w(0, data);
92 break;
93 case 0x0e:
94 ninjemak_scrollx_w(1, data);
95 break;
96 default:
97 break;
98 }
99 }
100
101
102
MEMORY_READ_START(readmem)103 static MEMORY_READ_START( readmem )
104 { 0x0000, 0xbfff, MRA_ROM },
105 { 0xc000, 0xdfff, MRA_BANK1 },
106 { 0xe000, 0xffff, MRA_RAM },
107 MEMORY_END
108
109 static MEMORY_WRITE_START( writemem )
110 { 0x0000, 0xbfff, MWA_ROM },
111 { 0xd800, 0xdbff, galivan_videoram_w, &videoram, &videoram_size },
112 { 0xdc00, 0xdfff, galivan_colorram_w, &colorram },
113 { 0xe000, 0xe0ff, MWA_RAM, &spriteram, &spriteram_size },
114 { 0xe100, 0xffff, MWA_RAM },
115 MEMORY_END
116
117 static MEMORY_WRITE_START( ninjemak_writemem )
118 { 0x0000, 0xbfff, MWA_ROM },
119 { 0xd800, 0xd81f, ninjemak_videoreg_w },
120 { 0xd800, 0xdbff, galivan_videoram_w, &videoram, &videoram_size },
121 { 0xdc00, 0xdfff, galivan_colorram_w, &colorram },
122 { 0xe000, 0xe1ff, MWA_RAM, &spriteram, &spriteram_size },
123 { 0xe200, 0xffff, MWA_RAM },
124 MEMORY_END
125
126
127 static PORT_READ_START( readport )
128 { 0x00, 0x00, input_port_0_r },
129 { 0x01, 0x01, input_port_1_r },
130 { 0x02, 0x02, input_port_2_r },
131 { 0x03, 0x03, input_port_3_r },
132 { 0x04, 0x04, input_port_4_r },
133 { 0xc0, 0xc0, IO_port_c0_r }, /* dangar needs to return 0x58 */
134 PORT_END
135
136 static PORT_WRITE_START( writeport )
137 { 0x40, 0x40, galivan_gfxbank_w },
138 { 0x41, 0x42, galivan_scrollx_w },
139 { 0x43, 0x44, galivan_scrolly_w },
140 { 0x45, 0x45, galivan_sound_command_w },
141 /* { 0x46, 0x46, IOWP_NOP }, */
142 /* { 0x47, 0x47, IOWP_NOP }, */
143 PORT_END
144
145 static PORT_READ_START( ninjemak_readport )
146 { 0x80, 0x80, input_port_0_r },
147 { 0x81, 0x81, input_port_1_r },
148 { 0x82, 0x82, input_port_2_r },
149 { 0x83, 0x83, input_port_3_r },
150 { 0x84, 0x84, input_port_4_r },
151 { 0x85, 0x85, input_port_5_r },
152 PORT_END
153
154 static PORT_WRITE_START( ninjemak_writeport )
155 { 0x80, 0x80, ninjemak_gfxbank_w },
156 { 0x85, 0x85, galivan_sound_command_w },
157 /* { 0x86, 0x86, IOWP_NOP }, */ /* ??*/
158 /* { 0x87, 0x87, IOWP_NOP }, */ /* ??*/
159 PORT_END
160
161
162 static MEMORY_READ_START( sound_readmem )
163 { 0x0000, 0xbfff, MRA_ROM },
164 { 0xc000, 0xc7ff, MRA_RAM },
165 MEMORY_END
166
167 static MEMORY_WRITE_START( sound_writemem )
168 { 0x0000, 0xbfff, MWA_ROM },
169 { 0xc000, 0xc7ff, MWA_RAM },
170 MEMORY_END
171
172
173 static PORT_READ_START( sound_readport )
174 /* { 0x04, 0x04, IORP_NOP }, value read and *discarded* */
175 { 0x06, 0x06, galivan_sound_command_r },
176 PORT_END
177
178 static PORT_WRITE_START( sound_writeport )
179 { 0x00, 0x00, YM3526_control_port_0_w },
180 { 0x01, 0x01, YM3526_write_port_0_w },
181 { 0x02, 0x02, DAC_0_data_w },
182 { 0x03, 0x03, DAC_1_data_w },
183 PORT_END
184
185
186 /***************
187 Dip Sitches
188 ***************/
189
190 #define NIHON_JOYSTICK(_n_) \
191 PORT_START \
192 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER##_n_) \
193 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER##_n_) \
194 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER##_n_) \
195 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER##_n_) \
196 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER##_n_) \
197 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER##_n_) \
198 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
199 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER##_n_)
200
201 #define NIHON_SYSTEM \
202 PORT_START /* IN2 - TEST, COIN, START */ \
203 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) \
204 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) \
205 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) \
206 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) \
207 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) \
208 PORT_BITX(0x20, 0x20, 0, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE ) \
209 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
210 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
211
212 #define NIHON_COINAGE_A \
213 PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) \
214 PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) ) \
215 PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) \
216 PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) \
217 PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
218
219 #define NIHON_COINAGE_B \
220 PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) \
221 PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) \
222 PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) \
223 PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) \
224 PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) )
225
226 #define NIHON_COINAGE_B_ALT \
227 PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) \
228 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \
229 PORT_DIPSETTING( 0x04, DEF_STR( 2C_3C ) ) \
230 PORT_DIPSETTING( 0x0c, DEF_STR( 1C_3C ) ) \
231 PORT_DIPSETTING( 0x08, DEF_STR( 1C_6C ) )
232
233 /* This is how the Bonus Life are defined in Service Mode */
234 /* However, to keep the way Bonus Life are definedin MAME, */
235 /* below are the same values, but using the MAME way */
236 /* PORT_DIPNAME( 0x04, 0x04, "1st Bonus Life" )*/
237 /* PORT_DIPSETTING( 0x04, "20k" )*/
238 /* PORT_DIPSETTING( 0x00, "50k" )*/
239 /* PORT_DIPNAME( 0x08, 0x08, "2nd Bonus Life" )*/
240 /* PORT_DIPSETTING( 0x08, "every 60k" )*/
241 /* PORT_DIPSETTING( 0x00, "every 90k" )*/
242 #define NIHON_BONUS_LIFE \
243 PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) \
244 PORT_DIPSETTING( 0x0c, "20k and every 60k" ) \
245 PORT_DIPSETTING( 0x08, "50k and every 60k" ) \
246 PORT_DIPSETTING( 0x04, "20k and every 90k" ) \
247 PORT_DIPSETTING( 0x00, "50k and every 90k" )
248
249 #define NIHON_LIVES \
250 PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) \
251 PORT_DIPSETTING( 0x03, "3" ) \
252 PORT_DIPSETTING( 0x02, "4" ) \
253 PORT_DIPSETTING( 0x01, "5" ) \
254 PORT_DIPSETTING( 0x00, "6" )
255
256 INPUT_PORTS_START( galivan )
257 NIHON_JOYSTICK(1)
258 NIHON_JOYSTICK(2)
259 NIHON_SYSTEM
260
261 PORT_START /* IN3 - DSW1 */
262 NIHON_LIVES
263 NIHON_BONUS_LIFE
264 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )
265 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
266 PORT_DIPSETTING( 0x10, DEF_STR( On ) )
267 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
268 PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
269 PORT_DIPSETTING( 0x20, DEF_STR( Cocktail ) )
270 PORT_BITX( 0x40, 0x40, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
271 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
272 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
273 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
274 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
275 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
276
277 PORT_START /* IN4 - DSW2 */
278 NIHON_COINAGE_A
279 NIHON_COINAGE_B_ALT
280 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Difficulty ) )
281 PORT_DIPSETTING( 0x10, "Easy" )
282 PORT_DIPSETTING( 0x00, "Hard" )
283 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) )
284 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
285 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
286 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown) )
287 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
288 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
289 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
290 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
291 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
292 INPUT_PORTS_END
293
294 INPUT_PORTS_START( dangar )
295 NIHON_JOYSTICK(1)
296 NIHON_JOYSTICK(2)
297 NIHON_SYSTEM
298
299
300 PORT_START /* IN3 - DSW1 */
301 NIHON_LIVES
302 NIHON_BONUS_LIFE
303 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )
304 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
305 PORT_DIPSETTING( 0x10, DEF_STR( On ) )
306 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
307 PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
308 PORT_DIPSETTING( 0x20, DEF_STR( Cocktail ) )
309 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
310 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
311 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
312 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
313 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
314 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
315
316 PORT_START /* IN4 - DSW2 */
317 NIHON_COINAGE_A
318 NIHON_COINAGE_B
319 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Difficulty ) )
320 PORT_DIPSETTING( 0x10, "Easy" )
321 PORT_DIPSETTING( 0x00, "Hard" )
322 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) )
323 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
324 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
325 /* two switches to allow continue... both work */
326 PORT_DIPNAME( 0xc0, 0x00, "Allow Continue" )
327 PORT_DIPSETTING( 0xc0, DEF_STR( No ) )
328 PORT_DIPSETTING( 0x80, "3 Times" )
329 PORT_DIPSETTING( 0x40, "5 Times" )
330 PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
331 INPUT_PORTS_END
332
333 /* different Lives values and last different the last two dips */
334 INPUT_PORTS_START( dangar2 )
335 NIHON_JOYSTICK(1)
336 NIHON_JOYSTICK(2)
337 NIHON_SYSTEM
338
339
340 PORT_START /* IN3 - DSW1 */
341 PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
342 PORT_DIPSETTING( 0x00, "2" )
343 PORT_DIPSETTING( 0x03, "3" )
344 PORT_DIPSETTING( 0x02, "4" )
345 PORT_DIPSETTING( 0x01, "5" )
346 NIHON_BONUS_LIFE
347 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )
348 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
349 PORT_DIPSETTING( 0x10, DEF_STR( On ) )
350 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
351 PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
352 PORT_DIPSETTING( 0x20, DEF_STR( Cocktail ) )
353 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown) )
354 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
355 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
356 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown) )
357 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
358 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
359
360 PORT_START /* IN4 - DSW2 */
361 NIHON_COINAGE_A
362 NIHON_COINAGE_B
363 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Difficulty ) )
364 PORT_DIPSETTING( 0x10, "Easy" )
365 PORT_DIPSETTING( 0x00, "Hard" )
366 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) )
367 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
368 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
369 PORT_BITX( 0x40, 0x40, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Complete Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
370 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
371 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
372 PORT_BITX( 0x80, 0x80, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Base Ship Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
373 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
374 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
375 INPUT_PORTS_END
376
377 /* the last two dip switches are different */
378 INPUT_PORTS_START( dangarb )
379 NIHON_JOYSTICK(1)
380 NIHON_JOYSTICK(2)
381 NIHON_SYSTEM
382
383
384 PORT_START /* IN3 - DSW1 */
385 NIHON_LIVES
386 NIHON_BONUS_LIFE
387 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )
388 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
389 PORT_DIPSETTING( 0x10, DEF_STR( On ) )
390 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
391 PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
392 PORT_DIPSETTING( 0x20, DEF_STR( Cocktail ) )
393 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown) )
394 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
395 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
396 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown) )
397 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
398 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
399
400 PORT_START /* IN4 - DSW2 */
401 NIHON_COINAGE_A
402 NIHON_COINAGE_B
403 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Difficulty ) )
404 PORT_DIPSETTING( 0x10, "Easy" )
405 PORT_DIPSETTING( 0x00, "Hard" )
406 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) )
407 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
408 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
409 PORT_BITX( 0x40, 0x40, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Complete Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
410 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
411 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
412 PORT_BITX( 0x80, 0x80, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Base Ship Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
413 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
414 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
415 INPUT_PORTS_END
416
417 INPUT_PORTS_START( ninjemak )
418 NIHON_JOYSTICK(1)
419 NIHON_JOYSTICK(2)
420 NIHON_SYSTEM
421
422
423 PORT_START /* IN3 - TEST */
424 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
425 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
426 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
427 PORT_SERVICE( 0x02, IP_ACTIVE_LOW )
428 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
429 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
430 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
431 PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
432 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
433 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
434 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
435 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
436 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
437 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
438 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
439 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
440 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
441 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
442 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
443 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
444 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
445 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
446
447 PORT_START /* IN4 - TEST */
448 NIHON_LIVES
449 NIHON_BONUS_LIFE
450 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
451 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
452 PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) )
453 PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
454 PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
455 PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
456 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
457 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) )
458 PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) )
459 PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
460
461 PORT_START /* IN5 - TEST */
462 PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
463 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
464 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
465 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) )
466 PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
467 PORT_DIPSETTING( 0x02, DEF_STR( Cocktail ) )
468 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Difficulty ) )
469 PORT_DIPSETTING( 0x04, "Easy" )
470 PORT_DIPSETTING( 0x00, "Hard" )
471 PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
472 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
473 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
474 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
475 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
476 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
477 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) )
478 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
479 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
480 PORT_DIPNAME( 0xc0, 0x00, "Allow Continue" )
481 PORT_DIPSETTING( 0xc0, DEF_STR( No ) )
482 PORT_DIPSETTING( 0x80, "3 Times" )
483 PORT_DIPSETTING( 0x40, "5 Times" )
484 PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
485 INPUT_PORTS_END
486
487
488 #define CHARLAYOUT(NUM) static struct GfxLayout charlayout_##NUM = \
489 { \
490 8,8, /* 8*8 characters */ \
491 NUM, /* NUM characters */ \
492 4, /* 4 bits per pixel */ \
493 { 0, 1, 2, 3 }, \
494 { 1*4, 0*4, 3*4, 2*4, 5*4, 4*4, 7*4, 6*4 }, \
495 { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, \
496 32*8 /* every char takes 32 consecutive bytes */ \
497 }
498
499 CHARLAYOUT(512);
500 CHARLAYOUT(1024);
501
502 static struct GfxLayout tilelayout =
503 {
504 16,16,
505 1024,
506 4,
507 { 0, 1, 2, 3 },
508 { 4,0,12,8,20,16,28,24,36,32,44,40,52,48,60,56 },
509 { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
510 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
511 16*16*4
512 };
513
514 #define SPRITELAYOUT(NUM) static struct GfxLayout spritelayout_##NUM = \
515 { \
516 16,16, /* 16*16 sprites */ \
517 NUM, /* NUM sprites */ \
518 4, /* 4 bits per pixel */ \
519 { 0, 1, 2, 3 }, \
520 { 1*4, 0*4, 1*4+NUM*64*8, 0*4+NUM*64*8, 3*4, 2*4, 3*4+NUM*64*8, 2*4+NUM*64*8, \
521 5*4, 4*4, 5*4+NUM*64*8, 4*4+NUM*64*8, 7*4, 6*4, 7*4+NUM*64*8, 6*4+NUM*64*8 }, \
522 { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, \
523 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 }, \
524 64*8 /* every sprite takes 64 consecutive bytes */ \
525 }
526
527 SPRITELAYOUT(512);
528 SPRITELAYOUT(1024);
529
530
531 static struct GfxDecodeInfo gfxdecodeinfo[] =
532 {
533 { REGION_GFX1, 0, &charlayout_512, 0, 8 },
534 { REGION_GFX2, 0, &tilelayout, 8*16, 16 },
535 { REGION_GFX3, 0, &spritelayout_512, 8*16+16*16, 256 },
536 { -1 } /* end of array */
537 };
538
539 static struct GfxDecodeInfo ninjemak_gfxdecodeinfo[] =
540 {
541 { REGION_GFX1, 0, &charlayout_1024, 0, 8 },
542 { REGION_GFX2, 0, &tilelayout, 8*16, 16 },
543 { REGION_GFX3, 0, &spritelayout_1024, 8*16+16*16, 256 },
544 { -1 } /* end of array */
545 };
546
547
548
549 static struct YM3526interface YM3526_interface =
550 {
551 1,
552 8000000/2, /* 4 MHz? */
553 { 100 }
554 };
555
556 static struct DACinterface dac_interface =
557 {
558 2,
559 { 50, 50 }
560 };
561
562
563 static MACHINE_DRIVER_START( galivan )
564
565 /* basic machine hardware */
566 MDRV_CPU_ADD(Z80,12000000/2) /* 6 MHz? */
567 MDRV_CPU_MEMORY(readmem,writemem)
568 MDRV_CPU_PORTS(readport,writeport)
569 MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
570
571 MDRV_CPU_ADD(Z80,8000000/2)
572 MDRV_CPU_FLAGS(CPU_AUDIO_CPU) /* 4 MHz? */
573 MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
574 MDRV_CPU_PORTS(sound_readport,sound_writeport)
575 MDRV_CPU_PERIODIC_INT(irq0_line_hold,7250) /* timed interrupt, ?? Hz */
576
577 MDRV_FRAMES_PER_SECOND(60)
578 MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
579
580 MDRV_MACHINE_INIT(galivan)
581
582 /* video hardware */
583 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
584 MDRV_SCREEN_SIZE(32*8, 32*8)
585 MDRV_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
586 MDRV_GFXDECODE(gfxdecodeinfo)
587 MDRV_PALETTE_LENGTH(256)
588 MDRV_COLORTABLE_LENGTH(8*16+16*16+256*16)
589
590 MDRV_PALETTE_INIT(galivan)
591 MDRV_VIDEO_START(galivan)
592 MDRV_VIDEO_UPDATE(galivan)
593
594 /* sound hardware */
595 MDRV_SOUND_ADD(YM3526, YM3526_interface)
596 MDRV_SOUND_ADD(DAC, dac_interface)
597 MACHINE_DRIVER_END
598
599 static MACHINE_DRIVER_START( ninjemak )
600
601 /* basic machine hardware */
602 MDRV_CPU_ADD(Z80,12000000/2) /* 6 MHz? */
603 MDRV_CPU_MEMORY(readmem,ninjemak_writemem)
604 MDRV_CPU_PORTS(ninjemak_readport,ninjemak_writeport)
605 MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
606
607 MDRV_CPU_ADD(Z80,8000000/2)
608 MDRV_CPU_FLAGS(CPU_AUDIO_CPU) /* 4 MHz? */
609 MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
610 MDRV_CPU_PORTS(sound_readport,sound_writeport)
611 MDRV_CPU_PERIODIC_INT(irq0_line_hold,7250) /* timed interrupt, ?? Hz */
612
613 MDRV_FRAMES_PER_SECOND(60)
614 MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
615
616 MDRV_MACHINE_INIT(galivan)
617
618 /* video hardware */
619 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
620 MDRV_SCREEN_SIZE(32*8, 32*8)
621 MDRV_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
622 MDRV_GFXDECODE(ninjemak_gfxdecodeinfo)
623 MDRV_PALETTE_LENGTH(256)
624 MDRV_COLORTABLE_LENGTH(8*16+16*16+256*16)
625
626 MDRV_PALETTE_INIT(galivan)
627 MDRV_VIDEO_START(ninjemak)
628 MDRV_VIDEO_UPDATE(ninjemak)
629
630 /* sound hardware */
631 MDRV_SOUND_ADD(YM3526, YM3526_interface)
632 MDRV_SOUND_ADD(DAC, dac_interface)
633 MACHINE_DRIVER_END
634
635
636
637 /***************************************************************************
638
639 Game driver(s)
640
641 ***************************************************************************/
642
643 ROM_START( galivan )
644 ROM_REGION( 0x14000, REGION_CPU1, 0 ) /* main cpu code */
645 ROM_LOAD( "gv1.1b", 0x00000, 0x8000, CRC(5e480bfc) SHA1(f444de27d3d8aff579cf196a25b7f0c906617172) )
646 ROM_LOAD( "gv2.3b", 0x08000, 0x4000, CRC(0d1b3538) SHA1(aa1ee04ff3516e0121db0cf50cee849ba5058fd5) )
647 ROM_LOAD( "gv3.4b", 0x10000, 0x4000, CRC(82f0c5e6) SHA1(77dd3927c2161e4fce9e0adba81dc0c875d7e2f4) ) /* 2 banks at c000 */
648
649 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound cpu code */
650 ROM_LOAD( "gv11.14b", 0x0000, 0x4000, CRC(05f1a0e3) SHA1(c0f579130d64123c889c77d8f2f474ebcc3ba649) )
651 ROM_LOAD( "gv12.15b", 0x4000, 0x8000, CRC(5b7a0d6d) SHA1(0c15def9be8014aeb4e14b6967efe8f5abac51f2) )
652
653 ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
654 ROM_LOAD( "gv4.13d", 0x00000, 0x4000, CRC(162490b4) SHA1(55592865f208bf1b8f49c8eedc22a3d91ca3578d) ) /* chars */
655
656 ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
657 ROM_LOAD( "gv7.14f", 0x00000, 0x8000, CRC(eaa1a0db) SHA1(ed3b125a7472c0c0a458b28df6476cb4c64b4aa3) ) /* tiles */
658 ROM_LOAD( "gv8.15f", 0x08000, 0x8000, CRC(f174a41e) SHA1(38aa7aa3d6ba026478d30b5e404614a0cc7aed52) )
659 ROM_LOAD( "gv9.17f", 0x10000, 0x8000, CRC(edc60f5d) SHA1(c743f4af0e0e2c60f59fd01ce0a153108e9f5414) )
660 ROM_LOAD( "gv10.19f", 0x18000, 0x8000, CRC(41f27fca) SHA1(3674dbecc2eb1c837159a8dfbb0086088631b2a5) )
661
662 ROM_REGION( 0x10000, REGION_GFX3, ROMREGION_DISPOSE )
663 ROM_LOAD( "gv14.4f", 0x00000, 0x8000, CRC(03e2229f) SHA1(9dace9e04867d1140eb3c794bd4ae54ec3bb4a83) ) /* sprites */
664 ROM_LOAD( "gv13.1f", 0x08000, 0x8000, CRC(bca9e66b) SHA1(d84840943748a7b9fd6e141be9971431f69ce1f9) )
665
666 ROM_REGION( 0x8000, REGION_GFX4, 0 ) /* background tilemaps */
667 ROM_LOAD( "gv6.19d", 0x0000, 0x4000, CRC(da38168b) SHA1(a12decd55fd1cf32fd192f13bd33d2f1f4129d2c) )
668 ROM_LOAD( "gv5.17d", 0x4000, 0x4000, CRC(22492d2a) SHA1(c8d36949abc2fcc8f2b12276eb82b330a940bc38) )
669
670 ROM_REGION( 0x0500, REGION_PROMS, 0 )
671 ROM_LOAD( "mb7114e.9f", 0x0000, 0x0100, CRC(de782b3e) SHA1(c76da7d5cbd9170be93c9591e525646a4360203c) ) /* red */
672 ROM_LOAD( "mb7114e.10f", 0x0100, 0x0100, CRC(0ae2a857) SHA1(cdf84c0c75d483a81013dbc050e7aa8c8503c74c) ) /* green */
673 ROM_LOAD( "mb7114e.11f", 0x0200, 0x0100, CRC(7ba8b9d1) SHA1(5942b403eda046e2f2584062443472cbf559db5c) ) /* blue */
674 ROM_LOAD( "mb7114e.2d", 0x0300, 0x0100, CRC(75466109) SHA1(6196d12ab7103f6ef991b826d8b93303a61d4c48) ) /* sprite lookup table */
675 ROM_LOAD( "mb7114e.7f", 0x0400, 0x0100, CRC(06538736) SHA1(a2fb2ecb768686839f3087e691102e2dc2eb65b5) ) /* sprite palette bank */
676 ROM_END
677
678 ROM_START( galivan2 )
679 ROM_REGION( 0x14000, REGION_CPU1, 0 ) /* main cpu code */
680 ROM_LOAD( "e-1", 0x00000, 0x8000, CRC(d8cc72b8) SHA1(73a46cd7dda3a912b14075b9b4ebc81a175a1461) )
681 ROM_LOAD( "e-2", 0x08000, 0x4000, CRC(9e5b3157) SHA1(1aa5f7f382468af815c929c63866bd39e7a9ac18) )
682 ROM_LOAD( "gv3.4b", 0x10000, 0x4000, CRC(82f0c5e6) SHA1(77dd3927c2161e4fce9e0adba81dc0c875d7e2f4) ) /* 2 banks at c000 */
683
684 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound cpu code */
685 ROM_LOAD( "gv11.14b", 0x0000, 0x4000, CRC(05f1a0e3) SHA1(c0f579130d64123c889c77d8f2f474ebcc3ba649) )
686 ROM_LOAD( "gv12.15b", 0x4000, 0x8000, CRC(5b7a0d6d) SHA1(0c15def9be8014aeb4e14b6967efe8f5abac51f2) )
687
688 ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
689 ROM_LOAD( "gv4.13d", 0x00000, 0x4000, CRC(162490b4) SHA1(55592865f208bf1b8f49c8eedc22a3d91ca3578d) ) /* chars */
690
691 ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
692 ROM_LOAD( "gv7.14f", 0x00000, 0x8000, CRC(eaa1a0db) SHA1(ed3b125a7472c0c0a458b28df6476cb4c64b4aa3) ) /* tiles */
693 ROM_LOAD( "gv8.15f", 0x08000, 0x8000, CRC(f174a41e) SHA1(38aa7aa3d6ba026478d30b5e404614a0cc7aed52) )
694 ROM_LOAD( "gv9.17f", 0x10000, 0x8000, CRC(edc60f5d) SHA1(c743f4af0e0e2c60f59fd01ce0a153108e9f5414) )
695 ROM_LOAD( "gv10.19f", 0x18000, 0x8000, CRC(41f27fca) SHA1(3674dbecc2eb1c837159a8dfbb0086088631b2a5) )
696
697 ROM_REGION( 0x10000, REGION_GFX3, ROMREGION_DISPOSE )
698 ROM_LOAD( "gv14.4f", 0x00000, 0x8000, CRC(03e2229f) SHA1(9dace9e04867d1140eb3c794bd4ae54ec3bb4a83) ) /* sprites */
699 ROM_LOAD( "gv13.1f", 0x08000, 0x8000, CRC(bca9e66b) SHA1(d84840943748a7b9fd6e141be9971431f69ce1f9) )
700
701 ROM_REGION( 0x8000, REGION_GFX4, 0 ) /* background tilemaps */
702 ROM_LOAD( "gv6.19d", 0x0000, 0x4000, CRC(da38168b) SHA1(a12decd55fd1cf32fd192f13bd33d2f1f4129d2c) )
703 ROM_LOAD( "gv5.17d", 0x4000, 0x4000, CRC(22492d2a) SHA1(c8d36949abc2fcc8f2b12276eb82b330a940bc38) )
704
705 ROM_REGION( 0x0500, REGION_PROMS, 0 )
706 ROM_LOAD( "mb7114e.9f", 0x0000, 0x0100, CRC(de782b3e) SHA1(c76da7d5cbd9170be93c9591e525646a4360203c) ) /* red */
707 ROM_LOAD( "mb7114e.10f", 0x0100, 0x0100, CRC(0ae2a857) SHA1(cdf84c0c75d483a81013dbc050e7aa8c8503c74c) ) /* green */
708 ROM_LOAD( "mb7114e.11f", 0x0200, 0x0100, CRC(7ba8b9d1) SHA1(5942b403eda046e2f2584062443472cbf559db5c) ) /* blue */
709 ROM_LOAD( "mb7114e.2d", 0x0300, 0x0100, CRC(75466109) SHA1(6196d12ab7103f6ef991b826d8b93303a61d4c48) ) /* sprite lookup table */
710 ROM_LOAD( "mb7114e.7f", 0x0400, 0x0100, CRC(06538736) SHA1(a2fb2ecb768686839f3087e691102e2dc2eb65b5) ) /* sprite palette bank */
711 ROM_END
712
713 ROM_START( dangar )
714 ROM_REGION( 0x14000, REGION_CPU1, 0 ) /* main cpu code */
715 ROM_LOAD( "dangar08.1b", 0x00000, 0x8000, CRC(e52638f2) SHA1(6dd3ccb4574a410abf1ac35b4f9518ee21ecac91) )
716 ROM_LOAD( "dangar09.3b", 0x08000, 0x4000, CRC(809d280f) SHA1(931f811f1fe3c71ba82fc44f69ef461bdd9cd2d8) )
717 ROM_LOAD( "dangar10.5b", 0x10000, 0x4000, CRC(99a3591b) SHA1(45011043ff5620524d79076542bd8c602fe90cf4) )
718
719 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound cpu code */
720 ROM_LOAD( "dangar13.b14", 0x0000, 0x4000, CRC(3e041873) SHA1(8f9e1ec64509c8a7e9e45add9efc95f98f35fcfc) )
721 ROM_LOAD( "dangar14.b15", 0x4000, 0x8000, CRC(488e3463) SHA1(73ff7ab061be54162f3a548f6bd9ef55b9dec5d9) )
722
723 ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
724 ROM_LOAD( "dangar05.13d", 0x00000, 0x4000, CRC(40cb378a) SHA1(764596f6845fc0b787b653a87a1778a56ce4f3f8) ) /* chars */
725
726 ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
727 ROM_LOAD( "dangar01.14f", 0x00000, 0x8000, CRC(d59ed1f1) SHA1(e55314b5a078145ad7a5e95cb792b4fd32cfb05d) ) /* tiles */
728 ROM_LOAD( "dangar02.15f", 0x08000, 0x8000, CRC(dfdb931c) SHA1(33563160239f221f24ca0cb652d14550e9941afe) )
729 ROM_LOAD( "dangar03.17f", 0x10000, 0x8000, CRC(6954e8c3) SHA1(077bcbe9f80df011c9110d8cf6e08b53d035d1c8) )
730 ROM_LOAD( "dangar04.19f", 0x18000, 0x8000, CRC(4af6a8bf) SHA1(d004b10b9b8559d1d6d26af35999df2857d87c53) )
731
732 ROM_REGION( 0x10000, REGION_GFX3, ROMREGION_DISPOSE )
733 ROM_LOAD( "dangarxx.f4", 0x00000, 0x8000, CRC(55711884) SHA1(2682ebc8d88d0d6c430b7df34ed362bc81047072) ) /* sprites */
734 ROM_LOAD( "dangarxx.f1", 0x08000, 0x8000, CRC(8cf11419) SHA1(79e7a3046878724fde248100ad55a305a427cd46) )
735
736 ROM_REGION( 0x8000, REGION_GFX4, 0 ) /* background tilemaps */
737 ROM_LOAD( "dangar07.19d", 0x0000, 0x4000, CRC(6dba32cf) SHA1(e6433f291364202c1291b137d6ee1840ecf7d72d) )
738 ROM_LOAD( "dangar06.17d", 0x4000, 0x4000, CRC(6c899071) SHA1(9a776aae897d57e66ebdbcf79f3c673da8b78b05) )
739
740 ROM_REGION( 0x0500, REGION_PROMS, 0 )
741 ROM_LOAD( "82s129.9f", 0x0000, 0x0100, CRC(b29f6a07) SHA1(17c82f439f314c212470bafd917b3f7e12462d16) ) /* red */
742 ROM_LOAD( "82s129.10f", 0x0100, 0x0100, CRC(c6de5ecb) SHA1(d5b6cb784b5df16332c5e2b19b763c8858a0b6a7) ) /* green */
743 ROM_LOAD( "82s129.11f", 0x0200, 0x0100, CRC(a5bbd6dc) SHA1(5587844900a24d833500d204f049c05493c4a25a) ) /* blue */
744 ROM_LOAD( "82s129.2d", 0x0300, 0x0100, CRC(a4ac95a5) SHA1(3b31cd3fd6caedd89d1bedc606a978081fc5431f) ) /* sprite lookup table */
745 ROM_LOAD( "82s129.7f", 0x0400, 0x0100, CRC(29bc6216) SHA1(1d7864ad06ad0cd5e3d1905fc6066bee1cd90995) ) /* sprite palette bank */
746 ROM_END
747
748 ROM_START( dangar2 )
749 ROM_REGION( 0x14000, REGION_CPU1, 0 ) /* main cpu code */
750 ROM_LOAD( "dangar2.016", 0x00000, 0x8000, CRC(743fa2d4) SHA1(55539796967532b57279801374b2f0cf82cfe1ae) )
751 ROM_LOAD( "dangar2.017", 0x08000, 0x4000, CRC(1cdc60a5) SHA1(65f776d14c9461f1a6939ad512eacf6a1a9da2c6) )
752 ROM_LOAD( "dangar2.018", 0x10000, 0x4000, CRC(db7f6613) SHA1(c55d1f2fdb86e2b9fbdfad0b156d4d084677b750) )
753
754 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound cpu code */
755 ROM_LOAD( "dangar13.b14", 0x0000, 0x4000, CRC(3e041873) SHA1(8f9e1ec64509c8a7e9e45add9efc95f98f35fcfc) )
756 ROM_LOAD( "dangar14.b15", 0x4000, 0x8000, CRC(488e3463) SHA1(73ff7ab061be54162f3a548f6bd9ef55b9dec5d9) )
757
758 ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
759 ROM_LOAD( "dangar2.011", 0x00000, 0x4000, CRC(e804ffe1) SHA1(22f16c23b9a82f104dda24bc8fccc08f3f69cf97) ) /* chars */
760
761 ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
762 ROM_LOAD( "dangar01.14f", 0x00000, 0x8000, CRC(d59ed1f1) SHA1(e55314b5a078145ad7a5e95cb792b4fd32cfb05d) ) /* tiles */
763 ROM_LOAD( "dangar02.15f", 0x08000, 0x8000, CRC(dfdb931c) SHA1(33563160239f221f24ca0cb652d14550e9941afe) )
764 ROM_LOAD( "dangar03.17f", 0x10000, 0x8000, CRC(6954e8c3) SHA1(077bcbe9f80df011c9110d8cf6e08b53d035d1c8) )
765 ROM_LOAD( "dangar04.19f", 0x18000, 0x8000, CRC(4af6a8bf) SHA1(d004b10b9b8559d1d6d26af35999df2857d87c53) )
766
767 ROM_REGION( 0x10000, REGION_GFX3, ROMREGION_DISPOSE )
768 ROM_LOAD( "dangarxx.f4", 0x00000, 0x8000, CRC(55711884) SHA1(2682ebc8d88d0d6c430b7df34ed362bc81047072) ) /* sprites */
769 ROM_LOAD( "dangarxx.f1", 0x08000, 0x8000, CRC(8cf11419) SHA1(79e7a3046878724fde248100ad55a305a427cd46) )
770
771 ROM_REGION( 0x8000, REGION_GFX4, 0 ) /* background tilemaps */
772 ROM_LOAD( "dangar07.19d", 0x0000, 0x4000, CRC(6dba32cf) SHA1(e6433f291364202c1291b137d6ee1840ecf7d72d) )
773 ROM_LOAD( "dangar06.17d", 0x4000, 0x4000, CRC(6c899071) SHA1(9a776aae897d57e66ebdbcf79f3c673da8b78b05) )
774
775 ROM_REGION( 0x0500, REGION_PROMS, 0 )
776 ROM_LOAD( "82s129.9f", 0x0000, 0x0100, CRC(b29f6a07) SHA1(17c82f439f314c212470bafd917b3f7e12462d16) ) /* red */
777 ROM_LOAD( "82s129.10f", 0x0100, 0x0100, CRC(c6de5ecb) SHA1(d5b6cb784b5df16332c5e2b19b763c8858a0b6a7) ) /* green */
778 ROM_LOAD( "82s129.11f", 0x0200, 0x0100, CRC(a5bbd6dc) SHA1(5587844900a24d833500d204f049c05493c4a25a) ) /* blue */
779 ROM_LOAD( "82s129.2d", 0x0300, 0x0100, CRC(a4ac95a5) SHA1(3b31cd3fd6caedd89d1bedc606a978081fc5431f) ) /* sprite lookup table */
780 ROM_LOAD( "82s129.7f", 0x0400, 0x0100, CRC(29bc6216) SHA1(1d7864ad06ad0cd5e3d1905fc6066bee1cd90995) ) /* sprite palette bank */
781 ROM_END
782
783 ROM_START( dangarb )
784 ROM_REGION( 0x14000, REGION_CPU1, 0 ) /* main cpu code */
785 ROM_LOAD( "8", 0x00000, 0x8000, CRC(8136fd10) SHA1(5f2ca08fab0d9431af38ef66922fdb6bd9a132e2) )
786 ROM_LOAD( "9", 0x08000, 0x4000, CRC(3ce5ec11) SHA1(bcc0df6167d0b84b9f260435c1999b9d3605fcd4) )
787 ROM_LOAD( "dangar2.018", 0x10000, 0x4000, CRC(db7f6613) SHA1(c55d1f2fdb86e2b9fbdfad0b156d4d084677b750) )
788
789 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound cpu code */
790 ROM_LOAD( "dangar13.b14", 0x0000, 0x4000, CRC(3e041873) SHA1(8f9e1ec64509c8a7e9e45add9efc95f98f35fcfc) )
791 ROM_LOAD( "dangar14.b15", 0x4000, 0x8000, CRC(488e3463) SHA1(73ff7ab061be54162f3a548f6bd9ef55b9dec5d9) )
792
793 ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
794 ROM_LOAD( "dangar2.011", 0x00000, 0x4000, CRC(e804ffe1) SHA1(22f16c23b9a82f104dda24bc8fccc08f3f69cf97) ) /* chars */
795
796 ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
797 ROM_LOAD( "dangar01.14f", 0x00000, 0x8000, CRC(d59ed1f1) SHA1(e55314b5a078145ad7a5e95cb792b4fd32cfb05d) ) /* tiles */
798 ROM_LOAD( "dangar02.15f", 0x08000, 0x8000, CRC(dfdb931c) SHA1(33563160239f221f24ca0cb652d14550e9941afe) )
799 ROM_LOAD( "dangar03.17f", 0x10000, 0x8000, CRC(6954e8c3) SHA1(077bcbe9f80df011c9110d8cf6e08b53d035d1c8) )
800 ROM_LOAD( "dangar04.19f", 0x18000, 0x8000, CRC(4af6a8bf) SHA1(d004b10b9b8559d1d6d26af35999df2857d87c53) )
801
802 ROM_REGION( 0x10000, REGION_GFX3, ROMREGION_DISPOSE )
803 ROM_LOAD( "dangarxx.f4", 0x00000, 0x8000, CRC(55711884) SHA1(2682ebc8d88d0d6c430b7df34ed362bc81047072) ) /* sprites */
804 ROM_LOAD( "dangarxx.f1", 0x08000, 0x8000, CRC(8cf11419) SHA1(79e7a3046878724fde248100ad55a305a427cd46) )
805
806 ROM_REGION( 0x8000, REGION_GFX4, 0 ) /* background tilemaps */
807 ROM_LOAD( "dangar07.19d", 0x0000, 0x4000, CRC(6dba32cf) SHA1(e6433f291364202c1291b137d6ee1840ecf7d72d) )
808 ROM_LOAD( "dangar06.17d", 0x4000, 0x4000, CRC(6c899071) SHA1(9a776aae897d57e66ebdbcf79f3c673da8b78b05) )
809
810 ROM_REGION( 0x0500, REGION_PROMS, 0 )
811 ROM_LOAD( "82s129.9f", 0x0000, 0x0100, CRC(b29f6a07) SHA1(17c82f439f314c212470bafd917b3f7e12462d16) ) /* red */
812 ROM_LOAD( "82s129.10f", 0x0100, 0x0100, CRC(c6de5ecb) SHA1(d5b6cb784b5df16332c5e2b19b763c8858a0b6a7) ) /* green */
813 ROM_LOAD( "82s129.11f", 0x0200, 0x0100, CRC(a5bbd6dc) SHA1(5587844900a24d833500d204f049c05493c4a25a) ) /* blue */
814 ROM_LOAD( "82s129.2d", 0x0300, 0x0100, CRC(a4ac95a5) SHA1(3b31cd3fd6caedd89d1bedc606a978081fc5431f) ) /* sprite lookup table */
815 ROM_LOAD( "82s129.7f", 0x0400, 0x0100, CRC(29bc6216) SHA1(1d7864ad06ad0cd5e3d1905fc6066bee1cd90995) ) /* sprite palette bank */
816 ROM_END
817
818 ROM_START( ninjemak )
819 ROM_REGION( 0x18000, REGION_CPU1, 0 ) /* main cpu code */
820 ROM_LOAD( "ninjemak.1", 0x00000, 0x8000, CRC(12b0a619) SHA1(7b42097be6423931256d5b7fdafb98bee1b42e64) )
821 ROM_LOAD( "ninjemak.2", 0x08000, 0x4000, CRC(d5b505d1) SHA1(53935549754e8a71f0620630c2e59c21d52edcba) )
822 ROM_LOAD( "ninjemak.3", 0x10000, 0x8000, CRC(68c92bf6) SHA1(90633622dab0e450a29230b600e0d60a42f407f4) )
823
824 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound cpu code */
825 ROM_LOAD( "ninjemak.12", 0x0000, 0x4000, CRC(3d1cd329) SHA1(6abd8e0dbecddfd67c4d358b958c850136fd3c29) )
826 ROM_LOAD( "ninjemak.13", 0x4000, 0x8000, CRC(ac3a0b81) SHA1(39f2c305706e313d5256c357a3c8b57bbe45d3d7) )
827
828 ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
829 ROM_LOAD( "ninjemak.4", 0x00000, 0x8000, CRC(83702c37) SHA1(c063288cf74dee74005c6d0dea57e9ec3adebc83) ) /* chars */
830
831 ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
832 ROM_LOAD( "ninjemak.8", 0x00000, 0x8000, CRC(655f0a58) SHA1(8ffe73cec68d52c7b09651b546289613d6d4dde4) ) /* tiles */
833 ROM_LOAD( "ninjemak.9", 0x08000, 0x8000, CRC(934e1703) SHA1(451f8d01d9035d91c969cdc3fb582a00007da7df) )
834 ROM_LOAD( "ninjemak.10", 0x10000, 0x8000, CRC(955b5c45) SHA1(936bfe2599228dd0861bbcfe15152ac5e9b906d1) )
835 ROM_LOAD( "ninjemak.11", 0x18000, 0x8000, CRC(bbd2e51c) SHA1(51bc266cf8161610204e5d98e56346b1d8d3c009) )
836
837 ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE )
838 ROM_LOAD( "ninjemak.16", 0x00000, 0x8000, CRC(8df93fed) SHA1(ef37c78d4abbdbe9f427e3d9345f52464261116d) ) /* sprites */
839 ROM_LOAD( "ninjemak.17", 0x08000, 0x8000, CRC(a3efd0fc) SHA1(69d40707b0570c2f1be6247f0209ba9e60a83ed0) )
840 ROM_LOAD( "ninjemak.14", 0x10000, 0x8000, CRC(bff332d3) SHA1(d277ba18034b083eaafa969d90685563994416fa) )
841 ROM_LOAD( "ninjemak.15", 0x18000, 0x8000, CRC(56430ed4) SHA1(68356a0f68404ef70d8dc17d5cbdf5e1f28badcf) )
842
843 ROM_REGION( 0x8000, REGION_GFX4, 0 ) /* background tilemaps */
844 ROM_LOAD( "ninjemak.7", 0x0000, 0x4000, CRC(80c20d36) SHA1(f20724754824030d62059388f3ea2224f5b7a60e) )
845 ROM_LOAD( "ninjemak.6", 0x4000, 0x4000, CRC(1da7a651) SHA1(5307452058164a0bc39d144dd204627a9ead7543) )
846
847 ROM_REGION( 0x4000, REGION_GFX5, 0 ) /* data for mcu/blitter? */
848 ROM_LOAD( "ninjemak.5", 0x0000, 0x4000, CRC(5f91dd30) SHA1(3513c0a2e4ca83f602cacad6af9c07fe9e4b16a1) ) /* text layer data */
849
850 ROM_REGION( 0x0500, REGION_PROMS, 0 ) /* Region 3 - color data */
851 ROM_LOAD( "ninjemak.pr1", 0x0000, 0x0100, CRC(8a62d4e4) SHA1(99ca4da01ea1b5585f6e3ebf162c3f988ab317e5) ) /* red */
852 ROM_LOAD( "ninjemak.pr2", 0x0100, 0x0100, CRC(2ccf976f) SHA1(b804ee761793697087fbe3372352f301a22feeab) ) /* green */
853 ROM_LOAD( "ninjemak.pr3", 0x0200, 0x0100, CRC(16b2a7a4) SHA1(53c410b439c8a835447f15f2ab250b363b3f7888) ) /* blue */
854 ROM_LOAD( "yncp-2d.bin", 0x0300, 0x0100, BAD_DUMP CRC(23bade78) SHA1(7e2de5eb08d888f97830807b6dbe85d09bb3b7f8) ) /* sprite lookup table */
855 ROM_LOAD( "yncp-7f.bin", 0x0400, 0x0100, BAD_DUMP CRC(262d0809) SHA1(a67281af02cef082023c0d7d57e3824aeef67450) ) /* sprite palette bank */
856 ROM_END
857
858 ROM_START( youma )
859 ROM_REGION( 0x18000, REGION_CPU1, 0 ) /* main cpu code */
860 ROM_LOAD( "ync-1.bin", 0x00000, 0x8000, CRC(0552adab) SHA1(183cf88d288875fbb2b60e2712e5a1671511351d) )
861 ROM_LOAD( "ync-2.bin", 0x08000, 0x4000, CRC(f961e5e6) SHA1(cbf9d3a256937da9e17734f89652e049242910b8) )
862 ROM_LOAD( "ync-3.bin", 0x10000, 0x8000, CRC(9ad50a5e) SHA1(2532b10e2468b1c74440fd8090489142e5fc240b) )
863
864 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound cpu code */
865 ROM_LOAD( "ninjemak.12", 0x0000, 0x4000, CRC(3d1cd329) SHA1(6abd8e0dbecddfd67c4d358b958c850136fd3c29) )
866 ROM_LOAD( "ninjemak.13", 0x4000, 0x8000, CRC(ac3a0b81) SHA1(39f2c305706e313d5256c357a3c8b57bbe45d3d7) )
867
868 ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
869 ROM_LOAD( "ync-4.bin", 0x00000, 0x8000, CRC(a1954f44) SHA1(b10a22b51bd1a02c0d7b116b4d7390003c41decf) ) /* chars */
870
871 ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
872 ROM_LOAD( "ninjemak.8", 0x00000, 0x8000, CRC(655f0a58) SHA1(8ffe73cec68d52c7b09651b546289613d6d4dde4) ) /* tiles */
873 ROM_LOAD( "ninjemak.9", 0x08000, 0x8000, CRC(934e1703) SHA1(451f8d01d9035d91c969cdc3fb582a00007da7df) )
874 ROM_LOAD( "ninjemak.10", 0x10000, 0x8000, CRC(955b5c45) SHA1(936bfe2599228dd0861bbcfe15152ac5e9b906d1) )
875 ROM_LOAD( "ninjemak.11", 0x18000, 0x8000, CRC(bbd2e51c) SHA1(51bc266cf8161610204e5d98e56346b1d8d3c009) )
876
877 ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE )
878 ROM_LOAD( "ninjemak.16", 0x00000, 0x8000, CRC(8df93fed) SHA1(ef37c78d4abbdbe9f427e3d9345f52464261116d) ) /* sprites */
879 ROM_LOAD( "ninjemak.17", 0x08000, 0x8000, CRC(a3efd0fc) SHA1(69d40707b0570c2f1be6247f0209ba9e60a83ed0) )
880 ROM_LOAD( "ninjemak.14", 0x10000, 0x8000, CRC(bff332d3) SHA1(d277ba18034b083eaafa969d90685563994416fa) )
881 ROM_LOAD( "ninjemak.15", 0x18000, 0x8000, CRC(56430ed4) SHA1(68356a0f68404ef70d8dc17d5cbdf5e1f28badcf) )
882
883 ROM_REGION( 0x8000, REGION_GFX4, 0 ) /* background tilemaps */
884 ROM_LOAD( "ninjemak.7", 0x0000, 0x4000, CRC(80c20d36) SHA1(f20724754824030d62059388f3ea2224f5b7a60e) )
885 ROM_LOAD( "ninjemak.6", 0x4000, 0x4000, CRC(1da7a651) SHA1(5307452058164a0bc39d144dd204627a9ead7543) )
886
887 ROM_REGION( 0x4000, REGION_GFX5, 0 ) /* data for mcu/blitter? */
888 ROM_LOAD( "ync-5.bin", 0x0000, 0x4000, CRC(993e4ab2) SHA1(aceafc83b36db4db923d27f77ad045e626678bae) ) /* text layer data */
889
890 ROM_REGION( 0x0500, REGION_PROMS, 0 ) /* Region 3 - color data */
891 ROM_LOAD( "yncp-6e.bin", 0x0000, 0x0100, CRC(ea47b91a) SHA1(9921aa1ef882fb664d85d3e065223610262ca112) ) /* red */
892 ROM_LOAD( "yncp-7e.bin", 0x0100, 0x0100, CRC(e94c0fed) SHA1(68581c91e9aa485f78af6b6a5c98612372cd5b17) ) /* green */
893 ROM_LOAD( "yncp-8e.bin", 0x0200, 0x0100, CRC(ffb4b287) SHA1(c3c7018e6d5e18cc2db135812d0dc3824710ab4c) ) /* blue */
894 ROM_LOAD( "yncp-2d.bin", 0x0300, 0x0100, CRC(23bade78) SHA1(7e2de5eb08d888f97830807b6dbe85d09bb3b7f8) ) /* sprite lookup table */
895 ROM_LOAD( "yncp-7f.bin", 0x0400, 0x0100, CRC(262d0809) SHA1(a67281af02cef082023c0d7d57e3824aeef67450) ) /* sprite palette bank */
896 ROM_END
897
898
899
900 GAME( 1985, galivan, 0, galivan, galivan, 0, ROT270, "Nichibutsu", "Galivan - Cosmo Police (12-16-1985)" )
901 GAME( 1985, galivan2, galivan, galivan, galivan, 0, ROT270, "Nichibutsu", "Galivan - Cosmo Police (12-11-1985)" )
902 GAME( 1986, dangar, 0, galivan, dangar, 0, ROT270, "Nichibutsu", "Dangar - Ufo Robo (12-1-1986)" )
903 GAME( 1986, dangar2, dangar, galivan, dangar2, 0, ROT270, "Nichibutsu", "Dangar - Ufo Robo (9-26-1986)" )
904 GAME( 1986, dangarb, dangar, galivan, dangarb, 0, ROT270, "bootleg", "Dangar - Ufo Robo (bootleg)" )
905 GAME( 1986, ninjemak, 0, ninjemak, ninjemak, 0, ROT270, "Nichibutsu", "Ninja Emaki (US)" )
906 GAME( 1986, youma, ninjemak, ninjemak, ninjemak, 0, ROT270, "Nichibutsu", "Youma Ninpou Chou (Japan)" )
907