ofp:file_formats:odol
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
ofp:file_formats:odol [2008/07/17 13:07] – updated the info a bit snakeman | ofp:file_formats:odol [2024/07/31 12:44] (current) – links added. snakeman | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== ODOL ====== | + | ====== |
- | OFP ODOL format is called v7 (while ArmA is called v40). This document discusses OFP ODOL. | + | [[https:// |
+ | |||
+ | **Operation Flashpoint (OFP)** aka ArmA: Cold War Assault (CWA) | ||
+ | |||
+ | OFP ODOL file format is called v7 (while ArmA is called v40). This document discusses OFP ODOL. | ||
**Overall** | **Overall** | ||
Line 22: | Line 26: | ||
uint VerticesCount; | uint VerticesCount; | ||
uint VerticesAttribs[VerticesCount]; | uint VerticesAttribs[VerticesCount]; | ||
- | + | ||
uint VerticesCount; | uint VerticesCount; | ||
- | struct UVset[VerticesCount]; | + | struct UVset[VerticesCount]; |
- | + | ||
uint VerticesCount; | uint VerticesCount; | ||
struct VerticesPosition[VerticesCount]; | struct VerticesPosition[VerticesCount]; | ||
- | + | ||
uint VerticesCount; | uint VerticesCount; | ||
struct VerticesNormal[VerticesCount]; | struct VerticesNormal[VerticesCount]; | ||
- | + | ||
float fvalue[12]; | float fvalue[12]; | ||
- | + | ||
uint TexturesCount; | uint TexturesCount; | ||
char Textures[...]; | char Textures[...]; | ||
//read until count of founded char(' | //read until count of founded char(' | ||
- | + | ||
uint Table1stCount; | uint Table1stCount; | ||
- | word Table1st[Table1stCount];// | + | word Table1st[Table1stCount];// |
uint Table2ndCount; | uint Table2ndCount; | ||
word Table2nd[Table2ndCount];// | word Table2nd[Table2ndCount];// | ||
Line 45: | Line 49: | ||
//every vertex is owned only by 1 face | //every vertex is owned only by 1 face | ||
// | // | ||
- | + | ||
uint FacesCount; | uint FacesCount; | ||
uint uvalue; | uint uvalue; | ||
struct Face[FacesCount]; | struct Face[FacesCount]; | ||
- | + | ||
uint uvalue2; // unknown value | uint uvalue2; // unknown value | ||
char uchar[18*uvalue2]; | char uchar[18*uvalue2]; | ||
- | + | ||
- | uint NamedSelectionCount | + | uint NamedSelectionCount |
struct NamedSelection[NamedSelectionCount] | struct NamedSelection[NamedSelectionCount] | ||
- | + | ||
uint NamedPropetiesCount; | uint NamedPropetiesCount; | ||
struct NamedPropeties[NamedPropetiesCount] | struct NamedPropeties[NamedPropetiesCount] | ||
- | + | ||
uint uvalue7;// unknown value ??? | uint uvalue7;// unknown value ??? | ||
struct ustruct[uvalue7]; | struct ustruct[uvalue7]; | ||
- | + | ||
uint ProxiCount; | uint ProxiCount; | ||
struct Proxi[ProxiCount]; | struct Proxi[ProxiCount]; | ||
Line 91: | Line 95: | ||
{ | { | ||
char name[...]; // zero ended string | char name[...]; // zero ended string | ||
- | + | ||
uint VerticesSelectedCount; | uint VerticesSelectedCount; | ||
word VerticesSelected[VerticesSelectedCount];// | word VerticesSelected[VerticesSelectedCount];// | ||
- | + | ||
uint uvalue3; // unknown value | uint uvalue3; // unknown value | ||
word uarray[uvalue3];// | word uarray[uvalue3];// | ||
- | + | ||
uint uvalue4; // unknown value | uint uvalue4; // unknown value | ||
uint uarray[uvalue4];// | uint uarray[uvalue4];// | ||
- | + | ||
- | char uchar; // unknown value | + | char uchar; // unknown value |
- | + | ||
uint uvalue5; // unknown value | uint uvalue5; // unknown value | ||
uint uarray[uvalue5];// | uint uarray[uvalue5];// | ||
- | + | ||
uint FacesSelectedCount; | uint FacesSelectedCount; | ||
word FacessSelected[FacesSelectedCount]// | word FacessSelected[FacesSelectedCount]// | ||
- | + | ||
uint uvalue6; // unknown value | uint uvalue6; // unknown value | ||
char uarray[uvalue6];// | char uarray[uvalue6];// | ||
Line 175: | Line 179: | ||
====== LZ in ODOL ====== | ====== LZ in ODOL ====== | ||
- | Lempel-Ziv compression | + | Lempel-Ziv compression |
- | Note1. | + | Note1. |
- | Rregardless of method, 4 extra bytes representing the checksum exist at end of the data count. | + | Rregardless of method, 4 extra bytes representing the checksum exist at end of the data count. |
Note2. The compression code is identical to that employed by pbo packed structures. However, unlike pbo's, the size of the compressed data is unknown, only it's ultimate length. The code below fudges it. | Note2. The compression code is identical to that employed by pbo packed structures. However, unlike pbo's, the size of the compressed data is unknown, only it's ultimate length. The code below fudges it. |
ofp/file_formats/odol.1216300059.txt.gz · Last modified: 2008/07/17 13:07 (external edit)