Here's my current progress:
[] Byte Value, () KeyID, "" String, {} Object
Most numbers are of d-word long integer type.
**********************<Generics>**********************
[0] = Null Character, 0
[10] = New Line
[36] = "$", Seperator
**********************<Headers>**********************
Main Header = "Nullsoft AVS Preset 0.2" [26] [ClearEveryFrame]
EL Header = (-1) [254][255][255][255]
Comment Header = (21,28,24) [21][0][0][0]-[28][0][0][0]-[24][0][0][0]
All Objects Closed by Null [0] (Except EL, for some odd reason)
**********************<Input Blend Modes>**********************
Ignore = 0
Replace = 1
50/50 = 2
Maximum = 3
Additive = 4
Subtractive 1 (Dst-Src) = 5
Subtractive 2 (Src-Dst) = 6
Every Other Line = 6
Every Other Pixel = 8
XOR = 9
Adjustable = 10
Multiply = 11
Buffer Blend = 12
**********************<Output Blend Modes>**********************
Replace = 0
Ignore = 1
Maximum = 2
50/50 = 3
Subtractive 1 (Dst-Src) = 4
Additive = 5
Every Other Line = 6
Subtractive 2 (Src-Dst) = 7
XOR = 8
Every Other Pixel = 9
Multiply = 10
Adjustable = 11
Buffer Blend = 13
**********************<Structure>**********************
{ Main Header
{ EL Header
[37+35*NumberOfNonELObjects+8*NumberOfSubELs+TotalOfSubEL,LongInt] - Still not quite sure on the formula for this one, seems very complex.
[(NOT Enabled)*2+ClearEveryFrame+128][(NOT Enabled)*2+ClearEveryFrame][InputBlend][OutputBlend]
[36]
[InputAdjustBlend,LongInt]
[OutputAdjustBlend,LongInt]
[InputBufferNumber-1,LongInt]
[OutputBufferNumber-1,LongInt]
[InputBufferInvert,LongInt]
[OutputBufferInvert,LongInt]
[EnableOnBeat,LongInt]
[OnBeatFrames,LongInt]
} *THERE'S NO CLOSE!*
{ Comment Header
Comment Text - "Line 1" [10] "Line 2" [10] "Line 3"
} Close
} Close