Best CRT Filters for RetroArch: How Scanlines, Phosphor Masks, and Curvature Actually Work

29 April 2026 19 min read Mark Baxman

You fire up RetroArch on your modern display to replay Castlevania III, and something feels wrong. The sprites look flat and plasticky—like someone printed the original game art on glossy paper and pasted it to your screen. You scroll through the shader library and see dozens of options: CRT-Geom, CRT-Guest, Lottes, NTSC filters, masks with unfamiliar names. The settings overwhelm you: scanline intensity, phosphor type, aperture, curvature, gamma. You’re not even sure which ones actually do anything or if you’re just adding CPU overhead for aesthetic theater.

Here’s the real situation: CRT filters aren’t just visual nostalgia. They’re mathematical reconstructions of specific physical phenomena that shaped how those games looked when displayed on actual cathode ray tube monitors. The scanlines you remember weren’t a design choice—they were the unavoidable result of electron guns painting horizontal lines across a phosphor-coated screen 50 to 85 times per second. The glow and color fringing were consequences of physics. The curve distortion at screen edges was geometric reality. Understanding how these filters work, why they exist, and which ones actually matter for your setup requires understanding what you’re actually trying to recreate.

## What you’ll learn in this article

Modern displays are fundamentally different devices from the CRT monitors that displayed original arcade cabinets, home computers, and early consoles. A CRT drew images line by line in real time using a moving electron beam. Modern LCDs and OLEDs display complete pre-rendered images all at once. That difference changes everything about how the image appears to your eye—color, sharpness, perceived motion, and fine detail. This article covers the physics behind CRT display behavior, how emulation filters recreate those effects, and a practical framework for choosing filters based on what you’re actually trying to achieve. By the end, you’ll understand whether you need scanlines, what phosphor masks do, why curvature matters, and how to evaluate filters without drowning in settings menus.

## The physics of what you’re actually trying to recreate

### How CRT displays created the image you remember

A CRT monitor didn’t display a “complete” image in the way you’re thinking. It generated the picture by scanning a thin electron beam across the phosphor-coated screen from left to right, top to bottom, line by line. For a 240-line resolution display running at 60 Hz, the electron gun traced 240 horizontal lines sixty times per second—14,400 individual horizontal scans every single second.

Here’s the crucial part: the phosphor only glowed when the electron beam directly hit it. The areas between those horizontal scan lines got almost no direct electron beam exposure. Your eye perceived a complete image because of two factors working together. First, phosphor persistence—the chemical coating continued glowing briefly after the electron beam moved past. This glow lasted roughly 16 to 20 milliseconds, enough to bridge the gap before the next vertical refresh. Second, human vision integrates light over time. Your eye’s temporal resolution can’t distinguish individual refresh cycles above about 50-60 Hz, so it blends the bright horizontal lines and the dim gaps between them into a perception of a complete, unified image.

But here’s what your brain actually perceived: thin bright horizontal bands (the scan lines where the beam directly excited the phosphor) separated by darker gaps. That’s not a flaw or a limitation you overlooked. You saw it directly. The scanlines were part of the image. They influenced perceived sharpness, color saturation, and the overall visual “texture” of the display.

### Color generation and the shadow mask

CRT monitors created color images using three electron guns (one each for red, green, and blue) and a **shadow mask**—a thin sheet of metal with precisely drilled holes positioned between the electron guns and the phosphor screen. The shadow mask did two critical things: it ensured each electron gun could only hit its corresponding color phosphor, and it created a repeating geometric pattern that determined color resolution.

In a typical TV-style shadow mask (common on budget displays), the holes arranged in a triangular pattern. This meant the pixel-level color information had lower spatial resolution than the luminance information—your eye perceived sharp brightness changes but softer color transitions. In computer monitors using aperture grille technology (a series of thin vertical wires instead of a perforated mask), the pattern was different, creating slightly different color-sharpness characteristics and a different visual “feel.”

The consequence: color information on a CRT monitor wasn’t as spatially precise as modern displays. Colors had softer edges. Adjacent colors mixed slightly through the shadow mask structure. This became part of what made the image look distinct—softer color transitions, less harsh color artifacts, a certain visual “warmth” that wasn’t intentional design but rather a natural artifact of the technology.

