diff options
author | strangerke | 2011-02-26 14:06:30 +0100 |
---|---|---|
committer | strangerke | 2011-02-26 14:06:30 +0100 |
commit | 756a343cb85760093d1906cc91644e4d10522382 (patch) | |
tree | 478a07975817caecbb0bc2d233ed5b0b0c7ee86b /engines/hugo/display.cpp | |
parent | bd191e178733dbf49b5b9b8394b8f0554fc6127b (diff) | |
download | scummvm-rg350-756a343cb85760093d1906cc91644e4d10522382.tar.gz scummvm-rg350-756a343cb85760093d1906cc91644e4d10522382.tar.bz2 scummvm-rg350-756a343cb85760093d1906cc91644e4d10522382.zip |
HUGO: Fix graphic glitches in DOS versions
Diffstat (limited to 'engines/hugo/display.cpp')
-rw-r--r-- | engines/hugo/display.cpp | 54 |
1 files changed, 36 insertions, 18 deletions
diff --git a/engines/hugo/display.cpp b/engines/hugo/display.cpp index 6c363184f6..42cde6fd70 100644 --- a/engines/hugo/display.cpp +++ b/engines/hugo/display.cpp @@ -233,24 +233,6 @@ void Screen::setBackgroundColor(const uint16 color) { } /** - * Return the overlay state (Foreground/Background) of the currently - * processed object by looking down the current column for an overlay - * base bit set (in which case the object is foreground). - */ -overlayState_t Screen::findOvl(seq_t *seq_p, image_pt dst_p, uint16 y) { - debugC(4, kDebugDisplay, "findOvl()"); - - for (; y < seq_p->lines; y++) { // Each line in object - byte ovb = _vm->_object->getBaseBoundary((uint16)(dst_p - _frontBuffer) >> 3); // Ptr into overlay bits - if (ovb & (0x80 >> ((uint16)(dst_p - _frontBuffer) & 7))) // Overlay bit is set - return kOvlForeground; // Found a bit - must be foreground - dst_p += kXPix; - } - - return kOvlBackground; // No bits set, must be background -} - -/** * Merge an object frame into _frontBuffer at sx, sy and update rectangle list. * If fore TRUE, force object above any overlay */ @@ -740,6 +722,24 @@ void Screen_v1d::loadFontArr(Common::ReadStream &in) { } } +/** + * Return the overlay state (Foreground/Background) of the currently + * processed object by looking down the current column for an overlay + * base byte set (in which case the object is foreground). + */ +overlayState_t Screen_v1d::findOvl(seq_t *seq_p, image_pt dst_p, uint16 y) { + debugC(4, kDebugDisplay, "findOvl()"); + + for (; y < seq_p->lines; y++) { // Each line in object + byte ovb = _vm->_object->getBaseBoundary((uint16)(dst_p - _frontBuffer) >> 3); // Ptr into overlay bytes + if (ovb) // If any overlay base byte is non-zero then the object is foreground, else back. + return kOvlForeground; + dst_p += kXPix; + } + + return kOvlBackground; // No bits set, must be background +} + Screen_v1w::Screen_v1w(HugoEngine *vm) : Screen(vm) { } @@ -790,5 +790,23 @@ void Screen_v1w::loadFontArr(Common::ReadStream &in) { } } +/** + * Return the overlay state (Foreground/Background) of the currently + * processed object by looking down the current column for an overlay + * base bit set (in which case the object is foreground). + */ +overlayState_t Screen_v1w::findOvl(seq_t *seq_p, image_pt dst_p, uint16 y) { + debugC(4, kDebugDisplay, "findOvl()"); + + for (; y < seq_p->lines; y++) { // Each line in object + byte ovb = _vm->_object->getBaseBoundary((uint16)(dst_p - _frontBuffer) >> 3); // Ptr into overlay bits + if (ovb & (0x80 >> ((uint16)(dst_p - _frontBuffer) & 7))) // Overlay bit is set + return kOvlForeground; // Found a bit - must be foreground + dst_p += kXPix; + } + + return kOvlBackground; // No bits set, must be background +} + } // End of namespace Hugo |