NTSC shaders redux

The first TV I played a NES on was a black and white, I want to say, 13 inch, make unknown… so I’m probably not qualified to say. :grin:

I was thrilled to get a 17" Montgomery Ward color TV not long after this, though. It was one of those that you twisted the volume knob until it clicked to turn it on. lol

1 Like

I guess there should be a reasonable deal of estimated tolerance when comparing photos of actual crt displays with a shader screenshot. I, on my side, see that themaister’s ntsc shaders are designed on good basis and well throughthought.

Is there a reason for a better implementation? I belive there always is, but the catch is consoles were doing their part, cables/connectors another (with possible signal degradations) and the crt tv their share. Putting all this into a single ‘ntsc/pal’ bundle could be a challange indeed, with an increased deal of nitpickying. But i don’t mind and always approve good work. :smiley:

Here is a comparison crt vs shader:

crt photo:

shader screenies:

different color pallete:

6 Likes

This is interesting stuff here, I’ve been so focused on just the Genesis dithering and transparencies that I never really took the time to see how the other 8/16 bit systems run through NTSC. Since nes produces a different rainbow effect can the same be said for other systems like snes, turbo graphs, master system etc? If so this gives me an idea to make separate presets specifically for each system. I may have to start doing research on all of this.

3 Likes

It is well documented that there is variance among the different consoles’ video output circuitry.

NES Composite Video output is not the same as Sega Genesis, SNES or PC Engine. Even among different models of Sega Genesis there can be differences in appearance and behavior of both audio and video output.

That’s what I have attempted to do using my Custom Blargg NTSC Video Filter presets. Only yesterday when I was trying to respond to @Nesguy I realized that @Juandiegous had the same idea of using the Blargg NTSC filter presets to simulate different console’s outputs and using the CRT Shader to more or less simulate different TVs.

That’s why I created separate tweaks for each system. I remember NES as being very sharp and clean in Composite, the same could be said about the Turbo Grafx 16. I remember SNES being a bit more soft/smooth around the edges, probably due to the low resolution combined with the image being stretched to fit 4:3 thus changing the shape of the pixels as well as the use of its vast colour palette to do wonderful melding on the edges of the graphics.

So far I’ve been able to get the sharp SNES look without the Blargg NTSC Filters, which probably looks more like S-Video than Composite if my memory serves me correctly but when I’ve tried to do composite with artifacts, games that can handle a softer, blended/filtered look, look beautiful, but when I turn on the Super Mario World title screen (and other games which are more line art focused with lots of solid colours), I can see the blur or other weirdness in the title text, especially when viewed from a distance.

My latest SNES Composite Preset aims to address this so it can be used with all games without producing that blur while still having a more subtle NTSC effect.

So far, I think it works well in a variety of games I’ve tried.

I never seem to stop tweaking my presets though. Although, I hardly touch my Arcade and NES presets and I was pretty satisfied with my Turbo Duo Presets, sometimes there’s always something in the back of my mind that I think shouldn’t be there, looks a bit strange or needs improving.

Then I go to work, overhauling, sometimes get the improvements and then experiment with porting the improvements even to my other presets which I’ve previously been satisfied with.

This is why my latest pack has a new CyberLab_Genesis_Composite_Slot_Mask_IV_OLED_for_CyberLab_or_Core_Blargg_Composite_or_Video_Filter_III.slangp

I’m not ready to abandon the previous “look” since the real testing tends to take place after I make my new presets, release them into the wild and play with them over an extended period.

Trust me, when I say, I do a quite a bit of pixel watching.

In my latest Genesis preset I’ve also brightened and desaturated things a bit making it a bit easier on the eyes (which are my primary judge before I do any sort of comparisons). I’m more into reversing and reengineering the final output experience to my liking as opposed to trying to match particular TV sets. Which I also sometimes compare my presets to for reference and guidance, usually in a casual manner because I’m not aiming for nor do I expect to get an identical 1:1 match. Once it does what I think I want done to the pixels and artwork and is pleasing to my eyes, I’m satisfied.

