diff --git a/src/console/piscreen.cpp b/src/console/piscreen.cpp index 4d69e6e2..b2ae5ded 100644 --- a/src/console/piscreen.cpp +++ b/src/console/piscreen.cpp @@ -240,12 +240,11 @@ void PIScreen::SystemConsole::print() { #define BACKGROUND_MASK (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE) WORD PIScreen::SystemConsole::attributes(const PIScreenTypes::Cell & c) { WORD attr = PRIVATE->dattr; - bool inv = ((c.format.flags & Inverse) == Inverse); - if (c.format.flags & Bold) attr |= (inv ? BACKGROUND_INTENSITY : FOREGROUND_INTENSITY); - else attr &= ~(inv ? BACKGROUND_INTENSITY : FOREGROUND_INTENSITY); + if (c.format.flags & Bold) attr |= FOREGROUND_INTENSITY; + else attr &= ~FOREGROUND_INTENSITY; if (c.format.flags & Underline) attr |= COMMON_LVB_UNDERSCORE; else attr &= ~COMMON_LVB_UNDERSCORE; - switch (inv ? c.format.color_back : c.format.color_char) { + switch (c.format.color_char) { case Black: attr = (attr & ~FOREGROUND_MASK); break; case Red: attr = (attr & ~FOREGROUND_MASK) | FOREGROUND_RED; break; case Green: attr = (attr & ~FOREGROUND_MASK) | FOREGROUND_GREEN; break; @@ -255,7 +254,7 @@ WORD PIScreen::SystemConsole::attributes(const PIScreenTypes::Cell & c) { case Yellow: attr = (attr & ~FOREGROUND_MASK) | FOREGROUND_RED | FOREGROUND_GREEN; break; case White: attr = attr | FOREGROUND_MASK; break; } - switch (inv ? c.format.color_char : c.format.color_back) { + switch (c.format.color_back) { case Black: attr = (attr & ~BACKGROUND_MASK); break; case Red: attr = (attr & ~BACKGROUND_MASK) | BACKGROUND_RED; break; case Green: attr = (attr & ~BACKGROUND_MASK) | BACKGROUND_GREEN; break; @@ -265,6 +264,12 @@ WORD PIScreen::SystemConsole::attributes(const PIScreenTypes::Cell & c) { case Yellow: attr = (attr & ~BACKGROUND_MASK) | BACKGROUND_RED | BACKGROUND_GREEN; break; case White: attr = attr | BACKGROUND_MASK; break; } + if ((c.format.flags & Inverse) == Inverse) { + uchar f = c.format.flags & 0xFF; + c.format.flags &= 0xFFFFFF00; + f = (f << 4) | (f >> 4); + c.format.flags |= f; + } return attr; } #undef FOREGROUND_MASK