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 revision Previous revision
ofp:file_formats:4wvr [2011-06-30 15:30]
ofp:file_formats:4wvr [2011-06-30 15:30]
snakeman removed html junk.
Line 1: Line 1:
 +====== WRP File Format 4WVR ======
  
 +**WRP File Format - 4WVR**
 +
 +
 +====== 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)
 +
 +For a general description of how simple this (or any other) wrp file construct, see 8WVR
 +
 +
 +====== Structure ======
 +
 +<code cpp>
 +4WVR
 +{
 + WRP4Header ​ Header
 + Texture ​    ​Textures[[...]];​
 + Model ​      ​Models[[...]];​
 +}
 +</​code>​
 +
 +
 +====== WRP4Header ======
 +
 +<code cpp>
 +WRP4Header
 +{
 + char Signature[[4]];​ //&​quot;​4WVR&​quot;​
 + ulong Xsize; ​      //​(=256) cell dimension
 + ulong Ysize; ​      //​(=256) cell dimension
 +}
 +</​code>​
 +
 +
 +====== Texture ======
 +
 +<code cpp>
 +Texture
 +{
 + ushort Elevations ​ [[Ysize]][[Xsize]];​ // in centimetres. See 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 ======
 +
 +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>​
 +RealHeight = Elevations[[x]][[y]] * 0.05;
 +</​code>​
 +
 +
 +====== TextureIndex ======
 +
 +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.
 +
 +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.txt · Last modified: 2011-06-30 15:30 (external edit)