- A touch pointer controlling the mouse/lightgun/pointer will ignore hitboxes if it slides into any.
- A touch pointer pressing a button will not control the mouse/lightgun/pointer if it slides out of the hitbox.
When loading and saving states taken during a replay, their contents
should be compared with the current replay.
- If in playback mode, states from past the end of the current replay
should be disallowed, as should states from an alternate timeline of
the current replay (inconsistent input history)
- This is because in playback mode, RA replays are read-only
- If in recording mode, states from the future or from another
timeline should overwrite the current replay's data with a warning
- In either playback or recording, loads of states from the past that
have a consistent series of inputs (same timeline) should be loaded
and the replay should be rewound (and truncated in case of recording)
This behavior is as specified in
https://tasvideos.org/LawsOfTAS/OnSavestates
The existing code only implemented some of these checks.
This can optionally encode and compress checkpoints. For now, only
raw encoding is supported, but e.g. delta encoding, block-based
encoding, or deduplicated encoding could be supported in the future.
Three compression schemes are included (selected automatically based
on compilation flags): ZSTD, ZLIB, or NONE.
All three schemes are supported for decompression if available.
For compression, ZSTD is preferred over ZLIB is preferred over NONE.
- rewinding past the start clobbers part of the header
- during recording & rewind, should not push input events
- during recording or playback, getting to the end of the rewind
buffer should not halt the movie
Some enhancement possibilities found while investigating another
issue - shift keys were swapped (especially noticeable in menu),
enter may be mapped to DPAD_CENTER by the system, but unfortunately
the 102. key can not be mapped separately.
Linux terminal settings were lost after restarting via menu.
This was caused by udev_input_init calling linux_terminal_disable_input multiple times.
New code follows the restore pattern of linuxraw_input.c
Add multi-mouse support for X11, by using XInput2 extensions. Only
master pointers are considered as mice.
New behavior put behind HAVE_XI2 and configure script extended with
necessary detection.