[Scummvm-cvs-logs] SF.net SVN: scummvm:[48217] scummvm/trunk/engines/drascula

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Wed Mar 10 00:36:18 CET 2010


Revision: 48217
          http://scummvm.svn.sourceforge.net/scummvm/?rev=48217&view=rev
Author:   fingolfin
Date:     2010-03-09 23:36:18 +0000 (Tue, 09 Mar 2010)

Log Message:
-----------
DRASCULA: Simplify playFLI and its subroutines

Modified Paths:
--------------
    scummvm/trunk/engines/drascula/drascula.cpp
    scummvm/trunk/engines/drascula/drascula.h
    scummvm/trunk/engines/drascula/graphics.cpp

Modified: scummvm/trunk/engines/drascula/drascula.cpp
===================================================================
--- scummvm/trunk/engines/drascula/drascula.cpp	2010-03-09 23:35:56 UTC (rev 48216)
+++ scummvm/trunk/engines/drascula/drascula.cpp	2010-03-09 23:36:18 UTC (rev 48217)
@@ -221,7 +221,6 @@
 		term_int = 0;
 		musicStopped = 0;
 		selectionMade = 0;
-		_useMemForArj = false;
 		globalSpeed = 0;
 		curExcuseLook = 0;
 		curExcuseAction = 0;

Modified: scummvm/trunk/engines/drascula/drascula.h
===================================================================
--- scummvm/trunk/engines/drascula/drascula.h	2010-03-09 23:35:56 UTC (rev 48216)
+++ scummvm/trunk/engines/drascula/drascula.h	2010-03-09 23:36:18 UTC (rev 48217)
@@ -394,8 +394,6 @@
 	byte *extraSurface;	// not sure about this one, was "dir_hare_dch"
 	byte *screenSurface;
 	byte *frontSurface;
-	byte *memPtr;
-	byte *mSession;
 
 	byte cPal[768];
 
@@ -575,12 +573,8 @@
 	void mixVideo(byte *OldScreen, byte *NewScreen);
 	void decodeRLE(byte *BufferRLE, byte *MiVideoRLE);
 	void decodeOffset(byte *BufferOFF, byte *MiVideoOFF, int length);
-	byte *TryInMem(Common::SeekableReadStream *stream);
 	int playFrameSSN(Common::SeekableReadStream *stream);
 
-	bool _useMemForArj;
-	byte CHUNK;
-	byte CMP, dacSSN[768];
 	int FrameSSN;
 	int globalSpeed;
 	uint32 LastFrame;

Modified: scummvm/trunk/engines/drascula/graphics.cpp
===================================================================
--- scummvm/trunk/engines/drascula/graphics.cpp	2010-03-09 23:35:56 UTC (rev 48216)
+++ scummvm/trunk/engines/drascula/graphics.cpp	2010-03-09 23:36:18 UTC (rev 48217)
@@ -476,12 +476,7 @@
 	// Open file
 	globalSpeed = 1000 / vel;
 	FrameSSN = 0;
-	_useMemForArj = false;
 	Common::SeekableReadStream *stream = _archives.open(filefli);
-	// TODO: mSession is treated like a stream from playFrameSSN, so turn it
-	// into a stream, and pass it to playFrameSSN. Get rid of _useMemForArj
-	// as well.
-	mSession = TryInMem(stream);
 	LastFrame = _system->getMillis();
 
 	while (playFrameSSN(stream) && (!term_int)) {
@@ -489,9 +484,6 @@
 			term_int = 1;
 	}
 
-	if (_useMemForArj)
-		free(memPtr);
-
 	delete stream;
 }
 
@@ -500,48 +492,24 @@
 	uint32 length;
 	byte *BufferSSN;
 
-	if (!_useMemForArj)
-		CHUNK = stream->readByte();
-	else {
-		memcpy(&CHUNK, mSession, 1);
-		mSession += 1;
-	}
+	byte CHUNK = stream->readByte();
 
 	switch (CHUNK) {
-	case kFrameSetPal:
-		if (!_useMemForArj) {
-			for (int i = 0; i < 256; i++) {
-				dacSSN[i * 3 + 0] = stream->readByte();
-				dacSSN[i * 3 + 1] = stream->readByte();
-				dacSSN[i * 3 + 2] = stream->readByte();
-			}
-		} else {
-			memcpy(dacSSN, mSession, 768);
-			mSession += 768;
-		}
+	case kFrameSetPal: {
+		byte dacSSN[768];
+		stream->read(dacSSN, 768);
 		setPalette(dacSSN);
 		break;
+		}
 	case kFrameEmptyFrame:
 		waitFrameSSN();
 		break;
-	case kFrameInit:
-		if (!_useMemForArj) {
-			CMP = stream->readByte();
-			length = stream->readUint32LE();
-		} else {
-			memcpy(&CMP, mSession, 1);
-			mSession += 1;
-			length = READ_LE_UINT32(mSession);
-			mSession += 4;
-		}
+	case kFrameInit: {
+		byte CMP = stream->readByte();
+		length = stream->readUint32LE();
 		if (CMP == kFrameCmpRle) {
 			BufferSSN = (byte *)malloc(length);
-			if (!_useMemForArj) {
-				stream->read(BufferSSN, length);
-			} else {
-				memcpy(BufferSSN, mSession, length);
-				mSession += length;
-			}
+			stream->read(BufferSSN, length);
 			decodeRLE(BufferSSN, screenSurface);
 			free(BufferSSN);
 			waitFrameSSN();
@@ -558,12 +526,7 @@
 		} else {
 			if (CMP == kFrameCmpOff) {
 				BufferSSN = (byte *)malloc(length);
-				if (!_useMemForArj) {
-					stream->read(BufferSSN, length);
-				} else {
-					memcpy(BufferSSN, mSession, length);
-					mSession += length;
-				}
+				stream->read(BufferSSN, length);
 				decodeOffset(BufferSSN, screenSurface, length);
 				free(BufferSSN);
 				waitFrameSSN();
@@ -579,6 +542,7 @@
 			}
 		}
 		break;
+		}
 	case kFrameEndAnim:
 		Exit = 1;
 		break;
@@ -590,21 +554,6 @@
 	return (!Exit);
 }
 
-byte *DrasculaEngine::TryInMem(Common::SeekableReadStream *stream) {
-	int length;
-
-	stream->seek(0, SEEK_END);
-	length = stream->pos();
-	stream->seek(0, SEEK_SET);
-	memPtr = (byte *)malloc(length);
-	if (memPtr == NULL)
-		return NULL;
-	stream->read(memPtr, length);
-	_useMemForArj = true;
-
-	return memPtr;
-}
-
 void DrasculaEngine::decodeOffset(byte *BufferOFF, byte *MiVideoOFF, int length) {
 	int x = 0;
 	int size;


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