Talk:NTSC video

From Nesdev wiki
Jump to: navigation, search

The part of the PPU that generates the video signal (immediately to the right of the NMI and CLK pins) appears to consist of a very long resistor between VCC and GND with taps at various points, and one of them (closest to VCC) is a switchable pulldown to GND (no doubt for color emphasis). The logic itself can select 12 different voltage levels (00/10/20/30, 0D/1D/2D/3D, synch, colorburst L/H, and GND), and they appear to correspond to 10 distinct voltage levels - one of the duplicates is at the highest voltage (likely 20/30), and the other one is the 3rd-lowest [non-GND] voltage (not sure which one). --Quietust 17:59, 28 September 2011 (UTC)

  • With the help of ChipSim, I've traced down exactly what the 12 voltage levels correspond to - Synch (GND), Colorburst L, Color 0D, Color xE/xF and Color 1D, Colorburst H, Color 2D, Color 00, Color 10, color 3D, Color 20 and Color 30 ("and" == two signals which select the same actual voltage). --Quietust 11:17, 29 October 2012 (MDT)

Absolute Video Signal Timing[edit]

Some tests with Visual2C02 managed to confirm all of the contents of the Scanline Timing table, plus one more interesting bit of information: the offset. Specifically, the "active" region begins at cycle 4, which is when the PPU is just finishing the attribute byte fetch for the 3rd tile in the scanline (the first 2 are fetched at the end of the previous scanline). --Quietust 08:50, 1 November 2012 (MDT)

But during which cycles is sync output? We need that too to align the NES picture center relative to the NTSC standard picture center (see Overscan). --Tepples 09:41, 1 November 2012 (MDT)
It's probably been mentioned elsewhere, but for completeness: cycles 280 through 304, inclusive, which happens to correspond to when the VRAM address gets reloaded during the prerender scanline. --Quietust (talk) 07:24, 14 February 2013 (MST)

C++ code?[edit]

Is this really C++ code? Can we call it what it is, if it's not?

auto InColorPhase = [=](int color) { return (color + phase) % 12 < 6; }; // Inline function

-- Rainwarrior (talk) 07:26, 13 August 2014 (MDT)

It appears to be C++11 code. Not all C++ compilers understand C++11 yet. --Tepples (talk) 19:42, 13 August 2014 (MDT)
Am I just out of touch? Is C++11 the accepted standard now? I didn't know it was safe to call it "C++" now, but maybe it is? :S - Rainwarrior (talk) 21:08, 13 August 2014 (MDT)
Yes, it's the standard. The draft was commonly referred to as "C++0x" because they aimed to get it accepted by the end of 2009. It became C++11 when the changes were officially added to ISO C++ in 2011. --Tepples (talk) 06:56, 14 August 2014 (MDT)
It was an official standard in 2011, but that's different than it being the primary flavour of C++, which is really what I meant. After looking around, I've noted that as usual Microsoft has done a pick-and-choose with which features to implement, but the C++11 features they did implement have been enabled by default since VS2010. GCC on the other hand much more fully supports it, but requires a compiler switch to enable. Clang is in the same situation as GCC. Intel's compiler looks like partial support, off by default. I imagine other compilers are in similar states. As such, I'd say we're in a period of transition, but C++11 will surely become the default before long. - Rainwarrior (talk) 11:56, 14 August 2014 (MDT)