Anonymous

Changes

From Final Fantasy Inside

FF8/WorldMap charaone

856 bytes added, 05:25, 23 May 2019
m
32 revisions imported
== Chara ==
 
Always 64 bytes length!
 
UPDATE: Looks like it's 1:1 to MCH:
http://wiki.ffrtt.ru/index.php/FF8/FileFormat_MCH#Model-Data
 
{| class="wikitable"
| 0x00
| uint
| bone section? length (shift left 6)BoneSectionLength
|-
| 0x04
| unknown size
|-
| ??0x0C| uint| count (used as controller local var)|-| 0x10| uint| unknown|-| 0x14| uint| unknown|-| 0x18| uint| unknown|-| 0x1C| uint| unknown|-| 0x20| uint| unknown|-| 0x24| uint| unknown|-| 0x28| uint| unknown|-| 0x2C| uint| unknown|-| 0x30| uint| unknown|-| 0x24
| uint
| 32 * *(dword_24FEE48[v24] + 36))unknown
|-
| 0x38
| uint
| Animation section pointer (0x12)
|-
| 0x3C
| uint
| unknown
|-
| 0x40
| BoneSectionLength<<6
| BoneSection
|}
== Animation section 12 (arg4 == 0x12) == names are WIP, I'm not quite sure if it's animation, geometry or bones...
{| class="wikitable"
| 0x00
| ushort
| countOfEntriescountOfAnimations
|-
| 0x02 + ( entry.Length != 0 ? sizeof(entry[i-1] : 0)
| sizeof(this)
| EntryAnimation
|}
EntryAnimation:
{| class="wikitable"
! Offset
| 0x00
| ushort
| count of entitiesanimation keypoints
|-
| 0x02
| ushort
| count of bone rotationsbones translation frames
|-
| 0x04 + (entityID * (countOfBoneRot * 6) + 6)
| 6 + (countOfBoneRotations*6)
| entityObjectAnimationKeypoint
|}
entityObjectAnimationKeypoint:
{| class="wikitable"
! Offset
| 0x00
| short
| origin X offset
|-
| 0x02
| short
| origin Z offset
|-
| 0x04
| short
| origin Y (up) offset
|-
| 0x06 + (boneID*6)
| Bone[boneID].RotY
|}
 
Case study: First character is Squall in chara.one. Two TIM 8BPP textures. Squall has 8 animations. First animation has one keypoint with 16 bone translations. When moving it plays 2nd animation and has 0x14 keypoints which every have 0x10 bone translations. You can edit origin XYZ offsets for every frame. Due to they way the file is constructed it's not so easy to actually test play other animations.
= source =