Difference between revisions of "Anim"
Line 416: | Line 416: | ||
00 00 77 77</pre> | 00 00 77 77</pre> | ||
− | We don't have much info on this Section but the 21th byte | + | We don't have much info on this Section but the 21th byte indicates which Animation will be use with a specific set of properties. |
− | In this case (00) for AnimPointer#01 and (01) for AnimPointer#02 | + | <pre>In this case (00) for AnimPointer#01 and (01) for AnimPointer#02 |
− | If you set both to 00, AnimPointer #01 and #02 will call the same Animation. | + | If you set both to 00, AnimPointer #01 and #02 will call the same Animation.</pre> |
<pre>AnimPointer#03 | <pre>AnimPointer#03 |
Revision as of 02:45, 4 May 2021
Contents
General Information
Chrono Cross
A set of animation instructions wrapped up in a cpt file, one subfile per animation.
Animations are in the following format:
- Frame count (4 bytes)
- Movable joint bitflags (N bytes = 2 x [number of joints] bits (+ padding?))
- Frame pointers (4 bytes each)
- Frames (variable length - first frame is longer than all others, but all others are generally of the same length.)
The movable joint bitflags contain two flags per joint, one controlling rotation, the other translation. The order is joint A rotation, joint A tranlation, joint B rotation, etc...
Frames of animation (Variable length. See below.)
Would you believe this is the easy part? The commands given to articulations in the animation are basically identical to the way that the model's "skeleton" was set up in Section 2. Each command will be 6 bytes long, 2 bytes for each axis. The order of the axes is probably XYZ, as it was in section 2, but I have a hard time thinking in 3D, so anyone's welcome to double check that. The values the command can take range between 0xF000 and 0xFFF, or -4096 to 4095. In the case of rotations, 4096 means 360 degrees.
First frame of animation ( (0xC * # of articulations in the model) bytes)
The first frame of the animation gives two commands to each articulation of the model, presumably in the order that the articulations were defined in Section 2 of the model. Each articulation has 0xC bytes of commands given to it here - 6 bytes of rotation commands followed by 6 bytes of translation commands. The rotations and translations are relative to the model's "default" position as it was set in Section 2.
Other frames of animation ( (6 * # of 1s in the binary of the animated articulation identifier) bytes each)
For each frame after the first, the animation contains only the commands that were defined in the animated articulation identifier, starting with articulation A's rotation, then its translation, then B's rotation, then its translation, etc. For the example of Serge's idle animation given above, the first command in each frame in this section will be the translation command for articulation A, the second command will be the rotation for articulation B, the third command will be the rotation for articulation C, and so on. Note that each command is still relative to the positioning of the articulation in the model's default position (how it was set in Section 2). They are NOT relative to the position of the model in the first frame of the animation or the previous frame of the animation.
Assorted notes
The animations in game don't ever seem to give an articulation both rotations and translations in a given animation. In addition, it seems that any articulation that was translated or rotated at all in the first frame of an animation is always marked in the animated articulation identifier, and therefore always appears in frames of animation after the first. Both of these appear to be quirks of either convention or whatever program Square was using to animate the models. The game's engine doesn't seem to have a problem with articulations receiving both rotation and translation commands, and it's very possible to set an articulation's position in the first frame of animation and lock it there for the duration of the animation by not marking it in the animated articulation identifier.
Example
By Grobycftw
Here's an example of an animation using Dario's overworld model
Every model starts with a main header. This is the new custom main header for Dario's model
06 00 00 00 20 00 00 00 AC 23 00 00 7C 25 00 00 DC 26 00 00 F4 67 00 00 00 00 00 00 C4 69 00 00
The 06 00 00 00 is the number of pointers in the Main Header. They always point to a distance relative to the beginning of the Main Header. Here they point to 5 different Section and to the end of the model.
Main Header Pointers:
- 01 - 20 00 = Section 1 (UV MAP)
- 02 - AC 23 = Section 2 (Model's Skeleton)
- 03 - 7C 25 = Section 3 (Model Loading)
- 04 - DC 26 = Section 4 (Animation)
- 05 - F4 67 = Section 5 (Animation-related)
- 06 - C4 69 = End Pointer
So for our animation what we are looking for is in Section 4/Pointer #4 DC 26 = 26DC -> Points to the "Anim Header" relative to the beginning of the Main Header
Section 4
Here is the new Anim Header (Dario with 1 new animation)
09 00 00 00 2C 00 00 00 50 01 00 00 D4 0F 00 00 B4 14 00 00 10 1C 00 00 80 26 00 00 B0 2D 00 00 CC 33 00 00 E8 39 00 00 18 41 00
Remember each of these Pointers points to an animation relative to the beginning of the Anim Header
09 00 00 00 = Number of Different Animation (Usually Human-model will have 9 Anim) Pointers: (#) (Length)(Animation) 2C 00 = 002C = Anim#1 (124) Empty/Default? 50 01 = 0150 = Anim#2 (E84) Stand By D4 0F = 0FD4 = Anim#3 (4EC) Running (Altered Norris Running Anim) B4 14 = 14B4 = Anim#4 (75C) Walking 10 1C = 1C10 = Anim#5 (A70) Idle 80 26 = 2680 = Anim#6 (730) Climbing (Altered Norris Climb Anim/Originaly Sitting Anim of Dario) B0 2D = 2DB0 = Anim#7 (61C) Turn Head to the Right CC 33 = 33CC = Anim#8 (61C) Turn Head to the Left E8 39 = 3D28 = Anim#9 (730) Climbing (Make New Anim -> Should Be Battle Stance) 18 41 = 4118 = End Pointer
Dario originally didn't have a running and climbing anim, so we made a custom one
Dario Climbing Anim -> Anim#6 (Using Altered Norris Climbing Anim)
Climbing Anim Header (44)
0E 00 00 00 56 54 54 54 54 15 00 00 44 00 00 00 64 01 00 00 D6 01 00 00 48 02 00 00 BA 02 00 00 2C 03 00 00 9E 03 00 00 10 04 00 00 82 04 00 00 F4 04 00 00 66 05 00 00 D8 05 00 00 4A 06 00 00 BC 06 00 00 0E 00 00 00 = Number of Pointers (Frames) in Climbing Anim 56 54 54 54 54 15 00 00 = Joint/Bone Bit Flag? (no idea how this works)
56 54 54 54 54 15 What is this?
56 => ? 54 => ? 54 => ? 54 => ? 54 => ? 15 => ?
The number of frames determine the duration of the animation. (more frames = longer animation)
Pointers (Frames) :
44 00 = 0044 (120) Frame#01/Main Frame 64 01 = 0164 (72) Frame#02 D6 01 = 01D6 (72) Frame#03 48 02 = 0248 (72) Frame#04 BA 02 = 02BA (72) Frame#05 2C 03 = 032C (72) Frame#06 9E 03 = 039E (72) Frame#07 10 04 = 0410 (72) Frame#08 82 04 = 0482 (72) Frame#09 F4 04 = 04F4 (72) Frame#10 66 05 = 0566 (72) Frame#11 D8 05 = 05D8 (72) Frame#12 4A 06 = 064A (72) Frame#13 BC 06 = 06BC (72) Frame#14 (+ 77 77 at end)
The First pointer points to the First frame (Main Frame) 44 00 = 0044 (120) Frame#01/Main Frame
Dario only uses 23 Bones not 24 like Norris so we zeroed the last Bones
Dario Climbing Anim Articulation for Main Frames
Here's Dario Climbing Anim Main Frame
- 01 = 00 00 00 00 00 00 22 00 9E 00 D5 00 -> Translate Model (Norris Climb)
- 02 = 71 00 8F FF 58 00 00 00 00 00 00 00 -> Rotate Model (Norris Climb)
- 03 = 54 00 B2 00 E9 FE 00 00 00 00 00 00 -> Waist (Norris Climb)
- 04 = 24 FF 0A 00 F3 00 00 00 00 00 00 00 -> Neck (Norris Climb)
- 05 = 00 00 00 00 00 00 F4 FF 02 00 00 00 -> Left Shoulder Upper (Norris Climb)
- 06 = FD 02 40 FF 0F 03 00 00 00 00 00 00 -> Left Shoulder Lower (Norris Climb)
- 07 = 00 00 29 00 3D 02 00 00 00 00 00 00 -> Left Elbow (Norris Climb)
- 08 = 1A 02 E9 00 FD FF 00 00 00 00 00 00 -> Left Wrist (Norris Climb)
- 09 = 00 00 00 00 00 00 F4 FF 02 00 00 00 -> Right Shoulder Upper (Norris Climb)
- 10 = 3E FE 0A 00 0D 06 00 00 00 00 00 00 -> Right Shoulder Lower (Norris Climb)
- 11 = 00 00 DC FF 8E 01 00 00 00 00 00 00 -> Right Elbow (Norris Climb)
- 12 = 19 FE 7A FF 40 00 00 00 00 00 00 00 -> Right Wrist (Norris Climb)
- 13 = 00 00 00 00 00 00 00 00 00 00 00 00 -> Upper Cape (Norris Climb) Looks ok
- 14 = 55 00 00 00 FF FF 00 00 00 00 00 00 -> Middle Cape (Dario Walk)
- 15 = 51 FF 00 00 1C 00 12 00 00 00 FC FF -> Bottom Cape (Dario Walk)
- 16 = B5 FF 92 FF FB 01 00 00 00 00 00 00 -> Left Hips Upper X (Norris Climb Corresponding Leg)
- 17 = B5 FF 92 FF FB 01 00 00 00 00 00 00 -> Left Hips Lower X (Custom New)
- 18 = 00 00 00 00 A8 FB 00 00 00 00 00 00 -> Left Knee X (Custom New)
- 19 = 00 00 00 00 6E 01 00 00 00 00 00 00 -> Left Ankle X (Custom New)
- 20 = 00 00 00 00 53 FF 00 00 00 00 00 00 -> Right Hips Upper X (Custom New)
- 21 = F3 F5 9E FD 35 F8 00 00 00 00 00 00 -> Right Hips Lower X (Custom New)
- 22 = 00 00 00 00 00 00 00 00 00 00 00 00 -> Right Knee X (Custom New)
- 23 = 2A 02 33 FF 86 02 00 00 00 00 00 00 -> Right Ankle X (Custom New)
Removed (#24 = 00 00 00 00 00 00 00 00 00 00 00 00 -> Belt Left Pocket Part)
*Best Version Frame#01/Main Frame* 00 00 00 00 00 00 22 00 9E 00 D5 00 71 00 8F FF 58 00 00 00 00 00 00 00 54 00 B2 00 E9 FE 00 00 00 00 00 00 24 FF 0A 00 F3 00 00 00 00 00 00 00 00 00 00 00 00 00 F4 FF 02 00 00 00 FD 02 40 FF 0F 03 00 00 00 00 00 00 00 00 29 00 3D 02 00 00 00 00 00 00 1A 02 E9 00 FD FF 00 00 00 00 00 00 00 00 00 00 00 00 F4 FF 02 00 00 00 3E FE 0A 00 0D 06 00 00 00 00 00 00 00 00 DC FF 8E 01 00 00 00 00 00 00 19 FE 7A FF 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 00 00 00 FF FF 00 00 00 00 00 00 51 FF 00 00 1C 00 12 00 00 00 FC FF B5 FF 92 FF FB 01 00 00 00 00 00 00 B5 FF 92 FF FB 01 00 00 00 00 00 00 00 00 00 00 A8 FB 00 00 00 00 00 00 00 00 00 00 6E 01 00 00 00 00 00 00 B5 FF 92 FF 46 01 00 00 00 00 00 00 B5 FF 92 FF 46 01 00 00 00 00 00 00 00 00 00 00 A8 FB 00 00 00 00 00 00 00 00 00 00 6C FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Dario Climbing Anim Articulation for Sub-Frames
All the Sub-Frame have a different set of articulation than the Main Frame, which makes everything really tough to work with.
Here's Dario Climbing Anim Frame#02 Also here is where it gets a bit messy, I haven't fully understand why and how the bones are call/set.
All the Sub-frames uses only 19 Bones out of the 23 in the Main Frame, when making Dario's running and climbing animation, it seems that it's missing a part of the left leg even though the animation works just fine, I can properly use a part of the leg (which is not noticeable luckily) I'm guessing it has something to do with the "Joint/Bone Bit Flag" but this would require more testing.
*Norris Joint* *Dario Joint* #01 = 24 00 A7 00 DB 00 -> Translate Model -> Translate Model #02 = 65 00 9B FF 7E 00 -> Rotate Model -> Rotate Model #03 = 4B 00 88 00 BB FE -> Waist -> Waist #04 = 3D FF 1B 00 FE 00 -> Neck -> Neck #05 = E5 01 03 00 95 02 -> Left Shoulder -> Left Shoulder #06 = 00 00 29 00 0B 04 -> Left Elbow -> Left Elbow #07 = 28 01 75 00 E1 FF -> Left Hand -> Left Hand #08 = 74 FE 0D 00 AF 05 -> Right Shoulder -> Right Shoulder #09 = 00 00 DC FF E3 01 -> Right Elbow -> Right Elbow #10 = FD FD 72 FF 36 00 -> Right Hand -> Right Hand #11 = 97 00 29 00 00 00 -> Left Hip/Leg -> Middle Cape (Dario Walk perfect) #12 = A8 00 00 00 02 00 -> Left Knee -> Lower Right Cape (Dario Walk perfect) #13 = 00 00 00 00 6E 01 -> Left Foot -> Left Leg (Use Norris Climb) #14 = E2 FF 82 FF 86 01 -> Right Leg -> Left Knee #15 = 00 00 00 00 9C FD -> Right Knee -> Left Foot #16 = 00 00 00 00 78 FF -> Right Foot -> Right Leg Upper #17 = D7 F5 75 FD BF F7 -> Belt Part? -> Right Leg Lower #18 = 0A 00 00 00 00 00 -> Belt Buckle -> Right Knee #19 = 19 02 3D FF 71 02 -> Belt Part? -> Right Foot
(Raw New Climbing Anim Frame #02 to #14)
Frame#02 (72) => 72=114 , 114/6 => 19 Bones 24 00 A7 00 DB 00 65 00 9B FF 7E 00 4B 00 88 00 BB FE 3D FF 1B 00 FE 00 E5 01 03 00 95 02 00 00 29 00 0B 04 28 01 75 00 E1 FF 74 FE 0D 00 AF 05 00 00 DC FF E3 01 FD FD 72 FF 36 00 97 00 29 00 00 00 A8 00 00 00 02 00 B5 FF 92 FF 09 02 00 00 00 00 A8 FB 00 00 00 00 6E 01 B5 FF 92 FF 86 02 00 00 00 00 A8 FF 00 00 00 00 A8 FB 00 00 00 00 6C FF Frame#03 (72) 24 00 B8 00 F3 00 44 00 BC FF D3 00 33 00 44 00 6A FE 7F FF 22 00 04 01 60 00 4B FF 89 02 00 00 29 00 9B 04 37 00 F9 FF C6 FF 74 FE 53 00 6B 05 00 00 DC FF 93 01 E3 FD 6B FF 23 00 4C 00 1E 00 C5 FF CD 00 00 00 FF FF B5 FF 92 FF 8F 01 00 00 00 00 05 FC 00 00 00 00 87 01 B5 FF 92 FF 9F 02 00 00 00 00 A8 FF 00 00 00 00 A8 FB 00 00 00 00 89 FF Frame#04 (72) 1F 00 C2 00 07 01 18 00 E8 FF 28 01 13 00 07 00 1B FE DC FF 18 00 08 01 0B 00 F8 FE B4 03 00 00 29 00 C2 03 6A 00 F7 FF C7 FF 54 FE E1 00 62 05 00 00 DC FF A1 00 D0 FD 66 FF 09 00 FE FF 0E 00 87 FF A8 00 00 00 F4 FF B5 FF 92 FF 07 01 00 00 00 00 6A FC 00 00 00 00 94 01 B5 FF 92 FF A7 02 00 00 00 00 A8 FF 00 00 00 00 A8 FB 00 00 00 00 D2 FF Frame#05 (72) 10 00 BC 00 08 01 E8 FF 18 00 4F 01 F1 FF C7 FF D1 FD 4C 00 14 00 2D 01 CD FF 26 FF BC 04 00 00 29 00 3F 03 DE 00 0A 00 CE FF 3D FE 2C 01 F7 04 00 00 DC FF EB 00 C6 FD 63 FF ED FF C9 FF FB FF 5A FF 55 00 00 00 E5 FF B5 FF 92 FF D8 00 00 00 00 00 DF FC 00 00 00 00 87 01 B5 FF 92 FF BF 02 00 00 00 00 A8 FF 00 00 00 00 A8 FB 00 00 00 00 36 00 Frame#06 (72) FA FF B0 00 FD 00 BC FF 44 00 0F 01 D4 FF 8D FF 0C FE AC 00 0A 00 2C 01 14 00 99 FF 46 05 00 00 29 00 9E 02 6E 01 2B 00 D8 FF EA FD 20 01 25 04 00 00 DC FF C9 01 C9 FD 65 FF D2 FF B6 FF E7 FF 42 FF DE FF 00 00 C3 FF B5 FF 92 FF 62 00 00 00 00 00 6D FD 00 00 00 00 55 01 B5 FF 92 FF DD 02 00 00 00 00 A8 FF 00 00 00 00 A8 FB 00 00 00 00 A3 00 Frame#07 (72) E7 FF A3 00 DE 00 9B FF 65 00 98 00 B3 FF 59 FF 8C FE ED 00 FC FF 1B 01 F8 00 F5 FF E8 05 00 00 29 00 CA 01 F1 01 4F 00 E2 FF A0 FD CC 00 3D 03 00 00 DC FF B8 02 DB FD 6B FF BA FF BB FF D6 FF 37 FF 04 00 00 00 B4 FF B5 FF 92 FF 5F 00 00 00 00 00 0F FE 00 00 00 00 41 00 B5 FF 92 FF 3C 03 00 00 00 00 A8 FF 00 00 00 00 A8 FB 00 00 00 00 08 01 Frame#08 (72) DE FF 9E 00 D5 00 8F FF 71 00 58 00 A4 FF 45 FF E9 FE FA 00 FA FF F7 00 A4 01 F7 FF 1D 06 00 00 29 00 6B 01 40 02 6A 00 E9 FF 9A FD D7 00 B1 02 00 00 DC FF 81 02 00 FE 77 FF A9 FF C7 FF C9 FF 35 FF 55 00 00 00 A9 FF B5 FF 92 FF 06 00 00 00 00 00 2F FF 00 00 00 00 53 FF B5 FF 92 FF ED 03 00 00 00 00 A8 FF 00 00 00 00 A8 FB 00 00 00 00 51 01 Frame#09 (72) DD FF A7 00 DB 00 9B FF 65 00 7E 00 B4 FF 75 FF C0 FE D7 00 E7 FF FB 00 9D 01 E5 FF D8 05 00 00 29 00 95 01 5B 02 80 00 EE FF 8C FE 5F 00 2D 02 00 00 DC FF 2E 04 F0 FE C3 FF AF FF CE FF C4 FF 35 FF A8 00 00 00 A5 FF B5 FF 92 FF 7F 00 00 00 00 00 71 FD 00 00 00 00 70 FF B5 FF 92 FF FB 03 00 00 00 00 A8 FF 00 00 00 00 A8 FB 00 00 00 00 87 01 Frame#10 (72) DC FF B8 00 F3 00 BC FF 44 00 D3 00 CC FF BD FF 6A FE 95 00 DB FF 06 01 8B 01 93 FF 9C 05 00 00 29 00 3A 01 61 02 98 00 F2 FF 80 FF E2 00 6D 02 00 00 DC FF BB 04 C9 FF 07 00 C6 FF C7 FF C9 FF 35 FF A8 00 00 00 B4 FF B5 FF 92 FF 77 00 00 00 00 00 5A FC 00 00 00 00 B9 FF B5 FF 92 FF 09 04 00 00 00 00 A8 FF 00 00 00 00 A8 FB 00 00 00 00 A0 01 Frame#11 (72) E1 FF C2 00 07 01 E8 FF 18 00 28 01 E8 FF FC FF 1B FE 3B 00 E3 FF 08 01 8D 01 F1 FE B1 05 00 00 29 00 FC FF 58 02 B0 00 F6 FF C8 FF 18 01 A0 03 00 00 DC FF D9 03 9F FF F9 FF E0 FF BB FF D6 FF 37 FF 55 00 00 00 C3 FF B5 FF 92 FF 6F 00 00 00 00 00 9D FB 00 00 00 00 1D 00 B5 FF 92 FF 8F 03 00 00 00 00 A8 FF 00 00 00 00 A8 FB 00 00 00 00 AD 01 Frame#12 (72) F1 FF BC 00 08 01 18 00 E8 FF 4F 01 05 00 39 00 D1 FD D0 FF E6 FF 2D 01 9C 01 92 FE 5D 05 00 00 29 00 04 00 46 02 C6 00 F9 FF FE FF E3 00 AA 04 00 00 DC FF 4A 03 34 FF D6 FF 01 00 B6 FF E7 FF 42 FF 04 00 00 00 D4 FF B5 FF 92 FF AD 00 00 00 00 00 4A FB 00 00 00 00 8A 00 B5 FF 92 FF 07 03 00 00 00 00 A8 FF 00 00 00 00 A8 FB 00 00 00 00 A0 01 Frame#13 (72) 06 00 B0 00 FD 00 44 00 BC FF 0F 01 20 00 6E 00 0C FE 73 FF F3 FF 29 01 23 02 D8 FE 4B 04 00 00 29 00 7D 01 32 02 D8 00 FB FF A8 FF 6B 00 3A 05 00 00 DC FF A6 02 B3 FE AC FF 20 00 FE FF 0E 00 87 FF DE FF 00 00 E5 FF B5 FF 92 FF 3C 01 00 00 00 00 64 FB 00 00 00 00 EF 00 B5 FF 92 FF F8 02 00 00 00 00 A8 FF 00 00 00 00 A8 FB 00 00 00 00 6E 01 Frame#14 (72) 19 00 A3 00 DE 00 65 00 9B FF 98 00 40 00 9B 00 92 FE 37 FF 06 00 12 01 B2 02 4B FF 7C 03 00 00 29 00 7F 02 21 02 E5 00 FD FF B5 FE 1A 00 E5 05 00 00 DC FF C9 01 46 FE 89 FF 37 00 97 00 29 00 00 00 04 00 00 00 F4 FF B5 FF 92 FF ED 01 00 00 00 00 70 FB 00 00 00 00 38 01 B5 FF 92 FF D2 02 00 00 00 00 A8 FF 00 00 00 00 A8 FB 00 00 00 00 5A 00 (+77 77)
We had problem with dario's Legs when making both running and climbing animation, one of his leg was perfect but not the other one,
so we simply copied the values and mirrored every frame with slight alteration giving a great result.
Here's Dario's left foot original corresponding frame values for his Climbing anim :
LeftFoot XX XX YY YY ZZ ZZ Frame#01 00 00 00 00 6E 01 00 00 00 00 00 00 Frame#02 00 00 00 00 6E 01 Frame#03 00 00 00 00 87 01 Frame#04 00 00 00 00 94 01 Frame#05 00 00 00 00 87 01 Frame#06 00 00 00 00 55 01 Frame#07 00 00 00 00 41 00 Frame#08 00 00 00 00 53 FF Frame#09 00 00 00 00 70 FF Frame#10 00 00 00 00 B9 FF Frame#11 00 00 00 00 1D 00 Frame#12 00 00 00 00 8A 00 Frame#13 00 00 00 00 EF 00 Frame#14 00 00 00 00 38 01 (To Make Opposite Leg) set Frame#08 => Frame#01 (ajusted) Frame#08 => Frame#02 (ajusted) Frame#09 => Frame#03 (ajusted) Here's his right foot with every frame mirrored : RightFoot XX XX YY YY ZZ ZZ Frame#01 00 00 00 00 6C FF 00 00 00 00 00 00 Frame#02 00 00 00 00 6C FF Frame#03 00 00 00 00 89 FF Frame#04 00 00 00 00 D2 FF Frame#05 00 00 00 00 36 00 Frame#06 00 00 00 00 A3 00 Frame#07 00 00 00 00 08 01 Frame#08 00 00 00 00 51 01 Frame#09 00 00 00 00 87 01 Frame#10 00 00 00 00 A0 01 Frame#11 00 00 00 00 AD 01 Frame#12 00 00 00 00 A0 01 Frame#13 00 00 00 00 6E 01 Frame#14 00 00 00 00 5A 00
Section 5
The last section, here (since Dario doesn't have a Section 6) is somewhat of a header for animation, whenever you do an action with your character (either move/climb/pick up item) it ask Section 5 which animation to use.
This is the Section 5 Header
09 00 00 00 2C 00 00 00 50 00 00 00 74 00 00 00 BC 00 00 00 04 01 00 00 28 01 00 00 4C 01 00 00 7C 01 00 00 AC 01 00 00 D0 01 00 00 09 00 00 00 = Number of Different Animation with specific properties AnimPointer#01 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 17 00 15 00(00)00 10 00 40 00 00 00 01 00 09 00 00 00 77 77 AnimPointer#02 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 17 00 15 00(01)00 10 00 40 00 00 00 01 00 09 00 00 00 77 77
We don't have much info on this Section but the 21th byte indicates which Animation will be use with a specific set of properties.
In this case (00) for AnimPointer#01 and (01) for AnimPointer#02 If you set both to 00, AnimPointer #01 and #02 will call the same Animation.
AnimPointer#03 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 17 00 15 00 02 00 08 00 09 00 18 00 40 00 02 00 11 00 77 00 01 00 02 00 09 00 18 00 40 00 02 00 22 00 77 00 01 00 02 00 40 00 00 00 01 00 01 00 EC FF 09 00 00 00 77 77 AnimPointer#04 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 17 00 15 00 03 00 08 00 09 00 20 00 40 00 02 00 11 00 77 00 01 00 02 00 09 00 20 00 40 00 02 00 22 00 77 00 01 00 02 00 40 00 00 00 01 00 01 00 EC FF 09 00 00 00 77 77 AnimPointer#05 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 17 00 15 00 04 00 10 00 40 00 00 00 01 00 09 00 00 00 77 77 AnimPointer#06 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 17 00 15 00 05 00 08 00 40 00 00 00 01 00 09 00 00 00 77 77 AnimPointer#07 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 00 15 00 06 00 08 00 0A 00 09 00 08 00 17 00 15 00 01 00 10 00 40 00 00 00 01 00 09 00 00 00 AnimPointer#08 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 00 15 00 07 00 08 00 0A 00 09 00 08 00 17 00 15 00 01 00 10 00 40 00 00 00 01 00 09 00 00 00 AnimPointer#09 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 17 00 15 00 08 00 10 00 40 00 00 00 01 00 09 00 00 00 77 77
From: Modification