[Scummvm-cvs-logs] scummvm master -> fb924089fc5f6968f5c86fc780131f67268e8de6

bluegr bluegr at gmail.com
Mon Dec 22 23:08:51 CET 2014


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:
58f7c12fa9 ZVISION: Remove dead code
4e60fa705f ZVISION: Fix regression from commit 3806aa4418
3f36cc94e4 ZVISION: Limit the default engine delay for all animations
fb924089fc ZVISION: Avoid using color masks for in-game animations


Commit: 58f7c12fa941265a79b453df9b32ec41c49d53c4
    https://github.com/scummvm/scummvm/commit/58f7c12fa941265a79b453df9b32ec41c49d53c4
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2014-12-23T00:07:44+02:00

Commit Message:
ZVISION: Remove dead code

Changed paths:
    engines/zvision/graphics/render_table.cpp



diff --git a/engines/zvision/graphics/render_table.cpp b/engines/zvision/graphics/render_table.cpp
index c30e0bd..df73247 100644
--- a/engines/zvision/graphics/render_table.cpp
+++ b/engines/zvision/graphics/render_table.cpp
@@ -81,27 +81,6 @@ const Common::Point RenderTable::convertWarpedCoordToFlatCoord(const Common::Poi
 	return newPoint;
 }
 
-uint16 mixTwoRGB(uint16 colorOne, uint16 colorTwo, float percentColorOne) {
-	assert(percentColorOne < 1.0f);
-
-	float rOne = float((colorOne & Graphics::ColorMasks<555>::kRedMask) >> Graphics::ColorMasks<555>::kRedShift);
-	float rTwo = float((colorTwo & Graphics::ColorMasks<555>::kRedMask) >> Graphics::ColorMasks<555>::kRedShift);
-	float gOne = float((colorOne & Graphics::ColorMasks<555>::kGreenMask) >> Graphics::ColorMasks<555>::kGreenShift);
-	float gTwo = float((colorTwo & Graphics::ColorMasks<555>::kGreenMask) >> Graphics::ColorMasks<555>::kGreenShift);
-	float bOne = float((colorOne & Graphics::ColorMasks<555>::kBlueMask) >> Graphics::ColorMasks<555>::kBlueShift);
-	float bTwo = float((colorTwo & Graphics::ColorMasks<555>::kBlueMask) >> Graphics::ColorMasks<555>::kBlueShift);
-
-	float rFinal = rOne * percentColorOne + rTwo * (1.0f - percentColorOne);
-	float gFinal = gOne * percentColorOne + gTwo * (1.0f - percentColorOne);
-	float bFinal = bOne * percentColorOne + bTwo * (1.0f - percentColorOne);
-
-	uint16 returnColor = (byte(rFinal + 0.5f) << Graphics::ColorMasks<555>::kRedShift) |
-	                     (byte(gFinal + 0.5f) << Graphics::ColorMasks<555>::kGreenShift) |
-	                     (byte(bFinal + 0.5f) << Graphics::ColorMasks<555>::kBlueShift);
-
-	return returnColor;
-}
-
 void RenderTable::mutateImage(uint16 *sourceBuffer, uint16 *destBuffer, uint32 destWidth, const Common::Rect &subRect) {
 	uint32 destOffset = 0;
 


Commit: 4e60fa705fd22069565cdb17c907f91301a67dc5
    https://github.com/scummvm/scummvm/commit/4e60fa705fd22069565cdb17c907f91301a67dc5
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2014-12-23T00:07:44+02:00

Commit Message:
ZVISION: Fix regression from commit 3806aa4418

Changed paths:
    engines/zvision/scripting/sidefx/music_node.cpp



diff --git a/engines/zvision/scripting/sidefx/music_node.cpp b/engines/zvision/scripting/sidefx/music_node.cpp
index 5659818..6be08b4 100644
--- a/engines/zvision/scripting/sidefx/music_node.cpp
+++ b/engines/zvision/scripting/sidefx/music_node.cpp
@@ -88,7 +88,7 @@ MusicNode::MusicNode(ZVision *engine, uint32 key, Common::String &filename, bool
 }
 
 MusicNode::~MusicNode() {
-	if (!_loaded)
+	if (_loaded)
 		_engine->_mixer->stopHandle(_handle);
 	if (_key != StateKey_NotSet)
 		_engine->getScriptManager()->setStateValue(_key, 2);


Commit: 3f36cc94e45d32dc4784c16ec91b6fc44dbf0ff7
    https://github.com/scummvm/scummvm/commit/3f36cc94e45d32dc4784c16ec91b6fc44dbf0ff7
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2014-12-23T00:07:45+02:00

Commit Message:
ZVISION: Limit the default engine delay for all animations

This fixes the lag between frames for all in-game animations
with a default frame delay

Changed paths:
    engines/zvision/scripting/actions.cpp
    engines/zvision/scripting/sidefx/animation_node.cpp
    engines/zvision/scripting/sidefx/animation_node.h



diff --git a/engines/zvision/scripting/actions.cpp b/engines/zvision/scripting/actions.cpp
index 0422a2c..0ada2ed 100644
--- a/engines/zvision/scripting/actions.cpp
+++ b/engines/zvision/scripting/actions.cpp
@@ -577,7 +577,7 @@ ActionPreloadAnimation::ActionPreloadAnimation(ZVision *engine, int32 slotkey, c
 
 	char fileName[25];
 
-	// The two %*u are always 0 and dont seem to have a use
+	// The two %*u are usually 0 and dont seem to have a use
 	sscanf(line.c_str(), "%25s %*u %*u %d %d", fileName, &_mask, &_framerate);
 
 	if (_mask > 0) {
@@ -1030,9 +1030,8 @@ bool ActionSyncSound::execute() {
 	if (!(fx->getType() & SideFX::SIDEFX_ANIM))
 		return true;
 
-	AnimationNode *animnode = (AnimationNode *)fx;
-	if (animnode->getFrameDelay() > 200) // Hack for fix incorrect framedelay in some animpreload
-		animnode->setNewFrameDelay(66); // ~15fps
+	if (((AnimationNode *)fx)->getFrameDelay() > 200)
+		warning("ActionSyncSound: animation frame delay is higher than 200");
 
 	_engine->getScriptManager()->addSideFX(new SyncSoundNode(_engine, _slotKey, _fileName, _syncto));
 	return true;
diff --git a/engines/zvision/scripting/sidefx/animation_node.cpp b/engines/zvision/scripting/sidefx/animation_node.cpp
index 3a21227..56f1fa3 100644
--- a/engines/zvision/scripting/sidefx/animation_node.cpp
+++ b/engines/zvision/scripting/sidefx/animation_node.cpp
@@ -42,6 +42,11 @@ AnimationNode::AnimationNode(ZVision *engine, uint32 controlKey, const Common::S
 	_animation = engine->loadAnimation(fileName);
 	_frmDelay = 1000.0 / _animation->getDuration().framerate();
 
+	// WORKAROUND: We do not allow the engine to delay more than 66 msec
+	// per frame (15fps max)
+	if (_frmDelay > 66)
+		_frmDelay = 66;
+
 	if (frate > 0)
 		_frmDelay = 1000.0 / frate;
 }
@@ -190,19 +195,6 @@ bool AnimationNode::stop() {
 	return false;
 }
 
-void AnimationNode::setNewFrameDelay(int32 newDelay) {
-	if (newDelay > 0) {
-		PlayNodes::iterator it = _playList.begin();
-		if (it != _playList.end()) {
-			playnode *nod = &(*it);
-			float percent = (float)nod->_delay / (float)_frmDelay;
-			nod->_delay = percent * newDelay; // Scale to new max
-		}
-
-		_frmDelay = newDelay;
-	}
-}
-
 int32 AnimationNode::getFrameDelay() {
 	return _frmDelay;
 }
diff --git a/engines/zvision/scripting/sidefx/animation_node.h b/engines/zvision/scripting/sidefx/animation_node.h
index 3adfd91..74941aa 100644
--- a/engines/zvision/scripting/sidefx/animation_node.h
+++ b/engines/zvision/scripting/sidefx/animation_node.h
@@ -73,7 +73,6 @@ public:
 
 	bool stop();
 
-	void setNewFrameDelay(int32 newDelay);
 	int32 getFrameDelay();
 };
 


Commit: fb924089fc5f6968f5c86fc780131f67268e8de6
    https://github.com/scummvm/scummvm/commit/fb924089fc5f6968f5c86fc780131f67268e8de6
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2014-12-23T00:07:45+02:00

Commit Message:
ZVISION: Avoid using color masks for in-game animations

This fixes the transparency for some in-game animations. Since colors
can be truncated with color masks, and since accurate colors are
required for transparency, color masks can't be used. This fixes the
transparency of the in-game item examination interface in ZGI

Changed paths:
    engines/zvision/video/rlf_decoder.cpp



diff --git a/engines/zvision/video/rlf_decoder.cpp b/engines/zvision/video/rlf_decoder.cpp
index bdb5dc1..d51dee0 100644
--- a/engines/zvision/video/rlf_decoder.cpp
+++ b/engines/zvision/video/rlf_decoder.cpp
@@ -30,8 +30,6 @@
 #include "common/debug.h"
 #include "common/endian.h"
 
-#include "graphics/colormasks.h"
-
 namespace ZVision {
 
 RLFDecoder::~RLFDecoder() {
@@ -62,7 +60,7 @@ RLFDecoder::RLFVideoTrack::RLFVideoTrack(Common::SeekableReadStream *stream)
 		return;
 	}
 
-	_currentFrameBuffer.create(_width, _height, Graphics::createPixelFormat<565>());
+	_currentFrameBuffer.create(_width, _height, Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0));
 	_frameBufferByteSize = _width * _height * sizeof(uint16);
 
 	_frames = new Frame[_frameCount];
@@ -243,8 +241,10 @@ void RLFDecoder::RLFVideoTrack::decodeMaskedRunLengthEncoding(int8 *source, int8
 				}
 
 				byte r, g, b;
-				Graphics::colorToRGB<Graphics::ColorMasks<555> >(READ_LE_UINT16(source + sourceOffset), r, g, b);
-				uint16 destColor = Graphics::RGBToColor<Graphics::ColorMasks<565> >(r, g, b);
+				// NOTE: Color masks can't be used here, since accurate colors
+				// are required to handle transparency correctly
+				Graphics::PixelFormat(2, 5, 5, 5, 0, 10, 5, 0, 0).colorToRGB(READ_LE_UINT16(source + sourceOffset), r, g, b);
+				uint16 destColor = Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0).RGBToColor(r, g, b);
 				WRITE_UINT16(dest + destOffset, destColor);
 
 				sourceOffset += 2;
@@ -290,8 +290,10 @@ void RLFDecoder::RLFVideoTrack::decodeSimpleRunLengthEncoding(int8 *source, int8
 				}
 
 				byte r, g, b;
-				Graphics::colorToRGB<Graphics::ColorMasks<555> >(READ_LE_UINT16(source + sourceOffset), r, g, b);
-				uint16 destColor = Graphics::RGBToColor<Graphics::ColorMasks<565> >(r, g, b);
+				// NOTE: Color masks can't be used here, since accurate colors
+				// are required to handle transparency correctly
+				Graphics::PixelFormat(2, 5, 5, 5, 0, 10, 5, 0, 0).colorToRGB(READ_LE_UINT16(source + sourceOffset), r, g, b);
+				uint16 destColor = Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0).RGBToColor(r, g, b);
 				WRITE_UINT16(dest + destOffset, destColor);
 
 				sourceOffset += 2;
@@ -307,8 +309,10 @@ void RLFDecoder::RLFVideoTrack::decodeSimpleRunLengthEncoding(int8 *source, int8
 			}
 
 			byte r, g, b;
-			Graphics::colorToRGB<Graphics::ColorMasks<555> >(READ_LE_UINT16(source + sourceOffset), r, g, b);
-			uint16 sampleColor = Graphics::RGBToColor<Graphics::ColorMasks<565> >(r, g, b);
+				// NOTE: Color masks can't be used here, since accurate colors
+				// are required to handle transparency correctly
+			Graphics::PixelFormat(2, 5, 5, 5, 0, 10, 5, 0, 0).colorToRGB(READ_LE_UINT16(source + sourceOffset), r, g, b);
+			uint16 sampleColor = Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0).RGBToColor(r, g, b);
 			sourceOffset += 2;
 
 			numberOfCopy = numberOfSamples + 2;






More information about the Scummvm-git-logs mailing list