[Scummvm-git-logs] scummvm master -> 3bb70ee70c09b1b65310ecc6801216751c9eacfd

sev- sev at scummvm.org
Tue Mar 21 23:45:04 CET 2017


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

Summary:
eb1393a859 DIRECTOR: Dump bulit-in director file for D3
0e34584573 DIRECTOR: Fix loading D2 EXE
71b4514281 DIRECTOR: Fix loading from built-in movie
6fc8b6e6df DIRECTOR: Added sanity check to event processor
9ab68d71d8 DIRECTOR: Do not call event handler after movie is ended
3bb70ee70c DIRECTOR: Lingo: Open '.MMM' files on Windows


Commit: eb1393a8596ff339c47c5b499115c28fece8da66
    https://github.com/scummvm/scummvm/commit/eb1393a8596ff339c47c5b499115c28fece8da66
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-03-21T23:44:51+01:00

Commit Message:
DIRECTOR: Dump bulit-in director file for D3

Changed paths:
    engines/director/resource.cpp


diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index 7dbd5a7..d0a1ce8 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -20,7 +20,9 @@
  *
  */
 
+#include "common/config-manager.h"
 #include "common/macresman.h"
+
 #include "graphics/macgui/macwindowmanager.h"
 #include "graphics/macgui/macfontmanager.h"
 
