CRT-Guest-Advanced, HD and NTSC for ReShade!

Thank you this has been very helpful. I had an additional question. If I’m using native 1x resolution on PCSX2 which renders games at 512x448, I should make it 796x448 in the preprocessor definitions; this much I understand. But should the internal resolution y: 0.5 | y-downscale setting be left untouched at 0.0 as well? Or should that be a different value?

same as using the shader in retroarch LRPS2 (or whatever) with native (1x) resolution, which mean you dont need to change those (but nothing stop you from doing it anyway :slight_smile: )

Different games use different resolutions and can sometimes switch between them during gameplay (like in FFX, prerendered cutscenes have different resolutions than the game itself).

If you can live with letterboxing on top of pillarboxing, enable Screen Offsets and Show Overscan globally, and set internal resolution in the shader to 640x480, this has been a bulletproof combination for me so far.

@ParanormalBanana there is a version for Duckstation, which if I remember correctly was made by @Rincewind from an older version of DevilSingh’s Reshade port, that automatically changes the Resolution_X/Y based on the game’s resolution. It used to be included in older versions of Duckstation, but not anymore. Now you can find it under https://github.com/stenzek/emu-shaders.

Also Duckstation now supports Slang shaders, so you could try Guest’s versions directly. Not sure how well that works, I haven’t tried it myself yet.

I made a small ReShade addon for PCSX2 that automatically updates Resolution_X and Resolution_Y for the CRT-Guest shaders when the PS2 switches between video modes. No manual adjustments or preset reloads needed.

It works by analyzing the scissor rectangles PCSX2 sends to the GPU each frame, which directly reflect the PS2’s active display resolution. Supports CRT-Guest-NTSC, CRT-Guest-Advanced, and CRT-Guest-HD, with a predefined list of PS2 native resolutions.

Testing and feedback are appreciated!

4 Likes

its a nice addon indeed! thanks!

test using your addon and my JobimaCRT_guest_advancedV8.fx with MGS3 https://odysee.com/@JobimaInOdysee:a/MGS3-using-JobimaCRT_guest_advancedV8-with-reshade–pcsx2–auto–resolution-showcase:0 since we cant use pressure-sensitive face buttons in retroarch yet

What would be the best settings for reshade and guest crt NTSC to get like a S-Video or composite look?

For both it really depends on the exact kind of composite or s-video you want. Some CRTs would have filters that remove the artifacts from composite that make them look different than others. Regardless, you’ll want to fiddle around with the artifacting/fringing, phase, ntsc resolution, and chroma scaling/bleeding settings to find the aesthetic that appeals the most to you. By default, having both artifacting and fringing set at 1 is meant to represent an unfiltered composite signal, while setting them both to 0 is meant to represent an s-video signal. You should also adjust the phase and chroma scaling to whatever looks the best to you. You can also try using the edge colors setting to prevent the colors form spilling out beyond the edges of pixels when using lower chroma scaling values.

1 Like

Also, hello everyone. I am having an absurd amount of trouble finding the right settings to use for Shovel knight to align the scanlines correctly. I’m using a 1440p screen and running the game with DXVK and Special K in HDR. I’ve managed to figure out that a 225 vertical resolution is mostly correct, but I have no idea why this is when the game runs at 400x240 natively. The 1:1 scaling also does not work how I imagined it either. If using that setting, I should be able to set the horizontal resolution to 240 to align the scanlines, but that does not work. I’ve tried fiddling around with random numbers, but none of them work. The best result I’ve gotten is setting the game to fit and using guest’s integer scaling with the resolution set to 400x225. However, there are still some issues with screen warping when viewing horizontally scrolling segments. Using CRT-royale on reshade can get good results when in the 1:1 scaling by manually setting the display box to equal multiples of 400x225. I have no idea what is going on here.

Hi,

there was a bug in my update that fixed now https://github.com/Jobima1st/CRT-Guest-ReShade/blob/Jobima1st-patch-25-11-30-r1-fix/Shaders/CRT-Guest-NTSC.fx

and I also see these bugs in your fork so I did this reply so you can fix them too :slight_smile:

