Problem with the game Road Rash

Please let our ADS show!

This sites offers only FREE software and it's supported by a few advertisement boxes (no intrusive popups).
Please:

  • disable your AdBlocker by adding CoolSoft website to whitelist
  • give the proper cookie consent
  • enable JavaScript for this website

This seconds wait is to let you update your browser configuration...

Ok, I've done the required changes... now show me your content!
!!! Please enable JavaScript !!!

Pages

Posts: 2
Joined: November 12, 2017 - 02:02
Problem with the game Road Rash

Hey, I have a problem with the 1996 game Road Rash. The game uses CD-Audio for the menus and MIDI-music during races, and whenever I start a race, I get a "MIDI-Error" message. The MIDIs play fine from the selected device, so you might think that everything is correct, however after finishing (or aborting) the race, the game is unable to stop playing the MIDI-Music, so the music plays indefinetly, even in the menus. The normal behaviour should be, that it stops immediately when you hit "ESC" during the race. It is also not related to the selected MIDI-Device (I also tried the "Microsoft GS Wavetable Synth", and it had the same issue). If I uninstall CoolSoft MIDIMapper however and use the Windows default one, everything works okay (beside being stuck with the Microsoft GS Wavetable Synth). Unfortunately I cannot give you any further details as the game doesn't have any log files that I can see.

Do you think there's anything you can do about that error on the programs side? If you need any further information, just let me know.

Thanks

Posts: 1904
Joined: March 25, 2012 - 01:19
Re: Problem with the game Road Rash

Well, a 1996 game (I don't know and don't have), no logs and no source code... what a nice bug to work on 😂

Let's go step by step: is there a trial/legal/free copy of the game available online?

Posts: 2
Joined: November 12, 2017 - 02:02
Re: Problem with the game Road Rash

I don't know. It seems to be avaible on several abandonware websites. I know those websites are questionable in their legality, but it would be the easiest way to ge the game for free just for debugging it.

But maybe it's also a common issue with the game. When I checked pcgamingwiki.com (to see if it is avaible digitally in a more legal way) it shows that there's an unresolved issue which simply says "MIDI Error" like the one I am getting, but doesn't give any specifics on how or when the bug occurs. I can get it only triggered with the Coolsoft MIDI Mapper, while it works without it. I also tested the game with Windows XP (Virtualbox) and there's no error message either, so it doesn't seem to be related to a MIDI mapper in general.

Posts: 1904
Joined: March 25, 2012 - 01:19
Re: Problem with the game Road Rash
XxJonathXx wrote:
But maybe it's also a common issue with the game.

Well, it could be. And also consider that CoolSoft MIDIMapper is not a real "MIDI Mapper", because MIDI Mapper support was removed from multimedia SDK years ago.
It only tries to emulate its features by receving MIDI stream and re-playing it on another device.

Will have a look but can't promise anything 😉

Posts: 4
Joined: April 19, 2022 - 14:49
Re: Problem with the game Road Rash

Hi coolsoft, I also have this error using CoolSoft MIDIMapper+LoopMIDI+Falcosoft MIDI Player (and Sound Canvas VA). There seems to be the same problem with CoolSoft VirtualMIDISynth.
I opened a topic in Vogons Road Rash '96 - MIDI Error \ VOGONS hoping to find a solution, @Falcosoft may have found the cause of the problem, this is what he wrote:

"Hi,
Although I do not have this exact game to test with I'm 99% sure that the problem is not 'mixer' related per se but the problem is the missing support for the midiOutSetVolume function.
https://docs.microsoft.com/en-us/windows/win3 … idioutsetvolume
This function is never implemented by hardware(MPU-401) ports or virtual cables and only some of the soft synthesizers support it. I only know 2 soft synths that support it, namely: MS GM/GS Soft Synth and Yamaha S-YXG50 XP driver.
"

Posts: 4
Joined: April 19, 2022 - 14:49
Re: Problem with the game Road Rash

This is a possible solution according to @Falcosoft:

"The actually opened/active port has to implement this since the first parameter you have to set when you call midiOutSetVolume is the port handle returned by midiOutOpen or the device ID of the selected device.
If CoolSoft Midi mapper is installed both the default port handle and the default device ID belong to Coolsoft Midi mapper.
@Edit:
I think the most reliable way to implement this feature would be to modify the velocity value of all Note On messages according to what value is sent by midiOutSetVolume.
Namely:
newVelocity = oldVelocity * ( (midiOutSetVolumeValue & 0xFFFF) / 0xFFFF);
"

Posts: 1904
Joined: March 25, 2012 - 01:19
Re: Problem with the game Road Rash

Well, thanks for your investigation on the issue, really interesting.

