[Scummvm-cvs-logs] SF.net SVN: scummvm: [24214] scummvm/trunk/engines/scumm

aquadran at users.sourceforge.net aquadran at users.sourceforge.net
Sun Oct 8 20:23:00 CEST 2006


Revision: 24214
          http://svn.sourceforge.net/scummvm/?rev=24214&view=rev
Author:   aquadran
Date:     2006-10-08 11:22:51 -0700 (Sun, 08 Oct 2006)

Log Message:
-----------
small unify handleIACT function

Modified Paths:
--------------
    scummvm/trunk/engines/scumm/insane/insane.h
    scummvm/trunk/engines/scumm/insane/insane_iact.cpp
    scummvm/trunk/engines/scumm/smush/smush_player.cpp

Modified: scummvm/trunk/engines/scumm/insane/insane.h
===================================================================
--- scummvm/trunk/engines/scumm/insane/insane.h	2006-10-08 18:22:28 UTC (rev 24213)
+++ scummvm/trunk/engines/scumm/insane/insane.h	2006-10-08 18:22:51 UTC (rev 24214)
@@ -64,7 +64,8 @@
 	void procPostRendering(byte *renderBitmap, int32 codecparam, int32 setupsan12,
 						   int32 setupsan13, int32 curFrame, int32 maxFrame);
 	void procIACT(byte *renderBitmap, int32 codecparam, int32 setupsan12,
-				  int32 setupsan13, Chunk &b, int32 size, int32 flags);
+				  int32 setupsan13, Chunk &b, int32 size, int32 flags, int16 par1,
+				  int16 par2, int16 par3, int16 par4);
 	void procSKIP(Chunk &b);
 	void escapeKeyHandler(void);
 
@@ -431,17 +432,23 @@
 	void ouchSoundEnemy(void);
 	bool weaponEnemyIsEffective(void);
 	void iactScene1(byte *renderBitmap, int32 codecparam, int32 setupsan12,
-				  int32 setupsan13, Chunk &b, int32 size, int32 flags);
+				  int32 setupsan13, Chunk &b, int32 size, int32 flags,
+				  int16 par1, int16 par2, int16 par3, int16 par4);
 	void iactScene3(byte *renderBitmap, int32 codecparam, int32 setupsan12,
-				  int32 setupsan13, Chunk &b, int32 size, int32 flags);
+				  int32 setupsan13, Chunk &b, int32 size, int32 flags,
+				  int16 command, int16 par1, int16, int16);
 	void iactScene4(byte *renderBitmap, int32 codecparam, int32 setupsan12,
-				  int32 setupsan13, Chunk &b, int32 size, int32 flags);
+				  int32 setupsan13, Chunk &b, int32 size, int32 flags,
+				  int16 par1, int16 par2, int16 par3, int16 par4);
 	void iactScene6(byte *renderBitmap, int32 codecparam, int32 setupsan12,
-				  int32 setupsan13, Chunk &b, int32 size, int32 flags);
+				  int32 setupsan13, Chunk &b, int32 size, int32 flags,
+				  int16 par1, int16 par2, int16 par3, int16 par4);
 	void iactScene17(byte *renderBitmap, int32 codecparam, int32 setupsan12,
-				  int32 setupsan13, Chunk &b, int32 size, int32 flags);
+				  int32 setupsan13, Chunk &b, int32 size, int32 flags,
+				  int16 par1, int16 par2, int16 par3, int16 par4);
 	void iactScene21(byte *renderBitmap, int32 codecparam, int32 setupsan12,
-				  int32 setupsan13, Chunk &b, int32 size, int32 flags);
+				  int32 setupsan13, Chunk &b, int32 size, int32 flags,
+				  int16 par1, int16 par2, int16 par3, int16 par4);
 	bool isBitSet(int n);
 	void setBit(int n);
 	void clearBit(int n);