1 Like

Ty for letting me know!

Some of these changes appear to diverge from upstream, so you may want to double check on those:

crt-guest-advanced-ntsc-pass2.slang
	vec2 ofactor = OutputSize.xy/global.OriginalSize.xy;

old reshade
	float2 ofactor= OptSize.xy/OrgSize.xy;
	
new reshade
	float2 ofactor= NewSize.xy/OrgSize.xy;

(Replacing float3 xd=dx; int loopstart=int(TAPS_3_phase-loop); with float3 xd=dx; int loopstart=int(32.0-loop); does match upstream.)

Edit: @PU786 and i did some testing. While these two changes diverge from upstream, they are necessary to fix that integer scaling bug.

crt-guest-advanced-ntsc-pass2.slang
	texcoord.y = texcoord.y - VShift*global.OriginalSize.w;

old reshade
	texcoord.y = texcoord.y - VShift*OrgSize.w;

new reshade
	lexcoord.y = lexcoord.y - VShift*OrgSize.w;



deconvergence-ntsc.slang
	texcoord.y = texcoord.y - VShift*global.OriginalSize.w;

old reshade
	lexcoord.y=texcoord.y - VShift*OrgSize.w;

new reshade
	lexcoord.y=lexcoord.y - VShift*OrgSize.w;
1 Like

Oh, and please do feel free to adopt the changes i made to the parameter order to match upstream.

The consistency is nice, and the collapsible categories are a great QoL improvement in my opinion.

2 Likes

Totally needed, yes.

the ofactor change happen in OG CRT-Guest-NTSC Aspect Ratio and I did miss port it back then

and about other changes, I think the new updates are matching upstream

keep in mind reshade port sometimes use new naming

I maybe do it in my JobimaCRT_guest_advancedV8 (feel free to do it with https://pastebin.com/eJ2KaruX and post it so I can update it as V8.24b :slight_smile: )

not for CRT-Guest-NTSC.fx since the parameter orders is done by DevilSingh that way (dont know why, and I respect his decision so I dont think I will change it)

1 Like

I didn’t go through and change the defaults to your new ones, but everything else should be all set:

It doesn’t seem like there was any particular intentionalality behind the order DevilSingh had the settings in, so i am very much inclined to match upstream. That is your prerogative for the version you are maintaining tho shrug.

2 Likes

I didnt update it since I made JobimaCRT_guest_advancedV8.fx so you (or anyone) can adopts it :slight_smile:

thanks you! update is done https://github.com/Jobima1st/Jobima-Presets/blob/ManualUpdates/Jobima%20crt%20guest%20advanced%20V8.24b%20presets%20for%20reshade.rar

.

Hi @Guilherme, is it possible to update https://github.com/Guilherme-Tavares/reshade-pcsx2-auto-resolution to set the original fps too? it’s now OriginalFPS in my last update, similar to Resolution_X or Resolution_Y

1 Like

Looking great! Just a couple of maybe accidentally separated “Color Tweaks” categories:

And “Interlacing Scanlines Saturation” is in the category below where it should be.

@Jobima since your versions are going to be the up to date and best working set from here on out, it would be best to name it back to CRT_Guest_NTSC and have the OG default options set. (as good as your defaults are for a default, my brain is wired to a certain baseline when I make a mistake and revert certain options back to Default, so it’s a big help to not wonder if an option is Guest’s default or not)

I think it’s good your preset is indeed available still though, so maybe a separate file you keep up to date as well?

You two both do incredible work @Azurfel @Jobima, thank you so much for the passion and quality you both bring into the community.

3 Likes

Found another separated into duplicate category accident.

it’s not just the defaults, I did add my port of crt-black_crush-koko to it too

anyone (like Azurfel) feel free to back port it to original CRT_Guest_NTSC

OK…but if he does that, are you going to include it in the branch you update for the future? Like this time with the repeat work for the option organization, following around someone else’s work to double work in the community is a pain and then divergence can happen when one person loses steam.
People’s motivation can run out, people lose interest, or get burnt out, etc.