christofsteel / pyautosplit

Autosplitter for Linux (for the LiveSplit Server)
Apache License 2.0
45 stars 5 forks source link

Load Removal? #4

Closed AlbertHamik closed 3 years ago

AlbertHamik commented 3 years ago

Is it possible for this tool to support load removal?

InfoTeddy commented 3 years ago

Out of scope.

If you want to remove the fake loading screen, then use the 2.3 beta on Steam (VVVVVV's source code got released!), or if you want to stay on 2.2, then look at this.

But also, as far as I know doing either of these is technically not allowed by the speedrunning rules, if you're planning on submitting to the speedrun.com leaderboards.

AlbertHamik commented 3 years ago

Wait this tool pertains to a particular game? I was only speaking of general support for pausing and unpausing the timer for load removal.

InfoTeddy commented 3 years ago

Yeah, it was originally written for VVVVVV (which has an unusual memory layout in that every single thing is allocated on the stack, so this tool was created to read memory off the stack). Sorry for misunderstanding.

AlbertHamik commented 3 years ago

No problem. I was glancing into the matter of load removal as I'm using a VM emulator in Linux for a game and I was curious on if there was anything out there on Linux for scripting load removals for any timers. At the very least, this in theory might work for simple autotiming, loads or no loads. Not sure how I'd go about that for VM software. I know when I did load removal for DOSBox back in Windows I had to find a memory offset. That might be a similar case for Linux VM stuff.

christofsteel commented 3 years ago

Hi, so for context. Yes initially this was purely for VVVVVV, but I made it more general since then. Load removal was not on my radar, but can be easily added. The way this works is entirely trigger based. pyautosplit watches the memory of (currently) exactly one process and sends a command to the network component of LiveSplit (and optionally can set debugger like break points to calculate some memory locations), I do not know how well this works through a virtual machine, though... you would have to know the memory layout of the VM and of the Application, but in theory this should be manageable.

christofsteel commented 3 years ago

This is now implemented in 53179a64c6cd3f38cfdb4d301dea723660d21228. Mind you this is the develop branch, sometimes things break there (but I try to test everything I push there)