diff options
author | Eugene Sandulenko | 2017-03-19 23:28:41 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2017-03-19 23:28:41 +0100 |
commit | 9528d5482818d791a1371c2d356bc61fc3e10ffb (patch) | |
tree | 51ab977be81e5f5ea40f7a633a26b7d064d5ec01 | |
parent | c315065503349fdaed038be3469bb0a3ee8a6888 (diff) | |
download | scummvm-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.cpp | 14 |
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); |