Persist.dat: Difference between revisions

From OniGalore
Jump to navigation Jump to search
(savepoint added)
(previous contents were merged into the page that this one now redirects to)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
==Unlocking more levels==
#REDIRECT[[Oni (folder)/persist.dat]]
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==
 
[[Image:Persist_header.gif]]
 
{{Table}}
{{OBDth}}
{{OBDtr| 0x00 | int32 |FF0000| 0F 00 00 00 | 15        | version }}
{{OBDtr| 0x04 | int32 |FF0000| 0E 0B D0 D0 | 0xD0D00B0E | signature }}
{{OBDtr| 0x08 | int32 |FF0000| 5C 7F 0C 00 | 0x000C7F5C | level unlock data for levels 0-31; each level has a corresponding bit:
:0x'''01''' 00 00 00 - level 0 (always unlocked, ignored)
:0x'''02''' 00 00 00 - level 1 (always unlocked, ignored)
:0x'''04''' 00 00 00 - level 2
:...
:0x00 00 '''08''' 00 - level 19 }}
{{OBDtr| 0x0C | int32 |FF0000| 00 00 00 00 |      | level unlock data for levels 32-63 }}
{{OBDtr| 0x10 | int32 |FF0000| 00 00 00 00 |      | level unlock data for levels 64-95 }}
{{OBDtr| 0x14 | int32 |FF0000| 00 00 00 00 |      | level unlock data for levels 96-127 }}
{{OBDtr| 0x18 | int32 |FF0000| 00 00 00 00 |      | level unlock data for levels 128-159 }}
{{OBDtr| 0x1C | int32 |FF0000| 00 00 00 00 |      | level unlock data for levels 160-191 }}
{{OBDtr| 0x20 | int32 |FF0000| 00 00 00 00 |      | level unlock data for levels 192-223 }}
{{OBDtr| 0x24 | int32 |FF0000| 00 00 00 00 |      | level unlock data for levels 224-255 }}
{{OBDtr| 0x28 | int32 |FFFF00| 01 00 00 00 |  1  | killed Griffin (0 <nowiki>=</nowiki> no, 1 <nowiki>=</nowiki> yes) }}
{{OBDtr| 0x2C |      |00FF00| 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]] }}
{{OBDtr| 0x30 |      |00FFFF| 1F 00 00 00 |  31  | unlocked items; one bit for each item type (hypo, ammo etc.)  }}
{{OBDtr| 0x34 |      |FF00FF| 13 00 00 00 |  19  | last read diary page (level) }}
{{OBDtr| 0x38 |      |FFC8C8| 01 00 00 00 |  1  | last read diary page (page) }}
{{OBDtr| 0x3C | int32 |FFFFC8| 04 00 00 00 |  4  | level of detail; the following options are possible:
:0 - extra low
:1 - low
:2 - medium
:3 - high
:4 - extra high }}
{{OBDtr| 0x40 | float |C8FFC8| 00 00 80 3F | 1.0  | music volume (0.0 <nowiki>=</nowiki> min, 1.0 <nowiki>=</nowiki> max) }}
{{OBDtr| 0x44 | int32 |C8FFFF| 06 00 00 00 | 6    | option flags; the following values are possible:
:0x'''01''' 00 00 00 - show subtitles
:0x'''02''' 00 00 00 - invert mouse
:0x'''04''' 00 00 00 - game won (aka cheats enabled) }}
{{OBDtr| 0x48 | int32 |FFC8FF| 02 00 00 00 | 2    | difficulity; the following values are possible:
:0 - easy
:1 - medium
:2 - hard }}
{{OBDtr| 0x4C | int16 |FFC800| 20 03      | 800 | resolution: width }}
{{OBDtr| 0x4E | int16 |FFC800| 02 58      | 800 | resolution: height }}
{{OBDtr| 0x50 | int16 |C800C8| 20 00      | 32  | color depth }}
{{OBDtr| 0x52 |      |C800C8| 00 00      |    | padding }}
{{OBDtr| 0x54 | float |C87C64| 00 00 00 3F | 0.5 | gamma correction (0.0 <nowiki>=</nowiki> min, 1.0 <nowiki>=</nowiki> max) }}
{{OBDtr| 0x58 | int32 |B0C3D4| 03 00 00 00 | 3  | last saved level }}
{{OBDtr| 0x5C | int32 |E7CEA5| 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==
 
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 }}
|}

Latest revision as of 20:52, 23 May 2013