New CRT shader from Guest + CRT Guest Advanced updates

Thanks very much @guest.r! I’ve always felt that this was a legacy we’re creating here and it’s you’re brilliant work and dedication to CRT-Guest-Advanced that made it easier for me to bestow such a prestigious moniker upon this particular set of CRT Shader Presets.

Working and interacting with you these past few years has truly been an honour.

May you continue to be successful in all your endeavours. :beers:

3 Likes

New Release Version (2026-06-06-r1):

Notable changes:

  • Old: Bloom Pixel Sampling Mode 2.0 re-implemented.
  • Nice changes to Bloom Pixel Sampling Mode 1.0.
  • Also commemorating the 20th Anniversary of my ePSXe OGL2 Shader pack 1.0 publishing.
  • (Kudoz to Mr. Bernert)

Download Link:

https://mega.nz/file/ssBT2KgJ#WFL06qtEBv2yXDHOxgFW9u5HyLYamCG1Dp4cRNpJEaQ

15 Likes

Oh my, time flies, congrats!

5 Likes

I was playing a bit with this awesome shader and noticed that while scanlines bend when I use curvature, phosphors from masks do not. Is this the intended behavior, or is there a trick/setting I’m missing to get the phosphor mask to curve along with the rest of the screen? Thanks for the amazing work!

1 Like

Hey! Glad you asked. Standard phosphor mask emulation on modern displays is horizontally linear on purpose, because masks would need to be interpolated with non-integer factors if they are bent into a curved shape.

This is usually visualy acceptable only, if the mask width is quite large, like 4+. Most implementations, which comply to curvature, take a RGB type mask, enlarge it with interpolation an then the results are acceptable. Downside is that this doesn’t work to well for narrow (hight TVL)/sharp edged masks and double implementation would be needed for these.

Another honorable mention is last pass of crt royale, which solves these problems with the last geometry_AA pass, which can be added as the last pass. It can take a flat masked “image”, add 3D curvature and smooth out interpolation irregularities with some advanced AA technique.

If you want to test it, load a preset, increase the number of shader passes by 1 and then add this pass.

5 Likes

New Release Version (2026-06-22-r1):

Notable changes:

  • Slight Bloom Pixel Sampling tweak.
  • HD and NTSC main filtering kernel changes (better consistency), one parameter removed (sharpness definition) due obsoletion.
  • Now the Sigma parameter value also automatically scales with the Filter Range parameter (HD, NTSC versions). Sigma can be fine tuned, but now tweaking is much more less time consuming, with other words, sigma tweaks are now relative to filter range, not absolute. Default values didn’t change.
  • Now Sigma values automatically scale with the number of taps in blur/bloom passes. Tweaking is much faster while same results are possible. Default values didn’t change.

Download Link:

https://mega.nz/file/gsxwAQLb#DiJFx3zEPx8ceeGbQQdTejmaHfmx4TDQgQB3V4Qo_Mc

13 Likes

I think that a nice update, If I’m not imagining things, the picture now looks more like CRT than ever before

2 Likes

Regarding 480i video, like interlaced set to 6… I was thinking the flicker would be more realistic at 85hz, or 100hz. Is it possible to program things like that or just not feasible?

The real thing flickers at 50 or 60hz; I guess the effect would be almost invisible at 100…

1 Like

Yes, but I also know I could set my CRT monitors to 72, 75, and 85hz. Gets more complicated with the SonyGDM-FW900, which I ordered once but arrived smashed to bits…

This thing could even pick 120hz refresh in 4x3 mode, 95 and 100hz in 16x9 mode.

1 Like

If “Realistic” is your target, then back in the day, arcade CRTs were set to the 1x source refresh rate, not 2x.

Also, usually you want the monitor refresh rate to be an integer multiple of core one to achieve perfect frame pacing (shaders render at core refresh rate by design and have no control over it).

Shaders can exploit higher target refresh rate through subframes to emulate other CRT “features” like lower motion induced blur or phosphors decay, but the flickering that comes from interlacing effect needs to stay at 1x source refresh to match the original behaviour.

1 Like

