Open voidderef opened 2 years ago
Since this seems to only affect 1st and 2nd which already have at least one dedicated feature switch to fix some stuff, this could be another one enabling IO polling on every call instead of only every 4th call: https://github.com/pumpitupdev/pumptools/blob/d8a745d6e317acb675c5620bf0a99a7ca126aede/src/main/hook/patch/piuio.c#L186
Also noting that the idea of maybe rolling this back and exposing the sensor mask is in conflict with any piuio implementation that is agnostic to sensor cycling which is a pure piuio hardware thing. For example, lxio implements that on firmware level and all sensor data is retrieved with a single usb call.
Another note: To enhance debugging, we should add some metrics to measure the poll rate. Have a feature switch to output that to the console every X seconds.
Bug report
Description
The current piuio patch module is designed to abstract the typical, and i thought only, polling pattern of modern pump games which is 8 usb control calls to execute a full IO refresh cycle. To simplify the pumptools piuio API and not having to bother with this in API implementations that do not support sensor cycling, this is not exposed and abstracted in patch/piuio.
However, this is apparently not compatible with the MK3 linux ports. These seem to implement different IO polling patterns which do not following the, so for, known pattern the entire patch/piuio implementation relies on.
The result is weird IO behavior to unresponsiveness on some, but not all MK3 games.
Apparently OBG and newer are showing expected sensor cycling 0-3.
1st and 2nd however show different polling patterns.
Pattern 1
Pattern 2
Pattern 3
Apparently title screen
Pattern 4
Pattern 5
Pattern 6
Affected games and versions
MK3 linux ports
Pumptools versions tested
Pumptools build Jun 28 2022 00:03:23 gitrev d8a745d
OS and hardware specs