[Scummvm-git-logs] scummvm master -> a308d8277088ec3c1560d1d3a9b2603c61b54e02

SupSuper supsuper at gmail.com
Fri Jun 4 06:00:56 UTC 2021


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
4968d87ed0 TRECISION: Fix Amiga data loading
a308d82770 TRECISION: Skip missing videos


Commit: 4968d87ed08631242a4a9001cf8f7d53d415cd01
    https://github.com/scummvm/scummvm/commit/4968d87ed08631242a4a9001cf8f7d53d415cd01
Author: SupSuper (supsuper at gmail.com)
Date: 2021-06-04T06:59:26+01:00

Commit Message:
TRECISION: Fix Amiga data loading

Changed paths:
    engines/trecision/graphics.cpp
    engines/trecision/resource.cpp


diff --git a/engines/trecision/graphics.cpp b/engines/trecision/graphics.cpp
index 05045fb4f6..ed18278b78 100644
--- a/engines/trecision/graphics.cpp
+++ b/engines/trecision/graphics.cpp
@@ -243,9 +243,8 @@ void GraphicsManager::readSurface(Common::SeekableReadStream *stream, Graphics::
 
 	for (uint16 i = 0; i < count; ++i) {
 		for (uint16 y = 0; y < height; ++y) {
-			for (uint16 x = 0; x < width; ++x) {
-				surface->setPixel(width * i + x, y, stream->readUint16LE());
-			}
+			void *p = surface->getBasePtr(width * i, y);
+			stream->read(p, width * kImageFormat.bytesPerPixel);
 		}
 	}
 
diff --git a/engines/trecision/resource.cpp b/engines/trecision/resource.cpp
index 1b98eb50e4..9c93711d58 100644
--- a/engines/trecision/resource.cpp
+++ b/engines/trecision/resource.cpp
@@ -63,6 +63,11 @@ void TrecisionEngine::loadAll() {
 
 	_soundMgr->loadSamples(data);
 
+	// TODO: Unused Amiga data?
+	if (isAmiga()) {
+		data->skip(12 * 12 + 1);
+	}
+
 	for (int i = 0; i < MAXSCRIPTFRAME; ++i) {
 		_scriptFrame[i]._class = data->readByte();
 		_scriptFrame[i]._event = data->readByte();
@@ -85,10 +90,6 @@ void TrecisionEngine::loadAll() {
 
 	data->skip(620);	// actions (unused)
 
-	// TODO: Amiga hack
-	if (isAmiga())
-		dataNl.seek(0x3DB62);
-
 	int numFileRef = data->readSint32();
 	data->skip(numFileRef * (12 + 4));	// fileRef name + offset
 


Commit: a308d8277088ec3c1560d1d3a9b2603c61b54e02
    https://github.com/scummvm/scummvm/commit/a308d8277088ec3c1560d1d3a9b2603c61b54e02
Author: SupSuper (supsuper at gmail.com)
Date: 2021-06-04T06:59:26+01:00

Commit Message:
TRECISION: Skip missing videos

Changed paths:
    engines/trecision/fastfile.cpp
    engines/trecision/video.cpp


diff --git a/engines/trecision/fastfile.cpp b/engines/trecision/fastfile.cpp
index 9ebae40a54..f3f3e3b8bd 100644
--- a/engines/trecision/fastfile.cpp
+++ b/engines/trecision/fastfile.cpp
@@ -50,9 +50,10 @@ const FileEntry *FastFile::getEntry(const Common::String &name) const {
 bool FastFile::open(TrecisionEngine *vm, const Common::String &name) {
 	close();
 
-	_stream = vm->readEndian(SearchMan.createReadStreamForMember(name));
-	if (!_stream)
+	Common::SeekableReadStream *stream = SearchMan.createReadStreamForMember(name);
+	if (!stream)
 		return false;
+	_stream = vm->readEndian(stream);
 
 	int numFiles = _stream->readUint32();
 	_fileEntries.resize(numFiles);
diff --git a/engines/trecision/video.cpp b/engines/trecision/video.cpp
index abab5bfef5..c420243c14 100644
--- a/engines/trecision/video.cpp
+++ b/engines/trecision/video.cpp
@@ -138,6 +138,7 @@ void AnimManager::playMovie(const Common::String &filename, int startFrame, int
 
 	if (!smkDecoder->loadFile(filename)) {
 		warning("playMovie: File %s not found", filename.c_str());
+		delete smkDecoder;
 		_vm->_dialogMgr->afterChoice();
 		return;
 	}
@@ -306,6 +307,8 @@ void AnimManager::startSmkAnim(uint16 animation) {
 void AnimManager::toggleMuteBgAnim(uint16 animation) {
 	uint16 animFlag = _animTab[animation]._flag;
 	NightlongSmackerDecoder *decoder = _smkAnims[kSmackerBackground];
+	if (decoder == nullptr)
+		return;
 
 	// Turns off when not needed
 	if (animation == aBKG11 && (animFlag & SMKANIM_OFF1))
@@ -429,6 +432,10 @@ void AnimManager::refreshSmkAnim(uint16 animation) {
 }
 
 void AnimManager::handleEndOfVideo(int animation, int slot) {
+	if (_smkAnims[slot] == nullptr) {
+		smkStop(slot);
+		return;
+	}
 	if (!_smkAnims[slot]->endOfVideo())
 		return;
 	
@@ -444,6 +451,8 @@ void AnimManager::handleEndOfVideo(int animation, int slot) {
 
 void AnimManager::drawSmkBackgroundFrame(int animation) {
 	NightlongSmackerDecoder *smkDecoder = _smkAnims[kSmackerBackground];
+	if (smkDecoder == nullptr)
+		return;
 	const Graphics::Surface *frame = smkDecoder->decodeNextFrame();
 	if (!frame)
 		return;
@@ -504,6 +513,8 @@ void AnimManager::drawSmkIconFrame(uint16 startIcon, uint16 iconNum) {
 
 void AnimManager::drawSmkActionFrame() {
 	NightlongSmackerDecoder *smkDecoder = _smkAnims[kSmackerAction];
+	if (smkDecoder == nullptr)
+		return;
 	const Graphics::Surface *frame = smkDecoder->decodeNextFrame();
 	if (!frame)
 		return;




More information about the Scummvm-git-logs mailing list