[Scummvm-cvs-logs] CVS: scummvm/kyra animator.cpp,1.2,1.3 gui.cpp,1.1,1.2 kyra.cpp,1.111,1.112 kyra.h,1.63,1.64 screen.cpp,1.33,1.34 screen.h,1.19,1.20 script_v1.cpp,1.60,1.61 seqplayer.h,1.5,1.6 sprites.cpp,1.17,1.18 text.h,1.1,1.2

Johannes Schickel lordhoto at users.sourceforge.net
Fri Jan 6 02:47:03 CET 2006


Update of /cvsroot/scummvm/scummvm/kyra
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26170

Modified Files:
	animator.cpp gui.cpp kyra.cpp kyra.h screen.cpp screen.h 
	script_v1.cpp seqplayer.h sprites.cpp text.h 
Log Message:
Implemented the end sequence, (only the rest of the winning end sequence
is missing yet and one text part that malcolm says).
 => Kyra *should* be completeable now.
Also used KyraEngine:: in all debug calls from the KyraEngine class.
And fixes a bug while drawing shapes.


Index: animator.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/animator.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- animator.cpp	3 Jan 2006 19:03:08 -0000	1.2
+++ animator.cpp	6 Jan 2006 10:45:41 -0000	1.3
@@ -209,7 +209,7 @@
 						shapesIndex = baseAnimFrameTable2[curObject->index];
 						int temp2 = 0;
 						if (curObject->index == 2) {
-							if (_vm->_characterList[2].sceneId == 0x4D || _vm->_characterList[2].sceneId == 0x56) {
+							if (_vm->_characterList[2].sceneId == 77 || _vm->_characterList[2].sceneId == 86) {
 								temp2 = 1;
 							} else {
 								temp2 = 0;
@@ -242,7 +242,7 @@
 						++xpos;
 					}
 					
-					if (curObject->index == 0) {
+					if (curObject->index == 0 && shapesIndex != -1) {
 						if (!(_vm->_brandonStatusBit & 2)) {
 							flagUnk3 = 0x100;
 							if ((flagUnk1 & 0x200) || (flagUnk2 & 0x4000)) {
@@ -251,25 +251,17 @@
 							
 							int tempFlags = 0;
 							if (flagUnk3 & 0x100) {
-								if (curObject->flags & 1) {
-									tempFlags = 1;
-								}
+								tempFlags = curObject->flags & 1;
 								tempFlags |= 0x800 | flagUnk1 | 0x100;
 							}
 							
 							if (!(flagUnk3 & 0x100) && (flagUnk2 & 0x4000)) {
-								tempFlags = 0;
-								if (curObject->flags & 1) {
-									tempFlags = 1;
-								}
+								tempFlags = curObject->flags & 1;
 								tempFlags |= 0x900 | flagUnk1 | 0x4000;
-								_screen->drawShape(drawPage, _vm->_shapes[4+shapesIndex], xpos, ypos, 2, tempFlags | 4, _vm->_brandonPoisonFlagsGFX, int(1), int(0)/*XXX*/, drawLayer, _vm->_brandonScaleX, _vm->_brandonScaleY);
+								_screen->drawShape(drawPage, _vm->_shapes[4+shapesIndex], xpos, ypos, 2, tempFlags | 4, _vm->_brandonPoisonFlagsGFX, int(1), int(_vm->_brandonInvFlag), drawLayer, _vm->_brandonScaleX, _vm->_brandonScaleY);
 							} else {
 								if (!(flagUnk2 & 0x4000)) {
-									tempFlags = 0;
-									if (curObject->flags & 1) {
-										tempFlags = 1;
-									}
+									tempFlags = curObject->flags & 1;
 									tempFlags |= 0x900 | flagUnk1;
 								}
 								
@@ -307,7 +299,7 @@
 					if (flagUnk3 & 0x100) {
 						_screen->drawShape(drawPage, curObject->sceneAnimPtr, xpos, ypos, 2, curObject->flags | flagUnk1 | 0x100, (uint8*)_vm->_brandonPoisonFlagsGFX, int(1), drawLayer);
 					} else if (flagUnk3 & 0x4000) {
-						_screen->drawShape(drawPage, curObject->sceneAnimPtr, xpos, ypos, 2, curObject->flags | flagUnk1 | 0x4000, _vm->_brandonInvFlag, drawLayer);
+						_screen->drawShape(drawPage, curObject->sceneAnimPtr, xpos, ypos, 2, curObject->flags | flagUnk1 | 0x4000, int(_vm->_brandonInvFlag), drawLayer);
 					} else {
 						_screen->drawShape(drawPage, curObject->sceneAnimPtr, xpos, ypos, 2, curObject->flags | flagUnk1, drawLayer);
 					}
@@ -315,7 +307,7 @@
 					if (flagUnk3 & 0x100) {
 						_screen->drawShape(drawPage, curObject->sceneAnimPtr, xpos, ypos, 2, curObject->flags | flagUnk1 | 0x104, (uint8*)_vm->_brandonPoisonFlagsGFX, int(1), drawLayer, _vm->_brandonScaleX, _vm->_brandonScaleY);
 					} else if (flagUnk3 & 0x4000) {
-						_screen->drawShape(drawPage, curObject->sceneAnimPtr, xpos, ypos, 2, curObject->flags | flagUnk1 | 0x4004, int(0), drawLayer, _vm->_brandonInvFlag, _vm->_brandonScaleX, _vm->_brandonScaleY);
+						_screen->drawShape(drawPage, curObject->sceneAnimPtr, xpos, ypos, 2, curObject->flags | flagUnk1 | 0x4004, int(_vm->_brandonInvFlag), drawLayer, _vm->_brandonScaleX, _vm->_brandonScaleY);
 					} else {
 						_screen->drawShape(drawPage, curObject->sceneAnimPtr, xpos, ypos, 2, curObject->flags | flagUnk1 | 0x4, drawLayer, _vm->_brandonScaleX, _vm->_brandonScaleY);
 					}
@@ -342,7 +334,7 @@
 				int xpos = 0, ypos = 0, width = 0, height = 0;
 				xpos = curObject->x1 - (curObject->width2+1);
 				ypos = curObject->y1 - curObject->height2;
-				width = (curObject->width + ((curObject->width2)>>3)+2)<<3;
+				width = (curObject->width + ((curObject->width2)>>3)+1)<<3;
 				height = curObject->height + curObject->height2*2;
 				
 				if (xpos < 8) {

Index: gui.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/gui.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- gui.cpp	2 Jan 2006 22:58:59 -0000	1.1
+++ gui.cpp	6 Jan 2006 10:45:41 -0000	1.2
@@ -89,8 +89,8 @@
 		return 1;
 	int jewel = caller->specialValue - 0x14;
 	if (_currentCharacter->sceneId == 210) {
-		//if (_unkSceneVar == 4 || _unkSceneVar == 6)
-		//	return 1;
+		if (_beadStateVar == 4 || _beadStateVar == 6)
+			return 1;
 	}
 	if (!queryGameFlag(0x2D))
 		return 1;

Index: kyra.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/kyra.cpp,v
retrieving revision 1.111
retrieving revision 1.112
diff -u -d -r1.111 -r1.112
--- kyra.cpp	4 Jan 2006 07:39:16 -0000	1.111
+++ kyra.cpp	6 Jan 2006 10:45:41 -0000	1.112
@@ -399,6 +399,18 @@
 	_unkScreenVar3 = 0;
 	_unkAmuletVar = 0;
 	
+	_endSequenceNeedLoading = 1;
+	_malcolmFlag = 0;
+	_beadStateVar = 0;
+	_endSequenceSkipFlag = 0;
+	_unkEndSeqVar2 = 0;
+	_endSequenceBackUpRect = 0;
+	_unkEndSeqVar4 = 0;
+	_unkEndSeqVar5 = 0;
[...1383 lines suppressed...]
 	_scriptClick->variables[0] = _currentCharacter->sceneId;
 	_scriptClick->variables[1] = _mouseX;
@@ -5290,7 +5900,7 @@
 }
 
 int KyraEngine::checkForNPCScriptRun(int xpos, int ypos) {
-	debug(9, "checkForNPCScriptRun(%d, %d)", xpos, ypos);
+	debug(9, "KyraEngine::checkForNPCScriptRun(%d, %d)", xpos, ypos);
 	int returnValue = -1;
 	const Character *currentChar = _currentCharacter;
 	int charLeft = 0, charRight = 0, charTop = 0, charBottom = 0;
@@ -5344,7 +5954,7 @@
 }
 
 void KyraEngine::runNpcScript(int func) {
-	debug(9, "runNpcScript(%d)", func);
+	debug(9, "KyraEngine::runNpcScript(%d)", func);
 	_scriptInterpreter->initScript(_npcScript, _npcScriptData);
 	_scriptInterpreter->startScript(_npcScript, func);
 	_npcScript->variables[0] = _currentCharacter->sceneId;

Index: kyra.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/kyra.h,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -d -r1.63 -r1.64
--- kyra.h	3 Jan 2006 23:41:52 -0000	1.63
+++ kyra.h	6 Jan 2006 10:45:42 -0000	1.64
@@ -103,6 +103,19 @@
 	uint8  westYPos;
 };
 
+struct BeadState {
+	int16 x;
+	int16 y;
+	int16 width;
+	int16 height;
+	int16 dstX;
+	int16 dstY;
+	int16 width2;
+	int16 unk8;
+	int16 unk9;
+	int16 tableIndex;
+};
+
 class Movie;
 
 class MusicPlayer;
@@ -492,7 +505,7 @@
 	void freeShapes123();
 	void setBrandonAnimSeqSize(int width, int height);
 	void resetBrandonAnimSeqSize();
-	
+
 	void seq_demo();
 	void seq_intro();
 	void seq_introLogos();
@@ -515,6 +528,8 @@
 	void seq_dispelMagicAnimation();
 	void seq_fillFlaskWithWater(int item, int type);
 	void seq_playDrinkPotionAnim(int unk1, int unk2, int flags);
+	int seq_playEnd();
+	void seq_brandonToStone();
 
 	void snd_startTrack();
 	void snd_haltTrack();
@@ -550,6 +565,13 @@
 	void setCharactersInDefaultScene();
 	void resetBrandonPosionFlags();
 	void initAnimStateList();
+	void setupPanPages();
+	void freePanPages();
+	void closeFinalWsa();
+	int handleMalcolmFlag();
+	int handleBeadState();
+	void initBeadState(int x, int y, int x2, int y2, int unk1, BeadState *ptr);
+	int processBead(int x, int y, int &x2, int &y2, BeadState *ptr);
 	
 	void setTimer19();
 	void setupTimers();
@@ -594,11 +616,23 @@
 	bool _handleInput;
 	bool _changedScene;
 	int _unkScreenVar1, _unkScreenVar2, _unkScreenVar3;
+	int _beadStateVar;
 	int _unkAmuletVar;
 	
 	int _brandonAnimSeqSizeWidth;
 	int _brandonAnimSeqSizeHeight;
-
+	
+	int _malcolmFlag;
+	int _endSequenceSkipFlag;
+	int _endSequenceNeedLoading;
+	int _unkEndSeqVar2;
+	uint8 *_endSequenceBackUpRect;
+	int _unkEndSeqVar4;
+	int _unkEndSeqVar5;
+	int _lastDisplayedPanPage;
+	uint8 *_panPagesTable[20];
+	Movie *_finalA, *_finalB, *_finalC;
+	
 	Movie *_movieObjects[10];
 
 	uint16 _entranceMouseCursorTracks[8];

Index: screen.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/screen.cpp,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- screen.cpp	22 Dec 2005 18:14:52 -0000	1.33
+++ screen.cpp	6 Jan 2006 10:45:42 -0000	1.34
@@ -26,6 +26,8 @@
 
 namespace Kyra {
 
+#define BITBLIT_RECTS 10
+
 Screen::Screen(KyraEngine *vm, OSystem *system)
 	: _system(system), _vm(vm) {
 	_curPage = 0;
@@ -63,6 +65,11 @@
 	_animBlockPtr = NULL;
 	_animBlockSize = 0;
 	_mouseLockCount = 0;
+	
+	_bitBlitRects = new Rect[BITBLIT_RECTS];
+	assert(_bitBlitRects);
+	memset(_bitBlitRects, 0, sizeof(Rect)*BITBLIT_RECTS);
+	_bitBlitNum = 0;
 }
 
 Screen::~Screen() {
@@ -81,6 +88,7 @@
 	for (int i = 0; i < 3; ++i) {
 		free(_palettes[i]);
 	}
+	delete [] _bitBlitRects;
 }
 
 void Screen::updateScreen() {
@@ -300,17 +308,41 @@
 void Screen::copyBlockToPage(int pageNum, int x, int y, int w, int h, const uint8 *src) {
 	debug(9, "Screen::copyBlockToPage(%d, %d, %d, %d, %d, 0x%X)", pageNum, x, y, w, h, src);
 	assert(x >= 0 && x < Screen::SCREEN_W && y >= 0 && y < Screen::SCREEN_H);
-	uint8 *dst = getPagePtr(pageNum) + y * Screen::SCREEN_W + x;
+	uint8 *dst = getPagePtr(pageNum) + y * SCREEN_W + x;
 	while (h--) {
-		for (int i = 0; i < w; ++i) {
-			dst[i] = src[i];
-		}
-		dst += Screen::SCREEN_W;
+		memcpy(dst, src, w);
+		dst += SCREEN_W;
 		src += w;
 	}
 }
 
-void Screen::copyCurPageBlock(int x, int y, int h, int w, uint8 *dst) {
+void Screen::copyFromCurPageBlock(int x, int y, int w, int h, const uint8 *src) {
+	debug(9, "Screen::copyFromCurPageBlock(%d, %d, %d, %d, 0x%X)", x, y, w, h, src);
+	if (x < 0) {
+		x = 0;	
+	} else if (x >= 40) {
+		return;
+	}
+	if (x + w > 40) {
+		w = 40 - x;
+	}
+	if (y < 0) {
+		y = 0;
+	} else if (y >= 200) {
+		return;
+	}
+	if (y + h > 200) {
+		h = 200 - y;
+	}
+	uint8 *dst = getPagePtr(_curPage) + y * SCREEN_W + x * 8;
+	while (h--) {
+		memcpy(dst, src, w*8);
+		dst += SCREEN_W;
+		src += w*8;
+	}
+}
+
+void Screen::copyCurPageBlock(int x, int y, int w, int h, uint8 *dst) {
 	debug(9, "Screen::copyCurPageBlock(%d, %d, %d, %d, 0x%X)", x, y, w, h, dst);
 	assert(dst);
 	if (x < 0) {
@@ -333,7 +365,7 @@
 	while (h--) {
 		memcpy(dst, src, w*8);
 		dst += w*8;
-		src += SCREEN_H;
+		src += SCREEN_W;
 	}
 }
 
@@ -1274,7 +1306,7 @@
 }
 
 uint8 *Screen::encodeShape(int x, int y, int w, int h, int flags) {
-	debug(9, "encodeShape(%d, %d, %d, %d, %d)", x, y, w, h, flags);
+	debug(9, "Screen::encodeShape(%d, %d, %d, %d, %d)", x, y, w, h, flags);
 	uint8 *srcPtr = &_pagePtrs[_curPage][y * SCREEN_W + x];
 	int16 shapeSize = 0;
 	uint8 *tmp = srcPtr;
@@ -1459,7 +1491,7 @@
 }
 
 int16 Screen::encodeShapeAndCalculateSize(uint8 *from, uint8 *to, int size_to) {
-	debug(9, "encodeShapeAndCalculateSize(0x%X, 0x%X, %d)", from, to, size_to);
+	debug(9, "Screen::encodeShapeAndCalculateSize(0x%X, 0x%X, %d)", from, to, size_to);
 	byte *fromPtrEnd = from + size_to;
 	bool skipPixel = true;
 	byte *tempPtr = 0;
@@ -1607,26 +1639,26 @@
 }
 
 void Screen::hideMouse() {
-	debug(9, "hideMouse()");
+	debug(9, "Screen::hideMouse()");
 	//++_mouseLockCount;
 	_system->showMouse(false);
 }
 
 void Screen::showMouse() {
-	debug(9, "showMouse()");
+	debug(9, "Screen::showMouse()");
 	//if (--_mouseLockCount == 0) { 
 		_system->showMouse(true);
 	//}
 }
 
 void Screen::setShapePages(int page1, int page2) {
-	debug(9, "setShapePages(%d, %d)", page1, page2);
+	debug(9, "Screen::setShapePages(%d, %d)", page1, page2);
 	_shapePages[0] = _pagePtrs[page1];
 	_shapePages[1] = _pagePtrs[page2];
 }
 
 void Screen::setMouseCursor(int x, int y, byte *shape) {
-	debug(9, "setMouseCursor(%d, %d, 0x%X)", x, y, shape);
+	debug(9, "Screen::setMouseCursor(%d, %d, 0x%X)", x, y, shape);
 	if (!shape)
 		return;
 	// if mouseDisabled
@@ -1656,7 +1688,7 @@
 }
 
 void Screen::copyScreenFromRect(int x, int y, int w, int h, uint8 *ptr) {
-	debug(9, "copyScreenFromRect(%d, %d, %d, %d, 0x%X)", x, y, w, h, ptr);
+	debug(9, "Screen::copyScreenFromRect(%d, %d, %d, %d, 0x%X)", x, y, w, h, ptr);
 	x <<= 3; w <<= 3;
 	uint8 *src = ptr;
 	uint8 *dst = &_pagePtrs[0][y * SCREEN_W + x];
@@ -1668,7 +1700,7 @@
 }
 
 void Screen::copyScreenToRect(int x, int y, int w, int h, uint8 *ptr) {
-	debug(9, "copyScreenToRect(%d, %d, %d, %d, 0x%X)", x, y, w, h, ptr);
+	debug(9, "Screen::copyScreenToRect(%d, %d, %d, %d, 0x%X)", x, y, w, h, ptr);
 	x <<= 3; w <<= 3;
 	uint8 *src = &_pagePtrs[0][y * SCREEN_W + x];
 	uint8 *dst = ptr;
@@ -1680,7 +1712,7 @@
 }
 
 uint8 *Screen::getPalette(int num) {
-	debug(9, "getPalette(%d)", num);
+	debug(9, "Screen::getPalette(%d)", num);
 	assert(num >= 0 && num < 4);
 	if (num == 0) {
 		return _screenPalette;
@@ -1690,7 +1722,7 @@
 }
 
 byte Screen::getShapeFlag1(int x, int y) {
-	debug(9, "getShapeFlag1(%d, %d)", x, y);
+	debug(9, "Screen::getShapeFlag1(%d, %d)", x, y);
 	uint8 color = _shapePages[0][y * SCREEN_W + x];
 	color &= 0x80;
 	color ^= 0x80;
@@ -1702,7 +1734,7 @@
 }
 
 byte Screen::getShapeFlag2(int x, int y) {
-	debug(9, "getShapeFlag2(%d, %d)", x, y);
+	debug(9, "Screen::getShapeFlag2(%d, %d)", x, y);
 	uint8 color = _shapePages[0][y * SCREEN_W + x];
 	color &= 0x7F;
 	color &= 0x87;
@@ -1710,7 +1742,7 @@
 }
 
 int Screen::setNewShapeHeight(uint8 *shape, int height) {
-	debug(9, "setNewShapeHeight(0x%X, %d)", shape, height);
+	debug(9, "Screen::setNewShapeHeight(0x%X, %d)", shape, height);
 	if (_vm->features() & GF_TALKIE)
 		shape += 2;
 	int oldHeight = shape[2];
@@ -1719,7 +1751,7 @@
 }
 
 int Screen::resetShapeHeight(uint8 *shape) {
-	debug(9, "setNewShapeHeight(0x%X)", shape);
+	debug(9, "Screen::setNewShapeHeight(0x%X)", shape);
 	if (_vm->features() & GF_TALKIE)
 		shape += 2;
 	int oldHeight = shape[2];
@@ -1727,4 +1759,25 @@
 	return oldHeight;
 }
 
+void Screen::addBitBlitRect(int x, int y, int w, int h) {
+	debug(9, "Screen::addBitBlitRects(%d, %d, %d, %d)", x, y, w, h);
+	if (_bitBlitNum >= BITBLIT_RECTS) {
+		error("too many bit blit rects");
+	}
+	_bitBlitRects[_bitBlitNum].x = x;
+	_bitBlitRects[_bitBlitNum].y = y;
+	_bitBlitRects[_bitBlitNum].x2 = w;
+	_bitBlitRects[_bitBlitNum].y2 = h;
+	++_bitBlitNum;
+}
+
+void Screen::bitBlitRects() {
+	debug(9, "Screen::bitBlitRects()");
+	Rect *cur = _bitBlitRects;
+	while (_bitBlitNum) {
+		_bitBlitNum--;
+		copyRegion(cur->x, cur->y, cur->x, cur->y, cur->x2, cur->y2, 2, 0);
+		++cur;
+	}
+}
 } // End of namespace Kyra

Index: screen.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/screen.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- screen.h	24 Dec 2005 18:00:35 -0000	1.19
+++ screen.h	6 Jan 2006 10:45:42 -0000	1.20
@@ -30,6 +30,7 @@
 namespace Kyra {
 
 class KyraEngine;
+struct Rect;
 
 struct ScreenDim {
 	uint16 sx;
@@ -98,7 +99,8 @@
 	void copyToPage0(int y, int h, uint8 page, uint8 *seqBuf);
 	void copyRegion(int x1, int y1, int x2, int y2, int w, int h, int srcPage, int dstPage, int flags=0);
 	void copyBlockToPage(int pageNum, int x, int y, int w, int h, const uint8 *src);
-	void copyCurPageBlock(int x, int y, int h, int w, uint8 *dst);
+	void copyFromCurPageBlock(int x, int y, int w, int h, const uint8 *src);
+	void copyCurPageBlock(int x, int y, int w, int h, uint8 *dst);
 	void shuffleScreen(int sx, int sy, int w, int h, int srcPage, int dstPage, int ticks, bool transparent);
 	void fillRect(int x1, int y1, int x2, int y2, uint8 color, int pageNum = -1);
 	void setAnimBlockPtr(int size);
@@ -131,6 +133,9 @@
 	byte getShapeFlag2(int x, int y);
 	int setNewShapeHeight(uint8 *shape, int height);
 	int resetShapeHeight(uint8 *shape);
+	
+	void addBitBlitRect(int x, int y, int w, int w);
+	void bitBlitRects();
 
 	int _charWidth;
 	int _charOffset;
@@ -159,6 +164,9 @@
 	uint8 *_animBlockPtr;
 	int _animBlockSize;
 	int _mouseLockCount;
+	
+	Rect *_bitBlitRects;
+	int _bitBlitNum;
 
 	OSystem *_system;
 	KyraEngine *_vm;

Index: script_v1.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/script_v1.cpp,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -d -r1.60 -r1.61
--- script_v1.cpp	4 Jan 2006 16:57:16 -0000	1.60
+++ script_v1.cpp	6 Jan 2006 10:45:42 -0000	1.61
@@ -1631,7 +1631,9 @@
 }
 
 int KyraEngine::cmd_walkMalcolmOn(ScriptState *script) {
-	warning("STUB: cmd_walkMalcolmOn");
+	debug(3, "cmd_walkMalcolmOn(0x%X) ()", script);
+	if (!_malcolmFlag)
+		_malcolmFlag = 1;
 	return 0;
 }
 

Index: seqplayer.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/seqplayer.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- seqplayer.h	2 Jan 2006 13:20:02 -0000	1.5
+++ seqplayer.h	6 Jan 2006 10:45:42 -0000	1.6
@@ -37,6 +37,8 @@
 	void freeHandShapes();
 
 	bool playSequence(const uint8 *seqData, bool skipSeq);
+	
+	uint8 *setPanPages(int pageNum, int shape);
 
 protected:
 	KyraEngine *_vm;
@@ -55,8 +57,6 @@
 		const char* desc;
 	};
 
-	uint8 *setPanPages(int pageNum, int shape);
-
 	// the sequence procs
 	void s1_wsaOpen();
 	void s1_wsaClose();

Index: sprites.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/sprites.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- sprites.cpp	2 Jan 2006 22:58:59 -0000	1.17
+++ sprites.cpp	6 Jan 2006 10:45:42 -0000	1.18
@@ -88,7 +88,7 @@
 			data += 4;
 			_anims[i].y = READ_LE_UINT16(data);
 			data += 4;
-			_anims[i].width = *(data);
+			_anims[i].width = (*(data) >> 3) + 1;
 			data += 4;
 			_anims[i].height = *(data);
 			data += 4;
@@ -107,7 +107,7 @@
 
 			_anims[i].script = data;
 
-			int bkgdWidth = _anims[i].width;
+			int bkgdWidth = _anims[i].width << 3;
 			int bkgdHeight = _anims[i].height;
 
 			if (_anims[i].width2)

Index: text.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/text.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- text.h	2 Jan 2006 22:58:59 -0000	1.1
+++ text.h	6 Jan 2006 10:45:42 -0000	1.2
@@ -53,6 +53,7 @@
 
 	uint16 _talkMessageY;
 	uint16 _talkMessageH;
+	bool printed() const { return _talkMessagePrinted; }
 private:
 	Screen *_screen;
 





More information about the Scummvm-git-logs mailing list