[Scummvm-cvs-logs] SF.net SVN: scummvm:[50372] scummvm/trunk/engines/tinsel/graphics.cpp

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Sun Jun 27 13:16:49 CEST 2010


Revision: 50372
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50372&view=rev
Author:   dreammaster
Date:     2010-06-27 11:16:49 +0000 (Sun, 27 Jun 2010)

Log Message:
-----------
Workaround that corrects some bad frame data in the Russian version that was causing the several game crashes

Modified Paths:
--------------
    scummvm/trunk/engines/tinsel/graphics.cpp

Modified: scummvm/trunk/engines/tinsel/graphics.cpp
===================================================================
--- scummvm/trunk/engines/tinsel/graphics.cpp	2010-06-27 06:35:32 UTC (rev 50371)
+++ scummvm/trunk/engines/tinsel/graphics.cpp	2010-06-27 11:16:49 UTC (rev 50372)
@@ -443,6 +443,12 @@
 	int numBytes;
 	int clipAmount;
 
+	// WORKAROUND: One of the mortician frames has several corrupt bytes in the Russian version
+	if ((pObj->hBits == 2517583660) && (_vm->getLanguage() == Common::RU_RUS)) {
+		uint8 correctBytes[5] = {0xA3, 0x00, 0x89, 0xC0, 0xA6};
+		Common::copy(&correctBytes[0], &correctBytes[5], srcP);
+	}
+
 	for (int y = 0; y < pObj->height; ++y) {
 		// Get the position to start writing out from
 		uint8 *tempP = !horizFlipped ? destP :
@@ -596,6 +602,23 @@
 	int numBytes, colour;
 	int v;
 
+	if (_vm->getLanguage() == Common::RU_RUS) {
+		// WORKAROUND: One of the mortician frames has several corrupt bytes in the Russian version
+		if (pObj->hBits == 2517583393) {
+			uint8 correctBytes[5] = {0x00, 0x00, 0x17, 0x01, 0x00};
+			Common::copy(&correctBytes[0], &correctBytes[5], srcP + 267);
+		}
+		// WORKAROUND: One of Dibbler's frames in the end sequence has corrupt bytes in the Russian version
+		if (pObj->hBits == 33651742) {
+			uint8 correctBytes[40] = {
+				0x06, 0xc0, 0xd6, 0xc1, 0x09, 0xce, 0x0d, 0x24, 0x02, 0x12, 0x01, 0x00, 0x00, 0x23, 0x21, 0x32,
+				0x12, 0x00, 0x00, 0x20, 0x01, 0x11, 0x32, 0x12, 0x01, 0x00, 0x00, 0x1b, 0x02, 0x11, 0x34, 0x11,
+				0x00, 0x00, 0x18, 0x01, 0x11, 0x35, 0x21, 0x01
+			};
+			Common::copy(&correctBytes[0], &correctBytes[40], srcP);
+		}
+	}
+
 	if (applyClipping) {
 		pObj->height -= pObj->botClip;
 		topClip = pObj->topClip;


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