[Scummvm-cvs-logs] CVS: scummvm/scumm sound.cpp,1.355,1.356 sound.h,1.68,1.69 string.cpp,1.227,1.228

Travis Howell kirben at users.sourceforge.net
Sat Jul 24 06:37:06 CEST 2004


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29442/scumm

Modified Files:
	sound.cpp sound.h string.cpp 
Log Message:

Corrtection from disasm., mouth sync uses speech timing.
Fix bug #


Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.cpp,v
retrieving revision 1.355
retrieving revision 1.356
diff -u -d -r1.355 -r1.356
--- sound.cpp	19 Jul 2004 10:50:52 -0000	1.355
+++ sound.cpp	24 Jul 2004 13:36:26 -0000	1.356
@@ -64,7 +64,6 @@
 	_talk_sound_b1(0),
 	_talk_sound_b2(0),
 	_talk_sound_mode(0),
-	_talk_sound_frame(0),
 	_mouthSyncMode(false),
 	_endOfMouthSync(false),
 	_curSoundPos(0),
@@ -507,7 +506,7 @@
 	const int act = _vm->getTalkingActor();
 	if ((_sfxMode & 2) && act != 0) {
 		Actor *a;
-		bool b, finished;
+		bool finished;
 
 		if (_vm->_imuseDigital) {
 			finished = !isSoundRunning(kTalkSoundID);
@@ -515,18 +514,20 @@
 			finished = !_talkChannelHandle.isActive();
 		}
 
-		if ((uint) act < 0x80 && ((_vm->_version == 8) || (_vm->_version <= 7 && !_vm->_string[0].no_talk_anim)) && (finished || !_endOfMouthSync)) {
+		if ((uint) act < 0x80 && ((_vm->_version == 8) || (_vm->_version <= 7 && !_vm->_string[0].no_talk_anim))) {
 			a = _vm->derefActor(act, "processSfxQueues");
 			if (a->isInCurrentRoom()) {
-				b = finished || isMouthSyncOff(_curSoundPos);
-				if (_mouthSyncMode != b) {
-					_mouthSyncMode = b;
-					if (_talk_sound_frame != -1) {
-						a->runActorTalkScript(_talk_sound_frame);
-						_talk_sound_frame = -1;
-					} else
-						a->runActorTalkScript(b ? a->talkStopFrame : a->talkStartFrame);
+				if (isMouthSyncOff(_curSoundPos) && !_mouthSyncMode) {
+					if (!_endOfMouthSync)
+						a->runActorTalkScript(a->talkStopFrame);
+					_mouthSyncMode = 0;
+				} else  if (isMouthSyncOff(_curSoundPos) == 0 && !_mouthSyncMode) {
+					a->runActorTalkScript(a->talkStartFrame);
+					_mouthSyncMode = 1;
 				}
+
+				if (_vm->_version <= 6 && finished)
+					a->runActorTalkScript(a->talkStopFrame);
 			}
 		}
 
@@ -883,7 +884,6 @@
 		_talk_sound_b2 = b;
 	}
 
-	_talk_sound_frame = frame;
 	_talk_sound_mode |= mode;
 }
 

Index: sound.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.h,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -d -r1.68 -r1.69
--- sound.h	14 Jul 2004 07:29:09 -0000	1.68
+++ sound.h	24 Jul 2004 13:36:26 -0000	1.69
@@ -64,7 +64,6 @@
 
 	uint32 _talk_sound_a1, _talk_sound_a2, _talk_sound_b1, _talk_sound_b2;
 	byte _talk_sound_mode;
-	int _talk_sound_frame;
 	bool _mouthSyncMode;
 	bool _endOfMouthSync;
 	uint16 _mouthSyncTimes[64];

Index: string.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/string.cpp,v
retrieving revision 1.227
retrieving revision 1.228
diff -u -d -r1.227 -r1.228
--- string.cpp	22 Jul 2004 05:53:56 -0000	1.227
+++ string.cpp	24 Jul 2004 13:36:26 -0000	1.228
@@ -77,7 +77,7 @@
 	uint32 talk_sound_a = 0;
 	uint32 talk_sound_b = 0;
 	int s, i, t, c;
-	int frme = -1;
+	int frme;
 	Actor *a;
 	byte *buffer;
 
@@ -231,7 +231,7 @@
 			case 9:
 				frme = *buffer++;
 				frme |= *buffer++ << 8;
-				a->startAnimActor(frme != -1 ? frme : a->talkStartFrame);
+				a->startAnimActor(frme);
 				break;
 			case 10:
 				talk_sound_a = buffer[0] | (buffer[1] << 8) | (buffer[4] << 16) | (buffer[5] << 24);





More information about the Scummvm-git-logs mailing list