Original: Prev1(inbetween) = current - 25% of previous AppleII scanline GH#650: Prev1(inbetween) = 50% of (50% current + 50% of previous AppleII scanline)
| 509 | // Original: Prev1(inbetween) = current - 25% of previous AppleII scanline |
| 510 | // GH#650: Prev1(inbetween) = 50% of (50% current + 50% of previous AppleII scanline) |
| 511 | inline void updateFramebufferTVSingleScanline( uint16_t signal, bgra_t *pTable ) |
| 512 | { |
| 513 | uint32_t *pLine0Curr = getScanlineCurrent(); |
| 514 | uint32_t *pLine1Prev = getScanlinePreviousInbetween(); |
| 515 | uint32_t *pLine2Prev = getScanlinePrevious(); |
| 516 | const uint32_t color0 = getScanlineColor( signal, pTable ); |
| 517 | const uint32_t color2 = *pLine2Prev; |
| 518 | uint32_t color1 = ((color0 & 0x00fefefe) >> 1) + ((color2 & 0x00fefefe) >> 1); // 50% Blend |
| 519 | color1 = (color1 & 0x00fefefe) >> 1; // ... then 50% brightness for inbetween line |
| 520 | |
| 521 | *pLine1Prev = color1 | ALPHA32_MASK; |
| 522 | *pLine0Curr = color0; |
| 523 | |
| 524 | // GH#650: Draw to final inbetween scanline to avoid residue from other video modes (eg. Amber->TV B&W) |
| 525 | if (g_nVideoClockVert == (VIDEO_SCANNER_Y_DISPLAY-1)) |
| 526 | *getScanlineNextInbetween() = ((color0 & 0x00fcfcfc) >> 2) | ALPHA32_MASK; // 50% of (50% current + black)) = 25% of current |
| 527 | |
| 528 | g_pVideoAddress++; |
| 529 | } |
| 530 | |
| 531 | //=========================================================================== |
| 532 |
no test coverage detected