aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/he/resource_he.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/scumm/he/resource_he.cpp')
-rw-r--r--engines/scumm/he/resource_he.cpp161
1 files changed, 0 insertions, 161 deletions
diff --git a/engines/scumm/he/resource_he.cpp b/engines/scumm/he/resource_he.cpp
index 1c288d4e14..ebe13f29a4 100644
--- a/engines/scumm/he/resource_he.cpp
+++ b/engines/scumm/he/resource_he.cpp
@@ -1665,167 +1665,6 @@ int ScummEngine_v72he::getSoundResourceSize(int id) {
return size;
}
-byte *getSoundOffset(byte *ptr) {
- byte *endPtr;
- uint32 offset, size;
-
- if (READ_BE_UINT32(ptr) != MKID_BE('RIFF'))
- return NULL;
-
- endPtr = (ptr + 12);
- size = READ_LE_UINT32(ptr + 4) - 4;
-
- while (size > 0) {
- offset = READ_LE_UINT32(endPtr + 4);
-
- if (offset <= 0)
- error("Illegal chunk length - %d bytes.", offset);
-
- if (offset > size)
- error("Chunk extends beyond file end - %d versus %d.", offset, size);
-
- if (READ_BE_UINT32(endPtr) == MKID_BE('data'))
- return endPtr;
-
- endPtr = endPtr + offset + 8;
- }
-
- return NULL;
-}
-
-void ScummEngine_v80he::createSound(int snd1id, int snd2id) {
- byte *snd1Ptr, *snd2Ptr;
- byte *sbng1Ptr, *sbng2Ptr;
- byte *sdat1Ptr, *sdat2Ptr;
- byte *src, *dst, *tmp;
- int len, offs, size;
- int sdat1size, sdat2size;
-
- sbng1Ptr = NULL;
- sbng2Ptr = NULL;
-
- if (snd2id == -1) {
- _sndPtrOffs = 0;
- _sndTmrOffs = 0;
- _sndDataSize = 0;
- return;
- }
-
- if (snd1id != _curSndId) {
- _curSndId = snd1id;
- _sndPtrOffs = 0;
- _sndTmrOffs = 0;
- _sndDataSize = 0;
- }
-
- snd1Ptr = getResourceAddress(rtSound, snd1id);
- assert(snd1Ptr);
- snd2Ptr = getResourceAddress(rtSound, snd2id);
- assert(snd2Ptr);
-
- int i;
- int chan = -1;
- for (i = 0; i < ARRAYSIZE(((SoundHE *)_sound)->_heChannel); i++) {
- if (((SoundHE *)_sound)->_heChannel[i].sound == snd1id)
- chan = i;
- }
-
- if (!getSoundOffset(snd1Ptr)) {
- sbng1Ptr = heFindResource(MKID_BE('SBNG'), snd1Ptr);
- sbng2Ptr = heFindResource(MKID_BE('SBNG'), snd2Ptr);
- }
-
- if (sbng1Ptr != NULL && sbng2Ptr != NULL) {
- if (chan != -1 && ((SoundHE *)_sound)->_heChannel[chan].codeOffs > 0) {
- int curOffs = ((SoundHE *)_sound)->_heChannel[chan].codeOffs;
-
- src = snd1Ptr + curOffs;
- dst = sbng1Ptr + 8;
- size = READ_BE_UINT32(sbng1Ptr + 4);
- len = sbng1Ptr - snd1Ptr + size - curOffs;
-
- byte *data = (byte *)malloc(len);
- memcpy(data, src, len);
- memcpy(dst, data, len);
- free(data);
-
- dst = sbng1Ptr + 8;
- while ((size = READ_LE_UINT16(dst)) != 0)
- dst += size;
- } else {
- dst = sbng1Ptr + 8;
- }
-
- ((SoundHE *)_sound)->_heChannel[chan].codeOffs = sbng1Ptr - snd1Ptr + 8;
-
- tmp = sbng2Ptr + 8;
- while ((offs = READ_LE_UINT16(tmp)) != 0) {
- tmp += offs;
- }
-
- src = sbng2Ptr + 8;
- len = tmp - sbng2Ptr - 6;
- memcpy(dst, src, len);
-
- int32 time;
- while ((size = READ_LE_UINT16(dst)) != 0) {
- time = READ_LE_UINT32(dst + 2);
- time += _sndTmrOffs;
- WRITE_LE_UINT32(dst + 2, time);
- dst += size;
- }
- }
-
- if (getSoundOffset(snd1Ptr)) {
- sdat1Ptr = getSoundOffset(snd1Ptr);
- assert(sdat1Ptr);
- sdat2Ptr = getSoundOffset(snd2Ptr);
- assert(sdat2Ptr);
-
- if (!_sndDataSize)
- _sndDataSize = READ_LE_UINT32(sdat1Ptr + 4) - 8;
-
- sdat2size = READ_LE_UINT32(sdat2Ptr + 4) - 8;
- } else {
- sdat1Ptr = heFindResource(MKID_BE('SDAT'), snd1Ptr);
- assert(sdat1Ptr);
- sdat2Ptr = heFindResource(MKID_BE('SDAT'), snd2Ptr);
- assert(sdat2Ptr);
-
- _sndDataSize = READ_BE_UINT32(sdat1Ptr + 4) - 8;
-
- sdat2size = READ_BE_UINT32(sdat2Ptr + 4) - 8;
- }
-
- sdat1size = _sndDataSize - _sndPtrOffs;
- if (sdat2size < sdat1size) {
- src = sdat2Ptr + 8;
- dst = sdat1Ptr + 8 + _sndPtrOffs;
- len = sdat2size;
-
- memcpy(dst, src, len);
-
- _sndPtrOffs += sdat2size;
- _sndTmrOffs += sdat2size;
- } else {
- src = sdat2Ptr + 8;
- dst = sdat1Ptr + 8 + _sndPtrOffs;
- len = sdat1size;
-
- memcpy(dst, src, len);
-
- if (sdat2size != sdat1size) {
- src = sdat2Ptr + 8 + sdat1size;
- dst = sdat1Ptr + 8;
- len = sdat2size - sdat1size;
-
- memcpy(dst, src, len);
- }
-
- _sndPtrOffs = sdat2size - sdat1size;
- _sndTmrOffs += sdat2size;
- }
-}
#endif
} // End of namespace Scumm