Video Output Rate and RGB Range

The standard refresh rate for NTSC is 59.94 fields per second. Each field contains half of the information of a 480 lines image or a full 240 lines image. Two fields are packed into one frame, resulting in a standard framerate of 29.97fps. Any modern console outputs at 59.94Hz, but back in the '90s consoles only took the standard as a rough goal. A CRT TV could display anything that is reasonably close to the standard refresh rate without any problems. Each time a CRT receives a new frame it is drawn, for some consoles a bit faster than the standard, for some a bit slower. LCD TVs aren't so forgiving. They try to sync their display frequency to the input signal, but will only do that for a limited range around the 59.94Hz standard. For retro consoles this means that if the TV cannot synchronize with the output rate of the console either frames are dropped or drawn double the normal duration, which results in slight stutter. Depending on the TV it might also cause screen tearing, which describes the situation where the top and bottom of the screen do not show the same time point of the game.

60.09881387708959 fps

The NTSC SNES for example outputs at roughly 60.10Hz. This doesn't look like a big difference from the 59.94Hz standard, but it can result in a dropped frame every 6.3 seconds. The problem gets worse if you convert a PAL console to output at 60Hz. The most common mod for PAL SNES consoles results in a video output rate of roughly 59.56Hz. This is so far away from the NTSC spec that it causes a doubled frame every 2.6 seconds. Other consoles like the Genesis with an output rate of 59.92Hz are closer to the standard and will most likely not cause stutter on an LCD TV.

Modern Systems

With modern graphics cards you wouldn't expect that these issues still persist. While the output rates for 59.94Hz and 60.00Hz are very close, there are still problems if you connect them to a TV to watch movies at the original 23.976Hz output rate. Intels Core processors just fixed the problem with the current generation (Haswell) and AMD cards have been very close to perfect for many years, but current NVidia cards still can't hit the right output rate. For example the NVidia GeForce 750Ti outputs at 23.972Hz instead of 23.976Hz, which causes a visual stutter roughly every 4 minutes. This doesn't sound too bad, but because of the longer frame duration it is especially noticeable.

RGB Range

HDMI can transport video in different formats. YCbCr is a family of digital color spaces that is often used for DVD and BluRay blayback. The standard to display games over HDMI is by sending a digitial RGB signal. Digital RGB video comes in two styles, Full Range RGB and Limited Range RGB.

Full Range RGB transmits each color as a value between 0 and 255. A value of 0 for all colors is pure black and 255 for all colors (FF in hexadecimal) is pure white. This system is also used in most PC applications and you can also find it in the stylesheets for this website. However many devices will use Limited Range RGB by default. Limited Range RGB transmits each color as a value between 16 and 235. A value of 16 on all three color channels is interpreted as pure black and 235 on all channels is pure white in this case. The whole color range is compressed from 256 steps to 220 steps, making it a little bit coarser. The amount of possible colors is lowered from 16.7 million to 10.6 million in Limited Range RGB mode. This system is very similar to the color range of YCbCr. Most higher end TVs try to detect Limited vs. Full Range automatically, but sometimes choose the wrong one. To fix this there is often a manual setting. Overall both 0-255 and 16-235 should produce the same colors, but Limited Range output will show some banding in gradients. Both YCbCr and RGB can also transmit colors with finer granularity (more bits per pixel), but the benefit on consumer grader TVs is only minor.

Misnterpreting a Full Range signal as Limited Range will result in severe loss of detail in dark and bright areas. All colors that were in the 0-15 or 236-255 value range are now also interpreted as pure black and pure white, instead of shades of each color. Similarly, displaying a 16-235 signal as 0-255 without proper conversion will result in blacks that are only a shade of grey.