>> Sunday, September 18, 2011
These devices don't send simple "left/right/up/down" information but they encode it as relative cursor movements (3 pixels to the left, etc) which the ROMs translate to absolute cursor positions and the game then has to translate back into directions, occasionally having to reposition the cursor to take account of screen boundaries.
These information packets are sent serially at 1200 baud, which gives a polling rate of at most 1200 / 30 = 40 Hz as each packet is three bytes long. That is already slower than the usual frame rate of 50 or 60 Hz and as real-time processing of this information is expensive cpu-wise it is often polled at the frame rate or a whole divisor thereof which adds to the complexity and unresponsiveness. There are ways around this but they are complicated and probably used seldomly (it requires driver call interception at the system level).