New CRT shader from Guest + CRT Guest Advanced updates

It’s more noticeable with ntsc shaders but I still see it in standard guest-advanced using high sharpness settings.

You can see it with mask 12 on 240p Test Suite’s menu screen- the white text gets all rainbowy on the edges. Mask 6 size 2, same thing. Seems to occur with any configuration using doubled pixels for the mask. Maybe it’s just unavoidable with high sharpness. If I lower horizontal sharpness to about 5.00, the fringing goes away. So I may have just answered my own question :smiley:

2 Likes

New Release Version (2025-10-28-r1):

Notable changes:

  • chroma noise on grayscale adjustments (pal, ntsc)
  • some minor adjustments (pal)
  • pal preset “upgrade”, existing saved presets aren’t compatible, but parameter copy/paste should work
  • ntsc-j lut added, replaced D65 trinitron lut (all versions)

Download link:

https://mega.nz/file/toRQDbpI#qYAZQRuWjl-AYx7bbvV11QI7BUHrZI91F78jtwRL_Ls

12 Likes

OK getting back into it… I keep seeing NESguy talk about Safe Voltages, is that a parameter I can adjust in here that I’m not finding?

Is there a proper way for me to combine NTSC with Guest Advanced HD preset that changed from the old way? (will simply going through my old presets and experimenting with the new parameters work or should I start from scratch?)

1 Like

it’s gone since Version (2025-10-26-r1)

2 Likes

Oh ok. Just played around with it and I see it’s not applicable to my goals anyway. Cool work all the same!

2 Likes

AzMods20251028, updated for crt-guest-advanced-2025-10-28-release1.

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.

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

@guest.r

Would Red, Yellow, Cyan, Blue, Black be a viable mask option? This would be 432 TVL at 4k. Right now we have options for 308, 360, 540, 720 and 1080.

1 Like

I have thought if this many times, to get a balanced mask with horizontal width of 5. It was on the table like couple of year ago by @ProfessorBraun? I think, at this point, mask 13 was added.

1 Like

New Release Version (2025-10-29-r1):

Notable changes:

  • chroma noise on grayscale adjustments (pal, ntsc)
  • some minor adjustments (pal)
  • pal preset “upgrade”, existing saved presets aren’t compatible, but parameter copy/paste should work
  • ntsc-j lut added, replaced D65 trinitron lut (all versions)
  • important update: new "RGB"X width 5 mask added, it’s a very nice TVL mid point for 4k setups

Download link:

https://mega.nz/file/R4IwQKLD#2s_4vuDagNIvfRo7dKY7bBZqi_WPD_IH3oNVwsOrEIw

9 Likes

Any information about Mask 14? I’m using the Reshade port and initially I thought it looked the best on my LG CX. Is Mask 12 still preferable for 4k WOLEDs that use a RGWB subpixel layout?

And thank you for creating these shaders. They really do bring out the artist’s intent. Love seeing it on the EGA versions of Secret of Monkey Island and Loom with all the dithering. Neo Geo games also look amazing, as well as games like Blasphemous.

1 Like

Maybe slightly offtopic, I hope it’s not. @guest.r, is advanced not compatible with color mangler? No matter how I try to add it to the chain, I always get an error, fails to apply. What am I doing wrong?

It works well with the fast and fastest versions though. On a side note, what’s the difference between HD, regular and fast/fastest? Where are the trade-offs?

1 Like

Both masks should be fine, but the new mask option is more dense, finer. So i would say you should choose whatever fits you setup better. There is maybe one thing, which is that mask 12 is more “neutral” for changing RGB or BGR layouts.

There is a parameter named “sat” for saturation in both shaders, which causes a missmatch and the shader chain can’t compile. It’s linked to afterglow in guest-advanced, which isn’t included with fast or fastest versions, so color mangler is compatible with them.

The difference is feature-wise. Regular verison has afterglow, TATE mode, screen raster bloom, magic glow, smart horizontal filtering, extra glow passes, which all fast verions misses. So to say expensive effects.

HD version misses TATE and raster bloom, but has a better horizontal + also bonus vertical filter (see Internal Resolution parameter), which is very nice for games which start with higher input resolution right from beginning.

2 Likes

Ah, I see. All clear now, perfect. I will simply modify color mangler then. Thank you man. You are the best.

1 Like

Internal Resolution definitely seems to help me capture the look of composite Dreamcast’s half horizontal resolution. The look of the health bar on the MvC2, the softening of the sprites, the look of Crazy Taxi’s bottom bar on its title menu…and AAish look of Ecco/Sonic’s model in their games.

I don’t know if people will like it compared to the more aliased and clean VGA look of the console, but I like that it’s doable because composite Dreamcast looks so ahead of its time with the softer AA look!

I don’t understand what TATE or Raster Bloom are in my ignorance of missing the first ?? years of CRT shader development.

