[Scummvm-git-logs] scummvm master -> 0ec258f5ffcfe75ad5e83f32c7b1b841280bc654

bonki bonki at users.noreply.github.com
Sun Feb 11 12:01:49 CET 2018


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

Summary:
43053644a8 TUCKER: Remove superfluous arguments in loadBudSpr et al
0ec258f5ff TUCKER: Fix original game glitch in Bud animation sequence 8


Commit: 43053644a8088deacd067616fb9b4f48bcb07878
    https://github.com/scummvm/scummvm/commit/43053644a8088deacd067616fb9b4f48bcb07878
Author: Adrian Frühwirth (bonki at users.noreply.github.com)
Date: 2018-02-11T11:50:52+01:00

Commit Message:
TUCKER: Remove superfluous arguments in loadBudSpr et al

Changed paths:
    engines/tucker/resource.cpp
    engines/tucker/saveload.cpp
    engines/tucker/tucker.cpp
    engines/tucker/tucker.h


diff --git a/engines/tucker/resource.cpp b/engines/tucker/resource.cpp
index d7b75e3..2fe26fa 100644
--- a/engines/tucker/resource.cpp
+++ b/engines/tucker/resource.cpp
@@ -380,14 +380,14 @@ void TuckerEngine::loadPanel() {
 	loadImage((_panelNum == 0) ? "panel1.pcx" : "panel2.pcx", _panelGfxBuf, 0);
 }
 
