[Scummvm-git-logs] scummvm master -> eef9e18340b1e9c0f9c2ee66f7f2f97edf220d48

criezy criezy at scummvm.org
Mon Jan 22 00:03:15 CET 2018


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
eef9e18340 AUDIO: Fixes Protracker Portamento effect


Commit: eef9e18340b1e9c0f9c2ee66f7f2f97edf220d48
    https://github.com/scummvm/scummvm/commit/eef9e18340b1e9c0f9c2ee66f7f2f97edf220d48
Author: Joseph-Eugene Winzer (joewinzer at googlemail.com)
Date: 2018-01-21T23:03:12Z

Commit Message:
AUDIO: Fixes Protracker Portamento effect

.period overflowed if .portaToNoteSpeed > .period in the else if case

Changed paths:
    audio/mods/protracker.cpp


diff --git a/audio/mods/protracker.cpp b/audio/mods/protracker.cpp
index ce52b61..d486f02 100644
--- a/audio/mods/protracker.cpp
+++ b/audio/mods/protracker.cpp
@@ -101,15 +101,13 @@ private:
 
 	void doPorta(int track) {
 		if (_track[track].portaToNote && _track[track].portaToNoteSpeed) {
-			if (_track[track].period < _track[track].portaToNote) {
-				_track[track].period += _track[track].portaToNoteSpeed;
-				if (_track[track].period > _track[track].portaToNote)
-					_track[track].period = _track[track].portaToNote;
-			} else if (_track[track].period > _track[track].portaToNote) {
-				_track[track].period -= _track[track].portaToNoteSpeed;
-				if (_track[track].period < _track[track].portaToNote)
-					_track[track].period = _track[track].portaToNote;
-			}
+			int distance = _track[track].period - _track[track].portaToNote;
+			int sign = distance > 0 ? 1 : -1;
+
+			if ((sign * distance) > _track[track].portaToNoteSpeed)
+				_track[track].period -= sign * _track[track].portaToNoteSpeed;
+			else
+				_track[track].period = _track[track].portaToNote;
 		}
 	}
 	void doVibrato(int track) {





More information about the Scummvm-git-logs mailing list