Editing NTSC filters

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
'''NTSC filters''' replicate the analog signals that the console's output to the TV. They vary in quality, with the lowest quality being RF, then composite, then s-video and RGB (SCART)/YPbPr (Component) being the highest quality. Many emulators have NTSC filters built into them. They can also be separately downloaded as filter plugins. These filters were developed by blargg<ref>http://slack.net/~ant/libs/ntsc.html</ref> for specific consoles. Other NTSC shaders have been created which are different from blargg's implementation. A different approach is taken by [[Clock Signal]], in which composite video processing is an inherent part of the rendering chain, as opposed to a post-processing effect.
+
'''NTSC filters''' replicate the analog signals that the consoles output to the TV. They vary in quality, with the lowest quality being RF, then composite, then s-video and RGB (SCART)/YPbPr (Component) being the highest quality. Many emulators have NTSC filters built into them. They can also be separately downloaded as filter plugins. These filters were developed by blargg<ref>http://slack.net/~ant/libs/ntsc.html</ref> for specific consoles. Other NTSC shaders have been created which are different from blargg's implementation.
  
Encoding ''luminance'' (or ''luma'', the brightness component of the signal) and ''chrominance'' (or ''chroma'', the color component of the signal) into a single signal is what causes blur and artifacts because it's a lossy way of encoding an image. RF has worse artifacts because it also encodes audio into the signal and is more prone to interference since the signal is the same as what was used TV broadcasts.
+
Encoding ''luminance'' (or ''luma'', the brightness component of the signal) and ''chrominance'' (or ''chroma'', the color component of the signal) into a single signal is what causes blur and artifacting because it's a lossy way of encoding an image. RF has worse artifacting because it also encodes audio into the signal and is more prone to interference since the signal is the same as what was used TV broadcasts.
  
 
Many games were developed with the color distortion from these signals in mind, such as Chrono Trigger, with shifted values that make blacks look brown and borders look purple which would be output properly with NTSC colors, and Kirby's Dream Land 3, with vertical line patterns combined with high horizontal resolutions producing translucency effects when blended by the analog signal. Other games like Sonic used [[dithering]] patterns that would be blended on the Genesis/Mega Drive composite output, which is notably blurrier than NES or SNES composite video.
 
Many games were developed with the color distortion from these signals in mind, such as Chrono Trigger, with shifted values that make blacks look brown and borders look purple which would be output properly with NTSC colors, and Kirby's Dream Land 3, with vertical line patterns combined with high horizontal resolutions producing translucency effects when blended by the analog signal. Other games like Sonic used [[dithering]] patterns that would be blended on the Genesis/Mega Drive composite output, which is notably blurrier than NES or SNES composite video.
 
==Download==
 
