diff options
Diffstat (limited to 'scumm/costume.cpp')
-rw-r--r-- | scumm/costume.cpp | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/scumm/costume.cpp b/scumm/costume.cpp index e8d6c74397..3df8537185 100644 --- a/scumm/costume.cpp +++ b/scumm/costume.cpp @@ -318,29 +318,33 @@ void CostumeRenderer::procC64() { if (color & 0x80) { len = color & 0x7f; color = *src++; - for (int z = 0; z < len; z++) { - dst[0] = dst[1] = _vm->gdi._C64Colors[(color >> 6) & 3]; - dst[2] = dst[3] = _vm->gdi._C64Colors[(color >> 4) & 3]; - dst[4] = dst[5] = _vm->gdi._C64Colors[(color >> 2) & 3]; - dst[6] = dst[7] = _vm->gdi._C64Colors[(color >> 0) & 3]; - dst += _outwidth; - y++; - if (y >= (_height >> 3)) { + while (len--) { + for (int i = 0; i < 8; i++) { + dst[0] = dst[1] = _vm->gdi._C64Colors[(color >> 6) & 3]; + dst[2] = dst[3] = _vm->gdi._C64Colors[(color >> 4) & 3]; + dst[4] = dst[5] = _vm->gdi._C64Colors[(color >> 2) & 3]; + dst[6] = dst[7] = _vm->gdi._C64Colors[(color >> 0) & 3]; + dst += _outwidth; + } + y+=8; + if (y >= _height) { y = 0; dst = v1.destptr + (x << 3); } } } else { len = color; - for (int z = 0; z < len; z++) { + while (len--) { color = *src++; - dst[0] = dst[1] = _vm->gdi._C64Colors[(color >> 6) & 3]; - dst[2] = dst[3] = _vm->gdi._C64Colors[(color >> 4) & 3]; - dst[4] = dst[5] = _vm->gdi._C64Colors[(color >> 2) & 3]; - dst[6] = dst[7] = _vm->gdi._C64Colors[(color >> 0) & 3]; - dst += _outwidth; - y++; - if (y >= (_height >> 3)) { + for (int i = 0; i < 8; i++) { + dst[0] = dst[1] = _vm->gdi._C64Colors[(color >> 6) & 3]; + dst[2] = dst[3] = _vm->gdi._C64Colors[(color >> 4) & 3]; + dst[4] = dst[5] = _vm->gdi._C64Colors[(color >> 2) & 3]; + dst[6] = dst[7] = _vm->gdi._C64Colors[(color >> 0) & 3]; + dst += _outwidth; + } + y+=8; + if (y >= _height) { y = 0; dst = v1.destptr + (x << 3); } |