aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/actor.cpp12
-rw-r--r--scumm/akos.cpp4
-rw-r--r--scumm/script_v6.cpp2
3 files changed, 13 insertions, 5 deletions
diff --git a/scumm/actor.cpp b/scumm/actor.cpp
index 9a4708ab60..94713d09a9 100644
--- a/scumm/actor.cpp
+++ b/scumm/actor.cpp
@@ -1029,14 +1029,20 @@ void Actor::drawActorCostume() {
ar.setPalette(palette);
ar.setFacing(this);
- ar._dirty_id = number;
-
ar._draw_top = top = 0x7fffffff;
ar._draw_bottom = bottom = 0;
+ ar._dirty_id = number;
+
if (ar.drawCostume(cost)) {
- // FIXME: this breaks talking in The Dig. But why?
+ // FIXME: this breaks talking in The Dig because the actor
+ // is redrawn too often, thus breaking the waitForActor opcode.
// Note that I originally added this to correct some redraw issues.
+ // A "better" implementation would work like the corresponding code
+ // for "old" costumes, that is, only trigger a redraw if the actor
+ // is partially hidden / offscreen... but I am not sure the original
+ // actually does this, so before we spend time on implementing this,
+ // we should first figure out what the original code does here...
//needBgReset = true;
//needRedraw = true;
}
diff --git a/scumm/akos.cpp b/scumm/akos.cpp
index 2535d3dafb..dc4b421fb0 100644
--- a/scumm/akos.cpp
+++ b/scumm/akos.cpp
@@ -1106,7 +1106,7 @@ void AkosRenderer::akos16DecodeLine(byte *buf, int32 numbytes, int32 dir) {
} else {
AKOS16_FILL_BITS()
akos16.color = ((byte)akos16.bits) & akos16.mask;
- AKOS16_EAT_BITS(akos16.shift)
+ AKOS16_EAT_BITS(akos16.shift)
AKOS16_FILL_BITS()
}
} else {
@@ -1235,7 +1235,7 @@ void AkosRenderer::codec16() {
*/
// Modified by ludde
- if (clip_left < 0) {
+ if (clip_left < 0) {
skip_x = -clip_left;
clip_left = 0;
}
diff --git a/scumm/script_v6.cpp b/scumm/script_v6.cpp
index 009415172c..378ba4e96e 100644
--- a/scumm/script_v6.cpp
+++ b/scumm/script_v6.cpp
@@ -2949,6 +2949,8 @@ void Scumm_v6::o6_unknownE1() {
}
// FIXME: something is wrong, it take wrong position or wrong buffer check
+ // Fingolfin says: the vs->tdirty[0] makes no sense to me at all, what is this
+ // supposed to do ?!?
int offset = (y - vs->topline) * _realWidth + x + vs->tdirty[0];
byte area = *(getResourceAddress(rtBuffer, vs->number + 1) + offset);