Persist.dat: Difference between revisions
Jump to navigation
Jump to search
(attempting to fix table... table not fixed, table replaced :)) |
(savepoint added) |
||
Line 54: | Line 54: | ||
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. | 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. | ||
==Savepoint== | |||
http://ssg.oni2.net/subfold/savegame/images/save_m.gif | |||
{{Table}} | |||
{{OBDth}} | |||
{{OBDtr2|0x00 | char[64] |FF0000| "Save Point 2" | name of the save point }} | |||
{{OBDtr| 0x40 | int32 |FFFF00| 01 00 00 00 | 1 | valid (was saved previously) savepoint (0 <nowiki>=</nowiki> no, 1 <nowiki>=</nowiki> yes) }} | |||
{{OBDtr| 0x44 | int32 |00FF00| BE 00 00 00 | 190 | current player health }} | |||
{{OBDtr| 0x48 | int32 |00FFFF| C8 00 00 00 | 200 | max player health }} | |||
{{OBDtr| 0x4C | float |FF00FF| AE 20 FB 43 | 502.255310 | x position of the player }} | |||
{{OBDtr| 0x50 | float |FF00FF| 03 32 4B 42 | 50.798839 | y position of the player }} | |||
{{OBDtr| 0x54 | float |FF00FF| 55 12 25 C4 | -660.286437| z position of the player }} | |||
{{OBDtr| 0x58 | float |FFC8C8| 80 06 C1 3F | 1.508010 | player facing direction (radians) }} | |||
{{OBDtr| 0x5C | int32 |FFFFC8| 00 00 00 00 | 0 | ammo amount }} | |||
{{OBDtr| 0x60 | int32 |C8FFC8| 01 00 00 00 | 1 | energy cells amount }} | |||
{{OBDtr| 0x64 | int32 |C8FFFF| 00 00 00 00 | 0 | shield (percent) }} | |||
{{OBDtr| 0x68 | int32 |FFC8FF| 00 00 00 00 | 0 | invisibility (1/60 seconds) }} | |||
{{OBDtr| 0x6C | int32 |FFC800| 01 00 00 00 | 1 | hypo ammount }} | |||
{{OBDtr| 0x70 | int32 |C800C8| 00 00 00 00 | 0 | door keys}} | |||
{{OBDtr| 0x74 | int32 |C87C64| 01 00 00 00 | 1 | character has lsi (0 <nowiki>=</nowiki> no, 1 <nowiki>=</nowiki> yes) }} | |||
{{OBDtr2| 0x78 | char[128]|B0C3D4| "" | weapon name }} | |||
{{OBDtr | 0xF8 | int32 |FFDDDD| 00 00 00 00 | 0 | weapon ammo }} | |||
{{OBDtr2| 0xFC | char[128]|FFDDDD| "" | weapon name }} | |||
{{OBDtr | 0x17C| int32 |FFDDDD| 00 00 00 00 | 0 | weapon ammo }} | |||
{{OBDtr2| 0x180| char[128]|64AAAA| "w2_sap" | weapon name }} | |||
{{OBDtr | 0x200| int32 |EBEBEB| 1E 00 00 00 | 30 | weapon ammo }} | |||
|} |
Revision as of 08:30, 25 August 2008
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.
Savepoint
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x00 | char[64] | "Save Point 2" | name of the save point | |
0x40 | int32 | 01 00 00 00 | 1 | valid (was saved previously) savepoint (0 = no, 1 = yes) |
0x44 | int32 | BE 00 00 00 | 190 | current player health |
0x48 | int32 | C8 00 00 00 | 200 | max player health |
0x4C | float | AE 20 FB 43 | 502.255310 | x position of the player |
0x50 | float | 03 32 4B 42 | 50.798839 | y position of the player |
0x54 | float | 55 12 25 C4 | -660.286437 | z position of the player |
0x58 | float | 80 06 C1 3F | 1.508010 | player facing direction (radians) |
0x5C | int32 | 00 00 00 00 | 0 | ammo amount |
0x60 | int32 | 01 00 00 00 | 1 | energy cells amount |
0x64 | int32 | 00 00 00 00 | 0 | shield (percent) |
0x68 | int32 | 00 00 00 00 | 0 | invisibility (1/60 seconds) |
0x6C | int32 | 01 00 00 00 | 1 | hypo ammount |
0x70 | int32 | 00 00 00 00 | 0 | door keys |
0x74 | int32 | 01 00 00 00 | 1 | character has lsi (0 = no, 1 = yes) |
0x78 | char[128] | "" | weapon name | |
0xF8 | int32 | 00 00 00 00 | 0 | weapon ammo |
0xFC | char[128] | "" | weapon name | |
0x17C | int32 | 00 00 00 00 | 0 | weapon ammo |
0x180 | char[128] | "w2_sap" | weapon name | |
0x200 | int32 | 1E 00 00 00 | 30 | weapon ammo |