summaryrefslogtreecommitdiff
path: root/vpklib/fileformat.txt
diff options
context:
space:
mode:
Diffstat (limited to 'vpklib/fileformat.txt')
-rw-r--r--vpklib/fileformat.txt49
1 files changed, 49 insertions, 0 deletions
diff --git a/vpklib/fileformat.txt b/vpklib/fileformat.txt
new file mode 100644
index 0000000..af151e2
--- /dev/null
+++ b/vpklib/fileformat.txt
@@ -0,0 +1,49 @@
+On disk format of directory (xxx_dir.vpk. data is in xxx_000.vpk, xxx_001.vpk, ...)
+
+
+id
+records
+ "extension\0" (0 = no more extensions)
+ "dir\0" (0 = no more dirs)
+ "basefilename\0" (0 = no more files of this extension in this dir)
+ orig data file crc
+ int16 metadata size
+ location in data files for level 0 data (word filenum, ulong offset, ulong fsize)
+ location in data files for level 1 data (word filenum, ulong offset, ulong fsize) ..
+ -1.
+ uint8 metadata[]
+
+
+ ..
+ ..
+..
+
+data files
+
+
+
+[x]step0 - class def, format def
+[x]step1 - generator
+[x]step2 - loader
+[ ]step3 - surrounding file monitor tools + ui
+
+
+
+A client of the archive who can't handle their persistent meta data going away (as during
+a reload) can say so, which will cuase their metadata to be copied away at next reload. otherwise,
+a reload will change the address of the meta data and maybe its size/content.
+
+
+
+insert
+
+ case file found:
+ find all files in the same data chunk
+ load data chunk.
+ replace old chunk of data, changing offsets in parts of files that were there.
+ replace offset and crc in old dir record
+ case file not found
+ might need to add new extension
+ might need to add new directory
+ insert new file entry
+ add new data to last chunk