* [http://www.mediafire.com/?356uu02o7oxw0u1 Win32]
 
* [http://www.mediafire.com/?62p83g46s95v44r Win64]
 
* [http://www.mediafire.com/?bqnp2etqkq3fkz1 Linux32]
 
* [http://www.mediafire.com/?01747etfqs8tt6g Linux64]
 
* [http://www.mediafire.com/?l5abvq3077cuqvt MacOS]
 
  
 
==Description==
 
==Description==
 
[[File:NTSC settings.png|thumb|450px|Chart showing the relative difference values between Composite, S-video and RGB. Values taken from [[Nestopia]]]]
 
[[File:NTSC settings.png|thumb|450px|Chart showing the relative difference values between Composite, S-video and RGB. Values taken from [[Nestopia]]]]
  
; RF
+
===RF===
: The lowest quality. Very blurry due to crosstalk between video and audio signals, and subject to static due to interference.
+
 
;Composite
+
The lowest quality. Very blurry due to crosstalk between video and audio signals, and subject to static due to interference.
:Higher quality than RF, but still blurry and with lots of color artifact and usually dot crawl due to crosstalk between luma and chroma. This is what most systems used as default.
+
 
;S-video
+
===Composite===
:Much cleaner image due to luma and chroma being separate signals, though color blur still present and chroma resolution is about the same as the composite output.
+
 
;RGB
+
Higher quality than RF, but still blurry and with lots of color artifact and dot crawl due to crosstalk between luma and chroma. This is what most systems used as default.
:The highest quality possible, since it uses separate channels for each color, along with a sync signal. Component YPbPr is similar, where it uses luma+sync, blue minus luma, and red minus luma for signals to give high quality, high bandwidth output capable of displaying higher resolutions, though this is only utilized by newer consoles.
+
 
 +
===S-video===
 +
 
 +
Much cleaner image due to luma and chroma being separate signals, though color blur still present and chroma resolution is about the same as composite.
 +
 
 +
===RGB===
 +
 
 +
The highest quality possible, since it uses separate channels for each color, along with a sync signal. Component YPbPr is similar, where it uses luma+sync, blue minus luma, and red minus luma for signals to give high quality, high bandwidth output capable of displaying higher resolutions, though this is only utilized by newer consoles.
  
 
==Filters and Shaders==
 
==Filters and Shaders==
Line 30: Line 30:
 
'''blargg's NTSC''' filters are powerful and optimized, but they are very system specific. There is a version for NES, SNES, SMS, and Genesis/Mega Drive, and each is intended for that system only, expecting a certain size input resolution. Certain games on other systems than the intended one can still make use of them, but not without glitches. For instance, on certain [[PS1]] games that have multiple resolutions, some of the resolution modes will work properly with these filters, and some won't. This may mean the aspect ratio is horribly messed up for menus, but the main gameplay will look normal. These filters upscale the image wide horizontally, but don't touch the vertical scale, so 1:1 PAR may result in weird aspect ratios.
 
'''blargg's NTSC''' filters are powerful and optimized, but they are very system specific. There is a version for NES, SNES, SMS, and Genesis/Mega Drive, and each is intended for that system only, expecting a certain size input resolution. Certain games on other systems than the intended one can still make use of them, but not without glitches. For instance, on certain [[PS1]] games that have multiple resolutions, some of the resolution modes will work properly with these filters, and some won't. This may mean the aspect ratio is horribly messed up for menus, but the main gameplay will look normal. These filters upscale the image wide horizontally, but don't touch the vertical scale, so 1:1 PAR may result in weird aspect ratios.
  
The level of blur in RF and composite signals are needed for [[dithering]] to blend on Genesis/Mega Drive. S-video and RGB are too clean to blend dithering.  
+
The level of blur in RF and composite signals are needed for [[dithering]] to blend on Genesis/Mega Drive. S-video, and RGB are too clean to blend dithering.  
  
 
In some emulators, it will have sliders for settings such as Resolution (level of signal blur), Sharpness (sharpness/comb filter that some TVs used), Color Bleed, Artifacts, and Fringing. Others simply use the preset settings. Note: RF preset is just composite with field merging disabled, so it emulates the oscillating artifacts composite output has (Go [http://www.chrismcovell.com/gotRGB/screenshots.html here] and see the 3rd image on the right for an example of this).
 
In some emulators, it will have sliders for settings such as Resolution (level of signal blur), Sharpness (sharpness/comb filter that some TVs used), Color Bleed, Artifacts, and Fringing. Others simply use the preset settings. Note: RF preset is just composite with field merging disabled, so it emulates the oscillating artifacts composite output has (Go [http://www.chrismcovell.com/gotRGB/screenshots.html here] and see the 3rd image on the right for an example of this).
Line 44: Line 44:
 
Among the presets, there are Composite and S-video versions. Composite has all the fringing artifacts that oscillate every other frame, resulting in a slightly flickery image, while S-video simply has color bleed and blur. This shader lacks the sharpness filter that Blargg's NTSC filter has, so some may perceive it as blurrier, but it also lacks the ringing artifacts caused by a sharpening filter.
 
Among the presets, there are Composite and S-video versions. Composite has all the fringing artifacts that oscillate every other frame, resulting in a slightly flickery image, while S-video simply has color bleed and blur. This shader lacks the sharpness filter that Blargg's NTSC filter has, so some may perceive it as blurrier, but it also lacks the ringing artifacts caused by a sharpening filter.
  
There isn't much tweaking you can do besides changing gamma since the effect is quite complex and difficult to understand. Increasing the horizontal scale of the output of the shader from 4x to 6x will decrease the intensity of the effects (which also increases sharpness). It does not have an RGB preset, though that's covered by another shader that emulates signal bandwidth.
+
There isn't much tweaking you can do besides changing gamma, since the effect is quite complex and difficult to understand. Increasing the horizontal scale of the output of the shader from 4x to 6x will decrease the intensity of the effects (which also increases sharpness). It does not have an RGB preset, though that's covered by another shader that emulates signal bandwidth.
  
 
===GTU===
 
===GTU===
Line 54: Line 54:
 
===tvout-tweaks===
 
===tvout-tweaks===
  
'''tvout-tweaks''' is a shader<ref>https://github.com/libretro/common-shaders/blob/master/crt/shaders/tvout-tweaks.cg</ref> made by aliaspider, based off GTU, intended for processing emulator images for output to a CRT TV connected to PC via VGA-to-RGB adapter. This shader uses code from the GTU CRT shader to provide emulated signal bandwidth blur, as well as TV color level conversion. Works with any resolution without issues, lower signal resolutions result in a blur that blends higher input resolutions, allowing dithering to be blended and SNES hi-res translucency to work.
+
'''tvout-tweaks''' is a shader<ref>https://github.com/libretro/common-shaders/blob/master/crt/shaders/tvout-tweaks.cg</ref> made by aliaspider, based off GTU, intended for processing emulator images for output to a CRT TV connected to PC via VGA-to-RGB adapter. This shader uses code from the GTU CRT shader to provide emulated signal bandwidth blur, as well as TV color level conversion. This shader is equivalent to the Blargg's NTSC filter RGB preset when the signal resolution is set to a high level and TV color levels are enabled. Works with any resolution without issues, lower signal resolutions result in blur that blends higher input resolutions, allowing dithering to be blended and SNES hi res translucency to work.
  
 
===GTU-Famicom===
 
===GTU-Famicom===
  
'''GTU-Famicom''' is a variant<ref>https://github.com/libretro/common-shaders/tree/master/crt/shaders/GTU-famicom</ref> of the GTU CRT shader that emulates the NTSC NES/Famicom PPU. It requires the "raw" palette option in Nestopia, Mesen and FCEUmm [[libretro]] cores, which outputs<ref name="nestopia_raw">https://github.com/rdanbrook/nestopia/commit/9d58851a22eb3baeee7b4fe28ae8ffaac7eaa599</ref> chroma, level, and emphasis as red, blue, and green color channels. GTU-Famicom takes that output and processes it as an NTSC signal, which the shader decodes into RGB colors for display. The shader also emulates the full effects of RF/composite NTSC video signals, complete with artifacts, fringing, and color bleed, and optionally RF signal noise. Like with the GTU shader, the various signal resolution parameters can be tweaked so it can be made sharper, or made to have less color bleed by boosting chroma resolution.
+
'''GTU-Famicom''' is a variant<ref>https://github.com/libretro/common-shaders/tree/master/crt/shaders/GTU-famicom</ref> of the GTU CRT shader that emulates the NTSC NES/Famicom PPU. It requires the "raw" palette option in Nestopia and FCEUmm [[libretro]] cores, which outputs<ref name="nestopia_raw">https://github.com/rdanbrook/nestopia/commit/9d58851a22eb3baeee7b4fe28ae8ffaac7eaa599</ref> chroma, level, and emphasis as red, blue, and green color channels. GTU-Famicom takes that output and processes it as an NTSC signal, which the shader decodes into RGB colors for display. The shader also emulates the full effects of RF/composite NTSC video signals, complete with artifacts, fringing, and color bleed, and optionally RF signal noise. Like with the GTU shader, the various signal resolution paramaters can be tweaked so it can be made sharper, or made to have less color bleed by boosting chroma resolution.
  
 
As with GTU, the GTU-Famicom shader is multipass so the Famicom NTSC emulation passes can be decoupled from the CRT scanline emulation pass and be used with other CRT shaders or by itself.
 
As with GTU, the GTU-Famicom shader is multipass so the Famicom NTSC emulation passes can be decoupled from the CRT scanline emulation pass and be used with other CRT shaders or by itself.
 
===NTSC-CRT by LMP88959 (EMMIR)===
 
 
'''NTSC-CRT by LMP88959 (EMMIR)''' is an NTSC emulator<ref>https://github.com/LMP88959/NTSC-CRT</ref> which encodes RGB images and/or "raw" NES palette indices into an NTSC signal and decodes the signal in a manner similar to an analog television.<br />
 
This makes it so that it '''can be adapted to suit almost any system''' including systems like the NES, PS1, N64, SEGA systems, Apple II, etc.
 
 
NTSC-CRT can emulate both progressive and interlaced composite video complete with vertical sync, horizontal sync, and color burst detection, so noise in the signal can realistically effect image warping/scrolling/quality.<br />
 
It accurately reproduces '''''color artifacting''''', '''''chroma bleed''''', '''''phosphor trails''''', '''''dot crawl''''', and more.<br />
 
 
NTSC-CRT has controls for noise, hue, saturation, brightness, contrast, artifact color phase, black point, and white point.
 
 
Go [https://github.com/LMP88959/NTSC-CRT/blob/main/README.md here] to see images of example output along with some videos.
 
  
 
==Gallery==
 
==Gallery==
Line 82: Line 70:
 
S-video.png|S-Video
 
S-video.png|S-Video
 
Rgb.png|RGB
 
Rgb.png|RGB
</gallery>
 
 
===NTSC-CRT by LMP88959 (EMMIR)===
 
 
<gallery position="center" captionalign="center">
 
NESLMP88959.png|NES Decoding
 
cbarsLMP88959.png|SMPTE Color bars
 
Apple2LMP88959.png|Apple II Frogger (Left=Input, Right=Output)
 
 
</gallery>
 
</gallery>
  
 
==Emulators==
 
==Emulators==
  
The following emulators have blargg's NTSC filter or NTSC-CRT by LMP88959 (EMMIR) built-in;<ref>[https://github.com/LMP88959/NTSC-CRT#emulators NTSC-CRT supported emulators]</ref>
+
The following emulators have blargg's NTSC filter built-in
  
{| class="wikitable" style="text-align:center;"
+
{| class="wikitable"
! scope="col"|Emulator
+
! scope="col" style="text-align: center;"|Emulator
! scope="col"|System
+
! scope="col" style="text-align: center;"|System
! scope="col"|Notes
+
! scope="col" style="text-align: center;"|Notes
 
|-
 
|-
|[[Nestopia]]
+
| style="text-align: center;"|[[Nestopia]]
|[[Nintendo Entertainment System emulators|NES]]
+
| style="text-align: center;"|[[Nintendo Entertainment System|NES]]
|Win32 version has sliders.
+
| style="text-align: center;"|Win32 version has sliders.
 
|-
 
|-
|[[puNES]]
+
| style="text-align: center;"|[[puNES]]
|[[Nintendo Entertainment System emulators|NES]]
+
| style="text-align: center;"|[[Nintendo Entertainment System|NES]]
|
+
| style="text-align: center;"|
 
|-
 
|-
|[[Mesen]]
+
| style="text-align: center;"|[[ZSNES]]
|[[Nintendo Entertainment System emulators|NES]]
+
| style="text-align: center;"|[[Super Nintendo Entertainment System|SNES]]
|
+
| style="text-align: center;"|
 
|-
 
|-
|[https://github.com/L-Spiro/BeesNES BeesNES]
+
| style="text-align: center;"|[[Snes9x]]
|[[Nintendo Entertainment System emulators|NES]]
+
| style="text-align: center;"|[[Super Nintendo Entertainment System|SNES]]
|
+
| style="text-align: center;"|
 
|-
 
|-
|[[ZSNES]]
+
| style="text-align: center;"|[[Genesis Plus GX]]
|[[Super Nintendo emulators|SNES]]
+
| style="text-align: center;"|Sega consoles
|
+
| style="text-align: center;"|Presets only.
 
|-
 
|-
|[[Snes9x]]
+
| style="text-align: center;"|[[Kega Fusion]]
|[[Super Nintendo emulators|SNES]]
+
| style="text-align: center;"|Sega consoles
|
+
| style="text-align: center;"|
|-
 
|[[Genesis Plus GX]]
 
|Sega consoles
 
|Presets only.
 
|-
 
|[[Kega Fusion]]
 
|Sega consoles
 
|
 
 
|}
 
|}
 
==See also==
 
*[[Shader_Presets|Shader Presets]]
 
:*[[CRT_shaders|CRT shaders]]
 
:*[[Shaders_and_filters|Shaders and filters]]
 
  
 
==References==
 
==References==

Please note that all contributions to Emulation General Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Emulation General Wiki:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)

Template used on this page: