[Scummvm-git-logs] scummvm master -> d5fb4f6c3112d1e85e21c146bfe3792a9876a144
sev-
sev at scummvm.org
Mon Feb 24 22:36:23 UTC 2020
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
54512228f5 DIRECTOR: Added sanity chech to MacArchive::getResource()
3d7b95da0c DIRECTOR: Fix shared cast processing
ee71f5b163 DIRECTOR: Improved debug output
d5fb4f6c31 DIRECTOR: Fixed tags for bitmap casts
Commit: 54512228f5397fe92009e31688fa9b3e6f1e5ce1
https://github.com/scummvm/scummvm/commit/54512228f5397fe92009e31688fa9b3e6f1e5ce1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-02-24T23:07:55+01:00
Commit Message:
DIRECTOR: Added sanity chech to MacArchive::getResource()
Changed paths:
engines/director/archive.cpp
diff --git a/engines/director/archive.cpp b/engines/director/archive.cpp
index 659d7438f6..16a8f0de34 100644
--- a/engines/director/archive.cpp
+++ b/engines/director/archive.cpp
@@ -248,6 +248,10 @@ bool MacArchive::openStream(Common::SeekableReadStream *stream, uint32 startOffs
Common::SeekableSubReadStreamEndian *MacArchive::getResource(uint32 tag, uint16 id) {
assert(_resFork);
Common::SeekableReadStream *stream = _resFork->getResource(tag, id);
+
+ if (stream == nullptr)
+ error("MacArchive::getResource('%s', %d): Resource doesn't exit", tag2str(tag), id);
+
return new Common::SeekableSubReadStreamEndian(stream, 0, stream->size(), true, DisposeAfterUse::NO);
}
Commit: 3d7b95da0cc4ef2f3b1ca12d26bd10853795086d
https://github.com/scummvm/scummvm/commit/3d7b95da0cc4ef2f3b1ca12d26bd10853795086d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-02-24T23:08:17+01:00
Commit Message:
DIRECTOR: Fix shared cast processing
Changed paths:
engines/director/resource.cpp
engines/director/score.cpp
diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index 04944a7a34..c21c69ef6f 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -362,48 +362,7 @@ void DirectorEngine::loadSharedCastsFrom(Common::String filename) {
}
_sharedScore->setSpriteCasts();
-
- Common::SeekableSubReadStreamEndian *res;
-
- Common::Array<uint16> dib = sharedCast->getResourceIDList(MKTAG('D','I','B',' '));
- if (dib.size() != 0) {
- debugC(3, kDebugLoading, "****** Loading %d DIBs", dib.size());
-
- for (Common::Array<uint16>::iterator iterator = dib.begin(); iterator != dib.end(); ++iterator) {
- debugC(3, kDebugLoading, "loadSharedCastsFrom(): Shared DIB %d", *iterator);
- res = sharedCast->getResource(MKTAG('D','I','B',' '), *iterator);
- _sharedScore->_loadedCast->setVal(*iterator, new BitmapCast(*res, MKTAG('D','I','B',' '), getVersion()));
- }
- }
-
- Common::Array<uint16> stxt = sharedCast->getResourceIDList(MKTAG('S','T','X','T'));
- if (stxt.size() != 0) {
- debugC(3, kDebugLoading, "****** Loading %d STXTs", stxt.size());
-
- for (Common::Array<uint16>::iterator iterator = stxt.begin(); iterator != stxt.end(); ++iterator) {
- debugC(3, kDebugLoading, "loadSharedCastsFrom(): Shared STXT %d", *iterator);
- res = sharedCast->getResource(MKTAG('S','T','X','T'), *iterator);
- _sharedScore->_loadedCast->setVal(*iterator, new TextCast(*res, getVersion()));
- }
- }
-
- Common::Array<uint16> bmp = sharedCast->getResourceIDList(MKTAG('B','I','T','D'));
- if (bmp.size() != 0) {
- debugC(3, kDebugLoading, "****** Loading %d BITDs", bmp.size());
- for (Common::Array<uint16>::iterator iterator = bmp.begin(); iterator != bmp.end(); ++iterator) {
- debugC(3, kDebugLoading, "loadSharedCastsFrom(): Shared BITD %d (%s)", *iterator, numToCastNum(*iterator - 1024));
- res = sharedCast->getResource(MKTAG('B','I','T','D'), *iterator);
- _sharedScore->_loadedCast->setVal(*iterator, new BitmapCast(*res, MKTAG('B','I','T','D'), getVersion()));
- }
- }
-
- Common::Array<uint16> sound = sharedCast->getResourceIDList(MKTAG('S','N','D',' '));
- if (sound.size() != 0) {
- debugC(3, kDebugLoading, "****** Loading %d SNDs", sound.size());
- for (Common::Array<uint16>::iterator iterator = sound.begin(); iterator != sound.end(); ++iterator) {
- debugC(3, kDebugLoading, "loadSharedCastsFrom(): Shared SND %d, SKIPPING!", *iterator);
- }
- }
+ _sharedScore->loadSpriteImages(true);
_lingo->_archiveIndex = 0;
}
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 572c299aef..62e6f0cc37 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -307,7 +307,7 @@ void Score::loadSpriteImages(bool isSharedCast) {
BitmapCast *bitmapCast = (BitmapCast *)c->_value;
uint32 tag = bitmapCast->_tag;
- uint16 imgId = (uint16)(c->_key + _castIDoffset);
+ uint16 imgId = c->_key;
if (_vm->getVersion() >= 4 && bitmapCast->_children.size() > 0) {
imgId = bitmapCast->_children[0].index;
@@ -318,10 +318,12 @@ void Score::loadSpriteImages(bool isSharedCast) {
Common::SeekableReadStream *pic = NULL;
if (_loadedCast->contains(imgId)) {
- pic = sharedScore->getArchive()->getResource(tag, imgId);
- } else if (sharedScore && sharedScore->_loadedCast && sharedScore->_loadedCast->contains(imgId)) {
- bitmapCast->_tag = tag = ((BitmapCast *)sharedScore->_loadedCast->getVal(imgId))->_tag;
- pic = sharedScore->getArchive()->getResource(tag, imgId);
+ pic = _movieArchive->getResource(tag, imgId + _castIDoffset);
+ } else if (sharedScore) {
+ if (sharedScore->_loadedCast && sharedScore->_loadedCast->contains(imgId)) {
+ bitmapCast->_tag = tag = ((BitmapCast *)sharedScore->_loadedCast->getVal(imgId))->_tag;
+ pic = sharedScore->getArchive()->getResource(tag, imgId + sharedScore->_castIDoffset);
+ }
}
if (pic == NULL) {
Commit: ee71f5b1634e49c7228dc92a677bdc631e7d57ec
https://github.com/scummvm/scummvm/commit/ee71f5b1634e49c7228dc92a677bdc631e7d57ec
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-02-24T23:14:39+01:00
Commit Message:
DIRECTOR: Improved debug output
Changed paths:
engines/director/archive.cpp
diff --git a/engines/director/archive.cpp b/engines/director/archive.cpp
index 16a8f0de34..03f8cd6830 100644
--- a/engines/director/archive.cpp
+++ b/engines/director/archive.cpp
@@ -97,12 +97,12 @@ Common::SeekableSubReadStreamEndian *Archive::getFirstResource(uint32 tag) {
Common::SeekableSubReadStreamEndian *Archive::getResource(uint32 tag, uint16 id) {
if (!_types.contains(tag))
- error("Archive does not contain '%s' %04x", tag2str(tag), id);
+ error("Archive::getResource(): Archive does not contain '%s' %d", tag2str(tag), id);
const ResourceMap &resMap = _types[tag];
if (!resMap.contains(id))
- error("Archive does not contain '%s' %04x", tag2str(tag), id);
+ error("Archive::getResource(): Archive does not contain '%s' %d", tag2str(tag), id);
const Resource &res = resMap[id];
@@ -111,24 +111,24 @@ Common::SeekableSubReadStreamEndian *Archive::getResource(uint32 tag, uint16 id)
Resource Archive::getResourceDetail(uint32 tag, uint16 id) {
if (!_types.contains(tag))
- error("Archive does not contain '%s' %04x", tag2str(tag), id);
+ error("Archive::getResourceDetail(): Archive does not contain '%s' %d", tag2str(tag), id);
const ResourceMap &resMap = _types[tag];
if (!resMap.contains(id))
- error("Archive does not contain '%s' %04x", tag2str(tag), id);
+ error("Archive::getResourceDetail(): Archive does not contain '%s' %d", tag2str(tag), id);
return resMap[id];
}
uint32 Archive::getOffset(uint32 tag, uint16 id) const {
if (!_types.contains(tag))
- error("Archive does not contain '%s' %04x", tag2str(tag), id);
+ error("Archive::getOffset(): Archive does not contain '%s' %d", tag2str(tag), id);
const ResourceMap &resMap = _types[tag];
if (!resMap.contains(id))
- error("Archive does not contain '%s' %04x", tag2str(tag), id);
+ error("Archive::getOffset(): Archive does not contain '%s' %d", tag2str(tag), id);
return resMap[id].offset;
}
@@ -148,12 +148,12 @@ uint16 Archive::findResourceID(uint32 tag, const Common::String &resName) const
Common::String Archive::getName(uint32 tag, uint16 id) const {
if (!_types.contains(tag))
- error("Archive does not contain '%s' %04x", tag2str(tag), id);
+ error("Archive::getName(): Archive does not contain '%s' %d", tag2str(tag), id);
const ResourceMap &resMap = _types[tag];
if (!resMap.contains(id))
- error("Archive does not contain '%s' %04x", tag2str(tag), id);
+ error("Archive::getName(): Archive does not contain '%s' %d", tag2str(tag), id);
return resMap[id].name;
}
@@ -319,12 +319,12 @@ bool RIFFArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
Common::SeekableSubReadStreamEndian *RIFFArchive::getResource(uint32 tag, uint16 id) {
if (!_types.contains(tag))
- error("Archive does not contain '%s' %04x", tag2str(tag), id);
+ error("RIFFArchive::getResource(): Archive does not contain '%s' %d", tag2str(tag), id);
const ResourceMap &resMap = _types[tag];
if (!resMap.contains(id))
- error("Archive does not contain '%s' %04x", tag2str(tag), id);
+ error("RIFFArchive::getResource(): Archive does not contain '%s' %d", tag2str(tag), id);
const Resource &res = resMap[id];
@@ -574,12 +574,12 @@ bool RIFXArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
Common::SeekableSubReadStreamEndian *RIFXArchive::getResource(uint32 tag, uint16 id) {
if (!_types.contains(tag))
- error("Archive does not contain '%s' %04x", tag2str(tag), id);
+ error("RIFXArchive::getResource(): Archive does not contain '%s' %d", tag2str(tag), id);
const ResourceMap &resMap = _types[tag];
if (!resMap.contains(id))
- error("Archive does not contain '%s' %04x", tag2str(tag), id);
+ error("RIFXArchive::getResource(): Archive does not contain '%s' %d", tag2str(tag), id);
const Resource &res = resMap[id];
@@ -591,12 +591,12 @@ Common::SeekableSubReadStreamEndian *RIFXArchive::getResource(uint32 tag, uint16
Resource RIFXArchive::getResourceDetail(uint32 tag, uint16 id) {
if (!_types.contains(tag))
- error("Archive does not contain '%s' %04x", tag2str(tag), id);
+ error("RIFXArchive::getResourceDetail(): Archive does not contain '%s' %d", tag2str(tag), id);
const ResourceMap &resMap = _types[tag];
if (!resMap.contains(id))
- error("Archive does not contain '%s' %04x", tag2str(tag), id);
+ error("RIFXArchive::getResourceDetail(): Archive does not contain '%s' %d", tag2str(tag), id);
return resMap[id];
}
Commit: d5fb4f6c3112d1e85e21c146bfe3792a9876a144
https://github.com/scummvm/scummvm/commit/d5fb4f6c3112d1e85e21c146bfe3792a9876a144
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-02-24T23:35:56+01:00
Commit Message:
DIRECTOR: Fixed tags for bitmap casts
Changed paths:
engines/director/score.cpp
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 62e6f0cc37..235edd7928 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -318,6 +318,7 @@ void Score::loadSpriteImages(bool isSharedCast) {
Common::SeekableReadStream *pic = NULL;
if (_loadedCast->contains(imgId)) {
+ bitmapCast->_tag = tag = ((BitmapCast *)_loadedCast->getVal(imgId))->_tag;
pic = _movieArchive->getResource(tag, imgId + _castIDoffset);
} else if (sharedScore) {
if (sharedScore->_loadedCast && sharedScore->_loadedCast->contains(imgId)) {
@@ -606,6 +607,7 @@ void Score::loadCastDataVWCR(Common::SeekableSubReadStreamEndian &stream) {
for (uint16 id = _castArrayStart; id <= _castArrayEnd; id++) {
byte size = stream.readByte();
+ uint32 tag;
if (size == 0)
continue;
@@ -617,8 +619,14 @@ void Score::loadCastDataVWCR(Common::SeekableSubReadStreamEndian &stream) {
switch (castType) {
case kCastBitmap:
debugC(3, kDebugLoading, "Score::loadCastDataVWCR(): CastTypes id: %d(%s) BitmapCast", id, numToCastNum(id));
- // TODO: Work out the proper tag!
- _loadedCast->setVal(id, new BitmapCast(stream, MKTAG('B', 'I', 'T', 'D'), _vm->getVersion()));
+ if (_movieArchive->hasResource(MKTAG('B', 'I', 'T', 'D'), id + _castIDoffset))
+ tag = MKTAG('B', 'I', 'T', 'D');
+ else if (_movieArchive->hasResource(MKTAG('D', 'I', 'B', ' '), id + _castIDoffset))
+ tag = MKTAG('D', 'I', 'B', ' ');
+ else
+ error("Score::loadCastDataVWCR(): non-existent reference to BitmapCast");
+
+ _loadedCast->setVal(id, new BitmapCast(stream, tag, _vm->getVersion()));
break;
case kCastText:
debugC(3, kDebugLoading, "Score::loadCastDataVWCR(): CastTypes id: %d(%s) TextCast", id, numToCastNum(id));
More information about the Scummvm-git-logs
mailing list