diff options
author | Paul Gilbert | 2011-06-07 22:22:11 +1000 |
---|---|---|
committer | Paul Gilbert | 2011-06-07 22:22:11 +1000 |
commit | 6c1178aecaa94d5f6828339eee36fffec5486e73 (patch) | |
tree | 20179e556551545559f36175e51493785e00110e /engines/tsage | |
parent | 4b35006abad97c709f25028c00c3e7770e8426e7 (diff) | |
download | scummvm-rg350-6c1178aecaa94d5f6828339eee36fffec5486e73.tar.gz scummvm-rg350-6c1178aecaa94d5f6828339eee36fffec5486e73.tar.bz2 scummvm-rg350-6c1178aecaa94d5f6828339eee36fffec5486e73.zip |
TSAGE: Completed implementing _so methods
Diffstat (limited to 'engines/tsage')
-rw-r--r-- | engines/tsage/sound.cpp | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/engines/tsage/sound.cpp b/engines/tsage/sound.cpp index c5ede4695f..69d2656baa 100644 --- a/engines/tsage/sound.cpp +++ b/engines/tsage/sound.cpp @@ -1676,11 +1676,30 @@ void Sound::_soServiceTrackType1(int trackIndex, const byte *channelData) { if (channel == -1) _trkState[trackIndex] = 0; else { - VoiceTypeStruct *voiceType = _soundManager->_voiceTypeStructPtrs[_chVoiceType[channel]]; - if (!voiceType) + int voiceType = _chVoiceType[channel]; + VoiceTypeStruct *vtStruct = _soundManager->_voiceTypeStructPtrs[voiceType]; + + if (!vtStruct) _trkState[trackIndex] = 0; else { - + if (vtStruct->_voiceType != VOICETYPE_0) { + if (_trkState[trackIndex] == 1) { + int entryIndex = _soFindSound(vtStruct, *(channelData + 1)); + if (entryIndex != -1) { + SoundDriver *driver = vtStruct->_entries[entryIndex]._driver; + assert(driver); + + vtStruct->_entries[entryIndex]._type1._field6 = 0; + vtStruct->_entries[entryIndex]._type1._field4 = *(channelData + 1); + vtStruct->_entries[entryIndex]._type1._field5 = 0; + + driver->proc32(vtStruct->_entries[entryIndex]._voiceNum, voiceType, + _channelData[trackIndex], this, 0x7f, 0xff, 0xE); + } + } else { + + } + } } } } |