Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
09229 Sound Minor Always 7 days ago 5 days ago
Tester hap View Status Public Platform MAME (Official Binary)
Assigned To Resolution Open OS Windows 11/10 (64-bit)
Status [?] Acknowledged Driver
Version 0.278 Fixed in Version Build 64-bit
Fixed in Git Commit Github Pull Request #
Summary 09229: moomesa: volume cuts sometimes after sound effect triggers
Description It has volume cuts sometimes after sound effect triggers, such as the player shot sound.

mame moomesa -wavwrite 1.wav is fine, so it seems like a bug in sound.cpp?
If I disable audio effects (or switch resampler type), the bug is still there.
If I skip the sound_stream_update in k054539.cpp, the bug is still there.

It continuously writes to active_w in k054321_device, which calls propagate_volume(), which calls m_speaker->set_input_gain, which calls sound.cpp sound_stream::update(), I think the bug is in there.
I assume it can be worked around it like this:

if (m_active != data)
{
m_active = data;
propagate_volume();
}

But that doesn't fix the underlying issue in sound.cpp

moomesa isn't the only game using this chip.
You can hear the volume chopping too in for example xexex after you go to service mode, and modify the global volume.
Steps To Reproduce Just play the game, and shoot a lot.
Additional Information
Github Commit
Flags
Regression Version 0.278
Affected Sets / Systems moomesa
Attached Files
mp3 file icon obs studio recording.mp3 (180,330 bytes) 7 days ago Uploaded by hap
Relationships
There are no relationship linked to this issue.
Notes
3
User avatar
No.23547
Robbbert
Moderator
7 days ago
Can't get the sound to misbehave.

But it seems you've already fixed it?
User avatar
No.23548
hap
Developer
7 days ago
No I did not fix it.
User avatar
No.23550
hap
Developer
6 days ago
I worked around it here for this specific use case:
https://github.com/mamedev/mame/commit/e298ea572791f4abb85cd9805124b79d6e5f7beb

I say workaround, but the commit itself is not bad in any way. It makes sense to skip an unnecessary call to update() if the gain value did not change.
The issue can still be reproduced in moomesa service mode: Go to game options, put the cursor on sound volume, and the music is choppy.

The bug in sound.cpp: I suspect it may be doing commit() twice.
This: m_write_position += samples;