Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
Recently, games have included what in called in Celeste an "Assist Mode". It is extra options that change some game parameters (invulnerability, game speed, etc.) aimed at making the game accessible to more people. I think this should be considered a cheat. Optimal runs with assist mode would often result in more trivial gameplay. As opposed to debug mode, assist mode is immediately accessible from menu, and is sometimes not even distinguishable from other options (see Disc Room in-game options and here), so I don't know if it's already covered.
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
Probably found the issue, look at file `~/.lexaloffle/pico-8/config.txt` and look for parameter `foreground_sleep_ms`. Mine is set to 5. Setting this value should make the TAS to sync.
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
It syncs for me. I am getting a lag frame at 672, also in the author movie (libtas movies store lag frames). It is caused by the game calling SDL_Delay(5) seven times, which makes it sleep for 35 ms. This exceeds the frame length (33 ms), so a lag frame is triggered. Could you check if you are getting the lag frame, and also if you are getting the sleeps calls (enable logging for Sleep category)?
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
I didn't consider submitting a new movie. I was thinking if it would be relevant to replace the published movie with this one, given that the published one has spurious lag frames that artificially increase the movie duration. Also, with the exact same game version the published movie was done on, all lag frames could be removed if the framerate is set to a slightly lower value (59.999 fps) to overcome the game bug that does not enforce correctly the intended framerate.
All of this has low importance because the final product is not affected much by this. Having a clean movie is much convenient to work on improvements, that is why I wanted to post is somewhere.
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
Not sure how to handle this, but I updated this movie (User movie #637787978063843404) to a newer version of the game that don't feature any lag frame anymore. Gameplay is unchanged. It saves ~ 10 seconds
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
I tried finding the game on itch.io which has the closest release date from Unworthy. The MOBrio was released 3 months after Unworthy, has a runner executable which is only 9 bytes bigger than Unworthy's one, but still does not feature the glitch.
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
I checked on three different versions of the runner file, and all three show the same behavior (no clipping through the statue). It is still possible that one specific version of the linux runner features this behavior, but then it may be considered as an engine bug? I'll try doing the opposite on Windows: using the Windows runner file from Ryuku in place of the originial runner file to see if I'm still getting the clipping.
Edit : I checked using Ryuku's executable on Windows, and I actually couldn't reproduce the bug! So it should mean that there's a specific version of the GM:S runtime shipped with the game that has a some sort of flaw?
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
I don't know if it's specific to this version of the launcher, I honestly didn't investigate when I made the run. It could all linux compatible runner files that have this difference with the Windows version.
If you think that this needs to be answered, I can try other runner files and see if I can replicate the glitch.
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
feos wrote:
keylie, why do you take the detour to Catacombs of Ur (and to the thorns area) in the middle of the run? The RTA record goes straight to Cradle of Death, and counting from that point you only kill the final boss 5 seconds sooner. Judging by how quickly you navigate, is it really worth it to go to that other area? The movie is overall still shorter than RTA of course, but still.
Sorry, I thought I mentioned this in the submission notes. The skip to go past the statue that is used by RTA runners is not possible on the Linux version of the game. I tried to understand how it works, I explored the game data files using UndertaleModTool, which is an awesome tool to browse and modify all the maps, scripts, objects, etc. of the game. I came to the conclusion that this is not an overlook of the game level design or the game scripts, so I guess it is about gamemaker studio engine and collisions?
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
fsvgm777 wrote:
I tried downloading the older version via Depot Downloader....but it seems you can no longer download previous versions through that method. I get the following error:
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
Same except for the steam_api.
I don't have Baba on Steam. I tried the one from Axiom Verge, which has hash
74b93a8111fc19af999459a5c230c498047cfda7
and it does not work, probably because the version is too recent, and Steam likes to update their API with interfaces incompatible with previous versions (they add methods in Steam class in between old methods, instead of appending them at the end). I started working on versioned interfaces, but it's a lot of work, and there are a lot of classes.
Regarding the crashes at random and desync, this is weird, I don't know why. Yes, the game is very slow with software rendering, and one of the reasons is that the audio thread is taking 100% of one CPU because it queries for free buffers with no yielding at all.
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
feos wrote:
Is there no way to get the version that works?
I don't know if there's a reliable way to pick the version that works. One could determine the version of the Windows runtime and get the Linux counterpart (from official Yoyo website if they have an account).
feos wrote:
This also sounds like it will only (probably) work for a short period of time. Using a beta version is questionable in itself, and without info on what exact version it's known to work on, this may be a future problem to get this movie to replay (provided it still works).
Using the Steam beta feature is a convenience, but it actually refers to a previous released version of the game.
You can look at the manifest id 2435903942916489485 in the speedrunner_spirit branch which corresponds to the version released on june 11 in the main branch. This is still a problem if Steam decides to prevent people from getting previous versions in the future.
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
Not all runner executable work. Recent ones from 2019/2020/2021 that I tested instantly crashed the game.
The one that I used to make the TAS came from the same game that was used for Deltarune chapter 1, see this post and the game in question. Unfortunately this game has been updated since, so the runner executable does not work anymore. I still have this executable, whose md5 is
f121671f73bfaf965ed2f0bfdda263b4
The md5 of the game I found for the submission is
597d991811097a58080f09c09f522c0b
Furthermore, while I browsed through itch.io Unity games to find a good one, some games that were slightly more recent than the correct ones did not crash, but I was getting a desync in the middle of the run.
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
feos wrote:
1) Consistent-ish loads sounds like something upstream would want indeed?
The changes made are specific to Unity engine, and are the following:
* Specific threads are identified as coming from the Unity thread pool that does async stuff (used by Unity's coroutines). The main thread is paused as long as one of those threads are still processing. One of the current problem is that libtas cannot identify those threads easily, because Unity is in C#, so code is JIT and internals are inaccessible. The solution I found to detect those threads is comparing their identifier (defined as pointer-to-thread-routine - pointer-to-caller) to a known list of identifiers (those are constant across instances and computer, but change for each version of the Unity engine used). This is very hacky, but addressed the issue.
That's how it looks like in libtas code:
* Sleep calls with a specific value of 2000 us are discarded as they occur on some situations when main thread is waiting for another thread.
I could merge those into libtas main branch, but they would still look hacky unless I could figure out how to better get into Unity's internals.
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
libTAS does not support using a joystick as an input device. Only keyboard/mouse is supported, and you can bind keys to joystick inputs in the input mapping window.
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
fsvgm777 wrote:
EDIT: So....I can't get it to sync at all. clock_gettime() gets set again if I run the movie file, even if I uncheck it. Running with it unchecked causes it to not run at all. Doesn't matter if the game's on windowed or fullscreen. It desyncs around the third stage. I'm running libTAS with the "~/.steam/bin/steam-runtime/run.sh libTAS" command, as a note.
Did you remove all files created by the game (in "~/.config/FlywrenchStudio/") ?
Editor, Emulator Coder, Experienced Forum User, Published Author, Expert player
(2841)
Joined: 3/17/2013
Posts: 392
I could try fixing libTAS to allow right click to be used on PCem. However, that will look a bit awkward.
Until then, using libTAS + PCem was equivalent to bringing TAS tools to PCem. but with CD swap, you would need to make mouse inputs to bring up the contextual menu and browse through it to change the cd. It means it takes some actual frames to do that. So it becomes TASing an emulator and not TASing an emulated game, which has some consequences with TAS length I guess (does PCem pauses when the contextual menu is opened?)
There could also be some desyncs regarding where the contextual menu will appear, and I guess the contextual menu won't be part of the encode. So that raises several issues actually.