Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.

DBPF Format

Hendrik edited this page Nov 12, 2018 · 2 revisions

DBPF Packages

Sims 4 stores multiple resource types in an archive format known by it's magic number of "DBPF".

Archive Extensions

Extension Description
.package General collection of resources
.world Resources comprising a "world"
.dbc Collection of DBPF archives in a single archive

Package Header

96 bytes: "standard" DBPF 2.0 format; DBBF not seen; DBPP is encrypted.

 DWORD    magic ;; "DBPF"
 DWORD    major ;; 2
 DWORD    minor ;; 0
 BYTE[24] unknown1
 DWORD    ;; number of index entries - if zero, size and position also zero
 BYTE[4]  unknown2
 DWORD    ;; size of index on disk in bytes
 BYTE[12] unknown3
 DWORD    index_version ;; always 3
 DWORD    ;; ''position'' of index (absolute)
 BYTE[28] unknown4

The Index

If ''position'' is not zero, at that position:

 DWORD ;; Index type

The count of set bits in the index type is the number of additional DWORD entries in index header:

 DWORD[(for each bit in Index type)]

The number of DWORDs in an actual index entry is 8 and the entry is stored in two parts:

  • index header
  • entry on disk

The header provides the data that is constant to all entries, essentially a kind of compression. However not all data is valid to be included in the index header for all entries.

For each index entry on disk:

 DWORD[(8 - number of bits in Index type)]

Each DWORD in an actual index entry can either come from the header or from the index entry on disk, depending on the bits set in the index type. The order of the DWORDs in an index entry is (with matching bit number):

Bit Number DWORD Description
0 ResourceType
1 ResourceGroup Top byte is a set of flags
2 InstanceHi
3 InstanceLo
4 Chunkoffset Absolute location in package
5 Filesize (lo 31bits) , Unknown1 (hi bit) Length of data in package
6 Memsize Length of uncompressed data
7 Compressed(lo WORD) , Unknown2(hi WORD) Compressed is 0x0000 or 0x5A42/0xFFFF

There are 32 bytes per entry.

Chunk Compression

See Compression.

Clone this wiki locally