Difference between revisions of "FF8/WorldMap charaone"

From Final Fantasy Inside
< FF8
Jump to navigation Jump to search
my_wiki>MaKi
(section 12 (arg4 == 0x12))
my_wiki>MaKi
(section 12 (arg4 == 0x12))
Line 50: Line 50:
  
 
== section 12 (arg4 == 0x12) ==
 
== section 12 (arg4 == 0x12) ==
 +
 +
names are WIP, I'm not quite sure if it's animation, geometry or bones...
  
 +
{| class="wikitable"
 +
! 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:
 
{| class="wikitable"
 
{| class="wikitable"
 
! Offset
 
! Offset
Line 58: Line 73:
 
| 0x00
 
| 0x00
 
| ushort
 
| ushort
| count of entities (i.e. Squall has one entity) [entity=collection of bone rotations
+
| count of entities
 
|-
 
|-
 
| 0x02
 
| 0x02
Line 65: Line 80:
 
|-
 
|-
 
| 0x04
 
| 0x04
 +
| ushort
 +
| boneEntity
 +
|}
 +
 +
 +
boneEntity:
 +
{| class="wikitable"
 +
! Offset
 +
! Length
 +
! Description
 +
|-
 +
| 0x00
 +
| ushort
 +
| count of entities
 +
|-
 +
| 0x02
 +
| ushort
 +
| count of bone rotations
 +
|-
 +
| 0x04 + (entityID * (countOfBoneRot * 6) + 6)
 +
| ushort
 +
| entityObject
 +
|}
 +
 +
entityObject:
 +
{| class="wikitable"
 +
! Offset
 +
! Length
 +
! Description
 +
|-
 +
| 0x00
 
| short
 
| short
 
| Idle X offset
 
| Idle X offset
 
|-
 
|-
| 0x06
+
| 0x02
 
| short
 
| short
 
| Idle Z offset
 
| Idle Z offset
 
|-
 
|-
| 0x08
+
| 0x04
 
| short
 
| short
 
| Idle Y (up) offset
 
| Idle Y (up) offset
 
|-
 
|-
| 0x0A
+
| 0x06 + (boneID*6)
| short
 
| Idle origin rot X
 
|-
 
| 0x0C
 
| short
 
| Idle origin rot Z
 
|-
 
| 0x0F
 
| short
 
| Idle origin rot Y
 
|-
 
| 0x11 + (boneID*6)
 
 
| short
 
| short
 
| Bone[boneID].RotX
 
| Bone[boneID].RotX
  
 
|-
 
|-
| 0x13 + (boneID*6)
+
| 0x08 + (boneID*6)
 
| short
 
| short
 
| Bone[boneID].RotZ
 
| Bone[boneID].RotZ
  
 
|-
 
|-
| 0x15 + (boneID*6)
+
| 0x0A + (boneID*6)
 
| short
 
| short
 
| Bone[boneID].RotY
 
| Bone[boneID].RotY
|}
 

Revision as of 17:25, 16 February 2019

file is different than field [ONE]

Header

Offset Length Description
0x00 uint EOF
0x04 (TIM_height * (TIM_width * 4) ) / 2 + 64 TIM texture
?? (after TIM textures, usually two?) 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 ushort boneEntity


boneEntity:

Offset Length Description
0x00 ushort count of entities
0x02 ushort count of bone rotations
0x04 + (entityID * (countOfBoneRot * 6) + 6) ushort entityObject

entityObject:

Offset Length Description
0x00 short Idle X offset
0x02 short Idle Z offset
0x04 short Idle Y (up) offset
0x06 + (boneID*6) short Bone[boneID].RotX
0x08 + (boneID*6) short Bone[boneID].RotZ
0x0A + (boneID*6) short Bone[boneID].RotY