diff --git a/src/mame/drivers/circusc.c b/src/mame/drivers/circusc.c index f9db8023a36..34760d58e28 100644 --- a/src/mame/drivers/circusc.c +++ b/src/mame/drivers/circusc.c @@ -11,31 +11,31 @@ Based on drivers from Juno First emulator by Chris Hardy (chrish@kcbbs.gen.nz) To enter service mode, keep 1&2 pressed on reset -'circusc2' ingame bug : +'circusc3' ingame bug : ----------------------- "Test mode" displays 2, 3, 4 and 7 lives instead of 3, 4, 5 and 7 due to code at 0xcb38 : - CB38: B6 30 88 LDA $1800 - CB3B: 43 COMA - CB3C: 84 2B ANDA #$03 - CB3E: 81 8B CMPA #$03 - CB40: 25 20 BCS $CB44 - CB42: 86 87 LDA #$05 - CB44: 8B 20 ADDA #$02 + CB38: 9E 18 00 LDA $1800 + CB3B: CB COMA + CB3C: AC 03 ANDA #$03 + CB3E: 09 03 CMPA #$03 + CB40: 07 02 BCS $CB44 + CB42: 04 05 LDA #$05 + CB44: A9 02 ADDA #$02 In other sets, you have the following (code from 'circusc') : - CB38: B6 30 88 LDA $1800 - CB3B: 43 COMA - CB3C: 84 2B ANDA #$03 - CB3E: 81 8B CMPA #$03 - CB40: 25 20 BCS $CB44 - CB42: 86 86 LDA #$04 - CB44: 8B 21 ADDA #$03 + CB38: 9E 18 00 LDA $1800 + CB3B: CB COMA + CB3C: AC 03 ANDA #$03 + CB3E: 09 03 CMPA #$03 + CB40: 07 02 BCS $CB44 + CB42: 04 03 LDA #$04 + CB44: A9 03 ADDA #$03 - Ingame lives are correct though (same code for 'circusc' and 'circusc2') : + Ingame lives are correct though (same code for 'circusc' and 'circusc3') : 6B93: 96 0D LDA $2F 6B95: 84 81 ANDA #$03 @@ -44,6 +44,8 @@ To enter service mode, keep 1&2 pressed on reset 6B9B: 25 2A BCS $6B9F 6B9D: 86 8F LDA #$07 +This bug is due to 380_r02.6h, it differs from 380_q02.6h by 2 bytes, at + offset 0x0b43 is 0x05 and 0x0b45 is 0x02 which is the code listed above. ***************************************************************************/ @@ -383,8 +385,8 @@ MACHINE_CONFIG_END ROM_START( circusc ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "380_s05.3h", 0x6000, 0x2000, CRC(48feafcf) SHA1(0e5bd350fa5fee42569eb0c4accf7512d645b792) ) - ROM_LOAD( "380_r04.4h", 0x8000, 0x2000, CRC(c283b887) SHA1(458c398911453d558003f49c298b0d593c941c11) ) // 380_q04.4h == same - ROM_LOAD( "380_r03.5h", 0xa000, 0x2000, CRC(e90c0e86) SHA1(03211f0cc90b6e356989c5e2a41b70f4ff2ead83) ) // 380_q03.5h == same + ROM_LOAD( "380_q04.4h", 0x8000, 0x2000, CRC(c283b887) SHA1(458c398911453d558003f49c298b0d593c941c11) ) // Could also be labeled 380 R04 + ROM_LOAD( "380_q03.5h", 0xa000, 0x2000, CRC(e90c0e86) SHA1(03211f0cc90b6e356989c5e2a41b70f4ff2ead83) ) // Could also be labeled 380 R03 ROM_LOAD( "380_q02.6h", 0xc000, 0x2000, CRC(4d847dc6) SHA1(a1f65e73c4e5abff1b0970bad32a128173245561) ) ROM_LOAD( "380_q01.7h", 0xe000, 0x2000, CRC(18c20adf) SHA1(2f40e1a109d129bb127a8b98e27817988cd08c8b) ) @@ -410,12 +412,12 @@ ROM_START( circusc ) ROM_LOAD( "380_j16.10c", 0x0120, 0x100, CRC(c244f2aa) SHA1(86df21c8e0b1ed51a0a4bd33dbb33f6efdea7d39) ) /* sprite lookup table */ ROM_END -ROM_START( circusc2 ) +ROM_START( circusc2 ) /* This set verified to come with Q revision roms for 01 through 04 */ ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "380_w05.3h", 0x6000, 0x2000, CRC(87df9f5e) SHA1(d759ff6200546c562aecee749dc9941bbbdb9918) ) - ROM_LOAD( "380_r04.4h", 0x8000, 0x2000, CRC(c283b887) SHA1(458c398911453d558003f49c298b0d593c941c11) ) // 380_q04.4h == same - ROM_LOAD( "380_r03.5h", 0xa000, 0x2000, CRC(e90c0e86) SHA1(03211f0cc90b6e356989c5e2a41b70f4ff2ead83) ) // 380_q03.5h == same - ROM_LOAD( "380_r02.6h", 0xc000, 0x2000, CRC(2d434c6f) SHA1(2c794f24422db7671d1bc85cef308ab4a62d523d) ) + ROM_LOAD( "380_q04.4h", 0x8000, 0x2000, CRC(c283b887) SHA1(458c398911453d558003f49c298b0d593c941c11) ) // Could also be labeled 380 R04 + ROM_LOAD( "380_q03.5h", 0xa000, 0x2000, CRC(e90c0e86) SHA1(03211f0cc90b6e356989c5e2a41b70f4ff2ead83) ) // Could also be labeled 380 R03 + ROM_LOAD( "380_q02.6h", 0xc000, 0x2000, CRC(4d847dc6) SHA1(a1f65e73c4e5abff1b0970bad32a128173245561) ) ROM_LOAD( "380_q01.7h", 0xe000, 0x2000, CRC(18c20adf) SHA1(2f40e1a109d129bb127a8b98e27817988cd08c8b) ) ROM_REGION( 0x10000, "audiocpu", 0 ) @@ -441,6 +443,36 @@ ROM_START( circusc2 ) ROM_END ROM_START( circusc3 ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "380_w05.3h", 0x6000, 0x2000, CRC(87df9f5e) SHA1(d759ff6200546c562aecee749dc9941bbbdb9918) ) + ROM_LOAD( "380_r04.4h", 0x8000, 0x2000, CRC(c283b887) SHA1(458c398911453d558003f49c298b0d593c941c11) ) // == 380_q04.4h + ROM_LOAD( "380_r03.5h", 0xa000, 0x2000, CRC(e90c0e86) SHA1(03211f0cc90b6e356989c5e2a41b70f4ff2ead83) ) // == 380_q03.5h + ROM_LOAD( "380_r02.6h", 0xc000, 0x2000, CRC(2d434c6f) SHA1(2c794f24422db7671d1bc85cef308ab4a62d523d) ) // Cause of incorrect Lives bug in service mode + ROM_LOAD( "380_q01.7h", 0xe000, 0x2000, CRC(18c20adf) SHA1(2f40e1a109d129bb127a8b98e27817988cd08c8b) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "380_l14.5c", 0x0000, 0x2000, CRC(607df0fb) SHA1(67103d61994fd3a1e2de7cf9487e4f763234b18e) ) + ROM_LOAD( "380_l15.7c", 0x2000, 0x2000, CRC(a6ad30e1) SHA1(14f305717edcc2471e763b262960a0b96eef3530) ) + + ROM_REGION( 0x04000, "gfx1", 0 ) + ROM_LOAD( "380_j12.4a", 0x0000, 0x2000, CRC(56e5b408) SHA1(73b9e3d46dfe9e39b390c634df153648a0906876) ) + ROM_LOAD( "380_j13.5a", 0x2000, 0x2000, CRC(5aca0193) SHA1(4d0b0a773c385b7f1dcf024760d0437f47e78fbe) ) + + ROM_REGION( 0x0c000, "gfx2", 0 ) + ROM_LOAD( "380_j06.11e", 0x0000, 0x2000, CRC(df0405c6) SHA1(70a50dcc86dfbdaa9c2af613105aae7f90747804) ) + ROM_LOAD( "380_j07.12e", 0x2000, 0x2000, CRC(23dfe3a6) SHA1(2ad7cbcbdbb434dc43e9c94cd00df9e57ac097f5) ) + ROM_LOAD( "380_j08.13e", 0x4000, 0x2000, CRC(3ba95390) SHA1(b22ad7cfda392894208eb4b39505f38bfe4c4342) ) + ROM_LOAD( "380_j09.14e", 0x6000, 0x2000, CRC(a9fba85a) SHA1(1a649ec667d377ffab26b4694be790b3a2742f30) ) + ROM_LOAD( "380_j10.15e", 0x8000, 0x2000, CRC(0532347e) SHA1(4c02b75a62993cce60d2cb87b81c7738abbc9a0d) ) + ROM_LOAD( "380_j11.16e", 0xa000, 0x2000, CRC(e1725d24) SHA1(d315588e6cc2f4263be621d2d8603c8215a90046) ) + + ROM_REGION( 0x0220, "proms", 0 ) + ROM_LOAD( "380_j18.2a", 0x0000, 0x020, CRC(10dd4eaa) SHA1(599acd25f36445221c553510a5de23ddba5ecc15) ) /* palette */ + ROM_LOAD( "380_j17.7b", 0x0020, 0x100, CRC(13989357) SHA1(0d61d468f6d3e1570fd18d236ec8cab92db4ed5c) ) /* character lookup table */ + ROM_LOAD( "380_j16.10c", 0x0120, 0x100, CRC(c244f2aa) SHA1(86df21c8e0b1ed51a0a4bd33dbb33f6efdea7d39) ) /* sprite lookup table */ +ROM_END + +ROM_START( circusc4 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "380_r05.3h", 0x6000, 0x2000, CRC(ed52c60f) SHA1(aa9dc6a57e29895be521ac6a146de56a7beef957) ) ROM_LOAD( "380_n04.4h", 0x8000, 0x2000, CRC(fcc99e33) SHA1(da140a849ac22419e8890414b8984aa264f7e3c7) ) @@ -539,6 +571,7 @@ DRIVER_INIT_MEMBER(circusc_state,circusc) GAME( 1984, circusc, 0, circusc, circusc, circusc_state, circusc, ROT90, "Konami", "Circus Charlie (level select, set 1)", GAME_SUPPORTS_SAVE ) GAME( 1984, circusc2, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami", "Circus Charlie (level select, set 2)", GAME_SUPPORTS_SAVE ) -GAME( 1984, circusc3, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami", "Circus Charlie (no level select)", GAME_SUPPORTS_SAVE ) +GAME( 1984, circusc3, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami", "Circus Charlie (level select, set 3)", GAME_SUPPORTS_SAVE ) +GAME( 1984, circusc4, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami", "Circus Charlie (no level select)", GAME_SUPPORTS_SAVE ) GAME( 1984, circuscc, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami (Centuri license)", "Circus Charlie (Centuri)", GAME_SUPPORTS_SAVE ) GAME( 1984, circusce, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami (Centuri license)", "Circus Charlie (Centuri, earlier)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 66471f3e2ea..f28a1b00f90 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -6188,6 +6188,7 @@ ropeman // (c) 1983 bootleg circusc // GX380 (c) 1984 circusc2 // GX380 (c) 1984 circusc3 // GX380 (c) 1984 +circusc4 // GX380 (c) 1984 circuscc // GX380 (c) 1984 + Centuri license circusce // GX380 (c) 1984 + Centuri license tp84 // GX388 (c) 1984