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

Kirben at users.sourceforge.net Kirben at users.sourceforge.net
Sat Sep 18 16:18:48 CEST 2010


Revision: 52796
          http://scummvm.svn.sourceforge.net/scummvm/?rev=52796&view=rev
Author:   Kirben
Date:     2010-09-18 14:18:48 +0000 (Sat, 18 Sep 2010)

Log Message:
-----------
SCUMM: Fix bug #3070077 - MMC64: No music when Syd plays the piano.

Modified Paths:
--------------
    scummvm/trunk/engines/scumm/scumm.cpp
    scummvm/trunk/engines/scumm/scumm_v0.h
    scummvm/trunk/engines/scumm/sound.cpp
    scummvm/trunk/engines/scumm/sound.h
    scummvm/trunk/engines/scumm/vars.cpp
    scummvm/trunk/engines/scumm/verbs.cpp

Modified: scummvm/trunk/engines/scumm/scumm.cpp
===================================================================
--- scummvm/trunk/engines/scumm/scumm.cpp	2010-09-18 12:42:23 UTC (rev 52795)
+++ scummvm/trunk/engines/scumm/scumm.cpp	2010-09-18 14:18:48 UTC (rev 52796)
@@ -698,6 +698,10 @@
 	_activeObject2Inv = false;
 	_activeObjectObtained = false;
 	_activeObject2Obtained = false;
+
+	VAR_ACTIVE_ACTOR = 0xFF;
+	VAR_IS_SOUND_RUNNING = 0xFF;
+	VAR_ACTIVE_VERB = 0xFF;
 }
 
 ScummEngine_v6::ScummEngine_v6(OSystem *syst, const DetectorResult &dr)
@@ -1931,6 +1935,12 @@
 	}
 }
 
+void ScummEngine_v0::scummLoop(int delta) {
+	VAR(VAR_IS_SOUND_RUNNING) = (_sound->_lastSound && _sound->isSoundRunning(_sound->_lastSound) != 0);
+
+	ScummEngine::scummLoop(delta);
+}
+
 void ScummEngine::scummLoop(int delta) {
 	if (_game.version >= 3) {
 		VAR(VAR_TMR_1) += delta;

Modified: scummvm/trunk/engines/scumm/scumm_v0.h
===================================================================
--- scummvm/trunk/engines/scumm/scumm_v0.h	2010-09-18 12:42:23 UTC (rev 52795)
+++ scummvm/trunk/engines/scumm/scumm_v0.h	2010-09-18 14:18:48 UTC (rev 52796)
@@ -62,6 +62,7 @@
 
 	virtual void setupScummVars();
 	virtual void resetScummVars();
+	virtual void scummLoop(int delta);
 	virtual void decodeParseString();
 
 	virtual void processInput();
@@ -136,6 +137,10 @@
 	void o_endCutscene();
 	void o_beginOverride();
 	void o_setOwnerOf();
+
+	byte VAR_ACTIVE_ACTOR;
+	byte VAR_IS_SOUND_RUNNING;
+	byte VAR_ACTIVE_VERB;
 };
 
 

Modified: scummvm/trunk/engines/scumm/sound.cpp
===================================================================
--- scummvm/trunk/engines/scumm/sound.cpp	2010-09-18 12:42:23 UTC (rev 52795)
+++ scummvm/trunk/engines/scumm/sound.cpp	2010-09-18 14:18:48 UTC (rev 52796)
@@ -78,6 +78,7 @@
 	_curSoundPos(0),
 	_currentCDSound(0),
 	_currentMusic(0),
+	_lastSound(0),
 	_soundsPaused(false),
 	_sfxMode(0) {
 
@@ -95,6 +96,7 @@
 void Sound::addSoundToQueue(int sound, int heOffset, int heChannel, int heFlags) {
 	if (_vm->VAR_LAST_SOUND != 0xFF)
 		_vm->VAR(_vm->VAR_LAST_SOUND) = sound;
+	_lastSound = sound;
 
 	// HE music resources are in separate file
 	if (sound <= _vm->_numSounds)
@@ -789,6 +791,7 @@
 	}
 
 	// Clear the (secondary) sound queue
+	_lastSound = 0;
 	_soundQue2Pos = 0;
 	memset(_soundQue2, 0, sizeof(_soundQue2));
 

Modified: scummvm/trunk/engines/scumm/sound.h
===================================================================
--- scummvm/trunk/engines/scumm/sound.h	2010-09-18 12:42:23 UTC (rev 52795)
+++ scummvm/trunk/engines/scumm/sound.h	2010-09-18 14:18:48 UTC (rev 52796)
@@ -91,6 +91,7 @@
 
 	bool _soundsPaused;
 	byte _sfxMode;
+	uint _lastSound;
 
 public:
 	Sound(ScummEngine *parent, Audio::Mixer *mixer);

Modified: scummvm/trunk/engines/scumm/vars.cpp
===================================================================
--- scummvm/trunk/engines/scumm/vars.cpp	2010-09-18 12:42:23 UTC (rev 52795)
+++ scummvm/trunk/engines/scumm/vars.cpp	2010-09-18 14:18:48 UTC (rev 52796)
@@ -116,10 +116,10 @@
 	VAR_CAMERA_POS_X = 2;
 	VAR_HAVE_MSG = 3;
 	VAR_ROOM = 4;
-	//VAR_ACTIVE_ACTOR = 5;
+	VAR_ACTIVE_ACTOR = 5;
 	VAR_OVERRIDE = 6;
-	//VAR_IS_SOUND_RUNNING = 8;
-	//VAR_ACTIVE_VERB = 9;
+	VAR_IS_SOUND_RUNNING = 8;
+	VAR_ACTIVE_VERB = 9;
 	VAR_CHARCOUNT = 10;
 }
 

Modified: scummvm/trunk/engines/scumm/verbs.cpp
===================================================================
--- scummvm/trunk/engines/scumm/verbs.cpp	2010-09-18 12:42:23 UTC (rev 52795)
+++ scummvm/trunk/engines/scumm/verbs.cpp	2010-09-18 14:18:48 UTC (rev 52796)
@@ -745,13 +745,13 @@
 		runObjectScript(obj, entry, false, false, NULL);
 	} else if (entry != 13 && entry != 15) {
 		if (_activeVerb != 3) {
-			VAR(9) = entry;
+			VAR(VAR_ACTIVE_VERB) = entry;
 			runScript(3, 0, 0, 0);
 
 		// For some reasons, certain objects don't have a "give" script
-		} else if (VAR(5) > 0 && VAR(5) < 8) {
+		} else if (VAR(VAR_ACTIVE_ACTOR) > 0 && VAR(VAR_ACTIVE_ACTOR) < 8) {
 			if (_activeInventory)
-				setOwnerOf(_activeInventory, VAR(5));
+				setOwnerOf(_activeInventory, VAR(VAR_ACTIVE_ACTOR));
 		}
 	}
 }
@@ -955,7 +955,7 @@
 			return true;
 		}
 		_v0ObjectInInventory = true;
-		VAR(5) = _activeActor;
+		VAR(VAR_ACTIVE_ACTOR) = _activeActor;
 		runObject(_activeInventory , 3);
 		_v0ObjectInInventory = false;
 


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