Perfect digital pixels can make old games look wrong
Composite encoding, CRT behavior, magnetic tape and decorative shaders damage pictures in fundamentally…
The short version
- Authentic NTSC video depends on console timing, composite encoding, television decoding and CRT behavior, not a scanline overlay.
- VHS adds chroma loss, tracking damage, dropouts and generation noise after composite video has already constrained colour detail.
- Recreate the machine, cable, display and recording chain first; use decorative analog damage deliberately rather than calling it accurate.
Sonic’s waterfall was never meant to look like a striped wall. I ran the game at crisp digital resolution expecting revelation. Instead: checkerboards, raw dithering and exposed pixel scaffolding.
The LCD reproduced every pixel perfectly and mangled the picture. Those pixels assumed composite encoding, a television decoder and a glowing tube. The TV helped render the image.
Authentic NTSC video requires the original signal chain: console timing, composite encoding, television decoding and CRT behavior. VHS damage came later. Decorative scanlines are their own creative category. I can combine them, obviously, but piling every “retro” effect onto one frame is carbonara seasoned with the entire spice cabinet.
I need to know the machine, cable, display and whether anyone recorded the result. Otherwise I’m recreating a memory built from YouTube compression and a Blockbuster cassette left under a car seat for six months.
Composite NTSC made the cable part of the graphics pipeline
The NTSC look starts inside the encoder. NTSC defines the television system and timing; composite squeezes brightness and colour into one signal. RGB over SCART, composite from a Mega Drive and VHS all enter the same retro conversation while looking wildly different. I spent years calling them “old television stuff.” Convenient, lazy, wrong.

The encoder converts RGB into YUV: Y carries luminance, while U and V carry blue-difference and red-difference colour. This preserved monochrome compatibility because black-and-white images retain luminance while both colour-difference components fall to zero. The encoder places U and V on one colour subcarrier in phase quadrature, a quarter-cycle apart so they can be recovered independently. NTSC Signal Lab puts the subcarrier around 3.58 MHz, with phase determining decoded hue. Luminance and modulated chrominance share the composite cable, then the receiver must separate them. Imperfect separation creates false colour, dot crawl and ringing. Phase errors rotate hue, hence the tint knob on American TVs and some lightly marinated childhood faces.
Bandwidth makes things messier. NTSC Signal Lab gives chroma about 0.5 MHz, versus roughly 4.2 MHz for luma. Colour gets around one-eighth the room of brightness detail, so a sharp white edge may survive while adjacent red spreads sideways. Chroma delay can shift colour away from the edge. A generic blur cannot recreate this because the damage depends on the source pixels.
Console timing determines which patterns trigger it. Lola Retro models about 227⅓ subcarrier cycles per line for SNES, 228 for Mega Drive and 227½ for PlayStation. These are the project’s modeled timings, not every hardware revision ever shipped. They explain why one-pixel stripes blend into new colours, Sonic gets rainbow shimmer and PlayStation dithering becomes a smoother gradient. Developers designed around TV limitations. Raw pixels were mise en place. The TV cooked dinner.
Even quirks below the visible signal matter. A recent MAME commit reproduced an NES PPU behaviour involving OAM row copying so sprites in the pirate game Huge Insect appear correctly; Dendy timing had produced a different result. Resolution never had a chance.

