[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