### Beam spot size and geometric distortion

The electron beam itself had finite width—typically 0.8 to 1.2 millimeters in diameter depending on the monitor and how it was tuned. This spot size blurred horizontal detail slightly. Combined with the shadow mask spacing and the limited color resolution, CRT monitors had a characteristic softness to fine horizontal detail that modern displays simply don’t have.

Additionally, CRT screens curved inward (the glass itself was slightly concave). This curve served both optical and mechanical purposes—it helped focus the electron beam and distributed mechanical stress evenly across the screen glass. But the curve also created visible geometric distortion, especially noticeable at the screen edges. Horizontal lines bowed outward. Vertical lines curved. The further from center, the more pronounced the effect. This distortion wasn’t a defect; it was inherent to the display technology.

## How emulation filters recreate these effects

### Scanline rendering: what’s actually happening

A scanline filter inserts dark horizontal lines at regular intervals across the displayed image to simulate the gaps between electron beam passes. The filter works by darkening every other pixel row (or every third or fourth, depending on implementation) to a user-adjustable degree.

The engineering question is: how dark should those lines be? A weak scanline filter (20-30% darkness) creates a subtle texture. A strong one (60-70% darkness) creates obvious horizontal striping. The “correct” setting depends on the original display and viewing distance. An arcade cabinet viewed from 24 inches away with a dim beam and high phosphor persistence needed stronger scanlines to look right. A home computer monitor with a brighter beam and lower persistence needed weaker ones.

Critically, scanline filters also reduce the perceived vertical resolution of the image. A 240-line game rendered with strong scanlines effectively becomes visually similar to a 120-line image—the scanlines consume half the vertical detail. This isn’t wrong; it’s authentic to the source hardware. The original hardware never displayed 240 distinct lines of color information simultaneously. It drew 240 lines, but the gaps between them were darker, reducing effective perceived vertical detail.

Modern filters (particularly **CRT-Guest** and **CRT-Geom**) introduce additional sophistication by varying scanline intensity based on the beam’s brightness at that location. Bright pixels generate more glow and phosphor persistence, which makes adjacent scanline gaps less visible. Dark pixels produce less glow, making scanlines more prominent. This simulates realistic phosphor behavior more accurately than simple static scanline patterns.

### Phosphor masks and color separation

A phosphor mask filter inserts a repeating color pattern to simulate the shadow mask effect. The most common patterns in emulation are:

**Slot mask** (aperture grille simulation): Vertical lines that slightly separate red, green, and blue color information. This reduces color sharpness but maintains vertical detail well. It produces the visual characteristic of PC monitors with aperture grille technology—sharp vertically but softer horizontally in color.

**Shadow mask** (triangular pattern): A repeating triangular or hexagonal arrangement that reduces both horizontal and vertical color detail. This matches the characteristics of television-style CRTs with perforated shadow masks.

**Clypeus/dot mask**: A fine dotted pattern that creates a classic “phosphor dot” look, simulating the idea that the screen was made of discrete phosphor dots. This is more of an artistic recreation than a precise physical model—real phosphor phosphors aren’t discrete dots—but it creates a recognizable look associated with older CRT monitors.

The strength of these mask effects matters significantly. A weak mask (10-20% intensity) creates a subtle texture that influences color perception without being obviously visible. A strong mask (40-50%+) creates obvious grid patterns that dominate the visual appearance, especially on bright areas.

Here’s where it gets technical: these masks aren’t just visual filters. They effectively reduce spatial color resolution while maintaining spatial luminance resolution, which is what CRTs actually did. This means bright red and dark red produce distinct luminance signals but similar color information—the color definition is less sharp than brightness definition. Modern displays don’t do this, which is partly why flat emulation without filters looks wrong.

### Curvature and geometric correction

CRT curvature filters apply barrel distortion to the image, bowing horizontal and vertical lines as they would appear on an actual curved screen. Most modern filters allow you to adjust curvature amount independently for horizontal and vertical axes, and to choose between subtle **pillarboxing** (just the curved edges showing) to extreme spherical distortion.

