aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/script_v8.cpp3
-rw-r--r--scumm/sound.cpp4
-rw-r--r--scumm/sound.h1
3 files changed, 7 insertions, 1 deletions
diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp
index 2fd6a1e31f..ce30b23b7d 100644
--- a/scumm/script_v8.cpp
+++ b/scumm/script_v8.cpp
@@ -1661,7 +1661,8 @@ void Scumm_v8::o8_kernelGetFunctions()
break;
case 0xE1: // imGetMusicPosition
warning("o8_kernelGetFunctions: imGetMusicPosition(stub)\n");
- push(0xFFFFF);
+ // FIXME - get this stuff to be properly implemented
+ push(_sound->_bundleMusicPosition);
break;
case 0xE2: // musicLipSyncWidth
case 0xE3: // musicLipSyncHeight
diff --git a/scumm/sound.cpp b/scumm/sound.cpp
index 4223c5623d..5d4282e5b8 100644
--- a/scumm/sound.cpp
+++ b/scumm/sound.cpp
@@ -987,6 +987,7 @@ void Sound::playBundleMusic(char * song) {
_currentSampleBundleMusic = 0;
_offsetSampleBundleMusic = 0;
_offsetBufBundleMusic = 0;
+ _bundleMusicPosition = 0;
_pauseBundleMusic = false;
_musicBundleToBeRemoved = false;
_musicBundleToBeChanged = false;
@@ -1045,6 +1046,7 @@ void Sound::bundleMusicHandler(Scumm * scumm) {
_offsetSampleBundleMusic = 0;
_offsetBufBundleMusic = 0;
_musicBundleToBeChanged = false;
+ _bundleMusicPosition = 0;
}
ptr = _musicBundleBufOutput;
@@ -1110,6 +1112,7 @@ void Sound::bundleMusicHandler(Scumm * scumm) {
_currentSampleBundleMusic = 0;
_offsetSampleBundleMusic = 0;
_offsetBufBundleMusic = 0;
+ _bundleMusicPosition = 0;
}
ptr = _musicBundleBufFinal;
@@ -1127,6 +1130,7 @@ void Sound::bundleMusicHandler(Scumm * scumm) {
return;
}
+ _bundleMusicPosition += final_size;
if (_bundleMusicTrack == -1) {
_bundleMusicTrack = _scumm->_mixer->playStream(NULL, _scumm->_mixer->_beginSlots - 1, buffer, final_size, rate,
SoundMixer::FLAG_AUTOFREE | SoundMixer::FLAG_16BITS | SoundMixer::FLAG_STEREO, -1, 2000000);
diff --git a/scumm/sound.h b/scumm/sound.h
index 7ef1a9538f..db759c316c 100644
--- a/scumm/sound.h
+++ b/scumm/sound.h
@@ -130,6 +130,7 @@ enum {
public:
int _current_cache;
+ int32 _bundleMusicPosition;
int _talkChannel; /* Mixer channel actor is talking on */
int _cd_timer_value;