[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