mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-04 01:07:22 +00:00
added rest of save/load code
svn-id: r13737
This commit is contained in:
parent
24ccdb85e9
commit
054acfbbd3
@ -102,8 +102,10 @@ void IMuseDigital::saveOrLoad(Serializer *ser) {
|
||||
MKLINE(Track, volFadeDelay, sleInt32, VER(31)),
|
||||
MKLINE(Track, volFadeUsed, sleByte, VER(31)),
|
||||
MKLINE(Track, soundId, sleInt32, VER(31)),
|
||||
MKARRAY(Track, soundName, sleByte, 15, VER(31)),
|
||||
MKLINE(Track, used, sleByte, VER(31)),
|
||||
MKLINE(Track, toBeRemoved, sleByte, VER(31)),
|
||||
MKLINE(Track, souStream, sleByte, VER(31)),
|
||||
MKLINE(Track, started, sleByte, VER(31)),
|
||||
MKLINE(Track, priority, sleInt32, VER(31)),
|
||||
MKLINE(Track, regionOffset, sleInt32, VER(31)),
|
||||
@ -112,6 +114,7 @@ void IMuseDigital::saveOrLoad(Serializer *ser) {
|
||||
MKLINE(Track, curRegion, sleInt32, VER(31)),
|
||||
MKLINE(Track, curHookId, sleInt32, VER(31)),
|
||||
MKLINE(Track, volGroupId, sleInt32, VER(31)),
|
||||
MKLINE(Track, soundType, sleInt32, VER(31)),
|
||||
MKLINE(Track, iteration, sleInt32, VER(31)),
|
||||
MKLINE(Track, mod, sleInt32, VER(31)),
|
||||
MKLINE(Track, mixerFlags, sleInt32, VER(31)),
|
||||
@ -124,8 +127,25 @@ void IMuseDigital::saveOrLoad(Serializer *ser) {
|
||||
|
||||
ser->_ref_me = this;
|
||||
ser->saveLoadEntries(this, mainEntries);
|
||||
for (i = 0; i < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; i++)
|
||||
for (i = 0; i < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; i++) {
|
||||
ser->saveLoadEntries(_track[i], trackEntries);
|
||||
if (!ser->isSaving()) {
|
||||
if (_track[i]->souStream) {
|
||||
_track[i]->stream2 = NULL;
|
||||
_track[i]->stream = NULL;
|
||||
_track[i]->used = false;
|
||||
} else {
|
||||
_track[i]->soundHandle = _sound->openSound(_track[i]->soundId,
|
||||
_track[i]->soundName, _track[i]->soundType,
|
||||
_track[i]->volGroupId);
|
||||
int32 streamBufferSize = _track[i]->iteration;
|
||||
int freq = _sound->getFreq(_track[i]->soundHandle);
|
||||
_track[i]->stream2 = NULL;
|
||||
_track[i]->stream = makeAppendableAudioStream(freq, _track[i]->mixerFlags, streamBufferSize);
|
||||
_vm->_mixer->playInputStream(&_track[i]->handle, _track[i]->stream, false, _track[i]->vol / 1000, _track[i]->pan, -1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void IMuseDigital::callback() {
|
||||
|
@ -52,9 +52,11 @@ private:
|
||||
bool volFadeUsed; //
|
||||
|
||||
int soundId;
|
||||
char soundName[15];
|
||||
bool used;
|
||||
bool toBeRemoved;
|
||||
bool started;
|
||||
bool souStream;
|
||||
int priority;
|
||||
int32 regionOffset;
|
||||
int32 trackOffset;
|
||||
@ -62,6 +64,7 @@ private:
|
||||
int curRegion;
|
||||
int curHookId;
|
||||
int volGroupId;
|
||||
int soundType;
|
||||
int iteration;
|
||||
int mod;
|
||||
int32 mixerFlags;
|
||||
|
@ -107,13 +107,18 @@ void IMuseDigital::startSound(int soundId, const char *soundName, int soundType,
|
||||
_track[l]->mixerPan = 0;
|
||||
_track[l]->mixerVol = volume;
|
||||
_track[l]->toBeRemoved = false;
|
||||
_track[l]->soundType = soundType;
|
||||
|
||||
int bits = 0, freq = 0, channels = 0;
|
||||
|
||||
if (input) {
|
||||
_track[l]->iteration = 0;
|
||||
_track[l]->souStream = true;
|
||||
_track[l]->soundName[0] = 0;
|
||||
// Do nothing here, we already have an audio stream
|
||||
} else {
|
||||
_track[l]->souStream = false;
|
||||
strcpy(_track[l]->soundName, soundName);
|
||||
_track[l]->soundHandle = _sound->openSound(soundId, soundName, soundType, volGroupId);
|
||||
|
||||
if (_track[l]->soundHandle == NULL)
|
||||
@ -150,7 +155,7 @@ void IMuseDigital::startSound(int soundId, const char *soundName, int soundType,
|
||||
}
|
||||
|
||||
if (input) {
|
||||
_track[l]->stream2 = input;
|
||||
_track[l]->stream2 = NULL;
|
||||
_track[l]->stream = NULL;
|
||||
_track[l]->started = false;
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user