User Tools

Site Tools


ofp:file_formats:4wvr

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
ofp:file_formats:4wvr [2007/07/10 09:52] – external edit 127.0.0.1ofp:file_formats:4wvr [2024/07/31 12:36] (current) – links added. snakeman
Line 1: Line 1:
-====== WRP 4WVR ======+====== OFP WRP File Format 4WVR ======
  
-Flashpoint wrp files use two different file formats to contain the dataThis document contains information on 4WVR format as used by WrpTool and Visitor 2+[[https://www.pmctactical.org/forum/viewforum.php?f=43|OFP Forum]], [[:ofp|OFP Home]], [[ofp:file_formats|OFP File Formats]], [[ofp:tools|OFP Tools]], [[ofp:missions|OFP Missions]], [[ofp:modeling|OFP 3D Modeling]], [[ofp:terrain|OFP Terrain]]
  
-This document does not discuss the alternate format, OPRW. Both file formats can be used directly by the engine, whether the file exists independently in ~\worlds, or, packed inside a pbo (addon)+**Operation Flashpoint (OFP)** aka ArmA: Cold War Assault (CWA)
  
-See General Wrp format for further info. +**WRP File Format - 4WVR**
  
-"Binarizetool by BIStudio will convert 4WVR to OPRW if desired. + 
 +====== General ====== 
 + 
 +Flashpoint wrp files use two different file formats to contain the data. This document contains information on 4WVR format as used by WrpTool and Visitor 2 
 + 
 +This document does **not** discuss the alternate format, OPRW. Both file formats can be used directly by the engine, whether the file exists independently in ~\worlds, or, packed inside a pbo (addon). 
 + 
 +Binarize tool by BIStudio will convert 4WVR to OPRW if desired.
  
 (some problems exist with 2 versions of binarize) (some problems exist with 2 versions of binarize)
  
-**Conventions**+For a general description of how simple this (or any other) wrp file construct, see 8WVR
  
-<code> 
-Intel byte order, lsb first 
-byte = 1 char = 8 bits 
-ulong = unsigned long, 4 bytes 
-ushort= unsigned short 2 bytes 
-asciiz= variable length zero terminated string. 
-float= 4byte (single precision) 
-</code> 
  
 ====== Structure ====== ====== Structure ======
  
-<code> +<code cpp
-struct +4WVR
 { {
- byte Signature[4]; //"4WVR" + WRP4Header  Header 
- ulong Xsize;       //(=256) cell dimension + Texture     Textures[[...]]; 
- ulong Ysize;       //(=256) cell dimension + Model       Models[[...]]; 
- short Elevations[Ysize][Xsize]; // eg 2*256*256 = 131072 bytes See Note +
- short TextureIndex[Ysize][Xsize]; // eg 2*256*256 = 131072 bytes +</code> 
-     //Each 'index' refers to a filename belowMax value = 511 + 
- Asciiz TextureFilenames[512][32]; + 
-/* +====== WRP4Header ======
-A max of 512 texture files can be listed. Each is held as an asciiz string inside a fixed 32 byte +
-record. Eg max length of filename is 31 characters. +
-  example: data\pi.paa +
-*/+
  
-struct model+<code cpp> 
 +WRP4Header
 { {
- float  TransformMatrix[12]; //see below + char Signature[[4]]; //&quot;4WVR&quot; 
- long   3DobjectIndex;       //the unique ouid for this model + ulong Xsize;       //(=256) cell dimension 
- asciiz Filename[76]; + ulong Ysize      //(=256) cell dimension 
-  //each string is held within a 76 byte record. Therefore filename is 75 chars max. +}
-}[variable]; +
-};+
 </code> </code>
  
-====== Note1 ====== 
  
-TransformMatrix[4][3]; +====== Texture ======
  
-This is the transform matrix used directly by Microsoft DirectX engines+<code cpp> 
 +Texture 
 +
 + ushort Elevations  [[Ysize]][[Xsize]]; // in centimetresSee below 
 + ushort TextureIndex[[Ysize]][[Xsize]]; //Each 'index' refers to a filename below. Range 1..511 
 + Asciiz TextureFilenames[[512]][[32]];  // data\pi.paa\0|data\pi1.paa\0 ..... 
 +
 +</code> 
 + 
 + 
 +====== Elevations ======
  
-In fact, the 'correct' matrix is actually 4 x 4, but the last column always represents 0,0,0,1 thus+Elevations are expressed as an integral of the gridsize.
  
 +Since the gridsize for ofp is a fixed 50 meters, to convert the value into meters:
 <code> <code>
-M11,M12 M13 (0.0) +RealHeight = Elevations[[x]][[y]] * 0.05;
-M21,M22,M23 (0.0) +
-M31,M32,M33 (0.0) +
-M41,M42,M43 (1.0)+
 </code> </code>
  
-and so is never stored. This identical matrix is used for WRP files (both formats) and RTM files. The last row (M41...) happens to be the position of the object X Z Y co-ordinates, and is often referred to separately.  
  
-For further information visit [[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/programmingguide/fixedfunction/transforms/transforms.asp|here]].+====== TextureIndex ======
  
-====== Note2 ======+Each cell on the map references an texture file (pac/paa) and an elevation for that text at that cell position. 
 +Since there could be myriads of 'sea' texture (eg), rather than have each cell list it's texture, it references a texture list via an index. In this way, THE texture which is common to many cells (at sometimes differing elevations) is only stored once. 
 + 
 +A max of 512 texture files can be listed. Each is held as an asciiz string inside a fixed 32 byte record. Eg max length of filename is 31 characters. 
 + 
 +The first entry (effectively index0) is never used. Even though a filename is associated with this entry. it is never accessed. 
 + 
 +====== Model ====== 
 + 
 +<code cpp> 
 +Model 
 +
 + float  TransformMatrix[[4]][[3]]; // see [[Generic|FileFormat Data Types]] 
 + long   ObjectID;              // unique for every entry 
 + asciiz P3DFilename[[76]];       // "data3d\kasna.p3d"; 
 +
 +</code>
  
 The number of models varies from none, to end of file. Each model is 128 bytes in length. The number of models varies from none, to end of file. Each model is 128 bytes in length.
 +
 +Note that this is in marked contrast to an 8WVR file. In 8WVR, there is always a minimum of one entry. The last (or only) entry in an 8WVR has no filename associated with it.
 +
 +
 +====== FilePaths ======
 +
 +Despite the impression given (lack of a leading \) All filenames (pac/paa and p3d files) are HARD WIRED to the (virtual) pboRoot\ directory.
 +
 +The PboRoot\ directory is built in-situ during game load and consists of an index table of all addons from 'anywhere' in the game structure. Eg, the official Addon Directories (plural), the bin\folder, plus any oem addons stated in the command line.
 +
ofp/file_formats/4wvr.1184061152.txt.gz · Last modified: 2009/11/22 08:14 (external edit)

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki

All PMC web site download services are temporarily suspended until web site yearly fees have been recovered, want to download addons/mods? Then Support PMC.

If you are grateful for all the work PMC has done in the past 25 years, use Support PMC page.