0
D2S file structure
offset purpose
0x000-0x007 Unknown, always contains 55 AA 55 AA 47 00 00 00
0x008-0x017 Char Name
0x018 Unknown -- maybe just space to terminate long name?
0x019 0 = normal char, 0x05=normal/nightmare 0x0d=normal/nightmare/hell
0x01a-0x021 unknown
0x022 Class 0=Amazon 1=Sorceress 2=Necro 3=Paladin 4=Barbarian
0x023 always 0 -- is class a short?
0x024-0x025 level on char select screen
0x026-0x089 Unknown (kinda) -- the first half of this determines what the char
looks like on selection screen
0x08a-0x08b flag to enable Act I normal (except act I is always enabled)
0x08c-0x08d Act I normal intro flag???
0x08e-0x099 Act I normal quest states -- note that quests are out of order
compared to display in quest log (they are in the order the combo box shows)
0x09a-0x09b flag to enable Act II normal
0x09c-0x09d Act II normal intro flag???
0x09e-0x0a9 Act II normal quest states (again, out of order)
0x0aa-0x0b9 Act III quest/enable info (same form as act II)
0x0ba-0x0bb Act IV enable flag
0x0bc-0x0bd Act IV intro flag???
0x0be-0x0c3 Act IV quest states (out of order)
0x0c4-0x0e9 Unused??
0x0ea-0x123 Nightmare quest data, same form as normal
0x124-0x149 Unused??
0x14a-0x183 Hell quest data, same form as normal
0x184-0x1b5 Unknown
0x1b6-0x1b9 Normal waypoints (bitmapped longint)
0x1ba-0x1cd Unknown (all 0's)
0x1ce-0x1d1 Nightmare waypoints
0x1d2-0x1e5 Unknown (all 0's)
0x1e6-0x1e9 Hell waypoints
0x1ea-0x231 Unknown
0x232 bitmapped -- any zero bits here will affect later offsets:
0x20 = skill points remaining flag
0x10 = stat points remaining flag
other bits unknown (all 1's)
0x233 0x80 = gold in stash flag
0x40 = gold on person flag
0x20 = has experience flag
other bits unknown (all 1's)
0x234 Unknown
0x235-0x238 Strength
0x239-0x23c Energy
0x23d-0x240 Dexterity
0x241-0x244 Vitality
0x245-0x248 Stat points remaining (IF ANY - if not affects later offsets) --
offsets past this point assume all values are present
0x249-0x24c Skill points remaining (IF ANY - if not affects later offsets)
0x24d Unknown (0)
0x24e-0x251 max life
0x252-0x255 current life - note: for display purposes this value is masked with
0x1fff in DII v1.02
0x256-0x259 max mana
0x25a-0x25d current mana - note: for display purposes this value is masked with
0x1fff in DII v1.02
0x25e-0x25f max stamina
0x260-0x261 unknown(0) --- 4 byte stamina values get newbified
0x262-0x263 current stamina
0x264 unknown(0)
0x265 level seen in game (used to determine exp to level)
0x266-0x268 unknown(0)
0x269-0x26c current experience (IF ANY - if not affects later offsets)
0x26d-0x270 gold on person (IF ANY - if not affects later offsets) - gets zeroed
by game if above max for level
0x271-x0274 gold in stash (IF ANY - if not affects later offsets) - gets zeroed
by game if above max for level
0x275-0x276 unknown (contains 69 66)
0x277-0x294 skill levels (1 byte each)
0x295-0x296 Start of item count block contains 4A 4D
0x297-0x298 item count -- this can differ from the # of item records because it
does not include gemming records
0x299-xxxx item records (see Map of Diablo II Item records)
xxxx+1-xxxx+12 item list termination block, usually 4A 4D 00 00 4A 4D 00 00 00
00
00 00
offset purpose
0x000-0x007 Unknown, always contains 55 AA 55 AA 47 00 00 00
0x008-0x017 Char Name
0x018 Unknown -- maybe just space to terminate long name?
0x019 0 = normal char, 0x05=normal/nightmare 0x0d=normal/nightmare/hell
0x01a-0x021 unknown
0x022 Class 0=Amazon 1=Sorceress 2=Necro 3=Paladin 4=Barbarian
0x023 always 0 -- is class a short?
0x024-0x025 level on char select screen
0x026-0x089 Unknown (kinda) -- the first half of this determines what the char
looks like on selection screen
0x08a-0x08b flag to enable Act I normal (except act I is always enabled)
0x08c-0x08d Act I normal intro flag???
0x08e-0x099 Act I normal quest states -- note that quests are out of order
compared to display in quest log (they are in the order the combo box shows)
0x09a-0x09b flag to enable Act II normal
0x09c-0x09d Act II normal intro flag???
0x09e-0x0a9 Act II normal quest states (again, out of order)
0x0aa-0x0b9 Act III quest/enable info (same form as act II)
0x0ba-0x0bb Act IV enable flag
0x0bc-0x0bd Act IV intro flag???
0x0be-0x0c3 Act IV quest states (out of order)
0x0c4-0x0e9 Unused??
0x0ea-0x123 Nightmare quest data, same form as normal
0x124-0x149 Unused??
0x14a-0x183 Hell quest data, same form as normal
0x184-0x1b5 Unknown
0x1b6-0x1b9 Normal waypoints (bitmapped longint)
0x1ba-0x1cd Unknown (all 0's)
0x1ce-0x1d1 Nightmare waypoints
0x1d2-0x1e5 Unknown (all 0's)
0x1e6-0x1e9 Hell waypoints
0x1ea-0x231 Unknown
0x232 bitmapped -- any zero bits here will affect later offsets:
0x20 = skill points remaining flag
0x10 = stat points remaining flag
other bits unknown (all 1's)
0x233 0x80 = gold in stash flag
0x40 = gold on person flag
0x20 = has experience flag
other bits unknown (all 1's)
0x234 Unknown
0x235-0x238 Strength
0x239-0x23c Energy
0x23d-0x240 Dexterity
0x241-0x244 Vitality
0x245-0x248 Stat points remaining (IF ANY - if not affects later offsets) --
offsets past this point assume all values are present
0x249-0x24c Skill points remaining (IF ANY - if not affects later offsets)
0x24d Unknown (0)
0x24e-0x251 max life
0x252-0x255 current life - note: for display purposes this value is masked with
0x1fff in DII v1.02
0x256-0x259 max mana
0x25a-0x25d current mana - note: for display purposes this value is masked with
0x1fff in DII v1.02
0x25e-0x25f max stamina
0x260-0x261 unknown(0) --- 4 byte stamina values get newbified
0x262-0x263 current stamina
0x264 unknown(0)
0x265 level seen in game (used to determine exp to level)
0x266-0x268 unknown(0)
0x269-0x26c current experience (IF ANY - if not affects later offsets)
0x26d-0x270 gold on person (IF ANY - if not affects later offsets) - gets zeroed
by game if above max for level
0x271-x0274 gold in stash (IF ANY - if not affects later offsets) - gets zeroed
by game if above max for level
0x275-0x276 unknown (contains 69 66)
0x277-0x294 skill levels (1 byte each)
0x295-0x296 Start of item count block contains 4A 4D
0x297-0x298 item count -- this can differ from the # of item records because it
does not include gemming records
0x299-xxxx item records (see Map of Diablo II Item records)
xxxx+1-xxxx+12 item list termination block, usually 4A 4D 00 00 4A 4D 00 00 00
00
00 00