Call of Duty 4: FastFile Format

From COD Modding & Mapping Wiki
Revision as of 22:32, 18 August 2009 by CoDEmanX (talk | contribs) (New page: Image:Under Construction Small.png‎ '''*** Article and investigation in early progress ***''' == Header == *Byte 0-3: decompressed fastfile size minus 44 (0x2C) *Byte 4-47: ''unkn...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

*** Article and investigation in early progress ***


Header

  • Byte 0-3: decompressed fastfile size minus 44 (0x2C)
  • Byte 4-47: unknown
  • Byte 48-51: separator? (FF FF FF FF)
  • Byte 52-55: number of records*
  • Byte 56-63: separator? (FF FF FF FF FF FF FF FF)
  • Byte 64-x: string list (xmodelsurfs?)

* If a file was missing on ff compile, it does not count but the error message is added to the end of the file. There are usually more index entries than the number of records in the header. The given number of records is not equal to the entries in the assetinfo or assetlist file, it's usually higher.


Index

4 byte identifier (fastfile entry type), 4 byte offset (FF FF FF FF = -1, meaning right after the previous block?)

Separator (FF FF FF FF) after last 4-byte couple

Example:

1F 00 00 00 FF FF FF FF  rawfile (plaintext)
05 00 00 00 FF FF FF FF  shader
03 00 00 00 FF FF FF FF  related to xmodel
1F 00 00 00 FF FF FF FF  xmodel data

FF FF FF FF              separator

4A 06 00 00              rawfile length

FF FF FF FF              separator

6D 61 70 73 2F 6D 70 2F  filename:
5F 72 65 70 75 6C 73 65  maps/mp/_repulse.gsc
2E 67 73 63 00           followed by plaintext:
69 6E 69 74 28 29 0D 0A  init()..
7B 0D 0A 09 74 68 72 65  {...thre
61 64 20 70 6C 61 79 65  ad playe
72 63 6F 6E 6E 65 63 74  rconnect
28 29 3B 0D 0A ...       ();..}.

FF FF FF FF              separator

...                      shader (binary data)

...                      xmodel related data

...                      xmodel data (similar to original xmodel file, but nonetheless different)