Originally posted by: nitro2k01
I've been considering doing something like this myself, but with a slightly different approach to keep the results more controllable. In short, a special ROM that changes the color of the whole screen from black to white when a button is pressed, and then a controller as well as a light sensor connected to an oscilloscope (or other device capable of measuring time between trigger pulses.)
That was my original plan, but I couldn't find a light sensor that would work. Did you ever get to that point? I wonder how much the brightness matters for sensors like the bodnar. I am ending the test when I see the first sign of the new graphics which still might be too dark for it to register. That could mean a 5mS difference between my camera results and an optical sensor.
The point of separating 1 and 2 is isolating one aspect of the measurement as "poll to output time" instead of "input to output time" to make the technical part of the measurement more predictable. You now can now isolate the press to poll time as a random term between 0 and x where x is the time between polls.
Mine is already starting at the poll, but another LED on the button itself was the next step. I think that is only significant for emulators where the hardware poll does not align with the NES game poll. It would be awesome to measure a tetris player to see how much time they have between button press and button poll!
The point of 3 and 4 is again more predictability. 3 and 4 would in practice correspond to the top and bottom of the screen a classical CRT will draw the screen progressively, meaning that you might hit the jackpot and get a <1 ms input to output latency if you press the button at the right time, and look at the top of the screen. The bottom of the screen on the other hand is guaranteed a minimum latency of 16.7 ms. (Assuming 60 Hz and checking the controller once in each VBlank only.)
I am already picking a consistent point on screen, so that shouldn't make a difference other than a constant add or subtract from the final number. The lcd/plasma panel won't be able to draw any sooner simply because the NES/emulator won't have output the video data yet.
I think displaylag.com had more info about how they average top/bottom/middle to account for different drawing routines but I'm not sure that is significant enough to care about.
Yet another issue is the jitter introduced by the timing of the controller polling. Even more ideally you would add yet another data point, an "end of frame" in the emulator, which could be signalled in some good way such as perhaps outputting it on one of the pins on an LPT port, or recording the a high precision timestamp, assuming that this could be correlated well with the rest of the rig, again to isolate another individual step in the process.
I don't think LPT port is low latency enough, there are just too many layers of software and hardware in the way. Not sure of anything else that would be faster without some extreme hardware tho. Are there any USB 3.0 keyboards to use the num lock light?