Smewtheye wrote:ok can you do me a favor, and tell me two things: how to access the place where those changes are added manually via code. And approximately what changes should be made to make the program pick the original synth sfx. If that's not too much writing, that is. (or show me to a discussion where I can read all that) The rest I'll research myself
I'm pretty much willing to try and to take a risk at this xD
In engines/kyra/kyra_hof.cpp there's a function called KyraEngine_HoF::snd_playSoundEffect(), where part of the code reads:
Code: Select all
int16 vocIndex = (int16)READ_LE_UINT16(&_ingameSoundIndex[track * 2]);
if (vocIndex != -1) {
_sound->voicePlay(_ingameSoundList[vocIndex], 0, 255, true);
} else if (_flags.platform == Common::kPlatformPC) {
if (_sound->getSfxType() == Sound::kMidiMT32)
track = track < _mt32SfxMapSize ? _mt32SfxMap[track] - 1 : -1;
else if (_sound->getSfxType() == Sound::kMidiGM)
track = track < _gmSfxMapSize ? _gmSfxMap[track] - 1 : -1;
else if (_sound->getSfxType() == Sound::kPCSpkr)
track = track < _pcSpkSfxMapSize ? _pcSpkSfxMap[track] - 1 : -1;
if (track != -1)
KyraEngine_v1::snd_playSoundEffect(track);
What this means, as I understand it, is that if it finds a vocIndex that's not -1, it will play a digitized sound by calling _sound->voicePlay(). If not, it will use a synthesized effect. Depending on what audio driver it uses for sound effects, it will try to find an MT-32, General MIDI or PC Speaker effect. If it's none of these, it will presumably use AdLib.
So if vocIndex was always -1, or that part of the code was just removed, it should use synthesized effects.
Generally, the sound driver for sound effects is the same as the sound driver for the music, so if you're using General MIDI music it will use General MIDI sound effects, not AdLib. However, if you've enabled the "Mixed AdLib/MIDI mode" setting on the MIDI tab of the settings, it should use the AdLib driver to play sound effects regardless of the music driver.