Call of Duty 4: FastFile Format: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
mNo edit summary |
||
Line 12: | Line 12: | ||
*Byte 52-55: number of records* ("2nd index", times 8 for index length) | *Byte 52-55: number of records* ("2nd index", times 8 for index length) | ||
*Byte 56-63: separator? (FF FF FF FF FF FF FF FF) | *Byte 56-63: separator? (FF FF FF FF FF FF FF FF) | ||
*Byte 64-x: string list (xmodelsurfs?) --> not always, depends on the content (required offsets are in the FF header) | *Byte 64-x: string list (xmodelsurfs?) --> not always, depends on the content (required offsets are in the FF header)* | ||
<nowiki>*</nowiki> under re-investigation <!-- 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. --> | <nowiki>*</nowiki> under re-investigation <!-- 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. --> | ||
Line 79: | Line 79: | ||
* 14 00 00 00 - menu | * 14 00 00 00 - menu | ||
* 19 00 00 00 - fx | * 19 00 00 00 - fx | ||
* 1F 00 00 00 - string / raw file / fastfile name | |||
* 20 00 00 00 - stringtable (comma separated list) | * 20 00 00 00 - stringtable (comma separated list) | ||
Line 148: | Line 148: | ||
--> | --> | ||
--[[User:CoDEmanX|CoDEmanX]] | --[[User:CoDEmanX|CoDEmanX]] 01:28, 4 November 2009 (UTC) | ||
--[[User:Daevius|Daevius]] 23:59, 1 November 2009 (UTC) | --[[User:Daevius|Daevius]] 23:59, 1 November 2009 (UTC) |
Revision as of 04:28, 4 November 2009
*** Article and investigation in early progress ***
Header
- Byte 0-3: decompressed fastfile size minus 44 (0x2C)
- Byte 4-7: about the total size of referenced data, e.g. the required memory for IWI textures if material files are in the ff
- Byte 8-11: unknown, might be a flag
- Byte 12-43: unknown
- Byte 44-47: equal to number of entries in "1st index" and amount of (model tag?) strings (times 4 for index length)
- Byte 48-51: separator? (FF FF FF FF)
- Byte 52-55: number of records* ("2nd index", times 8 for index length)
- Byte 56-63: separator? (FF FF FF FF FF FF FF FF)
- Byte 64-x: string list (xmodelsurfs?) --> not always, depends on the content (required offsets are in the FF header)*
* under re-investigation
Example: mp_backlot_load.ff
Contains:
- 2x shaders
- 3x materials
- (1x fastfile name)
Materials:
- $victorybackdrop - mile_high_victory_screen.iwi (699,092 bytes)
- $defeatbackdrop - (none)
- $levelbriefing - loadscreen_mp_backlot.iwi (524,316 bytes)
----------- [start of header] 71 03 00 00 decompressed filesize - 44 (hex: 371 + 2C = 39D; dec: 881 + 44 = 925) B8 AA 12 00 size of both IWIs the materials in FF point to - 56 (2x28, 28 bytes = IWI header) 0x12AAB8 = 1,223,352 699,092 + 524,316 = 1,223,408 difference: 56 A4 00 00 00 might be a flag 00 00 00 00 ... empty? E5 00 00 00 unknown 00 00 00 00 ... empty? ----------- [end of header] (44 bytes), [start of index] 00 00 00 00 ... empty? 06 00 00 00 number of records in index (6) FF FF FF FF separator 05 00 00 00 FF FF FF FF 1st: shader 05 00 00 00 FF FF FF FF 2nd: shader 04 00 00 00 FF FF FF FF 3rd: material 04 00 00 00 FF FF FF FF 4th: material 04 00 00 00 FF FF FF FF 5th: material 1F 00 00 00 FF FF FF FF 6th: ff name FF FF FF FF 00 00 00 00 separator / termination ----------- [end of index]
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 + 00 00 00 00 ?
Types
- 01 00 00 00 - physpreset
- 03 00 00 00 - xmodel
- 04 00 00 00 - material
- 05 00 00 00 - shader
- 06 00 00 00 - image?
- 14 00 00 00 - menu
- 19 00 00 00 - fx
- 1F 00 00 00 - string / raw file / fastfile name
- 20 00 00 00 - stringtable (comma separated list)
--CoDEmanX 01:28, 4 November 2009 (UTC)
--Daevius 23:59, 1 November 2009 (UTC)