FOS file format
From Vault-Tec Labs
The Fallout 3 Savegame format (*.fos), shows some similarities with the Oblivion format. Discoveries about the FO3 format will be posted on this page. In addition, the Xbox 360 file format for the Fallout 3 Savegame format (*.fxs) closely resembles the PC format from offset 0000D000 on, however currently the two are not interchangeable like it was for Oblivion. Most of the information found here is derived/abstracted from this page.
[edit] General Information
If there's a Byte Offset value in the table, it means it's fixed (i.e. for every save file).
Each row in the table represents a Byte-Block, separated by a 7C byte (ANSII: "|").
Example:
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F 00000000 46 4F 33 53 41 56 45 47 41 4D 45 56 00 00 00 30 FO3SAVEGAMEV...0 00000010 00 00 00 7C 00 02 00 00 7C 40 01 00 00 7C 05 00 ...|....|@...|.. 00000020 00 00 7C 07 00 7C 41 68 6C 65 65 6E 61 7C 0C 00 ..|..|Ahleena|.. 00000030 7C 56 61 75 6C 74 20 4D 61 72 74 79 72 7C 02 00 |Vault Martyr|.. 00000040 00 00 7C 11 00 7C 4D 6F 72 69 61 72 74 79 27 73 ..|..|Moriarty's 00000050 20 53 61 6C 6F 6F 6E 7C 09 00 7C 30 30 31 2E 34 Saloon|..|001.4 00000060 35 2E 32 38 7C 5.28|
[edit] File Header
| Name | Type/Size | Info |
|---|---|---|
| fileId | char[11] | Constant: "FO3SAVEGAME" |
| fileId | char[1] | This can be any letter. Use unknown. |
| ?byte | 6x ubyte | Unknown |
| ScreenShotDataWidth | long | The width of the embedded screen shot |
| ScreenShotDataHeight | long | The height of the embedded screen shot |
| SaveIndex | long | Save game number as seen in your save game list. The file name also has this number. |
[edit] Preview
| Name | Type/Size | Info |
|---|---|---|
| pcNameSize | short | Indicating the length of the pcName value. E.g. if the name is "TEST", the pcNameSize is 4. |
| pcName | bzstring | The Player Character's Name. |
| pcKarmaSize | short | Indicating the length of the pcKarma value. E.g. if the string is "Vault Martyr", the pcKarmaSize is 12. |
| pcKarma | bzstring | A string indicating the PC's Karma Rank (e.g. "Vault Martyr"). |
| pcLevel | long | A long (4 bytes) indicating the PC's level. |
| pcLocationSize | short | Indicating the length of the pcLocation value. E.g. if the string is "The Capital Wasteland", the pcLocationSize is 21. |
| pcLocation | bzstring | A string showing the PC's current location (e.g. "Moriarty's Saloon"). |
| PlaytimeSize | short | Length of the Playtime bzstring |
| Playtime | ###.##.## | A value indicating the amount of time the PC has played (e.g. "001.40.12", 1 hour, 40 minutes, 12 seconds) |
| ScreenShotData | ScreenShotDataHeight*ScreenShotDataWidth*3 ubytes | Contains interlaced rgb screenshot data. |
| ? bytes | 5 ubytes | Unknown data. (Not preceded by the delimiter). |
| PlugInCount | ubyte | Number of active esm/esp files |
| PlugInNameSize | short | Size of the plug-in name. |
| PlugInName | bzstring | Name of active plug-in. (Repeated for each active plug-in). |
