Bundle (original): Difference between revisions

m
Memory address comments
(Updated layout and some wording in the page to make it more accurate and understandable.)
m (Memory address comments)
 
(16 intermediate revisions by 2 users not shown)
Line 1:
{{hatnote|This page is about the original Bundle format, used only during development. For the version used in retail titles, see [[Bundle 2]].}}
{{subpage|Enumerations|text=Enumerations used in the Bundle container.}}
 
The Bundle container is the core file format ofused Criterion'sin 7th-gendevelopment titlesbuilds withof theBurnout exception5/Paradise, ofBlack Burnout(Xbox Revenge360), and Black 2 (X360Xbox 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, [[Resource Types (Burnout Paradise)|type]], compression, alignment, and so on.
 
The Bundle format has two major versions: the original, using the <code>bndl</code> magic, and Bundle 2, using the <code>bnd2</code> magic. The first Bundle format underwent at least five iterations during its use from early 2006 to early-mid 2007,. butAt itpresent, wasonly neverfiles usedusing inBundle aversion retail3, game4, and can5 onlyhave bebeen found in development builds of games such as Burnout Paradisediscovered. It was succeeded by Bundle 2, which ultimately saw use in the retail versions of Burnout Paradise (version[[Bundle 2),]] Need for Speed Hot Pursuit (version 3), and Need for Speed Most Wanted (version 5)container.
 
