NTSC shaders redux

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

@guest.r do you remember what color palette was used in the shot you posted recently? That may be the missing ingredient.

3 Likes

It should be Sony CXA…i compared it with the screenie. I also cranked up the contrast to get more intensive artifacting, remember now.

3 Likes

Many PC Engine games employ all sorts of dithering. Not sure if they would have appeared transparent or fully blended over a composite input like the Sega Genesis though because the output was clean and many times high res. The PC Engine used high res modes a lot in games compared to the Sega Genesis and SNES.

So in many cases you might just see the dither patterns depending on the screen used, input I guess (I only used composite) and viewing distance. It wouldn’t appear as harsh as in DOS games on a VGA/SVGA monitor though because we’re using composite on a TV/Commodore Monitor but dithering was very common as far as I know on the PC-Engine/TurboGrafx-16/Turbo Duo.

My latest shader preset and video filter combination blends a lot of the dithering without sacrificing the resolution and sharpness though. This can be seen in the blue gradient behind Esty in the Gate Of Thunder intro and in other areas and games as well.

You’ll still see the dither patterns in other areas of the intro like on Hawk’s gloved index finger.

But you can’t go around using the same levels of de-dithering/softening/NTSCing for PC Engine as you do with Sega Genesis. Things like text will quickly begin to appear unbecoming of the Turbo, while the Genesis will tend to be much more forgiving.

I can’t remember ever seeing rainbow banding on a PC Engine (TurboGrafx-16/Turbo Duo) game in real life. I can’t even remember seeing it on Sega Genesis but those memories would be even more faded than my TurboGrafx-16/Turbo Duo ones. Maybe I just didn’t notice the rainbow effect on Genesis

As for PC Engine, I remember how clean it was on my Commodore 1702. That mask pattern was beautiful on such a small, high quality screen.

Some more examples of dithering on the PC-Engine:

Some videos showing PC-Engine Games running on CRT Displays:

Very useful and important information about how the PC Engine produces its colours:

This is also a good Resource if you would like to browse the PCE Library and see which games use dithering:

http://www.pcengine.co.uk/HTML_A-Z_Pages/A.htm

Many of the posts have gameplay and longplay videos.

http://www.pcengine.co.uk/HTML_Games/Addams_Family.htm

Misc. Turbo Stuff that I found interesting:

Seeing some slight rainbow artifacts/fringing going on on some edges of pixels here, especially on top right right edges of round shapes or shapes with diagonal edges particularly during right to left scrolling.

Video uploaded said he just has the composite out of the Turbo Duo hooked up to the capture card.

2 Likes

This one should be useful.

Regarding composite, PC Engine has the same problems Genesis has. Not that terrible, but it’s the same phase, so image quality and colours both get a blow.

3 Likes