I took a look at it last night and bounced some ideas off of qhimm. I think wetween the both of us we almost have to .a format figured out. I'll post what I've got so far. Qhimm or any of you can see if this effects FF7 the way I think.
Ok, all .a files sectioned up into a header and then some "frames" Eash frame is a "pose" that the character is in during an animation. The header tells how many frames there are and other things I haven't quite figured out yet. The frames after that each have thier own header and then rotation data for each bone after that in the order of the bones are orderd in the HRC file. Qhimm says that the rotation data is stored as floats. I'll give an easy example of a single frame animation (the "stainding" pose for the characters) Now a standard male character has 21 bones. these are hip, chest, head, l_chest, l_collar, l_uparm, l_foarm, l_hand, r_chest, r_collar, r_uparm,
r_foarm, r_hand, l_hip, l_femur, l_tibia, l_foot, r_hip, r_femur, r_tibia, and r_foot
The standing model is broken down like this. Oh this is from AAFE.A
Offset: data
-----------
00000000 01000000 .... ;header
00000004 01000000 .... ;Number of frames(01)
00000008 15000000 ....
0000000C 01000200 ....
00000010 48E86701 H.g.
00000014 20AC6701 .g.
00000018 00000000 ....
0000001C 00000000 ....
00000020 00000000 ....
00000024 00000000 ....
00000028 00000000 ....
0000002C 00000000 ....
00000030 00000000 ....
00000034 86905841 ..XA
00000038 7FD69D3D ...= ;Start frame 1
0000003C 00008743 ...C ;hip X
00000040 00000000 .... ;hip Y
00000044 00000000 .... ;hip Z
00000048 00C8AF43 ...C ;chest X
0000004C 00000000 .... ;chest Y
00000050 00000000 .... ;chest Z
00000054 00000741 ...A ;Head X
00000058 00000000 .... ;Head Y
0000005C 00000000 .... ;Head Z
00000060 00C8AF43 ...C ;l_chest X
00000064 006CA243 .l.C ;l_chest Y
00000068 00B09A42 ...B ;l_chest Z
0000006C 00B09A43 ...C ;l_collar X
00000070 0058A743 .X.C ;l_collar Y
00000074 0080F741 ...A ;l_collar Z
...
...
I think you guys get the idea. The question is I don't know the exact format the X, Y , and Z data is. Is it co-ordints or rotation data. Also this is all therory as I haven't actully tried it yet. The numbers line up though. Here's another example of a head with more than one frame. (from AAFF.A)
offset: data
------------
00000000 01000000 .... ;header
00000004 1E000000 .... ;30 frames (0x1E)
00000008 15000000 ....
0000000C 01000200 ....
00000010 207C8C01 |..
00000014 A4318C01 .1..
00000018 00000000 ....
0000001C 00000000 ....
00000020 00000000 ....
00000024 00000000 ....
00000028 00000000 ....
0000002C 00000000 ....
00000030 00000000 ....
00000034 338C4E41 3.NA
00000038 7FD69D3D ...= ;frame 1 data starts
0000003C 00008743 ...C ;hip X
00000040 00000000 .... ;hip Y
00000044 00000000 .... ;hip Z
...
... (later on)
0000014C 7FD69D3D ...= ;start frame 2
00000150 00008743 ...C ;hip X
00000154 00000000 .... ;hip Y
00000158 00000000 .... ;hip Z
0000015C 00C8AF43 ...C (you get the rest)
Now I haven't tested this yet, so my offsets may be off. I still havent counted for the "root bone" and .a files with varible leangths. Probably need to decode the header some more. I hope this helps.
Oh yea, and to the newbies. If you guys think you are all cool and get a big head just 'cause you have the milkshape ".p" thing going. I'll have to reverse the world map on your ass to show who's the l33t ones here...
Unless you guys think you can beat me to it ^_^
-halkun