New CRT shader from Guest + CRT Guest Advanced updates

This could be a bit tricky, since photon guns couldn’t invoke the opposite flow of electrons by any means, or shoot positrons. The field of error is the same, mostly colors with high luma + high chroma amplitude values. So the involved phosphor areas could be a bit brighter or even clipped in RGB sense, maybe more saturated, voltage decay could be notch slower, producing a higher gamma feel.

4 Likes

@guest.r is it possible for you to test the 2 presets i posted here for guest-hd, i kinda want to test something later once i have time

1 Like

AzMods20251022, incorporating changes from crt-guest-advanced-2025-10-22-release1 (rev2).

Readme with additional details

Built on top of:

  • Image Adjustment (2024.02.07) by hunterk

  • crt-guest-advanced-2025-10-22-release1 (rev2) 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.

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
5 Likes

Quick demo of “signal boost & safe voltages”

No safe volt:

Safe volt 1.25, corrected with 1.50 NTSC Saturation:

3 Likes

Hi @guest - first of all thanks for your work - I wanted to ask you something about your Triniton masks, so the masks that go from 0 and up: If masks 0 and 5 (which are the same) have a TVL of 540 if I’m not mistaken, how much TVL should mask 8 correspond to? And why masks 5 and, especially, 6 have such strong and saturated colors? Was it a feature of the monitors of the time? My questions concern how I see the masks at 1080p without curvature, thank you very much.

1 Like

One thing that continues to irk me is the difficulty of finding “one size fits all” sharpness settings. Sharpness may have to be tailored to both (or either?) the mask TVL and the resolution of the content? Am I just driving myself nuts trying to do the impossible?

My current difficulty is with the white text in FFX causing color fringing with low TVL masks. I think the fringing may entirely be a consequence of using a low mask TVL (308) with a game that’s 640x480 - the mask simply can’t display these fonts properly. Does anyone have a CRT that can test? The only way to completely eliminate the fringing is by eliminating subtractive sharpness, or doing other things that make the rest of the image too blurry. When I use a high TVL mask (540), the fringing disappears. Is this just a low TVL thing? Does the same fringing happen IRL?

2 Likes
4 Likes

is there a way to know which version of the guest.r shaders are present in any given up-to-date version of retroarch that’s periodically updated through RA website/online update…slang_shaders?

1 Like

It’s stated in the top post of the thread, downloads are included. I usually update to the official repository after a development cycle and when all concurrent new features are the best they can get.

2 Likes

sweet. thx for the super quick response.

if you guys ever play around with other creators presets that require a specific version of your shaders, is the only way to just go creating backups of everything? or is there a more practical way to play with em back and forth?

1 Like

I’ve become accustomed to saving backups of entire Retroarch versions and shaders, lol. You get used to it.

4 Likes

I fix unintended regressions asap, try to maintain compatibility with older presets, so newest release is the way to go most of the time. So to say, i have an ear for complaints, but recent versions seem quite “safe to use”.

4 Likes

that sounds terrifying brother lmao. I respect it and at some point I’m going to have to go down that rabbit hole too. So much good content on this forum, would love to see as much of it as possible.

thx for the response.

2 Likes

is it safe to say that if currently I am experimenting the most with the HSM Mega Bezel content I can just do my regular online update and then manually update your latest work, no problem?

1 Like

Hmm, the HSM version is hand-tailored by HyperspaceMadness, it’s not connected to the resease versions in this thread or even repository versions. But you can use newest versions without the bezel np.

1 Like

K perfect. thank you

1 Like

Thanks so much!!! I even liked it lol - I totally forgot - perfect, I’ll take a screenshot so I can keep the table handy - thanks again.

1 Like

now its way better but still kinda strong compared to what I remember, even with RFNOISE = “0.000001” still kinda strong

and I think chroma noise need to follow with these changes too

1 Like

I’m re-doing RF noise a bit, but probable it’ll be less snowy in general.

1 Like

My Sony Megatron + CRT-Guest-Advanced-NTSC Section presets now contain self-contained versions of both shaders.

They don’t include all shaders used though.

It’s definitely a good idea to backup at least your Shaders Folder periodically.

3 Likes