I don't think that a missing function could be the culprit here, because if so I'll expect a game crash and not just an error message.
I instead suppose the game does not really need for a full implementation of midiOutSetVolume() function, but it only needs that its calls to modMessage() to return MMSYSERR_NOERROR instead of the current MMSYSERR_NOTSUPPORTED.

That said, I've built a test version with this change: the modMessage() function of MIDIMapper now always returns MMSYSERR_NOERROR (even if it does nothing at all with the given data).

Please let me know if it works.
If so, we could start from there to implement some kind of volume management, that should be done on VirtualMIDISynth rather than on MIDIMapper side.

NOTE: I only expect the game to not emit the error anymore; the volume set/get still does not work, so if the game has some kind of volume controllers, they won't do anything.
As for the "music playing when getting back to game menus" well, I hope they (game creators) do stop MIDI from playing and not only lower its volume to zero...

UPDATE: beta1 attachment removed, version 2.1.0 has been released

Posts: 4
Joined: April 19, 2022 - 14:49
Re: Problem with the game Road Rash

Thanks coolsoft, with CoolSoft MIDIMapper 2.0.4-beta1+ LoopMIDI + Falcosoft MIDI Player, the game no longer returns the error and works correctly!

Posts: 115
Joined: September 25, 2013 - 16:38
Re: Problem with the game Road Rash
coolsoft wrote:

Well, thanks for your investigation on the issue, really interesting.

I don't think that a missing function could be the culprit here, because if so I'll expect a game crash and not just an error message.
I instead suppose the game does not really need for a full implementation of midiOutSetVolume() function, but it only needs that its calls to modMessage() to return MMSYSERR_NOERROR instead of the current MMSYSERR_NOTSUPPORTED.

That said, I've built a test version with this change: the modMessage() function of MIDIMapper now always returns MMSYSERR_NOERROR (even if it does nothing at all with the given data).

Please let me know if it works.
If so, we could start from there to implement some kind of volume management, that should be done on VirtualMIDISynth rather than on MIDIMapper side.

NOTE: I only expect the game to not emit the error anymore; the volume set/get still does not work, so if the game has some kind of volume controllers, they won't do anything.
As for the "music playing when getting back to game menus" well, I hope they (game creators) do stop MIDI from playing and not only lower its volume to zero...

Hi Claudio,

1. Of course not a "missing function" is/was the problem, since the midiOutSetVolume function itself can be found in winmm.dll, not in the driver(s). The problem is/was the proper support of this function.
Namely when an application calls midiOutGetDevCaps and a driver sends back in MIDIOUTCAPS->dwSupport field MIDICAPS_VOLUME(1) just like Coolsoft Midi Mapper and Coolsoft VMS does currently it is expected to respond  to MODM_SETVOLUME driver messages (that midiOutSetVolume calls generate) and send back MMSYSERR_NOERROR just as you said and implemented.
2. Implementing support for midiOutSetVolume/MODM_SETVOLUME in your Midi mapper instead of VMS would have the benefit that all kind of synths, even the ones that do not support volume changes currently would work properly through your Midi mapper.
Reducing Note On's velocity proportionally would be a universal solution since Note On velocity is supported by all kinds of Midi devices.

Bye

Posts: 1904
Joined: March 25, 2012 - 01:19
Re: Problem with the game Road Rash
falcosoft wrote:
The problem is/was the proper support of this function.
Namely when an application calls midiOutGetDevCaps and a driver sends back in MIDIOUTCAPS->dwSupport field MIDICAPS_VOLUME(1) just like Coolsoft Midi Mapper and Coolsoft VMS does currently it is expected to respond  to MODM_SETVOLUME driver messages (that midiOutSetVolume calls generate) and send back MMSYSERR_NOERROR just as you said and implemented.

You're absolutely right.
AFAIR the set of supported features reported by midiOutGetDevCaps() (both in MIDIMapper and VMS) was set to be as similar as possible to the one reported by "MS MIDIMapper" and "MS GM/GS Soft Synth".
I did that choice (at early VMS 1.x times) to let it mimic the original MS synth as much as possible.

No one need control volume till now, so that unimplemented feature went unnoticed 😂
Now is the time to implement it.

falcosoft wrote:
Implementing support for midiOutSetVolume/MODM_SETVOLUME in your Midi mapper instead of VMS would have the benefit that all kind of synths, even the ones that do not support volume changes currently would work properly through your Midi mapper.

Yes, I think this is the best solution so far but... why not implement it in VMS driver component too?
It should not be so hard because MIDIMapper and VMS (Driver component) share a lot of code... and also VMS can stop lying about its reported MIDIOUTCAPS 😉

Pages