D-pad Construction

There are a lot of factors that go into making a good fighting game D-pad and it's not surprising that many fail in some way. It is more like a tuning an instrument than hitting a checklist of features.

USB Poll Rates

USB operates via polling, which means the USB host (your computer) asks the device what the current state is during fixed intervals. The desired polling rate is requested by the device in millisecond increments, and can go down to 1, meaning 1000 hz polling rate.

The poll rate for the Xbox 360 gamepad is 8 ms, which has been reduced to 4 ms on the Xbox One and Series X|S. Devices that use the Xbox Controller driver (and the majority of them with xinput mode do) copy the poll rate as well for maximum compatibility, but the USB driver seems to still work if devices request it to be higher. Older devices with xinput compatibility may still be using an 8 ms poll rate.

The poll rate does not divide evenly into the frame time. If you were to press a button exactly every 1/60th of a second (16.666 ms) it can only be represented as 4 or 5 USB frames, which is 16 or 20 ms. This means that it is possible for a game to miss a 16 ms input if it falls between the sampling times.

In order to have reliable inputs with a 4 ms poll rate, you must take at least 20 ms between presses, which means in-game you have a 24% chance of an input being two frames. With a 1 ms poll rate you must take 17 ms between presses and you then have a 6% chance of an input being two game frames. In practice this affects things like missed diagonals and cardinal directions when going too fast. A higher poll rate will give you more reliable inputs.

The polling rate introduces unpredictable latency up to that poll rate. If you pressed a button in the beginning of a 4 ms frame you have 4 ms of lag, but if you pressed it at the end, you have 0 ms lag. So a controller will will average to half of this poll rate, and a 1 ms poll rate meaning 0.5 ms latency.

There may be additional latency on top of this poll rate, the controller also operates at a fixed frequency. Many USB devices (like Pro Micros) use a separate USB controller chip which has a small buffer on it. This means it returns ready data immediately when the USB host asks for it. But this also means there is additional lag based on the update rate of the controller. If it operates at 1000 hz the exact same logic applies, with it adding an extra 0.5 ms average latency.

For a while I thought polling rate might have something to do with frame perfect inputs (e.g. Tekken Electrics, SF links, or just timing an input via spacing) but it turns out the math all cancels out. If you are 5 ms off you will have a 30% chance of dropping no matter the polling rate.

Device Recommendations
Back to Home

2024 MotionInputs.com