I’m interested in emulating the ‘look’ of an NTSC composite connection for 6th gen consoles like PS2. From what I understand, the CRT-Guest-NTSC parameters are set up for lower res 4th gen consoles by default, so I’m curious what parameters I should be tweaking. It doesn’t look too bad out of the box (with scanlines disabled), but then I haven’t had a real CRT for a very long time.
If you are using increased internal resolutions from the LRPS2 core, then the NTSC Resolution Scaling
parameter should be lowered to the reciprocial of the internal resolution multiplier (i.e. 0.5 for 2x internal resolution). You can also play with shader downsampling values a bit, to smooth the image, prepending a shader like FXAA is also a popular option.
If you are after performance and are using the newest shader version, then you can lower the number of TAPS
a bit or/and use the Speedup w. higher Internal Res.
feature.
There is also a catch with field merge and interlacing options, as both are using odd/even fields effect and can get “synced”, producing static artifacts. Default settings favour NTSC effects, you can also merge fields / disable fringing and set interlacing mode to 1-3 for the interlacing effect.
New Release Version (2025-09-22-r1):
Notable changes:
- some smaller optimizations
- some functionality bugfixes
- NTSC Deblur paramater rename due to duplication conflicts with some other presets in repository
- Update: fixed compatibility with @sonkun’s presets
- Update: small speedup with ntsc version
Download link:
https://mega.nz/file/w8RU3BJY#ffZDoZ20m-iLwjIqxfTFlz_NLpsGneCOItVR4ooAr6E
btw, the new filter_res should be 4 if the Internal Res
is 4?
It’s more like WYSIWYG type of correction, since it relies on other settings too. You can increase or decrease the value untill the horizontal sharpness seems to fit your purpose.
With @sonkun’s presets it’s an inert parameter though, has no effect, because sonkun used different shaders later on, namely from the HD version and not NTSC version.
Filtering Resolution is only guest-advanced-ntsc specific, more preciselly it’s manifested in the crt-guest-advanced-ntsc-pass1.slang
.
Chaos Engine starting level is a good preset “tester”, if it looks nice here, then You’re good.
Standard guest-advanced params:
m_glow = "2.000000"
m_glow_cutoff = "0.020000"
m_glow_low = "5.000000"
m_glow_dist = "0.700000"
m_glow_mask = "0.700000"
FINE_GLOW = "5.000000"
FINE_BLOOM = "0.000000"
glow = "0.400000"
bloom = "-0.000001"
mask_bloom = "-0.700000"
bmask1 = "-0.100000"
hmask1 = "-1.000000"
gamma_c2 = "1.250000"
clips = "0.350000"
gsl = "2.000000"
scanline1 = "5.000000"
scanline2 = "12.000000"
beam_min = "2.000000"
tds = "1.000000"
scans = "2.400000"
scan_falloff = "0.350000"
scangamma = "2.299999"
h_sharp = "3.500002"
s_sharp = "0.000000"
smart_ei = "0.300000"
ei_limit = "0.200000"
sth = "0.050000"
shadowMask = "10.000000"
maskstr = "1.000000"
maskboost = "1.750000"
mask_gamma = "1.400000"
mclip = "0.200000"
pr_scan = "0.150000"
edgemask = "0.600000"
deconrr = "0.500000"
deconrb = "-0.500000"
deconrry = "0.500000"
deconrby = "-0.500000"
decons = "1.400000"
New Release Version (2025-09-25-r1):
Notable changes:
- Unusable parameter removed from the fast shader / bloom section
- Default halation mask strength lowered a bit from 0.5 to 0.35
- Preserve Scanline Strength functionality updated, now it can also preserve Scanline Saturation. This is important as some mask mitigation techniques tend to desaturate scanline edges. With this updated functionality more scanline saturation “realistic” and crisp presets can be made.
Download link:
https://mega.nz/file/QkYliRaQ#BP4eNemgRdi3iKjWVvjF6qcO5rUI0jsPdQCBNiD1EMw
Guest, when you feel like it, could you share a personal list of games and scenarios which you deem good to test shaders in general? I mostly use some generic test patterns, the rest is playing random games over weeks until I find something wrong.
I indeed like to use some repeatable scenarios, sometimes with some purposes like dithering resolve etc. Also the 240p Suite for SNES and MD is a must, for various reasons.
Shader performance is best tested on some static images with a faithful resolution.
Recently i updated my Amiga WHDLoad collection, checking what’s new, so that’s what i’m mostly testing the shaders atm…
One of my go-to torture tests for NTSC sharpness is Final Fantasy Tactics- lots of small details that can be easily lost.
Anything with a lot of sharp black lines (vertical) is useful as well - a lot of 8 bit stuff. Super Mario Bros, the outline around the green pipe…
But yeah, 240p Test Suite pretty much has you covered as well. Ringing around the white text if you oversharpen, blurry text if you undersharpen… Color bars will show if you have clipping, etc
I can give you a few games and scenarios off the top of my head:
Donkey Kong Country - SNES
The gradients in the green Nintendo Logo. I like them to gradually fade to black without crushing the darker tones.
Similarly the speakers in the boom box, I like to be able to see the speakers without raising the black levels.
Super Metroid - SNES
Blend dithering on the letters on the Title Screen.
Super Mario World - SNES
Blend checkerboard dithering on blue background and water.
Super Double Dragon, Final Fantasy Mystic Quest, Samurai Showdown
Make sure power bars are rendered evenly.
This also applies to the level meters in Ninja Spirit - Turbo Duo’s sound test.
Some of these can be resolved, helped by choosing the correct aspect ratio and scaling settings.
Gate of Thunder 4 in 1 - Turbo Duo
When Bonk appears, make sure you can see darker shade of yellow is visible in the center of the spotlight without there being a harsh/obvious transition between the 2 shades.
Gate of Thunder Intro, Ys IV cut scenes, Psychosis level 1
Blend all dithering to produce additional colours without introducing any NTSC artifacts to ruin the illusion of seamless additional colours.
Lords Of Thunder, Bank’s Revenge
White text in HUD can be used to test highlight clipping.
Genesis:
Well everyone know about Sonic The Hedgehog level 1 and Streets of Rage 2 bar level for checking transparency and the rainbow effect but Sonic 2 Chemical Plant Zone is a good one too.
Sega Saturn:
Daytona USA for transparencies
PlayStation:
Marvel Super Heroes, Shuma Gorath in the title screen for testing saturation/clipping.
from here seems they are very close in Blending (all of them are indeed has some level of blend compare to RAW razor sharp pixels in emus)
Very detailed. Thank you for taking your time to write this answer! I appreciate it.
That TV has a very good comb filter and signal processing - to get a full blend requires a notch filter, so like a pre-1985 TV or something
Is there a way to simulate saturation loss associated with chroma bleed? Basically, reds should bleed out and look a bit duller, etc?
Currently, it looks like stuff bleeds but kinda remains the same color?
EDIT: gtu-v50 is doing the thing- gives us direct control over YIQ and can achieve that subtle color loss/desaturation with the bleed, adjusted correctly.
guest-ntsc / ntsc-adaptive kinda does it but you have to use a very low setting for chroma scaling and it’s not quite as accurate looking.
Hi @guest.r
any reason why EVEN/ODD scanlines is missing? maybe they can be added as interlaced mode=-1 so every 240 settings should work in 480 mode (the 480 mode will be 240 but shifting vertically based on if odd/even frame)
That would be Reshade port specific, in Retroarch we fortunatelly get perfect info on vertical resolutions and such hacks aren’t needed.
About interlacing, i really don’t know why i should double the vertical input buffer size by 2x. Some other shader might be designed around this for specific reasons, but not guest-advanced.
With the current state you can play 224p, 240p…content without issues, you can interlace 480p input, or leave it 480p. Other situations are “perfectly” covered too.
I guess the only issue which remains is that guest-advanced-ntsc 2-phase and interlacing pass can be synced. In this case merge fields or disable fringing. Rainbowing wasn’t a thing with 480i, no need to break your teeth on this.
I mean a mode that act like retroarch CRT-Geom and crt-beans in 480, which use 240p scanlines in 480i but as interlaced scan, interlaced mode=1 is close to it but still there are some settings in “scanline options” that wont affect anything in 480 mode! and that reasonable for many of interlaced modes of CRT Guest Advanced like mode 4
It’s the shader design, you can still produce odd-even scanlines in the interlacing/linearize pass by increasing the Interlacing Scanline Effect ('Laced brightness)
parameter.
Otherwise i’m quite happy with the current implementation. I’m quite sure interlacing on a regular crt tv didn’t produce same scanline effects as with non-interlaced resolutions.
Interlacing on a regular crt relied on overlaping and phosphor persistance, so there wasn’t a significant brightness loss as detailed “digital, emulated” scanlines would produce. The brightness loss more or less resulted in phosphor fade, which could be also a bit eye straining.
well, yes but not 100% different https://youtu.be/YLmv-QL_hG4?t=64
true but in modern screens we got something similar (or worst) which is motion blur also the after glow pass will help
dont get me wrong, your design for implementing interlaced is nice, and does not blindly imitate interlaced in TV, but still it’s nice to have an option to blindly imitate interlaced in TV, Especially in some presets that has very bright 240p settings (Especially with settings that almost kill the scanlines in bright areas), and as I said interlaced mode=1 is so close to what I want but many settings wont affect in it (Especially settings in “scanline options”)