[Scummvm-cvs-logs] SF.net SVN: scummvm:[49452] scummvm/trunk/engines/tucker

cyx at users.sourceforge.net cyx at users.sourceforge.net
Sun Jun 6 15:31:19 CEST 2010


Revision: 49452
          http://scummvm.svn.sourceforge.net/scummvm/?rev=49452&view=rev
Author:   cyx
Date:     2010-06-06 13:31:19 +0000 (Sun, 06 Jun 2010)

Log Message:
-----------
use palette image during sequence 3 scrolling

Modified Paths:
--------------
    scummvm/trunk/engines/tucker/sequences.cpp
    scummvm/trunk/engines/tucker/tucker.h

Modified: scummvm/trunk/engines/tucker/sequences.cpp
===================================================================
--- scummvm/trunk/engines/tucker/sequences.cpp	2010-06-06 13:04:24 UTC (rev 49451)
+++ scummvm/trunk/engines/tucker/sequences.cpp	2010-06-06 13:31:19 UTC (rev 49452)
@@ -491,7 +491,6 @@
 	_offscreenBuffer = (uint8 *)malloc(kScreenWidth * kScreenHeight);
 	_updateScreenWidth = 0;
 	_updateScreenPicture = false;
-	_updateScreenOffset = 0;
 	_picBufPtr = _pic2BufPtr = 0;
 }
 
@@ -841,19 +840,28 @@
 void AnimationSequencePlayer::initPicPart4() {
 	_updateScreenWidth = 320;
 	_updateScreenPicture = true;
-	_updateScreenOffset = 0;
+	_updateScreenCounter = 0;
+	_updateScreenIndex = -1;
 }
 
 void AnimationSequencePlayer::drawPicPart4() {
-	static const uint8 offsetsTable[77] = {
-		1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4,
-		5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-		6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-		6, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3,
-		3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1
-	};
-	_updateScreenWidth = _updateScreenWidth - offsetsTable[_updateScreenOffset];
-	++_updateScreenOffset;
+	static const uint8 offsets[] = { 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1 };
+	if (_updateScreenIndex == -1) {
+		for (int i = 0; i < 256; ++i) {
+			if (memcmp(_animationPalette + i * 4, _picBufPtr + 32 + i * 3, 3) != 0) {
+				memcpy(_animationPalette + i * 4, _picBufPtr + 32 + i * 3, 3);
+				_animationPalette[i * 4 + 3] = 0;
+			}
+		}
+	}
+	if (_updateScreenCounter == 0) {
+		static const uint8 counter[] = { 1, 2, 3, 4, 5, 35, 5, 4, 3, 2, 1 };
+		++_updateScreenIndex;
+		assert(_updateScreenIndex < ARRAYSIZE(counter));
+		_updateScreenCounter = counter[_updateScreenIndex];
+	}
+	--_updateScreenCounter;
+	_updateScreenWidth -= offsets[_updateScreenIndex];
 	for (int y = 0; y < 200; ++y) {
 		memcpy(_offscreenBuffer + y * 320, _picBufPtr + 800 + y * 640 + _updateScreenWidth, 320);
 	}

Modified: scummvm/trunk/engines/tucker/tucker.h
===================================================================
--- scummvm/trunk/engines/tucker/tucker.h	2010-06-06 13:04:24 UTC (rev 49451)
+++ scummvm/trunk/engines/tucker/tucker.h	2010-06-06 13:31:19 UTC (rev 49452)
@@ -975,7 +975,8 @@
 	uint8 *_offscreenBuffer;
 	int _updateScreenWidth;
 	int _updateScreenPicture;
-	int _updateScreenOffset;
+	int _updateScreenCounter;
+	int _updateScreenIndex;
 	int _frameCounter;
 	int _frameTime;
 	uint32 _lastFrameTime;


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