New CRT shader from Guest + CRT Guest Advanced updates

Yeah, there was/is a RGB clamping after conversion, which is already the case in the shaders. Some old bloomers although seemed to just allow more juice on the phosphors… :wink: But allowed voltages are specified down to the mV and there are references in Phillips docs which explicitly state safe voltages and desaturation:

TDA4555 (page 6 / “chroma control” block)

“Automatic chroma control regulates the chroma amplifier to prevent over-modulation. The chroma amplitude is limited before clipping would occur.”

TDA3566A (page 5 under “Features”)

“Limiter for chroma input prevents clipping; excessive composite contrast results in automatic desaturation.”

TDA3566A (functional description)

“…when luminance excursions or burst level would otherwise drive the chroma path into non-linearity, the saturation is progressively reduced maintaining colour stability.”

So i guess it’s a valid feature, i could also dig out something about downtoning the entire signal, along with luma (so did the competition). I mean color crt TVs were hot tech, which was worked on for more decades and by more groups of developers.

2 Likes

I think this made some colors oversaturated, but also smeared, correct?

1 Like

You know what’s funny, this is what I’ve been doing in my CRT-Shader presets for years but just by going off the look and trying to balance things using whatever controls I had available. I always felt the slightly oversaturated presets looked and felt more CRT-like even though it felt like the value on the knobs might have looked too high.

My gut always told me that there was validity in the look.

As for the yellow desaturation aspect, I’ve been observing and using the floor in Vega/Balrog Stage in Street Fighter II Champion Edition, PC-Engine for a while now. I first choose a phosphor that gives me the type of Red and green that I’m looking for and many times the yellow and green in the floor might be looking pale and dull. I then crank up the saturation until I’m satisfied with how the yellow looks on the floor.

A purely artistic choice by me but in the end it’s doing almost the same thing we’re now looking to do in terms of simulation. What do you think happened to the rest of the colours after the yellow balancing?

The answer, they still looked damn good!

Unfortunately after this the results of my saturation test with the yellow spotlight in the Gate of Thunder title selection screen might be broken but games still look great. So sometimes I prefer either way but I think with my current Epic Turbo-Duo shader preset the yellow in Vega/Balrog stage’s floor is spot on while the yellow in the spotlight over Bonk’s head shows a slightly lighter and smoothly transitioned brighter shade in the center.

…and that my friends is why I’m still using an old CRT-Guest-Advanced-NTSC build from 2024 and yes, I’ve tested the new stuff as well but it feels like reinventing the wheel to get to the point where I’m already at with some presets.

Now this is no criticism of development work or to say that I don’t appreciate everything @guest.r and the community are doing but it just shows how when you give a determined person some tools, they can take them and use them in ways that the creator probably never imagined possible to create and achieve something unique and amazing.

So now we’re doing something correctly that I might have hacked and clawed my way around to get to.

I’m happy for the accuracy though because I’m mixing flawed memory with what I think looks best to me at this point which I think is fine.

3 Likes

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.

3 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:

2 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.

3 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”.

3 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