diff options
| author | Matthew Stewart | 2018-01-19 02:50:51 -0500 | 
|---|---|---|
| committer | Eugene Sandulenko | 2018-08-09 08:37:30 +0200 | 
| commit | 60d672db7315f9a131cfb128a3a10b29ece10112 (patch) | |
| tree | 3cb99cb891120449f3700de5892ffef6fdd009f8 | |
| parent | f2260d1e9ab5fe745d8f5d62a56063e001289e96 (diff) | |
| download | scummvm-rg350-60d672db7315f9a131cfb128a3a10b29ece10112.tar.gz scummvm-rg350-60d672db7315f9a131cfb128a3a10b29ece10112.tar.bz2 scummvm-rg350-60d672db7315f9a131cfb128a3a10b29ece10112.zip  | |
STARTREK: Fixes to file loading.
The "numbered" files that I implemented can also use letters as the last
character.
| -rwxr-xr-x | engines/startrek/graphics.cpp | 5 | ||||
| -rwxr-xr-x | engines/startrek/lzss.cpp | 10 | ||||
| -rwxr-xr-x | engines/startrek/startrek.cpp | 12 | 
3 files changed, 21 insertions, 6 deletions
diff --git a/engines/startrek/graphics.cpp b/engines/startrek/graphics.cpp index e2ba26670c..8dcc43686e 100755 --- a/engines/startrek/graphics.cpp +++ b/engines/startrek/graphics.cpp @@ -89,6 +89,11 @@ void Graphics::drawImage(const char *filename) {  	uint16 width = (_vm->getPlatform() == Common::kPlatformAmiga) ? imageStream->readUint16BE() : imageStream->readUint16LE();  	uint16 height = (_vm->getPlatform() == Common::kPlatformAmiga) ? imageStream->readUint16BE() : imageStream->readUint16LE();	 +	if (xoffset >= 320) +		xoffset = 0; +	if (yoffset >= 200) +		yoffset = 0; +  	byte *pixels = (byte *)malloc(width * height);  	if (_egaMode && _egaData) { diff --git a/engines/startrek/lzss.cpp b/engines/startrek/lzss.cpp index 03aa6de8cd..2e04d08d38 100755 --- a/engines/startrek/lzss.cpp +++ b/engines/startrek/lzss.cpp @@ -23,9 +23,11 @@   *   */ -#include "startrek/lzss.h" -#include "common/util.h" +#include "common/textconsole.h"  #include "common/memstream.h" +#include "common/util.h" + +#include "startrek/lzss.h"  namespace StarTrek { @@ -72,6 +74,10 @@ Common::SeekableReadStream *decodeLZSS(Common::SeekableReadStream *indata, uint3  	}  	delete[] histbuff;	 + +	if (outstreampos != uncompressedSize) +		error("Size mismatch in LZSS decompression; expected %d bytes, got %d bytes", uncompressedSize, outstreampos); +  	return new Common::MemoryReadStream(outLzssBufData, uncompressedSize, DisposeAfterUse::YES);  } diff --git a/engines/startrek/startrek.cpp b/engines/startrek/startrek.cpp index 439feb6203..abb838365c 100755 --- a/engines/startrek/startrek.cpp +++ b/engines/startrek/startrek.cpp @@ -100,7 +100,6 @@ Common::Error StarTrekEngine::run() {  			_gfx->setPalette("BRIDGE.PAL");  			//_gfx->loadEGAData("BRIDGE.EGA");  			_gfx->drawImage("DEMON5.BMP"); -			//_gfx->drawImage("BRIDGE.BMP");  		}  		if (getPlatform() == Common::kPlatformAmiga) @@ -134,6 +133,7 @@ Common::Error StarTrekEngine::run() {  }  Common::SeekableReadStream *StarTrekEngine::openFile(Common::String filename, int fileIndex) { +	filename.toUppercase();  	Common::String basename, extension;  	for (int i=filename.size()-1; ; i--) { @@ -216,9 +216,10 @@ Common::SeekableReadStream *StarTrekEngine::openFile(Common::String filename, in  	delete indexFile;  	if (!foundData) { -		// Files with a number at the end are stored a bit differently; they are accessed -		// based on a "base number". See if there's an earlier number that can be opened. -		if (basename.lastChar() >= '1' && basename.lastChar() <= '9') { +		// Files can be accessed "sequentially" if their filenames are the same except for +		// the last character being incremented by one. +		if ((basename.lastChar() >= '1' && basename.lastChar() <= '9') || +				(basename.lastChar() >= 'B' && basename.lastChar() <= 'Z')) {  			basename.setChar(basename.lastChar()-1, basename.size()-1);  			return openFile(basename + "." + extension, fileIndex+1);  		} else @@ -252,6 +253,7 @@ Common::SeekableReadStream *StarTrekEngine::openFile(Common::String filename, in  		assert(fileCount == 1); // Sanity check...  		Common::SeekableReadStream *stream = dataFile->readStream(uncompressedSize);  		delete dataFile; +		delete dataRunFile;  		return stream;  	} else {  		if (fileCount != 1) { @@ -271,7 +273,9 @@ Common::SeekableReadStream *StarTrekEngine::openFile(Common::String filename, in  		uint16 compressedSize = (getPlatform() == Common::kPlatformAmiga) ? dataFile->readUint16BE() : dataFile->readUint16LE();  		Common::SeekableReadStream *stream = decodeLZSS(dataFile->readStream(compressedSize), uncompressedSize); +  		delete dataFile; +		delete dataRunFile;  		return stream;  	}  | 
