I re-did the measurements using a high-quality video digitizer card (
Scion VG-5). This gave me excellent digitizations of the waveforms, without any annoying filtering. Here is an example at full resolution of colors $0F, $30, $06, $16, $0F, $26, $36, $30 (the square waves are at the 3.5 MHz colorburst frequency):
All my raw data in a WAVE file and my measurements of it are available below. I am still working on the emphasis measurements and effect on the TV image.
nes_ntsc_levels.zip
These are the relevant results so far, the luma amplitudes and chroma sine wave amplitudes. These are close to what I made before, but I correct an error on my part of using the chroma square wave amplitude directly without adjusting by 1.27 (to get the amplitude of the fundamental sine wave). I updated the previous pictures to reflect this.
See note at end of message
ntsc_emu5.zip (updated)
Code:
/* Luma amplitudes */
float luma [3] [4] = {
0.39, 0.67, 1.00, 1.00, /* x0 */
0.14, 0.34, 0.66, 0.86, /* x1-xC */
-0.12,0.00, 0.31, 0.72 /* xD */
};
/* Chroma sine wave amplitudes */
float chroma [4] = { 0.26, 0.33, 0.34, 0.14 };
Quote:
Just the levels, please, no RGB.
Agreed all the way. The RGB depends on the TV's decoder.
Quote:
Also, did you use signal clamping for that screenshot, or did the 3x colors turn out that way by themselves? Or do the 3x colors really have a different amplitude than the rest?
The NES apparently clamps its NTSC signal on the RCA output. I fed the video card another video signal with pure white and it was about 4% higher than the highest NES levels, so the video digitizer itself isn't clamping either.
Quote:
Here, I made a .PAL file from Blargg's screenshot. Note that this screenshot is at a hue knob setting of minus 15 or so degrees. If you compare this with a "video-essentials" calibrated TV (hue knob at +/- zero degrees, no hue change), it'll be a little bit more greenish.
Maybe I should remove that, so people don't prematurely go using it as a "correct" palette (espcially since it was wrong, due to the sine/square wave error mentioned above). People, all that's reliable here are the raw NTSC video waveform values. The images above are with my (somewhat crappy) NTSC emulator. That will be the next thing that gets polished up.
EDIT: Re-adjusted chroma amplitudes back to same values as square waves (i.e. no 1.27 factor anymore), as per later discussion.