This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
ofp:file_formats:4wvr [2007-07-10 09:52] 127.0.0.1 external edit |
ofp:file_formats:4wvr [2011-06-30 15:30] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== WRP - 4WVR ====== | ||
- | 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). | ||
- | |||
- | See General Wrp format for further info. | ||
- | |||
- | "Binarize" tool by BIStudio will convert 4WVR to OPRW if desired. | ||
- | |||
- | (some problems exist with 2 versions of binarize) | ||
- | |||
- | **Conventions** | ||
- | |||
- | <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 ====== | ||
- | |||
- | <code> | ||
- | struct | ||
- | { | ||
- | byte Signature[4]; //"4WVR" | ||
- | ulong Xsize; //(=256) cell dimension | ||
- | ulong Ysize; //(=256) cell dimension | ||
- | short Elevations[Ysize][Xsize]; // eg 2*256*256 = 131072 bytes See Note | ||
- | short TextureIndex[Ysize][Xsize]; // eg 2*256*256 = 131072 bytes | ||
- | //Each 'index' refers to a filename below. Max value = 511 | ||
- | Asciiz TextureFilenames[512][32]; | ||
- | /* | ||
- | 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 | ||
- | { | ||
- | float TransformMatrix[12]; //see below | ||
- | long 3DobjectIndex; //the unique ouid for this model | ||
- | asciiz Filename[76]; | ||
- | //each string is held within a 76 byte record. Therefore filename is 75 chars max. | ||
- | }[variable]; | ||
- | }; | ||
- | </code> | ||
- | |||
- | ====== Note1 ====== | ||
- | |||
- | TransformMatrix[4][3]; | ||
- | |||
- | This is the transform matrix used directly by Microsoft DirectX engines. | ||
- | |||
- | In fact, the 'correct' matrix is actually 4 x 4, but the last column always represents 0,0,0,1 thus | ||
- | |||
- | <code> | ||
- | M11,M12 M13 (0.0) | ||
- | M21,M22,M23 (0.0) | ||
- | M31,M32,M33 (0.0) | ||
- | M41,M42,M43 (1.0) | ||
- | </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]]. | ||
- | |||
- | ====== Note2 ====== | ||
- | |||
- | The number of models varies from none, to end of file. Each model is 128 bytes in length. |