could find the ideal set of inputs for any game, but since the space of all possible inputs grows exponentially with the length of the sequence, this is only viable for optimizing very small portions of the speed run. Instead, a heuristic algorithm can be used. Although such an approach does not guarantee a perfect solution, it can prove very effective for solving simple puzzle games. Another rarely used technique is disassembling the game executable. By exposing the game logic, this enables the player to manipulate luck without trial and error, or reveal obscure bugs in the game engine. A more common, related technique, is to monitor the memory addresses responsible for certain effects to learn when or how they change. Memory watching is supported by most emulators used on TASVideos.org. All these techniques involve direct interaction with the game state in ways not possible without emulation, but the final result, the set of inputs that makes up the speedrun, does not depend on such manipulation of the state of the emulated machine. The tool use in tool-assisted speedrunning is therefore different from the sort of state manipulation that tools like Gameshark provide, since such manipulation would not be expressible as a sequence of timed inputs. Re-recording emulators Tool-assisted speedrunning relies on the same series of inputs being played back at different times always giving the same results. In a manner of speaking, the emulation must be deterministic with regard to the saved inputs (e.g. random seeds must not change from run to run). Otherwise, a speedrun that was optimal on one playback might not even complete it on a second playback. This loss of synchronization, or "desync", occurs when the state of the emulated machine at a particular time index no longer corresponds with that which existed at the same point in the movie's production. Desyncs can also be caused by incomplete savestates, which cause the emulated machine to be restored in a state different from that which existed when it was saved. Desyncs can also occur when a user attempts to match inputs from an input file downloaded from TASVideos and fail to match the correct enemy reactions due to bad AI or RNG. Problems with emulation, such as nondeterminism and incomplete savestates, are often only discovered under the precise frame-by-frame conditions of tool-assisted speedrunning. Emulator developers often do not give speedrunning issues high priority because they have