[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