[Scummvm-cvs-logs] SF.net SVN: scummvm:[47927] scummvm/trunk/engines/gob

strangerke at users.sourceforge.net strangerke at users.sourceforge.net
Sat Feb 6 09:11:17 CET 2010


Revision: 47927
          http://scummvm.svn.sourceforge.net/scummvm/?rev=47927&view=rev
Author:   strangerke
Date:     2010-02-06 08:10:56 +0000 (Sat, 06 Feb 2010)

Log Message:
-----------
Fascination: Fix lamp problem in parking lot.

Modified Paths:
--------------
    scummvm/trunk/engines/gob/inter.h
    scummvm/trunk/engines/gob/inter_fascin.cpp

Modified: scummvm/trunk/engines/gob/inter.h
===================================================================
--- scummvm/trunk/engines/gob/inter.h	2010-02-06 05:29:08 UTC (rev 47926)
+++ scummvm/trunk/engines/gob/inter.h	2010-02-06 08:10:56 UTC (rev 47927)
@@ -432,6 +432,9 @@
 
 	void oFascin_playProtracker(OpGobParams &params);
 
+	bool oFascin_copySprite(OpFuncParams &params);
+	bool oFascin_keyFunc(OpFuncParams &params);
+
 	void oFascin_playTirb(OpGobParams &params);
 	void oFascin_playTira(OpGobParams &params);
 	void oFascin_loadExtasy(OpGobParams &params);
@@ -447,8 +450,8 @@
 	void oFascin_geUnknown1000(OpGobParams &params);
 	void oFascin_geUnknown1001(OpGobParams &params);
 	void oFascin_geUnknown1002(OpGobParams &params);
-	bool oFascin_feUnknown4(OpFuncParams &params);
-	bool oFascin_feUnknown27(OpFuncParams &params);
+//	bool oFascin_feUnknown4(OpFuncParams &params);
+//	bool oFascin_feUnknown27(OpFuncParams &params);
 	void oFascin_setWinSize();
 	void oFascin_closeWin();
 	void oFascin_activeWin();

Modified: scummvm/trunk/engines/gob/inter_fascin.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter_fascin.cpp	2010-02-06 05:29:08 UTC (rev 47926)
+++ scummvm/trunk/engines/gob/inter_fascin.cpp	2010-02-06 08:10:56 UTC (rev 47927)
@@ -25,6 +25,7 @@
 
 #include "common/endian.h"
 
+#include "gob/hotspots.h"
 #include "gob/gob.h"
 #include "gob/inter.h"
 #include "gob/global.h"
@@ -85,6 +86,8 @@
 	Inter_v2::setupOpcodesFunc();
 
 	OPCODEFUNC(0x09, o1_assign);
+	OPCODEFUNC(0x14, oFascin_keyFunc);
+	OPCODEFUNC(0x32, oFascin_copySprite);
 }
 
 void Inter_Fascination::setupOpcodesGob() {
@@ -108,6 +111,74 @@
 	OPCODEGOB(1002, oFascin_geUnknown1002); //to be replaced by o2_stopProtracker when protrackerPlay is fixed
 }
 
+
+bool Inter_Fascination::oFascin_copySprite(OpFuncParams &params) {
+	_vm->_draw->_sourceSurface = _vm->_game->_script->readInt16();
+	_vm->_draw->_destSurface = _vm->_game->_script->readInt16();
+	_vm->_draw->_spriteLeft = _vm->_game->_script->readValExpr();
+	_vm->_draw->_spriteTop = _vm->_game->_script->readValExpr();
+	_vm->_draw->_spriteRight = _vm->_game->_script->readValExpr();
+	_vm->_draw->_spriteBottom = _vm->_game->_script->readValExpr();
+
+	_vm->_draw->_destSpriteX = _vm->_game->_script->readValExpr();
+	_vm->_draw->_destSpriteY = _vm->_game->_script->readValExpr();
+
+	_vm->_draw->_transparency = _vm->_game->_script->readInt16();
+
+	_vm->_draw->spriteOperation(DRAW_BLITSURF);
+	return false;
+}
+
+bool Inter_Fascination::oFascin_keyFunc(OpFuncParams &params) {
+	static uint32 lastCalled = 0;
+	int16 cmd;
+	int16 key;
+	uint32 now;
+
+	cmd = _vm->_game->_script->readInt16();
+	animPalette();
+	_vm->_draw->blitInvalidated();
+
+	now = _vm->_util->getTimeKey();
+	if (!_noBusyWait)
+		if ((now - lastCalled) <= 20)
+			_vm->_util->longDelay(1);
+	lastCalled = now;
+	_noBusyWait = false;
+
+	switch (cmd) {
+	case 0:
+		key = _vm->_game->_hotspots->check(0, 0);
+		storeKey(key);
+
+		_vm->_util->clearKeyBuf();
+		break;
+
+	case 1:
+		key = _vm->_game->checkKeys(&_vm->_global->_inter_mouseX,
+				&_vm->_global->_inter_mouseY, &_vm->_game->_mouseButtons, 0);
+		storeKey(key);
+		break;
+
+	case 2:
+//		_vm->_util->processInput(true);
+//		key = _vm->_util->checkKey();
+//		WRITE_VAR(0, key);
+//		_vm->_util->clearKeyBuf();
+		_vm->_util->delay(cmd);
+		break;
+
+	default:
+		_vm->_util->processInput(true);
+		key = _vm->_util->checkKey();
+		WRITE_VAR(0, key);
+		_vm->_util->clearKeyBuf();
+		break;
+	}
+
+	return false;
+}
+
 void Inter_Fascination::oFascin_playTirb(OpGobParams &params) {
 	warning("funcPlayImd with parameter : 'tirb.imd'");
 
@@ -187,6 +258,7 @@
 	warning("Fascination o2_stopProtracker - Commented out");
 }
 
+/*
 bool Inter_Fascination::oFascin_feUnknown4(OpFuncParams &params) {
 	warning("Fascination Unknown FE Function 4");
 	return true;
@@ -196,6 +268,7 @@
 	warning("Fascination Unknown FE Function 27h");
 	return true;
 }
+*/
 
 void Inter_Fascination::oFascin_setWinSize() {
 	_vm->_draw->_winMaxWidth  = _vm->_game->_script->readUint16();
@@ -244,5 +317,4 @@
 void Inter_Fascination::oFascin_playProtracker(OpGobParams &params) {
 	_vm->_sound->protrackerPlay("mod.extasy");
 }
-
 } // End of namespace Gob


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