[Scummvm-git-logs] scummvm master -> 6f2c6531b4e2ca1643f1521f6a08384af681f41a

mgerhardy noreply at scummvm.org
Fri Nov 26 19:59:11 UTC 2021


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

Summary:
7784a2bf4a TWINE: renamed some fla struct members
ec631fe252 TWINE: renamed fla constants and fixed kBlackFrame
d4a4a51e5f TWINE: don't try to draw the holo trajectory if we are running the demo
6f2c6531b4 TWINE: No music in FLA movie


Commit: 7784a2bf4af94e003b38f88ff42301cfe1fd9d03
    https://github.com/scummvm/scummvm/commit/7784a2bf4af94e003b38f88ff42301cfe1fd9d03
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-11-26T20:58:27+01:00

Commit Message:
TWINE: renamed some fla struct members

Changed paths:
    engines/twine/movies.cpp
    engines/twine/movies.h


diff --git a/engines/twine/movies.cpp b/engines/twine/movies.cpp
index 2c8d5df998..6acf431dac 100644
--- a/engines/twine/movies.cpp
+++ b/engines/twine/movies.cpp
@@ -164,25 +164,25 @@ void Movies::scaleFla2x() {
 void Movies::processFrame() {
 	FLASampleStruct sample;
 
-	_frameData.videoSize = _file.readSint16LE();
-	_frameData.frameVar0 = _file.readSint32LE();
-	if (_frameData.frameVar0 > _engine->_imageBuffer.w * _engine->_imageBuffer.h) {
-		warning("Skipping video frame - it would exceed the screen buffer: %i", _frameData.frameVar0);
+	_frameData.nbFrames = _file.readSint16LE();
+	_frameData.offsetNextFrame = _file.readSint32LE();
+	if (_frameData.offsetNextFrame > _engine->_imageBuffer.w * _engine->_imageBuffer.h) {
+		warning("Skipping video frame - it would exceed the screen buffer: %i", _frameData.offsetNextFrame);
 		return;
 	}
 
 	uint8 *outBuf = (uint8 *)_engine->_imageBuffer.getPixels();
-	_file.read(outBuf, _frameData.frameVar0);
+	_file.read(outBuf, _frameData.offsetNextFrame);
 
-	if ((int32)_frameData.videoSize <= 0) {
+	if ((int32)_frameData.nbFrames <= 0) {
 		return;
 	}
 
-	Common::MemoryReadStream stream(outBuf, _frameData.frameVar0);
-	for (int32 frame = 0; frame < _frameData.videoSize; ++frame) {
+	Common::MemoryReadStream stream(outBuf, _frameData.offsetNextFrame);
+	for (int32 frame = 0; frame < _frameData.nbFrames; ++frame) {
 		const uint16 opcode = stream.readUint16LE();
 		const uint16 opcodeBlockSize = stream.readUint16LE();
-		const int32 pos = stream.pos();
+		const int64 pos = stream.pos();
 
 		switch (opcode) {
 		case kLoadPalette: {
@@ -386,18 +386,18 @@ bool Movies::playMovie(const char *name) {
 	}
 
 	const uint32 version = _file.readUint32LE();
-	_file.skip(2);
+	_file.skip(2); // version field is 5 bytes - and one padding byte
 	_flaHeaderData.numOfFrames = _file.readUint32LE();
 	_flaHeaderData.speed = _file.readByte();
-	_flaHeaderData.var1 = _file.readByte();
-	debug(2, "Unknown byte in fla file: %i", _flaHeaderData.var1);
+	_file.skip(1); // padding byte
 	_flaHeaderData.xsize = _file.readUint16LE();
 	_flaHeaderData.ysize = _file.readUint16LE();
 
 	_samplesInFla = (int16)_file.readUint16LE();
-	const uint16 unk2 = _file.readUint16LE();
-	debug(2, "Unknown uint16 in fla file: %i", unk2);
+	/*const uint16 offsetFrame1 =*/ _file.readUint16LE();
 
+	// sample number int16
+	// loop int16
 	_file.skip(4 * _samplesInFla);
 
 	bool finished = false;
diff --git a/engines/twine/movies.h b/engines/twine/movies.h
index f20e8f1ad9..ab1ab2b046 100644
--- a/engines/twine/movies.h
+++ b/engines/twine/movies.h
@@ -37,13 +37,11 @@ namespace TwinE {
 /** FLA movie header structure */
 struct FLAHeaderStruct {
 	/** FLA version */
-	int8 version[6] {0};
+	int8 version[5] {0};
 	/** Number of frames */
 	int32 numOfFrames = 0;
 	/** Frames per second */
-	int8 speed = 0;
-	/** Unknown var1 */
-	int8 var1 = 0;
+	int16 speed = 0;
 	/** Frame width */
 	int16 xsize = 0;
 	/** Frame height */
@@ -52,10 +50,8 @@ struct FLAHeaderStruct {
 
 /** FLA movie frame structure */
 struct FLAFrameDataStruct {
-	/** Current frame size */
-	int16 videoSize = 0;
-	/** Unknown frameVar0 */
-	int32 frameVar0 = 0;
+	int16 nbFrames = 0;
+	int32 offsetNextFrame = 0;
 };
 
 class TwinEEngine;


Commit: ec631fe25299d1ed17a02fc4de2d418b2a7c57af
    https://github.com/scummvm/scummvm/commit/ec631fe25299d1ed17a02fc4de2d418b2a7c57af
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-11-26T20:58:27+01:00

Commit Message:
TWINE: renamed fla constants and fixed kBlackFrame

Changed paths:
    engines/twine/movies.cpp


diff --git a/engines/twine/movies.cpp b/engines/twine/movies.cpp
index 6acf431dac..eab7852891 100644
--- a/engines/twine/movies.cpp
+++ b/engines/twine/movies.cpp
@@ -45,15 +45,15 @@ namespace TwinE {
 /** FLA Frame Opcode types */
 enum FlaFrameOpcode {
 	kLoadPalette = 1,
-	kFade = 2,
+	kInfo = 2,
 	kPlaySample = 3,
 	kSampleBalance = 4,
 	kStopSample = 5,
 	kDeltaFrame = 6,
 	kBlackFrame = 7,
-	kKeyFrame = 8,
+	kBrownFrame = 8,
 	kCopy = 9,
-	kCopy2 = 16
+	kFliCopy = 16
 };
 
 /** FLA movie sample structure */
@@ -192,7 +192,7 @@ void Movies::processFrame() {
 			stream.read(dest, numOfColor * 3);
 			break;
 		}
-		case kFade: {
+		case kInfo: {
 			int16 innerOpcpde = stream.readSint16LE();
 			switch (innerOpcpde) {
 			case 1: // fla flute
@@ -211,6 +211,7 @@ void Movies::processFrame() {
 				_flaPaletteVar = true;
 				break;
 			case 4:
+				// TODO: fade out for 1 second before we stop it
 				_engine->_music->stopMidiMusic();
 				break;
 			}
@@ -242,17 +243,17 @@ void Movies::processFrame() {
 			}
 			break;
 		}
-		case kKeyFrame: {
-			drawKeyFrame(stream, FLASCREEN_WIDTH, FLASCREEN_HEIGHT);
+		case kBrownFrame: {
+			drawKeyFrame(stream, FLASCREEN_WIDTH, _flaHeaderData.ysize);
 			break;
 		}
 		case kBlackFrame: {
-			const Common::Rect rect(0, 0, 79, 199);
+			const Common::Rect rect(0, 0, FLASCREEN_WIDTH - 1, FLASCREEN_HEIGHT - 1);
 			_engine->_interface->drawFilledRect(rect, 0);
 			break;
 		}
 		case kCopy:
-		case kCopy2: {
+		case kFliCopy: {
 			const Common::Rect rect(0, 0, 80, 200);
 			byte *ptr = (byte *)_engine->_frontVideoBuffer.getPixels();
 			for (int y = rect.top; y < rect.bottom; ++y) {
@@ -267,6 +268,7 @@ void Movies::processFrame() {
 		case kSampleBalance: {
 			/* int16 num = */ stream.readSint16LE();
 			/* uint8 offset = */ stream.readByte();
+			stream.skip(1); // padding
 			/* int16 balance = */ stream.readSint16LE();
 			/* uint8 volumeLeft = */ stream.readByte();
 			/* uint8 volumeRight = */ stream.readByte();


Commit: d4a4a51e5f25582b0ad80cd23c817e41bce8e0b0
    https://github.com/scummvm/scummvm/commit/d4a4a51e5f25582b0ad80cd23c817e41bce8e0b0
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-11-26T20:58:47+01:00

Commit Message:
TWINE: don't try to draw the holo trajectory if we are running the demo

Changed paths:
    engines/twine/holomap.cpp


diff --git a/engines/twine/holomap.cpp b/engines/twine/holomap.cpp
index fc3ce3eb1c..8592c132af 100644
--- a/engines/twine/holomap.cpp
+++ b/engines/twine/holomap.cpp
@@ -329,6 +329,9 @@ void Holomap::renderHolomapVehicle(uint &frameNumber, ActorMoveStruct &move, Ani
 }
 
 void Holomap::drawHolomapTrajectory(int32 trajectoryIndex) {
+	if (_engine->isDemo()) {
+		return;
+	}
 	debug("Draw trajectory index %i", trajectoryIndex);
 
 	const Trajectory *data = _engine->_resources->getTrajectory(trajectoryIndex);


Commit: 6f2c6531b4e2ca1643f1521f6a08384af681f41a
    https://github.com/scummvm/scummvm/commit/6f2c6531b4e2ca1643f1521f6a08384af681f41a
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-11-26T20:58:47+01:00

Commit Message:
TWINE: No music in FLA movie

the original code only stops the samples - not the midi or cd music

Changed paths:
    engines/twine/movies.cpp


diff --git a/engines/twine/movies.cpp b/engines/twine/movies.cpp
index eab7852891..801749d6e4 100644
--- a/engines/twine/movies.cpp
+++ b/engines/twine/movies.cpp
@@ -375,8 +375,6 @@ bool Movies::playMovie(const char *name) {
 		return true;
 	}
 
-	_engine->_music->stopMusic();
-
 	_fadeOut = -1;
 	_fadeOutFrames = 0;
 




More information about the Scummvm-git-logs mailing list