Bundle (original): Difference between revisions

m
Memory address comments
m (Capitalized Revenge)
m (Memory address comments)
 
(20 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]].}}
The Bundle container is the core file format of Criterion's 7th-gen titles with the exception of Burnout Revenge (X360). 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 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 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, but it was never used in a retail game and can only be found in development builds of games such as Burnout Paradise. It was succeeded by Bundle 2, which ultimately saw use in the retail versions of Burnout Paradise (version 2), Need for Speed Hot Pursuit (version 3), and Need for Speed Most Wanted (version 5).
 
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. ThoseIt versions,was plussucceeded Bundleby 2the version[[Bundle 2, are described]] belowcontainer.
 
= LayoutMemory types =
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.
== Memory types ==
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:
 
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.
Bundle:
# Main Memory
# Disposable
# Physical
# Uninitialized
# Disposable uninitialized
 
= Structures =
Bundle 2:
=== CgsResource::Bundle ===
# Main Memory
==== PlayStation 3 ====
# Graphics System
{| class="wikitable"
# Graphics Local
! 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 ====
Keep these in mind when viewing the specs below.
{| 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]]
|}
 
==== BundlePC ====
{| class="wikitable"
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.
! 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 ===
=== Version 3 ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x68 || CgsResource::BaseBundleExtendedData || Base class || || See [[#CgsResource::Bundle|Bundle]]
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| 0x00x68 || 0x4 || char[4]uint32_t || macMagicNumbermuFlags || Bundle magicflags || bndlSee [[#CgsResource::EFlags|Flags]]
|-
| 0x40x6C || 0x4 || uint32_t || muVersionmuUncompressedDescriptorCount || BundleNumber of compressed versionresources ||
|-
| 0x70 || 0x4 || [[#rw::ResourceDescriptor|ResourceDescriptor]]* || mpUncompressedResourceDescriptors || Compression information offset ||
| 0x8 || 0x4 || uint32_t || muResourceEntriesCount || Number of resources in the bundle ||
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x5C || CgsResource::BaseBundleExtendedData || Base class || || See [[#CgsResource::Bundle|Bundle]]
| 0xC || 0x28 || SizeAndAlignment[5] || || Size and alignment of each chunk ||
|-
| 0x340x5C || 0x140x4 || uint32_t[5] || muFlags || MemoryBundle address of each chunkflags || See [[#CgsResource::EFlags|Flags]]
|-
| 0x480x60 || 0x4 || uint32_t || muUncompressedDescriptorCount || ResourceNumber IDsof offsetcompressed resources ||
|-
| 0x4C0x64 || 0x4 || uint32_t[[#rw::ResourceDescriptor|ResourceDescriptor]]* || muResourceEntriesOffsetmpUncompressedResourceDescriptors || ResourceCompression entriesinformation offset ||
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x50 || CgsResource::BaseBundleExtendedData || Base class || || See [[#CgsResource::Bundle|Bundle]]
| 0x50 || 0x4 || uint32_t || || Imports offset ||
|-
| 0x540x50 || 0x4 || uint32_t || muResourceDataOffsetmuFlags || ResourceBundle data offsetflags || See [[#CgsResource::EFlags|Flags]]
|-
| 0x580x5C || 0x4 || uint32_t || muPlatformmuUncompressedDescriptorCount || PlatformNumber theof bundlecompressed was built forresources || 1 = PC<br>2 = X360<br>3 = PS3
|-
| 0x60 || 0x4 || [[#rw::ResourceDescriptor|ResourceDescriptor]]* || mpUncompressedResourceDescriptors || Compression information offset ||
|}
 
=== CgsResource::BundleV5ExtendedData ===
=== Version 4 Additions ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x74 || [[#CgsResource::BundleV4ExtendedData|BundleV4ExtendedData]] || || Base class ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| 0x74 || 0x4 || int32_t || miMainMemAlignment || ||
|-
| 0x78 || 0x4 || int32_t || miGraphicsMemAlignment || ||
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x68 || [[#CgsResource::BundleV4ExtendedData|BundleV4ExtendedData]] || || Base class ||
| 0x5C || 0x4 || uint32_t || muFlags || Bundle flags || 1 = IsCompressed
|-
| 0x600x68 || 0x4 || uint32_tint32_t || miMainMemAlignment || Number of compressed resources ||
|-
| 0x640x6C || 0x4 || uint32_tint32_t || miGraphicsMemAlignment || Compression information offset ||
|}
 
==== Version 5 AdditionsPC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x5C || [[#CgsResource::BundleV4ExtendedData|BundleV4ExtendedData]] || || Base class ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| 0x680x5C || 0x4 || uint32_tint32_t || miMainMemAlignment || || No idea what this does
|-
| 0x6C0x60 || 0x4 || uint32_tint32_t || miGraphicsMemAlignment || || Also no idea what this does
|}
 
=== CgsResource::Bundle::ResourceEntry ===
=== Substructures ===
==== ResourceEntryPlayStation 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
|-
| 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 || 0x30 || [[#rw::ResourceDescriptor|ResourceDescriptor]][6] || 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]]
|-
| 0x3C || 0x30 || [[#rw::ResourceDescriptor|ResourceDescriptor]][6] || mSerialisedOffsetResourceDescriptor || Offsets in bundle || Alignment is unused (always 1)
| 0xC || 0x28 || SizeAndAlignment[5] || mauSizeAndAlignmentOnDisk || ||
|-
| 0x6C || 0x18 || [[#rw::Resource|Resource]][6] || mSerialisedResource || Memory addresses || Set at runtime
| 0x34 || 0x28 || SizeAndAlignment[5] || mauDiskOffset || Offsets in bundle || Alignment is unused (always 1)
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x5C0x0 || 0x140x4 || uint32_t[5]void* || mpResource || MemoryResource addressesdata memory address || SwappedSet at endianruntime
|-
| 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 ||
|-
| 0x34 || 0x28 || [[#rw::ResourceDescriptor|ResourceDescriptor]][5] || mSerialisedOffsetResourceDescriptor || Offsets in bundle || Alignment is unused (always 1)
|-
| 0x5C || 0x14 || [[#rw::Resource|Resource]][5] || mSerialisedResource || Memory addresses || Set at runtime
|}
 
==== ImportsPC ====
{| 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 || 0x20 || [[#rw::ResourceDescriptor|ResourceDescriptor]][4] || mSerialisedResourceDescriptor || Resource sizes in bundle<br />Compressed size if compression used ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
| 0x2C || 0x20 || [[#rw::ResourceDescriptor|ResourceDescriptor]][4] || mSerialisedOffsetResourceDescriptor || Offsets in bundle || Alignment is unused (always 1)
| 0x0 || 0x4 || uint32_t || muImportCount || Number of imports ||
|-
| 0x4C || 0x10 || [[#rw::Resource|Resource]][4] || mSerialisedResource || Memory addresses || Set at runtime
| 0x8 || || || || Import entries || Aligned 8. See ImportEntry structure
|}
 
=== 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 ||
|}
 
=== rw::ResourceDescriptor ===
==== Compression Information ====
==== 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 || 0x28 || SizeAndAlignment[5[#rw::BaseResourceDescriptors|BaseResourceDescriptors]] || mauUncompressedSizeAndAlignment || Base class ||
|}
 
==== SizeAndAlignmentPC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x20 || [[#rw::BaseResourceDescriptors|BaseResourceDescriptors]] || || Base class ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|}
 
=== rw::BaseResourceDescriptors ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x30 || [[#rw::BaseResourceDescriptor|BaseResourceDescriptor]][6] || m_baseResourceDescriptors || ||
| 0x0 || 0x4 || uint32_t || || Size or offset ||
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x28 || [[#rw::BaseResourceDescriptor|BaseResourceDescriptor]][5] || m_baseResourceDescriptors || ||
| 0x4 || 0x4 || uint32_t || || Alignment ||
|}
 
==== Bundle 2PC ====
=== Version 2 ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x20 || [[#rw::BaseResourceDescriptor|BaseResourceDescriptor]][4] || m_baseResourceDescriptors || ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|}
 
=== rw::BaseResourceDescriptor ===
This structure contains fields for size and alignment, though alignment sometimes goes unused.
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || char[4]uint32_t || macMagicNumberm_size || BundleSize magicor offset || bnd2
|-
| 0x4 || 0x4 || uint32_t || muVersionm_alignment || Bundle versionAlignment ||
|}
 
=== rw::Resource ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x18 || [[#rw::BaseResources|BaseResources]] || || Base class ||
| 0x8 || 0x4 || uint32_t || muPlatform || Platform the bundle was built for || 1 = PC/PS4<br>2 = X360<br>3 = PS3
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x14 || [[#rw::BaseResources|BaseResources]] || || Base class ||
| 0xC || 0x4 || uint32_t || muDebugDataOffset || Bundle debug data offset || ResourceStringTable XML
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || [[#rw::BaseResources|BaseResources]] || || Base class ||
| 0x10 || 0x4 || uint32_t || muResourceEntriesCount || Number of resources in the bundle ||
|}
 
=== rw::BaseResources ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x18 || [[#rw::BaseResource|BaseResource]][6] || m_baseResources || Per type base resource pointers ||
| 0x14 || 0x4 || uint32_t || muResourceEntriesOffset || Resource entries offset ||
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x180x0 || 0x40x14 || uint32_t[[#rw::BaseResource|BaseResource]][5] || muResourceDataOffsetm_baseResources || ResourcePer type base dataresource offsetpointers ||
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || [[#rw::BaseResource|BaseResource]][4] || m_baseResources || Per type base resource pointers ||
| 0x24 || 0x4 || uint32_t || muFlags || Bundle flags || 1 = IsCompressed<br>2 = IsMainMenOptimised<br>4 = IsGraphicsMemOptimised<br>8 = ContainsDebugData
|}
 
= Typedefs =
=== Substructures ===
==== ResourceEntryrw::BaseResource ====
{| class="wikitable"
! Name !! Type !! Length !! Comments
|-
| BaseResource || void* || 0x4 ||
! Offset !! Size !! Type !! Name !! Description !! Comments
|}
 
= Enumerations =
=== Platform ===
Three constants used by the platform field.
 
{| class="wikitable"
! Name !! Value !! Comments
|-
| KU_BUNDLE_DX9 || 1 || PC
| 0x0 || 0x8 || ID || mResourceId || Resource name CRC32 || Hashed names are all lowercase
|-
| KU_BUNDLE_X360 || 2 || Xbox 360
| 0x8 || 0x8 || uint64_t || muImportHash || Dependency name(s) CRC32(s) || Multiple are combined with a bitwise OR
|-
| KU_BUNDLE_PS3 || 3 || PlayStation 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
|}
 
=== CgsResource::EFlags ===
{| class="wikitable"
! Name !! Value !! Comments
|-
| E_BUNDLEFLAG_HAS_DEBUG_DATA || 0x0 || Has a BundleImports resource.<br>This flag does not work correctly.
| 0x1C || 0xC || uint32_t[3] || mauSizeAndAlignmentOnDisk || Resource sizes (compressed) for each chunk || See above
|-
| E_BUNDLEFLAG_COMPRESSED || 0x1 || Resources are zlib compressed
| 0x28 || 0xC || uint32_t[3] || mauDiskOffset || Resource offsets for each chunk ||
|}
 
= Base resource types =
Anonymous enumeration with name strings.
 
==== PlayStation 3 ====
{| class="wikitable"
! Name !! String !! Index
|-
| BASERESOURCE_MAINMEMORY || main memory || 0
| 0x34 || 0x4 || uint32_t || muImportOffset || Bundle imports offset ||
|-
| BASERESOURCE_DISPOSABLE || disposable || 1
| 0x38 || 0x4 || uint32_t || muResourceTypeId || Resource type || See [[Resource Types (Burnout Paradise)|Resource Types]]
|-
| BASERESOURCE_UNINITIALIZED || uninitialized || 2
| 0x3C || 0x2 || uint16_t || muImportCount || Number of imports ||
|-
| BASERESOURCE_DISPOSABLE_UNINITIALIZED || disposable uninitialized || 3
| 0x3E || 0x1 || uint8_t || muFlags || ||
|-
| BASERESOURCE_GRAPHICS_SYSTEM || graphics system || 4
| 0x3F || 0x1 || uint8_t || muStreamIndex || ||
|-
| BASERESOURCE_GRAPHICS_LOCAL || graphics local || 5
|-
| BASERESOURCE_NUMBEROFBASERESOURCETYPES || || 6
|}
 
==== ImportEntryXbox 360 ====
{| class="wikitable"
! Name !! String !! Index
|-
| BASERESOURCE_MAINMEMORY || main memory || 0
|-
| BASERESOURCE_DISPOSABLE || disposable || 1
|-
| BASERESOURCE_PHYSICAL? || physical || 2
|-
| BASERESOURCE_UNINITIALIZED || uninitialized || 3
|-
| BASERESOURCE_DISPOSABLE_UNINITIALIZED || disposable uninitialized || 4
|-
| BASERESOURCE_NUMBEROFBASERESOURCETYPES || || 5
|}
 
==== PC ====
{| 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 ||
|}