1 /***************************************************************************
2
3 Funky Jet (c) 1992 Mitchell Corporation
4 Sotsugyo Shousho (c) 1995 Mitchell Corporation
5
6 But actually a Data East pcb... Hardware is pretty close to Super Burger
7 Time but with a different graphics chip.
8
9 Emulation by Bryan McPhail, mish@tendril.co.uk
10
11
12 Stephh's notes :
13
14 0) 'sotsugyo'
15
16 - COIN2 doesn't work due to code at 0x0001f0 :
17
18 0001F0: 1228 004A move.b ($4a,A0), D1
19
20 It should be (as code in 0x00019e) :
21
22 0001F0: 3228 004A move.w ($4a,A0), D1
23
24 - SERVICE1 is very strange : instead of adding 1 credit, EACH time it is
25 pressed, n credits are added depending on the "Coinage A" Dip Switch :
26
27 Coin_A n
28
29 3C_1C 1
30 2C_1C 1
31 1C_1C 1
32 1C_2C 2
33 1C_3C 3
34 1C_4C 4
35 1C_5C 5
36 1C_6C 6
37
38 - When the "Unused" Dip Switch is ON, the palette is modified.
39
40
41 ***************************************************************************/
42
43 #include "driver.h"
44 #include "vidhrdw/generic.h"
45 #include "cpu/h6280/h6280.h"
46
47 #include "decocrpt.h"
48 #include "decoprot.h"
49 #include "deco16ic.h"
50
51 VIDEO_START( funkyjet );
52 VIDEO_UPDATE( funkyjet );
53
54 /******************************************************************************/
55
MEMORY_READ16_START(funkyjet_readmem)56 static MEMORY_READ16_START( funkyjet_readmem )
57 { 0x000000, 0x07ffff, MRA16_ROM },
58 { 0x120000, 0x1207ff, MRA16_RAM },
59 { 0x140000, 0x143fff, MRA16_RAM },
60 { 0x160000, 0x1607ff, MRA16_RAM },
61 { 0x180000, 0x1807ff, deco16_146_funkyjet_prot_r },
62 { 0x320000, 0x321fff, MRA16_RAM },
63 { 0x322000, 0x323fff, MRA16_RAM },
64 { 0x340000, 0x340bff, MRA16_RAM },
65 { 0x342000, 0x342bff, MRA16_RAM },
66 MEMORY_END
67
68 static MEMORY_WRITE16_START( funkyjet_writemem )
69 { 0x000000, 0x07ffff, MWA16_ROM },
70 { 0x120000, 0x1207ff, paletteram16_xxxxBBBBGGGGRRRR_word_w, &paletteram16 },
71 { 0x140000, 0x143fff, MWA16_RAM },
72 { 0x160000, 0x1607ff, MWA16_RAM, &spriteram16 },
73 { 0x180000, 0x1807ff, deco16_146_funkyjet_prot_w, &deco16_prot_ram },
74 { 0x184000, 0x184001, MWA16_NOP },
75 { 0x188000, 0x188001, MWA16_NOP },
76 { 0x300000, 0x30000f, MWA16_RAM, &deco16_pf12_control },
77 { 0x320000, 0x321fff, deco16_pf1_data_w, &deco16_pf1_data },
78 { 0x322000, 0x323fff, deco16_pf2_data_w, &deco16_pf2_data },
79 { 0x340000, 0x340bff, MWA16_RAM, &deco16_pf1_rowscroll },
80 { 0x342000, 0x342bff, MWA16_RAM, &deco16_pf2_rowscroll },
81 MEMORY_END
82
83 /******************************************************************************/
84
85 /* Physical memory map (21 bits) */
86 static MEMORY_READ_START( sound_readmem )
87 { 0x000000, 0x00ffff, MRA_ROM },
88 { 0x100000, 0x100001, MRA_NOP },
89 { 0x110000, 0x110001, YM2151_status_port_0_r },
90 { 0x120000, 0x120001, OKIM6295_status_0_r },
91 { 0x130000, 0x130001, MRA_NOP }, /* This board only has 1 oki chip */
92 { 0x140000, 0x140001, soundlatch_r },
93 { 0x1f0000, 0x1f1fff, MRA_BANK8 },
94 MEMORY_END
95
96 static MEMORY_WRITE_START( sound_writemem )
97 { 0x000000, 0x00ffff, MWA_ROM },
98 { 0x100000, 0x100001, MWA_NOP }, /* YM2203 - this board doesn't have one */
99 { 0x110000, 0x110001, YM2151_word_0_w },
100 { 0x120000, 0x120001, OKIM6295_data_0_w },
101 { 0x130000, 0x130001, MWA_NOP },
102 { 0x1f0000, 0x1f1fff, MWA_BANK8 },
103 { 0x1fec00, 0x1fec01, H6280_timer_w },
104 { 0x1ff402, 0x1ff403, H6280_irq_status_w },
105 MEMORY_END
106
107 /******************************************************************************/
108
109 INPUT_PORTS_START( funkyjet )
110 PORT_START /* Player 1 controls */
111 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
112 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
113 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
114 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
115 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
116 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
117 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) /* Button 3 only in "test mode" */
118 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
119
120 PORT_START /* Player 2 controls */
121 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
122 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
123 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
124 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
125 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
126 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
127 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) /* Button 3 only in "test mode" */
128 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
129
130 PORT_START /* System Inputs */
131 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
132 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
133 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
134 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
135
136 /* Dips seem inverted with respect to other Deco games */
137
138 PORT_START /* Dip switch bank 1 */
139 PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coin_A ) )
140 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
141 PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) )
142 PORT_DIPSETTING( 0xe0, DEF_STR( 1C_1C ) )
143 PORT_DIPSETTING( 0x60, DEF_STR( 1C_2C ) )
144 PORT_DIPSETTING( 0xa0, DEF_STR( 1C_3C ) )
145 PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) )
146 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_5C ) )
147 PORT_DIPSETTING( 0x40, DEF_STR( 1C_6C ) )
148 PORT_DIPNAME( 0x1c, 0x1c, DEF_STR( Coin_B ) )
149 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
150 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
151 PORT_DIPSETTING( 0x1c, DEF_STR( 1C_1C ) )
152 PORT_DIPSETTING( 0x0c, DEF_STR( 1C_2C ) )
153 PORT_DIPSETTING( 0x14, DEF_STR( 1C_3C ) )
154 PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) )
155 PORT_DIPSETTING( 0x18, DEF_STR( 1C_5C ) )
156 PORT_DIPSETTING( 0x08, DEF_STR( 1C_6C ) )
157 PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
158 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
159 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
160 PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
161
162 PORT_START /* Dip switch bank 2 */
163 PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Lives ) )
164 PORT_DIPSETTING( 0x80, "1" )
165 PORT_DIPSETTING( 0xc0, "2" )
166 PORT_DIPSETTING( 0x40, "3" )
167 PORT_DIPSETTING( 0x00, "4" )
168 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) )
169 PORT_DIPSETTING( 0x10, "Easy" )
170 PORT_DIPSETTING( 0x30, "Normal" )
171 PORT_DIPSETTING( 0x20, "Hard" )
172 PORT_DIPSETTING( 0x00, "Hardest" )
173 PORT_DIPNAME( 0x08, 0x08, "Freeze" )
174 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
175 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
176 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) )
177 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
178 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
179 PORT_DIPNAME( 0x02, 0x02, "Allow Continue" )
180 PORT_DIPSETTING( 0x00, DEF_STR( No ) )
181 PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
182 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) )
183 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
184 PORT_DIPSETTING( 0x01, DEF_STR( On ) )
185 INPUT_PORTS_END
186
187 INPUT_PORTS_START( sotsugyo )
188 PORT_START /* Player 1 controls */
189 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
190 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
191 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
192 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
193 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
194 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
195 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 ) /* only in "test mode" */
196 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
197
198 PORT_START /* Player 2 controls */
199 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
200 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
201 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
202 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
203 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
204 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
205 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 ) /* only in "test mode" */
206 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
207
208 PORT_START /* System Inputs */
209 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
210 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) /* Not working - see notes*/
211 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* See notes*/
212 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
213
214 /* Dips seem inverted with respect to other Deco games */
215
216 PORT_START /* Dip switch bank 1 */
217 PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coin_A ) )
218 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
219 PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) )
220 PORT_DIPSETTING( 0xe0, DEF_STR( 1C_1C ) )
221 PORT_DIPSETTING( 0x60, DEF_STR( 1C_2C ) )
222 PORT_DIPSETTING( 0xa0, DEF_STR( 1C_3C ) )
223 PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) )
224 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_5C ) )
225 PORT_DIPSETTING( 0x40, DEF_STR( 1C_6C ) )
226 PORT_DIPNAME( 0x1c, 0x1c, DEF_STR( Coin_B ) )
227 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
228 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
229 PORT_DIPSETTING( 0x1c, DEF_STR( 1C_1C ) )
230 PORT_DIPSETTING( 0x0c, DEF_STR( 1C_2C ) )
231 PORT_DIPSETTING( 0x14, DEF_STR( 1C_3C ) )
232 PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) )
233 PORT_DIPSETTING( 0x18, DEF_STR( 1C_5C ) )
234 PORT_DIPSETTING( 0x08, DEF_STR( 1C_6C ) )
235 PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
236 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
237 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
238 PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
239
240 PORT_START /* Dip switch bank 2 */
241 PORT_DIPNAME( 0x80, 0x80, "Freeze" )
242 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
243 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
244 PORT_DIPNAME( 0x40, 0x40, DEF_STR( Free_Play ) )
245 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
246 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
247 PORT_DIPNAME( 0x30, 0x20, DEF_STR( Difficulty ) )
248 PORT_DIPSETTING( 0x30, "Easy" )
249 PORT_DIPSETTING( 0x20, "Normal" )
250 PORT_DIPSETTING( 0x10, "Hard" )
251 PORT_DIPSETTING( 0x00, "Hardest" )
252 PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
253 PORT_DIPSETTING( 0x04, "1" )
254 PORT_DIPSETTING( 0x08, "2" )
255 PORT_DIPSETTING( 0x0c, "3" )
256 PORT_DIPSETTING( 0x00, "4" )
257 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
258 PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
259 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
260 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) /* See notes*/
261 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
262 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
263 INPUT_PORTS_END
264
265 /******************************************************************************/
266
267 static struct GfxLayout charlayout =
268 {
269 8,8,
270 RGN_FRAC(1,2),
271 4,
272 { RGN_FRAC(1,2)+8, RGN_FRAC(1,2)+0, 8, 0 },
273 { 0, 1, 2, 3, 4, 5, 6, 7 },
274 { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
275 16*8
276 };
277
278 static struct GfxLayout tile_layout =
279 {
280 16,16,
281 RGN_FRAC(1,2),
282 4,
283 { RGN_FRAC(1,2)+8, RGN_FRAC(1,2)+0, 8, 0 },
284 { 32*8+0, 32*8+1, 32*8+2, 32*8+3, 32*8+4, 32*8+5, 32*8+6, 32*8+7,
285 0, 1, 2, 3, 4, 5, 6, 7 },
286 { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
287 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
288 64*8
289 };
290
291 static struct GfxDecodeInfo gfxdecodeinfo[] =
292 {
293 { REGION_GFX1, 0, &charlayout, 256, 32 }, /* Characters 8x8 */
294 { REGION_GFX1, 0, &tile_layout, 256, 32 }, /* Tiles 16x16 */
295 { REGION_GFX2, 0, &tile_layout, 0, 16 }, /* Sprites 16x16 */
296 { -1 } /* end of array */
297 };
298
299 /******************************************************************************/
300
301 static struct OKIM6295interface okim6295_interface =
302 {
303 1, /* 1 chip */
304 { 7757 }, /* Frequency */
305 { REGION_SOUND1 }, /* memory region */
306 { 50 }
307 };
308
sound_irq(int state)309 static void sound_irq(int state)
310 {
311 cpu_set_irq_line(1,1,state); /* IRQ 2 */
312 }
313
314 static struct YM2151interface ym2151_interface =
315 {
316 1,
317 32220000/9,
318 { YM3012_VOL(45,MIXER_PAN_LEFT,45,MIXER_PAN_RIGHT) },
319 { sound_irq }
320 };
321
322 static MACHINE_DRIVER_START( funkyjet )
323
324 /* basic machine hardware */
325 MDRV_CPU_ADD(M68000, 14000000) /* 28 MHz crystal */
MDRV_CPU_MEMORY(funkyjet_readmem,funkyjet_writemem)326 MDRV_CPU_MEMORY(funkyjet_readmem,funkyjet_writemem)
327 MDRV_CPU_VBLANK_INT(irq6_line_hold,1)
328
329 MDRV_CPU_ADD(H6280,32220000/8) /* Custom chip 45, Audio section crystal is 32.220 MHz */
330 MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
331 MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
332
333 MDRV_FRAMES_PER_SECOND(60)
334 MDRV_VBLANK_DURATION(529)
335
336 /* video hardware */
337 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
338 MDRV_SCREEN_SIZE(40*8, 32*8)
339 MDRV_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
340 MDRV_GFXDECODE(gfxdecodeinfo)
341 MDRV_PALETTE_LENGTH(1024)
342
343 MDRV_VIDEO_START(funkyjet)
344 MDRV_VIDEO_UPDATE(funkyjet)
345
346 /* sound hardware */
347 MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
348 MDRV_SOUND_ADD(YM2151, ym2151_interface)
349 MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
350 MACHINE_DRIVER_END
351
352 /******************************************************************************/
353
354 ROM_START( funkyjet )
355 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 68000 code */
356 ROM_LOAD16_BYTE( "jk00.12f", 0x00000, 0x40000, CRC(712089c1) SHA1(84167c90303a228107f55596e2ff8b9f111d1bc2) )
357 ROM_LOAD16_BYTE( "jk01.13f", 0x00001, 0x40000, CRC(be3920d7) SHA1(6627956d148681bc49991c544a09b07271ea4c7f) )
358
359 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU */
360 ROM_LOAD( "jk02.16f", 0x00000, 0x10000, CRC(748c0bd8) SHA1(35910e6a4c4f198fb76bde0f5b053e2c66cfa0ff) )
361
362 ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE )
363 ROM_LOAD( "mat02", 0x000000, 0x80000, CRC(e4b94c7e) SHA1(7b6ddd0bd388c8d32277fce4b3abb102724bc7d1) ) /* Encrypted chars */
364
365 ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
366 ROM_LOAD( "mat01", 0x000000, 0x80000, CRC(24093a8d) SHA1(71f76ddd8a4b6e05ceb2fff4e20b6edb5e011e79) ) /* sprites */
367 ROM_LOAD( "mat00", 0x080000, 0x80000, CRC(fbda0228) SHA1(815d49898d02e699393e370209181f2ca8301949) )
368
369 ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* ADPCM samples */
370 ROM_LOAD( "jk03.15h", 0x00000, 0x20000, CRC(69a0eaf7) SHA1(05038e82ee03106625f05082fe9912e16be181ee) )
371 ROM_END
372
373 ROM_START( sotsugyo )
374 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 68000 code */
375 ROM_LOAD16_BYTE( "03.12f", 0x00000, 0x40000, CRC(d175dfd1) SHA1(61c91d5e20b0492e6ac3b19fe9639eb4f169ae77) )
376 ROM_LOAD16_BYTE( "04.13f", 0x00001, 0x40000, CRC(2072477c) SHA1(23820a519e4503854e63ab3ad7eec58178c8d822) )
377
378 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU */
379 ROM_LOAD( "sb020.16f", 0x00000, 0x10000, CRC(baf5ec93) SHA1(82b22a0b565e51cd40733f21fa876dd7064eb604) )
380
381 ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE )
382 ROM_LOAD( "02.2f", 0x000000, 0x80000, CRC(337b1451) SHA1(ab3a4526e683c23b7634ac3304fb073f6ce98e82) ) /* chars */
383
384 ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
385 ROM_LOAD( "01.4a", 0x000000, 0x80000, CRC(fa10dd54) SHA1(5dfe66df0bbab5eb151bf65f7e767a2325a50b36) ) /* sprites */
386 ROM_LOAD( "00.2a", 0x080000, 0x80000, CRC(d35a14ef) SHA1(b8d27766db7e183aee208c690364e4383f3c6882) )
387
388 ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* ADPCM samples */
389 ROM_LOAD( "sb030.15h", 0x00000, 0x20000, CRC(1ea43f48) SHA1(74cc8c740f1c7fa94c2cb460ea4ee7aa0c490ed7) )
390 ROM_END
391
392 static DRIVER_INIT( funkyjet )
393 {
394 deco74_decrypt(REGION_GFX1);
395 }
396
397 /******************************************************************************/
398
399 GAME( 1992, funkyjet, 0, funkyjet, funkyjet, funkyjet, ROT0, "[Data East] (Mitchell license)", "Funky Jet" )
400 GAME( 1995, sotsugyo, 0, funkyjet, sotsugyo, funkyjet, ROT0, "Mitchell (Atlus license)", "Sotsugyo Shousho" )
401