@@ -113,6 +115,30 @@ void DirectorEngine::loadEXEv3(Common::SeekableReadStream *stream) {
 	if (mmmSize) {
 		uint32 riffOffset = stream->pos();
 
+		debugC(1, kDebugLoading, "RIFF offset: %d (%x)", riffOffset, riffOffset);
+
+		if (ConfMan.getBool("dump_scripts")) {
+			Common::DumpFile out;
+			byte *buf = (byte *)malloc(mmmSize);
+			stream->read(buf, mmmSize);
+			stream->seek(riffOffset);
+			Common::String fname = Common::String::format("./dumps/%s", mmmFileName.c_str());
+
+
+			if (!out.open(fname.c_str())) {
+				warning("Can not open dump file %s", fname.c_str());
+				return;
+			}
+
+			out.write(buf, mmmSize);
+
+			out.flush();
+			out.close();
+
+			free(buf);
+		}
+
+
 		_mainArchive = new RIFFArchive();
 
 		if (!_mainArchive->openStream(stream, riffOffset))
@@ -120,8 +146,6 @@ void DirectorEngine::loadEXEv3(Common::SeekableReadStream *stream) {
 	}
 
 	openMainArchive(mmmFileName);
-
-	delete stream;
 }
 
 void DirectorEngine::loadEXEv4(Common::SeekableReadStream *stream) {


Commit: 0e345845730371a12930dde13db1da1e9c00901b
    https://github.com/scummvm/scummvm/commit/0e345845730371a12930dde13db1da1e9c00901b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-03-21T23:44:51+01:00

Commit Message:
DIRECTOR: Fix loading D2 EXE

Changed paths:
    engines/director/archive.cpp


diff --git a/engines/director/archive.cpp b/engines/director/archive.cpp
index f426107..d35f6b6 100644
--- a/engines/director/archive.cpp
+++ b/engines/director/archive.cpp
@@ -275,8 +275,8 @@ bool RIFFArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
 		if (tag == 0)
 			break;
 
-		uint16 startResPos = stream->pos();
-		stream->seek(offset + 12);
+		uint32 startResPos = stream->pos();
+		stream->seek(startOffset + offset + 12);
 
 		Common::String name = "";
 		byte nameSize = stream->readByte();
@@ -289,7 +289,7 @@ bool RIFFArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
 
 		stream->seek(startResPos);
 
-		debug(3, "Found RIFF resource '%s' %d: %d @ 0x%08x", tag2str(tag), id, size, offset);
+		debug(3, "Found RIFF resource '%s' %d: %d @ 0x%08x", tag2str(tag), id, size, startOffset + offset);
 
 		ResourceMap &resMap = _types[tag];
 		Resource &res = resMap[id];


Commit: 71b4514281a735f3534fcf8bb582314c406f9149
    https://github.com/scummvm/scummvm/commit/71b4514281a735f3534fcf8bb582314c406f9149
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-03-21T23:44:51+01:00

Commit Message:
DIRECTOR: Fix loading from built-in movie

Changed paths:
    engines/director/archive.cpp
    engines/director/resource.cpp


diff --git a/engines/director/archive.cpp b/engines/director/archive.cpp
index d35f6b6..340db3d 100644
--- a/engines/director/archive.cpp
+++ b/engines/director/archive.cpp
@@ -293,7 +293,7 @@ bool RIFFArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
 
 		ResourceMap &resMap = _types[tag];
 		Resource &res = resMap[id];
-		res.offset = offset;
+		res.offset = offset + startOffset;
 		res.size = size;
 		res.name = name;
 	}
diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index d0a1ce8..dc961b8 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -143,6 +143,8 @@ void DirectorEngine::loadEXEv3(Common::SeekableReadStream *stream) {
 
 		if (!_mainArchive->openStream(stream, riffOffset))
 			error("Failed to load RIFF from EXE");
+
+		return;
 	}
 
 	openMainArchive(mmmFileName);


Commit: 6fc8b6e6df1a4eef46a521cf9d91d632e305fc98
    https://github.com/scummvm/scummvm/commit/6fc8b6e6df1a4eef46a521cf9d91d632e305fc98
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-03-21T23:44:51+01:00

Commit Message:
DIRECTOR: Added sanity check to event processor

Changed paths:
    engines/director/events.cpp


diff --git a/engines/director/events.cpp b/engines/director/events.cpp
index 5021018..f4806f3 100644
--- a/engines/director/events.cpp
+++ b/engines/director/events.cpp
@@ -46,6 +46,10 @@ void DirectorEngine::processEvents() {
 	uint endTime = g_system->getMillis() + 200;
 
 	Score *sc = getCurrentScore();
+	if (sc->getCurrentFrame() >= sc->_frames.size()) {
+		warning("processEvents: request to access frame %d of %d", sc->getCurrentFrame(), sc->_frames.size() - 1);
+		return;
+	}
 	Frame *currentFrame = sc->_frames[sc->getCurrentFrame()];
 	uint16 spriteId = 0;
 


Commit: 9ab68d71d8d1c70e57935f8c4eb3d3632183e76c
    https://github.com/scummvm/scummvm/commit/9ab68d71d8d1c70e57935f8c4eb3d3632183e76c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-03-21T23:44:51+01:00

Commit Message:
DIRECTOR: Do not call event handler after movie is ended

Changed paths:
    engines/director/score.cpp


diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index c744a91..83fe6dd 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -1078,7 +1078,9 @@ void Score::startLoop() {
 	while (!_stopPlay && _currentFrame < _frames.size()) {
 		debugC(1, kDebugImages, "******************************  Current frame: %d", _currentFrame + 1);
 		update();
-		_vm->processEvents();
+
+		if (_currentFrame < _frames.size())
+			_vm->processEvents();
 	}
 }
 


Commit: 3bb70ee70c09b1b65310ecc6801216751c9eacfd
    https://github.com/scummvm/scummvm/commit/3bb70ee70c09b1b65310ecc6801216751c9eacfd
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-03-21T23:44:51+01:00

Commit Message:
DIRECTOR: Lingo: Open '.MMM' files on Windows

Changed paths:
    engines/director/lingo/lingo-funcs.cpp


diff --git a/engines/director/lingo/lingo-funcs.cpp b/engines/director/lingo/lingo-funcs.cpp
index 307d79a..0f2110d 100644
--- a/engines/director/lingo/lingo-funcs.cpp
+++ b/engines/director/lingo/lingo-funcs.cpp
@@ -182,14 +182,15 @@ void Lingo::func_goto(Datum &frame, Datum &movie) {
 
 		Common::String cleanedFilename;
 
-		for (const byte *p = (const byte *)movie.u.s->c_str(); *p; p++)
-			if (*p >= 0x20 && *p <= 0x7f)
-				cleanedFilename += (const char) *p;
-
 		bool fileExists = false;
 
 		if (_vm->getPlatform() == Common::kPlatformMacintosh) {
 			Common::MacResManager resMan;
+
+			for (const byte *p = (const byte *)movie.u.s->c_str(); *p; p++)
+				if (*p >= 0x20 && *p <= 0x7f)
+					cleanedFilename += (const char) *p;
+
 			if (resMan.open(*movie.u.s)) {
 				fileExists = true;
 				cleanedFilename = *movie.u.s;
@@ -198,6 +199,8 @@ void Lingo::func_goto(Datum &frame, Datum &movie) {
 			}
 		} else {
 			Common::File file;
+			cleanedFilename = *movie.u.s + ".MMM";
+
 			if (file.open(*movie.u.s)) {
 				fileExists = true;
 				cleanedFilename = *movie.u.s;





More information about the Scummvm-git-logs mailing list