Consider this a bug report, as well as a proposed fix.
The current turbo implementation is buggy, or at least confusing. Holding down a turbo combo causes the state field on the turbo object to cycle with each poll, which causes the rapidly firing button to become locked on seemingly at random each time you press the combo. The turbo button is also only marked as pressed for a single poll, which causes problems with some games.
This PR addresses both issues. Pressing and holding the combo in the press field of a turbo object will cause the combo in the get field to fire rapidly as before, and releasing it will always stop the firing. The duty cycle of the button presses has also been increased to 50%, which solves the presses not being registered in some games. If the locking behavior of the original implementation was intentional, I'd at least like this behavior to be toggleable, just because I prefer it like this.
Hmm, I commited a clangd formatting by accident and it changed all the indenting, whoops. Feel free to ignore 214224b, all it does is change macro names.
Hmm, I commited a clangd formatting by accident and it changed all the indenting, whoops. Feel free to ignore 214224b, all it does is change macro names.
Consider this a bug report, as well as a proposed fix.
The current turbo implementation is buggy, or at least confusing. Holding down a turbo combo causes the state field on the turbo object to cycle with each poll, which causes the rapidly firing button to become locked on seemingly at random each time you press the combo. The turbo button is also only marked as pressed for a single poll, which causes problems with some games.
This PR addresses both issues. Pressing and holding the combo in the press field of a turbo object will cause the combo in the get field to fire rapidly as before, and releasing it will always stop the firing. The duty cycle of the button presses has also been increased to 50%, which solves the presses not being registered in some games. If the locking behavior of the original implementation was intentional, I'd at least like this behavior to be toggleable, just because I prefer it like this.