Vault-Tec Labs

Listed here are conventions used in describing Oblivion mod and save file formats. Many of these conventions are standard c-type conventions, others (e.g., iref) are specific to this subject.

Based on this page.

C (Count)[]

This is used for mod subrecords.

Count Usage
? Unknown
+ Required
- Optional
* Repeating
  • Repeat count may be zero.
  • If subrecords are repeated in a group (e.g., MAST and DATA in TES4), then the following subrecords are indented under the leading subrecord.


Text Usage
num Count of something. E.g. number of records.
size Size in bytes of some data object.
?Huh? Question or speculation.
[indent] Substructure.

Data Types[]

Type Size Description
byte 1 Byte, signed.
ubyte 1 Byte, unsigned.
  • Also used for unknown and/or complex data structures.
char 1 Character, signed.
  • Used for text.
short 2 Short integer, signed.
ushort 2 Short integer, unsigned.
long 4 Long integer, signed.
ulong 4 Long integer, unsigned.
  • Also used to represent a set of binary flags.
float 4 Floating point number
int64 8 Long 64-bit integer, signed.
uint64 8 Long 64-bit integer, unsigned.
hash 8 A hash of a string. See {..}.
systemtime 16 SYSTEMTIME structure.
type[num] num*sizeof(type) Array of num types.
bstring 1+?? A string prefixed with a byte length. NOT zero terminated.
  • This and other string types use latin-1 encoding.
  • However, not all fields allow the full range -- e.g., editor ids are limited to [a-zA-Z0-9].
bzstring 1+?? A string prefixed with a byte length and terminated with a zero (\x00).
zstring ?? Zero terminated string.
  • Size is size of string text + 1 for string terminator.
string ?? String which is not terminated
  • Size is the exact number of characters in the string.
struct ?? Collection of other data types.
  • Used to group items that logically belong together. E.g., pc cell data.
  • Size is sum of item sizes.
list[len] ?? List of items of variable length, and possibly different types.
  • Size is sum of item sizes.