|
libElysianVMU 1.6.0
Full-featured, accurate, cross-platform library emulating the Dreamcast's Visual Memory Unit
|
Descriptions and Layouts for VMU File Formats
| Format | Description |
|---|---|
| .VMS | Standard VMU file container for save data and minigames. |
| ICONDATA_VMS | Reserved VMU file for BIOS icons and the secret BIOS unlock bytes. |
| .VMI | Sidecar metadata descriptor for a .VMS file. |
| .bin / .vmu | Raw VMU flash image formats. |
| .DCM | Nexus full-card image format. |
| .DCI | Nexus single-file container. |
| .LCD | Legacy LCD animation format. |
.VMS is the standard VMU file container used for save data and minigames.
Every .VMS file includes a 128-byte header. Its starting offset depends on the file type:
0x000.0x200 (one 512-byte block in).The .VMS header is a fixed 128-byte structure at the beginning of the metadata region:
| Offset | Size | Field | Description |
|---|---|---|---|
0x00 | 16 | VMU description | Description shown by the VMU BIOS. |
0x10 | 32 | Dreamcast description | Description shown by the Dreamcast BIOS. |
0x30 | 16 | Application ID | Application identifier string. |
0x40 | 2 | Icon count | Number of icon animation frames (0-3). |
0x42 | 2 | Animation speed | Frame delay for icon animation. |
0x44 | 2 | Eyecatch type | Eyecatch encoding mode. |
0x46 | 2 | CRC | CRC over the .VMS image. |
0x48 | 4 | Data bytes | Logical payload size for DATA files. |
0x4c | 20 | Reserved | Reserved bytes, typically zeroed. |
0x60 | 32 | Palette | 16-entry ARGB4444 icon palette. |
After the 128-byte header, the file continues with optional artwork and then the logical file payload:
32x32 pixels and 512 bytes.The eyecatch format is selected by the eyecatch type field:
| Value | Meaning | Additional bytes after icons |
|---|---|---|
0 | None | No eyecatch data. |
1 | 16-bit color | 8064 bytes (72x56, direct color). |
2 | 256-color paletted | 512 bytes of palette + 4032 bytes of bitmap. |
3 | 16-color paletted | 32 bytes of palette + 2016 bytes of bitmap. |
The boundary between the artwork region and the logical payload is derived from the header contents rather than from a single fixed payload offset.
This CRC applies only to DATA files. GAME files do not use the CRC field and should store 0x0000 there.
For DATA files, the .VMS CRC is a 16-bit CRC over the full logical .VMS image, starting at byte 0x000 of the header and ending at the final byte of the logical payload. Filesystem padding bytes beyond the logical end of the file are not included.
The CRC field of the .VMS header (offset 0x46) should be zero before hashing.
Equivalent pseudocode:
A .VMS image by itself does not directly encode whether the file should be treated as DATA or GAME on flash; that normally comes from the directory entry or a companion .VMI file. When the type must be inferred from a standalone .VMS, a common heuristic is:
ICONDATA_VMS is a reserved filename on the VMU filesystem. It does not have a .VMS extension, and it does not contain a normal .VMS header. Instead, it begins with its own small header.
The special file provides:
The file begins with:
| Offset | Size | Field | Description |
|---|---|---|---|
0x00 | 16 | Description | VMU filesystem description string. |
0x10 | 4 | VMU icon offset | Offset to the VMU icon bitmap. |
0x14 | 4 | DC icon offset | Offset to the DC icon palette and bitmap. |
The well-known fixed asset sizes are:
128 bytes.32 bytes.512 bytes.0x2c0.The unlock sequence bytes are: 0xDA 0x69 0xD0 0xDA 0xC7 0x4E 0xF8 0x36 0x18 0x92 0x79 0x68 0x2D 0xB5 0x30 0x86
.VMI is a sidecar metadata descriptor for a .VMS file. It was used by Dreamcast web browsers, which would download the .VMI, discover the name of the companion .VMS, and then transfer the pair to the VMU.
.VMI is never standalone: it describes a companion .VMS and carries metadata that overlaps with the VMU directory entry stored on the card.
The file is a fixed 108 bytes:
| Offset | Size | Field | Description |
|---|---|---|---|
0x00 | 4 | Checksum | Format checksum field. |
0x04 | 32 | Description | Human-readable description string. |
0x24 | 32 | Copyright | Copyright string. |
0x44 | 2 | Creation year | Creation year. |
0x46 | 1 | Creation month | Creation month (1-12). |
0x47 | 1 | Creation day | Creation day (1-31). |
0x48 | 1 | Creation hour | Creation hour (0-23). |
0x49 | 1 | Creation minute | Creation minute (0-59). |
0x4a | 1 | Creation second | Creation second (0-59). |
0x4b | 1 | Creation weekday | Creation weekday (0 = Sunday through 6 = Saturday). |
0x4c | 2 | VMI version | Format version. |
0x4e | 2 | File number | Sequence number within a set. |
0x50 | 8 | VMS resource name | Filename of the companion .VMS in the same directory. |
0x58 | 12 | VMU filename | Filename that should appear on the VMU filesystem. |
0x64 | 2 | File mode | Bitfield containing GAME and PROTECTED flags. |
0x66 | 2 | Unknown | Undocumented field. |
0x68 | 4 | File size | Size of the companion .VMS image in bytes. |
The file mode field uses two low bits:
The .VMI checksum field is a 4-byte identifier, not a conventional CRC. It is formed from bytes 0x50 through 0x53 of the .VMI file, which are the first four bytes of the VMS resource name field, masked against the ASCII bytes for S, E, G, and A, respectively.
Equivalent pseudocode:
Raw .bin and .vmu files are unwrapped flash dumps. Unlike .VMS, .VMI, .DCI, and .DCM, they do not contain a per-file container or sidecar metadata. They are direct images of the VMU flash address space.
Relative to the filesystem-oriented formats:
Shorter or longer files usually indicate a partial dump or a dump from a different device configuration.
.DCM is the Nexus full-card image format: a complete flash dump with Nexus byte ordering applied.
Its defining transformation reverses the byte order inside each 4-byte word.
Relative to a raw .bin or .vmu flash image:
.DCI is the Nexus single-file container.
The file layout is:
32 bytes).The embedded payload uses Nexus byte reordering in 4-byte words. The directory entry itself is stored before that transformed payload and provides the file type, copy-protection state, header offset, and block-rounded size required to reconstruct the VMU file image.
.DCI stores the file at its full on-VMU size, rounded to whole blocks. It does not strip the .VMS header or artwork..LCD is a legacy VMU LCD animation format.
The file layout is:
The header fields are:
| Offset | Size | Field | Expected meaning |
|---|---|---|---|
0x00 | 4 | Signature | ASCII signature LCDi. |
0x04 | 2 | Version | Format version. |
0x06 | 2 | Width | Frame width, expected to be 48. |
0x08 | 2 | Height | Frame height, expected to be 32. |
0x0a | 2 | Bit depth | Expected to be 1. |
0x0c | 1 | Reserved | Reserved byte. |
0x0d | 1 | Repeat count | Loop count; 255 means repeat forever. |
0x0e | 2 | Frame count | Number of frames following the header. |
Each frame-info record contains a delay byte measured in 1/12 second units. Each frame bitmap is a 48x32 1-bit image stored in 1536 bytes, with 0x08 used for an "on" pixel and 0x00 for an "off" pixel.