The two versions of Dolphin worth considering for TASing are the latest build and ZE 7.2.
Latest Build | Zelda Edition (ZE) 7.2 | |
Lua script support | No | Yes |
Memory watches | DME | Dolphin window or DME |
Load state behavior | Visually updates without advancing frame | Must advance frame to visually update |
TAS turbo input | Choose any turbo speed | Turbo only on alternating frames |
Frame count display | Each frame increments by 2* | Each frame increments by 1 |
*Potentially as the result of the frame count periodically switching between odd and even numbers for some reason, the latest build has the issue of some frames appearing to be impossible to perform an input on; e.g. when trying to chain a roll frame perfectly, you might find that pressing A on one frame is too early and doesn't cause a roll, but pressing A on the next frame is too late and leaves an extra frame between rolls. This problem is very awkward but can be overcome using the turbo function, since the turbo function refers to frame counts in half frames (i.e. 15 Hz mashing would be input as "2" on and "2" off, translating to 1f on and 1f off). In the rolling example above, setting the turbo to "1" on and "2" off (or vice versa) and beginning the turbo 2f before the frame the roll input should be on will result in the turbo input landing on a half frame and successfully chaining the rolls. This can be very problematic for changing control stick inputs rapidly, though, such as in a wiggle EBS. Note that this explanation makes no sense, but it does describe the behavior accurately.
This video by Malleo is a comprehensive guide to setting up Dolphin for TASing. Relevant information begins at 1:29.
The most important points regarding setup covered in this video are:
The video then demonstrates TASing some menuing and using scripts.
Dolphin Memory Engine (DME) is a tool that allows you to view and modify values in memory in the game while running Dolphin. The video from Malleo above (at 9:29) goes over setting DME up, using it to find memory watches useful for TASing, and altering values at memory addresses. Although altering values is generally not something you'd want to do in a TAS, it can be useful for testing.
Since Twilight Princess's memory addresses are well documented, you will probably not need to find memory addresses on your own. See this memory info spreadsheet by Taka for addresses, offsets from the player pointer where relevant, and data types. If you are using Dolphin ZE (see version differences above), once you know the address for the watches you want to use, you can add them to the watch list within Dolphin to display the information in the Dolphin window rather than the separate DME window.
Outside of versions of Dolphin with Lua script support, there is no functionality for recalling specific control stick or pointer coordinates at the click of a button. This is something that would be very useful for TASing brakeslides, especially DL-DR and wiggle brakeslides. However, AutoHotkey and Window Resizer can be used in conjunction with Dolphin to achieve this. The video below goes over setting this system up, and pages where the two necessary programs can be downloaded are linked as well.
This video goes over some fundamentals of save state management.