No screenshots yet, pretty soon, but looking at and testing my new Genesis Preset I was really amazed at how clear and sharp the edges of the sprites and backgrounds looked and the level of detail that could be resolved while that Blargg_NTSC_Genesis_Composite_CyberLab_Special_Edition (or Blargg_NTSC_Genesis_S-Video_CyberLab_Special_Edition) video filter preset appeared to effortlessly filter the dithering.

It’s amazing how far I’ve (I previously thought “we” but don’t want to speak for anyone else and inadvertently rub anyone the wrong way) come from relying on great but inherently challenged de-dithering algorithms and on making blurry presets just for the sake of blending dithering to the clear, focused, easy on the eyes presets that I think our old CRTs must be looking at us from heaven feeling proud that their legacy will be safe with software preservation.

Right click on the image, click Open in New Tab then press F11 for Fullscreen for 4K users. Zoom in until it looks right for 1440p or 1080p users.

2 Likes

I hear you man, I always saw your specific system presets and now I have a better understanding on why they exist. If I get into specific system ntsc composite presets the main difference between me and yours would be that I will not use any kind of Blargg filtering, all filtering will be done by the shader alone.

As you may already know my aim is to “set it and forget it” so gamers can load the shader up and just jump right into the game. I believe that mame ntsc shader is the answer to make all kinds of different system presets as we’ve just seen with nes.

The first thing I would probably start with is finding pics of all the old systems using real hardware that shows off the color artifacting/rainbow banding and match that first, from there it’s a matter of tweaking sharpness, blur, color palettes etc. This could be an interesting project and bring my preset pack to a new level if done right.

2 Likes

This can also be done using the Blargg Filter Presets. It’s basically a one time set it and forget it per core. Then users can switch shader presets on the fly.

If moods change or if another user has a different preference, They can swap the filter presets then save a core override again and the filter auto loads with the core. If using a Core Provided Filter Preset there’s no need to save anything as changes are persistent.

Not trying to encourage this method instead of the shader only method, just trying to show that’s it’s not really complicated to use both shaders and filters at the same time especially when it’s prefabbed and prepackaged the way I try to present things, which is the way I use them myself.

That’s why I use long, descriptive filenames. They might seem unorthodox but if a user is inclined to read the shader preset filenames, they will tell them exactly which video filter presets they should use them with in order to get the intended effect.

So it’s like the filenames themselves are dox.

2 Likes

Most definitely, since that’s been working for users that’s been using your presets then I say keep the ball rolling, I guess my method is a even more simplified way, I don’t want anyone to have to load up any extra filters at all or have to turn up back lights on tvs or anything extra besides just loading the shader itself, that’s why I tweak brightness levels and all that jazz so that it (should) look good to a new user right out the box.

That would also be my aim if I start making system specific presets, I’ll most likely have it similar to the way they currently look but then add extra folders like let’s say:

1080p/composite/system folder names

In the composite folder will be more folders for all the old systems like nes, snes, genesis etc. Then a user can pick the system they like and just load it up and be good to go.

2 Likes

Just saying this for the record so that no one has the wrong impression if it was somehow implied.

My preset pack has many different preset variations. Some are intended to be used with Blargg Filters while a significant number are not. My “Genesis Sharp” and “Blending and Transparency” presets use MDAPT for dedithering for example. Those descriptive names are intended to make it easier for users to identify and experience the benefits of MDAPT even if they don’t have a clue that MDAPT is an acronym for “Merge Dithering and Psuedo Transparency”.

Also, none of my presets should require users to tweak backlights or TV settings and should work out of the box as well just like yours do.

If you find the screenshots that I post look a little dark, that’s just how full strength mask and scanlines presets look when scaled down. That’s why I put notes suggesting that users view them full screen or zoomed in so that they won’t get the wrong impression and think the presets look that dark in practice. Nowhere in my documentation do I ask users to adjust their sets, but I know that there are other community offerings which might require things like that to be done.

