diff options
-rw-r--r-- | engines/gob/inter_v1.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/engines/gob/inter_v1.cpp b/engines/gob/inter_v1.cpp index 69c392b198..910f3f7b5f 100644 --- a/engines/gob/inter_v1.cpp +++ b/engines/gob/inter_v1.cpp @@ -972,6 +972,7 @@ bool Inter_v1::o1_loadTot(OpFuncParams ¶ms) { bool Inter_v1::o1_palLoad(OpFuncParams ¶ms) { int index1, index2; + int16 id; byte cmd; Resource *resource; @@ -1116,7 +1117,8 @@ bool Inter_v1::o1_palLoad(OpFuncParams ¶ms) { case 61: index1 = _vm->_game->_script->readByte(); index2 = (_vm->_game->_script->readByte() - index1 + 1) * 3; - resource = _vm->_game->_resources->getResource(_vm->_game->_script->readInt16()); + id = _vm->_game->_script->readInt16(); + resource = _vm->_game->_resources->getResource(id); if (!resource) break; @@ -1124,6 +1126,13 @@ bool Inter_v1::o1_palLoad(OpFuncParams ¶ms) { resource->getData() + index1 * 3, index2); delete resource; + // WORKAROUND: The Last Dynasty overwrites the 0. palette entry but depends on it staying black. + if ((_vm->getGameType() == kGameTypeDynasty) && (index1 == 0)) { + _vm->_draw->_vgaPalette[0].red = 0; + _vm->_draw->_vgaPalette[0].green = 0; + _vm->_draw->_vgaPalette[0].blue = 0; + } + if (_vm->_draw->_applyPal) { _vm->_draw->_applyPal = false; _vm->_video->setFullPalette(_vm->_global->_pPaletteDesc); |