I'm posting this because it may help others.
A while back I posted here about issues I was having with R-Type - input was sometimes delayed, and sometimes the input would continue being read after I'd released the controls. I got great support on this forum. I ended up running a load of tests and it seemed to go away after a while.
What I only realised today was the issue was caused by HyperSpin. You see, when I had my R-Type issue, I had just starting building my cab and it was my first test with the software. Since then, I've not been using HyperSpin as the cab has been in pieces - I've ran all tests with MAME from the CMD line. Now I'm nearing the end of the project, I'm finalising the software, and low and behold, launching MAME in HyperSpin is causing input issues on every game I try.
So I done the obvious - I turned off HyperLaunch, and launched MAME directly from HyperSpin. I turned off all visual effects, except videos, in HyperSpin. I turned off Input Delay in HyperSpin (which is needed to help choose the game, else the wheel goes too fast). None of these things helped.
To be clear here, the problem I was having was not slow-down in the emulator, I was running 100% all the time. It was input problems; buttons / joysticks not being registered, or activating too late, or acting like they'd been pressed-down longer than they had been. I tried a variety of old / easy to emulate games like Bubble Bobble, DKong, Frogger, and this affected all of them.
If HyperSpin was running in the background, I had this same issue when running MAME from the CMD line. However, killing HyperSpin in Task Manager resolved the issue every single time. The difference in control was immediately obvious.
The solution I have, which may help others if they encounter it, is to simply turn on multithreading in the MAME config. Issue was resolved immediately. I find this odd as I never dropped below 100% emulation speed, there was no slow down in the game itself, just in reading the inputs (both through an USB IPAC and a USB keyboard). I'm running a reasonable X4 Athlon processor, it's only a few years old so more than enough for emulating the games I am interested in.
I understand multithreading may cause synch issues when emulating? I don't believe you can specify which core to run a process on until after it is running (via Task Manager) so unless I can tell HyperSpin or MAME to use exclusively another core, I'll stick with multithreading as the solution.
Anyway, I thought I'd post this, as it may help others.
Thanks