The Splitter looks mainly for Game State (address 0x0002), lives (address 0x000C) and current level (address 0x000C)
The time starts when current level is 0 and state is 17 (which corresponds to the brief black screen that appears before showing the current level info). A new split is performed when the level corresponds to next split and the state is 17. The last split is done when the state is 21 (which is the start of the ending cinematic which appears right after the last score screen).
RAM address (HEX) | Value(s) (HEX) | Value(s) (DEC) | Description |
---|---|---|---|
0002 | 01 | 01 | Game State: intro screen |
0002 | 04 | 04 | Game State: Black screen before switching to the current level |
0002 | 05 | 05 | Game State: in a level (gameplay) |
0002 | 11 | 17 | Game State: Black screen that transitions to the level summary screen |
0002 | 12 | 18 | Game State: Level summary screen |
0002 | 13 | 19 | Game State: Black screen that transitions to level end screen |
0002 | 14 | 20 | Game State: Level end screen |
0002 | 15 | 21 | Ending cinematic (or rather scrolling text XD) |
000C | 00 to 05 | 00 to 05 | Current level (0 is level 1) |
000E | 00 to FF | 00 to 255 | Number of lives |
- Official Z80 docs
- Z80 wikibooks
- C# documentation for
tryParse
- Sysinternals suite DebugView (for debugging the script)
- Auto Splitting Language extension for VSCode
- Bookmarks VSCode extension
- Markdown table generator
- SMS documents from SMSPower. This one for example
- SMSpower memory hacks
- SMSPower cheats for Cyber Shinobi
- Livesplit FAQ
- Emulicious SMS emulator which has powerful debugging tools
- Official ASL documentation