<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.hard-light.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Daft+Mugi</id>
	<title>FreeSpace Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.hard-light.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Daft+Mugi"/>
	<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php/Special:Contributions/Daft_Mugi"/>
	<updated>2026-11-15T10:54:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=*.VP&amp;diff=64275</id>
		<title>*.VP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=*.VP&amp;diff=64275"/>
		<updated>2022-12-08T23:22:25Z</updated>

		<summary type="html">&lt;p&gt;Daft Mugi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;VP&#039;&#039;&#039; (&#039;&#039;&#039;V&#039;&#039;&#039;olition &#039;&#039;&#039;P&#039;&#039;&#039;ackage) 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.&lt;br /&gt;
&lt;br /&gt;
==Viewers==&lt;br /&gt;
&lt;br /&gt;
On Win32, the most popular VP viewer is [[VPView32]]. However, almost all the editors can also be used to extract files from VPs.&lt;br /&gt;
&lt;br /&gt;
[[wxVPView]] is modeled on VPView32, but with cross platform support (Win/OSX/Linux)&lt;br /&gt;
&lt;br /&gt;
==Editors==&lt;br /&gt;
&lt;br /&gt;
As of this writing, there are a few different editors.&lt;br /&gt;
&lt;br /&gt;
===VPCS===&lt;br /&gt;
&lt;br /&gt;
Features an explorer-like interface, and is fairly easy to use to create or modify VPs.&lt;br /&gt;
&lt;br /&gt;
===[[QuickVP]]===&lt;br /&gt;
&lt;br /&gt;
Features a Winzip-like interface, is very easy to use to create, modify, and extract files and directories to/from VPs.&lt;br /&gt;
&lt;br /&gt;
===[[VPMage]]===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== [[Maja]] ===&lt;br /&gt;
&lt;br /&gt;
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 VPMage, which requires you to import either a &amp;quot;Data&amp;quot; folder or another VP.&lt;br /&gt;
&lt;br /&gt;
=== [[VPGUI]] ===&lt;br /&gt;
&lt;br /&gt;
Based on .NET 4.5 VPGUI is a new editor with nifty features like drag-and-drop &amp;amp; a browser like history.&lt;br /&gt;
&lt;br /&gt;
==File structure==&lt;br /&gt;
&lt;br /&gt;
VP files are made up of three main components; the header, followed by the individual files, and finally the index for the entries.&lt;br /&gt;
&lt;br /&gt;
===The Header===&lt;br /&gt;
&lt;br /&gt;
 char header[4]; //Always &amp;quot;VPVP&amp;quot;&lt;br /&gt;
 int version;    //As of this version, still 2.&lt;br /&gt;
 int diroffset;  //Offset to the file index&lt;br /&gt;
 int direntries; //Number of entries&lt;br /&gt;
