summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author David Haywood <mamehaze@gmail.com>2019-02-22 17:34:53 +0000
committer ajrhacker <ajrhacker@users.noreply.github.com>2019-02-22 12:34:53 -0500
commitffa3e054f66c4a7c89b2b515b672666fe997ac86 (patch)
treec732ef1abda7d70b7796fad8553a53acd8c00bb6
parent6aa928a094a82c8b79dce199bdac8076dfc0321c (diff)
more agreeable way to fix hangs in play2000 without a ROM hack (#4677)
-rw-r--r--src/devices/sound/gaelco.cpp4
-rw-r--r--src/mame/drivers/gaelco2.cpp27
-rw-r--r--src/mame/includes/gaelco2.h3
3 files changed, 9 insertions, 25 deletions
diff --git a/src/devices/sound/gaelco.cpp b/src/devices/sound/gaelco.cpp
index 57167945cae..c8109ce5acd 100644
--- a/src/devices/sound/gaelco.cpp
+++ b/src/devices/sound/gaelco.cpp
@@ -131,7 +131,9 @@ void gaelco_gae1_device::sound_stream_update(sound_stream &stream, stream_sample
}
} else {
LOG_SOUND(("(GAE1) Playing unknown sample format in channel: %02d, type: %02x, bank: %02x, end: %08x, Length: %04x\n", ch, type, bank, end_pos, m_sndregs[base_offset + 3]));
- channel->active = 0;
+ //channel->active = 0;
+ // play2000 expects these to expire, are they valid? this is unrelated to the missing sounds in touchgo which never hits here
+ m_sndregs[base_offset + 3]--;
}
/* check if the current sample has finished playing */
diff --git a/src/mame/drivers/gaelco2.cpp b/src/mame/drivers/gaelco2.cpp
index 3ad58c17c29..92edc4b4387 100644
--- a/src/mame/drivers/gaelco2.cpp
+++ b/src/mame/drivers/gaelco2.cpp
@@ -598,24 +598,8 @@ static INPUT_PORTS_START( play2000 )
INPUT_PORTS_END
-void gaelco2_state::init_play2000_70i()
+void gaelco2_state::init_play2000()
{
- // HACK
- // the game will randomly hang on scene transitions waiting for the sound trigger / length to be clear
- // this might be related to the problems with Touch and Go not playing all sound effects too.
- // for now patch it
- uint16_t *rom = (uint16_t *)memregion("maincpu")->base();
- rom[0x23c4e/2] = 0x4e71;
-
- m_global_spritexoff = 1; // aligns flashing sprites with backgrounds
-}
-
-void gaelco2_state::init_play2000_40i()
-{
- // see init_play2000
- uint16_t *rom = (uint16_t *)memregion("maincpu")->base();
- rom[0x232ae/2] = 0x4e71;
-
m_global_spritexoff = 1; // aligns flashing sprites with backgrounds
}
@@ -626,8 +610,6 @@ ROM_START( play2000 )
ROM_REGION( 0x8000, "gaelco_ds5002fp:sram", 0 ) /* DS5002FP code - had 7.0 sticker on too */
// This has only been dumped from a single MCU, so there is potential for bad bits as there is risk in the dumping process. The majority of the ROM is data and thus difficult to verify.
- // The game still seems to get 'stuck' on some win conditions in attract (but doesn't hang, you can still coin up) it warrants investigation to see if this is MCU related and if anything
- // odd happens during normal gameplay. It could just be poor design.
ROM_LOAD( "ds5002fp_70i.mcu", 0x00000, 0x8000, BAD_DUMP CRC(b51ad3da) SHA1(4a730238b4b875c74dd2e4df6e7880d03659b7d5) )
ROM_REGION( 0x100, "gaelco_ds5002fp:mcu:internal", ROMREGION_ERASE00 )
@@ -2342,9 +2324,10 @@ GAME( 1998, bang, 0, bang, bang, bang_state, i
GAME( 1998, bangj, bang, bang, bang, bang_state, init_bang, ROT0, "Gaelco", "Gun Gabacho (Japan)", 0 )
// 2-in-1 gambling game, appears to be cloned Gaelco hardware complete with DS5002FP, or possibly manufactured by Gaelco for Nova Desitec but without any Gaelco branding.
-GAME( 1999, play2000, 0, play2000, play2000, gaelco2_state, init_play2000_70i,ROT0, "Nova Desitec", "Play 2000 (Super Slot & Gran Tesoro) (v7.0i) (Italy)", 0 )
-GAME( 1999, play2000_50i,play2000, play2000, play2000, gaelco2_state, empty_init, ROT0, "Nova Desitec", "Play 2000 (Super Slot & Gran Tesoro) (v5.0i) (Italy)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // bad dump
-GAME( 1999, play2000_40i,play2000, play2000, play2000, gaelco2_state, init_play2000_40i,ROT0, "Nova Desitec", "Play 2000 (Super Slot & Gran Tesoro) (v4.0i) (Italy)", 0 )
+// these are Italian versions, English versions also exist
+GAME( 1999, play2000, 0, play2000, play2000, gaelco2_state, init_play2000, ROT0, "Nova Desitec", "Play 2000 (Super Slot & Gran Tesoro) (v7.0i) (Italy)", 0 )
+GAME( 1999, play2000_50i,play2000, play2000, play2000, gaelco2_state, empty_init, ROT0, "Nova Desitec", "Play 2000 (Super Slot & Gran Tesoro) (v5.0i) (Italy)", MACHINE_NOT_WORKING ) // bad dump
+GAME( 1999, play2000_40i,play2000, play2000, play2000, gaelco2_state, init_play2000, ROT0, "Nova Desitec", "Play 2000 (Super Slot & Gran Tesoro) (v4.0i) (Italy)", 0 )
// Gym exercise bike
GAME( 1997, saltcrdi, 0, saltcrdi, saltcrdi, gaelco2_state, empty_init, ROT0, "Salter Fitness / Gaelco", "Pro Tele Cardioline (Salter Fitness Bike V.1.0, Checksum 02AB)", MACHINE_NOT_WORKING ) // there are other machines in the Cardioline series, without TV displays
diff --git a/src/mame/includes/gaelco2.h b/src/mame/includes/gaelco2.h
index abc374b933d..e92b2329471 100644
--- a/src/mame/includes/gaelco2.h
+++ b/src/mame/includes/gaelco2.h
@@ -40,8 +40,7 @@ public:
void init_snowboar();
void init_alighunt();
void init_wrally2();
- void init_play2000_70i();
- void init_play2000_40i();
+ void init_play2000();
DECLARE_WRITE_LINE_MEMBER(coin1_counter_w);
DECLARE_WRITE_LINE_MEMBER(coin2_counter_w);