Bundle (original): Difference between revisions

m
Memory address comments
(Added overview section and moved enumerations to subpage, along with other miscellaneous changes and fixes.)
m (Memory address comments)
 
(17 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, with the release of Remastered, shipped with every Bundle in the game. 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 in the game has a decodable name. Despite this, however, the resource names given by the debug data sometimes do not match 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]]
|}
 
==== LayoutPC ====
{| class="wikitable"
== Memory types ==
! Offset !! Length !! Type !! Name !! Description !! Comments
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:
|-
| 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]]
 
|-
Keep these in mind when viewing the specs below.
| 0x5C || 0x4 || uint32_t || muFlags || Bundle flags || See [[#CgsResource::EFlags|Flags]]
 
|-
== Bundle ==
| 0x60 || 0x4 || uint32_t || muUncompressedDescriptorCount || Number of compressed resources ||
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.
|-
| 0x64 || 0x4 || [[#rw::ResourceDescriptor|ResourceDescriptor]]* || mpUncompressedResourceDescriptors || Compression information offset ||
|}
 
==== Version 3PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x50 || CgsResource::BaseBundleExtendedData || Base class || || See [[#CgsResource::Bundle|Bundle]]
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| 0x00x50 || 0x4 || char[4]uint32_t || macMagicNumbermuFlags || Bundle magicflags || bndlSee [[#CgsResource::EFlags|Flags]]
|-
| 0x40x5C || 0x4 || uint32_t || muVersionmuUncompressedDescriptorCount || BundleNumber of compressed versionresources ||
|-
| 0x60 || 0x4 || [[#rw::ResourceDescriptor|ResourceDescriptor]]* || mpUncompressedResourceDescriptors || Compression information offset ||
| 0x8 || 0x4 || uint32_t || muResourceEntriesCount || Number of resources in the bundle ||
|}
 
=== CgsResource::BundleV5ExtendedData ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x74 || [[#CgsResource::BundleV4ExtendedData|BundleV4ExtendedData]] || || Base class ||
| 0xC || 0x28 || SizeAndAlignment[5] || || Size and alignment of each chunk ||
|-
| 0x340x74 || 0x140x4 || uint32_t[5]int32_t || miMainMemAlignment || Memory address of each chunk ||
|-
| 0x480x78 || 0x4 || uint32_tint32_t || miGraphicsMemAlignment || Resource IDs offset ||
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x68 || [[#CgsResource::BundleV4ExtendedData|BundleV4ExtendedData]] || || Base class ||
| 0x4C || 0x4 || uint32_t || muResourceEntriesOffset || Resource entries offset ||
|-
| 0x68 || 0x4 || int32_t || miMainMemAlignment || ||
|-
| 0x6C || 0x4 || int32_t || miGraphicsMemAlignment || ||
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x500x0 || 0x40x5C || uint32_t[[#CgsResource::BundleV4ExtendedData|BundleV4ExtendedData]] || || ImportsBase offsetclass ||
|-
| 0x540x5C || 0x4 || uint32_tint32_t || muResourceDataOffsetmiMainMemAlignment || Resource data offset ||
|-
| 0x60 || 0x4 || int32_t || miGraphicsMemAlignment || ||
| 0x58 || 0x4 || uint32_t || muPlatform || Platform the bundle was built for || See [[Bundle/Enumerations#Platform|Platform]]
|}
 
=== CgsResource::Bundle::ResourceEntry ===
=== Version 4 Additions ===
==== PlayStation 3 ====
{| 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
|-
| 0x5C0x4 || 0x4 || uint32_t[[#CgsResource::Bundle::ImportTable|ImportTable]]* || muFlagsmpImportTable || Bundle flagsimports offset || See [[Bundle/Enumerations#Flags|Flags]]
|-
| 0x8 || 0x4 || CgsResource::Type* || mpType || Resource type || Type ID replaced by pointer at runtime. See [[Resource Types]]
| 0x60 || 0x4 || uint32_t || || Number of compressed resources ||
|-
| 0xC || 0x30 || [[#rw::ResourceDescriptor|ResourceDescriptor]][6] || mSerialisedResourceDescriptor || Resource sizes in bundle<br />Compressed size if compression used ||
| 0x64 || 0x4 || uint32_t || || Compression information offset ||
|-
| 0x3C || 0x30 || [[#rw::ResourceDescriptor|ResourceDescriptor]][6] || mSerialisedOffsetResourceDescriptor || Offsets in bundle || Alignment is unused (always 1)
|-
| 0x6C || 0x18 || [[#rw::Resource|Resource]][6] || mSerialisedResource || Memory addresses || Set at runtime
|}
 
==== VersionXbox 5 Additions360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || void* || mpResource || Resource data memory address || Set at runtime
|-
| 0x4 || 0x4 || [[#CgsResource::Bundle::ImportTable|ImportTable]]* || mpImportTable || Bundle imports offset ||
|-
| 0x8 || 0x4 || CgsResource::Type* || mpType || Resource type || Type ID replaced by pointer at runtime. See [[Resource Types]]
|-
| 0xC || 0x28 || [[#rw::ResourceDescriptor|ResourceDescriptor]][5] || mSerialisedResourceDescriptor || Resource sizes in bundle<br />Compressed size if compression used ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| 0x34 || 0x28 || [[#rw::ResourceDescriptor|ResourceDescriptor]][5] || mSerialisedOffsetResourceDescriptor || Offsets in bundle || Alignment is unused (always 1)
| 0x68 || 0x4 || uint32_t || || || No idea what this does
|-
| 0x5C || 0x14 || [[#rw::Resource|Resource]][5] || mSerialisedResource || Memory addresses || Set at runtime
| 0x6C || 0x4 || uint32_t || || || Also no idea what this does
|}
 
==== SubstructuresPC ====
==== ResourceEntry ====
{| 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 || 0x20 || [[#rw::ResourceDescriptor|ResourceDescriptor]][4] || 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]]
|-
| 0x2C || 0x20 || [[#rw::ResourceDescriptor|ResourceDescriptor]][4] || mSerialisedOffsetResourceDescriptor || Offsets in bundle || Alignment is unused (always 1)
| 0xC || 0x28 || SizeAndAlignment[5] || mauSizeAndAlignmentOnDisk || ||
|-
| 0x4C || 0x10 || [[#rw::Resource|Resource]][4] || mSerialisedResource || Memory addresses || Set at runtime
| 0x34 || 0x28 || SizeAndAlignment[5] || mauDiskOffset || Offsets in bundle || Alignment is unused (always 1)
|}
 
=== CgsResource::Bundle::ImportTable ===
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 ||
|-
| 0x5C0x8 || 0x140x4 || uint32_t[5] || pad1 || Memory addressesPadding || Swapped endian
|}
 
=== CgsResource::Bundle::ImportEntry ===
==== Imports ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x8 || [[Resource ID|ID]] || mImportID || Resource name CRC32 ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| 0x00x8 || 0x4 || uint32_tRwUInt32 || muImportCountmuOffset || Number of imports ||
|-
| 0x80xC || 0x4 || || || Import entriesPadding || Aligned 8. See ImportEntry structure
|}
 
==== ImportEntryrw::ResourceDescriptor ====
==== PlayStation 3 ====
{| 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 || 0x80x28 || ID[[#rw::BaseResourceDescriptors|BaseResourceDescriptors]] || mResourceId || Resource nameBase CRC32class ||
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x80x0 || 0x40x20 || uint32_t[[#rw::BaseResourceDescriptors|BaseResourceDescriptors]] || muOffset || Base class ||
|}
 
=== rw::BaseResourceDescriptors ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x30 || [[#rw::BaseResourceDescriptor|BaseResourceDescriptor]][6] || m_baseResourceDescriptors || ||
| 0xC || 0x4 || || || padding ||
|}
 
==== CompressionXbox Information360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x28 || [[#rw::BaseResourceDescriptor|BaseResourceDescriptor]][5] || m_baseResourceDescriptors || ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x280x20 || SizeAndAlignment[5[#rw::BaseResourceDescriptor|BaseResourceDescriptor]][4] || mauUncompressedSizeAndAlignmentm_baseResourceDescriptors || ||
|}
 
==== SizeAndAlignmentrw::BaseResourceDescriptor ====
This structure contains fields for size and alignment, though alignment sometimes goes unused.
The official name of this structure is unknown. The name shown is meant to reflect its purpose.
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || m_size || Size or offset ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| 0x00x4 || 0x4 || uint32_t || m_alignment || Size or offsetAlignment ||
|}
 
=== rw::Resource ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x40x0 || 0x40x18 || uint32_t[[#rw::BaseResources|BaseResources]] || || AlignmentBase class ||
|}
 
==== BundleXbox 2360 ====
=== Version 2 ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x14 || [[#rw::BaseResources|BaseResources]] || || Base class ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x40x10 || char[4[#rw::BaseResources|BaseResources]] || macMagicNumber || BundleBase magicclass || bnd2
|}
 
=== rw::BaseResources ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x40x0 || 0x40x18 || uint32_t[[#rw::BaseResource|BaseResource]][6] || muVersionm_baseResources || BundlePer type base resource versionpointers ||
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x14 || [[#rw::BaseResource|BaseResource]][5] || m_baseResources || Per type base resource pointers ||
| 0x8 || 0x4 || uint32_t || muPlatform || Platform the bundle was built for || See [[Bundle/Enumerations#Platform|Platform]]
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || [[#rw::BaseResource|BaseResource]][4] || m_baseResources || Per type base resource pointers ||
| 0xC || 0x4 || uint32_t || muDebugDataOffset || Bundle debug data offset || ResourceStringTable XML
|}
 
= Typedefs =
=== rw::BaseResource ===
{| class="wikitable"
! Name !! Type !! Length !! Comments
|-
| BaseResource || void* || 0x4 ||
| 0x10 || 0x4 || uint32_t || muResourceEntriesCount || Number of resources in the bundle ||
|}
 
= Enumerations =
=== Platform ===
Three constants used by the platform field.
 
{| class="wikitable"
! Name !! Value !! Comments
|-
| KU_BUNDLE_DX9 || 1 || PC
| 0x14 || 0x4 || uint32_t || muResourceEntriesOffset || Resource entries offset ||
|-
| KU_BUNDLE_X360 || 2 || Xbox 360
| 0x18 || 0xC || uint32_t[3] || mauResourceDataOffset || Resource data offset ||
|-
| KU_BUNDLE_PS3 || 3 || PlayStation 3
| 0x24 || 0x4 || uint32_t || muFlags || Bundle flags || See [[Bundle/Enumerations#Flags|Flags]]
|}
 
=== SubstructuresCgsResource::EFlags ===
==== ResourceEntry ====
{| class="wikitable"
! Name !! Value !! Comments
|-
| E_BUNDLEFLAG_HAS_DEBUG_DATA || 0x0 || Has a BundleImports resource.<br>This flag does not work correctly.
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| E_BUNDLEFLAG_COMPRESSED || 0x1 || Resources are zlib compressed
| 0x0 || 0x8 || ID || mResourceId || Resource name CRC32 || Hashed names are all lowercase
|}
 
= Base resource types =
Anonymous enumeration with name strings.
 
==== PlayStation 3 ====
{| class="wikitable"
! Name !! String !! Index
|-
| BASERESOURCE_MAINMEMORY || main memory || 0
| 0x8 || 0x8 || uint64_t || muImportHash || Dependency name(s) CRC32(s) || Multiple are combined with a bitwise OR
|-
| BASERESOURCE_DISPOSABLE || disposable || 1
| 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_UNINITIALIZED || uninitialized || 2
| 0x1C || 0xC || uint32_t[3] || mauSizeAndAlignmentOnDisk || Resource sizes (compressed) for each chunk || See above
|-
| BASERESOURCE_DISPOSABLE_UNINITIALIZED || disposable uninitialized || 3
| 0x28 || 0xC || uint32_t[3] || mauDiskOffset || Resource offsets for each chunk || Relative to the start of the respective chunk
|-
| BASERESOURCE_GRAPHICS_SYSTEM || graphics system || 4
| 0x34 || 0x4 || uint32_t || muImportOffset || Bundle imports offset ||
|-
| BASERESOURCE_GRAPHICS_LOCAL || graphics local || 5
| 0x38 || 0x4 || uint32_t || muResourceTypeId || Resource type || See [[Resource Types (Burnout Paradise)|Resource Types]]
|-
| BASERESOURCE_NUMBEROFBASERESOURCETYPES || || 6
| 0x3C || 0x2 || uint16_t || muImportCount || Number of imports ||
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Name !! String !! Index
|-
| BASERESOURCE_MAINMEMORY || main memory || 0
| 0x3E || 0x1 || uint8_t || muFlags || ||
|-
| BASERESOURCE_DISPOSABLE || disposable || 1
| 0x3F || 0x1 || uint8_t || muStreamIndex || ||
|-
| BASERESOURCE_PHYSICAL? || physical || 2
|-
| BASERESOURCE_UNINITIALIZED || uninitialized || 3
|-
| 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 ||
|}