I also strive for ease of use and simplicity. At some point I might want to trim things down a bit and maybe have some more subfolders for better organization. I’ve thought of grouping them by mask type for example but I really don’t want users to have to understand what a mask type is in order to choose the type of preset they’re looking for. I could also group by console as now each console in my Console Specific Presets folder now has it’s own family of presets but for now, I’ll probably just continue to highlight to users the presets that I’m currently using or might work well for the different systems I emulate in a list of recommendations.

The last one I did is long overdue for an update.

1 Like

Lol got it. I also wanted to ask since you kind of got a jump start in this area already with the system presets, do you have images of all the main old systems (nes, snes, turbo graphx etc.) that show off all ntsc features like the rainbow effect etc? We already have that Ninja Gaiden shot above so I can already use that as a starting reference for nes. But do you have or know where I can view a collection of pics of all the other systems hooked up to a crt, or even videos? Figure this would save some time Googling if there’s already a collection of pics somewhere here on the forum or something that I can view.

1 Like

Even though I have lots of random CRT photos I don’t have a curated or organized group of reference photos like this. I mostly developed my presets based on memory and just on what I find looks and feels right. I would be exposed to pictures and come across photos and videos in these forums as well as on reddit and YouTube though but it’s mostly random stuff. At times I might experiment using reference images to fine tune certain things though but it’s mostly just by eyeballing and what’s in my head.

I like to describe what I do as creating imaginary CRT models in my head. That’s what gives rise to preset names like, “CyberLab__Ultimate_Virtual_Slot_Mask_CRT-1P2RTA__ADV.slangp”.

In case anyone was ever curious, the model number, 1P2RTA is actually an acronym for One Preset To Rule Them All.

I don’t mean all presets including yours though…lol,…just the ones in my preset pack.

NP2RTA also means something but I’ll let you guys figure that one out for yourselves.

If I’m able to sift through and package some of the types of reference images you’re looking for, I’d be happy to share but I guess you could just look at a variety of CRT images or actual CRTs in real life if you have access to them bearing in mind that photos and videos of CRTs will always have some inaccuracies due to the limitations of the photography methods and equipment used which might make their way into your presets if you don’t take things like that into consideration.

I do have some recent real CRT photos that I took for myself at a dying arcade. I’ve posted them in my thread as well as in the Calling all CRT owners photos please! thread.

You can definitely get some nice pics on r/crtgaming on Reddit. I’ve reposted a few of those on my thread, especially of some JVC D-Series sets. Reposted some high quality PC-Engine footage recently. I even think I reposted some footage a while back of someone recording some high quality videos of Megaman using a camera focused on their CRT as well as one that a photographer did using a high quality camera and macro lens.

So, just by scrolling through my thread you should find some good reference material just not anything focusing specifically on rainbow effects/NTSC artifacts.

It’s quite apparent where there’s a difference in focus in our approaches and the results which can be seen in our preset packs. You seem to focus a lot on the rainbow effects and artifacts and that’s a clear strength in your preset pack, however I focus on the Masks, “Phosphors” and Scanlines so if you zoom into my screenshots or stick your nose up to the screen you’ll see every colour, especially the white is made up exclusively of that RGB “phosphor” mix and not pure colours with a hint of Mask texture. So my reference material will tend to reflect that as well.

1 Like

Ah I see, it’s ok when I get some time I’ll go on a little hunt and find a few images to start with. Like you I’ll also be eyeballing as I go along since I don’t have any real hardware to test on. I’ll also be sure to check everything out that you mentioned here.

Yeah my main focus with these system specific presets would be to just mimic the rainbow banding and artifacting effects the different type of composite connections produce on real hardware, seeing those different kind of effects look cool as hell and when it comes to the rainbow effect that mame ntsc shader allows you to spin the rainbow 360 degrees and make it as thin or thick as you want so there’s no angle or size it can’t do.

I’m at a point with my presets where I’m pretty satisfied with scanlines and things, I always use slot mask at 100% strength so that will never change, I think I brightened my shaders up to a point where I’m actually surprised the brightness hasn’t ruined the image, they’ve never been as bright as they are in my recent pack but it works somehow and users seem to be loving it especially the guys on YouTube that’s downloading the pack from the videos.

