aboutsummaryrefslogtreecommitdiff
path: root/engines/mads/palette.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2014-05-31 11:39:28 -0400
committerPaul Gilbert2014-05-31 11:39:28 -0400
commite8a52b67e848172066a384ba1c116683177a8415 (patch)
tree80ccb06c60397bcfe954814790a524c14285da13 /engines/mads/palette.cpp
parent659b7bfeed3b7cc0ccb70fcb41d638a3e8ba3d45 (diff)
downloadscummvm-rg350-e8a52b67e848172066a384ba1c116683177a8415.tar.gz
scummvm-rg350-e8a52b67e848172066a384ba1c116683177a8415.tar.bz2
scummvm-rg350-e8a52b67e848172066a384ba1c116683177a8415.zip
MADS: Fix assert when doctor hits you with a blackjak
Diffstat (limited to 'engines/mads/palette.cpp')
-rw-r--r--engines/mads/palette.cpp28
1 files changed, 16 insertions, 12 deletions
diff --git a/engines/mads/palette.cpp b/engines/mads/palette.cpp
index 755f7bcf5c..0028548c1e 100644
--- a/engines/mads/palette.cpp
+++ b/engines/mads/palette.cpp
@@ -142,19 +142,19 @@ int PaletteUsage::process(Common::Array<RGB6> &palette, uint flags) {
int var3A = (flags & 0x4000) ? 0xffff : 0xfffe;
for (uint palIndex = 0; palIndex < palette.size(); ++palIndex) {
- bool var48 = false;
+ bool changed = false;
int var4 = 0xffff;
int v1 = palRange[palIndex]._v2;
if (palette[v1]._flags & 8) {
- var48 = true;
+ changed = true;
var4 = 0xFD;
}
if (hasUsage && palette[v1]._flags & 0x10) {
- for (uint usageIndex = 0; usageIndex < tempUsage._data->size() && !var48; ++usageIndex) {
+ for (uint usageIndex = 0; usageIndex < tempUsage._data->size() && !changed; ++usageIndex) {
if ((*tempUsage._data)[usageIndex]._palIndex == palIndex) {
- var48 = true;
+ changed = true;
int dataIndex = MIN(usageIndex, _data->size() - 1);
var4 = (*_data)[dataIndex]._palIndex;
}
@@ -162,9 +162,9 @@ int PaletteUsage::process(Common::Array<RGB6> &palette, uint flags) {
}
if (flag1 && palette[palIndex]._flags & 0x10) {
- for (uint usageIndex = 0; usageIndex < _data->size() && !var48; ++usageIndex) {
+ for (uint usageIndex = 0; usageIndex < _data->size() && !changed; ++usageIndex) {
if ((*_data)[usageIndex]._palIndex == palIndex) {
- var48 = true;
+ changed = true;
var4 = 0xF0 + usageIndex;
// Copy data into the high end of the main palette
@@ -177,7 +177,7 @@ int PaletteUsage::process(Common::Array<RGB6> &palette, uint flags) {
}
}
- if (!var48 && !noUsageFlag) {
+ if (!changed && !noUsageFlag) {
int var2 = (palette[palIndex]._flags & 0x20) ||
(((flags & 0x2000) || (palette[palIndex]._flags & 0x4000)) &&
((flags & 0x1000) || (palCount == 0))) ? 0x7fff : 1;
@@ -200,7 +200,7 @@ int PaletteUsage::process(Common::Array<RGB6> &palette, uint flags) {
}
if (var2 > var10) {
- var48 = true;
+ changed = true;
var4 = idx;
var2 = var10;
}
@@ -208,12 +208,12 @@ int PaletteUsage::process(Common::Array<RGB6> &palette, uint flags) {
}
}
- if (!var48 && (!(flags & 0x1000) || (!(palette[palIndex]._flags & 0x60) && !(flags & 0x2000)))) {
- for (int idx = freeIndex; idx < palIdx && !var48; ++idx) {
+ if (!changed && (!(flags & 0x1000) || (!(palette[palIndex]._flags & 0x60) && !(flags & 0x2000)))) {
+ for (int idx = freeIndex; idx < palIdx && !changed; ++idx) {
if (!_vm->_palette->_palFlags[idx]) {
--palCount;
++freeIndex;
- var48 = true;
+ changed = true;
var4 = idx;
RGB6 &pSrc = palette[palIndex];
@@ -225,7 +225,11 @@ int PaletteUsage::process(Common::Array<RGB6> &palette, uint flags) {
}
}
- assert(var48);
+ // TODO: Not sure if it's valid or not for changed flag to ever be false.
+ // In at least scene 318, when the doctor knocks you with the blackjack,
+ // the changed flag can be false
+ //assert(changed);
+
int var52 = (noUsageFlag && palette[palIndex]._u2) ? 2 : 0;
_vm->_palette->_palFlags[var4] |= var52 | rgbMask;