From a2cb3afaae5b56facc203380b20c795b09bfa790 Mon Sep 17 00:00:00 2001 From: Fabio Priuli Date: Wed, 6 Jan 2010 15:12:52 +0000 Subject: [PATCH] Fix for MT03637: dino, punisher, wof and clones: NVRAM saves correctly, but doesn't reload any changes made Fixed knights rom labels [Dlfrsilver] Note: the eeprom bug seems a bit weird (only half of the games are affected) and I'm still not sure if the problem is in the input_port_write code (some mask issue?) or in cps1.c... however, using a device write handler seems an acceptable workaround (and the issue is clearly mentioned in the source) --- src/mame/drivers/cps1.c | 44 ++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/src/mame/drivers/cps1.c b/src/mame/drivers/cps1.c index 02c15cad927..0e4599e6851 100644 --- a/src/mame/drivers/cps1.c +++ b/src/mame/drivers/cps1.c @@ -434,6 +434,18 @@ static const eeprom_interface pang3_eeprom_interface = }; #endif +static WRITE16_DEVICE_HANDLER( cps1_eeprom_port_w ) +{ + if (ACCESSING_BITS_0_7) + { +/* FIXME: for some weird reason, the port write below breaks punisher, dino & wof eeprom (slammast, mbombrd & pang3 are not affected) */ +// input_port_write(device->machine, "EEPROMOUT", data, 0xff); + eeprom_write_bit(device, data & 0x01); + eeprom_set_cs_line(device, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE); + eeprom_set_clock_line(device, (data & 0x40) ? ASSERT_LINE : CLEAR_LINE); + } +} + /* PAL PRG1 (16P8B @ 12H): @@ -595,7 +607,6 @@ static ADDRESS_MAP_START( sub_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xf00a, 0xf00a) AM_READ(soundlatch2_r) /* Sound timer fade */ ADDRESS_MAP_END - static ADDRESS_MAP_START( qsound_main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x1fffff) AM_ROM AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */ @@ -609,7 +620,7 @@ static ADDRESS_MAP_START( qsound_main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0xf1c000, 0xf1c001) AM_READ_PORT("IN2") /* Player 3 controls (later games) */ AM_RANGE(0xf1c002, 0xf1c003) AM_READ_PORT("IN3") /* Player 4 controls ("Muscle Bombers") */ AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */ - AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT") + AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_DEVWRITE("eeprom", cps1_eeprom_port_w) AM_RANGE(0xf1e000, 0xf1ffff) AM_READWRITE(qsound_sharedram2_r, qsound_sharedram2_w) /* Q RAM */ AM_RANGE(0xff0000, 0xffffff) AM_RAM ADDRESS_MAP_END @@ -2255,6 +2266,7 @@ static INPUT_PORTS_START( dino ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE("eeprom", eeprom_write_bit) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE("eeprom", eeprom_set_clock_line) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE("eeprom", eeprom_set_cs_line) + PORT_BIT( 0x3e, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END /* Needs further checking */ @@ -6273,29 +6285,29 @@ ROM_START( captcommb ) ROM_END -/* B-Board 91635B */ +/* B-Board 91635B (rom labels taken from a 91635B-2 board) */ ROM_START( knights ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ - ROM_LOAD16_WORD_SWAP( "kr_23e.rom", 0x00000, 0x80000, CRC(1b3997eb) SHA1(724b68eff319fcdf0dd3bc1eb6662996c1f6ecd9) ) - ROM_LOAD16_WORD_SWAP( "kr_22.rom", 0x80000, 0x80000, CRC(d0b671a9) SHA1(9865472c5fc3f617345e23b5de5a9ba177945b5a) ) + ROM_LOAD16_WORD_SWAP( "kr-23e.8f", 0x00000, 0x80000, CRC(1b3997eb) SHA1(724b68eff319fcdf0dd3bc1eb6662996c1f6ecd9) ) + ROM_LOAD16_WORD_SWAP( "kr-22.7f", 0x80000, 0x80000, CRC(d0b671a9) SHA1(9865472c5fc3f617345e23b5de5a9ba177945b5a) ) ROM_REGION( 0x400000, "gfx", 0 ) - ROMX_LOAD( "kr_gfx1.rom", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "kr_gfx3.rom", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "kr_gfx2.rom", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "kr_gfx4.rom", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "kr_gfx5.rom", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "kr_gfx7.rom", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "kr_gfx6.rom", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "kr_gfx8.rom", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-5m.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-7m.4a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-1m.5a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-3m.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-6m.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-8m.8a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-2m.9a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ - ROM_LOAD( "kr_09.rom", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) ) + ROM_LOAD( "kr-09.11a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) ) ROM_CONTINUE( 0x10000, 0x08000 ) ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ - ROM_LOAD( "kr_18.rom", 0x00000, 0x20000, CRC(da69d15f) SHA1(9616207e693bae85705f786cef60b9f6951b5067) ) - ROM_LOAD( "kr_19.rom", 0x20000, 0x20000, CRC(bfc654e9) SHA1(01b3d92e4dedf55ea3933d387c7ddb9ba2549773) ) + ROM_LOAD( "kr-18.11c", 0x00000, 0x20000, CRC(da69d15f) SHA1(9616207e693bae85705f786cef60b9f6951b5067) ) + ROM_LOAD( "kr-19.12c", 0x20000, 0x20000, CRC(bfc654e9) SHA1(01b3d92e4dedf55ea3933d387c7ddb9ba2549773) ) ROM_REGION( 0x0200, "aboardplds", 0 ) ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )