This is a slightly reworked version of this submission by Tegron in the hopes of more consistent syncing.
File info
This movie was made on libTAS v1.4.6.
Additional libTAS settings
-
Runtime > Asynchronous events
: checkXEvents at frame beginning
andSDL events at frame beginning
.
Additional instructions
- Pause at frames 2 and 33 for a few seconds so that the clock is guaranteed to disappear at frame 34.
FPS
- Between 4 and 5 most of the time (i.e. it should take from 7 to 9 hours to go through the whole thing).
Total frames
- 105123 (+19 from original movie)
Changes made to the submitted movie
- 32100: 2 blank frames inserted.
- Reason: late menu thread, prevents loading errors.
- 33080: 2 blank frames inserted.
- Reason: late menu thread, prevents loading errors.
- 39738-39822: fishing timings updated (39752, 39788, 39822 instead of 39738, 39783, 39803).
- Reason: adapt to different fishing RNG.
- 39806: 15 blank frames inserted.
- Reason: adapt to different fishing RNG.
- 40198: two extra action presses, no insert.
- Reason: catch the rabbit more consistently.
- 90607-90720: go exactly the other way (180° symmetry), same death timing.
- 114 'Right' inputs changed to 'Left', 69 'Down' inputs changed to 'Up'.
- Reason: adapt to different monster spawn RNG in the third phase of Miss Knives' fight.
Known desyncing factors
General gameplay
- Solution: in libTAS:
Tools > Slow Motion > 12%
(i.e. 7.5 FPS max).
Autosaves
- Solution: in libTAS:
Settings > Runtime> Asynchronous events
: checkXEvents at frame beginning
andSDL events at frame beginning
. - Side effect: max FPS drop to around 5.
Late 'retry' menu threads after intentional deaths
- Solution: insert two blank frames at least a dozen frames prior to the menuing.
- Side effect: changes RNG in the later parts of the run (notably the fishing minigame around frame 39700 and the monster spawns in the third phase of Miss Knives' fight).
- Note 1: when such a delay happens, it seems to be consistently late by two frames.
- Note 2: there are seven intentional deaths: the three Red traps, the painting chase and the three last phases of Miss Knives' fight. So far I only got delays at the second and third Red traps. Making a v2 of the resync where the 'retry' menu threads are always assumed to be late might lead to even more consistency.
Savestates to avoid desyncs from autosaves
Since autosaves are notorious desync points, it is best to make savestates in libTAS prior to them.
The table below describes two successful sync attempts with the resynced movie. The given frames correspond to the latest initialized thread before every autosave. You can access this piece of information by opening the
Settings > Debug...
window, setting Level
to Debug
and, in the Print
section, (only) checking Threads
.
If you get a thread timing which is late by only a couple frames then you will probably desync soon. But no matter what, even if you got a completely different timing, wait until you can tell that you desynced for sure.
When running the resynced movie, you can make a savestate a couple hundred frames prior to these timings and, if you get a desync, load your latest savestate or the one before it. Personally I don't make a savestate before every autosave. I usually wait 3000 to 10000 frames between my savestates.
Note that the
Movie > Pause Movie at frame...
option in libTAS can be useful to not miss the next desired savestate timing.
In the 'Save #' column (p) indicates that this autosave is a 'persistent' one and not a 'retrysave' one. In the 'Run 2' column '-' indicates that the timing was the same as in Run 1.
Save # | Run 1 | Run 2 |
---|---|---|
1 | 11670 | - |
2 | 14150 | - |
3 | 14778 | 14641 |
4 | 19953 | - |
5 | 22971 | 23008 |
6 | 28506 | - |
7 | 30019 | - |
8 | 30174 | 30019 |
(p) 9 | 31277 | - |
10 | 31393 | - |
11 | 31393 | - |
(p) 12 | 32177 | - |
13 | 32380 | - |
(p) 14 | 33165 | - |
15 | 33468 | - |
16 | 34475 | - |
17 | 36425 | 36450 |
18 | 37505 | - |
(p) 19 | 38920 | 39016 |
20 | 39650 | - |
21 | 44431 | - |
22 | 44802 | - |
23 | 47841 | - |
24 | 56803 | 56929 |
25 | 57607 | - |
26 | 59480 | - |
27 | 59480 | - |
28 | 61291 | - |
29 | 61691 | - |
30 | 62770 | - |
31 | 69690 | - |
32 | 69884 | - |
33 | 74399 | - |
(p) 34 | 75639 | 75513 |
35 | 86903 | - |
(p) 36 | 90622 | 90555 |
(p) 37 | 90932 | - |
38 | 94947 | - |
39 | 94947 | - |
40 | 94947 | - |
(p) 41 | 99541 | 99331 |
Running the movie in 1080p
The base resolution is 720p. If you want 1080p follow these steps:
- Go to
~/.local/share
. If there is aPaper Lily
folder delete it. - Open game executable
PaperLilyCh1.x86_64
without libTAS. - Choose any language then go to
Settings > Screen Settings
. - Set
Fullscreen
toNo
andResolution
to1920x1080
. - Quit the game and open file
~/.local/share/Paper Lily/engine.cfg
(any text editor should work). - Remove the line about translation. It should be the third line. If you chose English, it should be
core/translation_selected="en"
.
Now you can run the game in 1080p with libTAS. As a reminder:
- In
Settings > Runtime
checkXEvents at frame beginning
andSDL events at frame beginning
. LeavingPrevent writing to disk
checked is recommended. - In
Settings > Video > Screen resolution
chooseCommon 1920x1080 (16:9)
. - In
Tools > Slow Motion
choose12%
.
EDIT: added the encode and 1080p instructions.
EDIT 2: added the 'Savestates to avoid desyncs from autosaves' section.
EDIT 3: added the libTAS version (v1.4.6).