[Scummvm-cvs-logs] SF.net SVN: scummvm:[49737] scummvm/trunk/engines/agi

sev at users.sourceforge.net sev at users.sourceforge.net
Tue Jun 15 12:29:21 CEST 2010


Revision: 49737
          http://scummvm.svn.sourceforge.net/scummvm/?rev=49737&view=rev
Author:   sev
Date:     2010-06-15 10:29:20 +0000 (Tue, 15 Jun 2010)

Log Message:
-----------
AGI: Fix bug #2960557.

Bug #2960557: "AGI: (Fan) SQ0 - Sprite (Ego) not erased".
Added a workaround. Actually root cause is not yet clear.

Modified Paths:
--------------
    scummvm/trunk/engines/agi/agi.h
    scummvm/trunk/engines/agi/detection_tables.h
    scummvm/trunk/engines/agi/view.cpp

Modified: scummvm/trunk/engines/agi/agi.h
===================================================================
--- scummvm/trunk/engines/agi/agi.h	2010-06-15 10:28:58 UTC (rev 49736)
+++ scummvm/trunk/engines/agi/agi.h	2010-06-15 10:29:20 UTC (rev 49737)
@@ -110,10 +110,11 @@
 	GID_SQ2,
 	GID_XMASCARD,
 	GID_FANMADE,
-	GID_GETOUTTASQ,
+	GID_GETOUTTASQ,	// Fanmade
+	GID_SQ0,				// Fanmade
 	GID_MICKEY,			// PreAGI
 	GID_WINNIE,			// PreAGI
-	GID_TROLL			// PreAGI
+	GID_TROLL				// PreAGI
 };
 
 } // End of namespace Agi

Modified: scummvm/trunk/engines/agi/detection_tables.h
===================================================================
--- scummvm/trunk/engines/agi/detection_tables.h	2010-06-15 10:28:58 UTC (rev 49736)
+++ scummvm/trunk/engines/agi/detection_tables.h	2010-06-15 10:29:20 UTC (rev 49737)
@@ -80,12 +80,12 @@
 
 #define GAME3_PS(id,name,fname,md5,size,ver,flags,gid,platform) GAME_LVFPN(id,name,fname,md5,size,Common::EN_ANY,ver,flags,gid,platform,GType_V3)
 
-#define FANMADE_ILVF(id,name,md5,lang,ver,features) GAME_LVFPN(id,name,"logdir",md5,-1,lang,ver,(GF_FANMADE|features),GID_FANMADE,Common::kPlatformPC,GType_V2)
+#define FANMADE_ILVF(id,name,md5,lang,ver,features) GAME_LVFPNF(id,name,"logdir",md5,-1,lang,ver,(GF_FANMADE|features),GID_FANMADE,Common::kPlatformPC,GType_V2)
 
-#define FANMADE_ISVP(id,name,md5,size,ver,platform) GAME_LVFPN(id,name,"logdir",md5,size,Common::EN_ANY,ver,GF_FANMADE,GID_FANMADE,platform,GType_V2)
-#define FANMADE_SVP(name,md5,size,ver,platform) GAME_LVFPNF("agi-fanmade",name,"logdir",md5,size,Common::EN_ANY,ver,GF_FANMADE,GID_FANMADE,platform,GType_V2)
+#define FANMADE_ISVP(id,name,md5,size,ver,platform) GAME_LVFPNF(id,name,"logdir",md5,size,Common::EN_ANY,ver,GF_FANMADE,GID_FANMADE,platform,GType_V2)
+#define FANMADE_SVP(name,md5,size,ver,platform) FANMADE_ISVP("agi-fanmade",name,md5,size,ver,platform)
 
-#define FANMADE_LVF(name,md5,lang,ver,features) GAME_LVFPNF("agi-fanmade",name,"logdir",md5,-1,lang,ver,(GF_FANMADE|features),GID_FANMADE,Common::kPlatformPC,GType_V2)
+#define FANMADE_LVF(name,md5,lang,ver,features) FANMADE_ILVF("agi-fanmade",name,md5,lang,ver,features)
 
 #define FANMADE_LF(name,md5,lang,features) FANMADE_LVF(name,md5,lang,0x2917,features)
 #define FANMADE_IF(id,name,md5,features) FANMADE_ILVF(id,name,md5,Common::EN_ANY,0x2917,features)
@@ -775,9 +775,9 @@
 	FANMADE("Snowboarding Demo (v1.0)", "24bb8f29f1eddb5c0a099705267c86e4"),
 	FANMADE("Solar System Tour", "b5a3d0f392dfd76a6aa63f3d5f578403"),
 	FANMADE("Sorceror's Appraisal", "fe62615557b3cb7b08dd60c9d35efef1"),
-	FANMADE_I("sq0", "v1.03", "d2fd6f7404e86182458494e64375e590"),
-	FANMADE_I("sq0", "v1.04", "2ad9d1a4624a98571ee77dcc83f231b6"),
-    FANMADE_ISVP("sq0", "", "e1a8e4efcce86e1efcaa14633b9eb986", 762, 0x2440, Common::kPlatformCoCo3),
+	GAME("sq0", "v1.03", "d2fd6f7404e86182458494e64375e590", 0x2917, GID_SQ0),
+	GAME("sq0", "v1.04", "2ad9d1a4624a98571ee77dcc83f231b6", 0x2917, GID_SQ0),
+	GAME_PS("sq0", "", "e1a8e4efcce86e1efcaa14633b9eb986", 762, 0x2440, GID_SQ0, Common::kPlatformCoCo3),
 	FANMADE_I("sqx", "v10.0 Feb 05", "c992ae2f8ab18360404efdf16fa9edd1"),
 	FANMADE_I("sqx", "v10.0 Jul 18", "812edec45cefad559d190ffde2f9c910"),
     FANMADE_ISVP("sqx", "", "f0a59044475a5fa37c055d8c3eb4d1a7", 768, 0x2440, Common::kPlatformCoCo3),

Modified: scummvm/trunk/engines/agi/view.cpp
===================================================================
--- scummvm/trunk/engines/agi/view.cpp	2010-06-15 10:28:58 UTC (rev 49736)
+++ scummvm/trunk/engines/agi/view.cpp	2010-06-15 10:29:20 UTC (rev 49737)
@@ -297,14 +297,17 @@
 
 	uint16 viewFlags = 0;
 
+	// WORKAROUND
 	// When setting a view to the view table, if there's already another view set in that
 	// view table entry and it's still drawn, erase the existing view before setting the new one
 	// Fixes bug #1658643: AGI: SQ1 (2.2 DOS ENG) Graphic error, ego leaves behind copy
 	// Update: Apparently, this makes ego dissapear at times, e.g. when textboxes are shown
 	// Therefore, it's limited to view 118 in SQ1 (Roger climbing the ladder)
 	// Fixes bug #1715284: Roger sometimes disappears
+	// Update: Added case fot bug #2960557: AGI: (Fan) SQ0 - Sprite (Ego) not erased
 	if (v->viewData != NULL) {
-		if (v->currentView == 118 && v->flags & DRAWN && getGameID() == GID_SQ1) {
+		if (((v->currentView == 118 &&  getGameID() == GID_SQ1) ||
+			 (v->currentView == 2 & (n == 254 || n == 255) && getGameID() == GID_SQ0)) && v->flags & DRAWN) {
 			viewFlags = v->flags;			// Store the flags for the view
 			_sprites->eraseUpdSprites();
 


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