Thanks for linking Calamity's post, which answers a question I asked recently (either having skimmed Calamity's post, or having forgotten what was written):
This suggests a question: Can you actually get accurate behavior from the game if you don't lock the inputs for the whole duration of the frame? Seems to me that at some point most any arcade game is going to lock the internal game state, and either buffer or ignore continued inputs. There is not a game state update happening every scanline - not even close!On the other hand, we have the input lag issue. Since long I have read that any sort of v-sync causes input lag to some extent. Because of this, it is widely recommended to disable v-sync or triplebuffering as a way to reduce input lag. However, once you get used to properly v-synced video, you simply can't go back and live with the artifacts, it just kills the illusion of emulation altogether.
So I tried to understand why v-sync shoud introduce input lag at all. And specially, why should it add more lag than using -throttle alone ???. After all, they're basically just two different implementations of a wait loop to keep the frame rate in place. Most articles I've read assume the modern 3D-game scenario, where frame rates are not constant. In emulation, the frame rate is a known value.
To keep short, I found what could be the possible cause of input lag related to v-sync in MAME. Basically, MAME is locked to input messages from the OS for the period of time which takes a new frame to be drawn to the screen. This is because the draw operation is called from the message loop where the input messages are supposed to be processed too. Obviously, if v-sync is enabled, the draw operation won't return until the vblank happens, consuming most of the time in the frame and keeping the message loop locked.