MCPcopy Create free account
hub / github.com/AppleWin/AppleWin / updateFramebufferTVSingleScanline

Function updateFramebufferTVSingleScanline

source/NTSC.cpp:511–529  ·  view source on GitHub ↗

Original: Prev1(inbetween) = current - 25% of previous AppleII scanline GH#650: Prev1(inbetween) = 50% of (50% current + 50% of previous AppleII scanline)

Source from the content-addressed store, hash-verified

509// Original: Prev1(inbetween) = current - 25% of previous AppleII scanline
510// GH#650: Prev1(inbetween) = 50% of (50% current + 50% of previous AppleII scanline)
511inline 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

Calls 5

getScanlineCurrentFunction · 0.85
getScanlinePreviousFunction · 0.85
getScanlineColorFunction · 0.85
getScanlineNextInbetweenFunction · 0.85

Tested by

no test coverage detected