[Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse.cpp,1.28,1.29 dimuse.h,1.17,1.18 dimuse_music.cpp,1.3,1.4 dimuse_sndmgr.cpp,1.20,1.21 dimuse_sndmgr.h,1.14,1.15 dimuse_tables.cpp,1.6,1.7

Pawel Kolodziejski aquadran at users.sourceforge.net
Wed Jan 14 14:08:12 CET 2004


Update of /cvsroot/scummvm/scummvm/scumm/imuse_digi
In directory sc8-pr-cvs1:/tmp/cvs-serv8985

Modified Files:
	dimuse.cpp dimuse.h dimuse_music.cpp dimuse_sndmgr.cpp 
	dimuse_sndmgr.h dimuse_tables.cpp 
Log Message:
synced with local sources:
- comi music implementation(not finished),
- reorganized comi tables,
- some fixes for handling hookId


Index: dimuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.cpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- dimuse.cpp	14 Jan 2004 16:46:19 -0000	1.28
+++ dimuse.cpp	14 Jan 2004 22:07:24 -0000	1.29
@@ -46,9 +46,13 @@
 	_pause = false;
 	_sound = new ImuseDigiSndMgr(_vm);
 	_vm->_timer->installTimerProc(timer_handler, 1000000 / 25, this);
+
 	_curMusicState = 0;
 	_curMusicSeq = 0;
 	_curMusicCue = 0;
+	memset(_attributesSeq, 0, sizeof(_attributesSeq));
+	memset(_attributesState, 0, sizeof(_attributesState));
+	_curSeqAtribPos = 0;
 
 	_curMusicSoundId = -1;
 }
@@ -78,10 +82,10 @@
 			} else if (_track[l].stream) {
 				if ((!_track[l].locked) && (_track[l].toBeRemoved)) {
 					debug(5, "IMuseDigital::callback(): stoped sound: %d", _track[l].soundId);
-					if (_track[l].stream)
-						_track[l].stream->finish();
+					_track[l].stream->finish();
 					_track[l].stream = NULL;
 					_sound->closeSound(_track[l].soundHandle);
+					_curMusicSeq = 0;
 					_track[l].used = false;
 					continue;
 				}
@@ -215,21 +219,21 @@
 		return;
 	}
 
-	int hookid = _sound->getJumpIdByRegionId(_track[track].soundHandle, _track[track].curRegion);
-	if (hookid == _track[track].curHookId) {
-		int region = _sound->getRegionIdByHookId(_track[track].soundHandle, hookid);
+	int jumpId = _sound->getJumpIdByRegionAndHookId(_track[track].soundHandle, _track[track].curRegion, _track[track].curHookId);
+	if (jumpId != -1) {
+		int region = _sound->getRegionIdByJumpId(_track[track].soundHandle, jumpId);
 		if (region != -1) {
 			_track[track].curRegion = region;
+			debug(5, "switchToNextRegion-sound(%d) jump to %d region, curHookId: %d", _track[track].soundId, _track[track].curRegion, _track[track].curHookId);
 			_track[track].curHookId = 0;
-			debug(5, "switchToNextRegion-sound(%d) jump to %d region", _track[track].soundId, _track[track].curRegion);
 		}
 	}
 
-	debug(5, "switchToNextRegion-sound(%d) select %d region", _track[track].soundId, _track[track].curRegion);
+	debug(5, "switchToNextRegion-sound(%d) select %d region, curHookId: %d", _track[track].soundId, _track[track].curRegion, _track[track].curHookId);
 	_track[track].regionOffset = 0;
 }
 
-void IMuseDigital::startSound(int soundId, const char *soundName, int soundType, int soundGroup, AudioStream *input) {
+void IMuseDigital::startSound(int soundId, const char *soundName, int soundType, int soundGroup, AudioStream *input, bool sequence, int hookId) {
 	debug(5, "IMuseDigital::startSound(%d)", soundId);
 	int l;
 
@@ -244,12 +248,13 @@
 			_track[l].soundId = soundId;
 			_track[l].started = false;
 			_track[l].soundGroup = soundGroup;
-			_track[l].curHookId = 0;
+			_track[l].curHookId = hookId;
 			_track[l].curRegion = -1;
 			_track[l].regionOffset = 0;
 			_track[l].trackOffset = 0;
 			_track[l].mod = 0;
 			_track[l].toBeRemoved = false;
+			_track[l].sequence = sequence;
 
 			int bits = 0, freq = 0, channels = 0, mixerFlags = 0;
 
@@ -260,7 +265,7 @@
 				if (soundName == NULL)
 					_track[l].soundHandle = _sound->openSound(soundId, NULL, soundType, soundGroup);
 				else
-					_track[l].soundHandle = _sound->openSound(0, soundName, soundType, soundGroup);
+					_track[l].soundHandle = _sound->openSound(soundId, soundName, soundType, soundGroup);
 
 				if (_track[l].soundHandle == NULL)
 					return;
@@ -296,8 +301,8 @@
 				_vm->_mixer->playInputStream(&_track[l].handle, _track[l].stream, true, _track[l].vol / 1000, _track[l].pan, -1);
 			}
 
-			if ((_track[l].soundGroup == IMUSE_MUSIC) && (_vm->_gameId != GID_FT)) {
-				stopMusic();
+			if ((_track[l].soundGroup == IMUSE_MUSIC) && (_vm->_gameId != GID_FT) && !((_vm->_gameId == GID_CMI) && (_vm->_features != GF_DEMO))) {
+				fadeOutMusic(120);
 				_curMusicSoundId = soundId;
 			}
 
@@ -462,6 +467,16 @@
 			break;
 		}
 		break;
+	case 15: // ImuseSetHook
+		debug(5, "ImuseSetHookId (%d, %d)", sample, c);
+		for (l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+			_track[l].locked = true;
+			if ((_track[l].soundId == sample) && _track[l].used) {
+				_track[l].curHookId = c;
+			}
+			_track[l].locked = false;
+		}
+		break;
 	case 25: // ImuseStartStream
 		debug(5, "ImuseStartStream (%d, %d, %d)", sample, c, d);
 		break;
@@ -472,10 +487,10 @@
 		debug(5, "ImuseSetState (%d)", b);
 		if ((_vm->_gameId == GID_DIG) && (_vm->_features & GF_DEMO)) {
 			if (b == 1)
-				startMusic(1);
+				startMusic(1, false);
 			else {
 				if (getSoundStatus(2) == 0)
-					startMusic(2);
+					startMusic(2, false);
 			}
 		} else if (_vm->_gameId == GID_DIG) {
 			if (b == 1000) {		// STATE_NULL
@@ -487,39 +502,27 @@
 					int music = _digStateMusicMap[l].table_index;
 					debug(5, "Play imuse music: %s, %s, %s", _digStateMusicTable[music].name, _digStateMusicTable[music].title, _digStateMusicTable[music].filename);
 					if (_digStateMusicTable[music].filename[0] != 0) {
-						startMusic(_digStateMusicTable[music].filename, _digStateMusicTable[music].id);
+						startMusic(_digStateMusicTable[music].filename, _digStateMusicTable[music].id, false, 0);
 					}
 					break;
 				}
 			}
 		} else if ((_vm->_gameId == GID_CMI) && (_vm->_features & GF_DEMO)) {
 			if (b == 2) {
-				startMusic("in1.imx", 2002);
+				startMusic("in1.imx", 2002, false, 0);
 			} else if (b == 4) {
-				startMusic("in2.imx", 2004);
+				startMusic("in2.imx", 2004, false, 0);
 			} else if (b == 8) {
-				startMusic("out1.imx", 2008);
+				startMusic("out1.imx", 2008, false, 0);
 			} else if (b == 9) {
-				startMusic("out2.imx", 2009);
+				startMusic("out2.imx", 2009, false, 0);
 			} else if (b == 16) {
-				startMusic("gun.imx", 2016);
+				startMusic("gun.imx", 2016, false, 0);
 			} else {
 				warning("imuse digital: set state unknown for cmi demo: %d, room: %d", b, this->_vm->_currentRoom);
 			}
 		} else if (_vm->_gameId == GID_CMI) {
-			if (b == 1000) {		// STATE_NULL
-				stopMusic();
-				return;
-			}
-			for (l = 0; _comiStateMusicTable[l].id != -1; l++) {
-				if ((_comiStateMusicTable[l].id == b)) {
-					debug(5, "Play imuse music: %s, %s, %s", _comiStateMusicTable[l].name, _comiStateMusicTable[l].title, _comiStateMusicTable[l].filename);
-					if (_comiStateMusicTable[l].filename[0] != 0) {
-						startMusic(_comiStateMusicTable[l].filename, b);
-					}
-					break;
-				}
-			}
+			setComiMusicState(b);
 		} else if (_vm->_gameId == GID_FT) {
 			setFtMusicState(b);
 		}
@@ -531,21 +534,13 @@
 				if (_digSeqMusicTable[l].room == b) {
 					debug(5, "Play imuse music: %s, %s, %s", _digSeqMusicTable[l].name, _digSeqMusicTable[l].title, _digSeqMusicTable[l].filename);
 					if (_digSeqMusicTable[l].filename[0] != 0) {
-						startMusic(_digSeqMusicTable[l].filename, b);
+						startMusic(_digSeqMusicTable[l].filename, b, false, 0);
 					}
 					break;
 				}
 			}
 		} else if (_vm->_gameId == GID_CMI) {
-			for (l = 0; _comiSeqMusicTable[l].id != -1; l++) {
-				if (_comiSeqMusicTable[l].id == b) {
-					debug(5, "Play imuse music: %s, %s, %s", _comiSeqMusicTable[l].name, _comiSeqMusicTable[l].title, _comiSeqMusicTable[l].filename);
-					if (_comiSeqMusicTable[l].filename[0] != 0) {
-						startMusic(_comiSeqMusicTable[l].filename, b);
-					}
-					break;
-				}
-			}
+			setComiMusicSequence(b);
 		} else if (_vm->_gameId == GID_FT) {
 			setFtMusicSequence(b);
 		}
@@ -558,7 +553,8 @@
 		break;
 	case 0x1003: // ImuseSetAttribute
 		debug(5, "ImuseSetAttribute (%d, %d)", b, c);
