diff options
Diffstat (limited to 'scumm/imuse_digi')
-rw-r--r-- | scumm/imuse_digi/dimuse.cpp | 93 | ||||
-rw-r--r-- | scumm/imuse_digi/dimuse.h | 51 | ||||
-rw-r--r-- | scumm/imuse_digi/dimuse_music.cpp | 140 | ||||
-rw-r--r-- | scumm/imuse_digi/dimuse_tables.cpp | 577 |
4 files changed, 532 insertions, 329 deletions
diff --git a/scumm/imuse_digi/dimuse.cpp b/scumm/imuse_digi/dimuse.cpp index e41e5197e8..2c1f2f10d5 100644 --- a/scumm/imuse_digi/dimuse.cpp +++ b/scumm/imuse_digi/dimuse.cpp @@ -33,7 +33,7 @@ namespace Scumm { IMuseDigital::Track::Track() - : idSound(-1), used(false), stream(NULL) { + : soundId(-1), used(false), stream(NULL) { } void IMuseDigital::timer_handler(void *refCon) { @@ -46,12 +46,16 @@ IMuseDigital::IMuseDigital(ScummEngine *scumm) _pause = false; _sound = new ImuseDigiSndMgr(_vm); _vm->_timer->installTimerProc(timer_handler, 1000000 / 25, this); - _curMusicId = -1; + _curMusicState = 0; + _curMusicSeq = 0; + _curMusicCue = 0; + + _curMusicSoundId = -1; } IMuseDigital::~IMuseDigital() { _vm->_timer->removeTimerProc(timer_handler); - stopAllSounds(); + stopAllSounds(true); delete _sound; } @@ -65,7 +69,7 @@ void IMuseDigital::callback() { if (_track[l].used) { if (_track[l].stream2) { if (!_track[l].handle.isActive() && _track[l].started) { - debug(5, "IMuseDigital::callback(): stoped sound: %d", _track[l].idSound); + debug(5, "IMuseDigital::callback(): stoped sound: %d", _track[l].soundId); delete _track[l].stream2; _track[l].stream2 = NULL; _track[l].used = false; @@ -73,7 +77,7 @@ void IMuseDigital::callback() { } } else if (_track[l].stream) { if ((!_track[l].locked) && (_track[l].toBeRemoved)) { - debug(5, "IMuseDigital::callback(): stoped sound: %d", _track[l].idSound); + debug(5, "IMuseDigital::callback(): stoped sound: %d", _track[l].soundId); if (_track[l].stream) _track[l].stream->finish(); _track[l].stream = NULL; @@ -104,7 +108,7 @@ void IMuseDigital::callback() { } } } - debug(5, "Fade: sound(%d), Vol(%d)", _track[l].idSound, _track[l].vol / 1000); + debug(5, "Fade: sound(%d), Vol(%d)", _track[l].soundId, _track[l].vol / 1000); } int pan = (_track[l].pan != 64) ? 2 * _track[l].pan - 127 : 0; @@ -217,11 +221,11 @@ void IMuseDigital::switchToNextRegion(int track) { if (region != -1) { _track[track].curRegion = region; _track[track].curHookId = 0; - debug(5, "switchToNextRegion-sound(%d) jump to %d region", _track[track].idSound, _track[track].curRegion); + 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].idSound, _track[track].curRegion); + debug(5, "switchToNextRegion-sound(%d) select %d region", _track[track].soundId, _track[track].curRegion); _track[track].regionOffset = 0; } @@ -237,7 +241,7 @@ void IMuseDigital::startSound(int soundId, const char *soundName, int soundType, _track[l].volFadeStep = 0; _track[l].volFadeDelay = 0; _track[l].volFadeUsed = false; - _track[l].idSound = soundId; + _track[l].soundId = soundId; _track[l].started = false; _track[l].soundGroup = soundGroup; _track[l].curHookId = 0; @@ -292,10 +296,8 @@ void IMuseDigital::startSound(int soundId, const char *soundName, int soundType, _vm->_mixer->playInputStream(&_track[l].handle, _track[l].stream, true, _track[l].vol / 1000, _track[l].pan, -1); } - if (soundGroup == IMUSE_MUSIC) { - stopMusic(); - _curMusicId = soundId; - } + if ((_track[l].soundGroup == IMUSE_MUSIC) && (_vm->_gameId != GID_FT)) + _curMusicSoundId = soundId; _track[l].locked = false; _track[l].used = true; @@ -309,21 +311,20 @@ void IMuseDigital::stopMusic() { debug(5, "IMuseDigital::stopMusic()"); for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) { _track[l].locked = true; - if ((_track[l].idSound == _curMusicId) && _track[l].used) { + if ((_track[l].soundId == _curMusicSoundId) && _track[l].used) { if (_track[l].stream) { _track[l].toBeRemoved = true; } } _track[l].locked = false; } - _curMusicId = -1; } void IMuseDigital::stopSound(int soundId) { debug(5, "IMuseDigital::stopSound(%d)", soundId); for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) { _track[l].locked = true; - if ((_track[l].idSound == soundId) && _track[l].used) { + if ((_track[l].soundId == soundId) && _track[l].used) { if (_track[l].stream) { _track[l].toBeRemoved = true; } @@ -346,7 +347,8 @@ void IMuseDigital::stopAllSounds(bool waitForStop) { } _track[l].locked = false; } - _curMusicId = -1; + + _curMusicSoundId = -1; if (waitForStop) { bool used; @@ -356,6 +358,7 @@ void IMuseDigital::stopAllSounds(bool waitForStop) { if (_track[l].used) used = true; } + g_system->delay_msecs(10); } while (used); } } @@ -376,7 +379,7 @@ void IMuseDigital::parseScriptCmds(int a, int b, int c, int d, int e, int f, int int sample = b; int sub_cmd = c; int chan = -1; - int l, r; + int l; if (!cmd) return; @@ -397,7 +400,7 @@ void IMuseDigital::parseScriptCmds(int a, int b, int c, int d, int e, int f, int debug(5, "ImuseSetParam (0x600), sample(%d), volume(%d)", sample, d); for (l = 0; l < MAX_DIGITAL_TRACKS; l++) { _track[l].locked = true; - if ((_track[l].idSound == sample) && _track[l].used) { + if ((_track[l].soundId == sample) && _track[l].used) { _track[l].vol = d * 1000; // if (_track[l].volFadeUsed) // _track[l].volFadeStep = (_track[l].volFadeDest - _track[l].vol) * 60 * 40 / (1000 * _track[chan].volFadeDelay); @@ -413,7 +416,7 @@ void IMuseDigital::parseScriptCmds(int a, int b, int c, int d, int e, int f, int debug(5, "ImuseSetParam (0x700), sample(%d), pan(%d)", sample, d); for (l = 0; l < MAX_DIGITAL_TRACKS; l++) { _track[l].locked = true; - if ((_track[l].idSound == sample) && _track[l].used) { + if ((_track[l].soundId == sample) && _track[l].used) { _track[l].pan = d; } _track[l].locked = false; @@ -438,7 +441,7 @@ void IMuseDigital::parseScriptCmds(int a, int b, int c, int d, int e, int f, int } for (l = 0; l < MAX_DIGITAL_TRACKS; l++) { _track[l].locked = true; - if ((_track[l].idSound == sample) && _track[l].used) { + if ((_track[l].soundId == sample) && _track[l].used) { _track[l].volFadeDelay = e; _track[l].volFadeDest = d * 1000; _track[l].volFadeStep = (_track[l].volFadeDest - _track[l].vol) * 60 * 40 / (1000 * e); @@ -516,18 +519,7 @@ void IMuseDigital::parseScriptCmds(int a, int b, int c, int d, int e, int f, int } } } else if (_vm->_gameId == GID_FT) { - if (b > 48) - return; - b--; - debug(5, "Play imuse music: %s, %s", _ftStateMusicTable[b].name, _ftStateMusicTable[b].audioname); - if (_ftStateMusicTable[b].audioname[0] != 0) { - for (r = 0; r < _vm->_numAudioNames; r++) { - if (strcmp(_ftStateMusicTable[b].audioname, &_vm->_audioNames[r * 9]) == 0) { - startMusic(r); - parseScriptCmds(12, r, 0x600, _ftStateMusicTable[b].volume, 0, 0, 0, 0); - } - } - } + setFtMusicState(b); } break; case 0x1001: // ImuseSetSequence @@ -553,23 +545,14 @@ void IMuseDigital::parseScriptCmds(int a, int b, int c, int d, int e, int f, int } } } else if (_vm->_gameId == GID_FT) { - if (b > 53) - return; - b--; - debug(5, "Play imuse sequence: %s, %s", _ftSeqMusicTable[b * 4].name, _ftSeqMusicTable[b * 4].audioname); - if (_ftSeqMusicTable[b * 4].audioname[0] != 0) { - for (r = 0; r < _vm->_numAudioNames; r++) { - if (strcmp(_ftStateMusicTable[b * 4].audioname, &_vm->_audioNames[r * 9]) == 0) { - startMusic(r); - parseScriptCmds(12, r, 0x600, _ftStateMusicTable[b * 4].volume, 0, 0, 0, 0); - } - } - } + setFtMusicSequence(b); } break; case 0x1002: // ImuseSetCuePoint debug(5, "ImuseSetCuePoint (%d)", b); - // TODO + if (_vm->_gameId == GID_FT) { + setFtMusicCuePoint(b); + } break; case 0x1003: // ImuseSetAttribute debug(5, "ImuseSetAttribute (%d, %d)", b, c); @@ -595,7 +578,7 @@ void IMuseDigital::parseScriptCmds(int a, int b, int c, int d, int e, int f, int int IMuseDigital::getSoundStatus(int sound) const { debug(5, "IMuseDigital::getSoundStatus(%d)", sound); for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) { - if ((_track[l].idSound == sound) && _track[l].used) { + if ((_track[l].soundId == sound) && _track[l].used) { return 1; } } @@ -611,7 +594,7 @@ void IMuseDigital::getLipSync(int soundId, int syncId, int32 msPos, int32 &width if (msPos < 65536) { for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) { _track[l].locked = true; - if ((_track[l].idSound == soundId) && _track[l].used) { + if ((_track[l].soundId == soundId) && _track[l].used) { _sound->getSyncSizeAndPtrById(_track[l].soundHandle, syncId, sync_size, &sync_ptr); if ((sync_size != 0) && (sync_ptr != NULL)) { sync_size /= 4; @@ -640,7 +623,7 @@ void IMuseDigital::getLipSync(int soundId, int syncId, int32 msPos, int32 &width int32 IMuseDigital::getPosInMs(int soundId) { for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) { _track[l].locked = true; - if ((_track[l].idSound == soundId) && _track[l].used) { + if ((_track[l].soundId == soundId) && _track[l].used) { int32 pos = 1000 * _track[l].trackOffset / _track[l].iteration; _track[l].locked = false; return pos; @@ -652,8 +635,8 @@ int32 IMuseDigital::getPosInMs(int soundId) { } int32 IMuseDigital::getCurMusicPosInMs() { - debug(5, "IMuseDigital::getCurMusicPosInMs(%d)", _curMusicId); - return getPosInMs(_curMusicId); + debug(5, "IMuseDigital::getCurMusicPosInMs(%d)", _curMusicSoundId); + return getPosInMs(_curMusicSoundId); } int32 IMuseDigital::getCurVoiceLipSyncWidth() { @@ -673,18 +656,18 @@ int32 IMuseDigital::getCurVoiceLipSyncHeight() { } int32 IMuseDigital::getCurMusicLipSyncWidth(int syncId) { - int32 msPos = getPosInMs(_curMusicId) + _vm->VAR(_vm->VAR_SYNC) + 50; + int32 msPos = getPosInMs(_curMusicSoundId) + _vm->VAR(_vm->VAR_SYNC) + 50; int32 width = 0, height = 0; - getLipSync(_curMusicId, syncId, msPos, width, height); + getLipSync(_curMusicSoundId, syncId, msPos, width, height); return width; } int32 IMuseDigital::getCurMusicLipSyncHeight(int syncId) { - int32 msPos = getPosInMs(_curMusicId) + _vm->VAR(_vm->VAR_SYNC) + 50; + int32 msPos = getPosInMs(_curMusicSoundId) + _vm->VAR(_vm->VAR_SYNC) + 50; int32 width = 0, height = 0; - getLipSync(_curMusicId, syncId, msPos, width, height); + getLipSync(_curMusicSoundId, syncId, msPos, width, height); return height; } diff --git a/scumm/imuse_digi/dimuse.h b/scumm/imuse_digi/dimuse.h index f1223bed7a..fb896e0429 100644 --- a/scumm/imuse_digi/dimuse.h +++ b/scumm/imuse_digi/dimuse.h @@ -46,7 +46,7 @@ private: int32 volFadeDelay; // bool volFadeUsed; // - int idSound; + int soundId; bool used; bool toBeRemoved; bool started; @@ -72,13 +72,29 @@ private: ScummEngine *_vm; ImuseDigiSndMgr *_sound; bool _pause; - int _curMusicId; + 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); + int32 getPosInMs(int soundId); + void getLipSync(int soundId, int syncId, int32 msPos, int32 &width, int32 &height); + + void stopMusic(); + + int getSoundIdByName(const char *soundName); + void fadeOutMusic(); + void setFtMusicState(int stateId); + void setFtMusicSequence(int seqId); + void setFtMusicCuePoint(int cueId); + void playFtMusic(const char *songName, int opcode, int volume); + public: IMuseDigital(ScummEngine *scumm); ~IMuseDigital(); @@ -99,15 +115,12 @@ public: { error("MusicEngine::startSound() Should be never called"); } void setMasterVolume(int vol) {} - void stopMusic(); void stopSound(int soundId); - void stopAllSounds(bool waitForStop); void stopAllSounds() { stopAllSounds(false); } + void stopAllSounds(bool waitForStop); void pause(bool pause); void parseScriptCmds(int a, int b, int c, int d, int e, int f, int g, int h); int getSoundStatus(int sound) const; - int32 getPosInMs(int soundId); - void getLipSync(int soundId, int syncId, int32 msPos, int32 &width, int32 &height); int32 getCurMusicPosInMs(); int32 getCurVoiceLipSyncWidth(); int32 getCurVoiceLipSyncHeight(); @@ -136,11 +149,21 @@ struct imuse_music_map { int unk4; }; -struct imuse_ft_music_table { - char audioname[15]; +struct imuseFtNames { + char name[20]; +}; + +struct imuseFtStateTable { + char audioName[9]; + int8 opcode; + int8 volume; + char name[21]; +}; + +struct imuseFtSeqTable { + char audioName[9]; int8 opcode; int8 volume; - char name[30]; }; #ifdef __PALM_OS__ @@ -149,16 +172,18 @@ 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 imuse_ft_music_table *_ftStateMusicTable; -extern const imuse_ft_music_table *_ftSeqMusicTable; +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 imuse_ft_music_table _ftStateMusicTable[]; -extern const imuse_ft_music_table _ftSeqMusicTable[]; +extern const imuseFtStateTable _ftStateMusicTable[]; +extern const imuseFtSeqTable _ftSeqMusicTable[]; +extern const imuseFtNames _ftSeqNames[]; #endif } // End of namespace Scumm diff --git a/scumm/imuse_digi/dimuse_music.cpp b/scumm/imuse_digi/dimuse_music.cpp new file mode 100644 index 0000000000..f4e3b48a0a --- /dev/null +++ b/scumm/imuse_digi/dimuse_music.cpp @@ -0,0 +1,140 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2001-2004 The ScummVM project + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Header$ + */ + +#include "stdafx.h" +#include "common/scummsys.h" +#include "scumm/scumm.h" +#include "scumm/imuse_digi/dimuse.h" + +namespace Scumm { + +void IMuseDigital::setFtMusicState(int stateId) { + if (stateId > 48) + return; + + debug(5, "State music: %s, %s", _ftStateMusicTable[stateId].name, _ftStateMusicTable[stateId].audioName); + + if (_curMusicState == stateId) + return; + + if (_curMusicSeq != 0) { + _curMusicState = stateId; + return; + } + + if (stateId == 0) + playFtMusic(NULL, 0, 0); + else + playFtMusic(_ftStateMusicTable[stateId].audioName, _ftStateMusicTable[stateId].opcode, _ftStateMusicTable[stateId].volume); + + _curMusicState = stateId; +} + +void IMuseDigital::setFtMusicSequence(int seqId) { + if (seqId > 53) + return; + + debug(5, "Sequence music: %s, %s", _ftSeqNames[seqId].name); + + if (_curMusicSeq == seqId) + return; + + if (seqId == 0) { + if (_curMusicState == 0) + playFtMusic(NULL, 0, 0); + else + playFtMusic(_ftStateMusicTable[seqId].audioName, _ftStateMusicTable[seqId].opcode, _ftStateMusicTable[seqId].volume); + } else { + int seq = (seqId - 1) * 4; + playFtMusic(_ftSeqMusicTable[seq].audioName, _ftSeqMusicTable[seq].opcode, _ftSeqMusicTable[seq].volume); + } + + _curMusicSeq = seqId; + _curMusicCue = 0; +} + +void IMuseDigital::setFtMusicCuePoint(int cueId) { + if (cueId > 3) + return; + + debug(5, "Cue point sequence: %d", cueId); + + if (_curMusicSeq == 0) + return; + + if (_curMusicCue == cueId) + return; + + if (cueId == 0) + playFtMusic(NULL, 0, 0); + else { + int seq = ((_curMusicSeq - 1) + cueId) * 4; + playFtMusic(_ftSeqMusicTable[seq].audioName, _ftSeqMusicTable[seq].opcode, _ftSeqMusicTable[seq].volume); + } + + _curMusicCue = cueId; +} + +int IMuseDigital::getSoundIdByName(const char *soundName) { + if (soundName && soundName[0] != 0) { + for (int r = 0; r < _vm->_numAudioNames; r++) { + if (strcmp(soundName, &_vm->_audioNames[r * 9]) == 0) { + return r; + } + } + } + + return -1; +} + +void IMuseDigital::fadeOutMusic() { + 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, 0x200, 0, 0, 0); + } + _track[l].locked = false; + } +} + +void IMuseDigital::playFtMusic(const char *songName, int opcode, int volume) { + fadeOutMusic(); + + switch(opcode) { + case 0: + case 4: + break; + case 1: + case 2: + case 3: + { + int soundId = getSoundIdByName(songName); + if (soundId != -1) { + startMusic(soundId); + parseScriptCmds(12, soundId, 0x600, volume, 0, 0, 0, 0); + } + } + break; + } +} + + +} // End of namespace Scumm diff --git a/scumm/imuse_digi/dimuse_tables.cpp b/scumm/imuse_digi/dimuse_tables.cpp index ea2be9e916..73b431f3bf 100644 --- a/scumm/imuse_digi/dimuse_tables.cpp +++ b/scumm/imuse_digi/dimuse_tables.cpp @@ -479,7 +479,7 @@ const imuse_music_table _comiSeqMusicTable[] = { {-1, -1, 0, 0, 0, 0, "", "", ""} }; -const imuse_ft_music_table _ftStateMusicTable[] = { +const imuseFtStateTable _ftStateMusicTable[] = { {"", 0, 0, "STATE_NULL" }, {"", 4, 127, "stateKstandOutside" }, {"kinside", 2, 127, "stateKstandInside" }, @@ -531,266 +531,321 @@ const imuse_ft_music_table _ftStateMusicTable[] = { {"", 4, 0, "stateCliffHanger2" }, }; -const imuse_ft_music_table _ftSeqMusicTable[] = { - {"", 2, 127, "SEQ_NULL" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"opening", 2, 127, "seqOpenFlick" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"barbeat", 2, 127, "seqBartender" }, - {"barwarn", 2, 127, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"benwakes", 2, 127, "seqBenWakes" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"barwarn", 2, 127, "seqPhotoScram" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"swatben", 2, 127, "seqClimbChain" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"dogattak", 2, 127, "seqDogChase" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"", 4, 0, "seqDogSquish" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"", 4, 0, "seqDogHoist" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"cops2", 2, 127, "seqCopsArrive" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"cops2", 2, 127, "seqCopsLand" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"cops2", 2, 127, "seqCopsLeave" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"", 0, 0, "seqCopterFlyby" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"bunymrch", 2, 127, "seqCopterCrash" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"", 4, 0, "seqMoGetsParts" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"", 0, 0, "seqMoFixesBike" }, - {"melcut", 2, 127, "" }, - {"tada", 2, 127, "" }, - {"", 0, 0, "" }, - - {"", 4, 0, "seqFirstGoodbye" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"trucker", 2, 127, "seqCopRoadblock" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"cops2", 2, 127, "seqDivertCops" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"barwarn", 2, 127, "seqMurder" }, - {"murder", 2, 127, "" }, - {"murder2", 2, 127, "" }, - {"", 0, 0, "" }, - - {"corldie", 2, 127, "seqCorleyDies" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"barwarn", 2, 127, "seqTooLateAtMoes" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"picture", 2, 127, "seqPicture" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"ripintro", 2, 127, "seqNewsReel" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"trucker", 2, 127, "seqCopsInspect" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"hosed", 2, 127, "" }, - - {"ripdead", 2, 127, "seqHijack" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"nesranch", 2, 127, "seqNestolusAtRanch" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"scolding", 2, 127, "seqRipLimo" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"desert", 2, 127, "seqGorgeTurn" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"cavecut1", 2, 127, "seqStealRamp" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"caveamb", 2, 80, "seqCavefishTalk" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"castle", 2, 127, "seqArriveCorville" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"bunymrch", 2, 105, "seqSingleBunny" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"valkyrs", 2, 127, "seqBunnyArmy" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"melcut", 2, 127, "seqArriveAtMines" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"veltures", 2, 127, "seqArriveAtVultures" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"sorry", 2, 127, "seqMakePlan" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"makeplan", 2, 127, "seqShowPlan" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"castle", 2, 127, "seqDerbyStart" }, - {"derby", 2, 127, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"fire", 3, 127, "seqLightBales" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"saveme", 3, 127, "seqNestolusBBQ" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"scolding", 2, 127, "" }, - - {"cops2", 2, 127, "seqCallSecurity" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"sorry", 2, 127, "seqFilmFail" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"sorry", 2, 127, "seqFilmBurn" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"caveamb", 2, 85, "seqRipSpeech" }, - {"tada", 2, 127, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"expose", 2, 127, "seqExposeRip" }, - {"", 4, 0, "" }, - {"", 0, 0, "" }, - {"mocoup", 2, 127, "" }, - - {"ripscram", 2, 127, "seqRipEscape" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"", 2, 127, "seqRareMoment" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"valkyrs", 2, 127, "seqFanBunnies" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"ripdead", 2, 127, "seqRipDead" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - {"", 0, 0, "" }, - - {"funeral", 2, 127, "seqFuneral" }, - {"", 2, 127, "" }, - {"moshop", 3, 64, "" }, - {"", 0, 0, "" }, - - {"bornbad", 2, 127, "seqCredits" }, - {"hammvox", 2, 127, "" }, - {"legavox", 2, 127, "" }, - {"chances", 2, 90, "" }, +const imuseFtNames _ftSeqNames[] = { + {"SEQ_NULL" }, + {"seqLogo" }, + {"seqOpenFlick" }, + {"seqBartender" }, + {"seqBenWakes" }, + {"seqPhotoScram" }, + {"seqClimbChain" }, + {"seqDogChase" }, + {"seqDogSquish" }, + {"seqDogHoist" }, + {"seqCopsArrive" }, + {"seqCopsLand" }, + {"seqCopsLeave" }, + {"seqCopterFlyby" }, + {"seqCopterCrash" }, + {"seqMoGetsParts" }, + {"seqMoFixesBike" }, + {"seqFirstGoodbye" }, + {"seqCopRoadblock" }, + {"seqDivertCops" }, + {"seqMurder" }, + {"seqCorleyDies" }, + {"seqTooLateAtMoes" }, + {"seqPicture" }, + {"seqNewsReel" }, + {"seqCopsInspect" }, + {"seqHijack" }, + {"seqNestolusAtRanch" }, + {"seqRipLimo" }, + {"seqGorgeTurn" }, + {"seqCavefishTalk" }, + {"seqArriveCorville" }, + {"seqSingleBunny" }, + {"seqBunnyArmy" }, + {"seqArriveAtMines" }, + {"seqArriveAtVultures"}, + {"seqMakePlan" }, + {"seqShowPlan" }, + {"seqDerbyStart" }, + {"seqLightBales" }, + {"seqNestolusBBQ" }, + {"seqCallSecurity" }, + {"seqFilmFail" }, + {"seqFilmBurn" }, + {"seqRipSpeech" }, + {"seqExposeRip" }, + {"seqRipEscape" }, + {"seqRareMoment" }, + {"seqFanBunnies" }, + {"seqRipDead" }, + {"seqFuneral" }, + {"seqCredits" } +}; + +const imuseFtSeqTable _ftSeqMusicTable[] = { + {"", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"opening", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"barbeat", 2, 127}, + {"barwarn", 2, 127}, + {"", 0, 0 }, + {"", 0, 0, }, + + {"benwakes", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"barwarn", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"swatben", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"dogattak", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"", 4, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"", 4, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"cops2", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"cops2", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"cops2", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"bunymrch", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"", 4, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"", 0, 0 }, + {"melcut", 2, 127}, + {"tada", 2, 127}, + {"", 0, 0 }, + + {"", 4, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"trucker", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"cops2", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"barwarn", 2, 127}, + {"murder", 2, 127}, + {"murder2", 2, 127}, + {"", 0, 0 }, + + {"corldie", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"barwarn", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"picture", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"ripintro", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"trucker", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"hosed", 2, 127}, + + {"ripdead", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"nesranch", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"scolding", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"desert", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"cavecut1", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"caveamb", 2, 80 }, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"castle", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"bunymrch", 2, 105}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"valkyrs", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"melcut", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"veltures", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"sorry", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"makeplan", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"castle", 2, 127}, + {"derby", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + + {"fire", 3, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"saveme", 3, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"scolding", 2, 127}, + + {"cops2", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"sorry", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"sorry", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"caveamb", 2, 85 }, + {"tada", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + + {"expose", 2, 127}, + {"", 4, 0 }, + {"", 0, 0 }, + {"mocoup", 2, 127}, + + {"ripscram", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"valkyrs", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"ripdead", 2, 127}, + {"", 0, 0 }, + {"", 0, 0 }, + {"", 0, 0 }, + + {"funeral", 2, 127}, + {"", 2, 127}, + {"moshop", 3, 64 }, + {"", 0, 0 }, + + {"bornbad", 2, 127}, + {"hammvox", 2, 127}, + {"legavox", 2, 127}, + {"chances", 2, 90 }, }; #endif |