[Scummvm-cvs-logs] scummvm master -> ef939772b39d3988ad31a77ea0bdc1bc149aa54a

bluegr md5 at scummvm.org
Fri Mar 4 16:18:17 CET 2011


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
ef939772b3 SCI: Added support for 16/32 color view and picture patches


Commit: ef939772b39d3988ad31a77ea0bdc1bc149aa54a
    https://github.com/scummvm/scummvm/commit/ef939772b39d3988ad31a77ea0bdc1bc149aa54a
Author: md5 (md5 at scummvm.org)
Date: 2011-03-04T07:16:54-08:00

Commit Message:
SCI: Added support for 16/32 color view and picture patches

16 color patches (*.p16 and *.v16) are used in 16 color EGA SCI1 games
32 color patches (*.p32 and *.v32) are used in 32 color Amiga SCI1 games
Removed a workaround for SCI1 EGA (bug #3044500), as that bug has been
fixed already in the view patch. Thanks to waltervn for observing this.

Changed paths:
    engines/sci/graphics/view.cpp
    engines/sci/resource.cpp



diff --git a/engines/sci/graphics/view.cpp b/engines/sci/graphics/view.cpp
index 8eacecd..f9bbee4 100644
--- a/engines/sci/graphics/view.cpp
+++ b/engines/sci/graphics/view.cpp
@@ -313,25 +313,6 @@ int16 GfxView::getHeight(int16 loopNo, int16 celNo) const {
 
 const CelInfo *GfxView::getCelInfo(int16 loopNo, int16 celNo) const {
 	assert(_loopCount);
-
-	// WORKAROUND for the EGA version of SQ1: View 506 is the portrait of the 
-	// skimmer buyer in room 41 in SQ1. Loop 0 is his face looking left (shown
-	// the first time Roger arrives in Ulence Flats) and loop 1 is his face
-	// looking right (shown the second time he appears, when he makes the
-	// second offer for the skimmer). In the VGA version, the first two loops
-	// have 2 cels, a valid one (cel 0) and an invalid one (cel 1). In the EGA 
-	// version, the cels in these two loops have been swapped. The game scripts,
-	// however seem to get confused by this situation, and when they check loop
-	// 1, cel 0 via kCelHigh and kCelWide regard it as invalid and never show
-	// it. We just swap the two cels here in the EGA version, making it behave
-	// like the VGA version, thus the game scripts show the correct loop. Fixes
-	// bug #3044500. Note that the same workaround is in getBitmap().
-	// TODO: Check if this issue happens in the original version.
-	if (g_sci->getGameId() == GID_SQ1 && !_resMan->isVGA() && _resourceId == 506) {
-		if ((loopNo == 0 || loopNo == 1) && celNo == 0)
-			celNo = 1;
-	}
-
 	loopNo = CLIP<int16>(loopNo, 0, _loopCount - 1);
 	celNo = CLIP<int16>(celNo, 0, _loop[loopNo].celCount - 1);
 	return &_loop[loopNo].cel[celNo];
@@ -535,13 +516,6 @@ void GfxView::unpackCel(int16 loopNo, int16 celNo, byte *outPtr, uint32 pixelCou
 }
 
 const byte *GfxView::getBitmap(int16 loopNo, int16 celNo) {
-	// WORKAROUND for the EGA version of SQ1, same as the one in getCelInfo().
-	// Check getCelInfo() above for more information.
-	if (g_sci->getGameId() == GID_SQ1 && !_resMan->isVGA() && _resourceId == 506) {
-		if ((loopNo == 0 || loopNo == 1) && celNo == 0)
-			celNo = 1;
-	}
-
 	loopNo = CLIP<int16>(loopNo, 0, _loopCount -1);
 	celNo = CLIP<int16>(celNo, 0, _loop[loopNo].celCount - 1);
 	if (_loop[loopNo].cel[celNo].rawBitmap)
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp
index 75628d3..654c3f1 100644
--- a/engines/sci/resource.cpp
+++ b/engines/sci/resource.cpp
@@ -1535,10 +1535,16 @@ void ResourceManager::readResourcePatches() {
 		mask += s_resourceTypeSuffixes[i];
 		SearchMan.listMatchingMembers(files, mask);
 
-		if (i == kResourceTypeScript && files.size() == 0) {
-			// SCI3 (we can't use getSciVersion() at this point)
-			mask = "*.csc";
-			SearchMan.listMatchingMembers(files, mask);
+		if (i == kResourceTypeView) {
+			SearchMan.listMatchingMembers(files, "*.v16");	// EGA SCI1 view patches
+			SearchMan.listMatchingMembers(files, "*.v32");	// Amiga SCI1 view patches
+		} else if (i == kResourceTypePic) {
+			SearchMan.listMatchingMembers(files, "*.p16");	// EGA SCI1 picture patches
+			SearchMan.listMatchingMembers(files, "*.p32");	// Amiga SCI1 picture patches
+		} else if (i == kResourceTypeScript) {
+			if (files.size() == 0)
+				// SCI3 (we can't use getSciVersion() at this point)
+				SearchMan.listMatchingMembers(files, "*.csc");
 		}
 
 		for (Common::ArchiveMemberList::const_iterator x = files.begin(); x != files.end(); ++x) {






More information about the Scummvm-git-logs mailing list