1 /***************************************************************************
2 
3 Based on drivers from Juno First emulator by Chris Hardy (chrish@kcbbs.gen.nz)
4 
5 To enter service mode, keep 1&2 pressed on reset
6 
7 ***************************************************************************/
8 
9 #include "driver.h"
10 #include "vidhrdw/generic.h"
11 #include "cpu/m6809/m6809.h"
12 
13 
14 void konami1_decode(void);
15 
16 extern unsigned char *circusc_spritebank;
17 extern unsigned char *circusc_scroll;
18 extern unsigned char *circusc_videoram,*circusc_colorram;
19 
20 WRITE_HANDLER( circusc_videoram_w );
21 WRITE_HANDLER( circusc_colorram_w );
22 
23 VIDEO_START( circusc );
24 WRITE_HANDLER( circusc_flipscreen_w );
25 PALETTE_INIT( circusc );
26 WRITE_HANDLER( circusc_sprite_bank_select_w );
27 VIDEO_UPDATE( circusc );
28 
29 
30 
READ_HANDLER(circusc_sh_timer_r)31 static READ_HANDLER( circusc_sh_timer_r )
32 {
33 	int clock;
34 #define CIRCUSCHALIE_TIMER_RATE (14318180/6144)
35 
36 	clock = (activecpu_gettotalcycles()*4) / CIRCUSCHALIE_TIMER_RATE;
37 
38 	return clock & 0xF;
39 }
40 
WRITE_HANDLER(circusc_sh_irqtrigger_w)41 static WRITE_HANDLER( circusc_sh_irqtrigger_w )
42 {
43 	cpu_set_irq_line_and_vector(1,0,HOLD_LINE,0xff);
44 }
45 
WRITE_HANDLER(circusc_dac_w)46 static WRITE_HANDLER( circusc_dac_w )
47 {
48 	DAC_data_w(0,data);
49 }
50 
WRITE_HANDLER(circusc_coin_counter_w)51 static WRITE_HANDLER( circusc_coin_counter_w )
52 {
53 	coin_counter_w(offset,data);
54 }
55 
56 
57 
MEMORY_READ_START(readmem)58 static MEMORY_READ_START( readmem )
59 	{ 0x1000, 0x1000, input_port_0_r }, /* IO Coin */
60 	{ 0x1001, 0x1001, input_port_1_r }, /* P1 IO */
61 	{ 0x1002, 0x1002, input_port_2_r }, /* P2 IO */
62 	{ 0x1400, 0x1400, input_port_3_r }, /* DIP 1 */
63 	{ 0x1800, 0x1800, input_port_4_r }, /* DIP 2 */
64 	{ 0x2000, 0x39ff, MRA_RAM },
65 	{ 0x6000, 0xffff, MRA_ROM },
66 MEMORY_END
67 
68 static MEMORY_WRITE_START( writemem )
69 	{ 0x0000, 0x0000, circusc_flipscreen_w },
70 	{ 0x0001, 0x0001, interrupt_enable_w },
71 	{ 0x0003, 0x0004, circusc_coin_counter_w },  /* Coin counters */
72 	{ 0x0005, 0x0005, MWA_RAM, &circusc_spritebank },
73 	{ 0x0400, 0x0400, watchdog_reset_w },
74 	{ 0x0800, 0x0800, soundlatch_w },
75 	{ 0x0c00, 0x0c00, circusc_sh_irqtrigger_w },  /* cause interrupt on audio CPU */
76 	{ 0x1c00, 0x1c00, MWA_RAM, &circusc_scroll },
77 	{ 0x2000, 0x2fff, MWA_RAM },
78 	{ 0x3000, 0x33ff, circusc_colorram_w, &circusc_colorram },
79 	{ 0x3400, 0x37ff, circusc_videoram_w, &circusc_videoram },
80 	{ 0x3800, 0x38ff, MWA_RAM, &spriteram_2 },
81 	{ 0x3900, 0x39ff, MWA_RAM, &spriteram, &spriteram_size },
82 	{ 0x3a00, 0x3fff, MWA_RAM },
83 	{ 0x6000, 0xffff, MWA_ROM },
84 MEMORY_END
85 
86 static MEMORY_READ_START( sound_readmem )
87 	{ 0x0000, 0x3fff, MRA_ROM },
88 	{ 0x4000, 0x43ff, MRA_RAM },
89 	{ 0x6000, 0x6000, soundlatch_r },
90 	{ 0x8000, 0x8000, circusc_sh_timer_r },
91 MEMORY_END
92 
93 static MEMORY_WRITE_START( sound_writemem )
94 	{ 0x0000, 0x3fff, MWA_ROM },
95 	{ 0x4000, 0x43ff, MWA_RAM },
96 	{ 0xa000, 0xa000, MWA_NOP },    /* latch command for the 76496. We should buffer this */
97 									/* command and send it to the chip, but we just use */
98 									/* the triggers below because the program always writes */
99 									/* the same number here and there. */
100 	{ 0xa001, 0xa001, SN76496_0_w },        /* trigger the 76496 to read the latch */
101 	{ 0xa002, 0xa002, SN76496_1_w },        /* trigger the 76496 to read the latch */
102 	{ 0xa003, 0xa003, circusc_dac_w },
103 	{ 0xa004, 0xa004, MWA_NOP },            /* ??? */
104 	{ 0xa07c, 0xa07c, MWA_NOP },            /* ??? */
105 MEMORY_END
106 
107 
108 
109 INPUT_PORTS_START( circusc )
110 	PORT_START      /* IN0 */
111 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
112 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
113 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
114 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
115 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
116 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
117 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
118 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
119 
120 	PORT_START      /* IN1 */
121 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY )
122 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
123 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
124 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
125 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
126 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
127 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
128 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
129 
130 	PORT_START      /* IN2 */
131 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_COCKTAIL )
132 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL )
133 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
134 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
135 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
136 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
137 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
138 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
139 	PORT_START      /* DSW0 */
140 
141 	PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) )
142 	PORT_DIPSETTING(    0x02, DEF_STR( 4C_1C ) )
143 	PORT_DIPSETTING(    0x05, DEF_STR( 3C_1C ) )
144 	PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
145 	PORT_DIPSETTING(    0x04, DEF_STR( 3C_2C ) )
146 	PORT_DIPSETTING(    0x01, DEF_STR( 4C_3C ) )
147 	PORT_DIPSETTING(    0x0f, DEF_STR( 1C_1C ) )
148 	PORT_DIPSETTING(    0x03, DEF_STR( 3C_4C ) )
149 	PORT_DIPSETTING(    0x07, DEF_STR( 2C_3C ) )
150 	PORT_DIPSETTING(    0x0e, DEF_STR( 1C_2C ) )
151 	PORT_DIPSETTING(    0x06, DEF_STR( 2C_5C ) )
152 	PORT_DIPSETTING(    0x0d, DEF_STR( 1C_3C ) )
153 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_4C ) )
154 	PORT_DIPSETTING(    0x0b, DEF_STR( 1C_5C ) )
155 	PORT_DIPSETTING(    0x0a, DEF_STR( 1C_6C ) )
156 	PORT_DIPSETTING(    0x09, DEF_STR( 1C_7C ) )
157 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
158 	PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) )
159 	PORT_DIPSETTING(    0x20, DEF_STR( 4C_1C ) )
160 	PORT_DIPSETTING(    0x50, DEF_STR( 3C_1C ) )
161 	PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
162 	PORT_DIPSETTING(    0x40, DEF_STR( 3C_2C ) )
163 	PORT_DIPSETTING(    0x10, DEF_STR( 4C_3C ) )
164 	PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) )
165 	PORT_DIPSETTING(    0x30, DEF_STR( 3C_4C ) )
166 	PORT_DIPSETTING(    0x70, DEF_STR( 2C_3C ) )
167 	PORT_DIPSETTING(    0xe0, DEF_STR( 1C_2C ) )
168 	PORT_DIPSETTING(    0x60, DEF_STR( 2C_5C ) )
169 	PORT_DIPSETTING(    0xd0, DEF_STR( 1C_3C ) )
170 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_4C ) )
171 	PORT_DIPSETTING(    0xb0, DEF_STR( 1C_5C ) )
172 	PORT_DIPSETTING(    0xa0, DEF_STR( 1C_6C ) )
173 	PORT_DIPSETTING(    0x90, DEF_STR( 1C_7C ) )
174 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
175 
176 	PORT_START      /* DSW1 */
177 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
178 	PORT_DIPSETTING(    0x03, "3" )
179 	PORT_DIPSETTING(    0x02, "4" )
180 	PORT_DIPSETTING(    0x01, "5" )
181 	PORT_DIPSETTING(    0x00, "7" )
182 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) )
183 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
184 	PORT_DIPSETTING(    0x04, DEF_STR( Cocktail ) )
185 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Bonus_Life ) )
186 	PORT_DIPSETTING(    0x08, "20000 70000" )
187 	PORT_DIPSETTING(    0x00, "30000 80000" )
188 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
189 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
190 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
191 	PORT_DIPNAME( 0x60, 0x40, DEF_STR( Difficulty ) )
192 	PORT_DIPSETTING(    0x60, "Easy" )
193 	PORT_DIPSETTING(    0x40, "Normal" )
194 	PORT_DIPSETTING(    0x20, "Hard" )
195 	PORT_DIPSETTING(    0x00, "Hardest" )
196 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) )
197 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
198 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
199 INPUT_PORTS_END
200 
201 
202 
203 static struct GfxLayout charlayout =
204 {
205 	8,8,    /* 8*8 characters */
206 	512,    /* 512 characters */
207 	4,      /* 4 bits per pixel */
208 	{ 0, 1, 2, 3 }, /* the four bitplanes are packed in one nibble */
209 	{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4 },
210 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
211 	32*8    /* every char takes 8 consecutive bytes */
212 };
213 
214 static struct GfxLayout spritelayout =
215 {
216 	16,16,  /* 16*16 sprites */
217 	384,    /* 384 sprites */
218 	4,      /* 4 bits per pixel */
219 	{ 0, 1, 2, 3 },        /* the bitplanes are packed */
220 	{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4,
221 			8*4, 9*4, 10*4, 11*4, 12*4, 13*4, 14*4, 15*4 },
222 	{ 0*4*16, 1*4*16, 2*4*16, 3*4*16, 4*4*16, 5*4*16, 6*4*16, 7*4*16,
223 			8*4*16, 9*4*16, 10*4*16, 11*4*16, 12*4*16, 13*4*16, 14*4*16, 15*4*16 },
224 	32*4*8    /* every sprite takes 128 consecutive bytes */
225 };
226 
227 static struct GfxDecodeInfo gfxdecodeinfo[] =
228 {
229 	{ REGION_GFX1, 0, &charlayout,       0, 16 },
230 	{ REGION_GFX2, 0, &spritelayout, 16*16, 16 },
231 	{ -1 } /* end of array */
232 };
233 
234 
235 
236 static struct SN76496interface sn76496_interface =
237 {
238 	2,      /* 2 chips */
239 	{ 14318180/8, 14318180/8 },     /*  1.7897725 MHz */
240 	{ 100, 100 }
241 };
242 
243 static struct DACinterface dac_interface =
244 {
245 	1,
246 	{ 100 }
247 };
248 
249 
250 
251 static MACHINE_DRIVER_START( circusc )
252 
253 	/* basic machine hardware */
254 	MDRV_CPU_ADD(M6809, 2048000)        /* 2 MHz */
MDRV_CPU_MEMORY(readmem,writemem)255 	MDRV_CPU_MEMORY(readmem,writemem)
256 	MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
257 
258 	MDRV_CPU_ADD(Z80,14318180/4)
259 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)     /* Z80 Clock is derived from a 14.31818 MHz crystal */
260 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
261 
262 	MDRV_FRAMES_PER_SECOND(60)
263 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
264 
265 	/* video hardware */
266 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
267 	MDRV_SCREEN_SIZE(32*8, 32*8)
268 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
269 	MDRV_GFXDECODE(gfxdecodeinfo)
270 	MDRV_PALETTE_LENGTH(32)
271 	MDRV_COLORTABLE_LENGTH(16*16+16*16)
272 
273 	MDRV_PALETTE_INIT(circusc)
274 	MDRV_VIDEO_START(circusc)
275 	MDRV_VIDEO_UPDATE(circusc)
276 
277 	/* sound hardware */
278 	MDRV_SOUND_ADD(SN76496, sn76496_interface)
279 	MDRV_SOUND_ADD(DAC, dac_interface)
280 MACHINE_DRIVER_END
281 
282 
283 
284 /***************************************************************************
285 
286   Game driver(s)
287 
288 ***************************************************************************/
289 
290 ROM_START( circusc )
291 	ROM_REGION( 2*0x10000, REGION_CPU1, 0 )     /* 64k for code + 64k for decrypted opcodes */
292 	ROM_LOAD( "s05",          0x6000, 0x2000, CRC(48feafcf) SHA1(0e5bd350fa5fee42569eb0c4accf7512d645b792) )
293 	ROM_LOAD( "q04",          0x8000, 0x2000, CRC(c283b887) SHA1(458c398911453d558003f49c298b0d593c941c11) )
294 	ROM_LOAD( "q03",          0xa000, 0x2000, CRC(e90c0e86) SHA1(03211f0cc90b6e356989c5e2a41b70f4ff2ead83) )
295 	ROM_LOAD( "q02",          0xc000, 0x2000, CRC(4d847dc6) SHA1(a1f65e73c4e5abff1b0970bad32a128173245561) )
296 	ROM_LOAD( "q01",          0xe000, 0x2000, CRC(18c20adf) SHA1(2f40e1a109d129bb127a8b98e27817988cd08c8b) )
297 
298 	ROM_REGION( 0x10000, REGION_CPU2, 0 )     /* 64k for the audio CPU */
299 	ROM_LOAD( "cd05_l14.bin", 0x0000, 0x2000, CRC(607df0fb) SHA1(67103d61994fd3a1e2de7cf9487e4f763234b18e) )
300 	ROM_LOAD( "cd07_l15.bin", 0x2000, 0x2000, CRC(a6ad30e1) SHA1(14f305717edcc2471e763b262960a0b96eef3530) )
301 
302 	ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
303 	ROM_LOAD( "a04_j12.bin",  0x0000, 0x2000, CRC(56e5b408) SHA1(73b9e3d46dfe9e39b390c634df153648a0906876) )
304 	ROM_LOAD( "a05_k13.bin",  0x2000, 0x2000, CRC(5aca0193) SHA1(4d0b0a773c385b7f1dcf024760d0437f47e78fbe) )
305 
306 	ROM_REGION( 0x0c000, REGION_GFX2, ROMREGION_DISPOSE )
307 	ROM_LOAD( "e11_j06.bin",  0x0000, 0x2000, CRC(df0405c6) SHA1(70a50dcc86dfbdaa9c2af613105aae7f90747804) )
308 	ROM_LOAD( "e12_j07.bin",  0x2000, 0x2000, CRC(23dfe3a6) SHA1(2ad7cbcbdbb434dc43e9c94cd00df9e57ac097f5) )
309 	ROM_LOAD( "e13_j08.bin",  0x4000, 0x2000, CRC(3ba95390) SHA1(b22ad7cfda392894208eb4b39505f38bfe4c4342) )
310 	ROM_LOAD( "e14_j09.bin",  0x6000, 0x2000, CRC(a9fba85a) SHA1(1a649ec667d377ffab26b4694be790b3a2742f30) )
311 	ROM_LOAD( "e15_j10.bin",  0x8000, 0x2000, CRC(0532347e) SHA1(4c02b75a62993cce60d2cb87b81c7738abbc9a0d) )
312 	ROM_LOAD( "e16_j11.bin",  0xa000, 0x2000, CRC(e1725d24) SHA1(d315588e6cc2f4263be621d2d8603c8215a90046) )
313 
314 	ROM_REGION( 0x0220, REGION_PROMS, 0 )
315 	ROM_LOAD( "a02_j18.bin",  0x0000, 0x020, CRC(10dd4eaa) SHA1(599acd25f36445221c553510a5de23ddba5ecc15) ) /* palette */
316 	ROM_LOAD( "c10_j16.bin",  0x0020, 0x100, CRC(c244f2aa) SHA1(86df21c8e0b1ed51a0a4bd33dbb33f6efdea7d39) ) /* character lookup table */
317 	ROM_LOAD( "b07_j17.bin",  0x0120, 0x100, CRC(13989357) SHA1(0d61d468f6d3e1570fd18d236ec8cab92db4ed5c) ) /* sprite lookup table */
318 ROM_END
319 
320 ROM_START( circusc2 )
321 	ROM_REGION( 2*0x10000, REGION_CPU1, 0 )     /* 64k for code + 64k for decrypted opcodes */
322 	ROM_LOAD( "h03_r05.bin",  0x6000, 0x2000, CRC(ed52c60f) SHA1(aa9dc6a57e29895be521ac6a146de56a7beef957) )
323 	ROM_LOAD( "h04_n04.bin",  0x8000, 0x2000, CRC(fcc99e33) SHA1(da140a849ac22419e8890414b8984aa264f7e3c7) )
324 	ROM_LOAD( "h05_n03.bin",  0xa000, 0x2000, CRC(5ef5b3b5) SHA1(b058600c915a0d6653eaa5fc87ecee44a38eed00) )
325 	ROM_LOAD( "h06_n02.bin",  0xc000, 0x2000, CRC(a5a5e796) SHA1(a41700b272ff4198447ed75138d65ec3a759d221) )
326 	ROM_LOAD( "h07_n01.bin",  0xe000, 0x2000, CRC(70d26721) SHA1(eb71cb0da26991a3628150f45f1389c2f2ef90fc) )
327 
328 	ROM_REGION( 0x10000, REGION_CPU2, 0 )     /* 64k for the audio CPU */
329 	ROM_LOAD( "cd05_l14.bin", 0x0000, 0x2000, CRC(607df0fb) SHA1(67103d61994fd3a1e2de7cf9487e4f763234b18e) )
330 	ROM_LOAD( "cd07_l15.bin", 0x2000, 0x2000, CRC(a6ad30e1) SHA1(14f305717edcc2471e763b262960a0b96eef3530) )
331 
332 	ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
333 	ROM_LOAD( "a04_j12.bin",  0x0000, 0x2000, CRC(56e5b408) SHA1(73b9e3d46dfe9e39b390c634df153648a0906876) )
334 	ROM_LOAD( "a05_k13.bin",  0x2000, 0x2000, CRC(5aca0193) SHA1(4d0b0a773c385b7f1dcf024760d0437f47e78fbe) )
335 
336 	ROM_REGION( 0x0c000, REGION_GFX2, ROMREGION_DISPOSE )
337 	ROM_LOAD( "e11_j06.bin",  0x0000, 0x2000, CRC(df0405c6) SHA1(70a50dcc86dfbdaa9c2af613105aae7f90747804) )
338 	ROM_LOAD( "e12_j07.bin",  0x2000, 0x2000, CRC(23dfe3a6) SHA1(2ad7cbcbdbb434dc43e9c94cd00df9e57ac097f5) )
339 	ROM_LOAD( "e13_j08.bin",  0x4000, 0x2000, CRC(3ba95390) SHA1(b22ad7cfda392894208eb4b39505f38bfe4c4342) )
340 	ROM_LOAD( "e14_j09.bin",  0x6000, 0x2000, CRC(a9fba85a) SHA1(1a649ec667d377ffab26b4694be790b3a2742f30) )
341 	ROM_LOAD( "e15_j10.bin",  0x8000, 0x2000, CRC(0532347e) SHA1(4c02b75a62993cce60d2cb87b81c7738abbc9a0d) )
342 	ROM_LOAD( "e16_j11.bin",  0xa000, 0x2000, CRC(e1725d24) SHA1(d315588e6cc2f4263be621d2d8603c8215a90046) )
343 
344 	ROM_REGION( 0x0220, REGION_PROMS, 0 )
345 	ROM_LOAD( "a02_j18.bin",  0x0000, 0x020, CRC(10dd4eaa) SHA1(599acd25f36445221c553510a5de23ddba5ecc15) ) /* palette */
346 	ROM_LOAD( "c10_j16.bin",  0x0020, 0x100, CRC(c244f2aa) SHA1(86df21c8e0b1ed51a0a4bd33dbb33f6efdea7d39) ) /* character lookup table */
347 	ROM_LOAD( "b07_j17.bin",  0x0120, 0x100, CRC(13989357) SHA1(0d61d468f6d3e1570fd18d236ec8cab92db4ed5c) ) /* sprite lookup table */
348 ROM_END
349 
350 ROM_START( circuscc )
351 	ROM_REGION( 2*0x10000, REGION_CPU1, 0 )     /* 64k for code + 64k for decrypted opcodes */
352 	ROM_LOAD( "cc_u05.h3",    0x6000, 0x2000, CRC(964c035a) SHA1(bd69bb755be327d04fc95cd33115663b33b33ed3) )
353 	ROM_LOAD( "p04",          0x8000, 0x2000, CRC(dd0c0ee7) SHA1(e56e48f6f251430b7ce0e2cc59cfd00b5c760b9c) )
354 	ROM_LOAD( "p03",          0xa000, 0x2000, CRC(190247af) SHA1(f2128fb5e6c16791493af1c77628b610b86d4677) )
355 	ROM_LOAD( "p02",          0xc000, 0x2000, CRC(7e63725e) SHA1(f731f15956c6e7a0a4e8225513f8b9e6017c7a17) )
356 	ROM_LOAD( "p01",          0xe000, 0x2000, CRC(eedaa5b2) SHA1(0c606ca4d092c3dc290c30b1a73f94e3b348e8fd) )
357 
358 	ROM_REGION( 0x10000, REGION_CPU2, 0 )     /* 64k for the audio CPU */
359 	ROM_LOAD( "cd05_l14.bin", 0x0000, 0x2000, CRC(607df0fb) SHA1(67103d61994fd3a1e2de7cf9487e4f763234b18e) )
360 	ROM_LOAD( "cd07_l15.bin", 0x2000, 0x2000, CRC(a6ad30e1) SHA1(14f305717edcc2471e763b262960a0b96eef3530) )
361 
362 	ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
363 	ROM_LOAD( "a04_j12.bin",  0x0000, 0x2000, CRC(56e5b408) SHA1(73b9e3d46dfe9e39b390c634df153648a0906876) )
364 	ROM_LOAD( "a05_k13.bin",  0x2000, 0x2000, CRC(5aca0193) SHA1(4d0b0a773c385b7f1dcf024760d0437f47e78fbe) )
365 
366 	ROM_REGION( 0x0c000, REGION_GFX2, ROMREGION_DISPOSE )
367 	ROM_LOAD( "e11_j06.bin",  0x0000, 0x2000, CRC(df0405c6) SHA1(70a50dcc86dfbdaa9c2af613105aae7f90747804) )
368 	ROM_LOAD( "e12_j07.bin",  0x2000, 0x2000, CRC(23dfe3a6) SHA1(2ad7cbcbdbb434dc43e9c94cd00df9e57ac097f5) )
369 	ROM_LOAD( "e13_j08.bin",  0x4000, 0x2000, CRC(3ba95390) SHA1(b22ad7cfda392894208eb4b39505f38bfe4c4342) )
370 	ROM_LOAD( "e14_j09.bin",  0x6000, 0x2000, CRC(a9fba85a) SHA1(1a649ec667d377ffab26b4694be790b3a2742f30) )
371 	ROM_LOAD( "e15_j10.bin",  0x8000, 0x2000, CRC(0532347e) SHA1(4c02b75a62993cce60d2cb87b81c7738abbc9a0d) )
372 	ROM_LOAD( "e16_j11.bin",  0xa000, 0x2000, CRC(e1725d24) SHA1(d315588e6cc2f4263be621d2d8603c8215a90046) )
373 
374 	ROM_REGION( 0x0220, REGION_PROMS, 0 )
375 	ROM_LOAD( "a02_j18.bin",  0x0000, 0x020, CRC(10dd4eaa) SHA1(599acd25f36445221c553510a5de23ddba5ecc15) ) /* palette */
376 	ROM_LOAD( "c10_j16.bin",  0x0020, 0x100, CRC(c244f2aa) SHA1(86df21c8e0b1ed51a0a4bd33dbb33f6efdea7d39) ) /* character lookup table */
377 	ROM_LOAD( "b07_j17.bin",  0x0120, 0x100, CRC(13989357) SHA1(0d61d468f6d3e1570fd18d236ec8cab92db4ed5c) ) /* sprite lookup table */
378 ROM_END
379 
380 ROM_START( circusce )
381 	ROM_REGION( 2*0x10000, REGION_CPU1, 0 )     /* 64k for code + 64k for decrypted opcodes */
382 	ROM_LOAD( "p05",          0x6000, 0x2000, CRC(7ca74494) SHA1(326e081490e413b0638ec77de184b128fb2afd14) )
383 	ROM_LOAD( "p04",          0x8000, 0x2000, CRC(dd0c0ee7) SHA1(e56e48f6f251430b7ce0e2cc59cfd00b5c760b9c) )
384 	ROM_LOAD( "p03",          0xa000, 0x2000, CRC(190247af) SHA1(f2128fb5e6c16791493af1c77628b610b86d4677) )
385 	ROM_LOAD( "p02",          0xc000, 0x2000, CRC(7e63725e) SHA1(f731f15956c6e7a0a4e8225513f8b9e6017c7a17) )
386 	ROM_LOAD( "p01",          0xe000, 0x2000, CRC(eedaa5b2) SHA1(0c606ca4d092c3dc290c30b1a73f94e3b348e8fd) )
387 
388 	ROM_REGION( 0x10000, REGION_CPU2, 0 )     /* 64k for the audio CPU */
389 	ROM_LOAD( "cd05_l14.bin", 0x0000, 0x2000, CRC(607df0fb) SHA1(67103d61994fd3a1e2de7cf9487e4f763234b18e) )
390 	ROM_LOAD( "cd07_l15.bin", 0x2000, 0x2000, CRC(a6ad30e1) SHA1(14f305717edcc2471e763b262960a0b96eef3530) )
391 
392 	ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
393 	ROM_LOAD( "a04_j12.bin",  0x0000, 0x2000, CRC(56e5b408) SHA1(73b9e3d46dfe9e39b390c634df153648a0906876) )
394 	ROM_LOAD( "a05_k13.bin",  0x2000, 0x2000, CRC(5aca0193) SHA1(4d0b0a773c385b7f1dcf024760d0437f47e78fbe) )
395 
396 	ROM_REGION( 0x0c000, REGION_GFX2, ROMREGION_DISPOSE )
397 	ROM_LOAD( "e11_j06.bin",  0x0000, 0x2000, CRC(df0405c6) SHA1(70a50dcc86dfbdaa9c2af613105aae7f90747804) )
398 	ROM_LOAD( "e12_j07.bin",  0x2000, 0x2000, CRC(23dfe3a6) SHA1(2ad7cbcbdbb434dc43e9c94cd00df9e57ac097f5) )
399 	ROM_LOAD( "e13_j08.bin",  0x4000, 0x2000, CRC(3ba95390) SHA1(b22ad7cfda392894208eb4b39505f38bfe4c4342) )
400 	ROM_LOAD( "e14_j09.bin",  0x6000, 0x2000, CRC(a9fba85a) SHA1(1a649ec667d377ffab26b4694be790b3a2742f30) )
401 	ROM_LOAD( "e15_j10.bin",  0x8000, 0x2000, CRC(0532347e) SHA1(4c02b75a62993cce60d2cb87b81c7738abbc9a0d) )
402 	ROM_LOAD( "e16_j11.bin",  0xa000, 0x2000, CRC(e1725d24) SHA1(d315588e6cc2f4263be621d2d8603c8215a90046) )
403 
404 	ROM_REGION( 0x0220, REGION_PROMS, 0 )
405 	ROM_LOAD( "a02_j18.bin",  0x0000, 0x020, CRC(10dd4eaa) SHA1(599acd25f36445221c553510a5de23ddba5ecc15) ) /* palette */
406 	ROM_LOAD( "c10_j16.bin",  0x0020, 0x100, CRC(c244f2aa) SHA1(86df21c8e0b1ed51a0a4bd33dbb33f6efdea7d39) ) /* character lookup table */
407 	ROM_LOAD( "b07_j17.bin",  0x0120, 0x100, CRC(13989357) SHA1(0d61d468f6d3e1570fd18d236ec8cab92db4ed5c) ) /* sprite lookup table */
408 ROM_END
409 
410 
411 static DRIVER_INIT( circusc )
412 {
413 	konami1_decode();
414 }
415 
416 
417 GAME( 1984, circusc,  0,       circusc, circusc, circusc, ROT90, "Konami", "Circus Charlie" )
418 GAME( 1984, circusc2, circusc, circusc, circusc, circusc, ROT90, "Konami", "Circus Charlie (no level select)" )
419 GAME( 1984, circuscc, circusc, circusc, circusc, circusc, ROT90, "Konami (Centuri license)", "Circus Charlie (Centuri)" )
420 GAME( 1984, circusce, circusc, circusc, circusc, circusc, ROT90, "Konami (Centuri license)", "Circus Charlie (Centuri, earlier)" )
421