[Scummvm-cvs-logs] SF.net SVN: scummvm: [28342] scummvm/trunk/engines/gob

drmccoy at users.sourceforge.net drmccoy at users.sourceforge.net
Tue Jul 31 01:22:09 CEST 2007


Revision: 28342
          http://scummvm.svn.sourceforge.net/scummvm/?rev=28342&view=rev
Author:   drmccoy
Date:     2007-07-30 16:22:09 -0700 (Mon, 30 Jul 2007)

Log Message:
-----------
- Removed left-over, commented-out code
- Added support for palette changing within the frame data (haven't seen any IMD that actually does that, though)

Modified Paths:
--------------
    scummvm/trunk/engines/gob/coktelvideo.cpp
    scummvm/trunk/engines/gob/coktelvideo.h

Modified: scummvm/trunk/engines/gob/coktelvideo.cpp
===================================================================
--- scummvm/trunk/engines/gob/coktelvideo.cpp	2007-07-30 21:17:15 UTC (rev 28341)
+++ scummvm/trunk/engines/gob/coktelvideo.cpp	2007-07-30 23:22:09 UTC (rev 28342)
@@ -450,9 +450,6 @@
 	state.right += state.left - 1;
 	state.bottom += state.top - 1;
 
-/*	if ((frame == 0) && (_features & 0x8))
-		_vm->_video->setPalette(_palette);*/
-
 	do {
 		if (frame != 0) {
 			if (_stdX != -1) {
@@ -505,9 +502,6 @@
 		if (_soundStage != 0) {
 			byte *soundBuf;
 
-/*			if (!hasNextCmd)
-				waitEndSoundSlice();*/
-
 			// Next sound slice data
 			if (cmd == 0xFF00) {
 
@@ -606,8 +600,7 @@
 			_height = bottom - top;
 			_width = right - left;
 
-			renderFrame();
-
+			state.flags |= renderFrame();
 			state.flags |= _frameData[0];
 
 		// Frame video data
@@ -615,8 +608,7 @@
 
 			_stream->read(_frameData, cmd + 2);
 
-			renderFrame();
-
+			state.flags |= renderFrame();
 			state.flags |= _frameData[0];
 
 		} else
@@ -737,9 +729,9 @@
 	return state;
 }
 
-void Imd::renderFrame() {
+uint32 Imd::renderFrame() {
 	if (!_frameData || (_width <= 0) || (_height <= 0))
-		return;
+		return 0;
 
 	if (!_vidMem)
 		setVideoMemory();
@@ -753,11 +745,17 @@
 	byte *imdVidMem = _vidMem + sW * imdY + imdX;
 	uint8 type = *dataPtr++;
 	byte *srcPtr = dataPtr;
+	uint32 retVal = 0;
 
+	if (type & 0x10) { // Palette data
+		// One byte index
+		int index = *dataPtr++;
+		// 16 entries with each 3 bytes (RGB)
+		memcpy(_palette + index * 3, dataPtr, MIN((255 - index) * 3, 48));
 
-	if (type & 0x10) { // Palette data
+		retVal = kStatePalette;
+		dataPtr += 48;
 		type ^= 0x10;
-		dataPtr += 49;
 	}
 
 	srcPtr = dataPtr;
@@ -766,7 +764,7 @@
 		type &= 0x7F;
 		if ((type == 2) && (imdW == sW)) {
 			frameUncompressor(imdVidMem, dataPtr);
-			return;
+			return retVal;
 		} else
 			frameUncompressor(srcPtr, dataPtr);
 	}
@@ -843,6 +841,8 @@
 			imdVidMem = imdVidMemBak;
 		}
 	}
+
+	return retVal;
 }
 
 void Imd::frameUncompressor(byte *dest, byte *src) {

Modified: scummvm/trunk/engines/gob/coktelvideo.h
===================================================================
--- scummvm/trunk/engines/gob/coktelvideo.h	2007-07-30 21:17:15 UTC (rev 28341)
+++ scummvm/trunk/engines/gob/coktelvideo.h	2007-07-30 23:22:09 UTC (rev 28342)
@@ -239,7 +239,7 @@
 	void clear(bool del = true);
 
 	State processFrame(int16 frame);
-	void renderFrame();
+	uint32 renderFrame();
 	void frameUncompressor(byte *dest, byte *src);
 };
 


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