aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2017-03-19 23:28:41 +0100
committerEugene Sandulenko2017-03-19 23:28:41 +0100
commit9528d5482818d791a1371c2d356bc61fc3e10ffb (patch)
tree51ab977be81e5f5ea40f7a633a26b7d064d5ec01
parentc315065503349fdaed038be3469bb0a3ee8a6888 (diff)
downloadscummvm-rg350-9528d5482818d791a1371c2d356bc61fc3e10ffb.tar.gz
scummvm-rg350-9528d5482818d791a1371c2d356bc61fc3e10ffb.tar.bz2
scummvm-rg350-9528d5482818d791a1371c2d356bc61fc3e10ffb.zip
DIRECTOR: Initial code for parsing D2 win executables
-rw-r--r--engines/director/resource.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index 10e7d939ce..7dbd5a78a6 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -76,6 +76,7 @@ void DirectorEngine::loadEXE(const Common::String movie) {
exeStream->seek(exeStream->readUint32LE());
switch (getVersion()) {
+ case 2:
case 3:
loadEXEv3(exeStream);
break;
@@ -100,12 +101,23 @@ void DirectorEngine::loadEXEv3(Common::SeekableReadStream *stream) {
stream->skip(5); // unknown
- stream->readUint32LE(); // Main MMM size
+ uint32 mmmSize = stream->readUint32LE(); // Main MMM size
+
Common::String mmmFileName = stream->readPascalString();
Common::String directoryName = stream->readPascalString();
debugC(1, kDebugLoading, "Main MMM: '%s'", mmmFileName.c_str());
debugC(1, kDebugLoading, "Directory Name: '%s'", directoryName.c_str());
+ debugC(1, kDebugLoading, "Main mmmSize: %d (0x%x)", mmmSize, mmmSize);
+
+ if (mmmSize) {
+ uint32 riffOffset = stream->pos();
+
+ _mainArchive = new RIFFArchive();
+
+ if (!_mainArchive->openStream(stream, riffOffset))
+ error("Failed to load RIFF from EXE");
+ }
openMainArchive(mmmFileName);