NIF File Format Documentation

NIF Objects | Compound Types | Enum Types | Basic Types | File Versions

Basic Data Types

Name Description
BlockTypeIndex A 16-bit (signed?) integer, which is used in the header to refer to a particular object type in a object type string array.
The upper bit appears to be a flag used for PhysX block types.
FileVersion A 32-bit integer that stores the version in hexadecimal format with each byte representing a number in the version string.

Some widely-used versions and their hex representation:
4.0.0.2: 0x04000002
4.1.0.12: 0x0401000C
4.2.0.2: 0x04020002
4.2.1.0: 0x04020100
4.2.2.0: 0x04020200
10.0.1.0: 0x0A000100
10.1.0.0: 0x0A010000
10.2.0.0: 0x0A020000
20.0.0.4: 0x14000004
20.0.0.5: 0x14000005
Flags A 16-bit integer, used for bit flags. Function varies by object type.
HeaderString A variable length string that ends with a newline character (0x0A). The string starts as follows depending on the version:

Version <= 10.0.1.0: 'NetImmerse File Format'
Version >= 10.1.0.0: 'Gamebryo File Format'
LineString A variable length string that ends with a newline character (0x0A).
Ptr A signed 32-bit integer, referring to a object before this one in the hierarchy. Examples: Bones, gravity objects.
Ref A signed 32-bit integer, used to refer to another object; -1 means no reference. These should always point down the hierarchy. Other types are used for indexes that point to objects higher up.
StringIndex A 32-bit unsigned integer, used to refer to strings in the header.
StringOffset A 32-bit unsigned integer, used to refer to strings in a NiStringPalette.
bool A boolean; 32-bit from 4.0.0.2, and 8-bit from 4.1.0.1 on.
byte An unsigned 8-bit integer.
char An 8-bit character.
float A standard 32-bit floating point number.
int A signed 32-bit integer.
short A signed 16-bit integer.
uint An unsigned 32-bit integer.
ulittle32 A litte-endian unsigned 32-bit integer.
ushort An unsigned 16-bit integer.