Talk:FA1C39F7
Contents |
Say What?
I`ve been investigating this record format because it is one of the most numerous formats in a lot file that I believe is corrupted. Unfortunately, I have been having some difficulty with the record format as described. Still, I have been able to decode *some* of it. However, as near as I can determine, given that I do not fully understand the format description, the data I am seeing appears to be formatted somewhat differently. In the hope that someone can help me, and that my experience might help others, and not wanting to mess up the existing description, I`m documenting my observations here. Obviously, I am still working on this record at the time of writing.
I start with some relatively simple structures that occur a variable number of times in the record, and build my way up towards the full description:
Blend blocks
MaterialMesh blocks
CoOrdinates blocks
- FLOAT: X
- FLOAT: Y
- FLOAT: Height
- 16 Bytes: Quaternion
Slot blocks
- 7BITSTR: Name
- CoOrdinates block
cObjectBlock blocks
- 7BITSTR: Unknown [Name?]
- DWORD: Unknown, only present for Version=17
- DWORD: Count
- MaterialMesh block: Repeat Count times
cObject blocks
- 7BITSTR: Model
- DWORD: Count
- cObjectBlock block: Repeat Count times
- CoOrdinates block
- DWORD: Count
- Slot block: Repeat Count times
Additional data is present, occasionaly including a counted list of Blend blocks, and sometimes as small as one DWORD. I do not yet know how to determine programaticaly which appears when, nor do I know what the remainder of that data represents.
cAnimatable blocks
- DWORD: BlockID
- DWORD: Unknown (Version?)
- 7BITSTR: Name? Unverified, but appears to always match BlockID
- 7BITSTR: Unknown (Model?)
- DWORD: Unknown
- 7BITSTR: Unknown (Mesh? Material?)
The remaining data described here is apparently not present when Version=15
- DWORD: Unkown
- DWORD: Count
- MaterialMesh block: Repeat Count times
- CoOrdinates block
- DWORD: Count
- Slot block: repeat Count times
- DWORD: Count
- Blend block: repeat Count times
Additional data is present, occasionaly containing 7BITSTRs. I do not yet know how to determine programaticaly what appears when, nor do I know what the remainder of that data represents.
Full Record
- 64 BYTEs: Unknown, always zeroes
- DWORD: BlockID
- DWORD: Version
- 7BITSTR: Name; always matches BlockID
- cObject block: Only if BlockID matches cObject BlockID
- cAnimatable block: Only if Block ID matches cAnimatable BlockID
- cPerson block: Only if BlockID matches cPerson BlockID
Notes
The inexplicably-varying portions of the record are suspected to depend on the fields labeled "(Version?)", but this has yet to be investigated. It seems possible that the cPerson blocks may actualy *contain* cAnimatable blocks, and that cAnimatable blocks may actualy *contain* cObject blocks, but I have been unable to verify this yet, due to the presence of still-unknown data in those blocks. At this time, I have not yet attempted to analyse the cPerson blocks. --GeneralOperationsDirector