diff options
-rw-r--r-- | engines/scumm/gfx.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/engines/scumm/gfx.cpp b/engines/scumm/gfx.cpp index 78b718d4cf..d290d12444 100644 --- a/engines/scumm/gfx.cpp +++ b/engines/scumm/gfx.cpp @@ -1374,17 +1374,24 @@ void ScummEngine_v5::drawFlashlight() { // rounded corners. static const int corner_data[] = { 8, 6, 4, 3, 2, 2, 1, 1 }; int minrow = 0; - int maxcol = _flashlight.w - 1; + int maxcol = (_flashlight.w - 1) * _bytesPerPixel; int maxrow = (_flashlight.h - 1) * vs->pitch; for (i = 0; i < 8; i++, minrow += vs->pitch, maxrow -= vs->pitch) { int d = corner_data[i]; for (j = 0; j < d; j++) { - _flashlight.buffer[minrow + j] = 0; - _flashlight.buffer[minrow + maxcol - j] = 0; - _flashlight.buffer[maxrow + j] = 0; - _flashlight.buffer[maxrow + maxcol - j] = 0; + if (_bytesPerPixel == 2) { + WRITE_UINT16(&_flashlight.buffer[minrow + 2 * j], 0); + WRITE_UINT16(&_flashlight.buffer[minrow + maxcol - 2 * j], 0); + WRITE_UINT16(&_flashlight.buffer[maxrow + 2 * j], 0); + WRITE_UINT16(&_flashlight.buffer[maxrow + maxcol - 2 * j], 0); + } else { + _flashlight.buffer[minrow + j] = 0; + _flashlight.buffer[minrow + maxcol - j] = 0; + _flashlight.buffer[maxrow + j] = 0; + _flashlight.buffer[maxrow + maxcol - j] = 0; + } } } |