Ticket #6473: neverhood_sound_loop_glitch.patch

File neverhood_sound_loop_glitch.patch, 2.0 KB (added by salty-horse, 11 years ago)
  • engines/neverhood/sound.cpp

    diff --git a/engines/neverhood/sound.cpp b/engines/neverhood/sound.cpp
    index 3ea4549..1ffcaf9 100644
    a b void SoundResource::play(uint32 fileHash) {  
    6363void SoundResource::play() {
    6464        AudioResourceManSoundItem *soundItem = getSoundItem();
    6565        if (soundItem)
    66                 soundItem->playSound(false);
     66                soundItem->playSound();
     67}
     68
     69void SoundResource::playLooping() {
     70        AudioResourceManSoundItem *soundItem = getSoundItem();
     71        if (soundItem)
     72                soundItem->playSound(true);
    6773}
    6874
    6975void SoundResource::stop() {
    void SoundItem::update() {  
    244250                } else if (--_currCountdown == 0)
    245251                        _soundResource->play();
    246252        } else if (_playLooping && !_soundResource->isPlaying())
    247                 _soundResource->play();
     253                _soundResource->playLooping();
    248254}
    249255
    250256// SoundMan
    void AudioResourceManSoundItem::playSound(bool looping) {  
    609615        if (_data) {
    610616                const byte *shiftValue = _resourceHandle.extData();
    611617                Common::MemoryReadStream *stream = new Common::MemoryReadStream(_data, _resourceHandle.size(), DisposeAfterUse::NO);
    612                 NeverhoodAudioStream *audioStream = new NeverhoodAudioStream(22050, *shiftValue, false, DisposeAfterUse::YES, stream);
     618                NeverhoodAudioStream *audioStream = new NeverhoodAudioStream(22050, *shiftValue, looping, DisposeAfterUse::YES, stream);
    613619                _vm->_mixer->playStream(Audio::Mixer::kSFXSoundType, &_soundHandle,
    614620                        audioStream, -1, VOLUME(_volume), PANNING(_panning));
    615621                debug(1, "playing sound %08X", _fileHash);
  • engines/neverhood/sound.h

    diff --git a/engines/neverhood/sound.h b/engines/neverhood/sound.h
    index 548fe88..e74c3bc 100644
    a b public:  
    5050        void unload();
    5151        void play(uint32 fileHash);
    5252        void play();
     53        void playLooping();
    5354        void stop();
    5455        void setVolume(int16 volume);
    5556        void setPan(int16 pan);
    public:  
    216217        void unloadSound();
    217218        void setVolume(int16 volume);
    218219        void setPan(int16 pan);
    219         void playSound(bool looping);
     220        void playSound(bool looping = false);
    220221        void stopSound();
    221222        bool isPlaying();
    222223protected: