mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-02 17:03:13 +00:00
VOYEUR: Fixes for observing audio events
This commit is contained in:
parent
f2af864c6b
commit
55f2b4ea52
@ -396,7 +396,7 @@ void ThreadResource::parsePlayCommands() {
|
||||
_vm->flipPageAndWaitForFade();
|
||||
|
||||
_vm->_voy._field478 &= ~1;
|
||||
_vm->_soundManager.setVOCOffset(_vm->_voy._vocSecondsOffset * 11025);
|
||||
_vm->_soundManager.setVOCOffset(_vm->_voy._vocSecondsOffset);
|
||||
Common::String filename = _vm->_soundManager.getVOCFileName(
|
||||
_vm->_videoId + 159);
|
||||
_vm->_soundManager.startVOCPlay(filename);
|
||||
|
@ -30,6 +30,7 @@ namespace Voyeur {
|
||||
|
||||
SoundManager::SoundManager(Audio::Mixer *mixer) {
|
||||
_mixer = mixer;
|
||||
_vocOffset = 0;
|
||||
}
|
||||
|
||||
void SoundManager::playVOCMap(byte *voc, int vocSize) {
|
||||
@ -40,7 +41,7 @@ void SoundManager::playVOCMap(byte *voc, int vocSize) {
|
||||
}
|
||||
|
||||
bool SoundManager::vocMapStatus() {
|
||||
// TODO
|
||||
error("TODO: vocMapStatus");
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -54,10 +55,11 @@ void SoundManager::abortVOCMap() {
|
||||
|
||||
void SoundManager::stopVOCPlay() {
|
||||
_mixer->stopHandle(_soundHandle);
|
||||
_vocOffset = 0;
|
||||
}
|
||||
|
||||
void SoundManager::setVOCOffset(int offset) {
|
||||
error("TODO: setVOCOffset");
|
||||
_vocOffset = offset;
|
||||
}
|
||||
|
||||
Common::String SoundManager::getVOCFileName(int idx) {
|
||||
@ -69,10 +71,11 @@ void SoundManager::startVOCPlay(const Common::String &filename) {
|
||||
if (!f.open(filename))
|
||||
error("Could not find voc file - %s", filename.c_str());
|
||||
|
||||
Audio::AudioStream *audioStream = Audio::makeVOCStream(f.readStream(f.size()),
|
||||
Audio::SeekableAudioStream *audioStream = Audio::makeVOCStream(f.readStream(f.size()),
|
||||
Audio::FLAG_UNSIGNED, DisposeAfterUse::YES);
|
||||
|
||||
_mixer->playStream(Audio::Mixer::kSFXSoundType, &_soundHandle, audioStream);
|
||||
audioStream->seek(Audio::Timestamp(_vocOffset * 1000, 11025));
|
||||
}
|
||||
|
||||
void SoundManager::startVOCPlay(int soundId) {
|
||||
|
@ -36,6 +36,7 @@ private:
|
||||
VoyeurEngine *_vm;
|
||||
Audio::Mixer *_mixer;
|
||||
Audio::SoundHandle _soundHandle;
|
||||
int _vocOffset;
|
||||
public:
|
||||
SoundManager(Audio::Mixer *mixer);
|
||||
void setVm(VoyeurEngine *vm) { _vm = vm; }
|
||||
|
@ -670,6 +670,8 @@ void VoyeurEngine::reviewTape() {
|
||||
case EVTYPE_AUDIO: {
|
||||
_videoId = e._videoId;
|
||||
_voy._vocSecondsOffset = e._computerOn;
|
||||
|
||||
_bVoy->getBoltGroup(0x7F00);
|
||||
_graphicsManager._backgroundPage = _bVoy->boltEntry(0x7F00 +
|
||||
BLIND_TABLE[_videoId])._picResource;
|
||||
_graphicsManager._backColors = _bVoy->boltEntry(0x7F01 +
|
||||
@ -684,7 +686,7 @@ void VoyeurEngine::reviewTape() {
|
||||
_voy._field478 &= ~1;
|
||||
|
||||
// Play suond for the given duration
|
||||
_soundManager.setVOCOffset(_voy._vocSecondsOffset * 11025);
|
||||
_soundManager.setVOCOffset(_voy._vocSecondsOffset);
|
||||
_soundManager.startVOCPlay(_videoId + 159);
|
||||
uint32 offFrame = e._computerOff;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user