diff options
author | Dmitry Iskrich | 2016-06-03 19:07:30 +0300 |
---|---|---|
committer | Eugene Sandulenko | 2016-08-03 23:40:36 +0200 |
commit | bd345ce81c0edd1267909b0bcac7bcf65dea834b (patch) | |
tree | 47106ae17ef59968b05db41f508f559bf518efa0 | |
parent | f95410532015363eb158537637147cb97081eee9 (diff) | |
download | scummvm-rg350-bd345ce81c0edd1267909b0bcac7bcf65dea834b.tar.gz scummvm-rg350-bd345ce81c0edd1267909b0bcac7bcf65dea834b.tar.bz2 scummvm-rg350-bd345ce81c0edd1267909b0bcac7bcf65dea834b.zip |
DIRECTOR: Parse mac name
-rw-r--r-- | engines/director/resource.cpp | 21 | ||||
-rw-r--r-- | engines/director/score.cpp | 4 |
2 files changed, 21 insertions, 4 deletions
diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp index 8eb4b92b14..2c90dfd203 100644 --- a/engines/director/resource.cpp +++ b/engines/director/resource.cpp @@ -244,6 +244,18 @@ bool RIFFArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff if (tag == 0) break; + uint16 startResPos = stream->pos(); + stream->seek(offset + 12); + + Common::String name = ""; + byte nameSize = stream->readByte(); + if (nameSize) { + for (uint8 i = 0; i < nameSize; i++) { + name += stream->readByte(); + } + } + + stream->seek(startResPos); debug(0, "Found RIFF resource '%s' %d: %d @ 0x%08x", tag2str(tag), id, size, offset); @@ -251,6 +263,7 @@ bool RIFFArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff Resource &res = resMap[id]; res.offset = offset; res.size = size; + res.name = name; } _stream = stream; @@ -273,9 +286,10 @@ Common::SeekableReadStream *RIFFArchive::getResource(uint32 tag, uint16 id) { uint32 size = res.size - 4; // Skip the Pascal string _stream->seek(offset); - byte stringSize = _stream->readByte() + 1; // 1 for this byte - offset += stringSize; - size -= stringSize; + byte stringSize = _stream->readByte(); // 1 for this byte + + offset += stringSize + 1; + size -= stringSize + 1; // Align to nearest word boundary if (offset & 1) { @@ -286,7 +300,6 @@ Common::SeekableReadStream *RIFFArchive::getResource(uint32 tag, uint16 id) { return new Common::SeekableSubReadStream(_stream, offset, offset + size); } - // RIFX Archive code bool RIFXArchive::openStream(Common::SeekableReadStream *stream, uint32 startOffset) { diff --git a/engines/director/score.cpp b/engines/director/score.cpp index bd07f7849d..889020cdff 100644 --- a/engines/director/score.cpp +++ b/engines/director/score.cpp @@ -54,6 +54,10 @@ Score::Score(Archive &movie) { if (_movieArchive->hasResource(MKTAG('V','W','A','C'), 1024)) { loadActions(*_movieArchive->getResource(MKTAG('V','W','A','C'), 1024)); } + + if (_movieArchive->hasResource(MKTAG('M','C','N','M'), 0)) { + debug("Mac name %s", _movieArchive->getName(MKTAG('M','C','N','M'), 0).c_str()); + } } void Score::loadFrames(Common::SeekableReadStream &stream) { |