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