Difference between revisions of "*.VP"
(→Editors) |
|||
Line 59: | Line 59: | ||
To [http://www.descent-freespace.com/ddn/specs/vp/ Descent Network], for getting file structure information before anyone else. | To [http://www.descent-freespace.com/ddn/specs/vp/ Descent Network], for getting file structure information before anyone else. | ||
+ | |||
+ | [[category: File Types]] |
Revision as of 19:10, 4 September 2007
VP files are a packaging file format, used to package multiple files into a single file, while maintaining directory structure. They do not use any sort of compression.
Contents
Viewers
On Win32, the most popular VP viewer is VPView32. However, almost all the editors can also be used to extract files from VPs.
Editors
As of this writing, there are a few different editors.
VPCS
Features an explorer-like interface, and is fairly easy to use to create or modify VPs.
QuickVP
Features a Winzip-like interface, is very easy to use to create, modify, and extract files and directories to/from VPs.
VPMage
Somewhat more difficult to use than VPCS or QuickVP, but also adds the ability to merge VP files, update files already in a VP, and edit files already in a VP.
Maja
The latest VP editor, with the ability to both read and edit VPs. It is possible to place a batch of files anywhere in a VP directory, in contrast to VP Mage, which requires you to import either a "Data" folder or another VP.
File structure
VP files are made up of three main components; the header, followed by the individual files, and finally the index for the entires.
The Header
char header[4]; //Always "VPVP" int version; //As of this version, still 2. int diroffset; //Offset to the file index int direntries; //Number of entries
The files
Files are simply stored in the VP, one right after the other. No spacing or null termination is necessary
The index
The index is a series of "direntries"; each directory has the structure, as seen below.
int offset; //Offset of the file data for this entry. int size; //Size of the file data for this entry char name[32]; //Null-terminated filename, directory name, or ".." for backdir int timestamp; //Time the file was last modified, in unix time.
Each direntry may be a directory, a file, or a backdir. A directory entry signifies the start of a directory, and has the name entry set to the name of the directory; a backdir has the name of "..", and represents the end of a directory.
Because there is no type descriptor inherent to the format, directories and backdirs are identified by the "offset", "size", and "timestamp" entries being set to 0.
All valid VP files should start with the "data" directory as the toplevel.
Note that it isn't necessary at all to add backdirs at the end of a VP file.
Thanks
To Descent Network, for getting file structure information before anyone else.