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.
On systems where pipewire is installed but the build is configured with
--disable-pipewire, HAVE_PIPEWIRE_STABLE is set to 1 while HAVE_PIPEWIRE
is 0. Checking only HAVE_PIPEWIRE_STABLE leads to a build failure.
```
LD retroarch
/usr/lib/gcc/x86_64-pc-linux-gnu/15/../../../../x86_64-pc-linux-gnu/bin/ld: obj-unix/release/camera/camera_driver.o:(.data.rel+0x0): undefined reference to `camera_pipewire'
collect2: error: ld returned 1 exit status
```
Downstream Bug: https://bugs.gentoo.org/960043
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