Is there only Interlace Modes 0-5 in the HD variant?
Yes, it’s missing interpolation mode 5.0, as named in other compositions. Also downsampling. It’s due the fact that the HD mode has a vertical filter for even better resoluts and other “shaders” are not having it.
Why does the afterglow0 pass use OriginalHistory0? That bypasses any other shader presets that you try to prepend before crt-guest-advanced, such as the prependable/appendable color test patterns or an alternative video signal preset. Changing it to Source seems to work fine, but is there some problem that using Source instead of OriginalHistory0 causes?
How exactly does this Vertical Filter work? I can’t seem to change anything with its parameters.
It’s only enabled when in any interlaced mode or with high resolution scanlines (nice for pre-scalers). In these cases increasing the Internal Resolution parameter also works in horizontal and vertical direction. With normal scanline mode you usually don’t want vertical filtering, so it’s not having an effect.
It’s a nice question, OriginalHistory is “bullet proof” regarding some prepended effects like black level etc. But it’s not a bad idea to re-think it a bit. Source is always an option, also usually works.
-
Updated for crt-guest-advanced-2025-11-02-release1 (rev 2)
-
Added a new setting to crt-guest-advanced-ntsc-decoupled called “0 IRE Device on 7.5 IRE Display”.
-
This setting automatically modifies the “Raise Black Level” setting to simulate what would have happened if a device with 0 IRE black (NTSC-J standard) were connected to a display calibrated for 7.5 IRE black (NTSC standard). This applies to both the Japanese and US versions of literally every single CRT targeted Japanese designed console other than the PS1 and PS2*, which had regional IRE. (*I haven’t been able to find absolute confirmation that the GameCube and the Wii used 0 IRE universally, but that is the general consensus.) (Note that this issue did not apply for component/YPbPr and RGB connections.)
Readme with additional details
Built on top of:
-
Image Adjustment (2024.02.07) by hunterk
-
crt-guest-advanced-2025-10-28-release1 by guest.r and Dr. Venom, based in part on Themaister’s NTSC shader
-
Sony Megatron Colour Video Monitor (2023.10.09) by MajorPainTheCactus
-
with additional functions based on or inspired by Grade by Dogway
All included “CRT Megatron” presets are currently tuned for the LG C1 and other similar displays (WRGB subpixel layout, with approximately 800 nits Peak Luminance).
The included version of Image Adjustment has been modified to allow for finer control of the effects as i found appropriate.
crt-guest-advanced-ntsc has been modified to add or expand the following options
GPGX MS color fix
Corrects Genesis Plus GX’s Master System color output, which includes minor errors i discovered while implementing the Sega MS Nonlinear Blue Fix.
- 0=off
- 1=on (color saturation scaled to a maximum value of RGB 255)
- 2=sat239 (scaled to a maximum value of RGB 239)
- 3=sat210 (scaled to a maximum value of RGB 210)
- 4=sat165 (scaled to a maximum value of RGB 165)
Sega MS Nonlinear Blue Fix
An implementation of the behavior described in Notes & Measures: Nonlinear Blue on Sega Master System 1 & Other Findings by bfbiii.
This setting automatically adjusts to work with the GPGX MS color fix settings.
Sega MD RGB Palette
An implementation/approximation of the Mega Drive/Genesis RGB palette as discussed here.
0 IRE Device on 7.5 IRE Display
This setting automatically modifies the “Raise Black Level” setting to simulate what would have happened if a device with 0 IRE black (NTSC-J standard) were connected to a display calibrated for 7.5 IRE black (NTSC standard). This applies to both the Japanese and US versions of literally every single CRT targeted Japanese designed console other than the PS1 and PS2*, which had regional IRE. (*I haven’t been able to find absolute confirmation that the GameCube and the Wii used 0 IRE universally, but that is the general consensus.)
Note that this issue did not apply for component/YPbPr and RGB connections.
Downsample Pseudo Hi-Res
As i understand it, 15KHz CRT displays would treat double-horizontal resolution modes (512x224, 640x240, etc) as tho they were not doubled, resulting in a blending effect, called pseudo hi-res. A number of SFC/SNES games are known to have used this behavior for transparency effects, including Breath of Fire II, Jurassic Park, and Kirby’s Dream Land 3, and as far as i know it is the correct behavior for any device originally meant to be displayed on a 15KHz CRT TV/monitor.
-
1 = off
-
2 = Triggers the blending effect whenever the horizontal resolution is more than twice the vertical resolution. This works well with cores that either always output a pseudo hi-res image for compatibility (such as bsnes-jg), or cores that only use pseudo hi-res for pseudo hi-res content (such as SwanStation). True high-resolution/interlaced content is not effected.
-
3 = Triggers the blending effect whenever the horizontal resolution is 480 or higher. This is needed for cores that display pseudo hi-res content in a true high-resolution container (such as Mesen-S and a number of bsnes variants). Unfortunately, this halves the resolution of true high-resolution/interlaced content, as there is no way to differentiate pseudo hi-res and true high-resolution/interlaced content in these cores.
Internal Resolution
Modified to allow up to 1/16th downsampling. (It’s a surprise tool that will help us later.)
Sony Megatron has been modified to add or expand the following options
HDR: Content Color Gamut
Out of the box, RetroArch and Megatron clamp colors to the Rec. 709 gamut (Expand Gamut set to Off in RetroAtch, or HDR: Original/Vivid set to Original in Megatron), or stretch that Rec. 709 gamut to an unusual non-standard gamut created by someone at Microsoft (?Chuck Walbourn?) called Expanded 709 (Expand Gamut set to On in RetroArch, or HDR: Original/Vivid set to Vivid in Megatron).
Obviously, this is undesirable, as all of the major “retro” color gamuts include colors that fall outside of Rec. 709.
Serendipitously, i found that it was possible to turn this problem into it’s own solution by simply adding additional color gamuts to the “HDR: Original/Vivid”, renaming it “HDR: Content Color Gamut” to better reflect it’s newfound purpose.
When using this setting, Colour System should be set to 0/r709, and Phosphors should be set to 0/NONE.
Options are as follows:
- 0=Rec 709/sRGB (SDR HDTV/Windows gamut)
- 1=Expanded 709
- 2=NTSC 1953 (The OG color system that was only really used for like 5-8ish years back when basically no one owned a color TV anyway. If you are Brazillian or from a SECAM region, it may also match some old CRT TVs you’ve used with really weirdly intense greens? Hard to say. This sort of thing is kind of underdocumented.)
- 3=RCA 1958 (?1961?) (Millennial’s grandparent’s old TV with weird colors #1.)
- 4=RCA 1964 (Millennial’s grandparent’s old TV with weird colors #2.)
- 5=SMPTE C/Rec 601-525 line/Conrac (Baseline standard gamut for Analog NTSC.)
- 6=PAL/Rec 601-625 line (Baseline standard gamut for Analog PAL.)
- 7=Dogway’s NTSC-J (Baseline standard gamut for Analog NTSC-J.)
- 8=P22_80s (Dogway’s Grade gamut for 1980s-early 1990s TVs.)
- 9=Apple RGB/Trinitron PC (Should approximate basically any Trinitron monitor from 1987-the mid to late 1990s. By the early 00s, they were SMPTE C instead, at least for high end monitors like the FW900.)
- 10=guest’s Philips PC (Gamut used by a number of extremely popular monitors that used Philips tubes, including Philips CM8533, Philips VS-0080, and Commodore 1084)
- 11=P22_90s (Dogway’s Grade gamut for mid 1990s TVs with tinted phosphors.)
- 12=RPTV_95s (Dogway’s Grade gamut for late 90s/early 00s rear projection TVs that game manuals said you shouldn’t play games on due to burn in risk.)
- 13=Display P3/P3-D65 (Common wide color gamut. Variant on the gamut used for film with shared primaries. Might be useful in the future if someone makes a WCG pixel game that looks best with a CRT shader?)
- 14=Rec 2020 (HDR gamut. Again, might be useful in the future if someone makes a WCG pixel game that looks best with a CRT shader.)
Gamut Overshoot Fix
A fix MajorPainTheCactus came up with to deal with the color errors i noticed using lilium’s HDR analysis shader. (Sony Megatron Colour Video Monitor)
He decided not to implement it at the time, as he didn’t think it wouldn’t make a perceptible difference, but a friend and i both came to the conclusion that it makes certain test pattern colors look more like they do with no shaders applied, so i have continued to use it. There should be no downside. (Sony Megatron Colour Video Monitor)
- 0=no fix
- 1=the 7-decimal clamp
- 2=the 6-decimal clamp (results in non-zero blacks, perceptible in a sufficiently dark room)
Scanline Multiplier/Divisor
Multiplies or divides the number of scanlines.
Useful for cases like DOS games meant for 31KHz displays, which output 320x200 that was then double scanned to 640x400.
The divisor options are handy for displaying increased internal resolution output from 3D cores that don’t include a good downsample option, such as PPSSPP. I strongly recommend using this setting in conjuction with crt-guest-advanced-ntsc’s Internal Resolution setting to reduce shimmering.
- -1,0,1=1x (Default/off)
- 2=2x (Doublescan)
- 3=Auto 2x (Automatically doublescans any content with a vertical resolution of less than 300, while leaving higher resolution content unchanged)
- -2=1/2 (Reduces the scanline count to one half default)
- -3=1/3 (Reduces the scanline count to one third default)
- -4=1/4 (Reduces the scanline count to one quarter default)
- -5=1/5 (etc.)
- -6=1/6
- -7=1/7
- -8=1/8
- -9=1/9
- -10=1/10
- -11=1/11
- -12=1/12
- -13=1/13
- -14=1/14
- -15=1/15
- -16=1/16
At least the original American Wii uses 7.5 IRE setup. I measured it myself years ago.
Ty! That just leaves the GameCube in question i think.
I wouldn’t be inclined to use the setting for GameCube games anyway, mind. The grand majority of US developed games from that era were multiplatform anyway, both the PS2 and the Xbox are known to have had regional IRE, and NTSC black level wasn’t a factor on PC because RGB.
I don’t remember any black level discrepancy when using the Wii in GameCube mode vs. a real GameCube FWIW.
There were quite a lot of N64 games I played where I had to turn up the brightness a bit, so the lack of setup there makes a lot of sense in hindsight.
New Release Version (2025-11-09-r1):
Notable changes:
- ntsc: small cleaup, some small tweaks
- pal: some small tweaks
- original image reveal shows stock pass instead, to show grading changes also
- gamma correct added to “grading” parameters
- mitigate masks on mid-colors options retired
- afterglow can be now
Original HistoryorSourcebased - afterglow display threshold is now a parameter
- important: ntsc and pal preset interlacing changes: interlacing is now active before ntsc/pal shaders
- ntsc retains compatibility with prior presets, pal with simple presets only
- corner and border effect now support integer under-scale (through shader)
Download link:
https://mega.nz/file/FpoBlZIT#L1T2JleECg56yYW0ma1TDZaHBYfmUVet5tfAgWVcFa4
@guest.r NtscPass used only in linearize-ntsc and linearize-ntsc-new? since you made some changes, why not make linearize-ntsc-new use PrePass and change custom-fast-sharpen alias to PrePass so that stock pass will not be needed
Because of the specific alpha output, which is used later on. If i change this, then older preset won’t work any more.
Stock pass later on is needed to prevent serious mip-map related distorsions, at least with my drivers. It was added there for specific reasons.
Does this do anything to help my Crazy Taxi issue? (too much RL at the moment for me to check for a bit)
Can you please test some other options? Like if you disable interlacing and play with the internal resolution values? They influence the density of scanlines, more values are acceptable, if the vertical input resolution is high enough.
Hi @guest.r! First of all, I’d like to thank you for the excellent shader, I’ve been using it for many years and it’s my favorite.
I have a question regarding the Raster Bloom effect.
I’m trying to make the bloom more apparent for full screen flashing effects, like lightning in some RPGs or when shooting/getting shot in lightgun games like Time Crisis, while keeping it relatively stable for normal gameplay.
Ideally, I would like a high “Raster Bloom %” and a low “Raster Bloom Effect Smoothing” to make the bloom more dramatic and responsive, but increasing the “Raster Bloom %” makes the screen move too much during normal gameplay and trying to remediate this by increasing the “Raster Bloom Effect Smoothing” makes the bloom unresponsive for full screen effects.
Is there a way to adjust the Raster Bloom sensitivity/bias towards higher average picture brightness levels? Could this be an option?
Thanks!
Finally! Thanks @guest.r
I must say however that things seem very temperamental, with very slim margins among balancing artifacts, noticeable, undesirable flickering/noise in dither patterns and getting the now infamous “m” to look legible.
Disabling artifacting and fringing turns it into that smeared mess it was like before at Resolution Scale settings which fully blended dithering!
Increasing artifacting increases flickering, increasing fringing is even worse.
Deblur and Preserve edge colours played a significant role in taming some of the wilder artifacts.
Wish temporal effects could be more transparent though. Are things being affected by frame pacing issues/limitations in RetroArch?
maybe this article can be useful for some of you:
Developers Speak on Designing Game Artwork for CRTs | CRT Database
New Release Version (2025-11-11-r1):
Notable changes:
- ntsc: small cleaup, some small tweaks
- pal: some small tweaks
- original image reveal shows stock pass instead, to show grading changes also
- gamma correct added to “grading” parameters
- mitigate masks on mid-colors options retired
- afterglow can be now
Original HistoryorSourcebased - afterglow display threshold is now a parameter
- important : ntsc and pal preset interlacing changes: interlacing is now active before ntsc/pal shaders
- ntsc retains compatibility with prior presets, pal with simple presets only
- corner and border effect now support integer under-scale (through shader)
- New: Raster Bloom has new parameter section.
- New: Raster Bloom effect smoothing deviation with bright ‘screens’ option added.
- New: Preserve Fonts option added to ntsc shaders. Viable for setups, which dissolve dithering, works better with checkerboard situations, works only with +adaptive sharpness.
Download link:
https://mega.nz/file/VsYl2awb#qlYbvr8NnVXyeBLDfvG2plwLzUi2UZ883g26Yd8niBk
Feature Example:
Original:
With Font Preservation:
Disclaimer:
Checkerboard and bar de-dithers usually apply very complex logic to dissolve dithering patterns, current implementation is quite simple, and works better with checkerboards. Still in “beta”. 





