arma:file_formats:p3d_odol
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| arma:file_formats:p3d_odol [2015/08/22 01:36] – removed obsolete links. snakeman | arma:file_formats:p3d_odol [2024/08/01 08:02] (current) – links added. snakeman | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== ODOL ====== | + | ====== |
| + | |||
| + | [[https:// | ||
| + | |||
| + | **ArmA 1** aka Armed Assault (ArmA) | ||
| P3D File Format - ODOL v40 used in ArmA. | P3D File Format - ODOL v40 used in ArmA. | ||
| - | The following information has been provided by BxBx and included by Mikero | + | The following information has been provided by BxBx and included by Mikero. |
| <code cpp> | <code cpp> | ||
| - | //Legend | + | //Legend |
| - | //byte = 1 char = 8 bits | + | //byte = 1 char = 8 bits |
| //int = 4 byte = 32 bits; signed integer | //int = 4 byte = 32 bits; signed integer | ||
| - | //ulong = unsigned long, 4 bytes | + | //ulong = unsigned long, 4 bytes |
| - | //ushort = unsigned short 2 bytes | + | //ushort = unsigned short 2 bytes |
| - | //asciiz = variable length zero terminated string. | + | //asciiz = variable length zero terminated string. |
| //float = 4 bytes (single precision) | //float = 4 bytes (single precision) | ||
| //bool8 = 1 byte = 8 bits; boolean; 0 or 1 | //bool8 = 1 byte = 8 bits; boolean; 0 or 1 | ||
| - | Blocks in Odol V40 are quite similar to Odol v7 but placed in reverse order. | + | Blocks in Odol V40 are quite similar to Odol v7 but placed in reverse order. |
| - | Resolution table, | + | Resolution table, |
| LOD tables last to first | LOD tables last to first | ||
| - | + | ||
| The same LZ compression is used for LODs as ODOL v7 | The same LZ compression is used for LODs as ODOL v7 | ||
| - | known data: | + | known data: |
| Beginning of file (Header signature) | Beginning of file (Header signature) | ||
| Line 39: | Line 43: | ||
| byte | byte | ||
| - | Asciiz skeleton_name // Note: A Skeleton may not exist | + | Asciiz skeleton_name // Note: A Skeleton may not exist |
| if (*skeleton_name) | if (*skeleton_name) | ||
| { | { | ||
| Line 47: | Line 51: | ||
| { | { | ||
| | | ||
| - | | + | } |
| } | } | ||
| char u7[0x26] | char u7[0x26] | ||
| - | Asciiz modelclass, modelparent // I think purpose this data found values ' | + | Asciiz modelclass, modelparent // I think purpose this data found values ' |
| - | // | + | // |
| char u8[5] // unknown data | char u8[5] // unknown data | ||
| bool8 exist_anims | bool8 exist_anims | ||
| Line 71: | Line 75: | ||
| struct lod[lod_count] | struct lod[lod_count] | ||
| { | { | ||
| - | | + | |
| | | ||
| if (ub1) char uch[11] | if (ub1) char uch[11] | ||
| Line 89: | Line 93: | ||
| | | ||
| } | } | ||
| - | char uch[0x34*textres_count] // some struct with same length | + | char uch[0x34*textres_count] // some struct with same length |
| - | //as textures_in_material | + | //as textures_in_material |
| // I dont work with material now, I skip it. | // I dont work with material now, I skip it. | ||
| } | } | ||
| Line 108: | Line 112: | ||
| char *name; | char *name; | ||
| int selected_faces_count | int selected_faces_count | ||
| - | ushort selected_faces[selected_faces_count] // if selected_faces_count > 0x100 | + | ushort selected_faces[selected_faces_count] // if selected_faces_count > 0x100 |
| // then compresed by LZ | // then compresed by LZ | ||
| int u14; | int u14; | ||
| Line 146: | Line 150: | ||
| I cannot find face.texture_index information, | I cannot find face.texture_index information, | ||
| + | |||
arma/file_formats/p3d_odol.1440207412.txt.gz · Last modified: 2015/08/22 01:36 by snakeman
