diff options
| -rw-r--r-- | engines/scumm/player_v3m.cpp | 9 | ||||
| -rw-r--r-- | engines/scumm/player_v5m.cpp | 11 | 
2 files changed, 16 insertions, 4 deletions
diff --git a/engines/scumm/player_v3m.cpp b/engines/scumm/player_v3m.cpp index db532a9f6e..ad812a53ca 100644 --- a/engines/scumm/player_v3m.cpp +++ b/engines/scumm/player_v3m.cpp @@ -168,8 +168,13 @@ bool Player_V3M::getNextNote(int ch, uint32 &samples, int &pitchModifier, byte &  	uint16 duration = READ_BE_UINT16(&_channel[ch]._data[_channel[ch]._pos]);  	byte note = _channel[ch]._data[_channel[ch]._pos + 2];  	samples = durationToSamples(duration); -	pitchModifier = noteToPitchModifier(note, &_channel[ch]._instrument); -	velocity = 127; +	if (note > 0) { +		pitchModifier = noteToPitchModifier(note, &_channel[ch]._instrument); +		velocity = 127; +	} else { +		pitchModifier = 0; +		velocity = 0; +	}  	_channel[ch]._pos += 3;  	return true;  } diff --git a/engines/scumm/player_v5m.cpp b/engines/scumm/player_v5m.cpp index d59cf9ade2..26cfb0e7c1 100644 --- a/engines/scumm/player_v5m.cpp +++ b/engines/scumm/player_v5m.cpp @@ -186,8 +186,15 @@ bool Player_V5M::getNextNote(int ch, uint32 &samples, int &pitchModifier, byte &  	uint16 duration = READ_BE_UINT16(&_channel[ch]._data[_channel[ch]._pos]);  	byte note = _channel[ch]._data[_channel[ch]._pos + 2];  	samples = durationToSamples(duration); -	pitchModifier = noteToPitchModifier(note, &_channel[ch]._instrument); -	velocity = _channel[ch]._data[_channel[ch]._pos + 3]; + +	if (note > 1) { +		pitchModifier = noteToPitchModifier(note, &_channel[ch]._instrument); +		velocity = _channel[ch]._data[_channel[ch]._pos + 3]; +	} else { +		pitchModifier = 0; +		velocity = 0; +	} +  	_channel[ch]._pos += 4;  	if (_channel[ch]._pos >= _channel[ch]._length) {  | 
