I got it working. Finally!
Of course there's LOTS still to do, but I now have a recognisable - even good - picture! As I noted after this set of experiments, I had tracked down the fault in my display to "something in the WAV file handling". Indeed, that's what it turned out to be. I had originally grabbed some sample WAV playback code from online, and it seemed to work OK. Only there was a hidden flaw deep inside it. The playback mechanism consisted of an interrupt running at 44.1kHz which processed and played samples from a small (64 bytes) buffer. When that buffer was used-up, it switched to a secondary buffer and marked the first one as "empty". A second interrupt looked for empty buffers, and when it found one, proceeded to read 64 bytes from the WAV file on the SD card, and hopefully those two interrupts marched in tandem with each other and everything was happy. Only what I didn't know was that the buffer-filling interrupt did nasty things. Firstly, it switched ALL interrupts off, and then disabled its own interrupt, and then enabled all interrupts. Since my whole system has interrupts happening everywhere, this pretty much screwed with the timing of everything!
The solution was to junk that 2nd interrupt (buffer filling) routine, and move it to the main loop. I had to increase the buffer size a bit to make things happier - for, reading from a SD file at 44.1kHz rate is really pushing things. It's possible, as shown in the video, but I'm inclined to resample the files to something like 22kHz which will really ease the timing pressures on the whole system.
youtu.be/26OWSCWFSZg
The video you see is an episode of Doctor Who - and despite my finger-speed-setting being a bit wobbly, the picture is really pretty good. There's a strange thing where some videos come out "negative" and some "positive" - undoubtedly a sign-error in my code somewhere. That's why the "scanline blank" in this code is white. I still have to do clamping and gamma correction, but you have to admit even without gamma correction this picture doesn't look too shabby!
So this is now a complete standalone system - an Arduino reading NBTV files in real-time from a SD card and playing to a Nipkow disk with the LEDs driven by PWM. It all... actually... hangs together! Pretty stoked, as I worked quite hard to get to this point. Now I need to clean up, refine, and make it solid.
But, yeah... celebrations!