The engineering question: how much curvature should you apply? That depends on the original monitor. A 1970s television set with a 20-inch screen had different curvature than a 1990s arcade monitor with a 25-inch screen, which had different curvature than a home computer monitor with a 14-inch screen. There’s no single “correct” answer—it’s a range from about 1.10 (mild) to 1.50 (extreme) for the barrel distortion coefficient.

Curvature does more than look authentic. It changes how your eye perceives sharpness and motion. A curved screen draws your attention slightly away from the sharp geometric edges of the display toward the center. This can make motion look smoother and reduce the jarring effect of pixel grids. This isn’t purely psychological—the geometric distortion actually does influence how your visual system processes motion and edge detection.

### Convergence error simulation

In real CRT monitors, the three electron guns (red, green, blue) didn’t converge perfectly at every point on the screen. The beams would be perfectly aligned at screen center but diverge slightly toward the edges, causing **color fringing** or misalignment—the red edge of a bright white object might be slightly offset from the green or blue edge.

Advanced filters (particularly CRT-Guest variants) can simulate convergence error by offsetting the RGB channels slightly relative to each other. This creates subtle color fringing, particularly visible on high-contrast edges. It’s not noticeable at normal viewing distances on small screens but becomes obvious on larger displays or when sitting closer.

## Why these filters matter beyond nostalgia

### The perceptual difference is measurable, not emotional

When you add accurate scanlines to emulation, you’re not just adding texture—you’re changing fundamental aspects of how the image displays. A 240-pixel-tall image without scanlines occupies all 240 lines of your screen’s vertical dimension. The same image with strong scanlines effectively uses only about 120 visual lines (the visible gaps take up half the space), creating lower perceived vertical resolution. This isn’t wrong; it’s accurate.

This changes how your eye processes fine detail. Horizontal features become less defined. Sprites appear slightly less sharp. But simultaneously, the image gains visual “weight” and presence—it feels more like the original display because it is, in measurable terms, closer to the original display’s characteristics.

Color accuracy changes too. Adding a phosphor mask reduces color sharpness without reducing luminance sharpness. This is identical to what happened on original hardware. The effect is subtle on average images but very noticeable on images with sharp color boundaries—the red and blue areas of a flag will appear softer and less separated than a pure white and black image.

### Temporal perception and motion smoothness

Here’s a less obvious effect: proper CRT filter stacking can change how motion appears. A combination of scanlines, phosphor glow, and subtle geometry can make motion look slightly smoother and less “digital” than unfiltered emulation. This is partly because scanlines create subtle gaps that your eye integrates temporally, and partly because phosphor glow creates a slight persistence effect that blurs frame transitions.

This matters more on some games than others. A space shooter with fast-moving objects benefits more from these effects than a static menu screen. Fighting games with rapid animation benefit from the motion-smoothing effects of proper filtering.

## Choosing and configuring CRT filters: practical decision framework

### The core filter types and their trade-offs

**CRT-Guest (Advanced)** is the current gold standard for accuracy and flexibility. It includes sophisticated beam dynamics simulation, variable scanline strength based on brightness, phosphor mask options, convergence error, and advanced color handling. The downside: it’s computationally expensive. On older hardware (Raspberry Pi, older tablets), it can struggle. The settings are numerous and interconnected, making it easy to create worse-looking results if you’re not thoughtful about adjustments.

**CRT-Geom** is the most popular “entry-level” shader. It provides scanlines, a choice of mask types, and curvature with relatively low computational cost. It’s less accurate than CRT-Guest but still produces authentic-looking results with simpler configuration. Many users find CRT-Geom’s simpler approach produces fewer artifacts and looks more natural than heavily tweaked CRT-Guest configurations.

**Lottes** is a lightweight filter designed for lower-end hardware. It provides scanlines and basic color handling with minimal overhead. It’s less customizable than the others but works well on systems with limited processing power.

