Looks as though there was another challenge. In playing thru a few games it was obvious that some (MS PACMAN for example) were less then pleased. Not only did the reaction window close a bit, there was a redundancy check. For MS PAC’ I had found a way to get a few 100 more nanoseconds out of the code so the shorter window was do-able but had to do a bit of redesign for the redundant check. This game only used the 1 pulse as 3 button was enough for the game but after 75us a second pulse was showing up. The code written thought that was the second pulse for 6 button mode. The difference was that the pulse was much further apart. There was no reaction time left to measure the gap, so I had written a one time check during init. This code will check for 3 or 6 button modes and also if there is a redundant poll. No games so far used redundancy with 6 button mode but the code will check for it either way. Yet once more when playing Tetris, we had an even shorter window for the reaction time pulse. This one was so short the AVR could not even react if it was hand coded. So forget about calculating it! So the next best thing was to react prematurely.
When sega drops the pulse ~~~~~|_______ We need to set the other wires to show the states. Well why not do this a head of time.
>> | set it here
To do that it will take some guessing. The Sega pulses every 16.6 ms, so aiming for 14 or so should be safe. Though best to experiment a bit. 12 seemed to be on the edge and 16 would posibly get in the way of we had some redundancy checks. 13 was still a bit to short so 14 is the elected time and works pretty well. After a handful of games, things are now acting quite nice.