[Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse.cpp,1.3,1.4 dimuse.h,1.4,1.5 dimuse_sndmgr.cpp,1.5,1.6
Pawel Kolodziejski
aquadran at users.sourceforge.net
Tue Jan 6 21:59:01 CET 2004
Update of /cvsroot/scummvm/scummvm/scumm/imuse_digi
In directory sc8-pr-cvs1:/tmp/cvs-serv4594
Modified Files:
dimuse.cpp dimuse.h dimuse_sndmgr.cpp
Log Message:
handle jumps
Index: dimuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- dimuse.cpp 7 Jan 2004 05:17:51 -0000 1.3
+++ dimuse.cpp 7 Jan 2004 05:58:12 -0000 1.4
@@ -188,13 +188,30 @@
}
}
+int IMuseDigital::checkJumpByRegion(int track, int region) {
+ int num_jumps = _sound->getNumJumps(_track[track].soundHandle);
+ for (int l = 0; l < num_jumps; l++) {
+ return _sound->getJumpDestRegionId(_track[track].soundHandle, l);
+ }
+ return -1;
+}
+
void IMuseDigital::switchToNextRegion(int track) {
- // TODO - finish
int num_regions = _sound->getNumRegions(_track[track].soundHandle);
+ int num_jumps = _sound->getNumJumps(_track[track].soundHandle);
+ if ((_scumm->_gameId == GID_FT) && (num_jumps != 0)) {
+ _track[track].regionOffset = 0;
+ return;
+ }
+
if (++_track[track].curRegion == num_regions) {
_track[track].toBeRemoved = true;
return;
}
+
+ int region = checkJumpByRegion(track, _track[track].curRegion);
+ if (region != -1)
+ _track[track].curRegion = region;
_track[track].regionOffset = 0;
}
@@ -503,8 +520,8 @@
if (_ftSeqMusicTable[l].audioname[0] != 0) {
for (r = 0; r < _scumm->_numAudioNames; r++) {
if (strcmp(_ftSeqMusicTable[l].audioname, &_scumm->_audioNames[r * 9]) == 0) {
- startMusic(r);
- parseScriptCmds(12, r, 0x600, _ftSeqMusicTable[l].volume, 0, 0, 0, 0);
+// startMusic(r);
+// parseScriptCmds(12, r, 0x600, _ftSeqMusicTable[l].volume, 0, 0, 0, 0);
}
}
}
Index: dimuse.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- dimuse.h 7 Jan 2004 05:17:51 -0000 1.4
+++ dimuse.h 7 Jan 2004 05:58:12 -0000 1.5
@@ -76,6 +76,7 @@
static void timer_handler(void *refConf);
void callback();
void switchToNextRegion(int track);
+ int checkJumpByRegion(int track, int region);
void startSound(int soundId, const char *soundName, int soundType, int soundGroup, AudioStream *input);
public:
Index: dimuse_sndmgr.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_sndmgr.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- dimuse_sndmgr.cpp 7 Jan 2004 04:50:38 -0000 1.5
+++ dimuse_sndmgr.cpp 7 Jan 2004 05:58:12 -0000 1.6
@@ -46,7 +46,7 @@
void ImuseDigiSndMgr::prepareSound(byte *ptr, int slot) {
if (READ_UINT32(ptr) == MKID('Crea')) {
- int size, rate, loops;
+ int size = 0, rate = 0, loops = 0;
_sounds[slot].resPtr = readVOCFromMemory(ptr, size, rate, loops);
_sounds[slot].freeResPtr = true;
_sounds[slot].bits = 8;
@@ -54,7 +54,8 @@
_sounds[slot].channels = 1;
_sounds[slot].region[0].length = size;
_sounds[slot].numRegions++;
- _sounds[slot].numJumps++;
+ if (loops != 0)
+ _sounds[slot].numJumps++;
} else if (READ_UINT32(ptr) == MKID('iMUS')) {
uint32 tag;
int32 size = 0;
More information about the Scummvm-git-logs
mailing list