[Scummvm-git-logs] scummvm master -> e0726f7a34975eff80bdad1da0cea075ae7b3ce9

antoniou79 a.antoniou79 at gmail.com
Sun Aug 1 19:31:24 UTC 2021


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
4c32dca57a SCUMM: COMI: Temporarily disable iMUSE crossfade scheduling
e0726f7a34 SCUMM: COMI: Clean up dead code for iMUSE Android fix


Commit: 4c32dca57a0d0aa143d5f778574efb27bb7886ea
    https://github.com/scummvm/scummvm/commit/4c32dca57a0d0aa143d5f778574efb27bb7886ea
Author: Andrea Boscarino (andywinxp at gmail.com)
Date: 2021-08-01T22:31:21+03:00

Commit Message:
SCUMM: COMI: Temporarily disable iMUSE crossfade scheduling

Changed paths:
    engines/scumm/imuse_digi/dimuse.cpp


diff --git a/engines/scumm/imuse_digi/dimuse.cpp b/engines/scumm/imuse_digi/dimuse.cpp
index 3630dc0939..a0c77dfb99 100644
--- a/engines/scumm/imuse_digi/dimuse.cpp
+++ b/engines/scumm/imuse_digi/dimuse.cpp
@@ -647,7 +647,7 @@ void IMuseDigital::switchToNextRegion(Track *track) {
 					// same time as a loop; the result is that the former is prioritized and the latter
 					// is executed without a crossfade. Also, avoid music crossfades for start markers, these are just plain
 					// dangerous and useless since there's already a fade in for those.
-					if (!track->volFadeUsed && !(track->volFadeStep < 0) && !(isJumpToStart && track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
+					/*if (!track->volFadeUsed && !(track->volFadeStep < 0) && !(isJumpToStart && track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
 						_scheduledCrossfades[track->trackId].scheduled = true;
 						_scheduledCrossfades[track->trackId].destRegion = region;
 						_scheduledCrossfades[track->trackId].destDataOffset = _sound->getRegionOffset(soundDesc, region);
@@ -655,7 +655,8 @@ void IMuseDigital::switchToNextRegion(Track *track) {
 						_scheduledCrossfades[track->trackId].destHookId = track->curHookId;
 						_scheduledCrossfades[track->trackId].volumeBefJump = track->vol / 1000;
 						_scheduledCrossfades[track->trackId].isJumpToLoop = isJumpToLoop;
-					}
+					}*/
+					track->curRegion = region;
 				} else {
 					debug(5, "SwToNeReg(trackId:%d) - call cloneToFadeOutTrack(delay:%d)", track->trackId, fadeDelay);
 					Track *fadeTrack = cloneToFadeOutTrack(track, fadeDelay);


Commit: e0726f7a34975eff80bdad1da0cea075ae7b3ce9
    https://github.com/scummvm/scummvm/commit/e0726f7a34975eff80bdad1da0cea075ae7b3ce9
Author: Andrea Boscarino (andywinxp at gmail.com)
Date: 2021-08-01T22:31:21+03:00

Commit Message:
SCUMM: COMI: Clean up dead code for iMUSE Android fix

Changed paths:
    engines/scumm/imuse_digi/dimuse.cpp
    engines/scumm/imuse_digi/dimuse.h
    engines/scumm/imuse_digi/dimuse_script.cpp
    engines/scumm/imuse_digi/dimuse_tables.cpp
    engines/scumm/imuse_digi/dimuse_tables.h
    engines/scumm/imuse_digi/dimuse_track.cpp


diff --git a/engines/scumm/imuse_digi/dimuse.cpp b/engines/scumm/imuse_digi/dimuse.cpp
index a0c77dfb99..ac67b8cc1a 100644
--- a/engines/scumm/imuse_digi/dimuse.cpp
+++ b/engines/scumm/imuse_digi/dimuse.cpp
@@ -106,10 +106,6 @@ void IMuseDigital::resetState() {
 	_radioChatterSFX = 0;
 	_triggerUsed = false;
 	_speechIsPlaying = false;
-	for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
-		_scheduledCrossfades[l].scheduled = false;
-		_scheduledCrossfades[l].isJumpToLoop = false;
-	}
 }
 
 static void syncWithSerializer(Common::Serializer &s, Track &t) {
@@ -186,22 +182,6 @@ void IMuseDigital::saveLoadEarly(Common::Serializer &s) {
 
 			if (_vm->_game.id == GID_CMI) {
 				track->gainRedFadeDest = 127 * 290;
-
-				if (track->soundId / 1000 == 1) { // State
-					for (int ll = 0; _comiStateMusicTable[ll].soundId != -1; ll++) {
-						if ((_comiStateMusicTable[ll].soundId == track->soundId)) {
-							track->loopShiftType = _comiStateMusicTable[ll].shiftLoop;
-							break;
-						}
-					}
-				} else if (track->soundId / 1000 == 2) { // Sequence
-					for (int ll = 0; _comiSeqMusicTable[ll].soundId != -1; ll++) {
-						if ((_comiSeqMusicTable[ll].soundId == track->soundId)) {
-							track->loopShiftType = _comiSeqMusicTable[ll].shiftLoop;
-							break;
-						}
-					}
-				}
 			}
 
 			if (_vm->_game.id == GID_FT) {
@@ -235,65 +215,8 @@ void IMuseDigital::saveLoadEarly(Common::Serializer &s) {
 	}
 }
 
-void IMuseDigital::runScheduledCrossfades() {
-	for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
-		if (_scheduledCrossfades[l].scheduled) {
-			_scheduledCrossfades[l].scheduled = false;
-			Track *oldTrack = _track[l];
-
-			int newTrackId = -1;
-
-			oldTrack->volFadeDelay = _scheduledCrossfades[l].fadeDelay;
-			if (oldTrack->volGroupId == IMUSE_VOLGRP_MUSIC) {
-				newTrackId = startMusicWithOtherPos(oldTrack->soundName, oldTrack->soundId, oldTrack->curHookId, 127, oldTrack);
-			} else {
-				newTrackId = startSound(oldTrack->soundId, "", IMUSE_RESOURCE, IMUSE_VOLGRP_SFX, NULL, 0, _scheduledCrossfades[l].volumeBefJump, oldTrack->soundPriority, oldTrack);
-			}
-
-			if (newTrackId == -1) {
-				debug(5, "IMuseDigital::runScheduledCrossfades(): couldn't allocate crossfade for sound %d", oldTrack->soundId);
-				return;
-			}
-
-			Track *newTrack = _track[newTrackId];
-			newTrack->curRegion = _scheduledCrossfades[l].destRegion;
-
-			// WORKAROUND for some files having a little bit earlier
-			// loop point set in their iMUSE map; keep in mind we're considering
-			// regionOffset -= (oldTrack->feedSize / _callbackFps) as NO SHIFT.
-			// In COMI we're currently using 4 shift types.
-			if (newTrack->volGroupId == IMUSE_VOLGRP_SFX || !_scheduledCrossfades[l].isJumpToLoop) {
-				newTrack->regionOffset = 0;
-			} else if (_scheduledCrossfades[l].isJumpToLoop) {
-				switch (newTrack->loopShiftType) {
-				case 0:
-					newTrack->regionOffset -= (oldTrack->feedSize / _callbackFps);
-					break;
-				case 1:
-					newTrack->regionOffset = 0;
-					break;
-				case 2:
-					newTrack->regionOffset -= (oldTrack->feedSize / _callbackFps) + (oldTrack->feedSize / _callbackFps) / 2 + 2;
-					break;
-				case 3:
-					newTrack->regionOffset -= (oldTrack->feedSize / _callbackFps) - (oldTrack->feedSize / _callbackFps) / 2 + 2;
-					break;
-				case 4:
-					newTrack->regionOffset -= ((oldTrack->feedSize / _callbackFps) / 3) * 2;
-					break;
-				}
-			}
-
-			newTrack->dataOffset = _scheduledCrossfades[l].destDataOffset;
-			oldTrack->alreadyCrossfading = true; // We set this so to avoid duplicate crossfades
-			handleFadeOut(oldTrack, _scheduledCrossfades[l].fadeDelay);
-		}
-	}
-}
-
 void IMuseDigital::callback() {
 	Common::StackLock lock(_mutex, "IMuseDigital::callback()");
-	runScheduledCrossfades();
 	_speechIsPlaying = false;
 	// Check for any track playing a speech line
 	if (_vm->_game.id != GID_DIG) {
@@ -501,8 +424,6 @@ void IMuseDigital::callback() {
 
 					if (_sound->isEndOfRegion(track->soundDesc, track->curRegion)) {
 						switchToNextRegion(track);
-						if (_scheduledCrossfades[track->trackId].scheduled)
-							break;
 						if (!track->stream)	// Seems we reached the end of the stream
 							break;
 					}
@@ -636,28 +557,13 @@ void IMuseDigital::switchToNextRegion(Track *track) {
 		if (track->curHookId == sampleHookId) {
 			int fadeDelay = (60 * _sound->getJumpFade(soundDesc, jumpId)) / 1000;
 			debug(5, "SwToNeReg(trackId:%d) - sound(%d) match hookId", track->trackId, track->soundId);
-			if (fadeDelay) {
-				// If there's a fade time, it means we have to CROSSFADE the jump.
-				// To do this we schedule a crossfade to happen at the next callback call;
-				// the reason for the scheduling is due to the fact that calling the
-				// crossfade immediately causes inconsistencies (and this crashes ImuseDigiSndMgr::getDataFromRegion())
-				if (_vm->_game.id == GID_CMI) {
-					// Block crossfades when the track is already fading down; this prevents edge cases where a crossfade
-					// between two tracks with the same attribPos (like sounds 1202, 1203 and 1204) is happening at the
-					// same time as a loop; the result is that the former is prioritized and the latter
-					// is executed without a crossfade. Also, avoid music crossfades for start markers, these are just plain
-					// dangerous and useless since there's already a fade in for those.
-					/*if (!track->volFadeUsed && !(track->volFadeStep < 0) && !(isJumpToStart && track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
-						_scheduledCrossfades[track->trackId].scheduled = true;
-						_scheduledCrossfades[track->trackId].destRegion = region;
-						_scheduledCrossfades[track->trackId].destDataOffset = _sound->getRegionOffset(soundDesc, region);
-						_scheduledCrossfades[track->trackId].fadeDelay = fadeDelay;
-						_scheduledCrossfades[track->trackId].destHookId = track->curHookId;
-						_scheduledCrossfades[track->trackId].volumeBefJump = track->vol / 1000;
-						_scheduledCrossfades[track->trackId].isJumpToLoop = isJumpToLoop;
-					}*/
-					track->curRegion = region;
-				} else {
+
+			if (_vm->_game.id == GID_CMI) {
+				// The original exe crossfades the jump to the destination region.
+				// For the time being this is implemented as a simple region switch.
+				track->curRegion = region;
+			} else {
+				if (fadeDelay) {
 					debug(5, "SwToNeReg(trackId:%d) - call cloneToFadeOutTrack(delay:%d)", track->trackId, fadeDelay);
 					Track *fadeTrack = cloneToFadeOutTrack(track, fadeDelay);
 					if (fadeTrack) {
@@ -666,10 +572,10 @@ void IMuseDigital::switchToNextRegion(Track *track) {
 						debug(5, "SwToNeReg(trackId:%d) - sound(%d) faded track, select region %d, curHookId: %d", fadeTrack->trackId, fadeTrack->soundId, fadeTrack->curRegion, fadeTrack->curHookId);
 						fadeTrack->curHookId = 0;
 					}
+				} else {
+					track->curRegion = region;
 				}
 			}
-			if (_vm->_game.id != GID_CMI || !_scheduledCrossfades[track->trackId].scheduled)
-				track->curRegion = region;
 
 			debug(5, "SwToNeReg(trackId:%d) - sound(%d) jump to region %d, curHookId: %d", track->trackId, track->soundId, track->curRegion, track->curHookId);
 			track->curHookId = 0;
diff --git a/engines/scumm/imuse_digi/dimuse.h b/engines/scumm/imuse_digi/dimuse.h
index c82fedc5e7..d6d05d0a0f 100644
--- a/engines/scumm/imuse_digi/dimuse.h
+++ b/engines/scumm/imuse_digi/dimuse.h
@@ -69,18 +69,6 @@ private:
 	TriggerParams _triggerParams;
 	bool _triggerUsed;
 
-	struct ScheduledCrossfade {
-		bool scheduled;
-		int destRegion;
-		int destDataOffset;
-		int fadeDelay;
-		int destHookId;
-		int volumeBefJump;
-		bool isJumpToLoop;
-	};
-
-	ScheduledCrossfade _scheduledCrossfades[MAX_DIGITAL_TRACKS];
-
 	Track *_track[MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS];
 
 	Common::Mutex _mutex;
@@ -155,7 +143,6 @@ public:
 		{ error("IMuseDigital::startSound(int) should be never called"); }
 
 	void saveLoadEarly(Common::Serializer &ser);
-	void runScheduledCrossfades();
 	void resetState();
 	void setRadioChatterSFX(bool state) {
 		_radioChatterSFX = state;
diff --git a/engines/scumm/imuse_digi/dimuse_script.cpp b/engines/scumm/imuse_digi/dimuse_script.cpp
index 231295ed40..2625db9b26 100644
--- a/engines/scumm/imuse_digi/dimuse_script.cpp
+++ b/engines/scumm/imuse_digi/dimuse_script.cpp
@@ -165,9 +165,6 @@ void IMuseDigital::flushTrack(Track *track) {
 	if (!_mixer->isSoundHandleActive(track->mixChanHandle)) {
 		track->reset();
 	}
-
-	if (_vm->_game.id == GID_CMI && track->trackId < MAX_DIGITAL_TRACKS)
-		_scheduledCrossfades[track->trackId].scheduled = false;
 }
 
 void IMuseDigital::flushTracks() {
@@ -177,8 +174,6 @@ void IMuseDigital::flushTracks() {
 		Track *track = _track[l];
 		if (track->used && track->toBeRemoved && !_mixer->isSoundHandleActive(track->mixChanHandle)) {
 			debug(5, "flushTracks() - trackId:%d, soundId:%d", track->trackId, track->soundId);
-			if (_vm->_game.id == GID_CMI && l < MAX_DIGITAL_TRACKS)
-				_scheduledCrossfades[track->trackId].scheduled = false;
 			track->reset();
 		}
 	}
diff --git a/engines/scumm/imuse_digi/dimuse_tables.cpp b/engines/scumm/imuse_digi/dimuse_tables.cpp
index b88f2e1a1e..fdd91f9f64 100644
--- a/engines/scumm/imuse_digi/dimuse_tables.cpp
+++ b/engines/scumm/imuse_digi/dimuse_tables.cpp
@@ -284,214 +284,214 @@ const imuseDigTable _digSeqMusicTable[] = {
 };
 
 const imuseComiTable _comiStateMusicTable[] = {
-	{0, 1000, "STATE_NULL",         0, 0,    0, ""            , 0}, /* 00 */
-	{0, 1001, "stateNoChange",      0, 0,    0, ""            , 0}, /* 01 */
-	{3, 1098, "stateCredits1",      0, 0,   60, "1098-C~1.IMX", 0}, /* 02 */
-	{3, 1099, "stateMenu",          0, 0,   60, "1099-M~1.IMX", 0}, /* 03 */
-	{3, 1100, "stateHold1",         4, 0,   60, "1100-H~1.IMX", 0}, /* 04 */
-	{3, 1101, "stateWaterline1",    4, 0,   60, "1101-W~1.IMX", 0}, /* 05 */
-	{3, 1102, "stateHold2",         6, 1,   60, "1102-H~1.IMX", 1}, /* 06 */
-	{3, 1103, "stateWaterline2",    6, 0,   60, "1103-W~1.IMX", 1}, /* 07 */
-	{3, 1104, "stateCannon",        0, 0,   60, "1104-C~1.IMX", 0}, /* 08 */
-	{3, 1105, "stateTreasure",      0, 0,   60, "1105-T~1.IMX", 0}, /* 09 */
-	{3, 1200, "stateFortBase",     10, 1,   60, "1200-F~1.IMX", 0}, /* 10 */
-	{3, 1201, "statePreFort",      10, 1,   60, "1201-P~1.IMX", 0}, /* 11 */
-	{3, 1202, "statePreVooOut",    12, 0,   60, "1202-P~1.IMX", 0}, /* 12 */
-	{3, 1203, "statePreVooIn",     12, 0,   60, "1203-P~1.IMX", 0}, /* 13 */
-	{3, 1204, "statePreVooLady",   12, 0,   60, "1204-P~1.IMX", 0}, /* 14 */
-	{3, 1205, "stateVoodooOut",     0, 0,   60, "1205-V~1.IMX", 0}, /* 15 */
-	{3, 1210, "stateVoodooIn",      0, 0,   60, "1210-V~1.IMX", 0}, /* 16 */
-	{12,1212, "stateVoodooInAlt",   0, 1,   42, "1210-V~1.IMX", 0}, /* 17 */
-	{3, 1215, "stateVoodooLady",    0, 0,   60, "1215-V~1.IMX", 0}, /* 18 */
-	{3, 1219, "statePrePlundermap", 0, 0,   60, "1219-P~1.IMX", 0}, /* 19 */
-	{3, 1220, "statePlundermap",    0, 0,   60, "1220-P~1.IMX", 0}, /* 20 */
-	{3, 1222, "statePreCabana",     0, 0,   60, "1222-P~1.IMX", 0}, /* 21 */
-	{3, 1223, "stateCabana",        0, 0,   60, "1223-C~1.IMX", 0}, /* 22 */
-	{3, 1224, "statePostCabana",   23, 0,   60, "1224-P~1.IMX", 0}, /* 23 */
-	{3, 1225, "stateBeachClub",    23, 0,   60, "1225-B~1.IMX", 0}, /* 24 */
-	{3, 1230, "stateCliff",         0, 0,   60, "1230-C~1.IMX", 0}, /* 25 */
-	{3, 1232, "stateBelly",         0, 0,   48, "1232-B~1.IMX", 0}, /* 26 */
-	{3, 1235, "stateQuicksand",     0, 0,   60, "1235-Q~1.IMX", 0}, /* 27 */
-	{3, 1240, "stateDangerBeach",   0, 0,   48, "1240-D~1.IMX", 0}, /* 28 */
-	{12,1241, "stateDangerBeachAlt",0, 2,   48, "1240-D~1.IMX", 0}, /* 29 */
-	{3, 1245, "stateRowBoat",       0, 0,   60, "1245-R~1.IMX", 0}, /* 30 */
-	{3, 1247, "stateAlongside",     0, 0,   48, "1247-A~1.IMX", 0}, /* 31 */
-	{12,1248, "stateAlongsideAlt",  0, 1,   48, "1247-A~1.IMX", 0}, /* 32 */
-	{3, 1250, "stateChimpBoat",     0, 0,   30, "1250-C~1.IMX", 1}, /* 33 */
-	{3, 1255, "stateMrFossey",      0, 0,   48, "1255-M~1.IMX", 0}, /* 34 */
-	{3, 1259, "statePreTown",       0, 0,   60, "1259-P~1.IMX", 0}, /* 35 */
-	{3, 1260, "stateTown",          0, 0,   60, "1260-T~1.IMX", 1}, /* 36 */
-	{3, 1264, "statePreMeadow",     0, 0,   60, "1264-P~1.IMX", 0}, /* 37 */
-	{3, 1265, "stateMeadow",        0, 0,   60, "1265-M~1.IMX", 0}, /* 38 */
-	{3, 1266, "stateMeadowAmb",     0, 0,   60, "1266-M~1.IMX", 0}, /* 39 */
-	{3, 1270, "stateWardrobePre",  40, 0,   60, "1270-W~1.IMX", 0}, /* 40 */
-	{3, 1272, "statePreShow",      40, 0,   60, "1272-P~1.IMX", 0}, /* 41 */
-	{3, 1274, "stateWardrobeShow", 42, 0,   60, "1274-W~1.IMX", 0}, /* 42 */
-	{3, 1276, "stateShow",         42, 0,   60, "1276-S~1.IMX", 0}, /* 43 */
-	{3, 1277, "stateWardrobeJug",  44, 0,   60, "1277-W~1.IMX", 0}, /* 44 */
-	{3, 1278, "stateJuggling",     44, 0,   60, "1278-J~1.IMX", 0}, /* 45 */
-	{3, 1279, "statePostShow",      0, 0,   60, "1279-P~1.IMX", 0}, /* 46 */
-	{3, 1280, "stateChickenShop",   0, 0,   60, "1280-C~1.IMX", 1}, /* 47 */
-	{3, 1285, "stateBarberShop",   48, 0,   60, "1285-B~1.IMX", 0}, /* 48 */
-	{3, 1286, "stateVanHelgen",    48, 0,   60, "1286-V~1.IMX", 0}, /* 49 */
-	{3, 1287, "stateBill",         48, 0,   60, "1287-B~1.IMX", 0}, /* 50 */
-	{3, 1288, "stateHaggis",       48, 0,   60, "1288-H~1.IMX", 0}, /* 51 */
-	{3, 1289, "stateRottingham",   48, 0,   60, "1289-R~1.IMX", 0}, /* 52 */
-	{3, 1305, "stateDeck",          0, 0,   60, "1305-D~1.IMX", 0}, /* 53 */
-	{3, 1310, "stateCombatMap",     0, 0,   60, "1310-C~1.IMX", 0}, /* 54 */
-	{3, 1320, "stateShipCombat",    0, 0,   60, "1320-S~1.IMX", 1}, /* 55 */
-	{3, 1325, "stateSwordfight",    0, 0,   60, "1325-S~1.IMX", 1}, /* 56 */
-	{3, 1327, "stateSwordRott",     0, 0,   60, "1327-S~1.IMX", 0}, /* 57 */
-	{3, 1330, "stateTownEdge",      0, 0,   60, "1330-T~1.IMX", 1}, /* 58 */
-	{3, 1335, "stateSwordLose",     0, 0,   60, "1335-S~1.IMX", 0}, /* 59 */
-	{3, 1340, "stateSwordWin",      0, 0,   60, "1340-S~1.IMX", 0}, /* 60 */
-	{3, 1345, "stateGetMap",        0, 0,   60, "1345-G~1.IMX", 0}, /* 61 */
-	{3, 1400, "stateWreckBeach",    0, 0,   60, "1400-W~1.IMX", 0}, /* 62 */
-	{3, 1405, "stateBloodMap",     63, 0,   60, "1405-B~1.IMX", 0}, /* 63 */
-	{3, 1410, "stateClearing",      0, 0,   60, "1410-C~1.IMX", 0}, /* 64 */
-	{3, 1415, "stateLighthouse",   63, 0,   60, "1415-L~1.IMX", 0}, /* 65 */
-	{3, 1420, "stateVillage",      66, 0,   60, "1420-V~1.IMX", 0}, /* 66 */
-	{3, 1423, "stateVolcano",      66, 0,   60, "1423-V~1.IMX", 0}, /* 67 */
-	{3, 1425, "stateAltar",        66, 0,   60, "1425-A~1.IMX", 0}, /* 68 */
-	{3, 1430, "stateHotelOut",      0, 0,   60, "1430-H~1.IMX", 0}, /* 69 */
-	{3, 1435, "stateHotelBar",     70, 0,   60, "1435-H~1.IMX", 0}, /* 70 */
-	{3, 1440, "stateHotelIn",      70, 0,   60, "1440-H~1.IMX", 0}, /* 71 */
-	{3, 1445, "stateTarotLady",    70, 0,   60, "1445-T~1.IMX", 0}, /* 72 */
-	{3, 1447, "stateGoodsoup",     70, 0,   60, "1447-G~1.IMX", 0}, /* 73 */
-	{3, 1448, "stateGuestRoom",     0, 0,   60, "1448-G~1.IMX", 0}, /* 74 */
-	{3, 1450, "stateWindmill",     63, 0,   60, "1450-W~1.IMX", 0}, /* 75 */
-	{3, 1455, "stateCemetary",      0, 0,   60, "1455-C~1.IMX", 0}, /* 76 */
-	{3, 1460, "stateCrypt",        77, 0,   60, "1460-C~1.IMX", 0}, /* 77 */
-	{3, 1463, "stateGraveDigger",  77, 0,   60, "1463-G~1.IMX", 0}, /* 78 */
-	{3, 1465, "stateMonkey1",       0, 0,   60, "1465-M~1.IMX", 0}, /* 79 */
-	{3, 1475, "stateStanDark",      0, 0,   60, "1475-S~1.IMX", 0}, /* 80 */
-	{3, 1477, "stateStanLight",     0, 0,   60, "1477-S~1.IMX", 1}, /* 81 */
-	{3, 1480, "stateEggBeach",     63, 0,   60, "1480-E~1.IMX", 0}, /* 82 */
-	{3, 1485, "stateSkullIsland",   0, 0,   60, "1485-S~1.IMX", 0}, /* 83 */
-	{3, 1490, "stateSmugglersCave", 0, 0,   60, "1490-S~1.IMX", 0}, /* 84 */
-	{3, 1500, "stateLeChuckTalk",   0, 0,   60, "1500-L~1.IMX", 0}, /* 85 */
-	{3, 1505, "stateCarnival",      0, 0,   60, "1505-C~1.IMX", 0}, /* 86 */
-	{3, 1511, "stateHang",         87, 0,   60, "1511-H~1.IMX", 0}, /* 87 */
-	{3, 1512, "stateRum",          87, 0,   60, "1512-RUM.IMX", 0}, /* 88 */
-	{3, 1513, "stateTorture",      87, 0,   60, "1513-T~1.IMX", 0}, /* 89 */
-	{3, 1514, "stateSnow",         87, 0,   60, "1514-S~1.IMX", 0}, /* 90 */
-	{3, 1515, "stateCredits",       0, 0,   60, "1515-C~1.IMX", 0}, /* 91 */
-	{3, 1520, "stateCarnAmb",       0, 0,   60, "1520-C~1.IMX", 0}, /* 92 */
-	{0,   -1, "",                   0, 0,    0, "",             0}
+	{0, 1000, "STATE_NULL",         0, 0,    0, ""            }, /* 00 */
+	{0, 1001, "stateNoChange",      0, 0,    0, ""            }, /* 01 */
+	{3, 1098, "stateCredits1",      0, 0,   60, "1098-C~1.IMX"}, /* 02 */
+	{3, 1099, "stateMenu",          0, 0,   60, "1099-M~1.IMX"}, /* 03 */
+	{3, 1100, "stateHold1",         4, 0,   60, "1100-H~1.IMX"}, /* 04 */
+	{3, 1101, "stateWaterline1",    4, 0,   60, "1101-W~1.IMX"}, /* 05 */
+	{3, 1102, "stateHold2",         6, 1,   60, "1102-H~1.IMX"}, /* 06 */
+	{3, 1103, "stateWaterline2",    6, 0,   60, "1103-W~1.IMX"}, /* 07 */
+	{3, 1104, "stateCannon",        0, 0,   60, "1104-C~1.IMX"}, /* 08 */
+	{3, 1105, "stateTreasure",      0, 0,   60, "1105-T~1.IMX"}, /* 09 */
+	{3, 1200, "stateFortBase",     10, 1,   60, "1200-F~1.IMX"}, /* 10 */
+	{3, 1201, "statePreFort",      10, 1,   60, "1201-P~1.IMX"}, /* 11 */
+	{3, 1202, "statePreVooOut",    12, 0,   60, "1202-P~1.IMX"}, /* 12 */
+	{3, 1203, "statePreVooIn",     12, 0,   60, "1203-P~1.IMX"}, /* 13 */
+	{3, 1204, "statePreVooLady",   12, 0,   60, "1204-P~1.IMX"}, /* 14 */
+	{3, 1205, "stateVoodooOut",     0, 0,   60, "1205-V~1.IMX"}, /* 15 */
+	{3, 1210, "stateVoodooIn",      0, 0,   60, "1210-V~1.IMX"}, /* 16 */
+	{12,1212, "stateVoodooInAlt",   0, 1,   42, "1210-V~1.IMX"}, /* 17 */
+	{3, 1215, "stateVoodooLady",    0, 0,   60, "1215-V~1.IMX"}, /* 18 */
+	{3, 1219, "statePrePlundermap", 0, 0,   60, "1219-P~1.IMX"}, /* 19 */
+	{3, 1220, "statePlundermap",    0, 0,   60, "1220-P~1.IMX"}, /* 20 */
+	{3, 1222, "statePreCabana",     0, 0,   60, "1222-P~1.IMX"}, /* 21 */
+	{3, 1223, "stateCabana",        0, 0,   60, "1223-C~1.IMX"}, /* 22 */
+	{3, 1224, "statePostCabana",   23, 0,   60, "1224-P~1.IMX"}, /* 23 */
+	{3, 1225, "stateBeachClub",    23, 0,   60, "1225-B~1.IMX"}, /* 24 */
+	{3, 1230, "stateCliff",         0, 0,   60, "1230-C~1.IMX"}, /* 25 */
+	{3, 1232, "stateBelly",         0, 0,   48, "1232-B~1.IMX"}, /* 26 */
+	{3, 1235, "stateQuicksand",     0, 0,   60, "1235-Q~1.IMX"}, /* 27 */
+	{3, 1240, "stateDangerBeach",   0, 0,   48, "1240-D~1.IMX"}, /* 28 */
+	{12,1241, "stateDangerBeachAlt",0, 2,   48, "1240-D~1.IMX"}, /* 29 */
+	{3, 1245, "stateRowBoat",       0, 0,   60, "1245-R~1.IMX"}, /* 30 */
+	{3, 1247, "stateAlongside",     0, 0,   48, "1247-A~1.IMX"}, /* 31 */
+	{12,1248, "stateAlongsideAlt",  0, 1,   48, "1247-A~1.IMX"}, /* 32 */
+	{3, 1250, "stateChimpBoat",     0, 0,   30, "1250-C~1.IMX"}, /* 33 */
+	{3, 1255, "stateMrFossey",      0, 0,   48, "1255-M~1.IMX"}, /* 34 */
+	{3, 1259, "statePreTown",       0, 0,   60, "1259-P~1.IMX"}, /* 35 */
+	{3, 1260, "stateTown",          0, 0,   60, "1260-T~1.IMX"}, /* 36 */
+	{3, 1264, "statePreMeadow",     0, 0,   60, "1264-P~1.IMX"}, /* 37 */
+	{3, 1265, "stateMeadow",        0, 0,   60, "1265-M~1.IMX"}, /* 38 */
+	{3, 1266, "stateMeadowAmb",     0, 0,   60, "1266-M~1.IMX"}, /* 39 */
+	{3, 1270, "stateWardrobePre",  40, 0,   60, "1270-W~1.IMX"}, /* 40 */
+	{3, 1272, "statePreShow",      40, 0,   60, "1272-P~1.IMX"}, /* 41 */
+	{3, 1274, "stateWardrobeShow", 42, 0,   60, "1274-W~1.IMX"}, /* 42 */
+	{3, 1276, "stateShow",         42, 0,   60, "1276-S~1.IMX"}, /* 43 */
+	{3, 1277, "stateWardrobeJug",  44, 0,   60, "1277-W~1.IMX"}, /* 44 */
+	{3, 1278, "stateJuggling",     44, 0,   60, "1278-J~1.IMX"}, /* 45 */
+	{3, 1279, "statePostShow",      0, 0,   60, "1279-P~1.IMX"}, /* 46 */
+	{3, 1280, "stateChickenShop",   0, 0,   60, "1280-C~1.IMX"}, /* 47 */
+	{3, 1285, "stateBarberShop",   48, 0,   60, "1285-B~1.IMX"}, /* 48 */
+	{3, 1286, "stateVanHelgen",    48, 0,   60, "1286-V~1.IMX"}, /* 49 */
+	{3, 1287, "stateBill",         48, 0,   60, "1287-B~1.IMX"}, /* 50 */
+	{3, 1288, "stateHaggis",       48, 0,   60, "1288-H~1.IMX"}, /* 51 */
+	{3, 1289, "stateRottingham",   48, 0,   60, "1289-R~1.IMX"}, /* 52 */
+	{3, 1305, "stateDeck",          0, 0,   60, "1305-D~1.IMX"}, /* 53 */
+	{3, 1310, "stateCombatMap",     0, 0,   60, "1310-C~1.IMX"}, /* 54 */
+	{3, 1320, "stateShipCombat",    0, 0,   60, "1320-S~1.IMX"}, /* 55 */
+	{3, 1325, "stateSwordfight",    0, 0,   60, "1325-S~1.IMX"}, /* 56 */
+	{3, 1327, "stateSwordRott",     0, 0,   60, "1327-S~1.IMX"}, /* 57 */
+	{3, 1330, "stateTownEdge",      0, 0,   60, "1330-T~1.IMX"}, /* 58 */
+	{3, 1335, "stateSwordLose",     0, 0,   60, "1335-S~1.IMX"}, /* 59 */
+	{3, 1340, "stateSwordWin",      0, 0,   60, "1340-S~1.IMX"}, /* 60 */
+	{3, 1345, "stateGetMap",        0, 0,   60, "1345-G~1.IMX"}, /* 61 */
+	{3, 1400, "stateWreckBeach",    0, 0,   60, "1400-W~1.IMX"}, /* 62 */
+	{3, 1405, "stateBloodMap",     63, 0,   60, "1405-B~1.IMX"}, /* 63 */
+	{3, 1410, "stateClearing",      0, 0,   60, "1410-C~1.IMX"}, /* 64 */
+	{3, 1415, "stateLighthouse",   63, 0,   60, "1415-L~1.IMX"}, /* 65 */
+	{3, 1420, "stateVillage",      66, 0,   60, "1420-V~1.IMX"}, /* 66 */
+	{3, 1423, "stateVolcano",      66, 0,   60, "1423-V~1.IMX"}, /* 67 */
+	{3, 1425, "stateAltar",        66, 0,   60, "1425-A~1.IMX"}, /* 68 */
+	{3, 1430, "stateHotelOut",      0, 0,   60, "1430-H~1.IMX"}, /* 69 */
+	{3, 1435, "stateHotelBar",     70, 0,   60, "1435-H~1.IMX"}, /* 70 */
+	{3, 1440, "stateHotelIn",      70, 0,   60, "1440-H~1.IMX"}, /* 71 */
+	{3, 1445, "stateTarotLady",    70, 0,   60, "1445-T~1.IMX"}, /* 72 */
+	{3, 1447, "stateGoodsoup",     70, 0,   60, "1447-G~1.IMX"}, /* 73 */
+	{3, 1448, "stateGuestRoom",     0, 0,   60, "1448-G~1.IMX"}, /* 74 */
+	{3, 1450, "stateWindmill",     63, 0,   60, "1450-W~1.IMX"}, /* 75 */
+	{3, 1455, "stateCemetary",      0, 0,   60, "1455-C~1.IMX"}, /* 76 */
+	{3, 1460, "stateCrypt",        77, 0,   60, "1460-C~1.IMX"}, /* 77 */
+	{3, 1463, "stateGraveDigger",  77, 0,   60, "1463-G~1.IMX"}, /* 78 */
+	{3, 1465, "stateMonkey1",       0, 0,   60, "1465-M~1.IMX"}, /* 79 */
+	{3, 1475, "stateStanDark",      0, 0,   60, "1475-S~1.IMX"}, /* 80 */
+	{3, 1477, "stateStanLight",     0, 0,   60, "1477-S~1.IMX"}, /* 81 */
+	{3, 1480, "stateEggBeach",     63, 0,   60, "1480-E~1.IMX"}, /* 82 */
+	{3, 1485, "stateSkullIsland",   0, 0,   60, "1485-S~1.IMX"}, /* 83 */
+	{3, 1490, "stateSmugglersCave", 0, 0,   60, "1490-S~1.IMX"}, /* 84 */
+	{3, 1500, "stateLeChuckTalk",   0, 0,   60, "1500-L~1.IMX"}, /* 85 */
+	{3, 1505, "stateCarnival",      0, 0,   60, "1505-C~1.IMX"}, /* 86 */
+	{3, 1511, "stateHang",         87, 0,   60, "1511-H~1.IMX"}, /* 87 */
+	{3, 1512, "stateRum",          87, 0,   60, "1512-RUM.IMX"}, /* 88 */
+	{3, 1513, "stateTorture",      87, 0,   60, "1513-T~1.IMX"}, /* 89 */
+	{3, 1514, "stateSnow",         87, 0,   60, "1514-S~1.IMX"}, /* 90 */
+	{3, 1515, "stateCredits",       0, 0,   60, "1515-C~1.IMX"}, /* 91 */
+	{3, 1520, "stateCarnAmb",       0, 0,   60, "1520-C~1.IMX"}, /* 92 */
+	{0,   -1, "",                   0, 0,    0, "",           }
 };
 
 const imuseComiTable _comiSeqMusicTable[] = {
-	{0, 2000, "SEQ_NULL",        0, 0,    0, ""            , 0},
-	{0, 2100, "seqINTRO",        0, 0,    0, ""            , 0},
-	{3, 2105, "seqInterlude1",   0, 0,   60, "2105-I~1.IMX", 0},
-	{8, 2110, "seqLastBoat",     0, 1,    0, ""            , 0},
-	{0, 2115, "seqSINK_SHIP",    0, 0,    0, ""            , 0},
-	{0, 2120, "seqCURSED_RING",  0, 0,   60, ""            , 0},
-	{3, 2200, "seqInterlude2",   0, 0,   60, "2200-I~1.IMX", 0},
-	{3, 2210, "seqKidnapped",    0, 0,   60, "2210-K~1.IMX", 0},
-	{8, 2220, "seqSnakeVomits",  0, 1,    0, ""            , 0},
-	{8, 2222, "seqPopBalloon",   0, 1,    0, ""            , 0},
-	{3, 2225, "seqDropBalls",    0, 0,   60, "2225-D~1.IMX", 0},
-	{4, 2232, "seqArriveBarber", 0, 0,   60, "2232-A~1.IMX", 0},
-	{3, 2233, "seqAtonal",       0, 0,   60, "2233-A~1.IMX", 0},
-	{3, 2235, "seqShaveHead1",   0, 0,   60, "2235-S~1.IMX", 0},
-	{2, 2236, "seqShaveHead2",   0, 2,   60, "2235-S~1.IMX", 0},
-	{3, 2245, "seqCaberLose",    0, 0,   60, "2245-C~1.IMX", 0},
-	{3, 2250, "seqCaberWin",     0, 0,   60, "2250-C~1.IMX", 0},
-	{3, 2255, "seqDuel1",        0, 0,   60, "2255-D~1.IMX", 0},
-	{2, 2256, "seqDuel2",        0, 2,   60, "2255-D~1.IMX", 0},
-	{2, 2257, "seqDuel3",        0, 3,   60, "2255-D~1.IMX", 0},
-	{3, 2260, "seqBlowUpTree1",  0, 0,   60, "2260-B~1.IMX", 0},
-	{2, 2261, "seqBlowUpTree2",  0, 2,   60, "2260-B~1.IMX", 0},
-	{3, 2275, "seqMonkeys",      0, 0,   60, "2275-M~1.IMX", 0},
-	{9, 2277, "seqAttack",       0, 1,    0, ""            , 0},
-	{3, 2285, "seqSharks",       0, 0,   60, "2285-S~1.IMX", 0},
-	{3, 2287, "seqTowelWalk",    0, 0,   60, "2287-T~1.IMX", 0},
-	{0, 2293, "seqNICE_BOOTS",   0, 0,    0, ""            , 0},
-	{0, 2295, "seqBIG_BONED",    0, 0,    0, ""            , 0},
-	{3, 2300, "seqToBlood",      0, 0,   60, "2300-T~1.IMX", 0},
-	{3, 2301, "seqInterlude3",   0, 0,   60, "2301-I~1.IMX", 0},
-	{3, 2302, "seqRott1",        0, 0,   60, "2302-R~1.IMX", 0},
-	{2, 2304, "seqRott2",        0, 2,   60, "2302-R~1.IMX", 0},
-	{2, 2305, "seqRott2b",       0,21,   60, "2302-R~1.IMX", 0},
-	{2, 2306, "seqRott3",        0, 3,   60, "2302-R~1.IMX", 0},
-	{2, 2308, "seqRott4",        0, 4,   60, "2302-R~1.IMX", 0},
-	{2, 2309, "seqRott5",        0, 5,   60, "2302-R~1.IMX", 0},
-	{3, 2311, "seqVerse1",       0, 0,   60, "2311-S~1.IMX", 3},
-	{2, 2312, "seqVerse2",       0, 2,   60, "2311-S~1.IMX", 2},
-	{2, 2313, "seqVerse3",       0, 3,   60, "2311-S~1.IMX", 2},
-	{2, 2314, "seqVerse4",       0, 4,   60, "2311-S~1.IMX", 4},
-	{2, 2315, "seqVerse5",       0, 5,   60, "2311-S~1.IMX", 2},
-	{2, 2316, "seqVerse6",       0, 6,   60, "2311-S~1.IMX", 2},
-	{2, 2317, "seqVerse7",       0, 7,   60, "2311-S~1.IMX", 3},
-	{2, 2318, "seqVerse8",       0, 8,   60, "2311-S~1.IMX", 2},
-	{2, 2319, "seqSongEnd",      0, 9,   60, "2311-S~1.IMX", 2},
-	{2, 2336, "seqRiposteLose",  0, 0,   60, "2336-R~1.IMX", 0},
-	{2, 2337, "seqRiposteWin",   0, 0,   60, "2337-R~1.IMX", 0},
-	{2, 2338, "seqInsultLose",   0, 0,   60, "2338-I~1.IMX", 1},
-	{2, 2339, "seqInsultWin",    0, 0,   60, "2339-I~1.IMX", 1},
-	{3, 2340, "seqSwordLose",    0, 0,   60, "1335-S~1.IMX", 0},
-	{3, 2345, "seqSwordWin",     0, 0,   60, "1340-S~1.IMX", 0},
-	{3, 2347, "seqGetMap",       0, 0,   60, "1345-G~1.IMX", 0},
-	{3, 2400, "seqInterlude4",   0, 0,   60, "2400-I~1.IMX", 0},
-	{0, 2405, "seqSHIPWRECK",    0, 0,    0, ""            , 0},
-	{3, 2408, "seqFakeCredits",  0, 0,   60, "2408-F~1.IMX", 0},
-	{3, 2410, "seqPassOut",      0, 0,   60, "2410-P~1.IMX", 0},
-	{3, 2414, "seqGhostTalk",    0, 0,   60, "2414-G~1.IMX", 0},
-	{2, 2415, "seqGhostWedding", 0, 1,   60, "2414-G~1.IMX", 0},
-	{3, 2420, "seqEruption",     0, 0,   60, "2420-E~1.IMX", 0},
-	{3, 2425, "seqSacrifice",    0, 0,   60, "2425-S~1.IMX", 0},
-	{2, 2426, "seqSacrificeEnd", 0, 1,   60, "2425-S~1.IMX", 0},
-	{3, 2430, "seqScareDigger",  0, 0,   60, "2430-S~1.IMX", 0},
-	{3, 2445, "seqSkullArrive",  0, 0,   60, "2445-S~1.IMX", 0},
-	{3, 2450, "seqFloat",        0, 0,   60, "2450-C~1.IMX", 1},
-	{2, 2451, "seqFall",         0, 1,   60, "2450-C~1.IMX", 0},
-	{2, 2452, "seqUmbrella",     0, 2,   60, "2450-C~1.IMX", 0},
-	{3, 2460, "seqFight",        0, 0,   60, "2460-F~1.IMX", 0},
-	{0, 2465, "seqLAVE_RIDE",    0, 0,    0, ""            , 0},
-	{0, 2470, "seqMORE_SLAW",    0, 0,    0, ""            , 0},
-	{0, 2475, "seqLIFT_CURSE",   0, 0,    0, ""            , 0},
-	{3, 2500, "seqInterlude5",   0, 0,   60, "2500-I~1.IMX", 0},
-	{3, 2502, "seqExitSkycar",   0, 0,   60, "2502-E~1.IMX", 0},
-	{3, 2504, "seqGrow1",        0, 0,   60, "2504-G~1.IMX", 0},
-	{2, 2505, "seqGrow2",        0, 1,   60, "2504-G~1.IMX", 0},
-	{3, 2508, "seqInterlude6",   0, 0,   60, "2508-I~1.IMX", 0},
-	{0, 2515, "seqFINALE",       0, 0,    0, ""            , 0},
-	{3, 2520, "seqOut",          0, 0,   60, "2520-OUT.IMX", 0},
-	{3, 2530, "seqZap1a",        0, 0,   60, "2530-Z~1.IMX", 0},
-	{2, 2531, "seqZap1b",        0, 1,   60, "2530-Z~1.IMX", 0},
-	{2, 2532, "seqZap1c",        0, 2,   60, "2530-Z~1.IMX", 0},
-	{2, 2540, "seqZap2a",        0, 0,   60, "2540-Z~1.IMX", 0},
-	{2, 2541, "seqZap2b",        0, 1,   60, "2540-Z~1.IMX", 0},
-	{2, 2542, "seqZap2c",        0, 2,   60, "2540-Z~1.IMX", 0},
-	{3, 2550, "seqZap3a",        0, 0,   60, "2550-Z~1.IMX", 0},
-	{2, 2551, "seqZap3b",        0, 1,   60, "2550-Z~1.IMX", 0},
-	{2, 2552, "seqZap3c",        0, 2,   60, "2550-Z~1.IMX", 0},
-	{3, 2560, "seqZap4a",        0, 0,   60, "2560-Z~1.IMX", 0},
-	{2, 2561, "seqZap4b",        0, 1,   60, "2560-Z~1.IMX", 0},
-	{2, 2562, "seqZap4c",        0, 2,   60, "2560-Z~1.IMX", 0},
-	{0,   -1, "",                0, 0,    0, ""            , 0}
+	{0, 2000, "SEQ_NULL",        0, 0,    0, ""            },
+	{0, 2100, "seqINTRO",        0, 0,    0, ""            },
+	{3, 2105, "seqInterlude1",   0, 0,   60, "2105-I~1.IMX"},
+	{8, 2110, "seqLastBoat",     0, 1,    0, ""            },
+	{0, 2115, "seqSINK_SHIP",    0, 0,    0, ""            },
+	{0, 2120, "seqCURSED_RING",  0, 0,   60, ""            },
+	{3, 2200, "seqInterlude2",   0, 0,   60, "2200-I~1.IMX"},
+	{3, 2210, "seqKidnapped",    0, 0,   60, "2210-K~1.IMX"},
+	{8, 2220, "seqSnakeVomits",  0, 1,    0, ""            },
+	{8, 2222, "seqPopBalloon",   0, 1,    0, ""            },
+	{3, 2225, "seqDropBalls",    0, 0,   60, "2225-D~1.IMX"},
+	{4, 2232, "seqArriveBarber", 0, 0,   60, "2232-A~1.IMX"},
+	{3, 2233, "seqAtonal",       0, 0,   60, "2233-A~1.IMX"},
+	{3, 2235, "seqShaveHead1",   0, 0,   60, "2235-S~1.IMX"},
+	{2, 2236, "seqShaveHead2",   0, 2,   60, "2235-S~1.IMX"},
+	{3, 2245, "seqCaberLose",    0, 0,   60, "2245-C~1.IMX"},
+	{3, 2250, "seqCaberWin",     0, 0,   60, "2250-C~1.IMX"},
+	{3, 2255, "seqDuel1",        0, 0,   60, "2255-D~1.IMX"},
+	{2, 2256, "seqDuel2",        0, 2,   60, "2255-D~1.IMX"},
+	{2, 2257, "seqDuel3",        0, 3,   60, "2255-D~1.IMX"},
+	{3, 2260, "seqBlowUpTree1",  0, 0,   60, "2260-B~1.IMX"},
+	{2, 2261, "seqBlowUpTree2",  0, 2,   60, "2260-B~1.IMX"},
+	{3, 2275, "seqMonkeys",      0, 0,   60, "2275-M~1.IMX"},
+	{9, 2277, "seqAttack",       0, 1,    0, ""            },
+	{3, 2285, "seqSharks",       0, 0,   60, "2285-S~1.IMX"},
+	{3, 2287, "seqTowelWalk",    0, 0,   60, "2287-T~1.IMX"},
+	{0, 2293, "seqNICE_BOOTS",   0, 0,    0, ""            },
+	{0, 2295, "seqBIG_BONED",    0, 0,    0, ""            },
+	{3, 2300, "seqToBlood",      0, 0,   60, "2300-T~1.IMX"},
+	{3, 2301, "seqInterlude3",   0, 0,   60, "2301-I~1.IMX"},
+	{3, 2302, "seqRott1",        0, 0,   60, "2302-R~1.IMX"},
+	{2, 2304, "seqRott2",        0, 2,   60, "2302-R~1.IMX"},
+	{2, 2305, "seqRott2b",       0,21,   60, "2302-R~1.IMX"},
+	{2, 2306, "seqRott3",        0, 3,   60, "2302-R~1.IMX"},
+	{2, 2308, "seqRott4",        0, 4,   60, "2302-R~1.IMX"},
+	{2, 2309, "seqRott5",        0, 5,   60, "2302-R~1.IMX"},
+	{3, 2311, "seqVerse1",       0, 0,   60, "2311-S~1.IMX"},
+	{2, 2312, "seqVerse2",       0, 2,   60, "2311-S~1.IMX"},
+	{2, 2313, "seqVerse3",       0, 3,   60, "2311-S~1.IMX"},
+	{2, 2314, "seqVerse4",       0, 4,   60, "2311-S~1.IMX"},
+	{2, 2315, "seqVerse5",       0, 5,   60, "2311-S~1.IMX"},
+	{2, 2316, "seqVerse6",       0, 6,   60, "2311-S~1.IMX"},
+	{2, 2317, "seqVerse7",       0, 7,   60, "2311-S~1.IMX"},
+	{2, 2318, "seqVerse8",       0, 8,   60, "2311-S~1.IMX"},
+	{2, 2319, "seqSongEnd",      0, 9,   60, "2311-S~1.IMX"},
+	{2, 2336, "seqRiposteLose",  0, 0,   60, "2336-R~1.IMX"},
+	{2, 2337, "seqRiposteWin",   0, 0,   60, "2337-R~1.IMX"},
+	{2, 2338, "seqInsultLose",   0, 0,   60, "2338-I~1.IMX"},
+	{2, 2339, "seqInsultWin",    0, 0,   60, "2339-I~1.IMX"},
+	{3, 2340, "seqSwordLose",    0, 0,   60, "1335-S~1.IMX"},
+	{3, 2345, "seqSwordWin",     0, 0,   60, "1340-S~1.IMX"},
+	{3, 2347, "seqGetMap",       0, 0,   60, "1345-G~1.IMX"},
+	{3, 2400, "seqInterlude4",   0, 0,   60, "2400-I~1.IMX"},
+	{0, 2405, "seqSHIPWRECK",    0, 0,    0, ""            },
+	{3, 2408, "seqFakeCredits",  0, 0,   60, "2408-F~1.IMX"},
+	{3, 2410, "seqPassOut",      0, 0,   60, "2410-P~1.IMX"},
+	{3, 2414, "seqGhostTalk",    0, 0,   60, "2414-G~1.IMX"},
+	{2, 2415, "seqGhostWedding", 0, 1,   60, "2414-G~1.IMX"},
+	{3, 2420, "seqEruption",     0, 0,   60, "2420-E~1.IMX"},
+	{3, 2425, "seqSacrifice",    0, 0,   60, "2425-S~1.IMX"},
+	{2, 2426, "seqSacrificeEnd", 0, 1,   60, "2425-S~1.IMX"},
+	{3, 2430, "seqScareDigger",  0, 0,   60, "2430-S~1.IMX"},
+	{3, 2445, "seqSkullArrive",  0, 0,   60, "2445-S~1.IMX"},
+	{3, 2450, "seqFloat",        0, 0,   60, "2450-C~1.IMX"},
+	{2, 2451, "seqFall",         0, 1,   60, "2450-C~1.IMX"},
+	{2, 2452, "seqUmbrella",     0, 2,   60, "2450-C~1.IMX"},
+	{3, 2460, "seqFight",        0, 0,   60, "2460-F~1.IMX"},
+	{0, 2465, "seqLAVE_RIDE",    0, 0,    0, ""            },
+	{0, 2470, "seqMORE_SLAW",    0, 0,    0, ""            },
+	{0, 2475, "seqLIFT_CURSE",   0, 0,    0, ""            },
+	{3, 2500, "seqInterlude5",   0, 0,   60, "2500-I~1.IMX"},
+	{3, 2502, "seqExitSkycar",   0, 0,   60, "2502-E~1.IMX"},
+	{3, 2504, "seqGrow1",        0, 0,   60, "2504-G~1.IMX"},
+	{2, 2505, "seqGrow2",        0, 1,   60, "2504-G~1.IMX"},
+	{3, 2508, "seqInterlude6",   0, 0,   60, "2508-I~1.IMX"},
+	{0, 2515, "seqFINALE",       0, 0,    0, ""            },
+	{3, 2520, "seqOut",          0, 0,   60, "2520-OUT.IMX"},
+	{3, 2530, "seqZap1a",        0, 0,   60, "2530-Z~1.IMX"},
+	{2, 2531, "seqZap1b",        0, 1,   60, "2530-Z~1.IMX"},
+	{2, 2532, "seqZap1c",        0, 2,   60, "2530-Z~1.IMX"},
+	{2, 2540, "seqZap2a",        0, 0,   60, "2540-Z~1.IMX"},
+	{2, 2541, "seqZap2b",        0, 1,   60, "2540-Z~1.IMX"},
+	{2, 2542, "seqZap2c",        0, 2,   60, "2540-Z~1.IMX"},
+	{3, 2550, "seqZap3a",        0, 0,   60, "2550-Z~1.IMX"},
+	{2, 2551, "seqZap3b",        0, 1,   60, "2550-Z~1.IMX"},
+	{2, 2552, "seqZap3c",        0, 2,   60, "2550-Z~1.IMX"},
+	{3, 2560, "seqZap4a",        0, 0,   60, "2560-Z~1.IMX"},
+	{2, 2561, "seqZap4b",        0, 1,   60, "2560-Z~1.IMX"},
+	{2, 2562, "seqZap4c",        0, 2,   60, "2560-Z~1.IMX"},
+	{0,   -1, "",                0, 0,    0, ""            }
 };
 
 const imuseComiTable _comiDemoStateMusicTable[] = {
-	{0, 1000, "STATE_NULL",      0, 0,    0, "",         0}, /* 00 */
-	{0, 1001, "stateNoChange",   0, 0,    0, "",         0}, /* 01 */
-	{3, 1100, "stateHold1",      2, 0,   60, "in1.imx",  0}, /* 02 */
-	{0, 1001, "empty",           0, 0,    0, "",         0}, /* 03 */
-	{3, 1120, "stateHold2",      4, 0,   60, "in2.imx",  0}, /* 04 */
-	{0, 1001, "empty",           0, 0,    0, "",         0}, /* 05 */
-	{0, 1001, "empty",           0, 0,    0, "",         0}, /* 06 */
-	{0, 1001, "empty",           0, 0,    0, "",         0}, /* 07 */
-	{3, 1140, "stateWaterline1", 2, 0,   60, "out1.imx", 0}, /* 08 */
-	{3, 1150, "stateWaterline2", 4, 0,   60, "out2.imx", 0}, /* 09 */
-	{0, 1001, "empty",           0, 0,    0, "",         0}, /* 10 */
-	{0, 1001, "empty",           0, 0,    0, "",         0}, /* 11 */
-	{0, 1001, "empty",           0, 0,    0, "",         0}, /* 12 */
-	{0, 1001, "empty",           0, 0,    0, "",         0}, /* 13 */
-	{0, 1001, "empty",           0, 0,    0, "",         0}, /* 14 */
-	{0, 1001, "empty",           0, 0,    0, "",         0}, /* 15 */
-	{3, 1210, "stateCannon",     4, 0,   60, "gun.imx",  0}, /* 16 */
-	{0,   -1, "",                0, 0,    0, "",         0}
+	{0, 1000, "STATE_NULL",      0, 0,    0, "",       }, /* 00 */
+	{0, 1001, "stateNoChange",   0, 0,    0, "",       }, /* 01 */
+	{3, 1100, "stateHold1",      2, 0,   60, "in1.imx" }, /* 02 */
+	{0, 1001, "empty",           0, 0,    0, "",       }, /* 03 */
+	{3, 1120, "stateHold2",      4, 0,   60, "in2.imx" }, /* 04 */
+	{0, 1001, "empty",           0, 0,    0, "",       }, /* 05 */
+	{0, 1001, "empty",           0, 0,    0, "",       }, /* 06 */
+	{0, 1001, "empty",           0, 0,    0, "",       }, /* 07 */
+	{3, 1140, "stateWaterline1", 2, 0,   60, "out1.imx"}, /* 08 */
+	{3, 1150, "stateWaterline2", 4, 0,   60, "out2.imx"}, /* 09 */
+	{0, 1001, "empty",           0, 0,    0, "",       }, /* 10 */
+	{0, 1001, "empty",           0, 0,    0, "",       }, /* 11 */
+	{0, 1001, "empty",           0, 0,    0, "",       }, /* 12 */
+	{0, 1001, "empty",           0, 0,    0, "",       }, /* 13 */
+	{0, 1001, "empty",           0, 0,    0, "",       }, /* 14 */
+	{0, 1001, "empty",           0, 0,    0, "",       }, /* 15 */
+	{3, 1210, "stateCannon",     4, 0,   60, "gun.imx" }, /* 16 */
+	{0,   -1, "",                0, 0,    0, "",       }
 };
 
 const imuseFtStateTable _ftStateMusicTable[] = {
diff --git a/engines/scumm/imuse_digi/dimuse_tables.h b/engines/scumm/imuse_digi/dimuse_tables.h
index 404030adf1..1c981d8124 100644
--- a/engines/scumm/imuse_digi/dimuse_tables.h
+++ b/engines/scumm/imuse_digi/dimuse_tables.h
@@ -53,7 +53,6 @@ struct imuseComiTable {
 	byte hookId;
 	int16 fadeOutDelay;
 	char filename[13];
-	int shiftLoop;
 };
 
 
diff --git a/engines/scumm/imuse_digi/dimuse_track.cpp b/engines/scumm/imuse_digi/dimuse_track.cpp
index e3f4a1bf40..4354988cc8 100644
--- a/engines/scumm/imuse_digi/dimuse_track.cpp
+++ b/engines/scumm/imuse_digi/dimuse_track.cpp
@@ -145,21 +145,6 @@ int IMuseDigital::startSound(int soundId, const char *soundName, int soundType,
 	} else if (_vm->_game.id == GID_CMI) {
 		// Tweak the default gain reduction to about 4 dB
 		track->gainRedFadeDest = 127 * 290;
-		if (track->soundId / 1000 == 1) { // State
-			for (l = 0; _comiStateMusicTable[l].soundId != -1; l++) {
-				if ((_comiStateMusicTable[l].soundId == track->soundId)) {
-					track->loopShiftType = _comiStateMusicTable[l].shiftLoop;
-					break;
-				}
-			}
-		} else if (track->soundId / 1000 == 2) { // Sequence
-			for (l = 0; _comiSeqMusicTable[l].soundId != -1; l++) {
-				if ((_comiSeqMusicTable[l].soundId == track->soundId)) {
-					track->loopShiftType = _comiSeqMusicTable[l].shiftLoop;
-					break;
-				}
-			}
-		}
 	}
 
 	int bits = 0, freq = 0, channels = 0;




More information about the Scummvm-git-logs mailing list