[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