Difference between revisions of "Save File (OKAMI) File Format"
Jump to navigation
Jump to search
The following article is currently a Work In Progress and will have more details soon.
The following article is currently a Work In Progress and will have more details soon.
The following article is currently a Work In Progress and will have more details soon. The following article is currently a Work In Progress and will have more details soon. The following article is currently a Work In Progress and will have more details soon.
Heinermann (talk | contribs) (WIP stuff) |
Heinermann (talk | contribs) (→Texture Data: more info on texture stuff) |
||
| Line 113: | Line 113: | ||
! Save Offset !! Relative Offset !! Type !! Size !! Description | ! Save Offset !! Relative Offset !! Type !! Size !! Description | ||
|- | |- | ||
| 0x7140 || 0x00 || uint8_t[ | | 0x7140 || 0x00 || uint8_t[0x8000] || 0x8000 || Texture 1 Image bits (4 bits per pixel) (256x256) | ||
|- | |- | ||
| | | 0xF140 || 0x8000 || uint32_t[16] || 0x40 || Texture 1 unknown colour information | ||
|- | |- | ||
| | | 0xF180 || 0x8040 || uint32_t[16] || 0x40 || Texture 1 unknown colour information | ||
|- | |- | ||
| 0x17270 || 0x10130 || hx::Texture[2] || 0x30 || unknown | | 0xF1C0 || 0x8080 || hx::Texture[2] || 0x30 || Texture 1 unknown | ||
|- | |||
| 0xF1F0 || 0x80B0 || uint8_t[0x8000] || 0x8000 || Texture 2 Image bits (4 bits per pixel) (256x256) | |||
|- | |||
| 0x171F0 || 0x100B0 || uint32_t[16] || 0x40 || Texture 2 unknown colour information | |||
|- | |||
| 0x17230 || 0x100F0 || uint32_t[16] || 0x40 || Texture 2 unknown colour information | |||
|- | |||
| 0x17270 || 0x10130 || hx::Texture[2] || 0x30 || Texture 2 unknown | |||
|} | |} | ||
Revision as of 19:29, 23 June 2025
Note: This page pertains to Reverse Engineering of Okami File Formats.
Save File
The save file is exactly 2 846 400 bytes (2.71MB), with a fixed allocation of 30 save slots.
Okami HD save file information is located at Steam/userdata/<user-id>/587620/remote/Steam/OKAMI.
Save Slot
Each save slot is 94880 (0x172A0) bytes.
| Offset | Type | Size | Description |
|---|---|---|---|
| 0x0000 | uint32_t | 4 | 00 00 40 40 |
| 0x0004 | uint32_t | 4 | Area name string ID |
| 0x0008 | uint64_t | 8 | Slot checksum |
| 0x0010 | uint64_t | 8 | Save time RTC (result of wk::OSGetTimeRTC from flower_kernel.dll)
|
| 0x0018 | CharacterStats | 0x48 | Character Stats such as health, food, praise, godhood, position, and some unlocks. |
| 0x60 | TrackerData | 0x80 | Tracking information such as first-time item acquisition, logbook, bestiary, time played, etc. |
| 0xE0 | CollectionData | 0x11B0 | Items collected, inventory, current map, travel guides and various tomes collected, time and day, brush techniques, map states, rejuvenated areas, animals fed, money, demon fangs, enemies slain, etc. |
| 0x1290 | uint32_t[83][57] | 0x49EC | Additional persistent map flags (others in CollectionData). First index is the Map Table vanilla index. Second is the bitfield index. |
| 0x5C7C | uint32_t[83][16] | 0x14C0 | Issun dialog bits. If a bit is set, then the dialog has been completed before. First index is the Map Table vanilla index. Second is the bitfield index. |
| 0x713C | uint32_t | 4 | unknown |
| 0x7140 | TextureData | 0x10160 | Texture information for drawn in-game art. i.e. the Imp Mask drawn in the Moon Cave. |
Character Stats
| Save Offset | Relative Offset | Type | Size | Description |
|---|---|---|---|---|
| 0x0018 | 0x00 | uint16_t | 2 | Current health |
| 0x001A | 0x02 | uint16_t | 2 | Max health |
| 0x001C | 0x04 | uint16_t | 2 | Current food (Astral Pouch) |
| 0x001E | 0x06 | uint16_t | 2 | Max food (Astral Pouch) |
| 0x0020 | 0x08 | uint8_t | 1 | unknown |
| 0x0021 | 0x09 | uint8_t | 1 | unknown (padding?) |
| 0x0022 | 0x0A | uint16_t | 2 | Current praise |
| 0x0024 | 0x0C | uint16_t | 2 | Total praise |
| 0x0026 | 0x0E | uint16_t | 2 | unknown (padding?) |
| 0x0028 | 0x10 | uint32_t[2] | 8 | Bitmask for dojo techniques unlocked |
| 0x0030 | 0x18 | uint8_t | 1 | unknown |
| 0x0031 | 0x19 | uint8_t | 1 | unknown |
| 0x0032 | 0x1A | uint8_t | 1 | unknown |
| 0x0033 | 0x1B | uint8_t | 1 | unknown (padding?) |
| 0x0034 | 0x1C | uint16_t | 2 | Godhood Points |
| 0x0036 | 0x1E | uint16_t | 2 | unknown (padding?) |
| 0x0038 | 0x20 | uint32_t[2] | 8 | Bitmask for weapon unlocks ? (TODO confirm) |
| 0x0040 | 0x28 | uint16_t | 2 | unknown |
| 0x0042 | 0x2A | uint16_t | 2 | unknown |
| 0x0044 | 0x2C | uint16_t | 2 | unknown |
| 0x0046 | 0x2E | uint16_t | 2 | unknown (padding?) |
| 0x0048 | 0x30 | float | 4 | x |
| 0x004C | 0x34 | float | 4 | y |
| 0x0050 | 0x38 | float | 4 | z |
| 0x0054 | 0x3C | float | 4 | u |
| 0x0058 | 0x40 | float | 4 | v |
| 0x005C | 0x44 | float | 4 | w |
Tracker Data
Collection Data
Persistent Bits
Texture Data
| Save Offset | Relative Offset | Type | Size | Description |
|---|---|---|---|---|
| 0x7140 | 0x00 | uint8_t[0x8000] | 0x8000 | Texture 1 Image bits (4 bits per pixel) (256x256) |
| 0xF140 | 0x8000 | uint32_t[16] | 0x40 | Texture 1 unknown colour information |
| 0xF180 | 0x8040 | uint32_t[16] | 0x40 | Texture 1 unknown colour information |
| 0xF1C0 | 0x8080 | hx::Texture[2] | 0x30 | Texture 1 unknown |
| 0xF1F0 | 0x80B0 | uint8_t[0x8000] | 0x8000 | Texture 2 Image bits (4 bits per pixel) (256x256) |
| 0x171F0 | 0x100B0 | uint32_t[16] | 0x40 | Texture 2 unknown colour information |
| 0x17230 | 0x100F0 | uint32_t[16] | 0x40 | Texture 2 unknown colour information |
| 0x17270 | 0x10130 | hx::Texture[2] | 0x30 | Texture 2 unknown |