Button Delay


I am working on my first self made custom arcade stick. (Sanwa parts, custom case, no halfhearted stuff. :P)

I am planning to make my own hardware and don’t use a pad mod.
It should connect to my PC as an HID USB device and later on i might add console support.

So I found a little project that uses a standard Atmel microcontroller for the usb protocol.
The schematic is able to use 8 analog and 28 digital inputs and says the update time for the digital part is 60ms.

I now wonder what is the average input delay of a good arcade stick?

I could design my own circuit and own firmware, no problem that, but if I am able to save time I would like to do so. :wink:


You can save your self time and effort buy using a pre-made PCB like a Cthulhu (not a pad mod)
On USB it runs as a HID USB device on the PC

Not saying if you not the skills and know how not to make your own PCB and firmware

“I now wonder what is the average input delay of a good arcade stick?”

It depends on the system, and what you mean by ‘input of the stick’ - I’d expect less than 2ms for most. 60 ms would be too much time (that’s like a 3-4 frame delay.) However it also sounds like a long time for an electronic component, are you sure it’s not us?

You’re likely misreading or misunderstanding your datasheet – it likely says µs (or us), not ms – that’s for microseconds. If it said milliseconds on the project’s firmware/schematic info, it’s pretty trash (and, quite frankly, I don’t know how they managed to make something that bad with any AVR). Maybe it said 60Hz? Because that’s how frequently it should be polling the buttons (at least), since that’s the input timing for most games. A multi-frame delay would be unacceptable, and a frame at 60Hz is 0.016 seconds.

You’re really over-engineering this, though (not that there’s anything wrong with that, as long as you understood you’re reinventing a wheel that’s been invented many times before, and honed pretty sharply at that). If you want to go from-scratch for the sake of a challenge/project, good for you… but just know that it’s a pretty big project to make something halfway as effective as a DualStrike or Cthulhu, even for someone with a fair amount of experience using USB libraries for microcontrollers. Which AVR are you looking at using, one with hardware USB or were you going with a software emulated USB approach? If you’re going software, you may want to look at the DualStrike’s source code, as it could probably be ported to whatever chip you were planning on using.

Well it was hard to find avr usb joystick projects that just fit.
I found the Dual Strike project by myself yesterday.

The Mjoy project I discoverd first uses an atmega8 or 16 with a key matrix for 28-64 digital inputs and 8 analog inputs.
Actually it is way too much for what I need.

I might go for the Dual Strike approach or another project that I found which is just minimal hardware.
Just one button per pin and thats it.

I don’t want to buy a premade PCB, because it is too expensive in my opinion.

I will just wire an Atmega8 on my hole matrix board with minimal USB hardware, that should work. (Software USB)
For the firmware I will just tinker around with Dual Strike and the other project. (hardware was nearly the same)

I don’t want to reinvent the wheel, but I would like to save money and have a clean solution. (no pad hack)

Just FYI, if you ever want to do a Xbox 360 compatibility in a stick the only solutions are pad-hacks