&lt;br /&gt;
=== The files ===&lt;br /&gt;
&lt;br /&gt;
Files are simply stored in the VP, one right after the other. No spacing or null termination is necessary.&lt;br /&gt;
&lt;br /&gt;
=== The index ===&lt;br /&gt;
&lt;br /&gt;
The index is a series of &amp;quot;direntries&amp;quot;; each directory has the structure, as seen below.&lt;br /&gt;
 int offset; //Offset of the file data for this entry.&lt;br /&gt;
 int size; //Size of the file data for this entry&lt;br /&gt;
 char name[32]; //Null-terminated filename, directory name, or &amp;quot;..&amp;quot; for backdir&lt;br /&gt;
 int timestamp; //Time the file was last modified, in unix time.&lt;br /&gt;
 &lt;br /&gt;
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 &amp;quot;..&amp;quot;, and represents the end of a directory.&lt;br /&gt;
&lt;br /&gt;
Because there is no type descriptor inherent to the format, directories are identified by the &amp;quot;size&amp;quot; being set to 0. See [https://github.com/scp-fs2open/fs2open.github.com/blob/c4cf9edd4140829583a287caef0b3ed81ec2b6eb/code/cfile/cfilesystem.cpp#L1012 cfilesystem.cpp].&lt;br /&gt;
&lt;br /&gt;
Timestamps are not used in identifying directories.&lt;br /&gt;
&lt;br /&gt;
VP files cannot contain empty files. See [https://github.com/scp-fs2open/fs2open.github.com/blob/c4cf9edd4140829583a287caef0b3ed81ec2b6eb/code/cfilearchiver/cfilearchiver.cpp#L132 cfilearchiver.cpp].&lt;br /&gt;
&lt;br /&gt;
All valid VP files should start with the &amp;quot;data&amp;quot; directory as the toplevel.&lt;br /&gt;
&lt;br /&gt;
VP files can contain empty directory entries. For example, &amp;quot;sparky_hi_fs2.vp&amp;quot; has an empty &amp;quot;data/fonts/&amp;quot; directory entry.&lt;br /&gt;
&lt;br /&gt;
Note that it isn&#039;t necessary at all to add backdirs at the end of a VP file.&lt;br /&gt;
&lt;br /&gt;
==See Also:==&lt;br /&gt;
&lt;br /&gt;
===[[FreeSpace 2 directory structure]]===&lt;br /&gt;
===[[FS2 Data Structure]]===&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
&lt;br /&gt;
To [http://www.descent-freespace.com/ddn/specs/vp/ Descent Network] ([https://web.archive.org/web/20050329054755/http://www.descent-freespace.com:80/ddn/specs/vp/ archival link)], for getting file structure information before anyone else.&lt;br /&gt;
&lt;br /&gt;
[[category: File Types]]&lt;/div&gt;</summary>
		<author><name>Daft Mugi</name></author>
	</entry>
	<entry>
		<id>https://wiki.hard-light.org/index.php?title=*.VP&amp;diff=64274</id>
		<title>*.VP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hard-light.org/index.php?title=*.VP&amp;diff=64274"/>
		<updated>2022-12-08T21:20:29Z</updated>

		<summary type="html">&lt;p&gt;Daft Mugi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;VP&#039;&#039;&#039; (&#039;&#039;&#039;V&#039;&#039;&#039;olition &#039;&#039;&#039;P&#039;&#039;&#039;ackage) 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.&lt;br /&gt;
&lt;br /&gt;
==Viewers==&lt;br /&gt;
&lt;br /&gt;
On Win32, the most popular VP viewer is [[VPView32]]. However, almost all the editors can also be used to extract files from VPs.&lt;br /&gt;
&lt;br /&gt;
[[wxVPView]] is modeled on VPView32, but with cross platform support (Win/OSX/Linux)&lt;br /&gt;
&lt;br /&gt;
==Editors==&lt;br /&gt;
&lt;br /&gt;
As of this writing, there are a few different editors.&lt;br /&gt;
&lt;br /&gt;
===VPCS===&lt;br /&gt;
&lt;br /&gt;
Features an explorer-like interface, and is fairly easy to use to create or modify VPs.&lt;br /&gt;
&lt;br /&gt;
===[[QuickVP]]===&lt;br /&gt;
&lt;br /&gt;
Features a Winzip-like interface, is very easy to use to create, modify, and extract files and directories to/from VPs.&lt;br /&gt;
&lt;br /&gt;
===[[VPMage]]===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== [[Maja]] ===&lt;br /&gt;
&lt;br /&gt;
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 VPMage, which requires you to import either a &amp;quot;Data&amp;quot; folder or another VP.&lt;br /&gt;
&lt;br /&gt;
=== [[VPGUI]] ===&lt;br /&gt;
&lt;br /&gt;
Based on .NET 4.5 VPGUI is a new editor with nifty features like drag-and-drop &amp;amp; a browser like history.&lt;br /&gt;
&lt;br /&gt;
==File structure==&lt;br /&gt;
&lt;br /&gt;
VP files are made up of three main components; the header, followed by the individual files, and finally the index for the entries.&lt;br /&gt;
&lt;br /&gt;
===The Header===&lt;br /&gt;
&lt;br /&gt;
 char header[4]; //Always &amp;quot;VPVP&amp;quot;&lt;br /&gt;
 int version;    //As of this version, still 2.&lt;br /&gt;
 int diroffset;  //Offset to the file index&lt;br /&gt;
 int direntries; //Number of entries&lt;br /&gt;
&lt;br /&gt;
=== The files ===&lt;br /&gt;
&lt;br /&gt;
Files are simply stored in the VP, one right after the other. No spacing or null termination is necessary.&lt;br /&gt;
&lt;br /&gt;
=== The index ===&lt;br /&gt;
&lt;br /&gt;
The index is a series of &amp;quot;direntries&amp;quot;; each directory has the structure, as seen below.&lt;br /&gt;
 int offset; //Offset of the file data for this entry.&lt;br /&gt;
 int size; //Size of the file data for this entry&lt;br /&gt;
 char name[32]; //Null-terminated filename, directory name, or &amp;quot;..&amp;quot; for backdir&lt;br /&gt;
 int timestamp; //Time the file was last modified, in unix time.&lt;br /&gt;
 &lt;br /&gt;
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 &amp;quot;..&amp;quot;, and represents the end of a directory.&lt;br /&gt;
&lt;br /&gt;
Because there is no type descriptor inherent to the format, directories and backdirs are identified by the &amp;quot;size&amp;quot;, and &amp;quot;timestamp&amp;quot; entries being set to 0.&lt;br /&gt;
&lt;br /&gt;
All valid VP files should start with the &amp;quot;data&amp;quot; directory as the toplevel.&lt;br /&gt;
&lt;br /&gt;
VP files can contain empty directory entries. For example, &amp;quot;sparky_hi_fs2.vp&amp;quot; has an empty &amp;quot;data/fonts/&amp;quot; directory entry.&lt;br /&gt;
&lt;br /&gt;
Note that it isn&#039;t necessary at all to add backdirs at the end of a VP file.&lt;br /&gt;
&lt;br /&gt;
==See Also:==&lt;br /&gt;
&lt;br /&gt;
===[[FreeSpace 2 directory structure]]===&lt;br /&gt;
===[[FS2 Data Structure]]===&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
&lt;br /&gt;
To [http://www.descent-freespace.com/ddn/specs/vp/ Descent Network] ([https://web.archive.org/web/20050329054755/http://www.descent-freespace.com:80/ddn/specs/vp/ archival link)], for getting file structure information before anyone else.&lt;br /&gt;
&lt;br /&gt;
[[category: File Types]]&lt;/div&gt;</summary>
		<author><name>Daft Mugi</name></author>
	</entry>
</feed>