[Scummvm-cvs-logs] SF.net SVN: scummvm:[49509] scummvm/trunk/engines/sci/resource.cpp
m_kiewitz at users.sourceforge.net
m_kiewitz at users.sourceforge.net
Tue Jun 8 17:08:45 CEST 2010
Revision: 49509
http://scummvm.svn.sourceforge.net/scummvm/?rev=49509&view=rev
Author: m_kiewitz
Date: 2010-06-08 15:08:45 +0000 (Tue, 08 Jun 2010)
Log Message:
-----------
SCI: use base36 sync/audio patches for sci1.1 as well and also check if patch filenames make sense, otherwise skip them - also remove hack for excluding bootdisk.* and aud*.drv
Modified Paths:
--------------
scummvm/trunk/engines/sci/resource.cpp
Modified: scummvm/trunk/engines/sci/resource.cpp
===================================================================
--- scummvm/trunk/engines/sci/resource.cpp 2010-06-08 13:38:47 UTC (rev 49508)
+++ scummvm/trunk/engines/sci/resource.cpp 2010-06-08 15:08:45 UTC (rev 49509)
@@ -620,11 +620,9 @@
switch (source->source_type) {
case kSourceDirectory:
readResourcePatches(source);
-#ifdef ENABLE_SCI32
// We can't use getSciVersion() at this point, thus using _volVersion
- if (_volVersion == kResVersionSci32) // SCI2+
+ if (_volVersion >= kResVersionSci11) // SCI1.1+
readResourcePatchesBase36(source);
-#endif
readWaveAudioPatches();
break;
case kSourceExtMap:
@@ -1180,10 +1178,6 @@
name = (*x)->getName();
inputName = (*x)->getName();
inputName.toUppercase();
- if (inputName.hasPrefix("BOOT")) // skip bootdisk.*
- continue;
- if (inputName.hasSuffix("DRV")) // skip AUD*.DRV
- continue;
inputName.deleteChar(0); // delete the first character (type)
inputName.deleteChar(7); // delete the dot
@@ -1191,24 +1185,27 @@
// The base36 encoded resource contains the following:
// uint16 resourceId, byte noun, byte verb, byte cond, byte seq
uint16 resourceNr = strtol(Common::String(inputName.c_str(), 3).c_str(), 0, 36); // 3 characters
- byte noun = strtol(Common::String(inputName.c_str() + 3, 2).c_str(), 0, 36); // 2 characters
- byte verb = strtol(Common::String(inputName.c_str() + 5, 2).c_str(), 0, 36); // 2 characters
- byte cond = strtol(Common::String(inputName.c_str() + 7, 2).c_str(), 0, 36); // 2 characters
- byte seq = strtol(Common::String(inputName.c_str() + 9, 1).c_str(), 0, 36); // 1 character
- ResourceId resource36((ResourceType)i, resourceNr, noun, verb, cond, seq);
+ uint16 noun = strtol(Common::String(inputName.c_str() + 3, 2).c_str(), 0, 36); // 2 characters
+ uint16 verb = strtol(Common::String(inputName.c_str() + 5, 2).c_str(), 0, 36); // 2 characters
+ uint16 cond = strtol(Common::String(inputName.c_str() + 7, 2).c_str(), 0, 36); // 2 characters
+ uint16 seq = strtol(Common::String(inputName.c_str() + 9, 1).c_str(), 0, 36); // 1 character
+ // Check, if we got valid results
+ if ((noun <= 255) && (verb <= 255) && (cond <= 255) && (seq <= 255)) {
+ ResourceId resource36((ResourceType)i, resourceNr, noun, verb, cond, seq);
- /*
- if (i == kResourceTypeAudio36)
- debug("audio36 patch: %s => %s. tuple:%d, %s\n", name.c_str(), inputName.c_str(), resource36.tuple, resource36.toString().c_str());
- else
- debug("sync36 patch: %s => %s. tuple:%d, %s\n", name.c_str(), inputName.c_str(), resource36.tuple, resource36.toString().c_str());
- */
+ /*
+ if (i == kResourceTypeAudio36)
+ debug("audio36 patch: %s => %s. tuple:%d, %s\n", name.c_str(), inputName.c_str(), resource36.tuple, resource36.toString().c_str());
+ else
+ debug("sync36 patch: %s => %s. tuple:%d, %s\n", name.c_str(), inputName.c_str(), resource36.tuple, resource36.toString().c_str());
+ */
- psrcPatch = new ResourceSource;
- psrcPatch->source_type = kSourcePatch;
- psrcPatch->location_name = name;
- psrcPatch->resourceFile = 0;
- processPatch(psrcPatch, (ResourceType)i, resourceNr, resource36.tuple);
+ psrcPatch = new ResourceSource;
+ psrcPatch->source_type = kSourcePatch;
+ psrcPatch->location_name = name;
+ psrcPatch->resourceFile = 0;
+ processPatch(psrcPatch, (ResourceType)i, resourceNr, resource36.tuple);
+ }
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list