< FF8Revision as of 18:21, 16 February 2019 by my_wiki>MaKi
file is different than field [ONE]
| Offset
|
Length
|
Description
|
| 0x00
|
uint
|
EOF
|
| 0x04
|
(TIM_height * (TIM_width * 4) ) / 2 + 64
|
TIM texture
|
| *(this) != x 10 00 00 00 08 00 00 00
|
Varies
|
Chara
|
Chara
| Offset
|
Length
|
Description
|
| 0x00
|
uint
|
bone section? length (shift left 6)
|
| 0x04
|
uint
|
unknown struct size. Multiply by 8
|
| 0x08
|
uint
|
unknown size
|
| ??
|
uint
|
32 * *(dword_24FEE48[v24] + 36))
|
| 0x38
|
uint
|
section 12 pointer + 2
|
section 12 (arg4 == 0x12)
names are WIP, I'm not quite sure if it's animation, geometry or bones...
| Offset
|
Length
|
Description
|
| 0x00 + ( i==0 ? 0 : sizeof(entry[i-1]))
|
sizeof(entry)
|
while entry.countOfEntries != null
|
- there's no count for these objects, so you have to read all entries one-by-one. In order to understand when to stop you have to check if reading new entry.countOfEntities == 0
Entry:
| Offset
|
Length
|
Description
|
| 0x00
|
ushort
|
count of entities
|
| 0x02
|
ushort
|
count of bone rotations
|
| 0x04 + (entityID * (countOfBoneRot * 6) + 6)
|
6 + (countOfBoneRotations*6)
|
entityObject
|
entityObject:
| Offset
|
Length
|
Description
|
| 0x00
|
short
|
X offset
|
| 0x02
|
short
|
Z offset
|
| 0x04
|
short
|
Y (up) offset
|
| 0x06 + (boneID*6)
|
short
|
Bone[boneID].RotX
|
| 0x08 + (boneID*6)
|
short
|
Bone[boneID].RotZ
|
| 0x0A + (boneID*6)
|
short
|
Bone[boneID].RotY
|