1 Like

Mostly arcade machines had their display turned 90 deg., and scanline flow was vertical. You can enforce this effect with TATE mode. It’s an option for vertical arcade games, mostly with MAME, since FBNeo already does a rotation on it’s own by default settings.

Raster Bloom is an effect, where the entire screen enlarges with bright scenarios and shrinks when image is darker. Mimics the behaviour of some CRT TVs with worn voltage regulators. It’s authentic, I could observe it first hand on my device.

4 Likes

Greetings @guest.r just asking out of curiosity, is it possible to produce a Dot Mask Subpixel Layout CRT Shader Mask compatible with QD-OLED’s triangular subpixel layout?

https://www.reddit.com/r/OLED_Gaming/s/xMx8d5qnop

Secondly, my presets using your NTSC section plus Sony Megatron Colour Video Monitor and the rest the shader stack I use always end up looking the best to me even after I experiment with other Shaders. I must also add that I was able to essentially match what I did with the Megatron/Guest-NTSC combo almost verbatim using CRT-Guest-Advanced-NTSC plus some other shaders so that says a lot about the potential of CRT-Guest-Advanced-NTSC.

However, I was recently trying out @DariusG’s CRT-Consumer-1w-NTSC-XL in which he has modeled different NTSC clocks and settings on a per console basis. I can’t currently verify the accuracy of his implementation but it does allow full blending of PC-Engine/TurboGrafx-16/Turbo Duo dithering with NTSC colour and fringing artifacts without introducing diagonal artifacts in the dedithered areas via decreasing the strength of the comb filter.

His implementation simulates all NTSC artifacts all the time except when in S-Video mode and one must decrease the Comb Filter Strength to increase the strength of the artifacts. He has also implemented 2 PCE clock modes PCE256 and PCE320.

Any chance we’re going to see further evolution of CRT-Guest-Advance’s NTSC module/implementation now that we seem to be in a period of renaissance where that is concerned once again?

P.S. I tried out mixed mode to try to improve the “m” in the Turbo Duo BIOS screen but I ended up going around in circles as Mixed Phase is inherently blurrier than 3 Phase and I think I have achieved the sweet spot for maximal blending of PCE dithering, prodcucing new colours and sharpness.

However, after trying out CRT-Consumer-1W-NTSC-XL then going back to my regular stack, the “m” didn’t look so bad at all after all. It’s legible and it might be that I’m aiming for a sort of idealised look with the perfect colour blending, plus sharpness but at the expense of sharpness in certain niche cases in order to facilitate this perfect blending.

3 Likes

Hey @Cyber, thanks for stopping by!

I would really need someone with the mentioned subpixel display to test a couple of things, but my intuition says that first tries should just use the RGB layout. Physical subpixel layouts can be hard to “emulate”, even harder by just following intuition. It should do, but close-up photos will suffer from, khm, the target display hard-wired properties a bit.

You are somewhat right about some features of the ntsc shaders. Over the recent period of enhancements i didn’t focus too much on the good ole’ backbone. I might incorporate some ideas from my recent PAL shaders, also add an option or two. You know that this also allowed very nice backwards preset compatibility and even small changes could require after preset re-tweaking. But i guess it’s plausible to take some steps.

3 Likes

Thanks for considering backwards preset compatibility in all of your endeavours but sometimes things just need to move forward for the greater good I guess.

While you’re in the lab, you might want to consider what these folks seem to think about a good adjustable notch filter vs comb filters.

I think @NESGuy recently said something similar or came to a similar conclusion that for older systems, Notch Filters seemed to be better than Comb Filters. Kinda similar to how Dot Mask TVs seem to work just as good if not subjectively better than Aperture Grille and Slot Masks for older consoles.

I don’t think there’s anything wrong with trying to push CRT-Guest-Advanced beyond the subjective and objective limits of what was visually possible on even the best CRTs you know. With Shaders we do have that flexibility to be accurate if we want to but also to be better than accurate while not spoiling the presentation.

That’s what I try to aim for in my presets and is one of the reasons I enjoy doing this so much. Sometimes I wish I could stop though (and just play the games) but seeing these games come to life in ever improving forms is just as pleasant as listening to music that I love.

2 Likes

Ntsc adaptive work a bit differently. :wink: I think i will improve the current design a bit, dunno what will be in a year or two.

2 Likes

Yes, It’s authentic, but seems there is something missing, in real CRT enlarges and shrinks is not unified (at least horizontally and with very bad cases)

https://www.reddit.com/r/crtgaming/comments/pqsvcz/my_crts_picture_grows_and_shrinkes_when_the/ and https://youtu.be/7l5C5skeK7M?t=840

in any case thank you for adding it in the first place :slight_smile: seems yet no one else did this crt effect in shaders

3 Likes