diff options
author | James Brown | 2002-12-27 11:47:00 +0000 |
---|---|---|
committer | James Brown | 2002-12-27 11:47:00 +0000 |
commit | d3ade5b23e253c006eb5deca143a02e502e2cd7c (patch) | |
tree | 14c9d75698cca6783301a3a202a74f50a760eebc /scumm/bundle.cpp | |
parent | 56b6b10301f56a06d0e5d84df5a952b7581f06dc (diff) | |
download | scummvm-rg350-d3ade5b23e253c006eb5deca143a02e502e2cd7c.tar.gz scummvm-rg350-d3ade5b23e253c006eb5deca143a02e502e2cd7c.tar.bz2 scummvm-rg350-d3ade5b23e253c006eb5deca143a02e502e2cd7c.zip |
Add skeleton music support for CMI (but codec not implemented)
svn-id: r6193
Diffstat (limited to 'scumm/bundle.cpp')
-rw-r--r-- | scumm/bundle.cpp | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/scumm/bundle.cpp b/scumm/bundle.cpp index 72a5238108..4ee3bde054 100644 --- a/scumm/bundle.cpp +++ b/scumm/bundle.cpp @@ -221,7 +221,7 @@ int32 Bundle::decompressVoiceSampleByName(char *name, byte *comp_final) { return final_size; } -int32 Bundle::decompressMusicSampleByName(char *name, int32 number, byte *comp_final) { +int32 Bundle::decompressMusicSampleByName(char *name, int32 number, byte *comp_final, bool fuzzy=false) { int32 final_size = 0, i; if (!name) { @@ -235,11 +235,18 @@ int32 Bundle::decompressMusicSampleByName(char *name, int32 number, byte *comp_f } for (i = 0; i < _numMusicFiles; i++) { - if (!scumm_stricmp(name, _bundleMusicTable[i].filename)) { - final_size = decompressMusicSampleByIndex(i, number, comp_final); - return final_size; - } + if (fuzzy) // Fuzzy matching, only look at the first part of the song + if (strstr(_bundleMusicTable[i].filename, name) == _bundleMusicTable[i].filename) { + final_size = decompressMusicSampleByIndex(i, number, comp_final); + return final_size; + } + else + if (!scumm_stricmp(name, _bundleMusicTable[i].filename)) { + final_size = decompressMusicSampleByIndex(i, number, comp_final); + return final_size; + } } + printf("Couldn't find sample %s\n", name); return final_size; } @@ -254,7 +261,7 @@ int32 Bundle::getNumberOfMusicSamplesByIndex(int32 index) { return _musicFile.readUint32BE(); } -int32 Bundle::getNumberOfMusicSamplesByName(char *name) { +int32 Bundle::getNumberOfMusicSamplesByName(char *name, bool fuzzy = false) { int32 number = 0, i; if (_musicFile.isOpen() == false) { @@ -263,11 +270,19 @@ int32 Bundle::getNumberOfMusicSamplesByName(char *name) { } for (i = 0; i < _numMusicFiles; i++) { - if (!scumm_stricmp(name, _bundleMusicTable[i].filename)) { - number = getNumberOfMusicSamplesByIndex(i); - return number; - } + if (fuzzy) // Fuzzy matching, only look at the first part of the song + if (strstr(_bundleMusicTable[i].filename, name) == _bundleMusicTable[i].filename) { + number = getNumberOfMusicSamplesByIndex(i); + return number; + } + else + if (!scumm_stricmp(name, _bundleMusicTable[i].filename)) { + number = getNumberOfMusicSamplesByIndex(i); + return number; + } + } + printf("Couldn't find numsample %s\n", name); return number; } |