This page lists the file format for DTM, Dolphin movie files. It may 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 Wiimote page at Wiibrew.org. Note that the leading 0xA1 bytes are present.