Code:
##########################################################################################################################
---- General format ----
FORM
-> NIS chunk
-> -> NAME chunk
-> -> VERS chunk
-> -> INFO chunk
-> -> ANIM chunk
-> -> NURB chunk
-> -> PATH chunk
-> -> LEAD chunk
-> -> FOLW chunk
-> -> CMRA chunk
---- end ----
---- NAME FORM ----
"NAME"
<length of this form, in bytes, BE, ulong>
<string, this is "Homeworld2 NIS File", char>
---- end ----
---- VERS FORM ----
"VERS"
<length of this form, in bytes, BE, ulong>
<version, this is [HEX:000100] or 256, BE, ulong>
---- end ----
---- INFO FORM ----
"INFO"
<length of this form, in bytes, BE, ulong>
<fps for the NIS, usually 30, LE, ulong>
<initial time, usually 1, LE, ulong>
<final time, LE, ulong>
---- end ----
---- ANIM FORM ----
"ANIM"
<length of this form, in bytes, BE, ulong>
<number of animation curves, LE, ulong>
for each curve:
<length of name of this animation curve, LE, ulong>
<name of this animation curve, char>
<number of keyframes in this curve, LE, ulong>
for each keyframe:
<time, LE, double>
<value, LE, double>
<in tangent X, LE, float>
<in tangent Y, LE, float>
<out tangent X, LE, float>
<out tangent Y, LE, float>
<pre infinity, LE, ulong>
<post infinity, LE, ulong>
---- end ---
---- NURB FORM ----
"NURB"
<length of this form, in bytes, BE, ulong>
<length of name of the curve, LE, ulong>
<name of the curve, char>
<degree of the curve, LE, ulong>
<form of the curve, LE, ulong
0: Invalid
1: Open
2: Closed
3: Periodic
4: Last>
<num control vertices in the curve, LE, ulong>
for each control vertice:
<X pos for the CV, LE, double???>
<Y pos for the CV, LE, double???>
<Z pos for the CV, LE, double???>
<W pos for the CV, LE, double???>
<num knots in the curve, LE, ulong>
for each knot:
<index to the CV which is a knot, LE, double???>
---- end ---
---- PATH FORM ----
"PATH"
<length of this form, in bytes, BE, ulong>
<number of paths, LE, ulong>
for each path:
<length of name of path, LE, ulong>
<name of path, char>
<follow?, LE, bool>
<follow axis: X = 0, Y = 1, Z = 2, W? = 3, LE, ulong>
<up axis: X = 0, Y = 1, Z = 2, W? = 3, LE, ulong>
<length of name of uValue, LE, ulong>
<uValue: str ref, char>
<length of name of frontTwist, LE, ulong>
<frontTwist: str ref, char>
<length of name of upTwist, LE, ulong>
<upTwist: str ref, char>
<length of name of sideTwist, LE, ulong>
<sideTwist: str ref, char>
<start time, LE, double>
<end time, LE, double>
<length of name of curve, LE, ulong>
<curve: str ref, char>
<parametric length?, LE, bool>
<num segments, LE, ulong>
for each segment:
<segment length, LE, double>
---- end ---
---- LEAD FORM ----
"LEAD"
<length of this form, in bytes, BE, ulong>
<number of leaders, LE, ulong>
for each leader:
<length of name of leader, LE, ulong>
<name of leader, char>
<length of name of motionPath, LE, ulong>
<motionPath: str ref, char>
<length of name of transX, LE, ulong>
<transX: str ref, char>
<length of name of transY, LE, ulong>
<transY: str ref, char>
<length of name of transZ, LE, ulong>
<transZ: str ref, char>
<length of name of rotX, LE, ulong>
<rotX: str ref, char>
<length of name of rotY, LE, ulong>
<rotY: str ref, char>
<length of name of rotZ, LE, ulong>
<rotZ: str ref, char>
<default translateX, LE, double>
<default translateY, LE, double>
<default translateZ, LE, double>
<default rotation X, LE, double>
<default rotation Y, LE, double>
<default rotation Z, LE, double>
<rotate order, char * 4>
---- end ---
---- FOLW FORM ----
"FOLW"
<length of this form, in bytes, BE, ulong>
<number of followers, LE, ulong>
for each follower:
<length of name of follower, LE, ulong>
<name of follower,char>
<length of name of leader, LE, ulong>
<name of leader, char>
<length of sobGroup type, LE, ulong>
<sobGroup type, char>
<length of sobGroup name, LE, ulong>
<sobGroup name, char>
<length of name of transX, LE, ulong>
<transX: str ref, char>
<length of name of transY, LE, ulong>
<transY: str ref, char>
<length of name of transZ, LE, ulong>
<transZ: str ref, char>
<length of name of rotX, LE, ulong>
<rotX: str ref, char>
<length of name of rotY, LE, ulong>
<rotY: str ref, char>
<length of name of rotZ, LE, ulong>
<rotZ: str ref, char>
<default translateX, LE, double>
<default translateY, LE, double>
<default translateZ, LE, double>
<default rotation X, LE, double>
<default rotation Y, LE, double>
<default rotation Z, LE, double>
<rotate order, char * 4>
---- end ---
---- CMRA FORM ----
"CMRA"
<length of this form, in bytes, BE, ulong>
<number of cameras, LE, ulong>
for each camera:
<length of name of camera, LE, ulong>
<name of camera, char>
<length of name of eyePoint, LE, ulong>
<eyePoint: str ref, char>
<length of name of centreOfInterest, LE, ulong>
<centreOfInterest: str ref, char>
<length of name of twist, LE, ulong>
<twist: str ref, char>
<length of name of focalLength, LE, ulong>
<focalLength: str ref, char>
<default focal length, LE, double>
<width of frame, LE, double>
<height of frame, LE, double>
<near clip plane, LE, double>
<far clip plane, LE, double>
---- end ---
##########################################################################################################################
For file format in VB6, look at NISEd Source.