= Memory types =
At present, only files using Bundle version 3, 4, and 5 have been discovered. Those versions, plus Bundle 2 version 2, are described below. For information on later versions, see the [https://needforspeed.miraheze.org/wiki/Bundle Need for Speed Wiki].
Separate data chunks are used to define what memory type resources are loaded into. These chunks are platform specific (see [[#Base resource types|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 into Graphics Local on PS3 and Physical on Xbox 360. '''In resource documentation, these will be simplified to a "secondary" type.''' Resources only ever have primary and secondary portions. On PS3, some resources' secondary portion may be loaded into Graphics System; in that case, it will be listed separately.
= Overview =
Bundles are used for nearly every asset in Burnout Paradise, with the only exceptions being the <code>JUNKYARDLIGHTING.DAT</code> text file and <code>STARDATA.DAT</code> binary file (both in the <code>ENVIRONMENTSETTINGS</code> folder), the non-RAM portion of sound assets, and video files. This makes it one of the most important formats to understand when attempting to parse assets.
 
= Structures =
While the header contains some valuable data, such as the flags and chunk offsets, the majority of relevant information is in resource entries, which store the ID, uncompressed and compressed size, alignment, relative offset, and type of each resource in each chunk. These also store the import offsets, which enable importing specific data from other resources.
=== CgsResource::Bundle ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || muMagicNumber || Bundle magic || bndl
|-
| 0x4 || 0x4 || uint32_t || muVersion || Bundle version || 3 in base, 4 in V4, 5 in V5
|-
| 0x8 || 0x4 || uint32_t || muNumResources || Number of resources in the bundle ||
|-
| 0xC || 0x30 || [[#rw::ResourceDescriptor|ResourceDescriptor]][6] || mBundleResourceDescriptor || Size and alignment of each chunk ||
|-
| 0x3C || 0x18 || [[#rw::Resource|Resource]][6] || mAllocatedResource || Memory address of each chunk || Set at runtime
|-
| 0x54 || 0x4 || uint32_t || mHashTableOffset || Resource IDs offset || List of [[Resource ID|resource IDs]]
|-
| 0x58 || 0x4 || uint32_t || mResourceEntriesOffset || Resource entries offset || See [[#CgsResource::Bundle::ResourceEntry|ResourceEntry]]
|-
| 0x5C || 0x4 || uint32_t || mImportTablesOffset || Imports offset || See [[#CgsResource::Bundle::ImportTable|ImportTable]]
|-
| 0x60 || 0x4 || uint32_t || mResourceDataOffset || Resource data offset ||
|-
| 0x64 || 0x4 || uint32_t || muPlatform || Platform the bundle was built for || See [[#Platform|Platform]]
|}
 
==== Xbox 360 ====
Bundle debug data is also important to understand. Sometimes called Bundle imports, this was originally only available in development builds but shipped with every Bundle in the game in Remastered. Consisting of XML data headed by the <code>ResourceStringTable</code> element, it contains the ID, name, and type name of every resource in a respective bundle. This means that effectively every resource name in the game is known. Despite this, the resource names given by the debug data sometimes do not match the hash when encoded. In some cases, such as with Registry resources, this means the name is hardcoded.
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || muMagicNumber || Bundle magic || bndl
|-
| 0x4 || 0x4 || uint32_t || muVersion || Bundle version || 3 in base, 4 in V4, 5 in V5
|-
| 0x8 || 0x4 || uint32_t || muNumResources || Number of resources in the bundle ||
|-
| 0xC || 0x28 || [[#rw::ResourceDescriptor|ResourceDescriptor]][5] || mBundleResourceDescriptor || Size and alignment of each chunk ||
|-
| 0x34 || 0x14 || [[#rw::Resource|Resource]][5] || mAllocatedResource || Memory address of each chunk || Set at runtime
|-
| 0x48 || 0x4 || uint32_t || mHashTableOffset || Resource IDs offset || List of [[Resource ID|resource IDs]]
|-
| 0x4C || 0x4 || uint32_t || mResourceEntriesOffset || Resource entries offset || See [[#CgsResource::Bundle::ResourceEntry|ResourceEntry]]
|-
| 0x50 || 0x4 || uint32_t || mImportTablesOffset || Imports offset || See [[#CgsResource::Bundle::ImportTable|ImportTable]]
|-
| 0x54 || 0x4 || uint32_t || mResourceDataOffset || Resource data offset ||
|-
| 0x58 || 0x4 || uint32_t || muPlatform || Platform the bundle was built for || See [[#Platform|Platform]]
|}
 
==== PC ====
= Memory types =
{| class="wikitable"
Across all Bundle versions, a common theme is the use of separate data chunks to define what memory type resources are loaded into. These chunks are as follows:
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || muMagicNumber || Bundle magic || bndl
|-
| 0x4 || 0x4 || uint32_t || muVersion || Bundle version || 3 in base, 4 in V4, 5 in V5
|-
| 0x8 || 0x4 || uint32_t || muNumResources || Number of resources in the bundle ||
|-
| 0xC || 0x20 || [[#rw::ResourceDescriptor|ResourceDescriptor]][4] || mBundleResourceDescriptor || Size and alignment of each chunk ||
|-
| 0x2C || 0x10 || [[#rw::Resource|Resource]][4] || mAllocatedResource || Memory address of each chunk || Set at runtime
|-
| 0x3C || 0x4 || uint32_t || mHashTableOffset || Resource IDs offset || List of [[Resource ID|resource IDs]]
|-
| 0x40 || 0x4 || uint32_t || mResourceEntriesOffset || Resource entries offset || See [[#CgsResource::Bundle::ResourceEntry|ResourceEntry]]
|-
| 0x44 || 0x4 || uint32_t || mImportTablesOffset || Imports offset || See [[#CgsResource::Bundle::ImportTable|ImportTable]]
|-
| 0x48 || 0x4 || uint32_t || mResourceDataOffset || Resource data offset ||
|-
| 0x4C || 0x4 || uint32_t || muPlatform || Platform the bundle was built for || See [[#Platform|Platform]]
|}
 
=== CgsResource::BundleV4ExtendedData ===
Bundle:
==== PlayStation 3 ====
# Main Memory
{| class="wikitable"
# Disposable
! Offset !! Length !! Type !! Name !! Description !! Comments
# Physical
|-
# Uninitialized
| 0x0 || 0x68 || CgsResource::BaseBundleExtendedData || Base class || || See [[#CgsResource::Bundle|Bundle]]
# Disposable uninitialized
|-
| 0x68 || 0x4 || uint32_t || muFlags || Bundle flags || See [[#CgsResource::EFlags|Flags]]
|-
| 0x6C || 0x4 || uint32_t || muUncompressedDescriptorCount || Number of compressed resources ||
|-
| 0x70 || 0x4 || [[#rw::ResourceDescriptor|ResourceDescriptor]]* || mpUncompressedResourceDescriptors || Compression information offset ||
|}
 
==== Xbox 360 ====
Bundle 2 V2:
{| class="wikitable"
# Main Memory
! Offset !! Length !! Type !! Name !! Description !! Comments
# Graphics System
|-
# Graphics Local
| 0x0 || 0x5C || CgsResource::BaseBundleExtendedData || Base class || || See [[#CgsResource::Bundle|Bundle]]
|-
| 0x5C || 0x4 || uint32_t || muFlags || Bundle flags || See [[#CgsResource::EFlags|Flags]]
|-
| 0x60 || 0x4 || uint32_t || muUncompressedDescriptorCount || Number of compressed resources ||
|-
| 0x64 || 0x4 || [[#rw::ResourceDescriptor|ResourceDescriptor]]* || mpUncompressedResourceDescriptors || Compression information offset ||
|}
 
==== PC ====
Keep these in mind when viewing the specs below.
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x50 || CgsResource::BaseBundleExtendedData || Base class || || See [[#CgsResource::Bundle|Bundle]]
|-
| 0x50 || 0x4 || uint32_t || muFlags || Bundle flags || See [[#CgsResource::EFlags|Flags]]
|-
| 0x5C || 0x4 || uint32_t || muUncompressedDescriptorCount || Number of compressed resources ||
|-
| 0x60 || 0x4 || [[#rw::ResourceDescriptor|ResourceDescriptor]]* || mpUncompressedResourceDescriptors || Compression information offset ||
|}
 
=== CgsResource::BundleV5ExtendedData ===
= Bundle Layout =
==== PlayStation 3 ====
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.
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x74 || [[#CgsResource::BundleV4ExtendedData|BundleV4ExtendedData]] || || Base class ||
|-
| 0x74 || 0x4 || int32_t || miMainMemAlignment || ||
|-
| 0x78 || 0x4 || int32_t || miGraphicsMemAlignment || ||
|}
 
==== VersionXbox 3360 ====
=== Bundle ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x68 || [[#CgsResource::BundleV4ExtendedData|BundleV4ExtendedData]] || || Base class ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| 0x00x68 || 0x4 || char[4]int32_t || macMagicNumbermiMainMemAlignment || Bundle magic || bndl
|-
| 0x40x6C || 0x4 || uint32_tint32_t || muVersionmiGraphicsMemAlignment || Bundle version ||
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x5C || [[#CgsResource::BundleV4ExtendedData|BundleV4ExtendedData]] || || Base class ||
| 0x8 || 0x4 || uint32_t || muResourceEntriesCount || Number of resources in the bundle ||
|-
| 0xC0x5C || 0x280x4 || Unknown0[5]int32_t || miMainMemAlignment || Size and alignment of each chunk ||
|-
| 0x60 || 0x4 || int32_t || miGraphicsMemAlignment || ||
|}
 
=== CgsResource::Bundle::ResourceEntry ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x340x0 || 0x140x4 || uint32_t[5]void* || mpResource || MemoryResource addressdata ofmemory each chunkaddress || Set at runtime
|-
| 0x480x4 || 0x4 || uint32_t[[#CgsResource::Bundle::ImportTable|ImportTable]]* || mpImportTable || ResourceBundle IDsimports offset ||
|-
| 0x4C0x8 || 0x4 || uint32_tCgsResource::Type* || muResourceEntriesOffsetmpType || Resource entries offsettype || Type ID replaced by pointer at runtime. See [[Resource Types]]
|-
| 0xC || 0x30 || [[#rw::ResourceDescriptor|ResourceDescriptor]][6] || mSerialisedResourceDescriptor || Resource sizes in bundle<br />Compressed size if compression used ||
| 0x50 || 0x4 || uint32_t || || Imports offset ||
|-
| 0x3C || 0x30 || [[#rw::ResourceDescriptor|ResourceDescriptor]][6] || mSerialisedOffsetResourceDescriptor || Offsets in bundle || Alignment is unused (always 1)
| 0x54 || 0x4 || uint32_t || muResourceDataOffset || Resource data offset ||
|-
| 0x6C || 0x18 || [[#rw::Resource|Resource]][6] || mSerialisedResource || Memory addresses || Set at runtime
| 0x58 || 0x4 || uint32_t || muPlatform || Platform the bundle was built for || See [[Bundle/Enumerations#Platform|Platform]]
|}
 
==== ResourceEntryXbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || void* || mpResource || Resource data memory address || Set at runtime
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| 0x00x4 || 0x4 || uint32_t[[#CgsResource::Bundle::ImportTable|ImportTable]]* || mpImportTable || Resource dataBundle memoryimports addressoffset ||
|-
| 0x8 || 0x4 || CgsResource::Type* || mpType || Resource type || Type ID replaced by pointer at runtime. See [[Resource Types]]
| 0x4 || 0x4 || uint32_t || muImportOffset || Bundle imports offset ||
|-
| 0xC || 0x28 || [[#rw::ResourceDescriptor|ResourceDescriptor]][5] || mSerialisedResourceDescriptor || Resource sizes in bundle<br />Compressed size if compression used ||
| 0x8 || 0x4 || uint32_t || muResourceTypeId || Resource type || See [[Resource Types (Burnout Paradise)|Resource Types]]
|-
| 0x34 || 0x28 || [[#rw::ResourceDescriptor|ResourceDescriptor]][5] || mSerialisedOffsetResourceDescriptor || Offsets in bundle || Alignment is unused (always 1)
| 0xC || 0x28 || Unknown0[5] || mauSizeAndAlignmentOnDisk || ||
|-
| 0x340x5C || 0x280x14 || Unknown0[[#rw::Resource|Resource]][5] || mauDiskOffsetmSerialisedResource || OffsetsMemory in bundleaddresses || Alignment is unusedSet (alwaysat 1)runtime
|-
| 0x5C || 0x14 || uint32_t[5] || || Memory addresses || Swapped endian
|}
 
==== ImportsPC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || void* || mpResource || Resource data memory address || Set at runtime
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| 0x00x4 || 0x4 || uint32_t[[#CgsResource::Bundle::ImportTable|ImportTable]]* || muImportCountmpImportTable || Number ofBundle imports offset ||
|-
| 0x8 || 0x4 || CgsResource::Type* || mpType || ImportResource entriestype || AlignedType 8ID replaced by pointer at runtime. See [[#ImportEntry|ImportEntryResource Types]] structure
|-
| 0xC || 0x20 || [[#rw::ResourceDescriptor|ResourceDescriptor]][4] || mSerialisedResourceDescriptor || Resource sizes in bundle<br />Compressed size if compression used ||
|-
| 0x2C || 0x20 || [[#rw::ResourceDescriptor|ResourceDescriptor]][4] || mSerialisedOffsetResourceDescriptor || Offsets in bundle || Alignment is unused (always 1)
|-
| 0x4C || 0x10 || [[#rw::Resource|Resource]][4] || mSerialisedResource || Memory addresses || Set at runtime
|}
 
=== CgsResource::Bundle::ImportTable ===
=== ImportEntry ===
This structure is followed by an [[#CgsResource::Bundle::ImportEntry|ImportEntry]] array.
 
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || muNumImports || Number of import entries ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| 0x00x8 || 0x80x4 || IDuint32_t || mResourceIdpad1 || Resource name CRC32Padding ||
|}
 
=== CgsResource::Bundle::ImportEntry ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x80x0 || 0x40x8 || uint32_t[[Resource ID|ID]] || muOffsetmImportID || Resource name CRC32 ||
|-
| 0xC0x8 || 0x4 || RwUInt32 || muOffset || padding ||
|-
| 0xC || 0x4 || || || Padding ||
|}
 
=== Unknown0rw::ResourceDescriptor ===
==== PlayStation 3 ====
This structure contains fields for size and alignment, though alignment sometimes goes unused.
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x30 || [[#rw::BaseResourceDescriptors|BaseResourceDescriptors]] || || Base class ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x40x28 || uint32_t[[#rw::BaseResourceDescriptors|BaseResourceDescriptors]] || || Size orBase offsetclass ||
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x40x0 || 0x40x20 || uint32_t[[#rw::BaseResourceDescriptors|BaseResourceDescriptors]] || || AlignmentBase class ||
|}
 
=== rw::BaseResourceDescriptors ===
== Version 4 Additions ==
==== BundlePlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x30 || [[#rw::BaseResourceDescriptor|BaseResourceDescriptor]][6] || m_baseResourceDescriptors || ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x28 || [[#rw::BaseResourceDescriptor|BaseResourceDescriptor]][5] || m_baseResourceDescriptors || ||
| 0x5C || 0x4 || uint32_t || muFlags || Bundle flags || See [[Bundle/Enumerations#Flags|Flags]]
|-}
 
| 0x60 || 0x4 || uint32_t || || Number of compressed resources ||
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x20 || [[#rw::BaseResourceDescriptor|BaseResourceDescriptor]][4] || m_baseResourceDescriptors || ||
| 0x64 || 0x4 || uint32_t || || Compression information offset ||
|}
 
=== Compression Informationrw::BaseResourceDescriptor ===
This structure contains fields for size and alignment, though alignment sometimes goes unused.
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || m_size || Size or offset ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| 0x00x4 || 0x280x4 || Unknown0[5]uint32_t || mauUncompressedSizeAndAlignmentm_alignment || Alignment ||
|}
 
=== Version 5 Additionsrw::Resource ===
==== BundlePlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x18 || [[#rw::BaseResources|BaseResources]] || || Base class ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x680x0 || 0x40x14 || uint32_t[[#rw::BaseResources|BaseResources]] || || Base class || No idea what this does
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x6C0x0 || 0x40x10 || uint32_t[[#rw::BaseResources|BaseResources]] || || Base class || Also no idea what this does
|}
 
=== rw::BaseResources ===
= Bundle 2 Layout =
==== BundleV2PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x18 || [[#rw::BaseResource|BaseResource]][6] || m_baseResources || Per type base resource pointers ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x40x14 || char[4[#rw::BaseResource|BaseResource]][5] || macMagicNumberm_baseResources || BundlePer type base resource magicpointers || bnd2
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x40x0 || 0x40x10 || uint32_t[[#rw::BaseResource|BaseResource]][4] || muVersionm_baseResources || BundlePer type base resource versionpointers ||
|}
 
= Typedefs =
=== rw::BaseResource ===
{| class="wikitable"
! Name !! Type !! Length !! Comments
|-
| BaseResource || void* || 0x4 ||
| 0x8 || 0x4 || uint32_t || muPlatform || Platform the bundle was built for || See [[Bundle/Enumerations#Platform|Platform]]
|}
 
= Enumerations =
=== Platform ===
Three constants used by the platform field.
 
{| class="wikitable"
! Name !! Value !! Comments
|-
| KU_BUNDLE_DX9 || 1 || PC
| 0xC || 0x4 || uint32_t || muDebugDataOffset || Bundle debug data offset || ResourceStringTable XML
|-
| KU_BUNDLE_X360 || 2 || Xbox 360
| 0x10 || 0x4 || uint32_t || muResourceEntriesCount || Number of resources in the bundle ||
|-
| KU_BUNDLE_PS3 || 3 || PlayStation 3
| 0x14 || 0x4 || uint32_t || muResourceEntriesOffset || Resource entries offset ||
|}
 
=== CgsResource::EFlags ===
{| class="wikitable"
! Name !! Value !! Comments
|-
| E_BUNDLEFLAG_HAS_DEBUG_DATA || 0x0 || Has a BundleImports resource.<br>This flag does not work correctly.
| 0x18 || 0xC || uint32_t[3] || mauResourceDataOffset || Resource data offset ||
|-
| E_BUNDLEFLAG_COMPRESSED || 0x1 || Resources are zlib compressed
| 0x24 || 0x4 || uint32_t || muFlags || Bundle flags || See [[Bundle/Enumerations#Flags|Flags]]
|}
 
= Base resource types =
=== ResourceEntry ===
Anonymous enumeration with name strings.
 
==== PlayStation 3 ====
{| class="wikitable"
! Name !! String !! Index
|-
| BASERESOURCE_MAINMEMORY || main memory || 0
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| BASERESOURCE_DISPOSABLE || disposable || 1
| 0x0 || 0x8 || ID || mResourceId || Resource name CRC32 || Hashed names are all lowercase
|-
| BASERESOURCE_UNINITIALIZED || uninitialized || 2
| 0x8 || 0x8 || uint64_t || muImportHash || Dependency name(s) CRC32(s) || Multiple are combined with a bitwise OR
|-
| BASERESOURCE_DISPOSABLE_UNINITIALIZED || disposable uninitialized || 3
| 0x10 || 0xC || uint32_t[3] || mauUncompressedSizeAndAlignment || Resource sizes (uncompressed) for each chunk || Has high nibble for alignment; changes between platforms<br>1 << [nibble] equals the memory alignment value
|-
| BASERESOURCE_GRAPHICS_SYSTEM || graphics system || 4
| 0x1C || 0xC || uint32_t[3] || mauSizeAndAlignmentOnDisk || Resource sizes (compressed) for each chunk || See above
|-
| BASERESOURCE_GRAPHICS_LOCAL || graphics local || 5
| 0x28 || 0xC || uint32_t[3] || mauDiskOffset || Resource offsets for each chunk || Relative to the start of the respective chunk
|-
| BASERESOURCE_NUMBEROFBASERESOURCETYPES || || 6
| 0x34 || 0x4 || uint32_t || muImportOffset || Bundle imports offset ||
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Name !! String !! Index
|-
| BASERESOURCE_MAINMEMORY || main memory || 0
| 0x38 || 0x4 || uint32_t || muResourceTypeId || Resource type || See [[Resource Types (Burnout Paradise)|Resource Types]]
|-
| BASERESOURCE_DISPOSABLE || disposable || 1
| 0x3C || 0x2 || uint16_t || muImportCount || Number of imports ||
|-
| BASERESOURCE_PHYSICAL? || physical || 2
| 0x3E || 0x1 || uint8_t || muFlags || ||
|-
| BASERESOURCE_UNINITIALIZED || uninitialized || 3
| 0x3F || 0x1 || uint8_t || muStreamIndex || ||
|-
| BASERESOURCE_DISPOSABLE_UNINITIALIZED || disposable uninitialized || 4
|-
| BASERESOURCE_NUMBEROFBASERESOURCETYPES || || 5
|}
 
==== ImportEntryPC ====
{| class="wikitable"
! Name !! String !! Index
|-
| BASERESOURCE_MAINMEMORY || main memory || 0
|-
| BASERESOURCE_DISPOSABLE || disposable || 1
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| BASERESOURCE_UNINITIALIZED || uninitialized || 2
| 0x0 || 0x8 || ID || mResourceId || Resource name CRC32 || ImportEntries are appended to the end of resources.
|-
| BASERESOURCE_DISPOSABLE_UNINITIALIZED || disposable uninitialized || 3
| 0x8 || 0x4 || uint32_t || muOffset || ||
|-
| BASERESOURCE_NUMBEROFBASERESOURCETYPES || || 4
| 0xC || 0x4 || || || padding ||
|}