Modified: scummvm/trunk/engines/scumm/insane/insane_iact.cpp
===================================================================
--- scummvm/trunk/engines/scumm/insane/insane_iact.cpp	2006-10-08 18:22:28 UTC (rev 24213)
+++ scummvm/trunk/engines/scumm/insane/insane_iact.cpp	2006-10-08 18:22:51 UTC (rev 24214)
@@ -36,45 +36,40 @@
 namespace Scumm {
 
 void Insane::procIACT(byte *renderBitmap, int32 codecparam, int32 setupsan12,
-					  int32 setupsan13, Chunk &b, int32 size, int32 flags) {
+					  int32 setupsan13, Chunk &b, int32 size, int32 flags,
+					  int16 par1, int16 par2, int16 par3, int16 par4) {
 	if (_keyboardDisable)
 		return;
 
 	switch (_currSceneId) {
 	case 1:
-		iactScene1(renderBitmap, codecparam, setupsan12, setupsan13, b, size, flags);
+		iactScene1(renderBitmap, codecparam, setupsan12, setupsan13, b, size, flags, par1, par2, par3, par4);
 		break;
 	case 3:
 	case 13:
-		iactScene3(renderBitmap, codecparam, setupsan12, setupsan13, b, size, flags);
+		iactScene3(renderBitmap, codecparam, setupsan12, setupsan13, b, size, flags, par1, par2, par3, par4);
 		break;
 	case 4:
 	case 5:
-		iactScene4(renderBitmap, codecparam, setupsan12, setupsan13, b, size, flags);
+		iactScene4(renderBitmap, codecparam, setupsan12, setupsan13, b, size, flags, par1, par2, par3, par4);
 		break;
 	case 6:
-		iactScene6(renderBitmap, codecparam, setupsan12, setupsan13, b, size, flags);
+		iactScene6(renderBitmap, codecparam, setupsan12, setupsan13, b, size, flags, par1, par2, par3, par4);
 		break;
 	case 17:
-		iactScene17(renderBitmap, codecparam, setupsan12, setupsan13, b, size, flags);
+		iactScene17(renderBitmap, codecparam, setupsan12, setupsan13, b, size, flags, par1, par2, par3, par4);
 		break;
 	case 21:
-		iactScene21(renderBitmap, codecparam, setupsan12, setupsan13, b, size, flags);
+		iactScene21(renderBitmap, codecparam, setupsan12, setupsan13, b, size, flags, par1, par2, par3, par4);
 		break;
 	}
 }
 
 void Insane::iactScene1(byte *renderBitmap, int32 codecparam, int32 setupsan12,
-					  int32 setupsan13, Chunk &b, int32 size, int32 flags) {
-	_player->checkBlock(b, TYPE_IACT, 8);
+					  int32 setupsan13, Chunk &b, int32 size, int32 flags,
+					  int16 par1, int16 par2, int16 par3, int16 par4) {
+	int16 par5, par6, par7, par9, par11, par13, tmp;
 
-	int16 par1, par2, par3, par4, par5, par6, par7, par9, par11, par13, tmp;
-
-	par1 = b.getWord(); // cx
-	par2 = b.getWord(); // dx
-	par3 = b.getWord(); // si
-	par4 = b.getWord(); // bx
-
 	switch (par1) {
 	case 2: // PATCH
 		if (par3 != 1)
@@ -298,16 +293,11 @@
 }
 
 void Insane::iactScene3(byte *renderBitmap, int32 codecparam, int32 setupsan12,
-					  int32 setupsan13, Chunk &b, int32 size, int32 flags) {
-	_player->checkBlock(b, TYPE_IACT, 8);
-
-	int command, par1, par2, par3, tmp;
-	command = b.getWord();
-	par1 = b.getWord();
+					  int32 setupsan13, Chunk &b, int32 size, int32 flags,
+					  int16 command, int16 par1, int16, int16) {
+	int par2, par3;
 	if (command == 6) {
 		if (par1 == 9) {
-			tmp = b.getWord();  // ptr + 4
-			tmp = b.getWord();  // ptr + 6
 			par2 = b.getWord(); // ptr + 8
 			par3 = b.getWord(); // ptr + 10
 
@@ -326,16 +316,10 @@
 }
 
 void Insane::iactScene4(byte *renderBitmap, int32 codecparam, int32 setupsan12,
-					  int32 setupsan13, Chunk &b, int32 size, int32 flags) {
-	_player->checkBlock(b, TYPE_IACT, 8);
+					  int32 setupsan13, Chunk &b, int32 size, int32 flags,
+					  int16 par1, int16 par2, int16 par3, int16 par4) {
+	int16 par5;
 
-	int16 par1, par2, par3, par4, par5;
-
-	par1 = b.getWord(); // edx
-	par2 = b.getWord(); // bx
-	par3 = b.getWord();
-	par4 = b.getWord(); // cx
-
 	switch (par1) {
 	case 2:
 	case 4:
@@ -408,16 +392,10 @@
 }
 
 void Insane::iactScene6(byte *renderBitmap, int32 codecparam, int32 setupsan12,
-					  int32 setupsan13, Chunk &b, int32 size, int32 flags) {
-	_player->checkBlock(b, TYPE_IACT, 8);
+					  int32 setupsan13, Chunk &b, int32 size, int32 flags,
+					  int16 par1, int16 par2, int16 par3, int16 par4) {
+	int16 par5;
 
-	int16 par1, par2, par3, par4, par5;
-
-	par1 = b.getWord();
-	par2 = b.getWord(); // bx
-	par3 = b.getWord();
-	par4 = b.getWord();
-
 	switch (par1) {
 	case 7:
 		par5 = b.getWord();
@@ -499,15 +477,8 @@
 }
 
 void Insane::iactScene17(byte *renderBitmap, int32 codecparam, int32 setupsan12,
-					  int32 setupsan13, Chunk &b, int32 size, int32 flags) {
-	_player->checkBlock(b, TYPE_IACT, 8);
-	int16 par1, par2, par3, par4;
-
-	par1 = b.getWord(); // dx
-	par2 = b.getWord(); // cx
-	par3 = b.getWord(); // di
-	par4 = b.getWord();
-
+					  int32 setupsan13, Chunk &b, int32 size, int32 flags,
+					  int16 par1, int16 par2, int16 par3, int16 par4) {
 	switch (par1) {
 	case 2:
 	case 3:
@@ -552,7 +523,8 @@
 }
 
 void Insane::iactScene21(byte *renderBitmap, int32 codecparam, int32 setupsan12,
-					  int32 setupsan13, Chunk &b, int32 size, int32 flags) {
+					  int32 setupsan13, Chunk &b, int32 size, int32 flags,
+  					  int16 par1, int16 par2, int16 par3, int16 par4) {
 	// void implementation
 }
 

Modified: scummvm/trunk/engines/scumm/smush/smush_player.cpp
===================================================================
--- scummvm/trunk/engines/scumm/smush/smush_player.cpp	2006-10-08 18:22:28 UTC (rev 24213)
+++ scummvm/trunk/engines/scumm/smush/smush_player.cpp	2006-10-08 18:22:51 UTC (rev 24214)
@@ -432,13 +432,22 @@
 
 void SmushPlayer::handleIACT(Chunk &b) {
 	checkBlock(b, TYPE_IACT, 8);
-	debugC(DEBUG_SMUSH, "SmushPlayer::handleImuseAction()");
+	debugC(DEBUG_SMUSH, "SmushPlayer::IACT()");
 
-	/* int code = */ b.getWord();
+	int code = b.getWord();
 	int flags = b.getWord();
 	int unknown = b.getShort();
 	int track_flags = b.getWord();
 
+	if ((code != 8) && (flags != 46)) {
+		_vm->_insane->procIACT(_dst, 0, 0, 0, b, 0, 0, code, flags, unknown, track_flags);
+		return;
+	}
+
+	if (_compressedFileMode) {
+		return;
+	}
+
 	assert(flags == 46 && unknown == 0);
 	int track_id = b.getWord();
 	int index = b.getWord();
@@ -973,13 +982,7 @@
 			handleDeltaPalette(*sub);
 			break;
 		case TYPE_IACT:
-			// FIXME: check parameters
-			if (_insanity)
-				_vm->_insane->procIACT(_dst, 0, 0, 0, *sub, 0, 0);
-			else {
-				if (!_compressedFileMode)
-					handleIACT(*sub);
-			}
+			handleIACT(*sub);
 			break;
 		case TYPE_STOR:
 			handleStore(*sub);


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