> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/dolphin-emu/dolphin/llms.txt
> Use this file to discover all available pages before exploring further.

# TAS Tools

> Tool-Assisted Speedrun features for frame-perfect gameplay

## Overview

Dolphin includes comprehensive Tool-Assisted Speedrun (TAS) features that allow frame-by-frame gameplay control, input recording and playback, save states, and other tools for creating perfect gameplay sequences.

## What is TAS?

Tool-Assisted Speedrunning uses emulator features to create optimized gameplay recordings:

* **Frame advance**: Progress one frame at a time
* **Save states**: Save/load at any point instantly
* **Input recording**: Record and replay controller inputs
* **Re-recording**: Modify previously recorded inputs
* **Slowdown**: Play at reduced speed for precision

<Note>
  TAS runs are not considered legitimate speedruns but are valuable for research, entertainment, and discovering game mechanics.
</Note>

## Enabling TAS Features

<Steps>
  <Step title="Enable TAS Input">
    Config > GameCube/Wii > Controllers

    Set controller ports to "TAS Input"
  </Step>

  <Step title="Open TAS Input Window">
    Tools > TAS Input

    Opens the TAS input controller window
  </Step>

  <Step title="Configure Hotkeys">
    Options > Hotkey Settings

    Set hotkeys for:

    * Frame advance
    * Save state
    * Load state
    * Start/stop recording
  </Step>
</Steps>

## TAS Input Window

The TAS Input window provides complete control over controller inputs:

### Buttons

* **A, B, X, Y, Z, Start**: Click to activate
* **D-Pad**: Up, Down, Left, Right
* **L, R Triggers**: Digital buttons or analog sliders

### Analog Sticks

* **Control Stick**: X/Y coordinates (-1.0 to 1.0)
* **C-Stick**: X/Y coordinates
* **Visual circle**: Click to set position
* **Numeric input**: Precise coordinate entry

### Wiimote Controls

* **Pointer**: X/Y screen coordinates
* **Shake**: Trigger shake motion
* **Tilt**: Roll, pitch, yaw controls
* **Extension**: Nunchuk/Classic Controller inputs

## Frame Advance

Step through gameplay one frame at a time (60 FPS = 16.67ms per frame).

### Using Frame Advance

<Steps>
  <Step title="Pause Emulation">
    Press pause or use hotkey
  </Step>

  <Step title="Set Inputs">
    Configure desired inputs in TAS Input window
  </Step>

  <Step title="Advance One Frame">
    Press frame advance hotkey

    Game processes one frame with current inputs
  </Step>

  <Step title="Repeat">
    Modify inputs and advance frame-by-frame
  </Step>
</Steps>

<Note>
  Frame advance is crucial for precise timing of jumps, attacks, and movement.
</Note>

## Input Recording

Record controller inputs to create replayable gameplay sequences.

### Recording Movies

<Steps>
  <Step title="Start Recording">
    Movie > Start Recording Input

    Choose save location for .dtm file
  </Step>

  <Step title="Play Normally">
    Play game normally or use TAS tools

    All inputs are recorded
  </Step>

  <Step title="Stop Recording">
    Movie > Stop Recording/Playback

    Saves .dtm movie file
  </Step>
</Steps>

### Playing Back Movies

<Steps>
  <Step title="Load Movie">
    Movie > Play Input Recording

    Select .dtm file
  </Step>

  <Step title="Start Game">
    Game begins from initial state

    Recorded inputs play automatically
  </Step>

  <Step title="Watch or Modify">
    Watch playback or start re-recording
  </Step>
</Steps>

### Re-recording

Modify existing recordings:

<Steps>
  <Step title="Load Movie for Re-record">
    Movie > Play Input Recording

    Check "Re-record" option
  </Step>

  <Step title="Play to Desired Frame">
    Let recording play to where you want changes
  </Step>

  <Step title="Provide New Inputs">
    Take control with new inputs

    Recording continues from this point with new inputs
  </Step>

  <Step title="Save Changes">
    Movie > Stop Recording

    Updated movie is saved
  </Step>
</Steps>

## Save States

Instantly save and restore complete emulator state.

### Save State Slots

Dolphin provides 10 save state slots (0-9):

```
Shift + F1-F10: Save to slot
F1-F10: Load from slot
```

### State Manager

Tools > Save State Manager:

* **View all states**: Browse saved states with screenshots
* **Load any state**: Double-click to load
* **Delete states**: Remove unwanted states
* **Export/Import**: Share states with others

### Best Practices

<AccordionGroup>
  <Accordion title="State Management">
    * Use different slots for different points in TAS
    * Save before risky maneuvers
    * Name states descriptively using State Manager
    * Regularly backup state files
  </Accordion>

  <Accordion title="Save State Locations">
    **Windows**:

    ```
    Documents/Dolphin Emulator/StateSaves/
    ```

    **macOS**:

    ```
    ~/Library/Application Support/Dolphin/StateSaves/
    ```

    **Linux**:

    ```
    ~/.local/share/dolphin-emu/StateSaves/
    ```
  </Accordion>
</AccordionGroup>

<Warning>
  Save states are emulator version-specific. States from older Dolphin versions may not work on newer versions.
</Warning>

## Frame Counter & Lag Detection

### Display Frame Count

View > Show Frame Counter:

* **VI (Vertical Interrupt)**: Game frames rendered
* **FPS**: Current rendering speed
* **Speed**: Percentage of normal speed

### Lag Frames

Lag occurs when game takes >1 frame to process:

* **Visible in frame counter**: Lag frames noted
* **Affects timing**: Plan TAS around lag
* **Game-dependent**: Different games lag differently

## Memory Watching

Monitor game memory values in real-time:

<Steps>
  <Step title="Open Memory Tools">
    Tools > Cheats Manager
  </Step>

  <Step title="Add Watch">
    Right-click address > Add to Watch
  </Step>

  <Step title="Monitor Values">
    Watch window shows real-time values

    Useful for tracking position, speed, RNG, etc.
  </Step>
</Steps>

### Common TAS Uses

* **Position tracking**: Monitor X/Y/Z coordinates
* **Speed monitoring**: Verify optimal movement
* **RNG manipulation**: Track random number generation
* **Timer watching**: Frame-perfect timing checks

## Speed Control

Control emulation speed for precision or faster testing:

### Hotkeys

```
Tab (hold): Fast-forward
Shift + Tab: Increase speed limit
Ctrl + Tab: Decrease speed limit
```

### Slowdown for Precision

```
Emulation > Speed Limit: Custom (25%, 50%, etc.)
```

Useful for:

* Planning difficult sequences
* Studying game mechanics
* Identifying optimal paths

## Movie File Format

Dolphin movies (.dtm) contain:

* **Input data**: Frame-by-frame controller inputs
* **Game ID**: Which game the movie is for
* **Start state**: Initial conditions (save state or boot)
* **Frame count**: Total recorded frames
* **Metadata**: Author, description, timestamps

### Sharing Movies

<Note>
  For movie playback to work identically:

  * Use same Dolphin version
  * Same game version/region
  * Same Dolphin settings
  * Same starting save state (if used)
</Note>

## Lua Scripting

Advanced TAS creators can use Lua scripts for automation:

* **Automated input**: Generate inputs programmatically
* **Memory manipulation**: Read/write game memory
* **Visual overlays**: Display hitboxes, paths, info
* **Bot assistance**: AI-assisted input generation

<Warning>
  Lua scripting requires programming knowledge and is for advanced users only.
</Warning>

## TAS Workflow Example

<Steps>
  <Step title="Plan Route">
    Research optimal path, tricks, glitches
    Watch existing speedruns for reference
  </Step>

  <Step title="Set Up Dolphin">
    Configure TAS Input for all needed controllers
    Set up hotkeys for frame advance, save states
    Enable frame counter and memory watch
  </Step>

  <Step title="Start Recording">
    Movie > Start Recording Input
    Begin from game start or specific save state
  </Step>

  <Step title="TAS Frame-by-Frame">
    Use frame advance for precise inputs
    Save states before risky sections
    Re-record mistakes
  </Step>

  <Step title="Optimize">
    Review recording for improvements
    Check memory values for optimality
    Re-record slow sections
  </Step>

  <Step title="Verify & Export">
    Playback full movie to verify
    Record video with capture tools
    Share .dtm file and settings
  </Step>
</Steps>

## Tips for TAS Creation

### Input Precision

* Use numeric input for exact analog stick values
* Frame-perfect inputs require frame advance
* Save before attempting difficult tricks
* Watch memory values to verify success

### Optimization

* Every frame counts: minimize lag and wait times
* Test multiple approaches to find fastest
* Study game mechanics deeply
* Use community knowledge and existing TASes

### Recording Quality

* Use high resolution and enhancements for video
* Configure graphics settings before recording
* Disable speed limit during final recording
* Add HUD elements (input display, frame counter)

## Troubleshooting

<AccordionGroup>
  <Accordion title="Movie Desyncs on Playback">
    * Verify exact same Dolphin version
    * Check game version/region matches
    * Ensure settings are identical
    * Confirm save state (if used) is same
    * Disable "Dual Core" for better sync stability
  </Accordion>

  <Accordion title="Frame Advance Too Fast">
    * Reduce emulation speed limit
    * Use slower hotkey repeat rate
    * Consider using Lua script for controlled advance
  </Accordion>

  <Accordion title="Inputs Not Recording">
    * Verify recording is active (Movie menu shows "Stop")
    * Check TAS Input is selected in controller config
    * Ensure you're using TAS Input window, not physical controller
  </Accordion>

  <Accordion title="Save States Crash">
    * Update to latest Dolphin version
    * Don't use states across different versions
    * Verify game image is not corrupted
    * Try different save slot
  </Accordion>
</AccordionGroup>

## Community Resources

* **TASVideos**: Community hub for TAS creation and submission
* **Dolphin Forums**: TAS discussion and help
* **Game-specific Discord servers**: Detailed game knowledge
* **YouTube**: Watch existing TASes for inspiration

## Recommended Settings for TAS

```yaml theme={null}
General:
  Enable Dual Core: OFF (better sync stability)
  Enable Idle Skipping: OFF (consistent timing)
  
Graphics:
  Internal Resolution: Native (fastest, most stable)
  Enhancements: Disable (reduce lag)
  
GameCube/Wii:
  Controller Ports: TAS Input
  Memory Card: Enabled (if needed for saves)
```

<Note>
  Disable enhancements during TAS creation for stability. Enable them when recording video for presentation.
</Note>

## Related Topics

<CardGroup cols={2}>
  <Card title="Cheats & Action Replay" icon="gamepad-modern" href="/advanced/cheats-and-action-replay">
    Memory modification and cheat codes
  </Card>

  <Card title="RetroAchievements" icon="trophy" href="/advanced/retroachievements">
    Achievement tracking during gameplay
  </Card>
</CardGroup>