But yeah I’m aiming for the rainbow effects mostly if I start doing system specific composite presets.

1 Like

What settings are used for this screenshot?

2 Likes

I think the main thing I’m concerned about with all of this NTSC stuff is the sharpness. Composite video was simply never as blurry as the default output of the NTSC shaders, regardless of TV, console, connection, etc. Even an RF connection was sharper.

3 Likes

No mask, increased brightness, custom artifacting 1.5, some sharpening and non-default color pallete, which made a big difference due to alternate contrast. It was a quick setup for a screenie, didn’t save it unfortunatelly.

3 Likes

I’ll try to recreate it, looks really good.

Do you remember what color palette was used?

Are you increasing NTSC brightness or using bright boost (or some other method)?

Do you remember what kind of sharpening was used?

2 Likes

I belive it was some ammount of pre-brightness and a tad of post brightness. I also used cooler temps to honor the crt screenie. Sharpening was with the regular sharpen pass.

2 Likes

Taking another crack at this now that I’m a little more invested in this topic. I know this pic isn’t close to being a replica of the crt pic but I’ve tweaked around with the sharpness settings getting my feet wet a little hopefully I’m at least heading in the right direction.

One thing I’ve learned dealing with guest’s shader is that turning down both glow sigmas gives a nice increase in sharpness. Those two glow settings at default gives you a certain amount of blur. Anyway I’ll be keeping a eye on this thread this is interesting stuff.

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.000000"
ccvalue = "5.994998"
scantime = "28.600300"
notchhalfwidth = "0.000000"
yfreqresponse = "4.599995"
ifreqresponse = "1.750000"
qfreqresponse = "1.450000"
signaloffset = "0.000000"
g_crtgamut = "0.000000"
g_vignette = "0.000000"
g_cntrst = "-0.250000"
g_sat = "-0.030000"
g_lift = "-0.030000"
SIGMA_HOR = "0.600000"
S_SHARP = "2.000000"
HSHARP = "2.000000"
spike = "1.500000"
SIGMA_HB = "0.250000"
SIGMA_VB = "0.250000"
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"
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"

Edit:

Did another tweak, this one looks a little cleaner:

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 = "1.000000"
ccvalue = "5.988495"
scantime = "28.700300"
notchhalfwidth = "0.000000"
yfreqresponse = "4.599995"
ifreqresponse = "1.750000"
qfreqresponse = "1.450000"
signaloffset = "0.000000"
g_crtgamut = "0.000000"
g_vignette = "0.000000"
g_cntrst = "-0.250000"
g_sat = "-0.030000"
g_lift = "-0.030000"
SIGMA_HOR = "0.700000"
S_SHARP = "1.800000"
HSHARP = "0.200000"
HARNG = "0.000000"
spike = "1.500000"
SIGMA_HB = "0.250000"
SIGMA_VB = "0.250000"
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"
deconrr = "1.000000"
deconrb = "-1.000000"
deconrry = "1.000000"
deconrby = "-1.000000"
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"
5 Likes

@Cyber So after looking around a bit I came to find some info on how composite works on different systems, it seems nes and snes composite pretty much works the same, we both know how Genesis works from my composite presets. I read that pc engine didn’t do checkerboard dithering, not sure how true that is as I can’t find any reliable images of real hardware hooked up to a crt and then the last one I need is sega master system which I also can’t find any good pics of using real hardware.

I already put together presets for nes, snes and genesis that’s ready to go in a new update, I just need to know how pc engine and sms composite works, so if you have any pics of those two systems showing off rainbow banding/color artifacting please do share lol

3 Likes

As a general reference you can search for 2-phase or 3-phase signal coding/decoding. And maybe for fields merging.

3 Likes

I’ll give that a go. Maybe I should search for psx, saturn and n64 pics as well even though I’ve never seen or played those systems through composite at all.

If nothing else I’ll just use your ntsc shader and load up those systems and eyeball mimic the color banding and call it a day

3 Likes