1 /***************************************************************************
2
3 Dark Seal (Rev 3) (c) 1990 Data East Corporation (World version)
4 Dark Seal (Rev 1) (c) 1990 Data East Corporation (World version)
5 Dark Seal (c) 1990 Data East Corporation (Japanese version)
6 Gate Of Doom (Rev 4) (c) 1990 Data East Corporation (USA version)
7 Gate of Doom (Rev 1) (c) 1990 Data East Corporation (USA version)
8
9 Emulation by Bryan McPhail, mish@tendril.co.uk
10
11 ***************************************************************************/
12
13 #include "driver.h"
14 #include "vidhrdw/generic.h"
15 #include "cpu/h6280/h6280.h"
16
17 VIDEO_START( darkseal );
18 VIDEO_UPDATE( darkseal );
19
20 WRITE16_HANDLER( darkseal_pf1_data_w );
21 WRITE16_HANDLER( darkseal_pf2_data_w );
22 WRITE16_HANDLER( darkseal_pf3_data_w );
23 WRITE16_HANDLER( darkseal_pf3b_data_w );
24 WRITE16_HANDLER( darkseal_control_0_w );
25 WRITE16_HANDLER( darkseal_control_1_w );
26 WRITE16_HANDLER( darkseal_palette_24bit_rg_w );
27 WRITE16_HANDLER( darkseal_palette_24bit_b_w );
28 extern data16_t *darkseal_pf12_row, *darkseal_pf34_row;
29 extern data16_t *darkseal_pf1_data,*darkseal_pf2_data,*darkseal_pf3_data;
30 static data16_t *darkseal_ram;
31
32 /******************************************************************************/
33
WRITE16_HANDLER(darkseal_control_w)34 static WRITE16_HANDLER( darkseal_control_w )
35 {
36 switch (offset<<1) {
37 case 6: /* DMA flag */
38 buffer_spriteram16_w(0,0,0);
39 return;
40 case 8: /* Sound CPU write */
41 soundlatch_w(0,data & 0xff);
42 cpu_set_irq_line(1,0,HOLD_LINE);
43 return;
44 case 0xa: /* IRQ Ack (VBL) */
45 return;
46 }
47 }
48
READ16_HANDLER(darkseal_control_r)49 static READ16_HANDLER( darkseal_control_r )
50 {
51 switch (offset<<1)
52 {
53 case 0: /* Dip Switches */
54 return (readinputport(3) + (readinputport(4) << 8));
55
56 case 2: /* Player 1 & Player 2 joysticks & fire buttons */
57 return (readinputport(0) + (readinputport(1) << 8));
58
59 case 4: /* Credits */
60 return readinputport(2);
61 }
62
63 return ~0;
64 }
65
66 /******************************************************************************/
67
MEMORY_READ16_START(darkseal_readmem)68 static MEMORY_READ16_START( darkseal_readmem )
69 { 0x000000, 0x07ffff, MRA16_ROM },
70 { 0x100000, 0x103fff, MRA16_RAM },
71 { 0x120000, 0x1207ff, MRA16_RAM },
72 { 0x140000, 0x140fff, MRA16_RAM },
73 { 0x141000, 0x141fff, MRA16_RAM },
74 { 0x180000, 0x18000f, darkseal_control_r },
75 { 0x220000, 0x220fff, MRA16_RAM },
76 { 0x222000, 0x222fff, MRA16_RAM },
77 MEMORY_END
78
79 static MEMORY_WRITE16_START( darkseal_writemem )
80 { 0x000000, 0x07ffff, MWA16_ROM },
81 { 0x100000, 0x103fff, MWA16_RAM, &darkseal_ram },
82 { 0x120000, 0x1207ff, MWA16_RAM, &spriteram16, &spriteram_size },
83 { 0x140000, 0x140fff, darkseal_palette_24bit_rg_w, &paletteram16 },
84 { 0x141000, 0x141fff, darkseal_palette_24bit_b_w, &paletteram16_2 },
85 { 0x180000, 0x18000f, darkseal_control_w },
86 { 0x200000, 0x200fff, darkseal_pf3b_data_w }, /* 2nd half of pf3, only used on last level */
87 { 0x202000, 0x203fff, darkseal_pf3_data_w, &darkseal_pf3_data },
88 { 0x220000, 0x220fff, MWA16_RAM, &darkseal_pf12_row },
89 { 0x222000, 0x222fff, MWA16_RAM, &darkseal_pf34_row },
90 { 0x240000, 0x24000f, darkseal_control_0_w },
91 { 0x260000, 0x261fff, darkseal_pf2_data_w, &darkseal_pf2_data },
92 { 0x262000, 0x263fff, darkseal_pf1_data_w, &darkseal_pf1_data },
93 { 0x2a0000, 0x2a000f, darkseal_control_1_w },
94 MEMORY_END
95
96 /******************************************************************************/
97
98 static WRITE_HANDLER( YM2151_w )
99 {
100 switch (offset) {
101 case 0:
102 YM2151_register_port_0_w(0,data);
103 break;
104 case 1:
105 YM2151_data_port_0_w(0,data);
106 break;
107 }
108 }
109
WRITE_HANDLER(YM2203_w)110 static WRITE_HANDLER( YM2203_w )
111 {
112 switch (offset) {
113 case 0:
114 YM2203_control_port_0_w(0,data);
115 break;
116 case 1:
117 YM2203_write_port_0_w(0,data);
118 break;
119 }
120 }
121
MEMORY_READ_START(sound_readmem)122 static MEMORY_READ_START( sound_readmem )
123 { 0x000000, 0x00ffff, MRA_ROM },
124 { 0x100000, 0x100001, YM2203_status_port_0_r },
125 { 0x110000, 0x110001, YM2151_status_port_0_r },
126 { 0x120000, 0x120001, OKIM6295_status_0_r },
127 { 0x130000, 0x130001, OKIM6295_status_1_r },
128 { 0x140000, 0x140001, soundlatch_r },
129 { 0x1f0000, 0x1f1fff, MRA_BANK8 },
130 MEMORY_END
131
132 static MEMORY_WRITE_START( sound_writemem )
133 { 0x000000, 0x00ffff, MWA_ROM },
134 { 0x100000, 0x100001, YM2203_w },
135 { 0x110000, 0x110001, YM2151_w },
136 { 0x120000, 0x120001, OKIM6295_data_0_w },
137 { 0x130000, 0x130001, OKIM6295_data_1_w },
138 { 0x1f0000, 0x1f1fff, MWA_BANK8 },
139 { 0x1fec00, 0x1fec01, H6280_timer_w },
140 { 0x1ff402, 0x1ff403, H6280_irq_status_w },
141 MEMORY_END
142
143 /******************************************************************************/
144
145 INPUT_PORTS_START( darkseal )
146 PORT_START /* Player 1 controls */
147 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
148 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
149 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
150 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
151 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
152 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
153 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) /* button 3 - unused */
154 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
155
156 PORT_START /* Player 2 controls */
157 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
158 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
159 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
160 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
161 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
162 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
163 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) /* button 3 - unused */
164 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
165
166 PORT_START /* Credits */
167 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
168 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
169 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
170 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
171 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
172 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
173 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
174 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
175
176 PORT_START /* Dip switch bank 1 */
177 PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) )
178 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
179 PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
180 PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
181 PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )
182 PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
183 PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) )
184 PORT_DIPSETTING( 0x03, DEF_STR( 1C_5C ) )
185 PORT_DIPSETTING( 0x02, DEF_STR( 1C_6C ) )
186 PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) )
187 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
188 PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) )
189 PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) )
190 PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) )
191 PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) )
192 PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) )
193 PORT_DIPSETTING( 0x18, DEF_STR( 1C_5C ) )
194 PORT_DIPSETTING( 0x10, DEF_STR( 1C_6C ) )
195 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
196 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
197 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
198 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
199 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
200 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
201
202 PORT_START /* Dip switch bank 2 */
203 PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
204 PORT_DIPSETTING( 0x00, "1" )
205 PORT_DIPSETTING( 0x01, "2" )
206 PORT_DIPSETTING( 0x03, "3" )
207 PORT_DIPSETTING( 0x02, "4" )
208 PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
209 PORT_DIPSETTING( 0x08, "Easy" )
210 PORT_DIPSETTING( 0x0c, "Normal" )
211 PORT_DIPSETTING( 0x04, "Hard" )
212 PORT_DIPSETTING( 0x00, "Hardest" )
213 PORT_DIPNAME( 0x30, 0x30, "Energy" )
214 PORT_DIPSETTING( 0x00, "2" )
215 PORT_DIPSETTING( 0x10, "2.5" )
216 PORT_DIPSETTING( 0x30, "3" )
217 PORT_DIPSETTING( 0x20, "4" )
218 PORT_DIPNAME( 0x40, 0x40, "Allow Continue" )
219 PORT_DIPSETTING( 0x00, DEF_STR( No ) )
220 PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
221 PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) )
222 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
223 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
224 INPUT_PORTS_END
225
226 /******************************************************************************/
227
228 static struct GfxLayout charlayout =
229 {
230 8,8, /* 8*8 chars */
231 4096,
232 4, /* 4 bits per pixel */
233 { 0x00000*8, 0x10000*8, 0x8000*8, 0x18000*8 },
234 { 0, 1, 2, 3, 4, 5, 6, 7 },
235 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
236 8*8 /* every char takes 8 consecutive bytes */
237 };
238
239 static struct GfxLayout seallayout =
240 {
241 16,16,
242 4096,
243 4,
244 { 8, 0, 0x40000*8+8, 0x40000*8,},
245 { 32*8+0, 32*8+1, 32*8+2, 32*8+3, 32*8+4, 32*8+5, 32*8+6, 32*8+7,
246 0, 1, 2, 3, 4, 5, 6, 7 },
247 { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
248 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
249 64*8
250 };
251
252 static struct GfxLayout seallayout2 =
253 {
254 16,16,
255 4096*2,
256 4,
257 { 8, 0, 0x80000*8+8, 0x80000*8 },
258 { 32*8+0, 32*8+1, 32*8+2, 32*8+3, 32*8+4, 32*8+5, 32*8+6, 32*8+7,
259 0, 1, 2, 3, 4, 5, 6, 7 },
260 { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
261 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
262 64*8
263 };
264
265 static struct GfxDecodeInfo gfxdecodeinfo[] =
266 {
267 { REGION_GFX1, 0, &charlayout, 0, 16 }, /* Characters 8x8 */
268 { REGION_GFX2, 0, &seallayout, 768, 16 }, /* Tiles 16x16 */
269 { REGION_GFX3, 0, &seallayout, 1024, 16 }, /* Tiles 16x16 */
270 { REGION_GFX4, 0, &seallayout2, 256, 32 }, /* Sprites 16x16 */
271 { -1 } /* end of array */
272 };
273
274 /******************************************************************************/
275
276 static struct OKIM6295interface okim6295_interface =
277 {
278 2, /* 2 chips */
279 { 32220000/32/132, 32220000/16/132 },/* Frequency */
280 { REGION_SOUND1, REGION_SOUND2 },
281 { 75, 60 } /* Note! Keep chip 1 (voices) louder than chip 2 */
282 };
283
284 static struct YM2203interface ym2203_interface =
285 {
286 1,
287 32220000/8, /* Accurate, audio section crystal is 32.220 MHz */
288 { YM2203_VOL(60,60) },
289 { 0 },
290 { 0 },
291 { 0 },
292 { 0 }
293 };
294
sound_irq(int state)295 static void sound_irq(int state)
296 {
297 cpu_set_irq_line(1,1,state); /* IRQ 2 */
298 }
299
300 static struct YM2151interface ym2151_interface =
301 {
302 1,
303 32220000/9, /* Accurate, audio section crystal is 32.220 MHz */
304 { YM3012_VOL(45,MIXER_PAN_LEFT,45,MIXER_PAN_RIGHT) },
305 { sound_irq }
306 };
307
308 static MACHINE_DRIVER_START( darkseal )
309
310 /* basic machine hardware */
311 MDRV_CPU_ADD(M68000,12000000) /* Custom chip 59 */
MDRV_CPU_MEMORY(darkseal_readmem,darkseal_writemem)312 MDRV_CPU_MEMORY(darkseal_readmem,darkseal_writemem)
313 MDRV_CPU_VBLANK_INT(irq6_line_hold,1)/* VBL */
314
315 MDRV_CPU_ADD(H6280, 32220000/8) /* Custom chip 45, Audio section crystal is 32.220 MHz */
316 MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
317 MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
318
319 MDRV_FRAMES_PER_SECOND(58)
320 MDRV_VBLANK_DURATION(529)
321
322 /* video hardware */
323 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_NEEDS_6BITS_PER_GUN | VIDEO_BUFFERS_SPRITERAM)
324 MDRV_SCREEN_SIZE(32*8, 32*8)
325 MDRV_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
326 MDRV_GFXDECODE(gfxdecodeinfo)
327 MDRV_PALETTE_LENGTH(2048)
328
329 MDRV_VIDEO_START(darkseal)
330 MDRV_VIDEO_UPDATE(darkseal)
331
332 /* sound hardware */
333 MDRV_SOUND_ADD(YM2203, ym2203_interface)
334 MDRV_SOUND_ADD(YM2151, ym2151_interface)
335 MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
336 MACHINE_DRIVER_END
337
338 /******************************************************************************/
339
340 ROM_START( darkseal )
341 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 68000 code */
342 ROM_LOAD16_BYTE( "ga04-3.rom", 0x00000, 0x20000, CRC(bafad556) SHA1(5bd8a787d41a33919701ced29212bc11301e31d9) )
343 ROM_LOAD16_BYTE( "ga01-3.rom", 0x00001, 0x20000, CRC(f409050e) SHA1(4653094aeb5dd7ba1e490c04897a23ba8990df3c) )
344 ROM_LOAD16_BYTE( "ga-00.rom", 0x40000, 0x20000, CRC(fbf3ac63) SHA1(51af581ee951eedeb4aa413ecbebe8bf4d30613b) )
345 ROM_LOAD16_BYTE( "ga-05.rom", 0x40001, 0x20000, CRC(d5e3ae3f) SHA1(12f6e92af115422c6ab6ef1d33675d1e1cd58e10) )
346
347 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU */
348 ROM_LOAD( "fz-06.rom", 0x00000, 0x10000, CRC(c4828a6d) SHA1(fbfd0c85730bbe18401879cd68c19aaec9d482d8) )
349
350 ROM_REGION( 0x020000, REGION_GFX1, ROMREGION_DISPOSE )
351 ROM_LOAD( "fz-02.rom", 0x000000, 0x10000, CRC(3c9c3012) SHA1(086c2123725d4aa32838c0b6c82317d9c789c465) ) /* chars */
352 ROM_LOAD( "fz-03.rom", 0x010000, 0x10000, CRC(264b90ed) SHA1(0bb1557673107c2d732a9374d5601a6eaf229473) )
353
354 ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE )
355 ROM_LOAD( "mac-03.rom", 0x000000, 0x80000, CRC(9996f3dc) SHA1(fffd9ecfe142a0c7c3c9c521778ff9c55ea8b225) ) /* tiles 1 */
356
357 ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
358 ROM_LOAD( "mac-02.rom", 0x000000, 0x80000, CRC(49504e89) SHA1(6da4733a650b9040abb2a81a49476368b514b5ab) ) /* tiles 2 */
359
360 ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE )
361 ROM_LOAD( "mac-00.rom", 0x000000, 0x80000, CRC(52acf1d6) SHA1(a7b68782417baafc86371b106fd31c5317f5b3d8) ) /* sprites */
362 ROM_LOAD( "mac-01.rom", 0x080000, 0x80000, CRC(b28f7584) SHA1(e02ddd45130a7b50f80b6dd049059dba8071d768) )
363
364 ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* ADPCM samples */
365 ROM_LOAD( "fz-08.rom", 0x00000, 0x20000, CRC(c9bf68e1) SHA1(c81e2534a814fe44c8787946a9fbe18f1743c3b4) )
366
367 ROM_REGION( 0x20000, REGION_SOUND2, 0 ) /* ADPCM samples */
368 ROM_LOAD( "fz-07.rom", 0x00000, 0x20000, CRC(588dd3cb) SHA1(16c4e7670a4967768ddbfd52939d4e6e42268441) )
369 ROM_END
370
371 ROM_START( darksea1 )
372 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 68000 code */
373 ROM_LOAD16_BYTE( "ga-04.rom", 0x00000, 0x20000, CRC(a1a985a9) SHA1(eac3f43ff4016dcc21fe34b6bfed36e0d4b86959) )
374 ROM_LOAD16_BYTE( "ga-01.rom", 0x00001, 0x20000, CRC(98bd2940) SHA1(88ac727c3797e646834266320a71aa159e2b2541) )
375 ROM_LOAD16_BYTE( "ga-00.rom", 0x40000, 0x20000, CRC(fbf3ac63) SHA1(51af581ee951eedeb4aa413ecbebe8bf4d30613b) )
376 ROM_LOAD16_BYTE( "ga-05.rom", 0x40001, 0x20000, CRC(d5e3ae3f) SHA1(12f6e92af115422c6ab6ef1d33675d1e1cd58e10) )
377
378 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU */
379 ROM_LOAD( "fz-06.rom", 0x00000, 0x10000, CRC(c4828a6d) SHA1(fbfd0c85730bbe18401879cd68c19aaec9d482d8) )
380
381 ROM_REGION( 0x020000, REGION_GFX1, ROMREGION_DISPOSE )
382 ROM_LOAD( "fz-02.rom", 0x000000, 0x10000, CRC(3c9c3012) SHA1(086c2123725d4aa32838c0b6c82317d9c789c465) ) /* chars */
383 ROM_LOAD( "fz-03.rom", 0x010000, 0x10000, CRC(264b90ed) SHA1(0bb1557673107c2d732a9374d5601a6eaf229473) )
384
385 ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE )
386 ROM_LOAD( "mac-03.rom", 0x000000, 0x80000, CRC(9996f3dc) SHA1(fffd9ecfe142a0c7c3c9c521778ff9c55ea8b225) ) /* tiles 1 */
387
388 ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
389 ROM_LOAD( "mac-02.rom", 0x000000, 0x80000, CRC(49504e89) SHA1(6da4733a650b9040abb2a81a49476368b514b5ab) ) /* tiles 2 */
390
391 ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE )
392 ROM_LOAD( "mac-00.rom", 0x000000, 0x80000, CRC(52acf1d6) SHA1(a7b68782417baafc86371b106fd31c5317f5b3d8) ) /* sprites */
393 ROM_LOAD( "mac-01.rom", 0x080000, 0x80000, CRC(b28f7584) SHA1(e02ddd45130a7b50f80b6dd049059dba8071d768) )
394
395 ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* ADPCM samples */
396 ROM_LOAD( "fz-08.rom", 0x00000, 0x20000, CRC(c9bf68e1) SHA1(c81e2534a814fe44c8787946a9fbe18f1743c3b4) )
397
398 ROM_REGION( 0x20000, REGION_SOUND2, 0 ) /* ADPCM samples */
399 ROM_LOAD( "fz-07.rom", 0x00000, 0x20000, CRC(588dd3cb) SHA1(16c4e7670a4967768ddbfd52939d4e6e42268441) )
400 ROM_END
401
402 ROM_START( darkseaj )
403 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 68000 code */
404 ROM_LOAD16_BYTE( "fz-04.bin", 0x00000, 0x20000, CRC(817faa2c) SHA1(8a79703f0e3aeb2ceeb098466561ab604baef301) )
405 ROM_LOAD16_BYTE( "fz-01.bin", 0x00001, 0x20000, CRC(373caeee) SHA1(5cfa0c7672c439e9d011d9ec93da32c2377dce19) )
406 ROM_LOAD16_BYTE( "fz-00.bin", 0x40000, 0x20000, CRC(1ab99aa7) SHA1(1da51f3ee0d15094911d4090264b945090d51242) )
407 ROM_LOAD16_BYTE( "fz-05.bin", 0x40001, 0x20000, CRC(3374ef8c) SHA1(4144e71e452e281078bcd9b9a996db9f5dccc346) )
408
409 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU */
410 ROM_LOAD( "fz-06.rom", 0x00000, 0x10000, CRC(c4828a6d) SHA1(fbfd0c85730bbe18401879cd68c19aaec9d482d8) )
411
412 ROM_REGION( 0x020000, REGION_GFX1, ROMREGION_DISPOSE )
413 ROM_LOAD( "fz-02.rom", 0x000000, 0x10000, CRC(3c9c3012) SHA1(086c2123725d4aa32838c0b6c82317d9c789c465) ) /* chars */
414 ROM_LOAD( "fz-03.rom", 0x010000, 0x10000, CRC(264b90ed) SHA1(0bb1557673107c2d732a9374d5601a6eaf229473) )
415
416 ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE )
417 ROM_LOAD( "mac-03.rom", 0x000000, 0x80000, CRC(9996f3dc) SHA1(fffd9ecfe142a0c7c3c9c521778ff9c55ea8b225) ) /* tiles 1 */
418
419 ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
420 ROM_LOAD( "mac-02.rom", 0x000000, 0x80000, CRC(49504e89) SHA1(6da4733a650b9040abb2a81a49476368b514b5ab) ) /* tiles 2 */
421
422 ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE )
423 ROM_LOAD( "mac-00.rom", 0x000000, 0x80000, CRC(52acf1d6) SHA1(a7b68782417baafc86371b106fd31c5317f5b3d8) ) /* sprites */
424 ROM_LOAD( "mac-01.rom", 0x080000, 0x80000, CRC(b28f7584) SHA1(e02ddd45130a7b50f80b6dd049059dba8071d768) )
425
426 ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* ADPCM samples */
427 ROM_LOAD( "fz-08.rom", 0x00000, 0x20000, CRC(c9bf68e1) SHA1(c81e2534a814fe44c8787946a9fbe18f1743c3b4) )
428
429 ROM_REGION( 0x20000, REGION_SOUND2, 0 ) /* ADPCM samples */
430 ROM_LOAD( "fz-07.rom", 0x00000, 0x20000, CRC(588dd3cb) SHA1(16c4e7670a4967768ddbfd52939d4e6e42268441) )
431 ROM_END
432
433 ROM_START( gatedoom )
434 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 68000 code */
435 ROM_LOAD16_BYTE( "gb04-4", 0x00000, 0x20000, CRC(8e3a0bfd) SHA1(1d20bd678a630e2006c7f50f4d13656136db3721) )
436 ROM_LOAD16_BYTE( "gb01-4", 0x00001, 0x20000, CRC(8d0fd383) SHA1(797e3cf43c9315b4195232eb1787a2292af4901b) )
437 ROM_LOAD16_BYTE( "ga-00.rom", 0x40000, 0x20000, CRC(fbf3ac63) SHA1(51af581ee951eedeb4aa413ecbebe8bf4d30613b) )
438 ROM_LOAD16_BYTE( "ga-05.rom", 0x40001, 0x20000, CRC(d5e3ae3f) SHA1(12f6e92af115422c6ab6ef1d33675d1e1cd58e10) )
439
440 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU */
441 ROM_LOAD( "fz-06.rom", 0x00000, 0x10000, CRC(c4828a6d) SHA1(fbfd0c85730bbe18401879cd68c19aaec9d482d8) )
442
443 ROM_REGION( 0x020000, REGION_GFX1, ROMREGION_DISPOSE )
444 ROM_LOAD( "fz-02.rom", 0x000000, 0x10000, CRC(3c9c3012) SHA1(086c2123725d4aa32838c0b6c82317d9c789c465) ) /* chars */
445 ROM_LOAD( "fz-03.rom", 0x010000, 0x10000, CRC(264b90ed) SHA1(0bb1557673107c2d732a9374d5601a6eaf229473) )
446
447 ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE )
448 ROM_LOAD( "mac-03.rom", 0x000000, 0x80000, CRC(9996f3dc) SHA1(fffd9ecfe142a0c7c3c9c521778ff9c55ea8b225) ) /* tiles 1 */
449
450 ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
451 ROM_LOAD( "mac-02.rom", 0x000000, 0x80000, CRC(49504e89) SHA1(6da4733a650b9040abb2a81a49476368b514b5ab) ) /* tiles 2 */
452
453 ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE )
454 ROM_LOAD( "mac-00.rom", 0x000000, 0x80000, CRC(52acf1d6) SHA1(a7b68782417baafc86371b106fd31c5317f5b3d8) ) /* sprites */
455 ROM_LOAD( "mac-01.rom", 0x080000, 0x80000, CRC(b28f7584) SHA1(e02ddd45130a7b50f80b6dd049059dba8071d768) )
456
457 ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* ADPCM samples */
458 ROM_LOAD( "fz-08.rom", 0x00000, 0x20000, CRC(c9bf68e1) SHA1(c81e2534a814fe44c8787946a9fbe18f1743c3b4) )
459
460 ROM_REGION( 0x20000, REGION_SOUND2, 0 ) /* ADPCM samples */
461 ROM_LOAD( "fz-07.rom", 0x00000, 0x20000, CRC(588dd3cb) SHA1(16c4e7670a4967768ddbfd52939d4e6e42268441) )
462 ROM_END
463
464 ROM_START( gatedom1 )
465 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 68000 code */
466 ROM_LOAD16_BYTE( "gb04.bin", 0x00000, 0x20000, CRC(4c3bbd2b) SHA1(e74a532edd01a559d0c388b37a2ead98c19fe5de) )
467 ROM_LOAD16_BYTE( "gb01.bin", 0x00001, 0x20000, CRC(59e367f4) SHA1(f88fa23b8e91f312103eb8a1d9a91d8171ec3ad4) )
468 ROM_LOAD16_BYTE( "gb00.bin", 0x40000, 0x20000, CRC(a88c16a1) SHA1(e02d5470692f23afa658b9bda933bb20be64602f) )
469 ROM_LOAD16_BYTE( "gb05.bin", 0x40001, 0x20000, CRC(252d7e14) SHA1(b2f27cd9686dfc697f3faca74d20b298a59efab2) )
470
471 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU */
472 ROM_LOAD( "fz-06.rom", 0x00000, 0x10000, CRC(c4828a6d) SHA1(fbfd0c85730bbe18401879cd68c19aaec9d482d8) )
473
474 ROM_REGION( 0x020000, REGION_GFX1, ROMREGION_DISPOSE )
475 ROM_LOAD( "fz-02.rom", 0x000000, 0x10000, CRC(3c9c3012) SHA1(086c2123725d4aa32838c0b6c82317d9c789c465) ) /* chars */
476 ROM_LOAD( "fz-03.rom", 0x010000, 0x10000, CRC(264b90ed) SHA1(0bb1557673107c2d732a9374d5601a6eaf229473) )
477
478 /* the following four have not been verified on a real Gate of Doom */
479 /* board - might be different from Dark Seal! */
480
481 ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE )
482 ROM_LOAD( "mac-03.rom", 0x000000, 0x80000, CRC(9996f3dc) SHA1(fffd9ecfe142a0c7c3c9c521778ff9c55ea8b225) ) /* tiles 1 */
483
484 ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
485 ROM_LOAD( "mac-02.rom", 0x000000, 0x80000, CRC(49504e89) SHA1(6da4733a650b9040abb2a81a49476368b514b5ab) ) /* tiles 2 */
486
487 ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE )
488 ROM_LOAD( "mac-00.rom", 0x000000, 0x80000, CRC(52acf1d6) SHA1(a7b68782417baafc86371b106fd31c5317f5b3d8) ) /* sprites */
489 ROM_LOAD( "mac-01.rom", 0x080000, 0x80000, CRC(b28f7584) SHA1(e02ddd45130a7b50f80b6dd049059dba8071d768) )
490
491 ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* ADPCM samples */
492 ROM_LOAD( "fz-08.rom", 0x00000, 0x20000, CRC(c9bf68e1) SHA1(c81e2534a814fe44c8787946a9fbe18f1743c3b4) )
493
494 ROM_REGION( 0x20000, REGION_SOUND2, 0 ) /* ADPCM samples */
495 ROM_LOAD( "fz-07.rom", 0x00000, 0x20000, CRC(588dd3cb) SHA1(16c4e7670a4967768ddbfd52939d4e6e42268441) )
496 ROM_END
497
498 /******************************************************************************/
499
500 static DRIVER_INIT( darkseal )
501 {
502 unsigned char *RAM = memory_region(REGION_CPU1);
503 int i;
504
505 for (i=0x00000; i<0x80000; i++)
506 RAM[i]=(RAM[i] & 0xbd) | ((RAM[i] & 0x02) << 5) | ((RAM[i] & 0x40) >> 5);
507
508 }
509
510 /******************************************************************************/
511
512 GAME( 1990, darkseal, 0, darkseal, darkseal, darkseal, ROT0, "Data East Corporation", "Dark Seal (World revision 3)" )
513 GAME( 1990, darksea1, darkseal, darkseal, darkseal, darkseal, ROT0, "Data East Corporation", "Dark Seal (World revision 1)" )
514 GAME( 1990, darkseaj, darkseal, darkseal, darkseal, darkseal, ROT0, "Data East Corporation", "Dark Seal (Japan)" )
515 GAME( 1990, gatedoom, darkseal, darkseal, darkseal, darkseal, ROT0, "Data East Corporation", "Gate of Doom (US revision 4)" )
516 GAME( 1990, gatedom1, darkseal, darkseal, darkseal, darkseal, ROT0, "Data East Corporation", "Gate of Doom (US revision 1)" )
517