**NTSC filters** (such as Codemaster’s bsnes NTSC filter or Snes9x’s NTSC filter) perform actual composite video signal processing simulation. They’re designed to mimic the NTSC composite video signal format that was standard for console-to-TV connections. These are highly specialized—they only make sense if you’re specifically trying to recreate how a console looked when connected to a television via composite video. For arcade or computer monitor simulations, they’re usually the wrong tool.

### Configuration framework: starting points by use case

**For arcade cabinets** (Donkey Kong, Galaga, etc.): Start with CRT-Geom or CRT-Guest at these approximate settings:
– Scanlines: 60-70% strength (arcade monitors had relatively weak phosphor persistence)
– Mask: Shadow mask at 15-25% strength
– Curvature: 1.15-1.25 (arcade monitors had moderate curvature)
– Convergence: 0 (arcade monitors used single-gun arcade boards, not RGB guns)

The high scanline strength is important because arcade monitors displayed on larger screens (20-25 inches) at closer viewing distances. The visible gaps between scan lines were part of the experience.

**For home computers** (Commodore 64, Atari ST, etc.): Lower scanline strength works better:
– Scanlines: 30-40% strength (computer monitors had faster phosphor decay, making gaps less obvious)
– Mask: Slot mask or shadow mask at 10-20% (computer color monitors varied widely)
– Curvature: 1.10-1.15 (computer monitors had less curvature than TVs)
– Convergence: 1-2 pixels if using CRT-Guest (computer monitors had some convergence error)

**For game consoles on TVs** (NES on composite, SNES on RF): Use NTSC or composite-video-aware shaders:
– If using CRT-Guest or Geom: Reduce mask strength (5-10%) because composite signals had reduced color bandwidth naturally
– Consider NTSC filters specifically designed for your console

**For handheld systems** (Game Boy, original Pokémon hardware): These had tiny screens with high pixel density. Strong scanlines and masks make the image look too broken up. Use 20-30% scanlines and 5-10% mask if filtering at all.

### How to actually evaluate if a filter configuration is working

1. **Vertical resolution test**: Take a game with fine horizontal detail (a city background in a platformer, the pattern on a brick wall). Without filters, count how many distinct horizontal pixel rows you can see. With strong scanlines, you should see roughly half that number of visual rows, with darker gaps between lit rows. If you see all the original rows clearly, your scanlines are too weak.

2. **Color fringing test**: Look at a bright object against a dark background (a white sprite on black, a yellow bird on dark blue). Without filters, the edges should be sharp. With a strong phosphor mask, the color edges should be slightly softer and less defined. You shouldn’t see obvious color separation or rainbow fringing (that’s convergence error, which should be subtle if present at all).

3. **Motion quality test**: Play a horizontal-scrolling section with fast movement (Sonic, Contra). The motion should look smooth and slightly soft-edged, not digital and sharp. Strong scanlines should create a subtle visual effect where motion appears less “stepped” and more continuous. If motion looks worse or more stuttering with filters, your configuration is wrong.

4. **Edge definition test**: Look at the solid-color borders around the play area (the black edges in Pac-Man, the blue border in many NES games). These should have subtle curvature matching the screen curve. If they look obviously barrel-distorted or if you see visible rectangular outlines from the mask pattern, your settings are too aggressive.

## Technical edge cases and advanced considerations

### Performance cost and why it matters

CRT-Guest with all options enabled can consume 5-10x the processing power of a simple upscaler. On a modern desktop GPU, this is trivial. On a Raspberry Pi 4, a Shield TV, or older smartphones, it may be unplayable. CRT-Geom with basic settings consumes maybe 1.5-2x the power of upscaling and runs on nearly anything.

If your target system can’t sustain the filter, you have degradation. Frame dropping or lag make emulation unplayable faster than any visual compromise. It’s better to use a simpler, lighter filter that maintains smooth 60 Hz than a perfect filter that drops to 50 Hz.

### Interlaced vs progressive content

Some original systems (particularly Sega Genesis and early PlayStation) could output interlaced video signals (alternating odd and even scan lines each frame). Proper CRT simulation of interlaced content requires different scanline handling than progressive-scan sources (NES, SNES, arcade boards).

