-
Notifications
You must be signed in to change notification settings - Fork 6
Savegame File Structure
tolik518 edited this page Jan 17, 2021
·
4 revisions
First of all we need to open our save game in a hex editor
I'd recommend working with Hex Workshop since it supports bookmarks, which make the life a lot easier.
You will get something like this.
The first 4 bytes are not known yet what the stand for also the byte at 0x000C seems like to have no function
at the moment since it has always the value of 0x42. Looking for 0x42 at 0x000C is probaby a good method to
verify if a file is a proper save game file.
The structure:
Position | Length (in bytes) | Type | Name | Comment | Example | Example Meaning |
---|---|---|---|---|---|---|
0x00000000 | 4 | ??? | ??? | ??? | 6B 00 00 00 | ??? |
0x00000004 | 4 | Int32 | hat | 46 75 00 00 | Big Eggshell | |
0x00000008 | 4 | Int32 | facegear | 4F 9C 00 00 | Monkey Ears | |
0x0000000C | 1 | ??? | ??? | Always 42 | 42 | ??? |
0x0000000D | 4 | Int32 | hair | 00 71 02 00 | Hairstyle 0 | |
0x00000011 | 4 | Int32 | weapon | 50 C3 00 00 | Wooden Sword | |
0x00000015 | 4 | Int32 | shield | 20 4E 00 00 | Wooden Shield | |
0x00000019 | 4 | Int32 | armor | A4 5F 01 00 | Barbarian Strap | |
0x0000001D | 4 | Int32 | shoes | A0 86 01 00 | Mountain Boots | |
0x00000021 | 4 | Int32 | accessory1 | 9F 38 01 00 | Restless Spirit | |
0x00000025 | 4 | Int32 | accessory2 | 97 38 01 00 | Blue Ribbon Brooch | |
0x00000029 | 4 | Int32 | stylehat | 30 75 00 00 | Straw Boater | |
0x0000002D | 4 | Int32 | stylefacegear | 40 9C 00 00 | Blindfold | |
0x00000031 | 4 | Int32 | styleweapon | 50 C3 00 00 | Wooden Sword | |
0x00000035 | 4 | Int32 | styleshield | 20 4E 00 00 | Wooden Shield | |
0x00000039 | 1 | bool | HatHidden? | 00 | Not Hidden | |
0x0000003A | 1 | bool | FacegearHidden? | 01 | Hidden | |
0x0000003B | 4 | Int32 | lastOneHander | 50 C3 00 00 | Wooden Sword | |
0x0000003F | 4 | Int32 | LastTwoHander | 6F EA 00 00 | Angels Thirst | |
0x00000043 | 4 | Int32 | LastBow | FF FF FF FF | None | |
0x00000047 | 1 | byte | Quickslot0Type | If 1{length 4} else if 2 {length 2} else length 0 | 01 | |
0x00000048 | 2 | Int32/Int16 | QuickSlot0 | We have 10 Quickslots | 34 27 00 00 | Gift Box |
… | ||||||
Offset | ||||||
0x00000000 | 1 | byte | HairColor | 00 | Black | |
0x00000001 | 1 | byte | SkinColor | 01 | ||
0x00000002 | 1 | byte | PonchoColor | 04 | LightGrey | |
0x00000003 | 1 | byte | ShirtColor | 04 | LightGrey | |
0x00000067 | 1 | byte | PantsColor | 06 | DarkRed | |
0x00000004 | 1 | byte | male? | 01 | Male | |
0x00000005 | 1 | byte | name_length | 08 | 8 Charakters Nickname | |
0x00000006 | name_length | Char[] | Nickname | 54 6F 6C 69 6B 35 31 38 | Tolik518 | |
.. | ||||||
Offset | ||||||
0x00000000 | 4 | Int32 | inventory_length | Not the same as number of items in the game | 6C 01 00 00 | 364 Items |
0x00000004 | 4 | Int32 | Item ID | 0E 00 00 00 | Card Album | |
0x000000A | 4 | Int32 | Count | 01 00 00 00 | 1 Times | |
0x00000010 | 4 | Int32 | Position | B5 A0 00 00 | 41141 | |
… | ||||||
Offset | ||||||
0x00000000 | 4 | ??? | ??? | ??? | B7 A0 00 00 | 41143 |
0x00000004 | 4 | Int32 | Shady Merchant length | 03 00 00 00 | 3 Items in the Display | |
0x0000000A | 4 | Int32 | Item ID | 6D 75 00 00 | Statue Mask | |
0x00000010 | 4 | Int32 | Count | 01 00 00 00 | 1 Times | |
… | ||||||
Offset | ||||||
0x00000000 | 4 | Int32 | Cards count | 1F 00 00 00 | 31 Cards | |
0x00000004 | 4 | Int32 | Card ID | 00 00 00 00 | ??? | |
… | ||||||
Offset | ||||||
0x00000000 | 4 | Int32 | Treasure Map Count | 08 00 00 00 | 8 Treasure maps | |
0x00000004 | 2 | Int16 | Treasure Map | E8 03 | ||
… | ||||||
Offset | ||||||
0x00000000 | 4 | Int32 | idk | Treasure Map Count again? | 08 00 00 00 | 8 ??? |
0x00000004 | 2 | Int16 | idk | ED 03 | ??? | |
… | ||||||
Offset | ||||||
0x00000000 | 4 | Int32 | Skill/Talents Count | 0D 00 00 00 | 13 different skills | |
0x00000004 | 2 | Int16 | Skill/talent ID | E9 03 | Two Handed Spin | |
0x00000006 | 1 | Byte | Skill/Talent Level | 09 | Level 9 | |
… | ||||||
Offset | ||||||
0x00000000 | 2 | Int16 | Level | 1C | 28 | |
0x00000002 | 4 | Int32 | Current EXP | 01 00 00 00 | 1 Exp | |
0x00000006 | 4 | Int32 | EXP Needed? | 10 27 00 00 | 10000 Exp | |
0x0000000A | 4 | Int32 | EXP ?? | 10 27 00 00 | 10000 ??? | |
0x0000000E | 2 | Int16 | Talent Point | 01 00 | 1 | |
0x00000010 | 2 | Int16 | Silver Skill point | 06 00 | 6 | |
0x00000012 | 2 | Int16 | Gold Skill point | 01 00 | 1 | |
0x00000014 | 4 | Int32 | Money/Gold | 01 27 01 00 | 75521 Gold |
How to read the rest of the file is not known yet, but we know that gold, pets and skills are stored there