1 /******************************************************************
2 
3 Volfied (c) 1989 Taito Corporation
4 ==================================
5 
6   Original driver from RAINE
7 
8   68000 (8MHz?) + Z80 (4MHz?) + YM-2203 (4MHz?) + C-Chip
9 
10   VIDEO RAM: 12 * MB-81461 (256k VRAM)
11 
12   Known issues:
13 
14     - color information for the enemy sprites is missing (c-chip)
15     - some bits in video RAM are not understood
16     - sound seems a bit rough at times
17 
18 ********************************************************************/
19 
20 #include "driver.h"
21 #include "vidhrdw/generic.h"
22 #include "vidhrdw/taitoic.h"
23 #include "sndhrdw/taitosnd.h"
24 
25 WRITE16_HANDLER( volfied_sprite_ctrl_w );
26 WRITE16_HANDLER( volfied_video_ram_w );
27 WRITE16_HANDLER( volfied_video_ctrl_w );
28 WRITE16_HANDLER( volfied_video_mask_w );
29 WRITE16_HANDLER( volfied_cchip_w );
30 
31 READ16_HANDLER( volfied_video_ram_r );
32 READ16_HANDLER( volfied_video_ctrl_r );
33 READ16_HANDLER( volfied_cchip_r );
34 
35 VIDEO_UPDATE( volfied );
36 
37 VIDEO_START( volfied );
38 
39 void volfied_cchip_init(void);
40 
41 
42 /***********************************************************
43 				MEMORY STRUCTURES
44 ***********************************************************/
45 
MEMORY_READ16_START(volfied_readmem)46 static MEMORY_READ16_START( volfied_readmem )
47 	{ 0x000000, 0x03ffff, MRA16_ROM },    /* program */
48 	{ 0x080000, 0x0fffff, MRA16_ROM },    /* tiles   */
49 	{ 0x100000, 0x103fff, MRA16_RAM },    /* main    */
50 	{ 0x200000, 0x203fff, PC090OJ_word_0_r },
51 	{ 0x400000, 0x47ffff, volfied_video_ram_r },
52 	{ 0x500000, 0x503fff, paletteram16_word_r },
53 	{ 0xd00000, 0xd00001, volfied_video_ctrl_r },
54 	{ 0xe00002, 0xe00003, taitosound_comm16_lsb_r },
55 	{ 0xf00000, 0xf00803, volfied_cchip_r },
56 MEMORY_END
57 
58 static MEMORY_WRITE16_START( volfied_writemem )
59 	{ 0x000000, 0x03ffff, MWA16_ROM },    /* program */
60 	{ 0x080000, 0x0fffff, MWA16_ROM },    /* tiles   */
61 	{ 0x100000, 0x103fff, MWA16_RAM },    /* main    */
62 	{ 0x200000, 0x203fff, PC090OJ_word_0_w },
63 	{ 0x400000, 0x47ffff, volfied_video_ram_w },
64 	{ 0x500000, 0x503fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
65 	{ 0x600000, 0x600001, volfied_video_mask_w },
66 	{ 0x700000, 0x700001, volfied_sprite_ctrl_w },
67 	{ 0xd00000, 0xd00001, volfied_video_ctrl_w },
68 	{ 0xe00000, 0xe00001, taitosound_port16_lsb_w },
69 	{ 0xe00002, 0xe00003, taitosound_comm16_lsb_w },
70 	{ 0xf00000, 0xf00c01, volfied_cchip_w },
71 MEMORY_END
72 
73 static MEMORY_READ_START( z80_readmem )
74 	{ 0x0000, 0x7fff, MRA_ROM },
75 	{ 0x8000, 0x87ff, MRA_RAM },
76 	{ 0x8801, 0x8801, taitosound_slave_comm_r },
77 	{ 0x9000, 0x9000, YM2203_status_port_0_r },
78 	{ 0x9001, 0x9001, YM2203_read_port_0_r },
79 MEMORY_END
80 
81 static MEMORY_WRITE_START( z80_writemem )
82 	{ 0x0000, 0x7fff, MWA_ROM },
83 	{ 0x8000, 0x87ff, MWA_RAM },
84 	{ 0x8800, 0x8800, taitosound_slave_port_w },
85 	{ 0x8801, 0x8801, taitosound_slave_comm_w },
86 	{ 0x9000, 0x9000, YM2203_control_port_0_w },
87 	{ 0x9001, 0x9001, YM2203_write_port_0_w },
88 	{ 0x9800, 0x9800, MWA_NOP },    /* ? */
89 MEMORY_END
90 
91 
92 /***********************************************************
93 				INPUT PORTS
94 ***********************************************************/
95 
96 #define VOLFIED_INPUT_BITS                                                          \
97 	PORT_START                                                                    \
98 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )                                   \
99 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )                                   \
100 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 )                                 \
101 	                                                                              \
102 	PORT_START                                                                    \
103 	PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN1, 1 )                        \
104 	PORT_BIT_IMPULSE( 0x02, IP_ACTIVE_HIGH, IPT_COIN2, 1 )                        \
105 	                                                                              \
106 	PORT_START                                                                    \
107 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT )                                     \
108 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY )                \
109 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY )                \
110 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY )                \
111 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )                \
112 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 )                                  \
113 	                                                                              \
114 	PORT_START                                                                    \
115 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_COCKTAIL ) \
116 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_COCKTAIL ) \
117 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_COCKTAIL ) \
118 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_COCKTAIL ) \
119 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
120 
121 
122 INPUT_PORTS_START( volfied )
123 	PORT_START	/* DSW A */
124 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
125 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
126 	PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
127 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
128 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
129 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
130 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
131 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
132 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
133 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
134 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
135 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
136 	PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) )
137 	PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) )
138 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
139 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
140 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_2C ) )
141 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) )
142 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_4C ) )
143 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
144 
145 	PORT_START	/* DSW B */
146 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Bonus_Life ) )
147 	PORT_DIPSETTING(    0x02, "20k,40k,120k,480k,2400k" )
148 	PORT_DIPSETTING(    0x03, "50k,150k,600k,3000k" )
149 	PORT_DIPSETTING(    0x01, "70k,280k,1400k" )
150 	PORT_DIPSETTING(    0x00, "100k,500k" )
151 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
152 	PORT_DIPSETTING(    0x08, "Easy" )
153 	PORT_DIPSETTING(    0x0c, "Normal" )
154 	PORT_DIPSETTING(    0x04, "Hard" )
155 	PORT_DIPSETTING(    0x00, "Hardest" )
156 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
157 	PORT_DIPSETTING(    0x30, "3" )
158 	PORT_DIPSETTING(    0x20, "4" )
159 	PORT_DIPSETTING(    0x10, "5" )
160 	PORT_DIPSETTING(    0x00, "6" )
161 	PORT_BITX( 0x40, 0x40, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Infinite Lives", IP_KEY_NONE, IP_JOY_NONE )
162 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
163 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
164 	PORT_DIPNAME( 0x80, 0x00, "Language" )
165 	PORT_DIPSETTING(    0x80, "Japanese" )
166 	PORT_DIPSETTING(    0x00, "English" )
167 
168 	VOLFIED_INPUT_BITS
169 INPUT_PORTS_END
170 
171 INPUT_PORTS_START( volfiedu )
172 	PORT_START	/* DSW A */
173 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
174 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
175 	PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
176 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
177 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
178 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
179 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
180 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
181 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
182 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
183 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coinage ) )
184 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
185 	PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) )
186 	PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) )
187 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
188 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unused ) )
189 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
190 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
191 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unused ) )
192 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
193 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
194 
195 	PORT_START	/* DSW B */
196 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Bonus_Life ) )
197 	PORT_DIPSETTING(    0x02, "20k,40k,120k,480k,2400k" )
198 	PORT_DIPSETTING(    0x03, "50k,150k,600k,3000k" )
199 	PORT_DIPSETTING(    0x01, "70k,280k,1400k" )
200 	PORT_DIPSETTING(    0x00, "100k,500k" )
201 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
202 	PORT_DIPSETTING(    0x08, "Easy" )
203 	PORT_DIPSETTING(    0x0c, "Normal" )
204 	PORT_DIPSETTING(    0x04, "Hard" )
205 	PORT_DIPSETTING(    0x00, "Hardest" )
206 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
207 	PORT_DIPSETTING(    0x30, "3" )
208 	PORT_DIPSETTING(    0x20, "4" )
209 	PORT_DIPSETTING(    0x10, "5" )
210 	PORT_DIPSETTING(    0x00, "6" )
211 	PORT_BITX( 0x40, 0x40, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Infinite Lives", IP_KEY_NONE, IP_JOY_NONE )
212 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
213 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
214 	PORT_DIPNAME( 0x80, 0x00, "Language" )
215 	PORT_DIPSETTING(    0x80, "Japanese" )
216 	PORT_DIPSETTING(    0x00, "English" )
217 
218 	VOLFIED_INPUT_BITS
219 INPUT_PORTS_END
220 
221 INPUT_PORTS_START( volfiedj )
222 	PORT_START	/* DSW A */
223 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
224 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
225 	PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
226 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
227 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
228 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
229 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
230 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
231 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
232 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
233 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
234 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
235 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
236 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
237 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) )
238 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
239 	PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
240 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) )
241 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
242 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
243 
244 	PORT_START	/* DSW B */
245 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Bonus_Life ) )
246 	PORT_DIPSETTING(    0x02, "20k,40k,120k,480k,2400k" )
247 	PORT_DIPSETTING(    0x03, "50k,150k,600k,3000k" )
248 	PORT_DIPSETTING(    0x01, "70k,280k,1400k" )
249 	PORT_DIPSETTING(    0x00, "100k,500k" )
250 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
251 	PORT_DIPSETTING(    0x08, "Easy" )
252 	PORT_DIPSETTING(    0x0c, "Normal" )
253 	PORT_DIPSETTING(    0x04, "Hard" )
254 	PORT_DIPSETTING(    0x00, "Hardest" )
255 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
256 	PORT_DIPSETTING(    0x30, "3" )
257 	PORT_DIPSETTING(    0x20, "4" )
258 	PORT_DIPSETTING(    0x10, "5" )
259 	PORT_DIPSETTING(    0x00, "6" )
260 	PORT_BITX( 0x40, 0x40, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Infinite Lives", IP_KEY_NONE, IP_JOY_NONE )
261 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
262 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
263 	PORT_DIPNAME( 0x80, 0x80, "Language" )
264 	PORT_DIPSETTING(    0x80, "Japanese" )
265 	PORT_DIPSETTING(    0x00, "English" )
266 
267 	VOLFIED_INPUT_BITS
268 INPUT_PORTS_END
269 
270 
271 /**************************************************************
272 				GFX DECODING
273 **************************************************************/
274 
275 static struct GfxLayout tilelayout =
276 {
277 	16, 16,
278 	0x1800,
279 	4,
280 	{ 0, 1, 2, 3 },
281 	{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4, 8*4, 9*4, 10*4, 11*4, 12*4, 13*4, 14*4, 15*4 },
282 	{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
283 	128*8
284 };
285 
286 static struct GfxDecodeInfo gfxdecodeinfo[] =
287 {
288 	{ REGION_GFX1, 0, &tilelayout, 4096, 256 },
289 	{ -1 } /* end of array */
290 };
291 
292 
293 /**************************************************************
294 				YM2203 (SOUND)
295 **************************************************************/
296 
297 /* handler called by the YM2203 emulator when the internal timers cause an IRQ */
298 
irqhandler(int irq)299 static void irqhandler(int irq)
300 {
301 	cpu_set_irq_line(1, 0, irq ? ASSERT_LINE : CLEAR_LINE);
302 }
303 
304 static struct YM2203interface ym2203_interface =
305 {
306 	1,         /* 1 chip */
307 	4000000,   /* 4 MHz? */
308 	{ YM2203_VOL(60,15) },
309 	{ input_port_0_r },    /* DSW A */
310 	{ input_port_1_r },    /* DSW B */
311 	{ 0 },
312 	{ 0 },
313 	{ irqhandler }
314 };
315 
316 
317 /***********************************************************
318 				MACHINE DRIVERS
319 ***********************************************************/
320 
DRIVER_INIT(volfied)321 static DRIVER_INIT( volfied )
322 {
323 	volfied_cchip_init();
324 }
325 
326 static MACHINE_DRIVER_START( volfied )
327 
328 	/* basic machine hardware */
329 	MDRV_CPU_ADD(M68000, 8000000)   /* 8MHz? */
330 	MDRV_CPU_MEMORY(volfied_readmem,volfied_writemem)
331 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
332 
333 	MDRV_CPU_ADD(Z80, 4000000)   /* sound CPU, required to run the game */
334 	MDRV_CPU_MEMORY(z80_readmem,z80_writemem)
335 
336 	MDRV_FRAMES_PER_SECOND(60)
337 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
338 	MDRV_INTERLEAVE(20)
339 
340 	/* video hardware */
341 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
342 	MDRV_SCREEN_SIZE(320, 256)
343 	MDRV_VISIBLE_AREA(0, 319, 0, 255)
344 	MDRV_GFXDECODE(gfxdecodeinfo)
345 	MDRV_PALETTE_LENGTH(8192)
346 
347 	MDRV_VIDEO_START(volfied)
348 	MDRV_VIDEO_UPDATE(volfied)
349 
350 	/* sound hardware */
351 	MDRV_SOUND_ADD(YM2203, ym2203_interface)
352 MACHINE_DRIVER_END
353 
354 
355 /***************************************************************************
356 					DRIVERS
357 ***************************************************************************/
358 
359 ROM_START( volfied )
360 	ROM_REGION( 0x100000, REGION_CPU1, 0 )     /* 68000 code and tile data */
361 	ROM_LOAD16_BYTE( "c04-12-1.bin", 0x00000, 0x10000, CRC(afb6a058) SHA1(fca488e86725a0a673332afeb0002f0e77ef2dbf) )
362 	ROM_LOAD16_BYTE( "c04-08-1.bin", 0x00001, 0x10000, CRC(19f7e66b) SHA1(51b5d0d00ec398ed717154286bec24b05c3f81b8) )
363 	ROM_LOAD16_BYTE( "c04-11-1.bin", 0x20000, 0x10000, CRC(1aaf6e9b) SHA1(4be643283dc78eb57e9fe4c5afebdc427e4354e8) )
364 	ROM_LOAD16_BYTE( "volf-w.512",   0x20001, 0x10000, CRC(b39e04f9) SHA1(7ae2cfbea30bc510e3ed6d2de8281bdfb0d75182) )
365 	ROM_LOAD16_BYTE( "c04-20.bin",   0x80000, 0x20000, CRC(0aea651f) SHA1(a438a37ec9dc764c841561608924da158ddde66f) )
366 	ROM_LOAD16_BYTE( "c04-22.bin",   0x80001, 0x20000, CRC(f405d465) SHA1(67f6a4baf640dc74d9534ffda790f76677e944e8) )
367 	ROM_LOAD16_BYTE( "c04-19.bin",   0xc0000, 0x20000, CRC(231493ae) SHA1(2658e6556fd0e75ddd0f0b8628cfa5237c187a06) )
368 	ROM_LOAD16_BYTE( "c04-21.bin",   0xc0001, 0x20000, CRC(8598d38e) SHA1(4ec1b819586b50e2f6aff2aaa5e3b06704b9bec2) )
369 
370 	ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites 16x16 */
371 	ROM_LOAD16_BYTE( "c04-16.bin",   0x00000, 0x20000, CRC(8c2476ef) SHA1(972ddc8e47a669f1aeca67d02b4a0bed867ddb7d) )
372 	ROM_LOAD16_BYTE( "c04-18.bin",   0x00001, 0x20000, CRC(7665212c) SHA1(b816ac2a95ee273aaf90991f53766d7f0d5d9238) )
373 	ROM_LOAD16_BYTE( "c04-15.bin",   0x40000, 0x20000, CRC(7c50b978) SHA1(aa9cad5f09f5d9dceaf4e06bcd347f1d5d02d292) )
374 	ROM_LOAD16_BYTE( "c04-17.bin",   0x40001, 0x20000, CRC(c62fdeb8) SHA1(a9f6ca8335071169d772e65a9f5315a22a310b25) )
375 	ROM_LOAD16_BYTE( "c04-10.bin",   0x80000, 0x10000, CRC(429b6b49) SHA1(dcb0c8bc9d67643d96b2ffdf5ccd747318704c37) )
376 	ROM_RELOAD     (                 0xa0000, 0x10000 )
377 	ROM_LOAD16_BYTE( "c04-09.bin",   0x80001, 0x10000, CRC(c78cf057) SHA1(097982e57b1d20fbdf21986c23684adefe6f1ce1) )
378 	ROM_RELOAD     (                 0xa0001, 0x10000 )
379 
380 	ROM_REGION( 0x10000, REGION_CPU2, 0 )     /* sound cpu */
381 	ROM_LOAD( "c04-06.bin", 0x0000, 0x8000, CRC(b70106b2) SHA1(d71062f9d9b11492e13fc93982b95883f564f902) )
382 ROM_END
383 
384 ROM_START( volfiedu )
385 	ROM_REGION( 0x100000, REGION_CPU1, 0 )     /* 68000 code and tile data */
386 	ROM_LOAD16_BYTE( "c04-12-1.bin", 0x00000, 0x10000, CRC(afb6a058) SHA1(fca488e86725a0a673332afeb0002f0e77ef2dbf) )
387 	ROM_LOAD16_BYTE( "c04-08-1.bin", 0x00001, 0x10000, CRC(19f7e66b) SHA1(51b5d0d00ec398ed717154286bec24b05c3f81b8) )
388 	ROM_LOAD16_BYTE( "c04-11-1.bin", 0x20000, 0x10000, CRC(1aaf6e9b) SHA1(4be643283dc78eb57e9fe4c5afebdc427e4354e8) )
389 	ROM_LOAD16_BYTE( "volf-usa.512", 0x20001, 0x10000, CRC(c499346f) SHA1(f039b36050e6091929c44ab22e03af3d66d41eaf) )
390 	ROM_LOAD16_BYTE( "c04-20.bin",   0x80000, 0x20000, CRC(0aea651f) SHA1(a438a37ec9dc764c841561608924da158ddde66f) )
391 	ROM_LOAD16_BYTE( "c04-22.bin",   0x80001, 0x20000, CRC(f405d465) SHA1(67f6a4baf640dc74d9534ffda790f76677e944e8) )
392 	ROM_LOAD16_BYTE( "c04-19.bin",   0xc0000, 0x20000, CRC(231493ae) SHA1(2658e6556fd0e75ddd0f0b8628cfa5237c187a06) )
393 	ROM_LOAD16_BYTE( "c04-21.bin",   0xc0001, 0x20000, CRC(8598d38e) SHA1(4ec1b819586b50e2f6aff2aaa5e3b06704b9bec2) )
394 
395 	ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites 16x16 */
396 	ROM_LOAD16_BYTE( "c04-16.bin",   0x00000, 0x20000, CRC(8c2476ef) SHA1(972ddc8e47a669f1aeca67d02b4a0bed867ddb7d) )
397 	ROM_LOAD16_BYTE( "c04-18.bin",   0x00001, 0x20000, CRC(7665212c) SHA1(b816ac2a95ee273aaf90991f53766d7f0d5d9238) )
398 	ROM_LOAD16_BYTE( "c04-15.bin",   0x40000, 0x20000, CRC(7c50b978) SHA1(aa9cad5f09f5d9dceaf4e06bcd347f1d5d02d292) )
399 	ROM_LOAD16_BYTE( "c04-17.bin",   0x40001, 0x20000, CRC(c62fdeb8) SHA1(a9f6ca8335071169d772e65a9f5315a22a310b25) )
400 	ROM_LOAD16_BYTE( "c04-10.bin",   0x80000, 0x10000, CRC(429b6b49) SHA1(dcb0c8bc9d67643d96b2ffdf5ccd747318704c37) )
401 	ROM_RELOAD     (                 0xa0000, 0x10000 )
402 	ROM_LOAD16_BYTE( "c04-09.bin",   0x80001, 0x10000, CRC(c78cf057) SHA1(097982e57b1d20fbdf21986c23684adefe6f1ce1) )
403 	ROM_RELOAD     (                 0xa0001, 0x10000 )
404 
405 	ROM_REGION( 0x10000, REGION_CPU2, 0 )     /* sound cpu */
406 	ROM_LOAD( "c04-06.bin", 0x0000, 0x8000, CRC(b70106b2) SHA1(d71062f9d9b11492e13fc93982b95883f564f902) )
407 ROM_END
408 
409 ROM_START( volfiedj )
410 	ROM_REGION( 0x100000, REGION_CPU1, 0 )     /* 68000 code and tile data */
411 	ROM_LOAD16_BYTE( "c04-12-1.bin", 0x00000, 0x10000, CRC(afb6a058) SHA1(fca488e86725a0a673332afeb0002f0e77ef2dbf) )
412 	ROM_LOAD16_BYTE( "c04-08-1.bin", 0x00001, 0x10000, CRC(19f7e66b) SHA1(51b5d0d00ec398ed717154286bec24b05c3f81b8) )
413 	ROM_LOAD16_BYTE( "c04-11-1.bin", 0x20000, 0x10000, CRC(1aaf6e9b) SHA1(4be643283dc78eb57e9fe4c5afebdc427e4354e8) )
414 	ROM_LOAD16_BYTE( "c04-07-1.bin", 0x20001, 0x10000, CRC(5d9065d5) SHA1(5682c92da14a736f76b5b6b3870571743cdde211) )
415 	ROM_LOAD16_BYTE( "c04-20.bin",   0x80000, 0x20000, CRC(0aea651f) SHA1(a438a37ec9dc764c841561608924da158ddde66f) )
416 	ROM_LOAD16_BYTE( "c04-22.bin",   0x80001, 0x20000, CRC(f405d465) SHA1(67f6a4baf640dc74d9534ffda790f76677e944e8) )
417 	ROM_LOAD16_BYTE( "c04-19.bin",   0xc0000, 0x20000, CRC(231493ae) SHA1(2658e6556fd0e75ddd0f0b8628cfa5237c187a06) )
418 	ROM_LOAD16_BYTE( "c04-21.bin",   0xc0001, 0x20000, CRC(8598d38e) SHA1(4ec1b819586b50e2f6aff2aaa5e3b06704b9bec2) )
419 
420 	ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE )	/* sprites 16x16 */
421 	ROM_LOAD16_BYTE( "c04-16.bin",   0x00000, 0x20000, CRC(8c2476ef) SHA1(972ddc8e47a669f1aeca67d02b4a0bed867ddb7d) )
422 	ROM_LOAD16_BYTE( "c04-18.bin",   0x00001, 0x20000, CRC(7665212c) SHA1(b816ac2a95ee273aaf90991f53766d7f0d5d9238) )
423 	ROM_LOAD16_BYTE( "c04-15.bin",   0x40000, 0x20000, CRC(7c50b978) SHA1(aa9cad5f09f5d9dceaf4e06bcd347f1d5d02d292) )
424 	ROM_LOAD16_BYTE( "c04-17.bin",   0x40001, 0x20000, CRC(c62fdeb8) SHA1(a9f6ca8335071169d772e65a9f5315a22a310b25) )
425 	ROM_LOAD16_BYTE( "c04-10.bin",   0x80000, 0x10000, CRC(429b6b49) SHA1(dcb0c8bc9d67643d96b2ffdf5ccd747318704c37) )
426 	ROM_RELOAD     (                 0xa0000, 0x10000 )
427 	ROM_LOAD16_BYTE( "c04-09.bin",   0x80001, 0x10000, CRC(c78cf057) SHA1(097982e57b1d20fbdf21986c23684adefe6f1ce1) )
428 	ROM_RELOAD     (                 0xa0001, 0x10000 )
429 
430 	ROM_REGION( 0x10000, REGION_CPU2, 0 )     /* sound cpu */
431 	ROM_LOAD( "c04-06.bin", 0x0000, 0x8000, CRC(b70106b2) SHA1(d71062f9d9b11492e13fc93982b95883f564f902) )
432 ROM_END
433 
434 
435 GAMEX( 1989, volfied,  0,       volfied, volfied,  volfied, ROT270, "Taito Corporation Japan", "Volfied (World)", GAME_UNEMULATED_PROTECTION )
436 GAMEX( 1989, volfiedu, volfied, volfied, volfiedu, volfied, ROT270, "Taito America Corporation", "Volfied (US)", GAME_UNEMULATED_PROTECTION )
437 GAMEX( 1989, volfiedj, volfied, volfied, volfiedj, volfied, ROT270, "Taito Corporation", "Volfied (Japan)", GAME_UNEMULATED_PROTECTION )
438