aboutsummaryrefslogtreecommitdiff
path: root/engines/director
diff options
context:
space:
mode:
authorDmitry Iskrich2016-06-04 22:10:51 +0300
committerEugene Sandulenko2016-08-03 23:40:36 +0200
commit14d0bb6844accf4cb3d840d5ff01c25298bd7483 (patch)
tree099c1670dd06594e8422ca854406dcf12025fedc /engines/director
parentcc2abbbb9c7190a567aee9babc2073757a4edc0f (diff)
downloadscummvm-rg350-14d0bb6844accf4cb3d840d5ff01c25298bd7483.tar.gz
scummvm-rg350-14d0bb6844accf4cb3d840d5ff01c25298bd7483.tar.bz2
scummvm-rg350-14d0bb6844accf4cb3d840d5ff01c25298bd7483.zip
DIRECTOR: Find CLUT table in score initialization
Diffstat (limited to 'engines/director')
-rw-r--r--engines/director/score.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index b896665a1c..1e9ea191bc 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -58,6 +58,17 @@ Score::Score(Archive &movie) {
if (_movieArchive->hasResource(MKTAG('M','C','N','M'), 0)) {
debug("Mac name %s", _movieArchive->getName(MKTAG('M','C','N','M'), 0).c_str());
}
+ DIBDecoder palette;
+ Common::Array<uint16> clutList = _movieArchive->getResourceIDList(MKTAG('C','L','U','T'));
+
+ if (clutList.size() > 1)
+ error("More than one palette was found");
+ if (clutList.size() == 0)
+ error("CLUT not found");
+
+ Common::SeekableReadStream *pal = _movieArchive->getResource(MKTAG('C', 'L', 'U', 'T'), clutList[0]);
+ palette.loadPalette(*pal);
+ g_system->getPaletteManager()->setPalette(palette.getPalette(), 0, 255);
}
void Score::loadFrames(Common::SeekableReadStream &stream) {
@@ -486,10 +497,6 @@ void Frame::readSprite(Common::SeekableReadStream &stream, uint16 offset, uint16
void Frame::display(Archive &_movie, Graphics::ManagedSurface &surface, Common::Rect moviRect) {
surface.clear();
- DIBDecoder palette;
- Common::SeekableReadStream *pal = _movie.getResource(MKTAG('C', 'L', 'U', 'T'), 1025);
- palette.loadPalette(*pal);
- g_system->getPaletteManager()->setPalette(palette.getPalette(), 0, 255);
for (uint16 i = 0; i < CHANNEL_COUNT; i++) {
if (_sprites[i]->_enabled) {