Format of Outcast .anm files ============================ * Main header 00000000: signature WORD = 0x4D494E41 ('A','N','I','M')[1] 00000004: unknown00 WORD = 0x01010014 ? 00000008: unknown01 WORD = 0x00000000 ? 0000000C: unknown02 HALF = number of poses? 0000000E: entries HALF = data headers 00000010: datalen WORD = data length 00000014: first data header * Data header 00000000: index HALF = stack index ? 00000002: posmask BYTE = (non)empty flags for 2nd data triad 00000003: angmask BYTE = (non)empty flags for 1st data triad 00000004: 3 data descriptors type 1 (granularity 2) 0000001c: 3 data descriptors type 2 (granularity 4) ** Data descriptor type 1 00000000: unknown00 HALF = seems to be -1 of big anims? 00000002: entries HALF = data chunks 00000004: dataoff WORD = data offset *** 1st describes ? angle deltas[2] *** 2nd describes ? angle deltas *** 3rd describes ? angle deltas ** Data descriptor type 2 00000000: unknown00 HALF = seems to be -1 of big anims? 00000002: entries HALF = data chunks 00000004: dataoff WORD = data offset *** 1st describes ? position deltas *** 2nd describes ? position deltas *** 3rd describes ? position deltas * Data chunks ** type 1 00000000: data[entries] HALF ** type 2 00000000: data[entries] SPFP Footnotes: [1] Types: BYTE = C char HALF = 2 BYTE's little endian WORD = 4 BYTE's 2 WORD's little endian SPFP = single precision floating point 4 BYTE's 2 WORD's (IEEE) [2] Angles conversion data[offset] * 2 * pi / 65535.0