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