Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
07607 Sound Minor Always Apr 5, 2020, 18:48 Apr 1, 2021, 20:25
Tester Hydreigon View Status Public Platform MAME (Official Binary)
Assigned To dink Resolution Fixed OS Windows 10 (64-bit)
Status [?] Resolved Driver
Version 0.219 Fixed in Version 0.231 Build 64-bit
Fixed in Git Commit 289efaf Github Pull Request #
Summary 07607: scross, scrossa, scrossu: No engine sound
Description The game doesn't produce the bike engine sound.
Steps To Reproduce Play the game.
Additional Information Earlier version of MAME with engine sounds?

Actual hardware:
Github Commit
Flags Verified with Original
Regression Version 0.70u5 (Added)
Affected Sets / Systems scross, scrossa, scrossu
Attached Files
cpp file icon multipcm.cpp (21,993 bytes) Mar 28, 2021, 05:40 Uploaded by dink
dink's experimental scross enginesound fix
Relationships
There are no relationship linked to this issue.
Notes
6
User avatar
No.17532
Tafoid
Administrator
Apr 5, 2020, 21:36
The first video you have in your description is NOT MAME - at least any released MAME that I can tell. I tested all the way back to 0.71 (first release version) and there is no engine sound. The same user that posted the netplay version about 2 years later posted a video where it said it was "from MAME" - there is no engine audio.


So, the issue is since added as far as I can tell - the other emulator I cannot prove, but I suspect it is a version of modeler, but the latest version I could access which had built-in Kaillera 0.9.3a and it does not have Stadium Cross in its list of games supported or in texts.

Anyway, I can confirm no engine sound, but I cannot fully divine the origin of the emulator in the video - but suspect Modeler.
User avatar
No.17533
Hydreigon
Tester
Apr 6, 2020, 02:50
Update: It turns out Stadium Cross is one of those games that has a separate sound route for the engine speakers (requiring its own machine config). That will require a bit of research.
User avatar
No.18535
Osso
Moderator
Mar 13, 2021, 06:00
edited on: Mar 13, 2021, 06:05
There's a lot of weirdness going on in the driver.
First init_scross() does
m_soundcpu->space(AS_PROGRAM).install_write_handler(0xb0, 0xbf, write8smo_delegate(*this, FUNC(segas32_state::scross_bank_w)));
which should actually be AS_IO, I believe, otherwise it's mapped over ROM instead over the standard banking the other multi games use.
By doing this the game actually sounds worse though.
Secondly, the game never seems to change the bank, not in game, nor in sound test. Removing the banking and loading the ROMs entirely gives same exact sound as before, but still no motor sound.
Thirdly, is the YM3438 even used in this game? If I mute it I hear no differences. EDIT: Seems to be used for IRQ.
User avatar
No.18605
Haze
Senior Tester
Mar 27, 2021, 10:49
I wonder if the motor sound is actually generated by a game specific IO board with its own sound hardware / speaker?
User avatar
No.18606
Hydreigon
Tester
Mar 27, 2021, 16:17
edited on: Mar 27, 2021, 16:18
My prediction was this game having its engine sound routed through a different sound channel but that may be incorrect. I'm getting a manual for this game (because the current scan is incomplete and doesn't have the wiring diagram) to see if any additional speakers are routed through a different channel.
User avatar
No.18607
dink
Tester
Mar 28, 2021, 05:45
Howdy,
After a bit of debugging I realized that the sound cpu is first setting the key on for channel 0x1a (engine sound channel), then it writes the sample#.
as it sits, multipcm.cpp only supports writing the sample# _then_ key-on, which is why the engine sound gets skipped.

I made an experimental fix for fbneo, then ported it over to the latest multipcm.cpp from mame. Please forgive me if it doesn't cleanly compile, I'm sure Haze can figure out what I meant and fix it. Here's the modified source for mame/src/devices/sound/ (attached up above)

The low-down:
in write_slot(): case #4 was changed to just do key on / key off. the rest of the code, which sets the current sample and gathers data from it, was moved into "Sample" / case #1.

So far I only tested scross and orunners, if you'd like to help test it and find problems caused by this fix I'd like to know about it & would be interested in exploring other routes to a fix, if it comes to that.

best regards,
- dink