The CRT finishes the image with light and glass
After the decoder separates brightness and colour, the CRT takes over. Lola Retro models the console encoder and cable, then the TV decoder, electron beam, phosphor mask and glass. That cured me of treating “CRT” as a transparent PNG with black lines.
The decoded signal controls an electron beam scanning across the tube. It excites red, green and blue phosphors behind an aperture grille, slot mask or shadow mask. The spot has physical width, which Lola Retro increases with brightness: bright neighbouring details merge more easily while darker ones stay sharper. Video mode determines the drawn lines, but focus and screen size affect gap visibility; viewing distance changes it again. Phosphors spread and decay after excitation. The curved face and internal geometry determine image placement. A fixed scanline overlay reacts to none of this; its dark rows stay equally dark regardless of the image. Giving every historical display identical stripes is one fake moustache on every portrait in the Uffizi.
The tube model also matters. Lola Retro’s typical mid-1990s PC monitor runs around 31 kHz.
It line-doubles a 320 by 200 DOS image into 400 displayed lines, with a modeled 0.28 mm dot mask specific to that setup. A consumer TV fed composite adds softer colour and signal interference. A European TV receiving SCART RGB keeps beam and phosphor behaviour without composite interference. Sony studio monitors, VGA screens and arcade RGB monitors each produce different combinations.
I configure from the source outward. A Mega Drive gets its console timing, cable mode and consumer TV before curvature. A DOS game gets VGA and a PC monitor. A 15 kHz arcade board gets an RGB arcade display; living-room rainbowing invents a cable the cabinet never used.
Lola Retro’s setup guide says to disable built-in NTSC, Blargg, smoothing or blur filters while its signal simulation runs. Two encoding passes process the picture twice. I once left an emulator filter beneath a CRT preset and admired my “authentic softness” for twenty minutes. Digital cataracts.
Later TVs with comb filters separated luma and chroma better than early consumer sets, reducing rainbowing while preserving tube-beam behaviour. Lola Retro’s author openly requests hardware comparisons and corrections, so the simulation deserves scrutiny. It also lacks support for rotated or vertical games. Upscaled PlayStation or PlayStation 2 frames can resemble 480i closely enough that users sometimes must select console timing manually.
Nobody knows how closely every Lola Retro model matches every television. I trust that admission over any shader named “PERFECT CRT FINAL v7.”
Tape creates another generation of failure
VHS and Hi8 arrive later: source, composite signal, recorder, magnetic tape, playback, then display or capture device. Clean composite can already show dot crawl and colour bleed without tracking errors. Tape adds its own physics, with the subtlety of an uncle discovering the camcorder zoom rocker at a wedding.
A VHS deck records with rotating heads, whose handoff can create a noise bar near the picture’s bottom. Through chroma-under, the deck moves chroma to a lower recording frequency, then reconverts it during playback. NTSC Signal Lab places recorded chroma near 629 kHz, far below the original 3.58 MHz subcarrier, so colour detail takes another hit after composite already constrained it. Misalignment between tape path and recorded tracks causes horizontal displacement or tearing. Dropouts mark lost recorded information. Copying repeats recording and playback, adding noise and worsening bleed each generation. These failures affect specific frame areas and move over time. Uniform static sprayed everywhere looks like a Halloween costume from the video-effects aisle.
I separate the stages. Signal artifacts belong in the emulator or composite encode-and-decode pass because console timing and image content determine them. Head switching, tracking damage and generation loss belong in the recording pass. A direct console capture from a consumer TV gets no tape damage. Restraint remains legal, whatever TikTok editing templates suggest.
Format labels demand humility. In an October ntsc-rs discussion, a requester suspected a reference clip came from a Hi8 camera. Contributors shared presets, and the requester rated one “9/10,” identifying luma noise as the remaining mismatch. That helps identify the brightness noise’s spatial character, but nobody proved whether the source was Hi8, Video8, VHS or later digital treatment.
I match observable traits: luma-noise fineness, colour spread, motion distortion and dropout placement. Noise alone does not earn a VHS label through vibes.
Fake analog effects deserve an honest label
Sometimes I want accuracy. Sometimes I want the title card cursed before lunch.
The Dolphin CRT shader by mariodivece excels at the second. It alternates line intensity, offsets red and green sampling for colour bleed, adds flicker and animates a rolling bar. Reading screen coordinates, it gives alternating lines different brightness values. It samples colour channels from slightly shifted horizontal positions, creating coloured edge fringes. A time value moves the line pattern and drives a sine wave that changes brightness across the frame. Screen position and time control everything, bypassing RGB-to-YUV encoding, subcarrier modulation and receiver decoding. It creates a strong analog mood without asking whether the source pattern would fool a TV. Users have reported scrolling dark lines during fast camera movement; another found the flicker excessive. Even the cheap route bites.
The ntsc-rs community debates this boundary honestly. Project member valadaptive said diagonal scanlines did not reflect CRT behaviour and that the effect combined comb filtering with incorrectly interacting controls. Users replied that the removed controls had become creative tools and existing presets looked unfinished without them.
aether1941 made the creative case in the project’s October issue:
i love this project but i wanna have more control over the effects, not less.
Agreed. Keep those controls under a creative or legacy label and let people cook. A synthesizer can make sounds no violin can; call the preset “laboratory-accurate Stradivarius” and my Italian hands start moving independently.
For historical game presentation, I use a system-aware composite emulator with a CRT shader. For repeatable grading, ntsc-rs offers GUI and command-line batch processing. Its Chaotic-AUR request identifies the project as GPL-licensed, though the request does not prove package acceptance. For pure mood, I tune the lightweight shader by eye and enjoy the radioactive chroma.
Image-to-image AI can produce one convincing damaged frame. Video reveals the trick: every frame must preserve the relationship between source detail and artifact behaviour, while a deterministic signal model repeats the same causal chain. I already spend enough time discussing how to build your own AI agents, run a self-hosted AI agent and decide whether a personal AI assistant needs my inbox. Here, old maths wins. No agentic workflow required.
Arthur Mensch said AI should:
be a tool for empowerment, not dominance.
Marjorie Janiewicz explained her preference for model ownership:
I don’t want to get disconnected. I want to own my model.
Before touching a slider, I complete one sentence: “I am reproducing footage from this machine, through this cable, on this display, recorded by this device.”
If the honest answer is “I just want it to look sick,” perfetto. Add diagonal lines and enough head-switching noise to make a Blockbuster cassette file a complaint. The retro artists people copy next will know exactly where images break, then choose the damage deliberately.
Frequently asked questions
What causes artifacts in NTSC video?
NTSC video artifacts arise when luminance and modulated chrominance share a composite cable and the receiver imperfectly separates them. Limited chroma bandwidth, subcarrier phase, console timing and decoder design can create colour bleed, false colour, dot crawl, ringing and hue shifts before the CRT adds its own optical behavior.
Is VHS damage part of the NTSC video look?
VHS damage is a later recording stage, not a requirement for authentic composite NTSC video. Tape can add chroma-under colour loss, head-switching noise, tracking displacement, tearing, dropouts and generation loss. A direct console capture from a consumer television can show composite artifacts without any tape damage.
Can a scanline shader accurately recreate a CRT?
A fixed scanline overlay cannot accurately reproduce a CRT by itself. Real CRT appearance changes with beam width, brightness, phosphor mask, focus, screen size, viewing distance, glass geometry and video mode. System-aware composite emulation paired with a CRT shader better represents the original signal and display chain.
Sources
- devices/video/ppu2c0x.cpp: implement a documented NTSC PPU quirk with OAM, making Huge Insect sprites to appear during gameplay
- I think this might be a hi8 cam so could anyone recreated
- [Request] ntsc-rs
- bring back the scanline options
- Simulation of degraded tapes like as shown in the example
- CRT Scanline Effect for Dolphin Emulator