diff options
author | Thanasis Antoniou | 2019-07-29 13:56:47 +0300 |
---|---|---|
committer | Thanasis Antoniou | 2019-07-29 13:57:56 +0300 |
commit | c8a23cc401ecef6deac468766aba185bf8633db7 (patch) | |
tree | 162b16146345b5d650be0e8c272122f0b3097991 /engines/bladerunner/ambient_sounds.cpp | |
parent | 70126b9685912bbce290511210ab6bcccd40bcd3 (diff) | |
download | scummvm-rg350-c8a23cc401ecef6deac468766aba185bf8633db7.tar.gz scummvm-rg350-c8a23cc401ecef6deac468766aba185bf8633db7.tar.bz2 scummvm-rg350-c8a23cc401ecef6deac468766aba185bf8633db7.zip |
BLADERUNNER: Fix unsorted args for getRandomNumberRng
Fix for bug #11034
Diffstat (limited to 'engines/bladerunner/ambient_sounds.cpp')
-rw-r--r-- | engines/bladerunner/ambient_sounds.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/engines/bladerunner/ambient_sounds.cpp b/engines/bladerunner/ambient_sounds.cpp index 8fe7a1c16a..4825a70278 100644 --- a/engines/bladerunner/ambient_sounds.cpp +++ b/engines/bladerunner/ambient_sounds.cpp @@ -65,6 +65,14 @@ static inline void sort(int &a, int &b) { } } +static inline void sort(uint &a, uint &b) { + if (a > b) { + uint t = a; + a = b; + b = t; + } +} + void AmbientSounds::addSound( int sfxId, uint32 timeMin, uint32 timeMax, @@ -73,6 +81,10 @@ void AmbientSounds::addSound( int panEndMin, int panEndMax, int priority, int unk) { +#if BLADERUNNER_ORIGINAL_BUGS +#else + sort(timeMin, timeMax); +#endif // BLADERUNNER_ORIGINAL_BUGS sort(volumeMin, volumeMax); sort(panStartMin, panStartMax); sort(panEndMin, panEndMax); @@ -102,6 +114,10 @@ void AmbientSounds::removeAllNonLoopingSounds(bool stopPlaying) { } void AmbientSounds::addSpeech(int actorId, int sentenceId, uint32 timeMin, uint32 timeMax, int volumeMin, int volumeMax, int panStartMin, int panStartMax, int panEndMin, int panEndMax, int priority, int unk) { +#if BLADERUNNER_ORIGINAL_BUGS +#else + sort(timeMin, timeMax); +#endif // BLADERUNNER_ORIGINAL_BUGS sort(volumeMin, volumeMax); sort(panStartMin, panStartMax); sort(panEndMin, panEndMax); @@ -315,6 +331,14 @@ void AmbientSounds::addSoundByName( uint32 now = _vm->_time->current(); +#if BLADERUNNER_ORIGINAL_BUGS +#else + sort(timeMin, timeMax); + sort(volumeMin, volumeMax); + sort(panStartMin, panStartMax); + sort(panEndMin, panEndMax); +#endif // BLADERUNNER_ORIGINAL_BUGS + track.isActive = true; track.name = name; track.hash = MIXArchive::getHash(name); @@ -416,6 +440,10 @@ void AmbientSounds::load(SaveFileReadStream &f) { track.timeMax = (uint32)f.readInt(); f.skip(4); // track.nextPlayTime is not used after load track.nextPlayTimeStart = now; +#if BLADERUNNER_ORIGINAL_BUGS +#else + sort(track.timeMin, track.timeMax); +#endif // BLADERUNNER_ORIGINAL_BUGS track.nextPlayTimeDiff = _vm->_rnd.getRandomNumberRng(track.timeMin, track.timeMax); track.volumeMin = f.readInt(); track.volumeMax = f.readInt(); @@ -424,6 +452,12 @@ void AmbientSounds::load(SaveFileReadStream &f) { track.panStartMax = f.readInt(); track.panEndMin = f.readInt(); track.panEndMax = f.readInt(); +#if BLADERUNNER_ORIGINAL_BUGS +#else + sort(track.volumeMin, track.volumeMax); + sort(track.panStartMin, track.panStartMax); + sort(track.panEndMin, track.panEndMax); +#endif // BLADERUNNER_ORIGINAL_BUGS track.priority = f.readInt(); f.skip(4); // field_45 } |