aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/intern.h1
-rw-r--r--scumm/script_v100he.cpp12
-rw-r--r--scumm/script_v90he.cpp18
3 files changed, 25 insertions, 6 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index c1757fbb4a..addc66968a 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -940,6 +940,7 @@ protected:
void sortArray(int array, int dim2start, int dim2end, int dim1start, int dim1end, int sortOrder);
uint8 *getHEPalette(int palSlot);
+ int getHEPaletteColor(int palSlot, int color);
void setHEPaletteColor(int palSlot, uint8 color, uint8 r, uint8 g, uint8 b);
void setHEPaletteFromPtr(int palSlot, const uint8 *palData);
void setHEPaletteFromCostume(int palSlot, int resId);
diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp
index 61a12c95bc..1e74d4971b 100644
--- a/scumm/script_v100he.cpp
+++ b/scumm/script_v100he.cpp
@@ -2430,16 +2430,20 @@ void ScummEngine_v100he::o100_getWizData() {
}
void ScummEngine_v100he::o100_getPaletteData() {
+ int palSlot, color;
+
byte subOp = fetchScriptByte();
switch (subOp) {
case 13:
pop();
pop();
+ push(0);
break;
case 20:
- pop();
- pop();
+ color = pop();
+ palSlot = pop();
+ push(getHEPaletteColor(palSlot, color));
break;
case 33:
pop();
@@ -2448,21 +2452,23 @@ void ScummEngine_v100he::o100_getPaletteData() {
pop();
pop();
pop();
+ push(0);
break;
case 53:
pop();
pop();
pop();
+ push(0);
break;
case 73:
pop();
pop();
pop();
+ push(0);
break;
default:
error("o100_getPaletteData: Unknown case %d", subOp);
}
- push(0);
debug(0, "o100_getPaletteData stub (%d)", subOp);
}
diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp
index e7a66775ac..10679bdbfd 100644
--- a/scumm/script_v90he.cpp
+++ b/scumm/script_v90he.cpp
@@ -2139,6 +2139,13 @@ uint8 *ScummEngine_v90he::getHEPalette(int palSlot) {
}
}
+int ScummEngine_v90he::getHEPaletteColor(int palSlot, int color) {
+ assert(palSlot >= 1 && palSlot <= _numPalettes);
+ assert(color >= 1 && color <= 255);
+
+ return _hePalettes[palSlot * 1024 + 768 + color];
+}
+
void ScummEngine_v90he::setHEPaletteColor(int palSlot, uint8 color, uint8 r, uint8 g, uint8 b) {
assert(palSlot >= 1 && palSlot <= _numPalettes);
uint8 *p = _hePalettes + palSlot * 1024 + color * 3;
@@ -2211,6 +2218,8 @@ void ScummEngine_v90he::copyHEPaletteColor(int palSlot, uint8 dstColor, uint8 sr
}
void ScummEngine_v90he::o90_getPaletteData() {
+ int palSlot, color;
+
byte subOp = fetchScriptByte();
subOp -= 45;
@@ -2221,24 +2230,27 @@ void ScummEngine_v90he::o90_getPaletteData() {
pop();
pop();
pop();
+ push(0);
break;
case 21:
- pop();
- pop();
+ color = pop();
+ palSlot = pop();
+ push(getHEPaletteColor(palSlot, color));
break;
case 87:
pop();
pop();
+ push(0);
break;
case 172:
pop();
pop();
pop();
+ push(0);
break;
default:
error("o90_getPaletteData: Unknown case %d", subOp);
}
- push(0);
debug(1,"o90_getPaletteData stub (%d)", subOp);
}