Automated timers, memory watchdogs, and frame-accurate split triggers for speedrunners
A collection of custom Auto Splitter (.asl) scripts developed for LiveSplit. By directly scanning target process memory, game engines (Unreal, Unity), and emulators (AppleWin, DOSBox-X), these scripts eliminate human error, provide sub-frame split accuracy, and calculate precise In-Game Time (IGT).
File: raji.asl
state("Raji-Win64-Shipping")
{
// Auto-splitter scans player location, game state flags, and current orb counters
// Supports custom configuration checkboxes in LiveSplit settings menu
}
File: PrinceOfPersiaApple][.asl
current.Level == 1 && current.Ticks == 0).current.Ticks / 12.0.0xFF.Reset1, Reset2, and Reset3.state("AppleWin")
{
byte Level : "AppleWin.exe", 0x1F5498, 0x031C; // Level 1-14 changes
ushort Ticks : "AppleWin.exe", 0x1F5498, 0x0306; // Ticks one per frame
byte EndGame : "AppleWin.exe", 0x1F5498, 0xE14A; // 255 at Princess room
}
Files: cell.asl & game_inside_a_game.asl
SceneManager and monitors transition from Title to Game to auto-start.GridManager.levelWon and GameData.level to split each time a cell puzzle is solved.game_inside_a_game.asl) included for nested in-game puzzle speedruns.split
{
return !old.levelWon && current.levelWon && vars.CompletedLevels.Add(current.level);
}
File: DOSBox_0.83.8_IGT.asl
((60 * 720) - adjustedFramesLeft) / 12.0 into seconds.gameTime
{
int minutesLeft = current.MinutesLeft - 1;
int totalFramesLeft = (minutesLeft * 720) + current.FrameSeconds;
int elapsedFrames = 60 * 720 - totalFramesLeft;
return TimeSpan.FromSeconds(elapsedFrames / 12.0);
}
Download the desired .asl file from above or copy the raw URL from the repository.
In LiveSplit, right-click anywhere → click Edit Layout... → click the + button → Control → Scriptable Auto Splitter.
Double-click Scriptable Auto Splitter in your layout list, click Browse... and select your downloaded .asl file.
Right-click LiveSplit → Compare Against → choose Game Time if the script provides IGT (e.g. PoP Apple II or DOSBox-X).
If you encounter an issue or want custom category split conditions added, reach out on Discord or open an issue on GitHub:
@gmp_