This page is about the original Bundle format, used only during development. For the version used in retail titles, see
Bundle 2.
The Bundle container is the core file format used in development builds of Burnout 5/Paradise, Black (Xbox 360), and Black 2 (Xbox 360). It is not used in any retail titles. Each Bundle holds one or more resources (assets) and contains information about each resource, such as its size, type, compression, alignment, and so on.
The Bundle format underwent at least five iterations during its use from early 2006 to early-mid 2007. At present, only files using Bundle version 3, 4, and 5 have been discovered. It was succeeded by the Bundle 2 container.
Memory types
Separate data chunks are used to define what memory type resources are loaded into. These chunks are platform specific (see base resource types). Keep these in mind when viewing the structures.
Resources always have data in Main Memory. If the resource is split, headers are loaded into Main Memory, while the other portion is typically loaded into Physical on Xbox 360. In resource documentation, these will be simplified to a "secondary" type. Resources only ever have primary and secondary portions.
Keep these in mind when viewing the structures.
Structures
The original Bundle format's versions were treated more like additions to the previous version. Thus, rather than a full structure for each, only their additions are described here.
Bundle
PlayStation 3
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x4 |
char[4] |
macMagicNumber |
Bundle magic |
bndl
|
0x4 |
0x4 |
uint32_t |
muVersion |
Bundle version |
3 in base, 4 in V4, 5 in V5
|
0x8 |
0x4 |
uint32_t |
muResourceEntriesCount |
Number of resources in the bundle |
|
0xC |
0x30 |
BaseResourceDescriptor[6] |
|
Size and alignment of each chunk |
|
0x3C |
0x18 |
uint32_t[6] |
|
Memory address of each chunk |
|
0x54 |
0x4 |
uint32_t |
|
Resource IDs offset |
|
0x58 |
0x4 |
uint32_t |
muResourceEntriesOffset |
Resource entries offset |
|
0x5C |
0x4 |
uint32_t |
|
Imports offset |
|
0x60 |
0x4 |
uint32_t |
muResourceDataOffset |
Resource data offset |
|
0x64 |
0x4 |
uint32_t |
muPlatform |
Platform the bundle was built for |
See Platform
|
Xbox 360
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x4 |
char[4] |
macMagicNumber |
Bundle magic |
bndl
|
0x4 |
0x4 |
uint32_t |
muVersion |
Bundle version |
3 in base, 4 in V4, 5 in V5
|
0x8 |
0x4 |
uint32_t |
muResourceEntriesCount |
Number of resources in the bundle |
|
0xC |
0x28 |
BaseResourceDescriptor[5] |
|
Size and alignment of each chunk |
|
0x34 |
0x14 |
uint32_t[5] |
|
Memory address of each chunk |
|
0x48 |
0x4 |
uint32_t |
|
Resource IDs offset |
|
0x4C |
0x4 |
uint32_t |
muResourceEntriesOffset |
Resource entries offset |
|
0x50 |
0x4 |
uint32_t |
|
Imports offset |
|
0x54 |
0x4 |
uint32_t |
muResourceDataOffset |
Resource data offset |
|
0x58 |
0x4 |
uint32_t |
muPlatform |
Platform the bundle was built for |
See Platform
|
PC
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x4 |
char[4] |
macMagicNumber |
Bundle magic |
bndl
|
0x4 |
0x4 |
uint32_t |
muVersion |
Bundle version |
3 in base, 4 in V4, 5 in V5
|
0x8 |
0x4 |
uint32_t |
muResourceEntriesCount |
Number of resources in the bundle |
|
0xC |
0x20 |
BaseResourceDescriptor[4] |
|
Size and alignment of each chunk |
|
0x2C |
0x10 |
uint32_t[4] |
|
Memory address of each chunk |
|
0x3C |
0x4 |
uint32_t |
|
Resource IDs offset |
|
0x40 |
0x4 |
uint32_t |
muResourceEntriesOffset |
Resource entries offset |
|
0x44 |
0x4 |
uint32_t |
|
Imports offset |
|
0x48 |
0x4 |
uint32_t |
muResourceDataOffset |
Resource data offset |
|
0x4C |
0x4 |
uint32_t |
muPlatform |
Platform the bundle was built for |
See Platform
|
ResourceEntry
PlayStation 3
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x4 |
uint32_t |
|
Resource data memory address |
|
0x4 |
0x4 |
uint32_t |
muImportOffset |
Bundle imports offset |
|
0x8 |
0x4 |
uint32_t |
muResourceTypeId |
Resource type |
See ResourceType
|
0xC |
0x30 |
BaseResourceDescriptor[6] |
mauSizeAndAlignmentOnDisk |
Resource sizes in bundle Compressed size if compression used |
|
0x3C |
0x30 |
BaseResourceDescriptor[6] |
mauDiskOffset |
Offsets in bundle |
Alignment is unused (always 1)
|
0x6C |
0x18 |
uint32_t[6] |
|
Memory addresses |
Swapped endian
|
Xbox 360
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x4 |
uint32_t |
|
Resource data memory address |
|
0x4 |
0x4 |
uint32_t |
muImportOffset |
Bundle imports offset |
|
0x8 |
0x4 |
uint32_t |
muResourceTypeId |
Resource type |
See ResourceType
|
0xC |
0x28 |
BaseResourceDescriptor[5] |
mauSizeAndAlignmentOnDisk |
Resource sizes in bundle Compressed size if compression used |
|
0x34 |
0x28 |
BaseResourceDescriptor[5] |
mauDiskOffset |
Offsets in bundle |
Alignment is unused (always 1)
|
0x5C |
0x14 |
uint32_t[5] |
|
Memory addresses |
Swapped endian
|
PC
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x4 |
uint32_t |
|
Resource data memory address |
|
0x4 |
0x4 |
uint32_t |
muImportOffset |
Bundle imports offset |
|
0x8 |
0x4 |
uint32_t |
muResourceTypeId |
Resource type |
See ResourceType
|
0xC |
0x20 |
BaseResourceDescriptor[4] |
mauSizeAndAlignmentOnDisk |
Resource sizes in bundle Compressed size if compression used |
|
0x2C |
0x20 |
BaseResourceDescriptor[4] |
mauDiskOffset |
Offsets in bundle |
Alignment is unused (always 1)
|
0x4C |
0x10 |
uint32_t[4] |
|
Memory addresses |
Swapped endian
|
Imports
This is not a structure as such; rather, it is uint32_t muImportCount
followed by four bytes of padding, then a set of import entries of an amount defined by the aforementioned count.
ImportEntry
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x8 |
ID |
mResourceId |
Resource name CRC32 |
|
0x8 |
0x4 |
uint32_t |
muOffset |
|
|
0xC |
0x4 |
|
|
padding |
|
rw::BaseResourceDescriptor
This structure contains fields for size and alignment, though alignment sometimes goes unused.
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x4 |
uint32_t |
m_size |
Size or offset |
|
0x4 |
0x4 |
uint32_t |
m_alignment |
Alignment |
|
Bundle (Additions)
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x5C |
0x4 |
uint32_t |
muFlags |
Bundle flags |
See Flags
|
0x60 |
0x4 |
uint32_t |
|
Number of compressed resources |
|
0x64 |
0x4 |
uint32_t |
|
Compression information offset |
|
Compression Information
PlayStation 3
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x30 |
BaseResourceDescriptor[6] |
mauUncompressedSizeAndAlignment |
Uncompressed sizes |
|
Xbox 360
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x28 |
BaseResourceDescriptor[5] |
mauUncompressedSizeAndAlignment |
Uncompressed sizes |
|
PC
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x20 |
BaseResourceDescriptor[4] |
mauUncompressedSizeAndAlignment |
Uncompressed sizes |
|
Bundle (Additions)
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x68 |
0x4 |
uint32_t |
|
|
No idea what this does
|
0x6C |
0x4 |
uint32_t |
|
|
Also no idea what this does
|
Enumerations
Platform
Name |
Value |
Comments
|
? |
1 |
PC
|
? |
2 |
Xbox 360
|
? |
3 |
PlayStation 3
|
Flags
Name |
Value |
Comments
|
IsCompressed |
0x1 |
Resources are zlib compressed
|
ResourceType
See Resource Types.
Base resource types
PlayStation 3
Name |
Index
|
main memory |
0
|
disposable |
1
|
uninitialized |
2
|
disposable uninitialized |
3
|
graphics system |
4
|
graphics local |
5
|
Xbox 360
Name |
Index
|
main memory |
0
|
disposable |
1
|
physical |
2
|
uninitialized |
3
|
disposable uninitialized |
4
|
PC
Name |
Index
|
main memory |
0
|
disposable |
1
|
uninitialized |
2
|
disposable uninitialized |
3
|