Many emulators have an NTSC filter that reproduces how the NES' generated signal looks very well. FCEUX, Nestopia, Nintendulator DX, Bizhawk, PuNES, Mesen, etc. it's very commonly available.
Blargg wrote a version of it a while ago that has more or less become the reference implementation for it. A lot of the emulators that have it are directly using this library:
http://slack.net/~ant/libs/ntsc.htmlBisqwit wrote another version that was contributed to the wiki. Blargg's version was written for efficiency, but Bisqwit's is instead written to be a simple expression of the process that's easier to follow:
http://wiki.nesdev.com/w/index.php/NTSC_video#Emulating_in_C.2B.2B_codePAL signal generation, on the other hand, is not as widely implemented or documented in a very palatable form yet. There was a good thread here a while back:
viewtopic.php?f=3&t=12788Anyhow, generating that signal is the first step of the process, and probably the most important one that has the greatest and most consistent impact on the image. The second step is how that signal appears on a television, which unfortunately varies a great deal from TV to TV. It's hard to give much reasonable advice about this.
CRTs which display interlaced alternating lines (480i at 30hz) when given an NES signal (240p at 60hz) end up skipping every second line, but having double brightness and double the framerate. This is sometimes simulated with an option that gets called "scanlines", but it's kind of impossible to simulate the appropriate brightness, and the actual spacing of the gap has hugely variable; some TVs have significant vertical blurring that can close that gap. (When simulating scanlines, it also becomes much more difficult to scale the image cleanly without introducing noticeable aliasing from the scanlines.)
FrankenGraphics wrote:
btw is there really motion blur? that's not something i've noticed.
The brightness of the excited phosphor on the screen does not instantaneously change. There's an exponential curve where it falls off after being hit by the beam. This can create a fade/ghosting effect. Again very hard to simulate on anything but a CRT, mostly because it's very subtle and involves a very high dynamic range of contrast. It's hard to see without small bright objects moving across a mostly black CRT screen in a dark room, but it is real. Old thread about it here:
https://forums.nesdev.com/viewtopic.php?f=3&t=10171Other defects of the CRT image that you might simulate include things like: horizontal blur (filtering/bandwidth issues), variable colour controls (hue, tint, brightness, contrast), poorly adjusted deflection (e.g.
barrel distortion), the 15kHz whine that these TVs produce, various chromatic aberrations, vertical/horizontal hold failures, other common modes of malfunction, etc. but this is all up to taste, mostly can't really be simulated on an LCD very faithfully, and there's no definitive version of how this should look.
Most "CRT" simulations end up really over-emphasizing some narrow aspect of a real CRT effect and ignoring a lot of others.
Edit: as usual here I'm a little bit redundant with some above posts that happened while I was typing.