Call of Duty 4: FastFile Format: Difference between revisions

From COD Modding & Mapping Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 8: Line 8:
*Byte 8-11: ''unknown'', might be a flag
*Byte 8-11: ''unknown'', might be a flag
*Byte 12-43: ''unknown''
*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 44-47: equal to number of entries in "1st index" and amount of (model tag/joint/notetrack) strings (times 4 for index length)
*Byte 48-51: separator? (FF FF FF FF)
*Byte 48-51: separator? (FF FF FF FF)
*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)
Line 73: Line 73:


* 01 00 00 00 - physpreset
* 01 00 00 00 - physpreset
* 02 00 00 00 - xanim
* 03 00 00 00 - xmodel
* 03 00 00 00 - xmodel
* 04 00 00 00 - material
* 04 00 00 00 - material
* 05 00 00 00 - shader
* 05 00 00 00 - shader / techset
* 06 00 00 00 - image?
* 06 00 00 00 - image?
* 0B 00 00 00 - map_ents (d3dbsp)
* 0C 00 00 00 - related to col_map_mp (d3dbsp)
* 0E 00 00 00 - related to game_map_mp (d3dbsp)
* 10 00 00 00 - related to col_map_mp / gfx_map (d3dbsp)
* 13 00 00 00 - font
* 14 00 00 00 - menu
* 14 00 00 00 - menu
* 16 00 00 00 - localized string asset
* 17 00 00 00 - physpreset??
* 19 00 00 00 - fx
* 19 00 00 00 - fx
* 1F 00 00 00 - string / raw file / fastfile name
* 1F 00 00 00 - string / raw file / fastfile name

Revision as of 05:10, 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/joint/notetrack) 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:

  1. $victorybackdrop - mile_high_victory_screen.iwi (699,092 bytes)
  2. $defeatbackdrop - (none)
  3. $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
  • 02 00 00 00 - xanim
  • 03 00 00 00 - xmodel
  • 04 00 00 00 - material
  • 05 00 00 00 - shader / techset
  • 06 00 00 00 - image?
  • 0B 00 00 00 - map_ents (d3dbsp)
  • 0C 00 00 00 - related to col_map_mp (d3dbsp)
  • 0E 00 00 00 - related to game_map_mp (d3dbsp)
  • 10 00 00 00 - related to col_map_mp / gfx_map (d3dbsp)
  • 13 00 00 00 - font
  • 14 00 00 00 - menu
  • 16 00 00 00 - localized string asset
  • 17 00 00 00 - physpreset??
  • 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)