[Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse.cpp,1.11,1.12 dimuse_bndmgr.cpp,1.8,1.9 dimuse_sndmgr.cpp,1.7,1.8 dimuse_sndmgr.h,1.5,1.6
Pawel Kolodziejski
aquadran at users.sourceforge.net
Thu Jan 8 00:40:01 CET 2004
Update of /cvsroot/scummvm/scummvm/scumm/imuse_digi
In directory sc8-pr-cvs1:/tmp/cvs-serv9478
Modified Files:
dimuse.cpp dimuse_bndmgr.cpp dimuse_sndmgr.cpp dimuse_sndmgr.h
Log Message:
jumps only for the same hookid and ignore jumps for music for now. added sound names for checks if some sounds are really have a lot jumps and regions(it's posssible), in bundle loop size can be 0 and after that loops should be ended
Index: dimuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- dimuse.cpp 8 Jan 2004 01:59:11 -0000 1.11
+++ dimuse.cpp 8 Jan 2004 08:39:25 -0000 1.12
@@ -203,9 +203,13 @@
return;
}
- int region = checkJumpByRegion(track, _track[track].curRegion);
- if (region != -1)
- _track[track].curRegion = region;
+ int hookid = _sound->getJumpIdByRegion(_track[track].soundHandle, _track[track].curRegion);
+ if (hookid == _track[track].curHookId) {
+ int region = checkJumpByRegion(track, _track[track].curRegion);
+ if ((region != -1) && (_track[track].soundGroup != IMUSE_MUSIC))
+ _track[track].curRegion = region;
+ }
+
_track[track].regionOffset = 0;
}
@@ -268,9 +272,6 @@
error("IMuseDigital::startSound(): Can't handle %d bit samples", bits);
_track[l].pullSize /= 25; // We want a "frame rate" of 25 audio blocks per second
-
- if (soundGroup == IMUSE_MUSIC)
- _curMusicId = soundId;
}
if (input) {
@@ -282,6 +283,11 @@
_scumm->_mixer->playInputStream(&_track[l].handle, _track[l].stream, true, _track[l].vol / 1000, _track[l].pan, -1);
}
+ if (soundGroup == IMUSE_MUSIC) {
+ stopMusic();
+ _curMusicId = soundId;
+ }
+
_track[l].used = true;
return;
}
@@ -324,6 +330,7 @@
_scumm->_mixer->stopHandle(_track[l].handle);
}
}
+ _curMusicId = -1;
}
void IMuseDigital::pause(bool p) {
Index: dimuse_bndmgr.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_bndmgr.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- dimuse_bndmgr.cpp 7 Jan 2004 22:12:45 -0000 1.8
+++ dimuse_bndmgr.cpp 8 Jan 2004 08:39:25 -0000 1.9
@@ -211,7 +211,6 @@
comp_input[0x2000-1] = 0;
for (i = first_block; i <= last_block; i++) {
- assert(size);
assert(0x2000 >= _compTable[i].size + 1);
byte *curBuf;
@@ -239,6 +238,9 @@
final_size += output_size;
size -= output_size;
+ assert(size >= 0);
+ if (size == 0)
+ break;
skip = 0;
}
free(comp_input);
Index: dimuse_sndmgr.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_sndmgr.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- dimuse_sndmgr.cpp 7 Jan 2004 21:02:48 -0000 1.7
+++ dimuse_sndmgr.cpp 8 Jan 2004 08:39:25 -0000 1.8
@@ -39,7 +39,8 @@
ImuseDigiSndMgr::~ImuseDigiSndMgr() {
for (int l = 0; l < MAX_IMUSE_SOUNDS; l++) {
- closeSound(&_sounds[l]);
+ if (&_sounds[l])
+ closeSound(&_sounds[l]);
}
delete _cacheBundleDir;
}
@@ -74,7 +75,7 @@
case MKID_BE('TEXT'):
size = READ_BE_UINT32(ptr); ptr += 4;
if (_sounds[slot].numMarkers >= MAX_IMUSE_MARKERS) {
- warning("ImuseDigiSndMgr::prepareSound() Not enough space for Marker");
+ warning("ImuseDigiSndMgr::prepareSound(%s) Not enough space for Marker", _sounds[slot].name);
ptr += size;
break;
}
@@ -85,7 +86,7 @@
case MKID_BE('REGN'):
size = READ_BE_UINT32(ptr); ptr += 4;
if (_sounds[slot].numRegions >= MAX_IMUSE_REGIONS) {
- warning("ImuseDigiSndMgr::prepareSound() Not enough space for Region");
+ warning("ImuseDigiSndMgr::prepareSound(%s) Not enough space for Region", _sounds[slot].name);
ptr += 8;
break;
}
@@ -100,7 +101,7 @@
case MKID_BE('JUMP'):
size = READ_BE_UINT32(ptr); ptr += 4;
if (_sounds[slot].numJumps >= MAX_IMUSE_JUMPS) {
- warning("ImuseDigiSndMgr::prepareSound() Not enough space for Jump");
+ warning("ImuseDigiSndMgr::prepareSound(%s) Not enough space for Jump", _sounds[slot].name);
ptr += size;
break;
}
@@ -221,6 +222,7 @@
else
error("ImuseDigiSndMgr::openSound() Don't know how load sound: %d", soundId);
_sounds[slot]._bundle->decompressSampleByIndex(soundId, 0, 0x2000, &ptr, 0);
+ strcpy(_sounds[slot].name, soundName);
} else {
error("ImuseDigiSndMgr::openSound() Don't know how load sound: %d", soundId);
}
@@ -233,6 +235,7 @@
else
error("ImuseDigiSndMgr::openSound() Don't know how load sound: %d", soundId);
_sounds[slot]._bundle->decompressSampleByName(soundName, 0, 0x2000, &ptr);
+ _sounds[slot].name[0] = 0;
} else {
error("ImuseDigiSndMgr::openSound() Don't know how load sound: %s", soundName);
}
Index: dimuse_sndmgr.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_sndmgr.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- dimuse_sndmgr.h 7 Jan 2004 21:02:48 -0000 1.5
+++ dimuse_sndmgr.h 8 Jan 2004 08:39:25 -0000 1.6
@@ -30,7 +30,6 @@
class ScummEngine;
class BundleMgr;
-class ImuseDigital;
class ImuseDigiSndMgr {
public:
@@ -78,6 +77,7 @@
byte *allData;
int32 offsetData;
byte *resPtr;
+ char name[30];
bool freeResPtr;
BundleMgr *_bundle;
_region region[MAX_IMUSE_REGIONS];
More information about the Scummvm-git-logs
mailing list