Persist.dat
Jump to navigation
Jump to search
Unlocking more levels
To unlock (all) of the levels, fill the range 0x08 to 0x28 with "FF". So far this has caused no problems, and allows you to add more levels to the game. Levels will not be visible unless there is a corrisponding LevelX_Final.dat in the Gamedata folder, and an ONLD that matches the level number in the level0_final.dat. Levels above 39 are not currently unlockable due to the 40 level savepoint limit in the persist.dat (probably reflecting an underlying engine restriction).
Header
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x00 | int32 | 0F 00 00 00 | 15 | version |
0x04 | int32 | 0E 0B D0 D0 | 0xD0D00B0E | signature |
0x08 | int32 | 5C 7F 0C 00 | 0x000C7F5C | level unlock data for levels 0-31; each level has a corresponding bit:
|
0x0C | int32 | 00 00 00 00 | level unlock data for levels 32-63 | |
0x10 | int32 | 00 00 00 00 | level unlock data for levels 64-95 | |
0x14 | int32 | 00 00 00 00 | level unlock data for levels 96-127 | |
0x18 | int32 | 00 00 00 00 | level unlock data for levels 128-159 | |
0x1C | int32 | 00 00 00 00 | level unlock data for levels 160-191 | |
0x20 | int32 | 00 00 00 00 | level unlock data for levels 192-223 | |
0x24 | int32 | 00 00 00 00 | level unlock data for levels 224-255 | |
0x28 | int32 | 01 00 00 00 | 1 | killed Griffin (0 = no, 1 = yes) |
0x2C | FE 1B 00 00 | 7166 | unlocked weapons; one bit for each weapon; the number of corresponding bit is given by the skill index value in the primary firing mode block of each ONWC | |
0x30 | 1F 00 00 00 | 31 | unlocked items; one bit for each item type (hypo, ammo etc.) | |
0x34 | 13 00 00 00 | 19 | last read diary page (level) | |
0x38 | 01 00 00 00 | 1 | last read diary page (page) | |
0x3C | int32 | 04 00 00 00 | 4 | level of detail; the following options are possible:
|
0x40 | float | 00 00 80 3F | 1.0 | music volume (0.0 = min, 1.0 = max) |
0x44 | int32 | 06 00 00 00 | 6 | option flags; the following values are possible:
|
0x48 | int32 | 02 00 00 00 | 2 | difficulity; the following values are possible:
|
0x4C | int16 | 20 03 | 800 | resolution: width |
0x4E | int16 | 02 58 | 800 | resolution: height |
0x50 | int16 | 20 00 | 32 | color depth |
0x52 | 00 00 | padding | ||
0x54 | float | 00 00 00 3F | 0.5 | gamma correction (0.0 = min, 1.0 = max) |
0x58 | int32 | 03 00 00 00 | 3 | last saved level |
0x5C | int32 | 02 00 00 00 | 3 | last saved savepoint |
This header is followed by an array of 400 savepoints (40 levels, 10 savepoints per level). The size of a savepoint is 516 bytes so the array size is 206400 bytes.