DIRECTOR: amend the way we are parsing palette for D2

This commit is contained in:
ysj1173886760
2021-07-08 02:25:11 +02:00
committed by Eugene Sandulenko
parent fcd8703356
commit 2ef52a07cb
2 changed files with 6 additions and 3 deletions
+5 -2
View File
@@ -322,7 +322,7 @@ void Cast::loadCast() {
debugC(2, kDebugLoading, "****** Loading Palette CLUT, #%d", clutList[i]);
PaletteV4 p = loadPalette(*pal);
g_director->addPalette(clutList[i], p.palette, p.length);
g_director->addPalette(clutList[i] & 0xff, p.palette, p.length);
delete pal;
}
}
@@ -508,9 +508,12 @@ void Cast::loadCastChildren() {
// TODO: Verify how palettes work in >D4 versions
if (_version >= kFileVer400 && _version < kFileVer500 && member->_children.size() == 1) {
member->_palette = g_director->getPalette(member->_children[0].index);
} else if (_version < kFileVer400) {
} else if (_version >= kFileVer300 && _version < kFileVer400) {
// D3 palettes are always kept in this ascending order
member->_palette = g_director->getPalette((++p)->_value.id);
} else if (_version < kFileVer300) {
// for D2, we shall use the castId to get the palette
member->_palette = g_director->getPalette(member->getID());
} else {
warning("Cast::loadSpriteChildren(): Expected 1 child for palette cast, got %d", member->_children.size());
}
+1 -1
View File
@@ -97,9 +97,9 @@ public:
Common::String getVideoPath(int castId);
void dumpScript(const char *script, ScriptType type, uint16 id);
PaletteV4 loadPalette(Common::SeekableReadStreamEndian &stream);
private:
PaletteV4 loadPalette(Common::SeekableReadStreamEndian &stream);
void loadScriptText(Common::SeekableReadStreamEndian &stream, uint16 id);
void loadFontMap(Common::SeekableReadStreamEndian &stream);
void loadFontMapV4(Common::SeekableReadStreamEndian &stream);