repeat function glitches?

13 views
Skip to first unread message

Garrett Seltz

unread,
Apr 7, 2026, 2:45:12 PM (6 days ago) Apr 7
to QuadStick
https://docs.google.com/spreadsheets/d/1sXJwAVfg2q_3sY5QizxJ4SCDAYQsGwB8KrM5SdY0Brg/edit?usp=sharing

I've been having some weird issues. I'm playing N64 Tony Hawk Pro Skater on a PC Emulator. One of the moves, which is extremely important in the game, requires you to hold kb_end(preloading), double tap kb_up_arrow, then release kb_end. So the easiest solution I found was to put kb_up_arrow on repeat and kb_end on the same mp_center_sip input. All seemed to be working fine for a couple days and then everything started going haywire. While holding mp_center_sip, anytime I would move the joystick left right up or down it would just automatically release mp_center_sip. I even verified it on ratatype olding the input and moving the joystick it would automatically release the input. If you hold it without moving the joystick everything works the way it should. I had a data problem with my original spreadsheet due to Copy/Pasting cells around while editing which I thought was the problem, but I created a completely new spreadsheet for the game. This time it worked fine for about 30 seconds and now it's doing the same thing. Really frustrating. It's obviously not the emulator because I can repeat it on ratatype. I tried it on a different input thinking maybe there is a leak In one of the hoses or fittings.
Any help would be greatly appreciated!
Thank you

Fred Davison

unread,
Apr 7, 2026, 4:47:32 PM (6 days ago) Apr 7
to Garrett Seltz, QuadStick
TL/DR: 

The preference settings that could be added to this mode sheet to hopefully clean this up are:

joystick_dead_zone_shape and joystick_deflection_minimum.  Set the shape to 0 for square, and the minimum deflection to something like 10.



There are several different things going on:

Two active inputs are conflicting over control for the same output:

image.png


image.png

If the up arrow is activated by the up joystick, then it cannot also repeatedly turn off and on.  If it is in the middle of a repeat cycle, then the "normal" up row triggers, that will cancel any repeat timer.  Two different output functions cannot simultaneously control the same output and have predictable results.  Normally this is not a problem with two different sip/puff inputs because only one sip/puff can be active at a time.  The joystick or lip input can be active at the same time as a sip/puff and cause a conflict.

Arrow keys are also paired with their opposite for some functions.  Up and down are a pair, and left and right are a pair.   Simultaneously activating up and down at the same time, which could happen with this setup, could produce undefined results.

If you are not using a square dead-zone with the joystick, it will be nearly impossible to only active one arrow key.  You will always get two keys.  It the joystick is moved to the left or right, an up or down arrow key will also be pressed.  The joystick might be 50% to the left or right, but it will also be 0.001% up or down and anything greater than 0 is the same as fully on 100%.

Circular dead-zone works fine for a mouse pointer, but not when driving discrete on/off keys or buttons.


The quadstick reports up to six regular keys being pressed at the same time, plus up to eight modifier keys, like control, shift, alt, widows, ect.  It only sends a report when something changes.  The operating system converts those reports into key-down events and key-up events.  Then the emulator will listen for those events and convert them into something the game can work with.  There are layers after layers of code that are interacting to produce the final result for a game program written when memory was purchased in kilobits and is far from its native environment.  Who knows how it will react.




Reply all
Reply to author
Forward
0 new messages