1 /***************************************************************************
2 
3 Juno First :  memory map same as tutankham with some address changes
4 Chris Hardy (chrish@kcbbs.gen.nz)
5 
6 Thanks to Rob Jarret for the original Tutankham memory map on which both the
7 Juno First emu and the mame driver is based on.
8 
9 		Juno First memory map by Chris Hardy
10 
11 Read/Write memory
12 
13 $0000-$7FFF = Screen RAM (only written to)
14 $8000-$800f = Palette RAM. BBGGGRRR (D7->D0)
15 $8100-$8FFF = Work RAM
16 
17 Write memory
18 
19 $8030	- interrupt control register D0 = interupts on or off
20 $8031	- unknown
21 $8032	- unknown
22 $8033	- unknown
23 $8034	- flip screen x
24 $8035	- flip screen y
25 
26 $8040	- Sound CPU req/ack data
27 $8050	- Sound CPU command data
28 $8060	- Banked memory page select.
29 $8070/1 - Blitter source data word
30 $8072/3 - Blitter destination word. Write to $8073 triggers a blit
31 
32 Read memory
33 
34 $8010	- Dipswitch 2
35 $801c	- Watchdog
36 $8020	- Start/Credit IO
37 				D2 = Credit 1
38 				D3 = Start 1
39 				D4 = Start 2
40 $8024	- P1 IO
41 				D0 = left
42 				D1 = right
43 				D2 = up
44 				D3 = down
45 				D4 = fire 2
46 				D5 = fire 1
47 
48 $8028	- P2 IO - same as P1 IO
49 $802c	- Dipswitch 1
50 
51 
52 
53 $9000->$9FFF Banked Memory - see below
54 $A000->$BFFF "juno\\JFA_B9.BIN",
55 $C000->$DFFF "juno\\JFB_B10.BIN",
56 $E000->$FFFF "juno\\JFC_A10.BIN",
57 
58 Banked memory - Paged into $9000->$9FFF..
59 
60 NOTE - In Tutankhm this only contains graphics, in Juno First it also contains code. (which
61 		generally sets up the blitter)
62 
63 	"juno\\JFC1_A4.BIN",	$0000->$1FFF
64 	"juno\\JFC2_A5.BIN",	$2000->$3FFF
65 	"juno\\JFC3_A6.BIN",	$4000->$5FFF
66 	"juno\\JFC4_A7.BIN",	$6000->$7FFF
67 	"juno\\JFC5_A8.BIN",	$8000->$9FFF
68 	"juno\\JFC6_A9.BIN",	$A000->$bFFF
69 
70 Blitter source graphics
71 
72 	"juno\\JFS3_C7.BIN",	$C000->$DFFF
73 	"juno\\JFS4_D7.BIN",	$E000->$FFFF
74 	"juno\\JFS5_E7.BIN",	$10000->$11FFF
75 
76 
77 ***************************************************************************/
78 
79 
80 #include "driver.h"
81 #include "vidhrdw/generic.h"
82 #include "cpu/m6809/m6809.h"
83 #include "cpu/i8039/i8039.h"
84 #include "cpu/z80/z80.h"
85 
86 
87 void konami1_decode(void);
88 
89 extern unsigned char *tutankhm_scrollx;
90 
91 static int i8039_status;
92 
93 WRITE_HANDLER( tutankhm_videoram_w );
94 WRITE_HANDLER( junofrst_blitter_w );
95 VIDEO_UPDATE( tutankhm );
96 
97 
98 WRITE_HANDLER( tutankhm_sh_irqtrigger_w );
99 
100 
WRITE_HANDLER(junofrst_bankselect_w)101 WRITE_HANDLER( junofrst_bankselect_w )
102 {
103 	int bankaddress;
104 	unsigned char *RAM = memory_region(REGION_CPU1);
105 
106 	bankaddress = 0x10000 + (data & 0x0f) * 0x1000;
107 	cpu_setbank(1,&RAM[bankaddress]);
108 }
109 
READ_HANDLER(junofrst_portA_r)110 static READ_HANDLER( junofrst_portA_r )
111 {
112 	int timer;
113 
114 
115 	/* main xtal 14.318MHz, divided by 8 to get the CPU clock, further */
116 	/* divided by 1024 to get this timer */
117 	/* (divide by (1024/2), and not 1024, because the CPU cycle counter is */
118 	/* incremented every other state change of the clock) */
119 	timer = (activecpu_gettotalcycles() / (1024/2)) & 0x0f;
120 
121 	/* low three bits come from the 8039 */
122 
123 	return (timer << 4) | i8039_status;
124 }
125 
WRITE_HANDLER(junofrst_portB_w)126 static WRITE_HANDLER( junofrst_portB_w )
127 {
128 	int i;
129 
130 
131 	for (i = 0;i < 3;i++)
132 	{
133 		int C;
134 
135 
136 		C = 0;
137 		if (data & 1) C += 47000;	/* 47000pF = 0.047uF */
138 		if (data & 2) C += 220000;	/* 220000pF = 0.22uF */
139 		data >>= 2;
140 		set_RC_filter(i,1000,2200,200,C);
141 	}
142 }
143 
WRITE_HANDLER(junofrst_sh_irqtrigger_w)144 WRITE_HANDLER( junofrst_sh_irqtrigger_w )
145 {
146 	static int last;
147 
148 
149 	if (last == 0 && data == 1)
150 	{
151 		/* setting bit 0 low then high triggers IRQ on the sound CPU */
152 		cpu_set_irq_line_and_vector(1,0,HOLD_LINE,0xff);
153 	}
154 
155 	last = data;
156 }
157 
WRITE_HANDLER(junofrst_i8039_irq_w)158 WRITE_HANDLER( junofrst_i8039_irq_w )
159 {
160 	cpu_set_irq_line(2, 0, ASSERT_LINE);
161 }
162 
WRITE_HANDLER(i8039_irqen_and_status_w)163 static WRITE_HANDLER( i8039_irqen_and_status_w )
164 {
165 	if ((data & 0x80) == 0)
166 		cpu_set_irq_line(2, 0, CLEAR_LINE);
167 	i8039_status = (data & 0x70) >> 4;
168 }
169 
WRITE_HANDLER(flip_screen_w)170 static WRITE_HANDLER( flip_screen_w )
171 {
172 	flip_screen_set(data);
173 }
174 
WRITE_HANDLER(junofrst_coin_counter_w)175 static WRITE_HANDLER( junofrst_coin_counter_w )
176 {
177 	coin_counter_w(offset,data);
178 }
179 
180 
181 
MEMORY_READ_START(readmem)182 static MEMORY_READ_START( readmem )
183 	{ 0x0000, 0x7fff, MRA_RAM },
184 	{ 0x8010, 0x8010, input_port_0_r },	/* DSW2 (inverted bits) */
185 	{ 0x801c, 0x801c, watchdog_reset_r },
186 	{ 0x8020, 0x8020, input_port_1_r },	/* IN0 I/O: Coin slots, service, 1P/2P buttons */
187 	{ 0x8024, 0x8024, input_port_2_r },	/* IN1: Player 1 I/O */
188 	{ 0x8028, 0x8028, input_port_3_r },	/* IN2: Player 2 I/O */
189 	{ 0x802c, 0x802c, input_port_4_r },	/* DSW1 (inverted bits) */
190 	{ 0x8100, 0x8fff, MRA_RAM },
191 	{ 0x9000, 0x9fff, MRA_BANK1 },
192 	{ 0xa000, 0xffff, MRA_ROM },
193 MEMORY_END
194 
195 static MEMORY_WRITE_START( writemem )
196 	{ 0x0000, 0x7fff, tutankhm_videoram_w, &videoram, &videoram_size },
197 	{ 0x8000, 0x800f, paletteram_BBGGGRRR_w, &paletteram },
198 	{ 0x8030, 0x8030, interrupt_enable_w },
199 	{ 0x8031, 0x8032, junofrst_coin_counter_w },
200 	{ 0x8033, 0x8033, MWA_RAM, &tutankhm_scrollx },              /* video x pan hardware reg - Not USED in Juno*/
201 	{ 0x8034, 0x8035, flip_screen_w },
202 	{ 0x8040, 0x8040, junofrst_sh_irqtrigger_w },
203 	{ 0x8050, 0x8050, soundlatch_w },
204 	{ 0x8060, 0x8060, junofrst_bankselect_w },
205 	{ 0x8070, 0x8073, junofrst_blitter_w },
206 	{ 0x8100, 0x8fff, MWA_RAM },
207 	{ 0x9000, 0xffff, MWA_ROM },
208 MEMORY_END
209 
210 
211 static MEMORY_READ_START( sound_readmem )
212 	{ 0x0000, 0x0fff, MRA_ROM },
213 	{ 0x2000, 0x23ff, MRA_RAM },
214 	{ 0x3000, 0x3000, soundlatch_r },
215 	{ 0x4001, 0x4001, AY8910_read_port_0_r },
216 MEMORY_END
217 
218 static MEMORY_WRITE_START( sound_writemem )
219 	{ 0x0000, 0x0fff, MWA_ROM },
220 	{ 0x2000, 0x23ff, MWA_RAM },
221 	{ 0x4000, 0x4000, AY8910_control_port_0_w },
222 	{ 0x4002, 0x4002, AY8910_write_port_0_w },
223 	{ 0x5000, 0x5000, soundlatch2_w },
224 	{ 0x6000, 0x6000, junofrst_i8039_irq_w },
225 MEMORY_END
226 
227 
228 static MEMORY_READ_START( i8039_readmem )
229 	{ 0x0000, 0x0fff, MRA_ROM },
230 MEMORY_END
231 
232 static MEMORY_WRITE_START( i8039_writemem )
233 	{ 0x0000, 0x0fff, MWA_ROM },
234 MEMORY_END
235 
236 static PORT_READ_START( i8039_readport )
237 	{ 0x00, 0xff, soundlatch2_r },
238 PORT_END
239 
240 static PORT_WRITE_START( i8039_writeport )
241 	{ I8039_p1, I8039_p1, DAC_0_data_w },
242 	{ I8039_p2, I8039_p2, i8039_irqen_and_status_w },
243 PORT_END
244 
245 
246 INPUT_PORTS_START( junofrst )
247 	PORT_START      /* DSW2 */
248 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
249 	PORT_DIPSETTING(    0x03, "3" )
250 	PORT_DIPSETTING(    0x02, "4" )
251 	PORT_DIPSETTING(    0x01, "5" )
252 	PORT_BITX( 0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "256", IP_KEY_NONE, IP_JOY_NONE )
253 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) )
254 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
255 	PORT_DIPSETTING(    0x04, DEF_STR( Cocktail ) )
256 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
257 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
258 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
259 	PORT_DIPNAME( 0x70, 0x70, DEF_STR( Difficulty ) )
260 	PORT_DIPSETTING(    0x70, "1 (Easiest)" )
261 	PORT_DIPSETTING(    0x60, "2" )
262 	PORT_DIPSETTING(    0x50, "3" )
263 	PORT_DIPSETTING(    0x40, "4" )
264 	PORT_DIPSETTING(    0x30, "5" )
265 	PORT_DIPSETTING(    0x20, "6" )
266 	PORT_DIPSETTING(    0x10, "7" )
267 	PORT_DIPSETTING(    0x00, "8 (Hardest)" )
268 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) )
269 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
270 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
271 
272 	PORT_START      /* IN0 */
273 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
274 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
275 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
276 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
277 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
278 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
279 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
280 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
281 
282 	PORT_START      /* IN1 */
283 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
284 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
285 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
286 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
287 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 )
288 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
289 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
290 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
291 
292 	PORT_START      /* IN2 */
293 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
294 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
295 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
296 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
297 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
298 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
299 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_COCKTAIL )
300 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
301 
302 	PORT_START      /* DSW1 */
303 	PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) )
304 	PORT_DIPSETTING(    0x02, DEF_STR( 4C_1C ) )
305 	PORT_DIPSETTING(    0x05, DEF_STR( 3C_1C ) )
306 	PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
307 	PORT_DIPSETTING(    0x04, DEF_STR( 3C_2C ) )
308 	PORT_DIPSETTING(    0x01, DEF_STR( 4C_3C ) )
309 	PORT_DIPSETTING(    0x0f, DEF_STR( 1C_1C ) )
310 	PORT_DIPSETTING(    0x03, DEF_STR( 3C_4C ) )
311 	PORT_DIPSETTING(    0x07, DEF_STR( 2C_3C ) )
312 	PORT_DIPSETTING(    0x0e, DEF_STR( 1C_2C ) )
313 	PORT_DIPSETTING(    0x06, DEF_STR( 2C_5C ) )
314 	PORT_DIPSETTING(    0x0d, DEF_STR( 1C_3C ) )
315 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_4C ) )
316 	PORT_DIPSETTING(    0x0b, DEF_STR( 1C_5C ) )
317 	PORT_DIPSETTING(    0x0a, DEF_STR( 1C_6C ) )
318 	PORT_DIPSETTING(    0x09, DEF_STR( 1C_7C ) )
319 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
320 	PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) )
321 	PORT_DIPSETTING(    0x20, DEF_STR( 4C_1C ) )
322 	PORT_DIPSETTING(    0x50, DEF_STR( 3C_1C ) )
323 	PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
324 	PORT_DIPSETTING(    0x40, DEF_STR( 3C_2C ) )
325 	PORT_DIPSETTING(    0x10, DEF_STR( 4C_3C ) )
326 	PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) )
327 	PORT_DIPSETTING(    0x30, DEF_STR( 3C_4C ) )
328 	PORT_DIPSETTING(    0x70, DEF_STR( 2C_3C ) )
329 	PORT_DIPSETTING(    0xe0, DEF_STR( 1C_2C ) )
330 	PORT_DIPSETTING(    0x60, DEF_STR( 2C_5C ) )
331 	PORT_DIPSETTING(    0xd0, DEF_STR( 1C_3C ) )
332 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_4C ) )
333 	PORT_DIPSETTING(    0xb0, DEF_STR( 1C_5C ) )
334 	PORT_DIPSETTING(    0xa0, DEF_STR( 1C_6C ) )
335 	PORT_DIPSETTING(    0x90, DEF_STR( 1C_7C ) )
336 	PORT_DIPSETTING(    0x00, "Disabled" )
337 /* 0x00 not remmed out since the game makes the usual sound if you insert the coin */
338 INPUT_PORTS_END
339 
340 
341 
342 static struct AY8910interface ay8910_interface =
343 {
344 	1,	/* 1 chip */
345 	14318000/8,	/* 1.78975 MHz */
346 	{ 30 },
347 	{ junofrst_portA_r },
348 	{ 0 },
349 	{ 0 },
350 	{ junofrst_portB_w }
351 };
352 
353 static struct DACinterface dac_interface =
354 {
355 	1,
356 	{ 50 }
357 };
358 
359 
360 static MACHINE_DRIVER_START( junofrst )
361 
362 	/* basic machine hardware */
363 	MDRV_CPU_ADD(M6809, 1500000)			/* 1.5 MHz ??? */
MDRV_CPU_MEMORY(readmem,writemem)364 	MDRV_CPU_MEMORY(readmem,writemem)
365 	MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
366 
367 	MDRV_CPU_ADD(Z80,14318000/8)
368 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 1.78975 MHz */
369 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
370 
371 	MDRV_CPU_ADD(I8039,8000000/I8039_CLOCK_DIVIDER)
372 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 8MHz crystal */
373 	MDRV_CPU_MEMORY(i8039_readmem,i8039_writemem)
374 	MDRV_CPU_PORTS(i8039_readport,i8039_writeport)
375 
376 	MDRV_FRAMES_PER_SECOND(30)
377 	MDRV_VBLANK_DURATION(DEFAULT_30HZ_VBLANK_DURATION)
378 
379 	/* video hardware */
380 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
381 	MDRV_SCREEN_SIZE(32*8, 32*8)
382 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)	/* not sure about the visible area */
383 	MDRV_PALETTE_LENGTH(16)
384 
385 	MDRV_VIDEO_START(generic)
386 	MDRV_VIDEO_UPDATE(tutankhm)
387 
388 	/* sound hardware */
389 	MDRV_SOUND_ADD(AY8910, ay8910_interface)
390 	MDRV_SOUND_ADD(DAC, dac_interface)
391 MACHINE_DRIVER_END
392 
393 
394 ROM_START( junofrst )
395 	ROM_REGION( 2*0x1c000, REGION_CPU1, 0 )	/* code + space for decrypted opcodes */
396 	ROM_LOAD( "jfa_b9.bin",   0x0a000, 0x2000, CRC(f5a7ab9d) SHA1(9603e797839290f8e1f93ccff9cc820604cc49ab) ) /* program ROMs */
397 	ROM_LOAD( "jfb_b10.bin",  0x0c000, 0x2000, CRC(f20626e0) SHA1(46f58bdc1a613124e2c148b61f774fcc6c232868) )
398 	ROM_LOAD( "jfc_a10.bin",  0x0e000, 0x2000, CRC(1e7744a7) SHA1(bee69833af886436016560295cddf0c8b4c5e771) )
399 
400 	ROM_LOAD( "jfc1_a4.bin",  0x10000, 0x2000, CRC(03ccbf1d) SHA1(02b45fe3c51bdc940919aac68136a121ed9bee18) ) /* graphic and code ROMs (banked) */
401 	ROM_LOAD( "jfc2_a5.bin",  0x12000, 0x2000, CRC(cb372372) SHA1(a48e7de08647cbece7787c287217eac7e7a7510b) )
402 	ROM_LOAD( "jfc3_a6.bin",  0x14000, 0x2000, CRC(879d194b) SHA1(3c7af8767c9ce908fa1761180c6e585823216d8a) )
403 	ROM_LOAD( "jfc4_a7.bin",  0x16000, 0x2000, CRC(f28af80b) SHA1(4d0e247e729365476dd3996c7d1f2a19fc83d773) )
404 	ROM_LOAD( "jfc5_a8.bin",  0x18000, 0x2000, CRC(0539f328) SHA1(c532aaed7f9e6f564e3df0dc6d8fdbee6ed721a2) )
405 	ROM_LOAD( "jfc6_a9.bin",  0x1a000, 0x2000, CRC(1da2ad6e) SHA1(de997d1b2ff6671088b57192bc9f1279359fad5d) )
406 
407 	ROM_REGION(  0x10000 , REGION_CPU2, 0 ) /* 64k for Z80 sound CPU code */
408 	ROM_LOAD( "jfs1_j3.bin",  0x0000, 0x1000, CRC(235a2893) SHA1(b90251c4971f7ba12e407f86c32723d513d6b4a0) )
409 
410 	ROM_REGION( 0x1000, REGION_CPU3, 0 )	/* 8039 */
411 	ROM_LOAD( "jfs2_p4.bin",  0x0000, 0x1000, CRC(d0fa5d5f) SHA1(9d0730d1d037bf96b0c933a32355602bf2d735dd) )
412 
413 	ROM_REGION( 0x6000, REGION_GFX1, 0 )	/* BLTROM, used at runtime */
414 	ROM_LOAD( "jfs3_c7.bin",  0x00000, 0x2000, CRC(aeacf6db) SHA1(f99ef9f9153d7a83e1881d9181faac99cb8c8a57) )
415 	ROM_LOAD( "jfs4_d7.bin",  0x02000, 0x2000, CRC(206d954c) SHA1(65494766676f18d8b5ae9a54cee00790e7b1e67e) )
416 	ROM_LOAD( "jfs5_e7.bin",  0x04000, 0x2000, CRC(1eb87a6e) SHA1(f5471b9f6f1fa6d6e5d76300d89f71da3129516a) )
417 ROM_END
418 
419 ROM_START( junofstg )
420 	ROM_REGION( 2*0x1c000, REGION_CPU1, 0 )	/* code + space for decrypted opcodes */
421 	ROM_LOAD( "jfg_a.9b",     0x0a000, 0x2000, CRC(8f77d1c5) SHA1(d47fcdbc47673c228661a3528fff0c691c76df9e) ) /* program ROMs */
422 	ROM_LOAD( "jfg_b.10b",    0x0c000, 0x2000, CRC(cd645673) SHA1(25994210a8a424bdf2eca3efa19e7eeffc097cec) )
423 	ROM_LOAD( "jfg_c.10a",    0x0e000, 0x2000, CRC(47852761) SHA1(eeef814b6ad681d4c2274f0a69d1ed9c5c1b9118) )
424 
425 	ROM_LOAD( "jfgc1.4a",     0x10000, 0x2000, CRC(90a05ae6) SHA1(0aa835e1d33ab0433189b329b791c952e69103c1) ) /* graphic and code ROMs (banked) */
426 	ROM_LOAD( "jfc2_a5.bin",  0x12000, 0x2000, CRC(cb372372) SHA1(a48e7de08647cbece7787c287217eac7e7a7510b) )
427 	ROM_LOAD( "jfc3_a6.bin",  0x14000, 0x2000, CRC(879d194b) SHA1(3c7af8767c9ce908fa1761180c6e585823216d8a) )
428 	ROM_LOAD( "jfgc4.7a",     0x16000, 0x2000, CRC(e8864a43) SHA1(52b04e69036622abeb6ec99ac3daeda6a2572994) )
429 	ROM_LOAD( "jfc5_a8.bin",  0x18000, 0x2000, CRC(0539f328) SHA1(c532aaed7f9e6f564e3df0dc6d8fdbee6ed721a2) )
430 	ROM_LOAD( "jfc6_a9.bin",  0x1a000, 0x2000, CRC(1da2ad6e) SHA1(de997d1b2ff6671088b57192bc9f1279359fad5d) )
431 
432 	ROM_REGION(  0x10000 , REGION_CPU2, 0 ) /* 64k for Z80 sound CPU code */
433 	ROM_LOAD( "jfs1_j3.bin",  0x0000, 0x1000, CRC(235a2893) SHA1(b90251c4971f7ba12e407f86c32723d513d6b4a0) )
434 
435 	ROM_REGION( 0x1000, REGION_CPU3, 0 )	/* 8039 */
436 	ROM_LOAD( "jfs2_p4.bin",  0x0000, 0x1000, CRC(d0fa5d5f) SHA1(9d0730d1d037bf96b0c933a32355602bf2d735dd) )
437 
438 	ROM_REGION( 0x6000, REGION_GFX1, 0 )	/* BLTROM, used at runtime */
439 	ROM_LOAD( "jfs3_c7.bin",  0x00000, 0x2000, CRC(aeacf6db) SHA1(f99ef9f9153d7a83e1881d9181faac99cb8c8a57) )
440 	ROM_LOAD( "jfs4_d7.bin",  0x02000, 0x2000, CRC(206d954c) SHA1(65494766676f18d8b5ae9a54cee00790e7b1e67e) )
441 	ROM_LOAD( "jfs5_e7.bin",  0x04000, 0x2000, CRC(1eb87a6e) SHA1(f5471b9f6f1fa6d6e5d76300d89f71da3129516a) )
442 ROM_END
443 
444 
445 
446 static DRIVER_INIT( junofrst )
447 {
448 	konami1_decode();
449 }
450 
451 
452 GAME( 1983, junofrst, 0,        junofrst, junofrst, junofrst, ROT90, "Konami", "Juno First" )
453 GAME( 1983, junofstg, junofrst, junofrst, junofrst, junofrst, ROT90, "Konami (Gottlieb license)", "Juno First (Gottlieb)" )
454