Protection
PC
Saves are validated by a modified MD5 hash at the end of the save. It can be overcome using Bo98's save rehasher.
Other platforms
No protection is present.
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.
Although row definitions are best read programmatically with the rest of the database, the structures they define are provided in a subpage for those who want to read them manually.
Structures
Profile
This is the overall savegame structure. Only the MUD database itself is defined in Criterion's debugging symbols; the rest is from independent research and prone to error.
PlayStation 3, Xbox 360, PlayStation Vita, Wii U
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 |
0x3FFFC |
Db |
? |
MUD database |
|
0x40000 |
0x400 |
? |
? |
Unknown data, always null |
|
PC
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 |
0x3D800 |
Db |
? |
MUD database |
|
0x3D804 |
0x2BFC |
? |
? |
Unknown data, always null |
|
0x40400 |
0x410 |
? |
? |
EA account/login information |
See account info
|
0x40810 |
0x10 |
? |
? |
MD5 hash |
See protection
|
Mud::Db
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x1 |
uint8_t |
muFormatVersion |
|
Always 3
|
0x1 |
0x3 |
char[3] |
macMagic |
|
|
0x4 |
0x4 |
uint32_t |
muAllocatedSize |
|
|
0x8 |
0x4 |
uint32_t |
muSchemaVersion |
|
26, 27 or 28
|
0xC |
0xC |
TableList |
mTables |
|
|
0x18 |
0x8 |
Allocator |
mPageAllocator |
|
|
0x20 |
0x100 |
uint8_t[256] |
mauReserved |
|
|
Mud::SampleExternalArrayList<Mud::Table>
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x4 |
uint32_t |
muCount |
|
|
0x4 |
0x4 |
uint32_t |
muCapacity |
|
|
0x8 |
0x4 |
Table* |
mpaStorage |
|
|
Mud::Table
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0xD |
char[13] |
macName |
|
|
0xD |
0x3 |
|
|
Padding |
|
0x10 |
0x178 |
RowDef |
mRowDef |
|
|
0x188 |
0x4 |
Page* |
mpFirstPage |
|
|
0x18C |
0x4 |
Allocator* |
mpAllocator |
|
|
0x190 |
0xB8 |
uint8_t[184] |
mauDefaultRow |
|
|
Mud::RowDef
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x2 |
uint16_t |
muRowSize |
|
|
0x2 |
0x2 |
|
|
Padding |
|
0x4 |
0x174 |
ColumnList |
mColumns |
|
|
Mud::Column
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0xC |
char[12] |
macName |
|
|
0xC |
0x1 |
uint8_t |
muType |
|
See type
|
0xD |
0x1 |
uint8_t |
muSize |
|
|
0xE |
0x2 |
uint16_t |
muRowOffset |
|
|
Mud::Page
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x10 |
Header |
mHeader |
|
|
0x10 |
0xEC |
uint8_t[236] |
mBody |
|
|
0xFC |
0x4 |
Footer |
mFooter |
|
|
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x4 |
Page* |
mpNext |
Next node |
|
0x4 |
0x4 |
Table* |
mpTable |
Type |
|
0x8 |
0x2 |
uint16_t |
muNextAllocation |
Length |
|
0xA |
0x2 |
|
|
Padding |
|
0xC |
0x4 |
uint32_t |
muSentinelPre |
|
|
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x4 |
uint32_t |
muSentinelPost |
|
|
Mud::Allocator
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x4 |
Page* |
mpaPages |
|
Always 0xB800
|
0x4 |
0x4 |
int32_t |
miNumPages |
|
Always 0x320
|
Account info
Offset |
Length |
Type |
Name |
Description |
Comments
|
0x0 |
0x400 |
char[1024] |
? |
Token |
|
0x400 |
0x4 |
uint32_t |
? |
Version? |
|
0x404 |
0x4 |
|
|
Padding |
|
0x408 |
0x8 |
uint64_t |
? |
Account ID? |
Possibly uint32_t followed by 4 bytes of padding
|
Typedefs
Mud::Db::TableList
Mud::RowDef::ColumnList
Mud::MudArrayList<Mud::Column, 23>::type
Enumerations
Mud::EType
Name |
Value |
Comments
|
E_TYPE_INT32 |
0 |
|
E_TYPE_FLOAT |
1 |
|
E_TYPE_INT16 |
2 |
|
E_TYPE_INT8 |
3 |
|
E_TYPE_INT64 |
4 |
|
E_TYPE_BOOL |
5 |
|
E_TYPE_UINT8 |
6 |
|
E_TYPE_UINT16 |
7 |
|
E_TYPE_UINT32 |
8 |
|
E_TYPE_UINT64 |
9 |
|
E_TYPE_STRING |
10 |
|
E_TYPE_COUNT |
11 |
|