aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Hoops2010-07-18 01:32:48 +0000
committerMatthew Hoops2010-07-18 01:32:48 +0000
commit88b2bec07239b2babc7041b1361873fd331ad838 (patch)
treeee3eeb09b132da345e48d973290f362f5c532570
parent4b66b8dd5f73702fb71cda6cc3d7b6f969d242e8 (diff)
downloadscummvm-rg350-88b2bec07239b2babc7041b1361873fd331ad838.tar.gz
scummvm-rg350-88b2bec07239b2babc7041b1361873fd331ad838.tar.bz2
scummvm-rg350-88b2bec07239b2babc7041b1361873fd331ad838.zip
Cleanup and simplify resource type remapping.
svn-id: r50975
-rw-r--r--engines/sci/resource.cpp81
1 files changed, 19 insertions, 62 deletions
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp
index f3c52e6760..127236650f 100644
--- a/engines/sci/resource.cpp
+++ b/engines/sci/resource.cpp
@@ -133,87 +133,44 @@ const char *getResourceTypeName(ResourceType restype) {
return "invalid";
}
-struct ResTypeMap {
- byte sciType;
- ResourceType type;
-};
-
-static const ResTypeMap s_resTypeMapSci0[] = {
- { 0, kResourceTypeView },
- { 1, kResourceTypePic },
- { 2, kResourceTypeScript },
- { 3, kResourceTypeText },
- { 4, kResourceTypeSound },
- { 5, kResourceTypeMemory },
- { 6, kResourceTypeVocab },
- { 7, kResourceTypeFont },
- { 8, kResourceTypeCursor },
- { 9, kResourceTypePatch },
- { 10, kResourceTypeBitmap },
- { 11, kResourceTypePalette },
- { 12, kResourceTypeCdAudio },
- { 13, kResourceTypeAudio },
- { 14, kResourceTypeSync },
- { 15, kResourceTypeMessage },
- { 16, kResourceTypeMap },
- { 17, kResourceTypeHeap },
- { 18, kResourceTypeAudio36 },
- { 19, kResourceTypeSync36 },
- { 20, kResourceTypeTranslation },
+static const ResourceType s_resTypeMapSci0[] = {
+ kResourceTypeView, kResourceTypePic, kResourceTypeScript, kResourceTypeText, // 0x00-0x03
+ kResourceTypeSound, kResourceTypeMemory, kResourceTypeVocab, kResourceTypeFont, // 0x04-0x07
+ kResourceTypeCursor, kResourceTypePatch, kResourceTypeBitmap, kResourceTypePalette, // 0x08-0x0B
+ kResourceTypeCdAudio, kResourceTypeAudio, kResourceTypeSync, kResourceTypeMessage, // 0x0C-0x0F
+ kResourceTypeMap, kResourceTypeHeap, kResourceTypeAudio36, kResourceTypeSync36, // 0x10-0x13
+ kResourceTypeTranslation // 0x14
};
#ifdef ENABLE_SCI32
-static const ResTypeMap s_resTypeMapSci21[] = {
- { 0, kResourceTypeView },
- { 1, kResourceTypePic },
- { 2, kResourceTypeScript },
- { 3, kResourceTypeText },
- { 4, kResourceTypeSound },
- { 5, kResourceTypeMemory },
- { 6, kResourceTypeVocab },
- { 7, kResourceTypeFont },
- { 8, kResourceTypeCursor },
- { 9, kResourceTypePatch },
- { 10, kResourceTypeBitmap },
- { 11, kResourceTypePalette },
- // 12 is Wave, but SCI seems to just store it in Audio resources
- { 13, kResourceTypeAudio },
- { 14, kResourceTypeSync },
- { 15, kResourceTypeMessage },
- { 16, kResourceTypeMap },
- { 17, kResourceTypeHeap },
- { 18, kResourceTypeChunk },
- { 19, kResourceTypeAudio36 },
- { 20, kResourceTypeSync36 },
- { 21, kResourceTypeTranslation },
- { 22, kResourceTypeRobot },
- { 23, kResourceTypeVMD }
+// TODO: 12 should be "Wave", but SCI seems to just store it in Audio resources
+static const ResourceType s_resTypeMapSci21[] = {
+ kResourceTypeView, kResourceTypePic, kResourceTypeScript, kResourceTypeText, // 0x00-0x03
+ kResourceTypeSound, kResourceTypeMemory, kResourceTypeVocab, kResourceTypeFont, // 0x04-0x07
+ kResourceTypeCursor, kResourceTypePatch, kResourceTypeBitmap, kResourceTypePalette, // 0x08-0x0B
+ kResourceTypeInvalid, kResourceTypeAudio, kResourceTypeSync, kResourceTypeMessage, // 0x0C-0x0F
+ kResourceTypeMap, kResourceTypeHeap, kResourceTypeChunk, kResourceTypeAudio36, // 0x10-0x13
+ kResourceTypeSync36, kResourceTypeTranslation, kResourceTypeRobot, kResourceTypeVMD // 0x14-0x17
};
#endif
ResourceType ResourceManager::convertResType(byte type) {
type &= 0x7f;
- uint32 tableSize = 0;
- const ResTypeMap *map = 0;
if (_mapVersion != kResVersionSci32) {
// SCI0 - SCI2
- tableSize = ARRAYSIZE(s_resTypeMapSci0);
- map = s_resTypeMapSci0;
+ if (type < ARRAYSIZE(s_resTypeMapSci0))
+ return s_resTypeMapSci0[type];
} else {
// SCI2.1+
#ifdef ENABLE_SCI32
- tableSize = ARRAYSIZE(s_resTypeMapSci21);
- map = s_resTypeMapSci21;
+ if (type < ARRAYSIZE(s_resTypeMapSci21))
+ return s_resTypeMapSci21[type];
#else
error("SCI32 support not compiled in");
#endif
}
- for (uint32 i = 0; i < tableSize; i++)
- if (map[i].sciType == type)
- return map[i].type;
-
return kResourceTypeInvalid;
}