- --
Viewing Issue Advanced Details
ID | Category [?] | Severity [?] | Reproducibility | Date Submitted | Last Update |
---|---|---|---|---|---|
06077 | Sound | Minor | Always | Nov 15, 2015, 15:14 | Jul 5, 2023, 21:35 |
Tester | NRS | View Status | Public | Platform | MAME (Official Binary) |
Assigned To | Resolution | Open | OS | Windows Vista/7/8 (64-bit) | |
Status [?] | Acknowledged | Driver | |||
Version | 0.167 | Fixed in Version | Build | Normal | |
Fixed in Git Commit | Github Pull Request # | ||||
Summary | 06077: gwarrior, salamand: Various speech problems in nemesis.c games | ||||
Description |
gwarrior: Music freezes when letters appear. The "lettering" sound effect is not played for every letter. salamand: The "waaah" speech played when the red planet in level 6 combusts is played too slowly (compared to: <>) |
||||
Steps To Reproduce |
gwarrior: Start a new game, listen to the music pausing while letters appear. salamand: Destroy the red planet at the end of level 6. |
||||
Additional Information |
These are all caused by not properly connecting the RST line to the VLM5030. Based on debugging the sound code, the following changes fix these issues while not introducing new ones, to my knowledge. In mame/drivers/nemesis.c: 1. In "gx400_sound_map", change the line containing gx400_speech_start_w from this: AM_RANGE(0xe030, 0xe030) AM_WRITE(gx400_speech_start_w) to this: AM_RANGE(0xe010, 0xe07f) AM_WRITE(gx400_speech_start_w) 2. Replace gx400_speech_start_w with this: --- WRITE8_MEMBER(nemesis_state::gx400_speech_start_w) { switch ((offset+0x10) & 0xF8) { case 0x10: m_vlm->st (0); break; case 0x20: m_vlm->st (1); break; case 0x30: m_vlm->vcu(0); break; case 0x40: m_vlm->vcu(1); break; case 0x48: m_vlm->rst(0); break; case 0x58: m_vlm->rst(1); break; default: break; } } 3. Replace nemesis_state::nemesis_portA_r with this: --- READ8_MEMBER(nemesis_state::nemesis_portA_r) { /* bit 0-3: timer bit 4 6: unused (always high) bit 5: vlm5030 busy bit 7: unused by this software version. Bubble Memory version uses this bit. */ int result; result = (m_audiocpu->total_cycles() >> 10) & 0x0F; if (m_vlm != NULL) result |= (m_vlm->bsy())? 0x20: 0x00; result |= 0xD0; return result; } 4. Replace salamand_speech_start_w with this: --- WRITE8_MEMBER(nemesis_state::salamand_speech_start_w) { switch (data) { case 5: m_vlm->rst(1); break; case 1: m_vlm->rst(0); break; case 2: m_vlm->st (1); break; case 0: m_vlm->st (0); break; default: break; } } --- This also removes the stray "speed up" sample during reset, which is not heard in a real board (; ) 5. Replace wd_r with this: --- READ8_MEMBER(nemesis_state::wd_r) // Read by sound CPU after raising VLM5030's RST or ST line { if (m_vlm != NULL) return (m_vlm->bsy()); else return 0; } 6. This exposes the problem that twinbee raises the reset line without first updating the VLM5030's latch. This means that when RST is raised, the latch must be set to 0 in the VLM5030 emulation. This seems to be okay with other games which use RST for setup information because they first raise RST, then write to the latch, then lower RST which processes the latch data. Therefore, in emu/sound/vlm5030.c: In vlm5030_device::rst, after --- if( state ) { /* L -> H : reset chip */ m_pin_RST = 1; --- add: --- m_latch_data = 0; |
||||
Github Commit | |||||
Flags | Verified with Original | ||||
Regression Version | |||||
Affected Sets / Systems | gwarrior, salamand | ||||
Attached Files
|
|||||
Relationships
There are no relationship linked to this issue. |
Notes
4
No.12195
Tafoid Administrator
Nov 17, 2015, 17:17
|
I can quickly confirm the gwarrior audio issues and I thought it was a known bug. I'll assign as direction needed for now to have someone capable look over the code/changes who might know more about the speech side of things. |
---|---|
No.14146
Fujix Administrator
Aug 30, 2017, 10:58
|
> salamand: The "waaah" speech played when the red planet in level 6 combusts is played too slowly The waaaah voice is fixed in 0.189 by AJR. |
No.19646
haynor666 Tester
Jan 6, 2022, 19:18
|
Fixed in version 239 ? |
No.21616
hap Developer
Jul 5, 2023, 21:35
edited on: Jul 5, 2023, 21:47 |
Yeah, gwarrior was also fixed a while ago. I think over here: https://github.com/mamedev/mame/commit/c85054ada8c86d2b8716822e0afb0f7b6b7c9eaf with typo correction right after: https://github.com/mamedev/mame/commit/2c2f975f49fdf40ea18a90d7720a7c3b4168e881 Though I'm pretty sure RST is on bit 6, not 4, which is done here: https://github.com/mamedev/mame/commit/1e2ef3ed0065ff3a536502d4decd6b2ad7710193 |