The lastest presets show a black screen on my Steam Deck. I narrowed ot down to the negative contrast parameter. Positive values bring the screen back to normal.
This is another new case of the black screen attack this time on a Steam Deck. I’m still not sure exactly what causes this and it’s good that you got it to work but if you had to change the contrast to do so that’s still kind of bad as that changes the intended look I had for the shader. If that works for you then all is good but that’s weird.
Here’s a little preview of what I’ve been working on, a new composite preset. The presets that’s included in the pack is based on the 320px ntsc 2-phase output which I’ve used to recreate the Sonic waterfall rainbow effect but what about the other systems that used the 256px 3-phase output signal like nes, snes, master system and atari 2600? They have their own different color artifacting effects that can’t be replicated by the 2-phase composite signal and that’s why this new preset was created.
A few sample pics to show the difference:
2-phase composite:
3-phase composite:
2-phase:
3-phase:
2-phase:
3-phase:
Almost every major retro console used the 2-phase output while very few systems (nes, snes, master system, atari 2600) used 3-phase, this new preset is meant to be used for those few systems.
In my next update I’ll have to rearrange the whole naming list, it will be the first composite preset (2-phase) that you’ve already been using then I’ll just add in the 3-phase one right under it so it will then expand to 4 different types of connections to choose from instead of 3. I’ll figure out how I’ll name them in the meantime. You can try the shader out in the meantime though:
shaders = "10"
shader0 = "shaders_slang/crt/shaders/tvout-tweaks.slang"
filter_linear0 = "true"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders_slang/crt/shaders/mame_hlsl/shaders/old/shaders/mame_hlsl/shaders/mame_ntsc.slang"
filter_linear1 = "true"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "StockPass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders_slang/crt/shaders/guest/hd/afterglow0.slang"
filter_linear2 = "false"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "AfterglowPass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders_slang/crt/shaders/guest/advanced/grade/pre-shaders-afterglow-grade.slang"
filter_linear3 = "false"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "true"
alias3 = "PrePass"
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders_slang/crt/shaders/guest/hd/linearize-hd.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "LinearizePass"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt/shaders/guest/hd/crt-guest-advanced-hd-pass1.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "Pass1"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "viewport"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt/shaders/guest/hd/bloom_horizontal.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "absolute"
scale_x6 = "800"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/hd/bloom_vertical.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "BloomPass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "absolute"
scale_y7 = "600"
shader8 = "shaders_slang/crt/shaders/guest/hd/crt-guest-advanced-hd-pass2.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "true"
srgb_framebuffer8 = "false"
scale_type_x8 = "viewport"
scale_x8 = "1.000000"
scale_type_y8 = "viewport"
scale_y8 = "1.000000"
shader9 = "shaders_slang/crt/shaders/guest/hd/deconvergence-hd.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "viewport"
scale_x9 = "1.000000"
scale_type_y9 = "viewport"
scale_y9 = "1.000000"
TVOUT_COMPOSITE_CONNECTION = "1.000000"
TVOUT_RESOLUTION_Y = "1024.000000"
TVOUT_RESOLUTION_I = "256.000000"
TVOUT_RESOLUTION_Q = "121.599998"
ntscsignal = "1.000000"
avalue = "0.750000"
bvalue = "0.750000"
ccvalue = "3.675039"
scantime = "49.400047"
notchhalfwidth = "0.800000"
signaloffset = "0.000000"
g_crtgamut = "0.000000"
g_vignette = "0.000000"
g_cntrst = "-0.250000"
g_sat = "-0.030000"
g_lift = "-0.030000"
spike = "1.500000"
warpX = "0.050000"
warpY = "0.070000"
csize = "0.035000"
glow = "0.200000"
bloom = "-0.800000"
bloom_dist = "0.400000"
halation = "-0.075000"
gamma_c = "1.250000"
brightboost = "1.000000"
brightboost1 = "1.200000"
beam_min = "2.199999"
beam_max = "0.950000"
beam_size = "0.000000"
scans = "0.050000"
scan_falloff = "0.200000"
shadowMask = "6.000000"
maskstr = "1.000000"
maskboost = "1.200000"
slotmask = "1.000000"
slotmask1 = "1.000000"
slotwidth = "3.000000"
double_slot = "2.000000"
smoothmask = "1.000000"
dctypex = "0.050000"
dctypey = "0.050000"
deconrr = "1.000000"
deconrb = "-1.000000"
deconrry = "1.000000"
deconrby = "-1.000000"
post_br = "1.150000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/advanced/lut/trinitron-lut.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/advanced/lut/inv-trinitron-lut.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/advanced/lut/nec-lut.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/advanced/lut/ntsc-lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"
Brilliant work @Sonkun! I look forward to seeing this hybrid shader you and @ynnad4 have been using being integrated in the HSM Mega Bezel Reflection Shader someday!
I could vaguely recall @ynnad4 asking if it could be used together with the shaders I use, perhaps this can be made possible someday by @HyperspaceMadness?
Maybe as an upgrade to an existing one to keep things from becoming too bloated?
I updated my post over at the NTSC Shaders Redux thread to show some examples of PC-Engine/TurboGrafx-16/Turbo Duo rainbow artifacts over composite output so you can take a look.
Thank you Cyber I appreciate it. I should have been made this composite preset a while ago now that I think of it, it’s not like the mame ntsc shader switches between 2 phase and 3 phase automatically like guest’s ntsc shader does so it makes sense that there should be two types of composite presets to cover both grounds.
When I get home from work later I’ll polish that preset up a bit more then get it ready for public release, I noticed the rainbow effect is not exactly aligned correctly that’s one of the main issues and it would be nice to see my presets again in the Mega Bezel pack like old times. It all comes down to Hyperspace to decide that though, my shaders will always be more than welcome to integrate back into the project again when the time is right especially now that they look better than ever imo.
Can you remind me once again for the folks watching at home why this can’t be done properly or accurately using CRT-Guest-Advance-NTSC?
At the same time that I would love to enable Sonkun’s setup to run in the Mega Bezel, I am trying to keep the Mega Bezel from collecting too much redundant functionality in the chain.
Sonkun’s current presets are based on guest Advanced HD, and add mame-ntsc to this. The Mega Bezel NTSC chain is uses the Guest Advanced NTSC setup. So it’s quite a different shader chain.
I also want to avoid having 2 separate ntsc effects in the shader, because for the average user this will be quite confusing.
There might be some way in the future to achieve something which could work, and avoid redundancy and confusion, but I don’t see the solution at the moment.
Lol oh no it definitely does the job, the only thing it doesn’t do is give me that same rainbow effect that I get from the mame ntsc shader so that’s why I ended up just switching over to that shader then things just got experimental from there.
And pretty much that’s the reason right there that @HyperspaceMadness said why my presets aren’t in the Mega Bezel project at the moment, my presets are a mixed bag of other shaders besides guest’s. I guess if anything the only presets that will fit in right now are the rgb presets since I’ve added nothing else to the chain, it’s just all guest’s shader for that one.
New Version Release (12/21/2022)
Changes Made
- I split the composite presets up into 2 different types, one for the ntsc 2-phase output and ntsc 3-phase output bringing the total shader presets to choose from 24 to 32.
Here’s a early Christmas gift for you guys, a brand new composite shader preset.
I’ve created two different composite connections, one for ntsc 2-phase and one for ntsc 3-phase. The composite shader that’s been included up to recently in all my shader packs has been based off the ntsc 2-phase output, most systems used the 2-phase connection but a few systems used the 3-phase connection. I’ve created a list of the common retro systems on RetroArch to choose the right connection for the right system.
Systems that used the ntsc 2-phase output:
Atari 5200, Atari 7800, Atari Jaguar, Sega Megadrive(Genesis)/CD/32X, Nintendo 64, Neo Geo CD, NEC PC Engine(Turbo Grafx)/CD/Super Grafx, Panasonic 3DO, Philips CDi, Sega Saturn, Sony PlayStation.
Systems that used the 3-phase ntsc output:
Atari 2600, Nintendo Entertainment System, Sega Master System, Super Nintendo Entertainment System.
Very few systems used the ntsc 3-phase output but that output produced different dithering color/artifact effects on the screen for those specific systems that the ntsc 2-phase output didn’t and I wanted to recreate that look with this new 3-phase composite shader.
Here’s a few sample pics to show the difference.
NTSC 2-phase composite:
NTSC 3-phase composite:
NTSC 2-phase composite:
NTSC 3-phase composite:
NTSC 2-phase composite:
NTSC 3-phase composite:
As you can see on the ground in Ninja Gaiden, the side of the houses in Paperboy and the water in Super Mario World it produces a diagonal dithering effect and that’s how it’s suppose to look using composite ntsc 3-phase.
You can all grab the new link in the first post.
Edit as of 12/22/2022: Did a small tweak to the new ntsc 3-phase composite presets so if you downloaded the 22/21/2022 pack please download the 12/22/2022 pack.
Hi Sonkun, I’m a fan of your project that I really appreciate, your presets give a great retro look to things that I emulate with little effort on my modest mini PC’s part. I wanted to ask if in the future you plan to create presets with integrated overlays or bezels, that would be great since I, and I believe many users like me, have a hard time finding the right image resizing for an even better experience. And finally I wanted to ask you if you were going to bring your project to Reshade as well. Thank you very much for your attention and for your work.
Hey Rob, I’m glad you’re liking my presets, I make these not only for myself but for all retro gamers. As far as integrating bezels and overlays I don’t have any plans to do that as I use the Bezel Project for all my overlays. Have you tried giving those a try? I put a link to where you can grab them right in the first post.
I’m going to check it out right away, I haven’t tried them yet. Thanks for the advice and thanks again for your work.
New Version Release (12/24/2022)
Changes Made
- Did a small tweak to the new composite ntsc 3-phase presets.
Grab the new link in the first post.
I’m curious about ntsc’s phases. Is there any reference for how it looked on various games? I’ve noticed different implementations between shaders and I have no idea which one is more accurate. I’m speaking mostly about the rainbow effect.
https://www.chrismcovell.com/gotRGB/screenshots.html
That’s the closest thing I can find to what you’re asking for.
I based my composite ntsc 2 phase presets off of videos like this for the rainbow look:
I came across this video last night for the ntsc 3 phase dithering look:
Notice the water dithering at 12:50 into the video, even when the character isn’t moving across the screen at all you can still see that diagonal dithering effect. So far the “crtsim” and “mame ntsc” shaders are the only ones I’ve come across that does that “static” like water effect in Mario for ntsc 3 phase and the waterfall effect in Sonic for 2 phase and that’s where I ended up modeling my composite shader presets from.
Rainbow effects in e.g. the Sonic Waterfall don’t depend on the phase per se though, or else it would look the same on every hardware. You don’t see that pattern on 32x or Saturn (Sonic Jam).
You don’t even see it on all Genesis models from what I’ve read. Is it even the majority of them that experienced it?
I’ve even seen videos where the waterfall rainbow effect on real Genesis hardware is stronger and more dominant then I’ve also seen videos where there’s no rainbow effect at all, I think Model 1 and Model 2 Genesis hardware displayed dithering a bit differently. I’ve never played Sonic on Saturn through composite on real hardware so I can’t comment on that one, I’d love to see videos of that game being played that way though.
You’ve made me curious though, I also never tried my 2 phase composite presets in Saturn Sonic Jam, I wonder if the rainbow appears there. Guess I’ll see later when I get home.
It’s not just dependent on the model. It depends on which video encoder chip was used on the motherboard. They used about 3 different chips each with a difference in composite output and resulting artifacts including rainbow banding and other artifacts.
Also be very careful about using VHS footage as a reference for how NTSC Composite signals should look coming from a video game console. VHS video output has its own ton of artifacts and characteristics which are completely independent of the device hooked up to it.
So you might get a false impression of the sharpness for example based on a VHS video, while the actual console was much sharper than that. Same goes for colour saturation. I’ve never seen desaturated looking colour either using RF or Composite Video from a video game system. If I did, I would just turn my colour setting up or turn down my brightness. On a VHS video, slight desaturation was par for the course so I never adjusted my set just tried to get immersed into whatever story I was watching.
That’s interesting information right there, never knew that. I guess my presets are based off of whichever chip displayed that rainbow banding effect then cause I like it a lot, gives all Genesis games that use it personality and makes the games come more alive than just plain regular dithering blending imo.
I just used that footage to show off the rainbow/dithering effects on real hardware, other things like sharpness colors etc. in those videos I don’t care about since I make my presets (sharpness etc.) look a certain way which is the sonkun way.