[Scummvm-git-logs] scummvm master -> 497e47abff5f8a809bb6cba04b429501f3b2c33b

sdelamarre noreply at scummvm.org
Sat Apr 29 21:49:16 UTC 2023


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
b3da790ad7 GOB: move Adibou1 setRenderFlag opcode to setupOpcodesDraw()
98204cb180 GOB: fix Adibou1 non-blocking videos
497e47abff GOB: fix animation when answering an exercise in some Adibou1 versions


Commit: b3da790ad76a3ad0f86f27d0fec2470a9394b26c
    https://github.com/scummvm/scummvm/commit/b3da790ad76a3ad0f86f27d0fec2470a9394b26c
Author: Simon Delamarre (simon.delamarre14 at gmail.com)
Date: 2023-04-29T23:47:51+02:00

Commit Message:
GOB: move Adibou1 setRenderFlag opcode to setupOpcodesDraw()

Changed paths:
    engines/gob/inter_adibou1.cpp


diff --git a/engines/gob/inter_adibou1.cpp b/engines/gob/inter_adibou1.cpp
index 7ea5364f8db..ff001ece2bd 100644
--- a/engines/gob/inter_adibou1.cpp
+++ b/engines/gob/inter_adibou1.cpp
@@ -39,11 +39,11 @@ Inter_Adibou1::Inter_Adibou1(GobEngine *vm) : Inter_v2(vm) {
 
 void Inter_Adibou1::setupOpcodesDraw() {
 	Inter_v2::setupOpcodesDraw();
+	OPCODEDRAW(0x0A, o1_setRenderFlags);
 }
 
 void Inter_Adibou1::setupOpcodesFunc() {
 	Inter_v2::setupOpcodesFunc();
-	OPCODEDRAW(0x0A, o1_setRenderFlags);
 }
 
 void Inter_Adibou1::setupOpcodesGob() {


Commit: 98204cb180f7bcc732255b3ca88b8cd574bd600e
    https://github.com/scummvm/scummvm/commit/98204cb180f7bcc732255b3ca88b8cd574bd600e
Author: Simon Delamarre (simon.delamarre14 at gmail.com)
Date: 2023-04-29T23:47:51+02:00

Commit Message:
GOB: fix Adibou1 non-blocking videos

A 1994 German version of Adibou1 already uses this "non-blocking video" feature, which had been found only in later games (e.g. Urban Runner, 1996) until now.

Fixes Adibou's song sound when completing an exercise.

Changed paths:
    engines/gob/inter_v2.cpp


diff --git a/engines/gob/inter_v2.cpp b/engines/gob/inter_v2.cpp
index a47b92b4f68..a8dc695259e 100644
--- a/engines/gob/inter_v2.cpp
+++ b/engines/gob/inter_v2.cpp
@@ -970,7 +970,11 @@ void Inter_v2::o2_playImd() {
 	bool close = (props.lastFrame == -1);
 	if (props.startFrame == -2) {
 		props.startFrame = 0;
-		props.lastFrame  = 0;
+		if (_vm->getGameType() == kGameTypeAdibou1) {
+			props.lastFrame  = -1;
+			props.noBlock    = true;
+		} else
+			props.lastFrame  = 0;
 		close = false;
 	}
 


Commit: 497e47abff5f8a809bb6cba04b429501f3b2c33b
    https://github.com/scummvm/scummvm/commit/497e47abff5f8a809bb6cba04b429501f3b2c33b
Author: Simon Delamarre (simon.delamarre14 at gmail.com)
Date: 2023-04-29T23:47:51+02:00

Commit Message:
GOB: fix animation when answering an exercise in some Adibou1 versions

These animations are supposed to loop while there is a sound playing (here a VMD
with a spoken phrase from Adibou). Scripts do that by checking the value of a
special game variable (VAR(1) = isSoundPlaying) updated by the engine.

Changed paths:
    engines/gob/inter.cpp
    engines/gob/videoplayer.cpp
    engines/gob/videoplayer.h


diff --git a/engines/gob/inter.cpp b/engines/gob/inter.cpp
index 2f458ccdddc..fd5ddac51c4 100644
--- a/engines/gob/inter.cpp
+++ b/engines/gob/inter.cpp
@@ -173,7 +173,11 @@ void Inter::storeKey(int16 key) {
 	WRITE_VAR(12, _vm->_util->getTimeKey() - _vm->_game->_startTimeKey);
 
 	storeMouse();
-	WRITE_VAR(1, _vm->_sound->blasterPlayingSound());
+	bool isSoundPlaying = _vm->_sound->blasterPlayingSound() ||
+						  (_vm->getGameType() == kGameTypeAdibou1 && // NOTE: may be needed by other games as well
+						   _vm->_vidPlayer->isSoundPlaying());
+
+	WRITE_VAR(1, isSoundPlaying);
 
 	if      (key == kKeyUp)
 		key =    kShortKeyUp;
diff --git a/engines/gob/videoplayer.cpp b/engines/gob/videoplayer.cpp
index 971bb58718e..280d4dfb740 100644
--- a/engines/gob/videoplayer.cpp
+++ b/engines/gob/videoplayer.cpp
@@ -397,6 +397,11 @@ bool VideoPlayer::isPlayingLive() const {
 	return video && video->live;
 }
 
+bool VideoPlayer::isSoundPlaying() const {
+	const Video *video = getVideoBySlot(0);
+	return video && video->decoder && video->decoder->isSoundPlaying();
+}
+
 void VideoPlayer::updateLive(bool force) {
 	for (int i = 0; i < kVideoSlotCount; i++)
 		updateLive(i, force);
diff --git a/engines/gob/videoplayer.h b/engines/gob/videoplayer.h
index a4c5f40215b..2e2102e0767 100644
--- a/engines/gob/videoplayer.h
+++ b/engines/gob/videoplayer.h
@@ -126,6 +126,7 @@ public:
 	int32 getExpectedFrameFromCurrentTime(int slot);
 
 	bool isPlayingLive() const;
+	bool isSoundPlaying() const;
 
 	void updateLive(bool force = false);
 




More information about the Scummvm-git-logs mailing list