Yeah I understand if it’s a technical limit. Realistic isn’t my target in the sense that I don’t notice 480i hooking a Dreamcast up to a CRT like I notice 480i in shaders. And I noticed that when my monitor is set to a higher refresh rate and I’ve got a menu up in Retroarch, the flicker on Mode 6 gets so much more similar to how I see it on this old Panasonic CRT.

60hz used to drive me nuts on my NEC MultiSync monitor back in the 90s, I always had to set it higher to get rid of the flicker.

you need to use Phosphor persistence (Afterglow or Phosphor decay) shader after interlace, since the one that already in guest-crt-guest-advanced is done before interlace, also Jobima crt guest advanced presets

6 Likes

The Sonic Adventure intro looks great now. But the flashing on white screens like the Dreamcast/PSX intro screen is still really bad for me.

On the other hand since I understand Cyber’s Legendary Shader better now, 480p (Interlaced Disabled) looks good enough I probably don’t need interlacing.

3 Likes

with what preset? since it’s fine with my “Jobima CRT Preset TV 480i V8”

1 Like

I appended Phosphor Persistence to one of Cyber’s presets.

2 Likes

This flickering that you’re seeing with CRT-Guest-Advanced-NTSC might be a relatively recent anomaly. I’m almost certain that if you try one of my slightly older preset packs which use CRT-Guest-Advanced-2024-02-29-Release1 for example CyberLab_Megatron_miniLED_Death_To_Pixels_4K_HDR_Shader_Preset_Pack_24-05-25, CyberLab_Megatron_NX_W420M_Death_To_Pixels_4K_Shader_Preset_Pack _18-11-24 or CyberLab_Megatron_NX_Death_To_Pixels_4K_HDR_Shader_Preset_Pack _22-05-24, you’ll see that that phenonemon doesn’t exist.

As a matter of fact, I only recently noticed that flickering with the PSX BIOS screen in my creation of my Legendary preset pack which I decided to use up to date CRT-Guest-Advanced-NTSC which behaves differently from the older ones.

The first time I noticed any changes which introduced flickering was around when the NTSC Phase Mode 5 - PCE was added and subsequently Font Preservation. I found that an intermediate version of the Font Preservation gave better results than the newer version at the time (at least with the PCE’s “m” in the Super CD-RO² BIOS screen). Later I realized that part of the reason for differences in my experience vs what Guest.R had been reporting might have been due to my use of XBR-LVL-2 higher up in the shader pipeline.

Fast forward to now and I’ve only recently begun to wrap my head around the temporal behaviour of the more recent versions of CRT-Guest-Advanced-NTSC.

I read all about Jobima’s experiences and successes with Phosphor Persistence so I was thinking that I could just follow along that path when the time came. I haven’t yet gotten to that though as my primary focus has always been the consoles that I found most nostalgic, which are mostly the pre-PS2 era consoles. At some point though, I will hopefully try to address this highly visible flickering in interlaced content.

2 Likes

From my experience most of the interlacing annoyances, excluding the authentic interlace artifacts etc., come from non-symmetric frame time division.

Here is what works best for me in Windows: desktop refresh rate 60Hz. In retroarch: VSync ON, VSync Swap Interval: 1.0, Freesync/GSync: OFF.

Previous versions had the interlacing part implemented after ntsc-passes and an annoying sync was established between these two, only showing the same phase in 2-phase mode etc. Have tested the new vanilla 2-phase mode on a laced PSX screen, and it seemed regular. So i guess user experiences may vary.

Anyway, i almost suggest that folks use the interpolation unless they’ve got a perfect sync.

2 Likes

indeed

for me I only need “In retroarch: VSync ON and Sync to Exact Content Framerate (G-Sync, FreeSync) ON” and in Windows I use 240hz (max in my monitor) also I enable G-Sync for windowed and full screen in NVIDIA control panel

2 Likes

Yeah, i guess it works nicely for you. With a similar setup i can see nice interlacing through Retroarch opaque menu (F1), but not when returning to game.

Edit: switching to exclusive fullscreen mode fixes the issue (VSync + Freesync ON). It can be an acceptable compromise.

3 Likes