[Scummvm-cvs-logs] SF.net SVN: scummvm: [30499] scummvm/trunk/engines/scumm/imuse_digi/ dimuse_sndmgr.cpp
aquadran at users.sourceforge.net
aquadran at users.sourceforge.net
Tue Jan 15 21:09:57 CET 2008
Revision: 30499
http://scummvm.svn.sourceforge.net/scummvm/?rev=30499&view=rev
Author: aquadran
Date: 2008-01-15 12:09:56 -0800 (Tue, 15 Jan 2008)
Log Message:
-----------
fix last commit to release, and add version 2 fallback for compressed files
Modified Paths:
--------------
scummvm/trunk/engines/scumm/imuse_digi/dimuse_sndmgr.cpp
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_sndmgr.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_sndmgr.cpp 2008-01-15 20:08:55 UTC (rev 30498)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_sndmgr.cpp 2008-01-15 20:09:56 UTC (rev 30499)
@@ -101,7 +101,10 @@
assert(tag == MKID_BE('RMAP'));
int32 version = file->readUint32BE();
if (version != 3) {
- error("ImuseDigiSndMgr::prepareSoundFromRMAP: Wrong version number, expected 3, but it's: %d.", version);
+ if (version == 2)
+ warning("ImuseDigiSndMgr::prepareSoundFromRMAP: Wrong version number, expected 3, but it's 2. Recompress data with latest tool.");
+ else
+ error("ImuseDigiSndMgr::prepareSoundFromRMAP: Wrong version number, expected 3, but it's: %d.", version);
}
sound->bits = file->readUint32BE();
sound->freq = file->readUint32BE();
@@ -109,7 +112,11 @@
sound->numRegions = file->readUint32BE();
sound->numJumps = file->readUint32BE();
sound->numSyncs = file->readUint32BE();
- sound->numMarkers = file->readUint32BE();
+ if (version >= 3)
+ sound->numMarkers = file->readUint32BE();
+ else
+ sound->numMarkers = 0;
+
sound->region = new Region[sound->numRegions];
assert(sound->region);
sound->jump = new Jump[sound->numJumps];
@@ -134,11 +141,13 @@
sound->sync[l].ptr = (byte *)malloc(sound->sync[l].size);
file->read(sound->sync[l].ptr, sound->sync[l].size);
}
- for (l = 0; l < sound->numMarkers; l++) {
- sound->marker[l].pos = file->readUint32BE();
- sound->marker[l].length = file->readUint32BE();
- sound->marker[l].ptr = new char[sound->marker[l].length];
- file->read(sound->marker[l].ptr, sound->marker[l].length);
+ if (version >= 3) {
+ for (l = 0; l < sound->numMarkers; l++) {
+ sound->marker[l].pos = file->readUint32BE();
+ sound->marker[l].length = file->readUint32BE();
+ sound->marker[l].ptr = new char[sound->marker[l].length];
+ file->read(sound->marker[l].ptr, sound->marker[l].length);
+ }
}
}
@@ -475,10 +484,11 @@
for (int r = 0; r < soundDesc->numSyncs; r++)
free(soundDesc->sync[r].ptr);
+ for (int r = 0; r < soundDesc->numSyncs; r++)
+ delete[] soundDesc->marker[r].ptr;
delete[] soundDesc->region;
delete[] soundDesc->jump;
delete[] soundDesc->sync;
- delete[] soundDesc->marker->ptr;
delete[] soundDesc->marker;
memset(soundDesc, 0, sizeof(SoundDesc));
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list