Turning resolution is lowered when recording demos

If a player is recording a demo under vanilla Doom, the resolution with which they can turn the player is decreased. This is due to a limit in the Doom demo format.

Internally Doom uses a 16-bit integer (two bytes) to store the turning movement. When playing network games, two bytes are transmitted, for example. However, the demo format uses a single byte to record the turning movement of the player. Because of this, the range of values that a player can turn each tic is substantially reduced.

To cope with this limitation, the resolution when turning must be reduced when recording a demo; otherwise, the demo might become desynchronized when played back. Doom does this, but the effect is noticeable to experienced players (while aiming over a long distance, for example). Playing while recording a demo is in some situations more difficult than playing normally. Some tricks used in speed running are however easier with the reduced resolution since it makes it easier to line up facing a cardinal direction, such as the glide on map02 in Doom 2.

Solution to the problem
Colin "cph" Phipps developed a solution to the problem in the form of a modified Doom binary. His "DOOM v1.9 to v1.91 patcher" modifies the version 1.9 executable to record demos using a 16-bit format for turning values. This removes the problem of reduced resolution.

A slight problem with this solution is that demos recorded using the modified binary will not play in v1.9 vanilla Doom, and vice versa. However, PrBoom, Chocolate Doom, and the Eternity Engine also support the format.

PrBoom plus additionally has an option to play with reduced turning resolution while not recording, so speedrunners can practice advanced tricks without requiring a demo recording all the time.

A custom executable called released in 2015 by Andrew Stine (Linguica) allows straferunning in Vanilla Doom, bypassing the Turning resolution is lowered when recording demos limitation. It is a modification of, a program by Simon Howard (Fraggle). It makes use of the External control driver feature.