-		// TODO
+		if (_vm->_gameId == GID_DIG) {
+		}
 		break;
 	case 0x2000: // ImuseSetMasterSFXVolume
 		debug(5, "ImuseSetMasterSFXVolume (%d)", b);
@@ -637,11 +633,18 @@
 }
 
 int32 IMuseDigital::getCurMusicPosInMs() {
-	debug(5, "IMuseDigital::getCurMusicPosInMs(%d)", _curMusicSoundId);
+	int soundId = -1;
 
-//	return getPosInMs(_curMusicSoundId);
-//  hack for comi song scene to be completable
-	return 300000;
+	for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+		_track[l].locked = true;
+		if ((_track[l].used) && (_track[l].soundGroup == IMUSE_MUSIC)) {
+			soundId = _track[l].soundId;
+		}
+		_track[l].locked = false;
+	}
+
+	debug(5, "IMuseDigital::getCurMusicPosInMs(%d)", soundId);
+	return getPosInMs(soundId);
 }
 
 int32 IMuseDigital::getCurVoiceLipSyncWidth() {

Index: dimuse.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- dimuse.h	14 Jan 2004 15:59:53 -0000	1.17
+++ dimuse.h	14 Jan 2004 22:07:24 -0000	1.18
@@ -35,6 +35,8 @@
 
 #define MAX_DIGITAL_TRACKS 16
 
+struct imuseComiTable;
+
 class IMuseDigital : public MusicEngine {
 private:
 
@@ -52,6 +54,7 @@
 		bool started;
 		int32 regionOffset;
 		int32 trackOffset;
+		bool sequence;
 		int curRegion;
 		int curHookId;
 		int soundGroup;
@@ -72,16 +75,21 @@
 	ScummEngine *_vm;
 	ImuseDigiSndMgr *_sound;
 	bool _pause;
+
+	int _attributesState[97];
+	int _attributesSeq[91];
+	int _curSeqAtribPos;
+
 	int _curMusicState;
 	int _curMusicSeq;
 	int _curMusicCue;
-	
+
 	int _curMusicSoundId;
 
 	static void timer_handler(void *refConf);
 	void callback();
 	void switchToNextRegion(int track);
-	void startSound(int soundId, const char *soundName, int soundType, int soundGroup, AudioStream *input);
+	void startSound(int soundId, const char *soundName, int soundType, int soundGroup, AudioStream *input, bool sequence, int hookId);
 
 	int32 getPosInMs(int soundId);
 	void getLipSync(int soundId, int syncId, int32 msPos, int32 &width, int32 &height);
@@ -89,28 +97,32 @@
 	void stopMusic();
 
 	int getSoundIdByName(const char *soundName);
-	void fadeOutMusic();
+	void fadeOutMusic(int fadeDelay);
 	void setFtMusicState(int stateId);
 	void setFtMusicSequence(int seqId);
 	void setFtMusicCuePoint(int cueId);
-	void playFtMusic(const char *songName, int opcode, int volume);
+	void playFtMusic(const char *songName, int opcode, int volume, bool sequence);
+
+	void setComiMusicState(int stateId);
+	void setComiMusicSequence(int seqId);
+	void playComiMusic(const char *songName, const imuseComiTable *table, int atribPos, bool sequence);
 
 public:
 	IMuseDigital(ScummEngine *scumm);
 	virtual ~IMuseDigital();
 
 	void startVoice(int soundId, AudioStream *input)
-		{ debug(5, "startVoiceStream(%d)", soundId); startSound(soundId, NULL, 0, IMUSE_VOICE, input); }
+		{ debug(5, "startVoiceStream(%d)", soundId); startSound(soundId, NULL, 0, IMUSE_VOICE, input, false, 0); }
 	void startVoice(int soundId)
-		{ debug(5, "startVoiceBundle(%d)", soundId); startSound(soundId, NULL, IMUSE_BUNDLE, IMUSE_VOICE, NULL); }
+		{ debug(5, "startVoiceBundle(%d)", soundId); startSound(soundId, NULL, IMUSE_BUNDLE, IMUSE_VOICE, NULL, false, 0); }
 	void startVoice(int soundId, const char *soundName)
-		{ debug(5, "startVoiceBundle(%s)", soundName); startSound(soundId, soundName, IMUSE_BUNDLE, IMUSE_VOICE, NULL); }
-	void startMusic(int soundId)
-		{ debug(5, "startMusicResource(%d)", soundId); startSound(soundId, NULL, IMUSE_RESOURCE, IMUSE_MUSIC, NULL); }
-	void startMusic(const char *soundName, int soundId)
-		{ debug(5, "startMusicBundle(%s)", soundName); startSound(soundId, soundName, IMUSE_BUNDLE, IMUSE_MUSIC, NULL); }
+		{ debug(5, "startVoiceBundle(%s)", soundName); startSound(soundId, soundName, IMUSE_BUNDLE, IMUSE_VOICE, NULL, false, 0); }
+	void startMusic(int soundId, bool sequence)
+		{ debug(5, "startMusicResource(%d)", soundId); startSound(soundId, NULL, IMUSE_RESOURCE, IMUSE_MUSIC, NULL, sequence, 0); }
+	void startMusic(const char *soundName, int soundId, bool sequence, int hookId)
+		{ debug(5, "startMusicBundle(%s)", soundName); startSound(soundId, soundName, IMUSE_BUNDLE, IMUSE_MUSIC, NULL, sequence, hookId); }
 	void startSfx(int soundId)
-		{ debug(5, "startSfx(%d)", soundId); startSound(soundId, NULL, IMUSE_RESOURCE, IMUSE_SFX, NULL); }
+		{ debug(5, "startSfx(%d)", soundId); startSound(soundId, NULL, IMUSE_RESOURCE, IMUSE_SFX, NULL, false, 0); }
 	void startSound(int soundId)
 		{ error("MusicEngine::startSound() Should be never called"); }
 
@@ -128,27 +140,39 @@
 	int32 getCurMusicLipSyncHeight(int syncId);
 };
 
-struct imuse_music_table {
+struct imuse_music_map {
 	int room;
-	int id;
+	int table_index;
 	int unk1;
 	int unk2;
 	int unk3;
 	int unk4;
-	char name[30];
-	char title[30];
-	char filename[13];
 };
 
-struct imuse_music_map {
+struct imuseDigtable {
 	int room;
-	int table_index;
+	int id;
 	int unk1;
 	int unk2;
 	int unk3;
 	int unk4;
+	char name[30];
+	char title[30];
+	char filename[13];
 };
 
+struct imuseComiTable {
+	char title[30];
+	int opcode;
+	int soundId;
+	char name[24];
+	int param;
+	int hookId;
+	int fadeDelay;
+	char filename[13];
+};
+
+
 struct imuseFtNames {
 	char name[20];
 };
@@ -168,19 +192,19 @@
 
 #ifdef __PALM_OS__
 extern imuse_music_map *_digStateMusicMap;
-extern const imuse_music_table *_digStateMusicTable;
-extern const imuse_music_table *_comiStateMusicTable;
-extern const imuse_music_table *_comiSeqMusicTable;
-extern const imuse_music_table *_digSeqMusicTable;
+extern const imuseDigtable *_digStateMusicTable;
+extern const imuseDigtable *_comiStateMusicTable;
+extern const imuseComiTable *_comiSeqMusicTable;
+extern const imuseComiTable *_digSeqMusicTable;
 extern const imuseFtStateTable *_ftStateMusicTable;
 extern const imuseFtSeqTable *_ftSeqMusicTable;
 extern const imuseFtNames *_ftSeqNames;
 #else
 extern imuse_music_map _digStateMusicMap[];
-extern const imuse_music_table _digStateMusicTable[];
-extern const imuse_music_table _digSeqMusicTable[];
-extern const imuse_music_table _comiStateMusicTable[];
-extern const imuse_music_table _comiSeqMusicTable[];
+extern const imuseDigtable _digStateMusicTable[];
+extern const imuseDigtable _digSeqMusicTable[];
+extern const imuseComiTable _comiStateMusicTable[];
+extern const imuseComiTable _comiSeqMusicTable[];
 extern const imuseFtStateTable _ftStateMusicTable[];
 extern const imuseFtSeqTable _ftSeqMusicTable[];
 extern const imuseFtNames _ftSeqNames[];

Index: dimuse_music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_music.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- dimuse_music.cpp	12 Jan 2004 20:20:33 -0000	1.3
+++ dimuse_music.cpp	14 Jan 2004 22:07:24 -0000	1.4
@@ -25,6 +25,159 @@
 
 namespace Scumm {
 
+void IMuseDigital::setComiMusicState(int stateId) {
+	int l, num = -1;
+
+	if (stateId == 0)
+		stateId = 1000;
+
+	for (l = 0; _comiStateMusicTable[l].soundId != -1; l++) {
+		if ((_comiStateMusicTable[l].soundId == stateId)) {
+			debug(5, "Set music state: %s, %s, %s", _comiStateMusicTable[l].name, _comiStateMusicTable[l].title, _comiStateMusicTable[l].filename);
+			num = l;
+			break;
+		}
+	}
+	assert(num != -1);
+
+	if (_curMusicState == num)
+		return;
+
+	if (_curMusicSeq == 0) {
+		if (num == 0)
+			playComiMusic(NULL, &_comiStateMusicTable[num], num, false);
+		else
+			playComiMusic(_comiStateMusicTable[num].name, &_comiStateMusicTable[num], num, false);
+	}
+
+	_curMusicState = num;
+}
+
+void IMuseDigital::setComiMusicSequence(int seqId) {
+	int l, num = -1;
+
+	if (seqId == 0)
+		seqId = 2000;
+
+	for (l = 0; _comiSeqMusicTable[l].soundId != -1; l++) {
+		if ((_comiSeqMusicTable[l].soundId == seqId)) {
+			debug(5, "Set music sequence: %s, %s, %s", _comiSeqMusicTable[l].name, _comiSeqMusicTable[l].title, _comiSeqMusicTable[l].filename);
+			num = l;
+			break;
+		}
+	}
+	assert(num != -1);
+
+	if (_curMusicSeq == num)
+		return;
+
+	if (num != 0) {
+		if (_curMusicSeq == 0) {
+			playComiMusic(_comiSeqMusicTable[num].name, &_comiSeqMusicTable[num], 0, true);
+			_curSeqAtribPos = 0;
+			_attributesSeq[num] = 1;
+		} else {
+			if ((_comiSeqMusicTable[_curMusicSeq].opcode == 4) && (_comiSeqMusicTable[_curMusicSeq].opcode == 6)) {
+				_curSeqAtribPos = num;
+				return;
+			} else if (_comiSeqMusicTable[_curMusicSeq].opcode == 6) {
+				playComiMusic(_comiSeqMusicTable[num].name, &_comiSeqMusicTable[num], 0, true);
+				_curSeqAtribPos = 0;
+				_attributesSeq[num] = 1;
+			}
+		}
+	} else {
+		if (_curSeqAtribPos != 0) {
+			playComiMusic(_comiSeqMusicTable[_curSeqAtribPos].name, &_comiSeqMusicTable[num], 0, true);
+			_attributesSeq[_curSeqAtribPos] = 1;
+			_curSeqAtribPos = 0;
+			num = _curSeqAtribPos;
+		} else {
+			if (_curMusicState != 0)
+				playComiMusic(_comiStateMusicTable[_curMusicState].name, &_comiSeqMusicTable[num], _curMusicState, false);
+			else
+				playComiMusic(NULL, &_comiStateMusicTable[num], _curMusicState, false);
+			num = 0;
+		}
+	}
+
+	_curMusicSeq = num;
+}
+
+void IMuseDigital::playComiMusic(const char *songName, const imuseComiTable *table, int atribPos, bool sequence) {
+	int hookId = 0;
+
+	if ((songName != NULL) && (atribPos != 0)) {
+		hookId = _attributesSeq[atribPos];
+		if (table->hookId != 0) {
+			if ((hookId != 0) && (table->hookId <= 1)) {
+				_attributesSeq[atribPos] = hookId + 1;
+				if (table->hookId < hookId + 1)
+					_attributesSeq[atribPos] = 1;
+			} else {
+				_attributesSeq[atribPos] = 2;
+			}
+		}
+	}
+
+	if (table->filename[0] == 0) {
+		fadeOutMusic(120);
+		return;
+	}
+
+	switch(table->opcode) {
+		case 0:
+		case 8:
+		case 9:
+			fadeOutMusic(120);
+			break;
+		case 1:
+			fadeOutMusic(120);
+			startMusic(table->filename, table->soundId, sequence, 0);
+			parseScriptCmds(12, table->soundId, 0x600, 1, 0, 0, 0, 0);
+			parseScriptCmds(14, table->soundId, 0x600, 127, 120, 0, 0, 0);
+			break;
+		case 2:
+			{
+				int fadeDelay = table->fadeDelay;
+				if (fadeDelay == 0)
+					fadeDelay = 1000;
+				fadeOutMusic(fadeDelay);
+				startMusic(table->filename, table->soundId, sequence, table->hookId);
+			}
+			break;
+		case 3:
+			if ((!sequence) && (table->param != 0)) {
+				if (table->param == _comiStateMusicTable[_curMusicState].param) {
+					int fadeDelay = table->fadeDelay;
+					if (fadeDelay == 0)
+						fadeDelay = 1000;
+					fadeOutMusic(fadeDelay);
+					startMusic(table->filename, table->soundId, sequence, 0);
+				} 
+			} else {
+				int fadeDelay = table->fadeDelay;
+				if (fadeDelay == 0)
+					fadeDelay = 1000;
+				fadeOutMusic(fadeDelay);
+				startMusic(table->filename, table->soundId, sequence, table->hookId);
+			}
+		case 4:
+			fadeOutMusic(120);
+			startMusic(table->filename, table->soundId, sequence, 0);
+			break;
+		case 12:
+			{
+				int fadeDelay = table->fadeDelay;
+				if (fadeDelay == 0)
+					fadeDelay = 1000;
+				fadeOutMusic(fadeDelay);
+				startMusic(table->filename, table->soundId, sequence, table->hookId);
+			}
+			break;
+	}
+}
+
 void IMuseDigital::setFtMusicState(int stateId) {
 	if (stateId > 48)
 		return;
@@ -40,9 +193,9 @@
 	}
 
 	if (stateId == 0)
-		playFtMusic(NULL, 0, 0);
+		playFtMusic(NULL, 0, 0, false);
 	else
-		playFtMusic(_ftStateMusicTable[stateId].audioName, _ftStateMusicTable[stateId].opcode, _ftStateMusicTable[stateId].volume);
+		playFtMusic(_ftStateMusicTable[stateId].audioName, _ftStateMusicTable[stateId].opcode, _ftStateMusicTable[stateId].volume, false);
 
 	_curMusicState = stateId;
 }
@@ -58,12 +211,12 @@
 
 	if (seqId == 0) {
 		if (_curMusicState == 0)
-			playFtMusic(NULL, 0, 0);
+			playFtMusic(NULL, 0, 0, true);
 		else
-			playFtMusic(_ftStateMusicTable[seqId].audioName, _ftStateMusicTable[seqId].opcode, _ftStateMusicTable[seqId].volume);
+			playFtMusic(_ftStateMusicTable[seqId].audioName, _ftStateMusicTable[seqId].opcode, _ftStateMusicTable[seqId].volume, true);
 	} else {
 		int seq = (seqId - 1) * 4;
-		playFtMusic(_ftSeqMusicTable[seq].audioName, _ftSeqMusicTable[seq].opcode, _ftSeqMusicTable[seq].volume);
+		playFtMusic(_ftSeqMusicTable[seq].audioName, _ftSeqMusicTable[seq].opcode, _ftSeqMusicTable[seq].volume, true);
 	}
 
 	_curMusicSeq = seqId;
@@ -83,10 +236,10 @@
 		return;
 
 	if (cueId == 0)
-		playFtMusic(NULL, 0, 0);
+		playFtMusic(NULL, 0, 0, true);
 	else {
 		int seq = ((_curMusicSeq - 1) + cueId) * 4;
-		playFtMusic(_ftSeqMusicTable[seq].audioName, _ftSeqMusicTable[seq].opcode, _ftSeqMusicTable[seq].volume);
+		playFtMusic(_ftSeqMusicTable[seq].audioName, _ftSeqMusicTable[seq].opcode, _ftSeqMusicTable[seq].volume, true);
 	}
 
 	_curMusicCue = cueId;
@@ -104,19 +257,19 @@
 	return -1;
 }
 
-void IMuseDigital::fadeOutMusic() {
+void IMuseDigital::fadeOutMusic(int fadeDelay) {
 	debug(5, "IMuseDigital::fadeOutMusic");
 	for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
 		_track[l].locked = true;
 		if (_track[l].used) {
-			parseScriptCmds(14, _track[l].soundId, 0x600, 0, 200, 0, 0, 0);
+			parseScriptCmds(14, _track[l].soundId, 0x600, 0, fadeDelay, 0, 0, 0);
 		}
 		_track[l].locked = false;
 	}
 }
 
-void IMuseDigital::playFtMusic(const char *songName, int opcode, int volume) {
-	fadeOutMusic();
+void IMuseDigital::playFtMusic(const char *songName, int opcode, int volume, bool sequence) {
+	fadeOutMusic(200);
 
 	switch(opcode) {
 		case 0:
@@ -128,7 +281,7 @@
 			{
 			int soundId = getSoundIdByName(songName);
 			if (soundId != -1) {
-				startMusic(soundId);
+				startMusic(soundId, sequence);
 				parseScriptCmds(12, soundId, 0x600, volume, 0, 0, 0, 0);
 			}
 			}

Index: dimuse_sndmgr.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_sndmgr.cpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- dimuse_sndmgr.cpp	10 Jan 2004 07:07:19 -0000	1.20
+++ dimuse_sndmgr.cpp	14 Jan 2004 22:07:24 -0000	1.21
@@ -93,6 +93,8 @@
 				}
 				_sounds[slot].region[_sounds[slot].numRegions].offset = READ_BE_UINT32(ptr); ptr += 4;
 				_sounds[slot].region[_sounds[slot].numRegions].length = READ_BE_UINT32(ptr); ptr += 4;
+//				if (_sounds[slot].soundId == 2311)
+//					printf("REGN: offset: %d, length: %d\n", _sounds[slot].region[_sounds[slot].numRegions].offset, _sounds[slot].region[_sounds[slot].numRegions].length);
 				_sounds[slot].numRegions++;
 				break;
 			case MKID_BE('STOP'):
@@ -110,6 +112,8 @@
 				_sounds[slot].jump[_sounds[slot].numJumps].dest = READ_BE_UINT32(ptr); ptr += 4;
 				_sounds[slot].jump[_sounds[slot].numJumps].hookId = READ_BE_UINT32(ptr); ptr += 4;
 				_sounds[slot].jump[_sounds[slot].numJumps].fadeDelay = READ_BE_UINT32(ptr); ptr += 4;
+//				if (_sounds[slot].soundId == 2311)
+//					printf("JUMP: offset: %d, dest: %d, hookId: %d\n",  _sounds[slot].jump[_sounds[slot].numJumps].offset, _sounds[slot].jump[_sounds[slot].numJumps].dest, _sounds[slot].jump[_sounds[slot].numJumps].hookId);
 				_sounds[slot].numJumps++;
 				break;
 			case MKID_BE('SYNC'):
@@ -327,12 +331,13 @@
 	return soundHandle->numMarkers;
 }
 
-int ImuseDigiSndMgr::getJumpIdByRegionId(soundStruct *soundHandle, int number) {
+int ImuseDigiSndMgr::getJumpIdByRegionAndHookId(soundStruct *soundHandle, int region, int hookId) {
 	assert(soundHandle && checkForProperHandle(soundHandle));
-	assert(number >= 0 && number < soundHandle->numRegions);
+	assert(region >= 0 && region < soundHandle->numRegions);
 	for (int l = 0; l < soundHandle->numJumps; l++) {
-		if (soundHandle->jump[l].offset == soundHandle->region[number].offset) {
-			return l;
+		if (soundHandle->jump[l].offset == soundHandle->region[region].offset) {
+			if (soundHandle->jump[l].hookId == hookId)
+				return l;
 		}
 	}
 	
@@ -351,15 +356,12 @@
 	}
 }
 
-int ImuseDigiSndMgr::getRegionIdByHookId(soundStruct *soundHandle, int number) {
+int ImuseDigiSndMgr::getRegionIdByJumpId(soundStruct *soundHandle, int jumpId) {
 	assert(soundHandle && checkForProperHandle(soundHandle));
-	for (int l = 0; l < soundHandle->numJumps; l++) {
-		if (soundHandle->jump[l].hookId == number) {
-			for (int r = 0; r < soundHandle->numRegions; r++) {
-				if (soundHandle->jump[l].dest == soundHandle->region[r].offset) {
-					return r;
-				}
-			}
+	assert(jumpId >= 0 && jumpId < soundHandle->numJumps);
+	for (int l = 0; l < soundHandle->numRegions; l++) {
+		if (soundHandle->jump[jumpId].dest == soundHandle->region[l].offset) {
+			return l;
 		}
 	}
 

Index: dimuse_sndmgr.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_sndmgr.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- dimuse_sndmgr.h	10 Jan 2004 07:07:19 -0000	1.14
+++ dimuse_sndmgr.h	14 Jan 2004 22:07:24 -0000	1.15
@@ -124,8 +124,8 @@
 	int getNumRegions(soundStruct *soundHandle);
 	int getNumJumps(soundStruct *soundHandle);
 	int getNumMarkers(soundStruct *soundHandle);
-	int getJumpIdByRegionId(soundStruct *soundHandle, int number);
-	int getRegionIdByHookId(soundStruct *soundHandle, int number);
+	int getJumpIdByRegionAndHookId(soundStruct *soundHandle, int region, int hookId);
+	int getRegionIdByJumpId(soundStruct *soundHandle, int jumpId);
 	int getJumpHookId(soundStruct *soundHandle, int number);
 	int getJumpFade(soundStruct *soundHandle, int number);
 	char *getMarker(soundStruct *soundHandle, int number);

Index: dimuse_tables.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_tables.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- dimuse_tables.cpp	12 Jan 2004 19:15:07 -0000	1.6
+++ dimuse_tables.cpp	14 Jan 2004 22:07:24 -0000	1.7
@@ -150,7 +150,7 @@
 	{-1,  1,  0,  0,  0,  0 }
 };
 
-const imuse_music_table _digStateMusicTable[] = {
+const imuseDigtable _digStateMusicTable[] = {
 	{0,   1000, 0, 0, 0, 0, "STATE_NULL",           "",                     ""},
 	{1,   1001, 0, 0, 0, 0, "stateNoChange",        "",                     ""},
 	{2,   1100, 0, 3, 2, 0, "stateAstShip",         "Asteroid (amb-ship)",  "ASTERO~1.IMU"},
@@ -218,7 +218,7 @@
 	{-1,  -1,   0, 0, 0, 0, "",                     "",                     ""}
 };
 
-const imuse_music_table _digSeqMusicTable[] = {
+const imuseDigtable _digSeqMusicTable[] = {
 	{0, 2000, 0, 0, 0, 0, "SEQ_NULL",             "",                       ""            },
 	{0, 2005, 0, 0, 0, 0, "seqLogo",              "",                       ""            },
 	{0, 2010, 0, 0, 0, 0, "seqIntro",             "",                       ""            },
@@ -289,194 +289,194 @@
 	{-1,  -1, 0, 0, 0, 0, "",                     "",                       ""            }
 };
 
-const imuse_music_table _comiStateMusicTable[] = {
-	{0, 1000, 0, 0, 0, 0,  "STATE_NULL",         "",                      ""},
-	{0, 1001, 0, 0, 0, 0,  "stateNoChange",      "",                      ""},
-	{0, 1098, 0, 3, 0, 0,  "stateCredits1",      "1098-Credits1",         "1098-C~1.IMX"},
-	{0, 1099, 0, 3, 0, 0,  "stateMenu",          "1099-Menu",             "1099-M~1.IMX"},
-	{0, 1100, 0, 3, 0, 0,  "stateHold1",         "1100-Hold1",            "1100-H~1.IMX"},
-	{0, 1101, 0, 3, 1, 0,  "stateWaterline1",    "1101-Waterline1",       "1101-W~1.IMX"},
-	{0, 1102, 0, 3, 0, 0,  "stateHold2",         "1102-Hold2",            "1102-H~1.IMX"},
-	{0, 1103, 0, 3, 0, 0,  "stateWaterline2",    "1103-Waterline2",       "1103-W~1.IMX"},
-	{0, 1104, 0, 3, 0, 0,  "stateCannon",        "1104-Cannon",           "1104-C~1.IMX"},
-	{0, 1105, 0, 3, 0, 0,  "stateTreasure",      "1105-Treasure",         "1105-T~1.IMX"},
-	{0, 1200, 0, 3, 1, 0,  "stateFortBase",      "1200-Fort Base",        "1200-F~1.IMX"},
-	{0, 1201, 0, 3, 1, 0,  "statePreFort",       "1201-Pre-Fort",         "1201-P~1.IMX"},
-	{0, 1202, 0, 3, 0, 0,  "statePreVooOut",     "1202-PreVoo Out",       "1202-P~1.IMX"},
-	{0, 1203, 0, 3, 0, 0,  "statePreVooIn",      "1203-PreVoo In",        "1203-P~1.IMX"},
-	{0, 1204, 0, 3, 0, 0,  "statePreVooLad",     "1204-PreVoo Lady",      "1204-P~1.IMX"},
-	{0, 1205, 0, 3, 0, 0,  "stateVoodooOut",     "1205-Voodoo Out",       "1205-V~1.IMX"},
-	{0, 1210, 0, 3, 0, 0,  "stateVoodooIn",      "1210-Voodoo In",        "1210-V~1.IMX"},
-	{0, 1212, 0,12, 1, 0,  "stateVoodooInAlt",   "1210-Voodoo In",        "1210-V~1.IMX"},
-	{0, 1215, 0, 3, 0, 0,  "stateVoodooLady",    "1215-Voodoo Lady",      "1215-V~1.IMX"},
-	{0, 1219, 0, 3, 0, 0,  "statePrePlundermap", "1219-Pre-Map",          "1219-P~1.IMX"},
-	{0, 1220, 0, 3, 0, 0,  "statePlundermap",    "1220-Plunder Map",      "1220-P~1.IMX"},
-	{0, 1222, 0, 3, 0, 0,  "statePreCabana",     "1222-Pre-Cabana",       "1222-P~1.IMX"},
-	{0, 1223, 0, 3, 0, 0,  "stateCabana",        "1223-Cabana",           "1223-C~1.IMX"},
-	{0, 1224, 0, 3, 0, 0,  "statePostCabana",    "1224-Post-Cabana",      "1224-P~1.IMX"},
-	{0, 1225, 0, 3, 0, 0,  "stateBeachClub",     "1225-Beach Club",       "1225-B~1.IMX"},
-	{0, 1230, 0, 3, 0, 0,  "stateCliff",         "1230-Cliff",            "1230-C~1.IMX"},
-	{0, 1232, 0, 3, 0,800, "stateBelly",         "1232-Belly",            "1232-B~1.IMX"},
-	{0, 1235, 0, 3, 0, 0,  "stateQuicksand",     "1235-Quicksand",        "1235-Q~1.IMX"},
-	{0, 1240, 0, 3, 0,800, "stateDangerBeach",   "1240-Danger Beach",     "1240-D~1.IMX"},
-	{0, 1241, 0,12, 2,800, "stateDangerBeachAlt","1240-Danger Beach",     "1240-D~1.IMX"},
-	{0, 1245, 0, 3, 0, 0,  "stateRowBoat",       "1245-Row Boat",         "1245-R~1.IMX"},
-	{0, 1247, 0, 3, 0,800, "stateAlongside",     "1247-Alongside",        "1247-A~1.IMX"},
-	{0, 1248, 0,12, 1,800, "stateAlongsideAlt",  "1247-Alongside",        "1247-A~1.IMX"},
-	{0, 1250, 0, 3, 0,500, "stateChimpBoat",     "1250-Chimp Boat",       "1250-C~1.IMX"},
-	{0, 1255, 0, 3, 0,800, "stateMrFossey",      "1255-Mr Fossey",        "1255-M~1.IMX"},
-	{0, 1259, 0, 3, 0, 0,  "statePreTown",       "1259-Pre-Town",         "1259-P~1.IMX"},
-	{0, 1260, 0, 3, 0, 0,  "stateTown",          "1260-Town",             "1260-T~1.IMX"},
-	{0, 1264, 0, 3, 0, 0,  "statePreMeadow",     "1264-Pre-Meadow",       "1264-P~1.IMX"},
-	{0, 1265, 0, 3, 0, 0,  "stateMeadow",        "1265-Meadow",           "1265-M~1.IMX"},
-	{0, 1266, 0, 3, 0, 0,  "stateMeadowAmb",     "1266-Meadow Amb",       "1266-M~1.IMX"},
-	{0, 1270, 0, 3, 0, 0,  "stateWardrobePre",   "1270-Wardrobe-Pre",     "1270-W~1.IMX"},
-	{0, 1272, 0, 3, 0, 0,  "statePreShow",       "1272-Pre-Show",         "1272-P~1.IMX"},
-	{0, 1274, 0, 3, 0, 0,  "stateWardrobeShow",  "1274-Wardrobe-Show",    "1274-W~1.IMX"},
-	{0, 1276, 0, 3, 0, 0,  "stateShow",          "1276-Show",             "1276-S~1.IMX"},
-	{0, 1277, 0, 3, 0, 0,  "stateWardrobeJug",   "1277-Wardrobe-Jug",     "1277-W~1.IMX"},
-	{0, 1278, 0, 3, 0, 0,  "stateJuggling",      "1278-Juggling",         "1278-J~1.IMX"},
-	{0, 1279, 0, 3, 0, 0,  "statePostShow",      "1279-Post-Show",        "1279-P~1.IMX"},
-	{0, 1280, 0, 3, 0, 0,  "stateChickenShop",   "1280-Chicken Shop",     "1280-C~1.IMX"},
-	{0, 1285, 0, 3, 0, 0,  "stateBarberShop",    "1285-Barber Shop",      "1285-B~1.IMX"},
-	{0, 1286, 0, 3, 0, 0,  "stateVanHelgen",     "1286-Van Helgen",       "1286-V~1.IMX"},
-	{0, 1287, 0, 3, 0, 0,  "stateBill",          "1287-Bill",             "1287-B~1.IMX"},
-	{0, 1288, 0, 3, 0, 0,  "stateHaggis",        "1288-Haggis",           "1288-H~1.IMX"},
-	{0, 1289, 0, 3, 0, 0,  "stateRottingham",    "1289-Rottingham",       "1289-R~1.IMX"},
-	{0, 1305, 0, 3, 0, 0,  "stateDeck",          "1305-Deck",             "1305-D~1.IMX"},
-	{0, 1310, 0, 3, 0, 0,  "stateCombatMap",     "1310-Combat Map",       "1310-C~1.IMX"},
-	{0, 1320, 0, 3, 0, 0,  "stateShipCombat",    "1320-Ship Combat",      "1320-S~1.IMX"},
-	{0, 1325, 0, 3, 0, 0,  "stateSwordfight",    "1325-Swordfight",       "1325-S~1.IMX"},
-	{0, 1327, 0, 3, 0, 0,  "stateSwordRott",     "1327-Sword Rott",       "1327-S~1.IMX"},
-	{0, 1330, 0, 3, 0, 0,  "stateTownEdge",      "1330-Town Edge",        "1330-T~1.IMX"},
-	{0, 1335, 0, 3, 0, 0,  "stateSwordLose",     "1335-Sword Lose",       "1335-S~1.IMX"},
-	{0, 1340, 0, 3, 0, 0,  "stateSwordWin",      "1340-Sword Win",        "1340-S~1.IMX"},
-	{0, 1345, 0, 3, 0, 0,  "stateGetMap",        "1345-Get Map",          "1345-G~1.IMX"},
-	{0, 1400, 0, 3, 0, 0,  "stateWreckBeach",    "1400-Wreck Beach",      "1400-W~1.IMX"},
-	{0, 1405, 0, 3, 0, 0,  "stateBloodMap",      "1405-Blood Map",        "1405-B~1.IMX"},
-	{0, 1410, 0, 3, 0, 0,  "stateClearing",      "1410-Clearing",         "1410-C~1.IMX"},
-	{0, 1415, 0, 3, 0, 0,  "stateLighthouse",    "1415-Lighthouse",       "1415-L~1.IMX"},
-	{0, 1420, 0, 3, 0, 0,  "stateVillage",       "1420-Village",          "1420-V~1.IMX"},
-	{0, 1423, 0, 3, 0, 0,  "stateVolcano",       "1423-Volcano",          "1423-V~1.IMX"},
-	{0, 1425, 0, 3, 0, 0,  "stateAltar",         "1425-Altar",            "1425-A~1.IMX"},
-	{0, 1430, 0, 3, 0, 0,  "stateHotelOut",      "1430-Hotel Out",        "1430-H~1.IMX"},
-	{0, 1435, 0, 3, 0, 0,  "stateHotelBar",      "1435-Hotel Bar",        "1435-H~1.IMX"},
-	{0, 1440, 0, 3, 0, 0,  "stateHotelIn",       "1440-Hotel In",         "1440-H~1.IMX"},
-	{0, 1445, 0, 3, 0, 0,  "stateTarotLady",     "1445-Tarot Lady",       "1445-T~1.IMX"},
-	{0, 1447, 0, 3, 0, 0,  "stateGoodsoup",      "1447-Goodsoup",         "1447-G~1.IMX"},
-	{0, 1448, 0, 3, 0, 0,  "stateGuestRoom",     "1448-Guest Room",       "1448-G~1.IMX"},
-	{0, 1450, 0, 3, 0, 0,  "stateWindmill",      "1450-Windmill",         "1450-W~1.IMX"},
-	{0, 1455, 0, 3, 0, 0,  "stateCemetary",      "1455-Cemetary",         "1455-C~1.IMX"},
-	{0, 1460, 0, 3, 0, 0,  "stateCrypt",         "1460-Crypt",            "1460-C~1.IMX"},
-	{0, 1463, 0, 3, 0, 0,  "stateGraveDigger",   "1463-Gravedigger",      "1463-G~1.IMX"},
-	{0, 1465, 0, 3, 0, 0,  "stateMonkey1",       "1465-Monkey1",          "1465-M~1.IMX"},
-	{0, 1475, 0, 3, 0, 0,  "stateStanDark",      "1475-Stan Dark",        "1475-S~1.IMX"},
-	{0, 1477, 0, 3, 0, 0,  "stateStanLight",     "1477-Stan",             "1477-S~1.IMX"},
-	{0, 1480, 0, 3, 0, 0,  "stateEggBeach",      "1480-Egg Beach",        "1480-E~1.IMX"},
-	{0, 1485, 0, 3, 0, 0,  "stateSkullIsland",   "1485-Skull Island",     "1485-S~1.IMX"},
-	{0, 1490, 0, 3, 0, 0,  "stateSmugglersCave", "1490-Smugglers",        "1490-S~1.IMX"},
-	{0, 1500, 0, 3, 0, 0,  "stateLeChuckTalk",   "1500-Le Talk",          "1500-L~1.IMX"},
-	{0, 1505, 0, 3, 0, 0,  "stateCarnival",      "1505-Carnival",         "1505-C~1.IMX"},
-	{0, 1511, 0, 3, 0, 0,  "stateHang",          "1511-Hang",             "1511-H~1.IMX"},
-	{0, 1512, 0, 3, 0, 0,  "stateRum",           "1512-Rum",              "1512-RUM.IMX"},
-	{0, 1513, 0, 3, 0, 0,  "stateTorture",       "1513-Torture",          "1513-T~1.IMX"},
-	{0, 1514, 0, 3, 0, 0,  "stateSnow",          "1514-Snow",             "1514-S~1.IMX"},
-	{0, 1515, 0, 3, 0, 0,  "stateCredits",       "1515-Credits (end)",    "1515-C~1.IMX"},
-	{0, 1520, 0, 3, 0, 0,  "stateCarnAmb",       "1520-Carn Amb",         "1520-C~1.IMX"},
-	{-1,  -1, 0, 0, 0, 0,  "",                   "",                      ""}
+const imuseComiTable _comiStateMusicTable[] = {
+	{"",                   0, 1000, "STATE_NULL",         0, 0, 0, ""},
+	{"",                   0, 1001, "stateNoChange",      0, 0, 0, ""},
+	{"1098-Credits1",      3, 1098, "stateCredits1",      0, 0, 0, "1098-C~1.IMX"},
+	{"1099-Menu",          3, 1099, "stateMenu",          0, 0, 0, "1099-M~1.IMX"},
+	{"1100-Hold1",         3, 1100, "stateHold1",         4, 0, 0, "1100-H~1.IMX"},
+	{"1101-Waterline1",    3, 1101, "stateWaterline1",    4, 0, 0, "1101-W~1.IMX"},
+	{"1102-Hold2",         3, 1102, "stateHold2",         6, 1, 0, "1102-H~1.IMX"},
+	{"1103-Waterline2",    3, 1103, "stateWaterline2",    6, 0, 0, "1103-W~1.IMX"},
+	{"1104-Cannon",        3, 1104, "stateCannon",        0, 0, 0, "1104-C~1.IMX"},
+	{"1105-Treasure",      3, 1105, "stateTreasure",      0, 0, 0, "1105-T~1.IMX"},
+	{"1200-Fort Base",     3, 1200, "stateFortBase",     10, 1, 0, "1200-F~1.IMX"},
+	{"1201-Pre-Fort",      3, 1201, "statePreFort",      10, 1, 0, "1201-P~1.IMX"},
+	{"1202-PreVoo Out",    3, 1202, "statePreVooOut",    12, 0, 0, "1202-P~1.IMX"},
+	{"1203-PreVoo In",     3, 1203, "statePreVooIn",     12, 0, 0, "1203-P~1.IMX"},
+	{"1204-PreVoo Lady",   3, 1204, "statePreVooLady",   12, 0, 0, "1204-P~1.IMX"},
+	{"1205-Voodoo Out",    3, 1205, "stateVoodooOut",     0, 0, 0, "1205-V~1.IMX"},
+	{"1210-Voodoo In",     3, 1210, "stateVoodooIn",      0, 0, 0, "1210-V~1.IMX"},
+	{"1210-Voodoo In",    12, 1212, "stateVoodooInAlt",   0, 1,700,"1210-V~1.IMX"},
+	{"1215-Voodoo Lady",   3, 1215, "stateVoodooLady",    0, 0, 0, "1215-V~1.IMX"},
+	{"1219-Pre-Map",       3, 1219, "statePrePlundermap", 0, 0, 0, "1219-P~1.IMX"},
+	{"1220-Plunder Map",   3, 1220, "statePlundermap",    0, 0, 0, "1220-P~1.IMX"},
+	{"1222-Pre-Cabana",    3, 1222, "statePreCabana",     0, 0, 0, "1222-P~1.IMX"},
+	{"1223-Cabana",        3, 1223, "stateCabana",        0, 0, 0, "1223-C~1.IMX"},
+	{"1224-Post-Cabana",   3, 1224, "statePostCabana",   23, 0, 0, "1224-P~1.IMX"},
+	{"1225-Beach Club",    3, 1225, "stateBeachClub",    23, 0, 0, "1225-B~1.IMX"},
+	{"1230-Cliff",         3, 1230, "stateCliff",         0, 0, 0, "1230-C~1.IMX"},
+	{"1232-Belly",         3, 1232, "stateBelly",         0, 0,800,"1232-B~1.IMX"},
+	{"1235-Quicksand",     3, 1235, "stateQuicksand",     0, 0, 0, "1235-Q~1.IMX"},
+	{"1240-Danger Beach",  3, 1240, "stateDangerBeach",   0, 0,800,"1240-D~1.IMX"},
+	{"1240-Danger Beach", 12, 1241, "stateDangerBeachAlt",0, 2,800,"1240-D~1.IMX"},
+	{"1245-Row Boat",      3, 1245, "stateRowBoat",       0, 0, 0, "1245-R~1.IMX"},
+	{"1247-Alongside",     3, 1247, "stateAlongside",     0, 0,800,"1247-A~1.IMX"},
+	{"1247-Alongside",    12, 1248, "stateAlongsideAlt",  0, 1,800,"1247-A~1.IMX"},
+	{"1250-Chimp Boat",    3, 1250, "stateChimpBoat",     0, 0,500,"1250-C~1.IMX"},
+	{"1255-Mr Fossey",     3, 1255, "stateMrFossey",      0, 0,800,"1255-M~1.IMX"},
+	{"1259-Pre-Town",      3, 1259, "statePreTown",       0, 0, 0, "1259-P~1.IMX"},
+	{"1260-Town",          3, 1260, "stateTown",          0, 0, 0, "1260-T~1.IMX"},
+	{"1264-Pre-Meadow",    3, 1264, "statePreMeadow",     0, 0, 0, "1264-P~1.IMX"},
+	{"1265-Meadow",        3, 1265, "stateMeadow",        0, 0, 0, "1265-M~1.IMX"},
+	{"1266-Meadow Amb",    3, 1266, "stateMeadowAmb",     0, 0, 0, "1266-M~1.IMX"},
+	{"1270-Wardrobe-Pre",  3, 1270, "stateWardrobePre",  40, 0, 0, "1270-W~1.IMX"},
+	{"1272-Pre-Show",      3, 1272, "statePreShow",      40, 0, 0, "1272-P~1.IMX"},
+	{"1274-Wardrobe-Show", 3, 1274, "stateWardrobeShow", 42, 0, 0, "1274-W~1.IMX"},
+	{"1276-Show",          3, 1276, "stateShow",         42, 0, 0, "1276-S~1.IMX"},
+	{"1277-Wardrobe-Jug",  3, 1277, "stateWardrobeJug",  44, 0, 0, "1277-W~1.IMX"},
+	{"1278-Juggling",      3, 1278, "stateJuggling",     44, 0, 0, "1278-J~1.IMX"},
+	{"1279-Post-Show",     3, 1279, "statePostShow",      0, 0, 0, "1279-P~1.IMX"},
+	{"1280-Chicken Shop",  3, 1280, "stateChickenShop",   0, 0, 0, "1280-C~1.IMX"},
+	{"1285-Barber Shop",   3, 1285, "stateBarberShop",   48, 0, 0, "1285-B~1.IMX"},
+	{"1286-Van Helgen",    3, 1286, "stateVanHelgen",    48, 0, 0, "1286-V~1.IMX"},
+	{"1287-Bill",          3, 1287, "stateBill",         48, 0, 0, "1287-B~1.IMX"},
+	{"1288-Haggis",        3, 1288, "stateHaggis",       48, 0, 0, "1288-H~1.IMX"},
+	{"1289-Rottingham",    3, 1289, "stateRottingham",   48, 0, 0, "1289-R~1.IMX"},
+	{"1305-Deck",          3, 1305, "stateDeck",          0, 0, 0, "1305-D~1.IMX"},
+	{"1310-Combat Map",    3, 1310, "stateCombatMap",     0, 0, 0, "1310-C~1.IMX"},
+	{"1320-Ship Combat",   3, 1320, "stateShipCombat",    0, 0, 0, "1320-S~1.IMX"},
+	{"1325-Swordfight",    3, 1325, "stateSwordfight",    0, 0, 0, "1325-S~1.IMX"},
+	{"1327-Sword Rott",    3, 1327, "stateSwordRott",     0, 0, 0, "1327-S~1.IMX"},
+	{"1330-Town Edge",     3, 1330, "stateTownEdge",      0, 0, 0, "1330-T~1.IMX"},
+	{"1335-Sword Lose",    3, 1335, "stateSwordLose",     0, 0, 0, "1335-S~1.IMX"},
+	{"1340-Sword Win",     3, 1340, "stateSwordWin",      0, 0, 0, "1340-S~1.IMX"},
+	{"1345-Get Map",       3, 1345, "stateGetMap",        0, 0, 0, "1345-G~1.IMX"},
+	{"1400-Wreck Beach",   3, 1400, "stateWreckBeach",    0, 0, 0, "1400-W~1.IMX"},
+	{"1405-Blood Map",     3, 1405, "stateBloodMap",     63, 0, 0, "1405-B~1.IMX"},
+	{"1410-Clearing",      3, 1410, "stateClearing",      0, 0, 0, "1410-C~1.IMX"},
+	{"1415-Lighthouse",    3, 1415, "stateLighthouse",   63, 0, 0, "1415-L~1.IMX"},
+	{"1420-Village",       3, 1420, "stateVillage",      66, 0, 0, "1420-V~1.IMX"},
+	{"1423-Volcano",       3, 1423, "stateVolcano",      66, 0, 0, "1423-V~1.IMX"},
+	{"1425-Altar",         3, 1425, "stateAltar",        66, 0, 0, "1425-A~1.IMX"},
+	{"1430-Hotel Out",     3, 1430, "stateHotelOut",      0, 0, 0, "1430-H~1.IMX"},
+	{"1435-Hotel Bar",     3, 1435, "stateHotelBar",     70, 0, 0, "1435-H~1.IMX"},
+	{"1440-Hotel In",      3, 1440, "stateHotelIn",      70, 0, 0, "1440-H~1.IMX"},
+	{"1445-Tarot Lady",    3, 1445, "stateTarotLady",    70, 0, 0, "1445-T~1.IMX"},
+	{"1447-Goodsoup",      3, 1447, "stateGoodsoup",     70, 0, 0, "1447-G~1.IMX"},
+	{"1448-Guest Room",    3, 1448, "stateGuestRoom",     0, 0, 0, "1448-G~1.IMX"},
+	{"1450-Windmill",      3, 1450, "stateWindmill",     63, 0, 0, "1450-W~1.IMX"},
+	{"1455-Cemetary",      3, 1455, "stateCemetary",      0, 0, 0, "1455-C~1.IMX"},
+	{"1460-Crypt",         3, 1460, "stateCrypt",        77, 0, 0, "1460-C~1.IMX"},
+	{"1463-Gravedigger",   3, 1463, "stateGraveDigger",  77, 0, 0, "1463-G~1.IMX"},
+	{"1465-Monkey1",       3, 1465, "stateMonkey1",       0, 0, 0, "1465-M~1.IMX"},
+	{"1475-Stan Dark",     3, 1475, "stateStanDark",      0, 0, 0, "1475-S~1.IMX"},
+	{"1477-Stan",          3, 1477, "stateStanLight",     0, 0, 0, "1477-S~1.IMX"},
+	{"1480-Egg Beach",     3, 1480, "stateEggBeach",     63, 0, 0, "1480-E~1.IMX"},
+	{"1485-Skull Island",  3, 1485, "stateSkullIsland",   0, 0, 0, "1485-S~1.IMX"},
+	{"1490-Smugglers",     3, 1490, "stateSmugglersCave", 0, 0, 0, "1490-S~1.IMX"},
+	{"1500-Le Talk",       3, 1500, "stateLeChuckTalk",   0, 0, 0, "1500-L~1.IMX"},
+	{"1505-Carnival",      3, 1505, "stateCarnival",      0, 0, 0, "1505-C~1.IMX"},
+	{"1511-Hang",          3, 1511, "stateHang",         87, 0, 0, "1511-H~1.IMX"},
+	{"1512-Rum",           3, 1512, "stateRum",          87, 0, 0, "1512-RUM.IMX"},
+	{"1513-Torture",       3, 1513, "stateTorture",      87, 0, 0, "1513-T~1.IMX"},
+	{"1514-Snow",          3, 1514, "stateSnow",         87, 0, 0, "1514-S~1.IMX"},
+	{"1515-Credits (end)", 3, 1515, "stateCredits",       0, 0, 0, "1515-C~1.IMX"},
+	{"1520-Carn Amb",      3, 1520, "stateCarnAmb",       0, 0, 0, "1520-C~1.IMX"},
+	{"",                   0,   -1, "",                   0, 0, 0, ""}
 };
 
-const imuse_music_table _comiSeqMusicTable[] = {
-	{0, 2000, 0, 0, 0, 0,  "SEQ_NULL",          "",                       ""},
-	{0, 2100, 0, 0, 0, 0,  "seqINTRO",          "",                       ""},
-	{0, 2105, 0, 3, 0, 0,  "seqInterlude1",     "2105-Interlude1",        "2105-I~1.IMX"},
-	{0, 2110, 0, 8, 1, 0,  "seqLastBoat",       "",                       ""},
-	{0, 2115, 0, 0, 0, 0,  "seqSINK_SHIP",      "",                       ""},
-	{0, 2120, 0, 0, 0, 0,  "seqCURSED_RING",    "",                       ""},
-	{0, 2200, 0, 3, 0, 0,  "seqInterlude2",     "2200-Interlude2",        "2200-I~1.IMX"},
-	{0, 2210, 0, 3, 0, 0,  "seqKidnapped",      "2210-Kidnapped",         "2210-K~1.IMX"},
-	{0, 2220, 0, 8, 1, 0,  "seqSnakeVomits",    "",                       ""},
-	{0, 2222, 0, 8, 1, 0,  "seqPopBalloon",     "",                       ""},
-	{0, 2225, 0, 3, 0, 0,  "seqDropBalls",      "2225-Drop Balls",        "2225-D~1.IMX"},
-	{0, 2232, 0, 4, 0, 0,  "seqArriveBarber",   "2232-Arrive Barber",     "2232-A~1.IMX"},
-	{0, 2233, 0, 3, 0, 0,  "seqAtonal",         "2233-Atonal",            "2233-A~1.IMX"},
-	{0, 2235, 0, 3, 0, 0,  "seqShaveHead1",     "2235-Shave Head",        "2235-S~1.IMX"},
-	{0, 2236, 0, 2, 2, 0,  "seqShaveHead2",     "2235-Shave Head",        "2235-S~1.IMX"},
-	{0, 2245, 0, 3, 0, 0,  "seqCaberLose",      "2245-Caber Lose",        "2245-C~1.IMX"},
-	{0, 2250, 0, 3, 0, 0,  "seqCaberWin",       "2250-Caber Win",         "2250-C~1.IMX"},
-	{0, 2255, 0, 3, 0, 0,  "seqDuel1",          "2255-Duel",              "2255-D~1.IMX"},
-	{0, 2256, 0, 2, 2, 0,  "seqDuel2",          "2255-Duel",              "2255-D~1.IMX"},
-	{0, 2257, 0, 2, 3, 0,  "seqDuel3",          "2255-Duel",              "2255-D~1.IMX"},
-	{0, 2260, 0, 3, 0, 0,  "seqBlowUpTree1",    "2260-Blow Up Tree",      "2260-B~1.IMX"},
-	{0, 2261, 0, 2, 2, 0,  "seqBlowUpTree2",    "2260-Blow Up Tree",      "2260-B~1.IMX"},
-	{0, 2275, 0, 3, 0, 0,  "seqMonkeys",        "2275-Monkeys",           "2275-M~1.IMX"},
-	{0, 2277, 0, 9, 1, 0,  "seqAttack",         "",                       ""},
-	{0, 2285, 0, 3, 0, 0,  "seqSharks",         "2285-Sharks",            "2285-S~1.IMX"},
-	{0, 2287, 0, 3, 0, 0,  "seqTowelWalk",      "2287-Towel Walk",        "2287-T~1.IMX"},
-	{0, 2293, 0, 0, 0, 0,  "seqNICE_BOOTS",     "",                       ""},
-	{0, 2295, 0, 0, 0, 0,  "seqBIG_BONED",      "",                       ""},
-	{0, 2300, 0, 3, 0, 0,  "seqToBlood",        "2300-To Blood",          "2300-T~1.IMX"},
-	{0, 2301, 0, 3, 0, 0,  "seqInterlude3",     "2301-Interlude3",        "2301-I~1.IMX"},
-	{0, 2302, 0, 3, 0, 0,  "seqRott1",          "2302-Rott Attack",       "2302-R~1.IMX"},
-	{0, 2304, 0, 2, 2, 0,  "seqRott2",          "2302-Rott Attack",       "2302-R~1.IMX"},
-	{0, 2305, 0, 2,21, 0,  "seqRott2b",         "2302-Rott Attack",       "2302-R~1.IMX"},
-	{0, 2306, 0, 2, 3, 0,  "seqRott3",          "2302-Rott Attack",       "2302-R~1.IMX"},
-	{0, 2308, 0, 2, 4, 0,  "seqRott4",          "2302-Rott Attack",       "2302-R~1.IMX"},
-	{0, 2309, 0, 2, 5, 0,  "seqRott5",          "2302-Rott Attack",       "2302-R~1.IMX"},
-	{0, 2311, 0, 3, 0, 0,  "seqVerse1",         "2311-Song",              "2311-S~1.IMX"},
-	{0, 2312, 0, 2, 2, 0,  "seqVerse2",         "2311-Song",              "2311-S~1.IMX"},
-	{0, 2313, 0, 2, 3, 0,  "seqVerse3",         "2311-Song",              "2311-S~1.IMX"},
-	{0, 2314, 0, 2, 4, 0,  "seqVerse4",         "2311-Song",              "2311-S~1.IMX"},
-	{0, 2315, 0, 2, 5, 0,  "seqVerse5",         "2311-Song",              "2311-S~1.IMX"},
-	{0, 2316, 0, 2, 6, 0,  "seqVerse6",         "2311-Song",              "2311-S~1.IMX"},
-	{0, 2317, 0, 2, 7, 0,  "seqVerse7",         "2311-Song",              "2311-S~1.IMX"},
-	{0, 2318, 0, 2, 8, 0,  "seqVerse8",         "2311-Song",              "2311-S~1.IMX"},
-	{0, 2319, 0, 2, 9, 0,  "seqSongEnd",        "2311-Song",              "2311-S~1.IMX"},
-	{0, 2336, 0, 2, 0, 0,  "seqRiposteLose",    "2336-Riposte Lose",      "2336-R~1.IMX"},
-	{0, 2337, 0, 2, 0, 0,  "seqRiposteWin",     "2337-Riposte Win",       "2337-R~1.IMX"},
-	{0, 2338, 0, 2, 0, 0,  "seqInsultLose",     "2338-Insult Lose",       "2338-I~1.IMX"},
-	{0, 2339, 0, 2, 0, 0,  "seqInsultWin",      "2339-Insult Win",        "2339-I~1.IMX"},
-	{0, 2340, 0, 3, 0, 0,  "seqSwordLose",      "1335-Sword Lose",        "1335-S~1.IMX"},
-	{0, 2345, 0, 3, 0, 0,  "seqSwordWin",       "1340-Sword Win",         "1340-S~1.IMX"},
-	{0, 2347, 0, 3, 0, 0,  "seqGetMap",         "1345-Get Map",           "1345-G~1.IMX"},
-	{0, 2400, 0, 3, 0, 0,  "seqInterlude4",     "2400-Interlude4",        "2400-I~1.IMX"},
-	{0, 2405, 0, 0, 0, 0,  "seqSHIPWRECK",      "",                       ""},
-	{0, 2408, 0, 3, 0, 0,  "seqFakeCredits",    "2408-Fake Credits",      "2408-F~1.IMX"},
-	{0, 2410, 0, 3, 0, 0,  "seqPassOut",        "2410-Pass Out",          "2410-P~1.IMX"},
-	{0, 2414, 0, 3, 0, 0,  "seqGhostTalk",      "2414-Ghost Talk",        "2414-G~1.IMX"},
-	{0, 2415, 0, 2, 1, 0,  "seqGhostWedding",   "2414-Ghost Talk",        "2414-G~1.IMX"},
-	{0, 2420, 0, 3, 0, 0,  "seqEruption",       "2420-Eruption",          "2420-E~1.IMX"},
-	{0, 2425, 0, 3, 0, 0,  "seqSacrifice",      "2425-Sacrifice",         "2425-S~1.IMX"},
-	{0, 2426, 0, 2, 1, 0,  "seqSacrificeEnd",   "2425-Sacrifice",         "2425-S~1.IMX"},
-	{0, 2430, 0, 3, 0, 0,  "seqScareDigger",    "2430-Scare Digger",      "2430-S~1.IMX"},
-	{0, 2445, 0, 3, 0, 0,  "seqSkullArrive",    "2445-Skull Arrive",      "2445-S~1.IMX"},
-	{0, 2450, 0, 3, 0, 0,  "seqFloat",          "2450-Cliff Fall",        "2450-C~1.IMX"},
-	{0, 2451, 0, 2, 1, 0,  "seqFall",           "2450-Cliff Fall",        "2450-C~1.IMX"},
-	{0, 2452, 0, 2, 2, 0,  "seqUmbrella",       "2450-Cliff Fall",        "2450-C~1.IMX"},
-	{0, 2460, 0, 3, 0, 0,  "seqFight",          "2460-Fight",             "2460-F~1.IMX"},
-	{0, 2465, 0, 0, 0, 0,  "seqLAVE_RIDE",      "",                       ""},
-	{0, 2470, 0, 0, 0, 0,  "seqMORE_SLAW",      "",                       ""},
-	{0, 2475, 0, 0, 0, 0,  "seqLIFT_CURSE",     "",                       ""},
-	{0, 2500, 0, 3, 0, 0,  "seqInterlude5",     "2500-Interlude5",        "2500-I~1.IMX"},
-	{0, 2502, 0, 3, 0, 0,  "seqExitSkycar",     "2502-Exit Skycar",       "2502-E~1.IMX"},
-	{0, 2504, 0, 3, 0, 0,  "seqGrow1",          "2504-Grow",              "2504-G~1.IMX"},
-	{0, 2505, 0, 2, 1, 0,  "seqGrow2",          "2504-Grow",              "2504-G~1.IMX"},
-	{0, 2508, 0, 3, 0, 0,  "seqInterlude6",     "2508-Interlude6",        "2508-I~1.IMX"},
-	{0, 2515, 0, 0, 0, 0,  "seqFINALE",         "",                       ""},
-	{0, 2520, 0, 3, 0, 0,  "seqOut",            "2520-Out",               "2520-OUT.IMX"},
-	{0, 2530, 0, 3, 0, 0,  "seqZap1a",          "2530-Zap1",              "2530-Z~1.IMX"},
-	{0, 2531, 0, 2, 1, 0,  "seqZap1b",          "2530-Zap1",              "2530-Z~1.IMX"},
-	{0, 2532, 0, 2, 2, 0,  "seqZap1c",          "2530-Zap1",              "2530-Z~1.IMX"},
-	{0, 2540, 0, 3, 0, 0,  "seqZap2a",          "2540-Zap2",              "2540-Z~1.IMX"},
-	{0, 2541, 0, 2, 1, 0,  "seqZap2b",          "2540-Zap2",              "2540-Z~1.IMX"},
-	{0, 2542, 0, 2, 2, 0,  "seqZap2c",          "2540-Zap2",              "2540-Z~1.IMX"},
-	{0, 2550, 0, 3, 0, 0,  "seqZap3a",          "2550-Zap3",              "2550-Z~1.IMX"},
-	{0, 2551, 0, 2, 1, 0,  "seqZap3b",          "2550-Zap3",              "2550-Z~1.IMX"},
-	{0, 2552, 0, 2, 2, 0,  "seqZap3c",          "2550-Zap3",              "2550-Z~1.IMX"},
-	{0, 2560, 0, 3, 0, 0,  "seqZap4a",          "2560-Zap4",              "2560-Z~1.IMX"},
-	{0, 2561, 0, 2, 1, 0,  "seqZap4b",          "2560-Zap4",              "2560-Z~1.IMX"},
-	{0, 2562, 0, 2, 2, 0,  "seqZap4c",          "2560-Zap4",              "2560-Z~1.IMX"},
-	{-1, -1,  0, 0, 0, 0,  "",                  "",                       ""}
+const imuseComiTable _comiSeqMusicTable[] = {
+	{"",                   0, 2000, "SEQ_NULL",        0, 0, 0, ""},
+	{"",                   0, 2100, "seqINTRO",        0, 0, 0, ""},
+	{"2105-Interlude1",    3, 2105, "seqInterlude1",   0, 0, 0, "2105-I~1.IMX"},
+	{"",                   8, 2110, "seqLastBoat",     0, 1, 0, ""},
+	{"",                   0, 2115, "seqSINK_SHIP",    0, 0, 0, ""},
+	{"",                   0, 2120, "seqCURSED_RING",  0, 0, 0, ""},
+	{"2200-Interlude2",    3, 2200, "seqInterlude2",   0, 0, 0, "2200-I~1.IMX"},
+	{"2210-Kidnapped",     3, 2210, "seqKidnapped",    0, 0, 0, "2210-K~1.IMX"},
+	{"",                   8, 2220, "seqSnakeVomits",  0, 1, 0, ""},
+	{"",                   8, 2222, "seqPopBalloon",   0, 1, 0, ""},
+	{"2225-Drop Balls",    3, 2225, "seqDropBalls",    0, 0, 0, "2225-D~1.IMX"},
+	{"2232-Arrive Barber", 4, 2232, "seqArriveBarber", 0, 0, 0, "2232-A~1.IMX"},
+	{"2233-Atonal",        3, 2233, "seqAtonal",       0, 0, 0, "2233-A~1.IMX"},
+	{"2235-Shave Head",    3, 2235, "seqShaveHead1",   0, 0, 0, "2235-S~1.IMX"},
+	{"2235-Shave Head",    2, 2236, "seqShaveHead2",   0, 2, 0, "2235-S~1.IMX"},
+	{"2245-Caber Lose",    3, 2245, "seqCaberLose",    0, 0, 0, "2245-C~1.IMX"},
+	{"2250-Caber Win",     3, 2250, "seqCaberWin",     0, 0, 0, "2250-C~1.IMX"},
+	{"2255-Duel",          3, 2255, "seqDuel1",        0, 0, 0, "2255-D~1.IMX"},
+	{"2255-Duel",          2, 2256, "seqDuel2",        0, 2, 0, "2255-D~1.IMX"},
+	{"2255-Duel",          2, 2257, "seqDuel3",        0, 3, 0, "2255-D~1.IMX"},
+	{"2260-Blow Up Tree",  3, 2260, "seqBlowUpTree1",  0, 0, 0, "2260-B~1.IMX"},
+	{"2260-Blow Up Tree",  2, 2261, "seqBlowUpTree2",  0, 2, 0, "2260-B~1.IMX"},
+	{"2275-Monkeys",       3, 2275, "seqMonkeys",      0, 0, 0, "2275-M~1.IMX"},
+	{"",                   9, 2277, "seqAttack",       0, 1, 0, ""},
+	{"2285-Sharks",        3, 2285, "seqSharks",       0, 0, 0, "2285-S~1.IMX"},
+	{"2287-Towel Walk",    3, 2287, "seqTowelWalk",    0, 0, 0, "2287-T~1.IMX"},
+	{"",                   0, 2293, "seqNICE_BOOTS",   0, 0, 0, ""},
+	{"",                   0, 2295, "seqBIG_BONED",    0, 0, 0, ""},
+	{"2300-To Blood",      3, 2300, "seqToBlood",      0, 0, 0, "2300-T~1.IMX"},
+	{"2301-Interlude3",    3, 2301, "seqInterlude3",   0, 0, 0, "2301-I~1.IMX"},
+	{"2302-Rott Attack",   3, 2302, "seqRott1",        0, 0, 0, "2302-R~1.IMX"},
+	{"2302-Rott Attack",   2, 2304, "seqRott2",        0, 2, 0, "2302-R~1.IMX"},
+	{"2302-Rott Attack",   2, 2305, "seqRott2b",       0,21, 0, "2302-R~1.IMX"},
+	{"2302-Rott Attack",   2, 2306, "seqRott3",        0, 3, 0, "2302-R~1.IMX"},
+	{"2302-Rott Attack",   2, 2308, "seqRott4",        0, 4, 0, "2302-R~1.IMX"},
+	{"2302-Rott Attack",   2, 2309, "seqRott5",        0, 5, 0, "2302-R~1.IMX"},
+	{"2311-Song",          3, 2311, "seqVerse1",       0, 0, 0, "2311-S~1.IMX"},
+	{"2311-Song",          2, 2312, "seqVerse2",       0, 2, 0, "2311-S~1.IMX"},
+	{"2311-Song",          2, 2313, "seqVerse3",       0, 3, 0, "2311-S~1.IMX"},
+	{"2311-Song",          2, 2314, "seqVerse4",       0, 4, 0, "2311-S~1.IMX"},
+	{"2311-Song",          2, 2315, "seqVerse5",       0, 5, 0, "2311-S~1.IMX"},
+	{"2311-Song",          2, 2316, "seqVerse6",       0, 6, 0, "2311-S~1.IMX"},
+	{"2311-Song",          2, 2317, "seqVerse7",       0, 7, 0, "2311-S~1.IMX"},
+	{"2311-Song",          2, 2318, "seqVerse8",       0, 8, 0, "2311-S~1.IMX"},
+	{"2311-Song",          2, 2319, "seqSongEnd",      0, 9, 0, "2311-S~1.IMX"},
+	{"2336-Riposte Lose",  2, 2336, "seqRiposteLose",  0, 0, 0, "2336-R~1.IMX"},
+	{"2337-Riposte Win",   2, 2337, "seqRiposteWin",   0, 0, 0, "2337-R~1.IMX"},
+	{"2338-Insult Lose",   2, 2338, "seqInsultLose",   0, 0, 0, "2338-I~1.IMX"},
+	{"2339-Insult Win",    2, 2339, "seqInsultWin",    0, 0, 0, "2339-I~1.IMX"},
+	{"1335-Sword Lose",    3, 2340, "seqSwordLose",    0, 0, 0, "1335-S~1.IMX"},
+	{"1340-Sword Win",     3, 2345, "seqSwordWin",     0, 0, 0, "1340-S~1.IMX"},
+	{"1345-Get Map",       3, 2347, "seqGetMap",       0, 0, 0, "1345-G~1.IMX"},
+	{"2400-Interlude4",    3, 2400, "seqInterlude4",   0, 0, 0, "2400-I~1.IMX"},
+	{"",                   0, 2405, "seqSHIPWRECK",    0, 0, 0, ""},
+	{"2408-Fake Credits",  3, 2408, "seqFakeCredits",  0, 0, 0, "2408-F~1.IMX"},
+	{"2410-Pass Out",      3, 2410, "seqPassOut",      0, 0, 0, "2410-P~1.IMX"},
+	{"2414-Ghost Talk",    3, 2414, "seqGhostTalk",    0, 0, 0, "2414-G~1.IMX"},
+	{"2414-Ghost Talk",    2, 2415, "seqGhostWedding", 0, 1, 0, "2414-G~1.IMX"},
+	{"2420-Eruption",      3, 2420, "seqEruption",     0, 0, 0, "2420-E~1.IMX"},
+	{"2425-Sacrifice",     3, 2425, "seqSacrifice",    0, 0, 0, "2425-S~1.IMX"},
+	{"2425-Sacrifice",     2, 2426, "seqSacrificeEnd", 0, 1, 0, "2425-S~1.IMX"},
+	{"2430-Scare Digger",  3, 2430, "seqScareDigger",  0, 0, 0, "2430-S~1.IMX"},
+	{"2445-Skull Arrive",  3, 2445, "seqSkullArrive",  0, 0, 0, "2445-S~1.IMX"},
+	{"2450-Cliff Fall",    3, 2450, "seqFloat",        0, 0, 0, "2450-C~1.IMX"},
+	{"2450-Cliff Fall",    2, 2451, "seqFall",         0, 1, 0, "2450-C~1.IMX"},
+	{"2450-Cliff Fall",    2, 2452, "seqUmbrella",     0, 0, 0, "2450-C~1.IMX"},
+	{"2460-Fight",         3, 2460, "seqFight",        0, 0, 0, "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, ""},
+	{"2500-Interlude5",    3, 2500, "seqInterlude5",   0, 0, 0, "2500-I~1.IMX"},
+	{"2502-Exit Skycar",   3, 2502, "seqExitSkycar",   0, 0, 0, "2502-E~1.IMX"},
+	{"2504-Grow",          3, 2504, "seqGrow1",        0, 0, 0, "2504-G~1.IMX"},
+	{"2504-Grow",          2, 2505, "seqGrow2",        0, 1, 0, "2504-G~1.IMX"},
+	{"2508-Interlude6",    3, 2508, "seqInterlude6",   0, 0, 0, "2508-I~1.IMX"},
+	{"",                   0, 2515, "seqFINALE",       0, 0, 0, ""},
+	{"2520-Out",           3, 2520, "seqOut",          0, 0, 0, "2520-OUT.IMX"},
+	{"2530-Zap1",          3, 2530, "seqZap1a",        0, 0, 0, "2530-Z~1.IMX"},
+	{"2530-Zap1",          2, 2531, "seqZap1b",        0, 1, 0, "2530-Z~1.IMX"},
+	{"2530-Zap1",          2, 2532, "seqZap1c",        0, 2, 0, "2530-Z~1.IMX"},
+	{"2540-Zap2",          2, 2540, "seqZap2a",        0, 0, 0, "2540-Z~1.IMX"},
+	{"2540-Zap2",          2, 2541, "seqZap2b",        0, 1, 0, "2540-Z~1.IMX"},
+	{"2540-Zap2",          2, 2542, "seqZap2c",        0, 2, 0, "2540-Z~1.IMX"},
+	{"2550-Zap3",          3, 2550, "seqZap3a",        0, 0, 0, "2550-Z~1.IMX"},
+	{"2550-Zap3",          2, 2551, "seqZap3b",        0, 1, 0, "2550-Z~1.IMX"},
+	{"2550-Zap3",          2, 2552, "seqZap3c",        0, 2, 0, "2550-Z~1.IMX"},
+	{"2560-Zap4",          3, 2560, "seqZap4a",        0, 0, 0, "2560-Z~1.IMX"},
+	{"2560-Zap4",          2, 2561, "seqZap4b",        0, 1, 0, "2560-Z~1.IMX"},
+	{"2560-Zap4",          2, 2562, "seqZap4c",        0, 2, 0, "2560-Z~1.IMX"},
+	{"",                   0,   -1, "",                0, 0, 0, ""}
 };
 
 const imuseFtStateTable _ftStateMusicTable[] = {





More information about the Scummvm-git-logs mailing list