RetroArch can detect this automatically in many cases, but some systems require manual configuration. If you’re playing interlaced content with progressive scanline filters, the result looks wrong—the scanlines don’t align properly with the actual interlaced fields.

### Non-square pixel aspect ratio

Original systems didn’t always use square pixels. The NES used pixels that were taller than they were wide (roughly 1.2:1 aspect ratio). The SNES used square pixels, but many arcade boards used non-square pixels. If you apply a CRT filter to incorrectly-scaled content, the filter assumes square pixels and creates distortion.

Most modern emulators handle this automatically, but it’s worth verifying. In RetroArch, check that the aspect ratio is set correctly for your system before applying filters. If a game looks weirdly stretched or squashed, incorrect pixel aspect ratio is often the cause, not the filter.

### Gamma and color space considerations

Original CRT monitors used different gamma curves than modern displays. A gamma of 2.2 was standard for CRTs; modern displays typically use 2.2 as well, but the actual implementation differs. Some games were designed assuming specific gamma characteristics—darker games might look unplayably dark on modern displays, or vice versa.

Advanced filters like CRT-Guest include gamma adjustment options. These are important for accurate reproduction but can cause color banding if set incorrectly. The right gamma setting depends on the original system, the display you’re using, and personal preference for brightness.

## When filters help and when they hurt

CRT filters improve visual authenticity in almost all cases when configured correctly. The question isn’t whether to use them but which ones to use and how heavily.

Filters definitely help when:
– You’re displaying low-resolution games on high-resolution modern displays (the sharpness difference is jarring without filters)
– You’re trying to recreate how the game actually looked on original hardware
– You’re using a large modern display (on smaller displays, the effect is less necessary)
– You’re playing games with significant vertical detail (where scanlines matter most)

Filters can hurt when:
– They’re configured too aggressively, reducing detail beyond what the original hardware actually did
– They’re so computationally expensive that they cause frame drops
– You’re using the wrong filter type for your source hardware
– They’re applied to upscaled content that’s already been processed by other shaders

## Making your final filter choice: a practical decision matrix

**If you have a modern desktop computer**: Use CRT-Guest (Advanced) with your configuration tuned to your specific target hardware. The processing power isn’t a constraint. Take 20-30 minutes to configure it properly rather than settling for defaults. The result will be as close to accurate as current emulation gets.

**If you’re using a Shield TV, Fire TV, or modern streaming device**: CRT-Geom with moderate settings (scanlines 40-50%, basic mask, subtle curvature) offers the best balance of visual authenticity and smooth performance.

**If you’re using a Raspberry Pi 4 or similar modest hardware**: Start with CRT-Geom with lighter settings (scanlines 30-40%, no mask or minimal mask, no curvature or minimal curvature). If performance is still an issue, use a simple scanline filter only. Even basic scanlines make a large visual improvement over unfiltered emulation.

**If you’re using a handheld or phone**: No filter or extremely light scanlines (20-30%) only. The screen is small enough that the authentic-looking result comes more from screen density than filter complexity. Too-strong filters will make the image look broken up and unplayable.

## Summary: the engineering behind why filters matter

CRT filters aren’t cosmetic. They’re mathematical reconstructions of real physical phenomena that shaped how games looked on their original displays. Scanlines simulate the gaps between electron beam passes. Phosphor masks simulate the color separation created by shadow masks. Curvature simulates the geometric properties of CRT glass. Glow and convergence error simulate the beam spot size and alignment characteristics.

When configured correctly, these filters do more than look “retro”—they actually change how your visual system perceives the image in ways that match the original hardware. Motion appears smoother. Vertical resolution changes to match the original. Color sharpness characteristics match the source display type.

The key is matching the filter configuration to your specific hardware source and being willing to spend time tuning rather than accepting defaults. Start with the framework provided above, test against your target hardware characteristics, and adjust based on the evaluation tests. The difference between a poorly configured filter and a well-configured one is often more significant than the difference between filtered and unfiltered emulation.

Your goal should be to reach a point where you stop thinking about filters and just experience the game the way it was meant to be seen—which is the whole point.

Your email address will not be published. Required fields are marked *