okay, here we goes:
Header:0x00 (4) PAT0
0x04 (4) String Offset Table
0x08 (4) Version
0x0C (4) Unknown1
0x10 (4) Pipeline offset
0x14 (4) "Texture Reference" (will describe this later)
0x18 (4) Unknown2, one offset that leading to a emtpy space
0x1C (4) Unknown3, often the same as Unknown2
0x20 (4) String Offset Table (Copy)
0x24 (4) Name of animation Offset
0x28 (4) Unknown4
0x2C (2) Frames
0x2E (2) NumEntries/Materials
0x30 (2) How many Textures (String Entries1)
0x32 (2) String Entries 2, often set as "00"
0x34 (4) Unknown5
PipeLine:0x00 (4) How long PipeLine is
0x04 (4) How many Entries/IDs
0x08-1C IDs thingy
dont exactly know how the ID's working but this is importiant:
0x20 (4) It's name in String Offset (Pipelines offset + this offset = string offset)
0x24 (4) "link" offset (Pipeline offset + this offset = "Link" offset)
and the ID and Stirng/pattern offsets repeat on each entries
"Link" Offset:0x00 (4) String Offset, linked to Materials name
0x04 (2) What Texture it will using if Flag is set on "7". if the flag is "5" this is set on "00"
0x06 (2) Flag: 5 using Pattern, 7 is Frozen
0x08 (4) Pattern Animation Offset (Link Offset + this = Pattern Offset). this is set on "00" if the Flag is set on "7"
Pattern Animation offset0x00 (2) Unknown, possibly flag
0x02 (2) Unknown
0x04 (4) unknown, Possible many flags in "bits"
0x08 (4) unknown, always(?) set on 00
0x0C (2) Which Texture will be shown
0x0E (2) Unknown, always(?) set on 00
0x10 (2) Which frame and possible with a flag with it (if it saying 41B8, the 4 is a flag and 1B8 is frame)
Repeat from 0x0C to 0x10 on how many frames
"Texture refserence" Offsethere is special and hard to explain, the textures here comes in order thanks by the "link" offset and it's the order the Pattern Animation in their "texture"
0x00 (4) Offset to their texture name in String Offset
String Table Offset:well, all the names are in here, always in the end of the PAT0s
This is my work and I have done this in more than a year