-
Notifications
You must be signed in to change notification settings - Fork 30
PCC File Format
Ported from the ME3Explorer Wiki, original page found here
BioWare stores a majority of game resources inside their own proprietary version of Unreal Engine package files, called PCC files. This article covers the uncompressed and compressed structure of PCCs, along with the correlation between file nomenclature and what game resources they store.
If the file is compressed, the tables and data are segmented into chunks, each of which contains a variable number of compressed blocks.

Schematic representation of the compressed PCC file structure
Chunks are preceded by a common header, which contains information about the chunks. The chunks header is 16 bytes in size.
Bytes | Description |
---|---|
4 | Int32 Uncompressed Offset |
4 | Int32 Uncompressed Size |
4 | Int32 Compressed Offset |
4 | Int32 Compressed Size |
Each chunk has a header containing information about the raw compressed data contained in block form. The chunk header is also 16 bytes in size. The number of blocks a chunk has can be calculated by dividing the chunk uncompressed size through the block size.
Bytes | Description |
---|---|
4 | Int32 Magic Number |
4 | Int32 Block Size |
4 | Int32 Compressed Size |
4 | Int32 Uncompressed Size |
Each block also has a header. The block header is 8 bytes in size.
Bytes | Description |
---|---|
4 | Int32 Compressed Size |
4 | Int32 Uncompressed Size |
All PCC files are divided into five parts: header, name table, import table, export table and data objects.
Schematic representation of the uncompressed PCC file structure
The File Header contains basic information about the structure of the PCC. Below is an example extracted from AreaMap_CitHub_Camps.pcc:
Block (hex) | Bytes (dec) | Description |
---|---|---|
0-3 | 4 | Magic Number (0x9E2A83C1) |
4-7 | 4 | Version (0xC202AC = 12714668d = 194/684) |
8-B | 4 | 0x67C |
C-F | 4 | 0xFFFFFFFB = 5 |
10-19 | 10 | 0x4E006F006E006500 (N.o.n.e...) |
1A-1D | 4 | Package Flags (0x8088000D = 2156396557d |
1E-21 | 4 | Package Type Indicator (0 = Normal Package, 1 = Patch Package (only for use in Patch_001.sfar) |
22-25 | 4 | Name Count (0x23 = 25d) |
26-29 | 4 | Pointer to Name Table (0x8E = 142d) |
2A-2D | 4 | Export Count (0x6 = 6d) |
2D-31 | 4 | Pointer to Export Table (0x4c8 = 1224d) |
32-35 | 4 | Import Count (0x5 = 5d) |
36-39 | 4 | Pointer to Import Table (0x43C = 1084h) |
2A-3D | 4 | 0x664 = 1636d |
3E-41 | 4 | 0x67C = 1660h |
42-45 | 4 | 0x0 |
46-49 | 4 | 0x0 |
4A-4D | 4 | 0x0 |
4E-51 | 4 | GUID (0x1241956A = 306287978d) |
52-55 | 4 | GUID (0x48ECB3A7 = 1223472039d) |
56-59 | 4 | GUID (0x8EDAE68B = 2396710539d) |
5A-5D | 4 | GUID (0xB945722C = 3108336172d) |
5E-61 | 4 | Generations (0x1) |
62-65 | 4 | Export Count (0x6 = 6d) |
66-69 | 4 | Name Count (0x23 = 35d) |
6A-6D | 4 | 0x0 = 0d |
6E-71 | 4 | Engine (0x18EF = 6383d) |
72-75 | 4 | 0x3006B = 196715d |
76-79 | 4 | 0x15330000 = 355663872d |
7A-7D | 4 | 0x8AA0000 = 145358848d |
7E-81 | 4 | Compression Type (0 = None, 1 = Zlib, 2 = LZO). Unused if Package Flags does not set Compressed bit. |
82-85 | 4 | Chunk Count (0x0 or 0x1) |
The Name Table contains any name found inside the package (import classes, exports, and export properties, for example. Each name follows this structure:
Bytes | Description |
---|---|
4 | Int32 Count |
Count * (-1) | Each char as WCHAR |
The Import Table contains all classes and objects imported by the PCC. Each entry is 28 bytes in size:
Bytes | Description |
---|---|
8 | Int64 Package Name (entry in Name Table) |
4 | Int64 Class Name (entry in Name Table) |
8 | Int32 Link (entry in Import/Export Table) |
8 | Int64 Import Name (entry in Name Table) |
The Export Table contains all objects stored in the package. Each export can vary in size.
Bytes | Description |
---|---|
4 | Int32 Class (Object Index) |
4 | Int32 Super Class (Object Index) |
4 | Int32 Link |
4 | Int32 Object Name (entry in Name Table) |
4 | Int32 Object Name Number |
4 | Int32 Archetype (Object Index) |
8 | UInt64 Object Flags |
4 | Int32 Data Size |
4 | Int32 Data Offset |
4 | Unknown |
4 | Int32 Count |
4 | Unknown |
16 | GUID |
(Count * 4) | Unknown |
All PCCs follow various naming conventions that specify the game content they store. The tables below summarize these conventions.
Prefix | Description |
---|---|
BioA | Contain most level content, textures, meshes, etc. Rarely, there will be dialogues and related kismet sequences in these files. |
BioD | Contain a majority of plot-related game content. This includes dialogues, cutscenes, matinee tracks, camera actors and scene staging, animation data, FaceFX data, kismet sequence objects, VFX content, GAW triggers, achievement triggers, and much more. There are also meshes/materials/effects in these files and there can be textures, as well. BioD PCC files tend to come in "partners," a main PCC accompanied by a localized version that contains all dialogue-related content. |
BioG | Human male and female meshes and materials for faces, hair, scalps, clothing, and armor. This includes Shepard. |
BioH | Hench/Squadmate-specific files. Contain meshes, materials, effects, combat AI, and more. |
BioP | These are key files. They control very basic things like level streaming, henchmen loading/location/availability, player relocation within a level, and more. |
BioA, BioD, and BioP files are organized by plot mission and/or location.
Abbreviation | Description |
---|---|
Cat001 | From Ashes DLC |
Cat002 | Priority: Thessia |
Cat003 | Priority: Citadel II (the Coup) |
Cat004 | Priority: Cerberus HQ (Cronos Station) |
CerJcb | Arrae: Ex-Cerberus Scientists |
CerMir | Priority: Horizon |
Cit001/2/3/4 | Citadel DLC Missions |
CitApt | Citadel Apartment (Citadel DLC) |
CitCas | Silver Coast Casino (Citadel DLC) |
CitSim | Armax Arsenal Arena (Citadel DLC) |
CitHub | Citadel Station |
End001 | Priority: Earth (before entering the Citadel) |
End002 | Priority: Earth (inside the Citadel) |
Gth001 | Priority: Perseus Veil & Geth Dreadnought |
Gth002 | Priority: Rannoch |
GthLeg | Rannoch: Geth Fighter Squadrons |
GthN7A | Rannoch: Admiral Koris |
Kro001 | Priority: Sur'Kesh |
Kro002 | Priority: Tuchanka |
KroGar | Priority: Palaven |
KroGru | Attican Traverse: Krogan Team |
KroN7a | Tuchanka: Turian Platoon |
KroN7b | Tuchanka: Bomb |
Lev001/2/3/4 | Leviathan DLC |
MPCer | N7: Cerberus Lab |
MPDish | N7: Communication Hub |
MPNov | N7: Cerberus Fighter Base |
MPRctr | N7: Fuel Reactors |
MPSlum | N7: Cerberus Abductions |
MPTwr | N7: Cerberus Attack |
Nor | Normandy Ship |
Omg000/1/2A/3/4 | Omega DLC Missions |
OmgHub | Omega Station (Omega DLC) |
OmgJck | Grissom Academy: Emergency Evacuation |
ProEar | Prologue: Earth |
ProMar | Priority: Mars |