View Page Source

Revision (current)
Last Updated by YoshiRulz on 8/5/2023 6:23 PM
Back to Page

This page lists the file format for DTM, Dolphin movie files. It may [Forum/Posts/379232|change] in the future.

!!Header:

||Offset||Type||Length||Description||
|0x000|Bytes|4|Signature: 44 54 4D 1A "DTM\x1A"|
|0x004|String|6|Game ID|
|0x00A|Boolean|1|Is Wii game|
|0x00B|Bit field|1|Controllers plugged in (from least to most significant, the bits are GC controllers 1-4 and Wiimotes 1-4)|
|0x00C|Boolean|1|Starts from savestate|
|0x00D|Integer|8|VI count|
|0x015|Integer|8|Input count|
|0x01D|Integer|8|Lag counter|
|0x025|N/A|8|Reserved|
|0x02D|Integer|4|Rerecord count|
|0x031|String|32|Author|
|0x051|String|16|Video Backend|
|0x061|Integer|16|Audio Emulator|
|0x071|Bytes|16|MD5 hash of game file|
|0x081|Integer|8|Recording start time (UNIX time)|
|0x089|Boolean|1|Saved config valid?|
|0x08A|Boolean|1|Idle Skipping on?|
|0x08B|Boolean|1|Dual Core enabled?|
|0x08C|Boolean|1|Progressive Scan enabled?|
|0x08D|Boolean|1|DSP HLE enabled? (1 for HLE, 0 for LLE)|
|0x08E|Boolean|1|Fast disc speed enabled?|
|0x08F|Integer|1|CPU core (0 for interpreter, 1 for JIT, 2 for JITIL)|
|0x090|Boolean|1|EFB Access Enabled?|
|0x091|Boolean|1|EFB Copy Enabled?|
|0x092|Boolean|1|Copy EFB To Texture? (1 for texture, 0 for ram)|
|0x093|Boolean|1|EFB Copy Cache Enabled?|
|0x094|Boolean|1|Emulate Format Changes?|
|0x095|Boolean|1|Use XFB emulation?|
|0x096|Boolean|1|Use real XFB emulation?|
|0x097|Bit field|1|Memory cards present (from least to most significant, the bits are slot A and B)|
|0x098|Boolean|1|Memory card blank?|
|0x099|Bit field|1|Bongos plugged in (from least to most significant, the bits are ports 1-4)|
|0x09A|Boolean|1|Sync GPU thread enabled?|
|0x09B|Boolean|1|Recorded in a netplay session?|
|0x09C|Boolean|1|SYSCONF PAL60 setting (this setting only applies to Wii games that support both 50 Hz and 60 Hz)|
|0x09D|Integer|1|Language (the numbering scheme is different for GC and Wii)|
|0x09E|N/A|1|Reserved|
|0x09F|Boolean|1|JIT branch following enabled?|
|0x0A0|N/A|9|Reserved|
|0x0A9|String|40|Name of second disc iso|
|0x0D1|Bytes|20|SHA-1 hash of Dolphin Git revision|
|0x0E5|Integer|4|DSP IROM Hash|
|0x0E9|Integer|4|DSP COEF Hash|
|0x0ED|Integer|8|Tick count (486 MHz when a GameCube game is running, 729 MHz when a Wii game is running)|
|0x0F5|N/A|11|Reserved|
|0x100|-|-|Controller data|

* All multi-byte integers are little-endian.
* The encoding for all strings is UTF-8.
* Strings are padded with NULs if not filling the full field.
* Lengths are in bytes.

!!GameCube controller data:

The controller data is 8 bytes per frame.


||Byte #||Bit #||Meaning||Version added||
|0|0|Start pressed if 1||
|0|1|A pressed if 1||
|0|2|B pressed if 1||
|0|3|X pressed if 1||
|0|4|Y pressed if 1||
|0|5|Z pressed if 1||
|0|6|Up (Dpad) pressed if 1||
|0|7|Down (Dpad) pressed if 1||
|1|0|Left (Dpad) pressed if 1||
|1|1|Right (Dpad) pressed if 1||
|1|2|L pressed if 1||
|1|3|R pressed if 1||
|1|4|Change disc if 1 (on console, not controller)|3.0-785|
|1|5|Reset button pressed if 1 (on console, not controller)|4.0-4045|
|1|6|Controller connected if 1|5.0-5911|
|1|7|Reset analog inputs to origin if 1|5.0-10479|
|2|0-7|L pressure (0-255, none to max.)||
|3|0-7|R pressure (0-255, none to max.)||
|4|0-7|Analog stick X axis (1-255, left to right)||
|5|0-7|Analog stick Y axis (1-255, down to up)||
|6|0-7|C stick X axis (1-255, left to right)||
|7|0-7|C stick Y axis (1-255, down to up)||

* Bytes are numbered left to right. 
* Bits in byte are numbered right to left (as usual).
* Multi-bit fields have the most significant bit first (as usual).
* Also applies to Wii when using GameCube controllers.

!!Wiimote controller data

Wiimote controller data seems to consists of packets one after each other, each with the following format:

||Offset||Type||Length||Description||
|0|Integer|1|Length of payload (n)|
|1|Opaque|n|Payload (raw wiimote data)|

Some documentation about the raw wiimote data can be found from [http://wiibrew.org/wiki/Wiimote|Wiimote page at Wiibrew.org]. Note that the leading 0xA1 bytes are present.