[Scummvm-cvs-logs] SF.net SVN: scummvm:[42560] scummvm/trunk/engines/agos/vga_e2.cpp

Kirben at users.sourceforge.net Kirben at users.sourceforge.net
Fri Jul 17 11:56:03 CEST 2009


Revision: 42560
          http://scummvm.svn.sourceforge.net/scummvm/?rev=42560&view=rev
Author:   Kirben
Date:     2009-07-17 09:56:03 +0000 (Fri, 17 Jul 2009)

Log Message:
-----------
Fix bug #2822956 - ELVIRA2: Crash at the beginning (regression).

Modified Paths:
--------------
    scummvm/trunk/engines/agos/vga_e2.cpp

Modified: scummvm/trunk/engines/agos/vga_e2.cpp
===================================================================
--- scummvm/trunk/engines/agos/vga_e2.cpp	2009-07-17 06:26:37 UTC (rev 42559)
+++ scummvm/trunk/engines/agos/vga_e2.cpp	2009-07-17 09:56:03 UTC (rev 42560)
@@ -207,6 +207,7 @@
 	uint16 speed = vcReadNextWord() + 1;
 
 	byte *src, *dst, *srcOffs, *srcOffs2, *dstOffs, *dstOffs2;
+	int16 xoffs, yoffs;
 	uint8 color = 0;
 
 	// Only uses Video Window 4
@@ -218,15 +219,13 @@
 	uint16 dissolveDelay = dissolveCheck * 2 / speed;
 	uint16 dissolveCount = dissolveCheck * 2 / speed;
 
-	Graphics::Surface *screen = _system->lockScreen();
+	int16 x = _videoWindows[num * 4 + 0] * 16;
+	int16 y = _videoWindows[num * 4 + 1];
 
-	int16 xoffs = _videoWindows[num * 4 + 0] * 16;
-	int16 yoffs = _videoWindows[num * 4 + 1];
-	int16 offs = xoffs + yoffs * screen->pitch;
-
 	uint16 count = dissolveCheck * 2;
 	while (count--) {
-		byte *dstPtr = (byte *)screen->pixels + offs;
+		Graphics::Surface *screen = _system->lockScreen();
+		byte *dstPtr = (byte *)screen->pixels + x + y * screen->pitch;
 
 		yoffs = _rnd.getRandomNumber(dissolveY);
 		dst = dstPtr + yoffs * screen->pitch;
@@ -285,6 +284,7 @@
 	uint16 speed = vcReadNextWord() + 1;
 
 	byte *dst, *dstOffs;
+	int16 xoffs, yoffs;
 
 	uint16 dissolveX = _videoWindows[num * 4 + 2] * 8;
 	uint16 dissolveY = (_videoWindows[num * 4 + 3] + 1) / 2;
@@ -292,15 +292,13 @@
 	uint16 dissolveDelay = dissolveCheck * 2 / speed;
 	uint16 dissolveCount = dissolveCheck * 2 / speed;
 
-	Graphics::Surface *screen = _system->lockScreen();
+	int16 x = _videoWindows[num * 4 + 0] * 16;
+	int16 y = _videoWindows[num * 4 + 1];
 
-	int16 xoffs = _videoWindows[num * 4 + 0] * 16;
-	int16 yoffs = _videoWindows[num * 4 + 1];
-	int16 offs = xoffs + yoffs * screen->pitch;
-
 	uint16 count = dissolveCheck * 2;
 	while (count--) {
-		byte *dstPtr = (byte *)screen->pixels + offs;
+		Graphics::Surface *screen = _system->lockScreen();
+		byte *dstPtr = (byte *)screen->pixels + x + y * screen->pitch;
 		color |= dstPtr[0] & 0xF0;
 
 		yoffs = _rnd.getRandomNumber(dissolveY);


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