aboutsummaryrefslogtreecommitdiff
path: root/scumm/bundle.cpp
diff options
context:
space:
mode:
authorJames Brown2002-12-27 11:47:00 +0000
committerJames Brown2002-12-27 11:47:00 +0000
commitd3ade5b23e253c006eb5deca143a02e502e2cd7c (patch)
tree14c9d75698cca6783301a3a202a74f50a760eebc /scumm/bundle.cpp
parent56b6b10301f56a06d0e5d84df5a952b7581f06dc (diff)
downloadscummvm-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.cpp35
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;
}