Saint bugged me in ICQ for *two days* to get this done. I've found out all I can without programming my own bone animator. And I suck a rotational mathmatics. I usally just do vertex manipulation.
Ok this is how .a files work:
You have to load a skeleton (.HRC) file first but that's all you really need. The HRC file tell the system how many bones are there and the leanths and *the order that they are in* (That part is key) Now I dumped some .a files and marked down what I think everything is. I think I messed up my frame 2 offset in the second example, but I discribe enough so you guys can fix it in case I messed up. You have to excuse me as it 6:00am here and I've been tereing these things apart all night. Here's my dumps.
[ALL ROTATIONS ARE INTEL FLOATS]
AAFE.A
-------------------------
offset: data (what it is)
--------------------------
000: 01000000 (animation header)
004: 01000000 (how many frames of animation [1])
008: 15000000 (how many bones there are [21])
00C: 01000200 (always the same w/field humans)
010: 48E86701 (Bounding box1?)
014: 20AC6701 (Bounding box2?)
018: 00000000 (?1)
01C: 00000000 (?2)
020: 00000000 (?3)
024: 00000000 (?4)
028: 00000000 (?5)
02C: 00000000 (?6)
030: 00000000 (?7)
034: 86905841 (Time mark?)
038: 7FD69D3D (frame header?)
03C: 00008743 Bone1 X rotation [270]
040: 00000000 Bone1 Y rotation
044: 00000000 Bone1 Z rotation
048: 00C8AF43 Bone2 X rotation [351.5625]
04C: 00000000 Bone2 Y rotation
050: 00000000 Bone2 Z rotation
054: 00000741 Bone3 X rotation [8.4375]
****************************************
ABCE.A
-------------------------
offset: data (what it is)
--------------------------
000: 01000000 (animation header)
004: 17000000 (how many frames of animation [23])
008: 18000000 (how many bones there are [24])
00C: 01000200 (always the same w/field humans)
010: AC737901 (Bounding box1?)
014: FC1D7901 (Bounding box2?)
018: 00000000 (?1)
01C: 00000000 (?2)
020: 00000000 (?3)
024: 004CB343 (?4)
028: 0044AC43 (?5)
02C: 00000000 (?6)
030: 0351493D (?7)
034: 0CE52441 (Time mark?)
038: 90754DBD (frame header?)
03C: 00008743 Bone1 X rotation [270]
040: 00000000 Bone1 Y rotation
044: 00000000 Bone1 Z rotation
048: 007CB043 Bone2 X rotation [352.96875]
04C: 00E4B143 Bone2 Y rotation [355.78125]
050: 00202342 Bone2 Z rotation [40.78125]
054: 00807741 Bone3 X rotation [15.46875]
...(after the 24 bones)
16C: DFBB2741 (time mark?)
170: AC4939BD (frame header}
174: 00008743 Bone1 X rotation [270]
178: 00000000 Bone1 Y rotation
17C: 00000000 Bone1 Z rotation
180: 0030B143 Bone2 X rotation [354.375]
184: 0098B243 Bone2 Y rotation [357.1875]
188: 00600142 Bone2 Z rotation [32.34375]
18C: 00804A41 Bone3 X rotation [12.65625]
************************************
DF.A (racing chocobo from minigame)
-------------------------
offset: data (what it is)
--------------------------
000: 01000000 (animation header)
004: 14000000 (how many frams of animation [20])
008: 1C000000 (how many bones there are [28])
00C: 01000200 (always the same w/field humans)
010: 50FFED00 (Bounding box1?)
014: 741BEE00 (Bounding box2?)
018: 00000000 (?1)
01C: 00000000 (?2)
020: 00000000 (?3)
024: 00000000 (?4)
028: 00000000 (?5)
02C: 00000000 (?6)
030: 676646BF (?7)
034: E9E55C41 (Time mark?)
038: 45DCEB40 (frame header?)
03C: 004CB343 Bone1 X rotation [358.59375]
040: 00000000 Bone1 Y rotation
044: 40C2B143 Bone1 Z rotation [355.51758]
048: 00E01741 Bone2 X rotation [9.4921875]
...
he order of the bones is exactly the same as the are defined in the HRC file. Now you guys can put your little dudes togeather by following this roadmap.
-halkun