Bundle (original): Difference between revisions
Content added Content deleted
m (→Memory types) |
(Add per-platform info and base resource info. Remove overview as the information is redundant with the main Bundle page.) |
||
Line 4:
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 =
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.
Line 28 ⟶ 17:
== CgsResource::BundleHeaderBase ==
=== Bundle ===
==== PlayStation 3 ====
{| class="wikitable"
! 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 || [[#rw::BaseResourceDescriptor|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|Platform]]
|}
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
Line 38 ⟶ 52:
| 0x8 || 0x4 || uint32_t || muResourceEntriesCount || Number of resources in the bundle ||
|-
| 0xC || 0x28 || [[#
|-
| 0x34 || 0x14 || uint32_t[5] || || Memory address of each chunk ||
Line 51 ⟶ 65:
|-
| 0x58 || 0x4 || uint32_t || muPlatform || Platform the bundle was built for || See [[#Platform|Platform]]
|}
==== PC ====
{| class="wikitable"
! 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 || [[#rw::BaseResourceDescriptor|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|Platform]]
|}
=== ResourceEntry ===
==== PlayStation 3 ====
{| class="wikitable"
! 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|ResourceType]]
|-
| 0xC || 0x30 || [[#rw::BaseResourceDescriptor|BaseResourceDescriptor]][6] || mauSizeAndAlignmentOnDisk || Resource sizes in bundle<br />Compressed size if compression used ||
|-
| 0x3C || 0x30 || [[#rw::BaseResourceDescriptor|BaseResourceDescriptor]][6] || mauDiskOffset || Offsets in bundle || Alignment is unused (always 1)
|-
| 0x6C || 0x18 || uint32_t[6] || || Memory addresses || Swapped endian
|}
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
Line 64 ⟶ 120:
| 0x8 || 0x4 || uint32_t || muResourceTypeId || Resource type || See [[#ResourceType|ResourceType]]
|-
| 0xC || 0x28 || [[#
|-
| 0x34 || 0x28 || [[#
|-
| 0x5C || 0x14 || uint32_t[5] || || Memory addresses || Swapped endian
|}
==== PC ====
{| class="wikitable"
! 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|ResourceType]]
|-
| 0xC || 0x20 || [[#rw::BaseResourceDescriptor|BaseResourceDescriptor]][4] || mauSizeAndAlignmentOnDisk || Resource sizes in bundle<br />Compressed size if compression used ||
|-
| 0x2C || 0x20 || [[#rw::BaseResourceDescriptor|BaseResourceDescriptor]][4] || mauDiskOffset || Offsets in bundle || Alignment is unused (always 1)
|-
| 0x4C || 0x10 || uint32_t[4] || || Memory addresses || Swapped endian
|}
Line 76 ⟶ 149:
=== ImportEntry ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
Line 86 ⟶ 158:
|}
===
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 ||
|-
| 0x4 || 0x4 || uint32_t || m_alignment || Alignment ||
|}
Line 100 ⟶ 171:
=== Bundle (Additions) ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
Line 111 ⟶ 181:
=== Compression Information ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x30 || [[#rw::BaseResourceDescriptor|BaseResourceDescriptor]][6] || mauUncompressedSizeAndAlignment || Uncompressed sizes ||
|}
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x28 || [[#rw::BaseResourceDescriptor|BaseResourceDescriptor]][5] || mauUncompressedSizeAndAlignment || Uncompressed sizes ||
|}
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 ||
|}
Line 121 ⟶ 205:
=== Bundle (Additions) ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
Line 132 ⟶ 215:
=== Platform ===
{| class="wikitable"
! Name !! Value !! Comments
|-
Line 144 ⟶ 226:
=== Flags ===
{| class="wikitable"
! Name !! Value !! Comments
|-
Line 152 ⟶ 233:
=== ResourceType ===
See [[Resource Types]].
= Base resource types =
==== PlayStation 3 ====
{| class="wikitable"
! Name !! Index
|-
| main memory || 0
|-
| disposable || 1
|-
| uninitialized || 2
|-
| disposable uninitialized || 3
|-
| graphics system || 4
|-
| graphics local || 5
|}
==== Xbox 360 ====
{| class="wikitable"
! Name !! Index
|-
| main memory || 0
|-
| disposable || 1
|-
| physical || 2
|-
| uninitialized || 3
|-
| disposable uninitialized || 4
|}
==== PC ====
{| class="wikitable"
! Name !! Index
|-
| main memory || 0
|-
| disposable || 1
|-
| uninitialized || 2
|-
| disposable uninitialized || 3
|}
|