SPA: Difference between revisions

From Xenon Wiki
Jump to navigation Jump to search
imported>Stoker25
mNo edit summary
imported>Tuxuser
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
'''SPA''' files are contained inside [[XEX]] files. Based on the [[XDBF]] format, they are used by the dashboard for [[GPD]] creation and [[Xbox LIVE]] information.
'''SPA''' files are contained inside [[XEX]] files or within Updates or DLC. They are just a [[XDBF]] file, they are used by the dashboard for [[GPD]] creation and [[Xbox LIVE]] information.


= Entry Table =
= Record Table =
== Entry Namespaces ==
== Record Namespaces ==
{| border=1
{| border=1
|-
|-
Line 18: Line 18:
|}
|}


= Entry Structures =
= Record Structures =
== File Header ==
== Metadata ==
=== Data ===
Each record here is set out differently depending on there magic.
=== XACH ===
This is just a table of Achievements.
{| border=1
{| border=1
|-
|-
Line 28: Line 30:
! Information
! Information
|-
|-
| 0x0
| 0
| 0x4
| 4
| unsigned int
| string
| Magic (0x58544844)
| Magic (XACH)
|-
|-
| 0x4
| 0x4
Line 41: Line 43:
| 0x4
| 0x4
| unsigned int
| unsigned int
| Structure Size
| Structure Size (- Magic)
|-
|-
| 0xC
| 0xC
| 0x4
| 0x2
| unsigned int
| unsigned short
| Title ID
| Achievement Count
|-
| 0xE
| '''Achievement Count''' * 36 (0x24)
| achievement structure (see below)
| Achievements
|}
==== Achievement Structure ====
{| border=1
|-
! Offset
! Length
! Type
! Information
|-
| 0x0
| 0x2
| unsigned short
| Achievement ID
|-
| 0x2
| 0x2
| unsigned short
| Title String ID
|-
|-
| 0x10
| 0x4
| 0x4
| unsigned int
| Title Type (0 = system, 1 = full, 2 = demo, 3 = download)
|-
| 0x14
| 0x2
| 0x2
| unsigned short
| unsigned short
| Project Version Major
| Unlocked Description ID
|-
|-
| 0x16
| 0x6
| 0x2
| 0x2
| unsigned short
| unsigned short
| Project Version Minor
| Locked Description ID
|-
| 0x8
| 0x4
| unsigned int
| Image ID
|-
|-
| 0x18
| 0xC
| 0x2
| 0x2
| unsigned short
| unsigned short
| Project Version Build
| Gamerscore
|-
|-
| 0x1A
| 0xE
| 0x2
| 0x2
| unsigned short
| unsigned short
| Project Version Revision
| Unused
|-
| 0x10
| 0x4
| unsigned int
| Flags
|-
|-
| 0x1C
| 0x14
| 0x4
| 0x4
| unsigned int
| unsigned int
| Unused
| Unused
|-
|-
| 0x20
| 0x18
| 0x4
| 0x4
| unsigned int
| unsigned int
| Unused
| Unused
|-
|-
| 0x24
| 0x1C
| 0x4
| 0x4
| unsigned int
| unsigned int
| Unused
| Unused
|-
|-
| 0x28
| 0x20
| 0x4
| 0x4
| unsigned int
| unsigned int
| Unused
| Unused
|}
|}
== Achievement Collection ==
=== XCXT ===
=== Data ===
TODO: what this stores
{| border=1
|-
! Offset
! Length
! Type
! Information
|-
| 0
| 4
| string
| Magic (XCXT)
|-
| 4
| 4
| UInt32
| Version
|-
| 8
| 4
| UInt32
| Structure Size (- Magic)
|-
| 12
| 4
| UInt32
| Record Count
|-
| 16
| '''Record Count''' * 16
| Record structure (see below)
| Records
|}
==== Record Structure ====
{| border=1
|-
! Offset
! Length
! Type
! Information
|-
| 0
| 4
| UInt32
| Unknown
|-
| 4
| 4
| UInt32
| Unknown
|-
| 8
| 4
| UInt32
| Unknown
|-
| 12
| 4
| UInt32
| Unknown
|}
TODO: Unknown
=== XITB ===
This record just stores the ImagePath + ID's.
{| border=1
|-
! Offset
! Length
! Type
! Information
|-
| 0
| 4
| string
| Magic (XITB)
|-
| 4
| 4
| UInt32
| Version
|-
| 8
| 4
| UInt32
| Structure Size (- Magic)
|-
| 12
| 4
| UInt32
| Image Count
|-
| 16
| '''Image Count''' * 16
| Image structure (see below)
| Images
|}
==== Image Structure ====
{| border=1
|-
! Offset
! Length
! Type
! Information
|-
| 0
| 4
| UInt32
| ImageID
|-
| 4
| 4
| UInt32
| Name Length
|-
| 8
| Name Length
| String
| Image Path
|}
=== XMAT ===
TODO: What this stores
{| border=1
|-
! Offset
! Length
! Type
! Information
|-
| 0
| 4
| string
| Magic (XMAT)
|-
| 4
| 4
| UInt32
| Version
|-
| 8
| 4
| UInt32
| Structure Size (- Magic)
|-
| 12
| '''Structure Size''' - 8
| Byte[]
| Unknown
|}
TODO: Unknown
=== XPBM ===
TODO: What this stores
{| border=1
|-
! Offset
! Length
! Type
! Information
|-
| 0
| 4
| string
| Magic (XPBM)
|-
| 4
| 4
| UInt32
| Version
|-
| 8
| 4
| UInt32
| Structure Size (- Magic)
|-
| 12
| '''Structure Size''' - 8
| Byte[]
| Unknown
|}
TODO: Unknown
=== XPRP ===
TODO: what this stores
{| border=1
|-
! Offset
! Length
! Type
! Information
|-
| 0
| 4
| string
| Magic (XPRP)
|-
| 4
| 4
| UInt32
| Version
|-
| 8
| 4
| UInt32
| Structure Size (- Magic)
|-
| 12
| 4
| UInt32
| Record Count
|-
| 16
| '''Record Count''' * 8
| Record structure (see below)
| Records
|}
==== Record Structure ====
{| border=1
|-
! Offset
! Length
! Type
! Information
|-
| 0
| 8
| Byte[]
| Unknown
|}
TODO: Unknown, (2 int32's?)
=== XRPT ===
This record just stores a series of XPMB files.
{| border=1
|-
! Offset
! Length
! Type
! Information
|-
| 0
| 4
| string
| Magic (XRPT)
|-
| 4
| 4
| UInt32
| Version
|-
| 8
| 4
| UInt32
| Structure Size
|-
| 12
|
| '''XPMB'''
| XPBM
|-
|
| 2
| UInt16
| XPBM Count
|-
|
|
| XPBM[XPBM Count]
| Sub XPBMs
|}
=== XSRC ===
This file is something todo with xlast, (a source file?)
{| border=1
{| border=1
|-
|-
Line 102: Line 399:
! Information
! Information
|-
|-
| 0x0
| 0
| 0x4
| 4
| unsigned int
| string
| Magic (0x58414348)
| Magic (XSRC)
|-
|-
| 0x4
| 4
| 0x4
| 4
| unsigned int
| UInt32
| Structure Version
| Version
|-
|-
| 0x8
| 8
| 0x4
| 4
| unsigned int
| UInt32
| Structure Size
| Structure Size
|-
|-
| 0xC
| 12
| 0x2
| 4
| unsigned short
| UInt32
| Achievement Count
| NameLength
|-
| 16
| NameLength
| String
| (original?)filename
|-
|-
| 0xE
| 16 + NameLength
| '''Achievement Count''' * 36 (0x24)
| Structure Size - 8
| achievement structure (see below)
| Byte[]
| Achievements
| Unknown(compressed?)
|}
|}
 
TODO:Unknown
=== Achievement Structure ===
=== XSTC ===
 
TODO: What this stores
{| border=1
{| border=1
|-
|-
Line 137: Line 439:
! Information
! Information
|-
|-
| 0x0
| 0
| 0x2
| 4
| unsigned short
| string
| Achievement ID
| Magic (XSTC)
|-
| 4
| 4
| UInt32
| Version
|-
| 8
| 4
| UInt32
| Structure Size (- Magic)
|-
| 12
| 4
| UInt32
| Unknown
|}
TODO: Unknown
=== XTHD ===
{| border=1
|-
! Offset
! Length
! Type
! Information
|-
|-
| 0x2
| 0
| 0x2
| 4
| unsigned short
| unsigned int
| Title String ID
| Magic (XTHD)
|-
|-
| 0x4
| 0x4
| 0x2
| 0x4
| unsigned short
| unsigned int
| Unlocked Description ID
| Structure Version
|-
| 0x6
| 0x2
| unsigned short
| Locked Description ID
|-
|-
| 0x8
| 0x8
| 0x4
| 0x4
| unsigned int
| unsigned int
| Image ID
| Structure Size
|-
|-
| 0xC
| 0xC
| 0x4
| unsigned int
| Title ID
|-
| 0x10
| 0x4
| unsigned int
| Title Type (0 = system, 1 = full, 2 = demo, 3 = download)
|-
| 0x14
| 0x2
| 0x2
| unsigned short
| unsigned short
| Gamerscore
| Project Version Major
|-
| 0x16
| 0x2
| unsigned short
| Project Version Minor
|-
|-
| 0xE
| 0x18
| 0x2
| 0x2
| unsigned short
| unsigned short
| Unused
| Project Version Build
|-
|-
| 0x10
| 0x1A
| 0x4
| 0x2
| unsigned int
| unsigned short
| Flags
| Project Version Revision
|-
|-
| 0x14
| 0x1C
| 0x4
| 0x4
| unsigned int
| unsigned int
| Unused
| Unused
|-
|-
| 0x18
| 0x20
| 0x4
| 0x4
| unsigned int
| unsigned int
| Unused
| Unused
|-
|-
| 0x1C
| 0x24
| 0x4
| 0x4
| unsigned int
| unsigned int
| Unused
| Unused
|-
|-
| 0x20
| 0x28
| 0x4
| 0x4
| unsigned int
| unsigned int
| Unused
| Unused
|}
|}
 
Is StructureSize null for anyone else? only in this record.
[[Category:File formats]]
=== XVC2 ===
This record just stores a series of XPBM files, and (TODO:Unknown).
{| border=1
|-
! Offset
! Length
! Type
! Information
|-
| 0
| 4
| string
| Magic (XVC2)
|-
| 4
| 4
| UInt32
| Version
|-
| 8
| 4
| UInt32
| Structure Size (- Magic)
|-
| 12
| 2
| UInt16
| XPBM Count
|-
| 14
| 204
| Byte[]
| Unknown
|-
| 208
|
| XPBM[]
| XPBM's
|}
TODO: Unknown
== Images ==
Image entries are composed of a PNG image.
== String Tables ==
=== XSTR ===
All these records are set out the same however some have a unknown byte[] after the string.
{| border=1
|-
! Offset
! Length
! Type
! Information
|-
| 0
| 4
| string
| Magic (XSTR)
|-
| 4
| 4
| UInt32
| Version
|-
| 8
| 4
| UInt32
| Structure Size (- Magic)
|-
| 12
| 4
| UInt16
| String Count
|-
| 16
|
| String structure (see below)
| Strings
|}
==== String Structure ====
{| border=1
|-
! Offset
! Length
! Type
! Information
|-
| 0
| 2
| UInt16
| String ID
|-
| 2
| 2
| UInt16
| String Length
|-
| 4
| '''String Length'''
| String
| String
|}
[[Category:Xbox360_System_Software]]

Latest revision as of 00:14, 7 January 2014

SPA files are contained inside XEX files or within Updates or DLC. They are just a XDBF file, they are used by the dashboard for GPD creation and Xbox LIVE information.

Record Table

Record Namespaces

Value Description
1 Metadata
2 Images
3 String Tables

Record Structures

Metadata

Each record here is set out differently depending on there magic.

XACH

This is just a table of Achievements.

Offset Length Type Information
0 4 string Magic (XACH)
0x4 0x4 unsigned int Structure Version
0x8 0x4 unsigned int Structure Size (- Magic)
0xC 0x2 unsigned short Achievement Count
0xE Achievement Count * 36 (0x24) achievement structure (see below) Achievements

Achievement Structure

Offset Length Type Information
0x0 0x2 unsigned short Achievement ID
0x2 0x2 unsigned short Title String ID
0x4 0x2 unsigned short Unlocked Description ID
0x6 0x2 unsigned short Locked Description ID
0x8 0x4 unsigned int Image ID
0xC 0x2 unsigned short Gamerscore
0xE 0x2 unsigned short Unused
0x10 0x4 unsigned int Flags
0x14 0x4 unsigned int Unused
0x18 0x4 unsigned int Unused
0x1C 0x4 unsigned int Unused
0x20 0x4 unsigned int Unused

XCXT

TODO: what this stores

Offset Length Type Information
0 4 string Magic (XCXT)
4 4 UInt32 Version
8 4 UInt32 Structure Size (- Magic)
12 4 UInt32 Record Count
16 Record Count * 16 Record structure (see below) Records

Record Structure

Offset Length Type Information
0 4 UInt32 Unknown
4 4 UInt32 Unknown
8 4 UInt32 Unknown
12 4 UInt32 Unknown

TODO: Unknown

XITB

This record just stores the ImagePath + ID's.

Offset Length Type Information
0 4 string Magic (XITB)
4 4 UInt32 Version
8 4 UInt32 Structure Size (- Magic)
12 4 UInt32 Image Count
16 Image Count * 16 Image structure (see below) Images

Image Structure

Offset Length Type Information
0 4 UInt32 ImageID
4 4 UInt32 Name Length
8 Name Length String Image Path

XMAT

TODO: What this stores

Offset Length Type Information
0 4 string Magic (XMAT)
4 4 UInt32 Version
8 4 UInt32 Structure Size (- Magic)
12 Structure Size - 8 Byte[] Unknown

TODO: Unknown

XPBM

TODO: What this stores

Offset Length Type Information
0 4 string Magic (XPBM)
4 4 UInt32 Version
8 4 UInt32 Structure Size (- Magic)
12 Structure Size - 8 Byte[] Unknown

TODO: Unknown

XPRP

TODO: what this stores

Offset Length Type Information
0 4 string Magic (XPRP)
4 4 UInt32 Version
8 4 UInt32 Structure Size (- Magic)
12 4 UInt32 Record Count
16 Record Count * 8 Record structure (see below) Records

Record Structure

Offset Length Type Information
0 8 Byte[] Unknown

TODO: Unknown, (2 int32's?)

XRPT

This record just stores a series of XPMB files.

Offset Length Type Information
0 4 string Magic (XRPT)
4 4 UInt32 Version
8 4 UInt32 Structure Size
12 XPMB XPBM
2 UInt16 XPBM Count
XPBM[XPBM Count] Sub XPBMs

XSRC

This file is something todo with xlast, (a source file?)

Offset Length Type Information
0 4 string Magic (XSRC)
4 4 UInt32 Version
8 4 UInt32 Structure Size
12 4 UInt32 NameLength
16 NameLength String (original?)filename
16 + NameLength Structure Size - 8 Byte[] Unknown(compressed?)

TODO:Unknown

XSTC

TODO: What this stores

Offset Length Type Information
0 4 string Magic (XSTC)
4 4 UInt32 Version
8 4 UInt32 Structure Size (- Magic)
12 4 UInt32 Unknown

TODO: Unknown

XTHD

Offset Length Type Information
0 4 unsigned int Magic (XTHD)
0x4 0x4 unsigned int Structure Version
0x8 0x4 unsigned int Structure Size
0xC 0x4 unsigned int Title ID
0x10 0x4 unsigned int Title Type (0 = system, 1 = full, 2 = demo, 3 = download)
0x14 0x2 unsigned short Project Version Major
0x16 0x2 unsigned short Project Version Minor
0x18 0x2 unsigned short Project Version Build
0x1A 0x2 unsigned short Project Version Revision
0x1C 0x4 unsigned int Unused
0x20 0x4 unsigned int Unused
0x24 0x4 unsigned int Unused
0x28 0x4 unsigned int Unused

Is StructureSize null for anyone else? only in this record.

XVC2

This record just stores a series of XPBM files, and (TODO:Unknown).

Offset Length Type Information
0 4 string Magic (XVC2)
4 4 UInt32 Version
8 4 UInt32 Structure Size (- Magic)
12 2 UInt16 XPBM Count
14 204 Byte[] Unknown
208 XPBM[] XPBM's

TODO: Unknown

Images

Image entries are composed of a PNG image.

String Tables

XSTR

All these records are set out the same however some have a unknown byte[] after the string.

Offset Length Type Information
0 4 string Magic (XSTR)
4 4 UInt32 Version
8 4 UInt32 Structure Size (- Magic)
12 4 UInt16 String Count
16 String structure (see below) Strings

String Structure

Offset Length Type Information
0 2 UInt16 String ID
2 2 UInt16 String Length
4 String Length String String