Jump to content

Profile/Need for Speed Hot Pursuit: Difference between revisions

Improved page structure.
(Created page.)
 
(Improved page structure.)
Line 1:
= Headers, footers and protection =
This section lists the game-specific headers, footers and protections on the savegame. See the section on the [[Profile#Protection|profile page]] for per-platform protections.
 
==== All platforms ====
A 4 byte header specifying the length of the database is the first field in the save. All pointers in the database are relative to offset 4 in the file because of this. After the database is {{hex|0x47000}} bytes of null data. Additional data follows on PC.
 
==== PC ====
The database is followed by 1024 characters storing the login token. The token is followed by a chunk of length {{hex|0x10}}. If nobody is logged in, this is null. If an account is logged in, this stores a 32-bit integer with value <code>2</code>, 4 bytes of padding, and a 64-bit integer (or 32-bit with 4 bytes padding) which is presumably the account ID.
 
After this is a 128-bit hash used for savegame validation. Without recalculating the hash, saves cannot be modified. The algorithm used is currently unknown.
 
==== PC (Remastered) ====
The database is followed by a space character ({{hex|0x20}}), then the same 128-bit hash as is used in the original PC game. No padding is present.
 
==== Other platforms ====
No game-specific headers, footers or protections are present on other platforms.
 
= Row definitions =
Row definitions define the fields, or columns, used in each table. With different schema versions, new row definitions may be added and existing ones may be altered or removed.
Line 23 ⟶ 6:
 
= Structures =
=== Savegame ===
This is the overall savegame structure. Only the MUD database itself is defined in Criterion's debugging symbols; the rest is independent research and prone to error.
 
==== Playstation 3, Xbox 360, PlayStation 4, Switch ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || ? || Database length || All pointers in the database are relative to offset 0x4 because of this
|-
| 0x4 || 0x40000 || [[#Mud::Db|Db]] || ? || MUD database ||
|-
| 0x40004 || 0x4700C || ? || ? || Unknown data, always null ||
|}
 
==== All platformsPC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || ? || Database length || All pointers in the database are relative to offset 0x4 because of this
|-
| 0x4 || 0x40000 || [[#Mud::Db|Db]] || ? || MUD database ||
|-
| 0x40004 || 0x4700C || ? || ? || Unknown data, always null ||
|-
| 0x87010 || 0x410 || ? || ? || EA account/login information || See [[#Account info|account info]]
|-
| 0x87420 || 0x10 || ? || ? || 128-bit hash || Used for save validation. Unknown algorithm
|}
 
==== PC (Remastered) ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || ? || Database length || All pointers in the database are relative to offset 0x4 because of this
|-
| 0x4 || 0x40000 || [[#Mud::Db|Db]] || ? || MUD database ||
|-
| 0x40004 || 0x4700C || ? || ? || Unknown data, always null ||
|-
| 0x87010 || 0x1 || char || ? || Unused. Replaces account info || Always 0x20
|-
| 0x87011 || 0x10 || ? || ? || 128-bit hash || Used for save validation. Unknown algorithm. Not padded
|}
 
=== Mud::Db ===
==== 32-bit ====
Line 193 ⟶ 220:
|-
| 0x8 || 0x4 || int32_t || miNumPages || || Always 0x22F
|}
 
=== Account info ===
'''PC only.''' The database is followed by 1024 characters storing the login token. The token is followed by a chunk of length {{hex|0x10}}.-long If nobody is logged in, this is null. If an account is logged in,chunk thiswhich stores a 32-bit integer with value <code>2</code>, 4 bytes of padding, and a 64-bit integer (or 32-bit with 4 bytes padding) which is presumably the account ID.
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x400 || char[1024] || ? || Token ||
|-
| 0x400 || 0x4 || uint32_t || ? || Version? ||
|-
| 0x404 || 0x4 || || || Padding ||
|-
| 0x408 || 0x8 || uint64_t || ? || EA account ID || Possibly uint32_t followed by 4 bytes of padding
|}
 
Cookies help us deliver our services. By using our services, you agree to our use of cookies.