[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