-void TuckerEngine::loadBudSpr(int startOffset) {
+void TuckerEngine::loadBudSpr() {
 	int framesCount[20];
 	memset(framesCount, 0, sizeof(framesCount));
-	int endOffset = loadCTable01(0, startOffset, framesCount);
-	loadCTable02(0);
+	int endOffset = loadCTable01(framesCount);
+	loadCTable02();
 	int frame = 0;
 	int spriteOffset = 0;
-	for (int i = startOffset; i < endOffset; ++i) {
+	for (int i = 0; i < endOffset; ++i) {
 		if (framesCount[frame] == i) {
 			Common::String filename;
 			switch (_flagsTable[137]) {
@@ -414,12 +414,12 @@ void TuckerEngine::loadBudSpr(int startOffset) {
 	}
 }
 
-int TuckerEngine::loadCTable01(int index, int firstSpriteNum, int *framesCount) {
+int TuckerEngine::loadCTable01(int *framesCount) {
 	loadFile("ctable01.c", _loadTempBuf);
 	DataTokenizer t(_loadTempBuf,  _fileLoadSize);
-	int lastSpriteNum = firstSpriteNum;
+	int lastSpriteNum = 0;
 	int count = 0;
-	if (t.findIndex(index)) {
+	if (t.findIndex(0)) {
 		while (t.findNextToken(kDataTokenDw)) {
 			const int x = t.getNextInteger();
 			if (x < 0) {
@@ -448,8 +448,7 @@ int TuckerEngine::loadCTable01(int index, int firstSpriteNum, int *framesCount)
 	return lastSpriteNum;
 }
 
-void TuckerEngine::loadCTable02(int fl) {
-	assert(fl == 0);
+void TuckerEngine::loadCTable02() {
 	int entry = 0;
 	int i = 0;
 	loadFile("ctable02.c", _loadTempBuf);
@@ -461,7 +460,7 @@ void TuckerEngine::loadCTable02(int fl) {
 		}
 		_spriteAnimationsTable[entry]._rotateFlag = t.getNextInteger();
 		int num = t.getNextInteger();
-		if (num != fl) {
+		if (num != 0) {
 			continue;
 		}
 		int start = 0;
diff --git a/engines/tucker/saveload.cpp b/engines/tucker/saveload.cpp
index 8ed969c..e48e4fd 100644
--- a/engines/tucker/saveload.cpp
+++ b/engines/tucker/saveload.cpp
@@ -90,7 +90,7 @@ Common::Error TuckerEngine::loadGameState(int num) {
 			} else {
 				_nextLocationNum = _locationNum;
 				setBlackPalette();
-				loadBudSpr(0);
+				loadBudSpr();
 				_forceRedrawPanelItems = true;
 			}
 		}
diff --git a/engines/tucker/tucker.cpp b/engines/tucker/tucker.cpp
index 06c7368..8c49aaa 100644
--- a/engines/tucker/tucker.cpp
+++ b/engines/tucker/tucker.cpp
@@ -375,7 +375,7 @@ void TuckerEngine::mainLoop() {
 
 	_currentSaveLoadGameState = 1;
 
-	loadBudSpr(0);
+	loadBudSpr();
 	loadCursor();
 	setCursorNum(_cursorNum);
 	setCursorType(_cursorType);
@@ -397,7 +397,7 @@ void TuckerEngine::mainLoop() {
 	do {
 		++_syncCounter;
 		if (_flagsTable[137] != _flagsTable[138]) {
-			loadBudSpr(0);
+			loadBudSpr();
 			_flagsTable[138] = _flagsTable[137];
 		}
 		if (_syncCounter >= 2) {
diff --git a/engines/tucker/tucker.h b/engines/tucker/tucker.h
index 7c5a305..fd508c1 100644
--- a/engines/tucker/tucker.h
+++ b/engines/tucker/tucker.h
@@ -600,13 +600,13 @@ protected:
 	void loadCharsetHelper();
 	void loadCharSizeDta();
 	void loadPanel();
-	void loadBudSpr(int startOffset);
-	int loadCTable01(int index, int firstSpriteNum, int *framesCount);
-	void loadCTable02(int fl);
+	void loadBudSpr();
+	int  loadCTable01(int *framesCount);
+	void loadCTable02();
 	void loadLoc();
 	void loadObj();
 	void loadData();
-	int loadDataHelper(int offset, int index);
+	int  loadDataHelper(int offset, int index);
 	void loadPanObj();
 	void loadData3();
 	void loadData4();


Commit: 0ec258f5ffcfe75ad5e83f32c7b1b841280bc654
    https://github.com/scummvm/scummvm/commit/0ec258f5ffcfe75ad5e83f32c7b1b841280bc654
Author: Adrian Frühwirth (bonki at users.noreply.github.com)
Date: 2018-02-11T11:58:26+01:00

Commit Message:
TUCKER: Fix original game glitch in Bud animation sequence 8

Fixes Trac#10430.

Changed paths:
    engines/tucker/resource.cpp


diff --git a/engines/tucker/resource.cpp b/engines/tucker/resource.cpp
index 2fe26fa..82be9ab 100644
--- a/engines/tucker/resource.cpp
+++ b/engines/tucker/resource.cpp
@@ -430,10 +430,20 @@ int TuckerEngine::loadCTable01(int *framesCount) {
 				continue;
 			}
 			const int y = t.getNextInteger();
-			SpriteFrame *c = &_spriteFramesTable[lastSpriteNum++];
+			SpriteFrame *c = &_spriteFramesTable[lastSpriteNum];
 			c->_sourceOffset = y * 320 + x;
 			c->_xSize = t.getNextInteger();
 			c->_ySize = t.getNextInteger();
+
+			// WORKAROUND: original game glitch
+			// The sprite grab animation table incorrectly states a height of 24
+			// pixels for sprite number 57 while the correct size is 54 pixels.
+			// This fixes a glitch in animation sequence 8 (the only to use sprite 57)
+			// which gets triggered when picking up the nail in front of the museum.
+			// Fixes Trac#10430
+			if (lastSpriteNum == 57)
+				c->_ySize = 54;
+
 			c->_xOffset = t.getNextInteger();
 			if (c->_xOffset > 300) {
 				c->_xOffset -= 500;
@@ -442,6 +452,7 @@ int TuckerEngine::loadCTable01(int *framesCount) {
 			if (c->_yOffset > 300) {
 				c->_yOffset -= 500;
 			}
+			++lastSpriteNum;
 		}
 	}
 	framesCount[count] = -1;





More information about the Scummvm-git-logs mailing list