aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2011-07-27 19:38:10 +1000
committerPaul Gilbert2011-07-27 19:39:27 +1000
commita877167bfef8189bb0f8aa8483bc70d0f292106b (patch)
tree56220fb2498b3e745ff9fa2520191b987685f8fe
parentf0c5414ca666c97a59850a93ac5aa2740358cb74 (diff)
downloadscummvm-rg350-a877167bfef8189bb0f8aa8483bc70d0f292106b.tar.gz
scummvm-rg350-a877167bfef8189bb0f8aa8483bc70d0f292106b.tar.bz2
scummvm-rg350-a877167bfef8189bb0f8aa8483bc70d0f292106b.zip
TSAGE: Beginning of implementation of Fx method #32
-rw-r--r--engines/tsage/sound.cpp25
-rw-r--r--engines/tsage/sound.h3
2 files changed, 16 insertions, 12 deletions
diff --git a/engines/tsage/sound.cpp b/engines/tsage/sound.cpp
index d31dba21d3..3f02d635ab 100644
--- a/engines/tsage/sound.cpp
+++ b/engines/tsage/sound.cpp
@@ -2796,11 +2796,11 @@ AdlibFxSoundDriver::AdlibFxSoundDriver(): SoundDriver() {
_groupData.groupMask = 1;
_groupData.v1 = 0x3E;
_groupData.v2 = 0;
- _groupData.pData = &adlib_group_data[0];
+ _groupData.pData = &adlibFx_group_data[0];
_mixer = _vm->_mixer;
_sampleRate = _mixer->getOutputRate();
- _mixer->playStream(Audio::Mixer::kPlainSoundType, &_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, true);
+// _mixer->playStream(Audio::Mixer::kPlainSoundType, &_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, true);
/*
Common::set_to(_channelVoiced, _channelVoiced + ADLIB_CHANNEL_COUNT, false);
memset(_channelVolume, 0, ADLIB_CHANNEL_COUNT * sizeof(int));
@@ -2817,7 +2817,7 @@ AdlibFxSoundDriver::AdlibFxSoundDriver(): SoundDriver() {
}
AdlibFxSoundDriver::~AdlibFxSoundDriver() {
- _mixer->stopHandle(_soundHandle);
+// _mixer->stopHandle(_soundHandle);
}
bool AdlibFxSoundDriver::open() {
@@ -2866,23 +2866,26 @@ int AdlibFxSoundDriver::setMasterVolume(int volume) {
}
void AdlibFxSoundDriver::proc32(const byte *channelData, int dataOffset, int program, int channel, int v0, int v1) {
- if (program == -1)
+ if (program != -1)
return;
- if (_sound)
+ // If sound data has been previously set, then release it
+ if (_channelData)
updateVoice(channel);
- // TODO: Stuff
-
-
+ // Set the new channel data
+ _channelData = channelData + dataOffset;
+ _soundData = _channelData + 18;
+ // Start the new sound
+ debug("Start sound");
}
void AdlibFxSoundDriver::updateVoice(int channel) {
- if (_sound) {
+ if (_channelData) {
write(208);
- _sound = NULL;
+ _channelData = NULL;
_v45062 = 0;
_v45066 = 0;
_v45068 = 0;
@@ -2902,7 +2905,7 @@ void AdlibFxSoundDriver::proc42(int channel, int cmd, int value, int *v1, int *v
*v2 = 0;
_v4506B = 0;
- if (!_sound)
+ if (!_channelData)
*v2 = 1;
}
diff --git a/engines/tsage/sound.h b/engines/tsage/sound.h
index 05cbb86114..923b3e05f2 100644
--- a/engines/tsage/sound.h
+++ b/engines/tsage/sound.h
@@ -475,7 +475,8 @@ private:
bool _v45046;
byte _masterVolume;
byte _channelVolume;
- Sound *_sound;
+ const byte *_channelData;
+ const byte *_soundData;
void write(int v);
void flush();