Difference between revisions of "FF8/WorldMap charaone"
< 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 | + | | 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 | ||
|- | |- | ||
− | | | + | | 0x02 |
| short | | short | ||
| Idle Z offset | | Idle Z offset | ||
|- | |- | ||
− | | | + | | 0x04 |
| short | | short | ||
| Idle Y (up) offset | | Idle Y (up) offset | ||
|- | |- | ||
− | | | + | | 0x06 + (boneID*6) |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
| short | | short | ||
| Bone[boneID].RotX | | Bone[boneID].RotX | ||
|- | |- | ||
− | | | + | | 0x08 + (boneID*6) |
| short | | short | ||
| Bone[boneID].RotZ | | Bone[boneID].RotZ | ||
|- | |- | ||
− | | | + | | 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 |