You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Version conversion between D2 LOD and D2R formats
15
13
- Complete item parsing including stats, sockets, runewords, and set bonuses
14
+
- Full round-tripping support - produces identical outputs, as verified by tests
15
+
- Separate [zero-copy overlay API](#overlay-api-zero-copy-access) for modifying header fields (name, level, flags, waypoints) without parsing the full save
16
+
- External .txt file support for modded game data
16
17
- Zero external dependencies beyond .NET
17
18
18
-
## Acknowledgments
19
-
20
-
This project was vibe coded with [Claude](https://claude.ai).
21
-
22
-
Special thanks to:
23
-
-[D2MOO](https://github.com/ThePhrozenKeep/D2MOO)
24
-
- dschu012 for [d2s](https://github.com/dschu012/d2s)
25
-
- Killshot
19
+
## Table of Contents
20
+
21
+
-[Installation](#installation)
22
+
-[Usage](#usage)
23
+
-[Reading a Character Save](#reading-a-character-save)
24
+
-[Modifying and Saving](#modifying-and-saving)
25
+
-[Reading Shared Stash](#reading-shared-stash)
26
+
-[Overlay API (Zero-Copy Access)](#overlay-api-zero-copy-access)
27
+
-[Performance](#performance)
28
+
-[Overlay Limitations](#overlay-limitations)
29
+
-[Save Format Versions](#save-format-versions)
30
+
-[Version Conversion](#version-conversion)
31
+
-[External Data](#external-data)
32
+
-[Mod Compatibility](#mod-compatibility)
33
+
-[Building](#building)
34
+
-[Acknowledgments](#acknowledgments)
26
35
27
36
## Installation
28
37
@@ -74,9 +83,21 @@ int bytesWritten = save.Write(buffer);
For simple modifications to the fixed-size header sections, the overlay API provides direct memory access without parsing the entire save file. This is significantly faster and allocates no memory.
100
+
For simple modifications to the fixed-size header sections, the overlay API provides direct memory access without parsing the entire save file.
80
101
81
102
```csharp
82
103
usingD2SSharp.Model;
@@ -86,13 +107,13 @@ byte[] data = File.ReadAllBytes("MyCharacter.d2s");
The overlay API is **~5700x faster** for reading character name and **~87x faster** for modifying fields and updating the checksum compared to a full round-trip.
140
+
141
+
### Overlay Limitations
115
142
116
143
The overlay API only covers the fixed-size header sections (first 765 bytes):
117
144
@@ -125,50 +152,13 @@ The overlay API only covers the fixed-size header sections (first 765 bytes):
125
152
126
153
**Not accessible via overlay**: Player stats (strength, vitality, gold, etc.), skills, items, corpses, mercenary items, iron golem. These require full parsing with `D2Save.Read()`.
The library includes embedded game data tables for versions 96, 97, and 99, which are used automatically. For modded games with custom items/stats, you can provide your own txt files:
143
-
144
-
```csharp
145
-
usingD2SSharp.Data;
146
-
147
-
// Load from a directory containing version subdirectories
The library selects version data based on exact match with the save file's version. If the required version is not available, an exception is thrown listing the available versions.
@@ -218,6 +208,31 @@ When comparing converted saves to saves created by the game:
218
208
219
209
These differences do not affect gameplay - the converted saves are fully functional.
220
210
211
+
## External Data
212
+
213
+
The library includes embedded game data tables for versions 96, 97, and 99, which are used automatically. For modded games with custom items/stats, you can provide your own txt files:
214
+
215
+
```csharp
216
+
usingD2SSharp.Data;
217
+
218
+
// Load from a directory containing version subdirectories
The library selects version data based on exact match with the save file's version. If the required version is not available, an exception is thrown listing the available versions.
235
+
221
236
## Mod Compatibility
222
237
223
238
The library provides limited support for modded save files:
@@ -239,6 +254,16 @@ dotnet build D2SSharp.sln
239
254
dotnet test
240
255
```
241
256
257
+
## Acknowledgments
258
+
259
+
This project was vibe coded with [Claude](https://claude.ai).
260
+
261
+
Special thanks to:
262
+
-[D2MOO](https://github.com/ThePhrozenKeep/D2MOO)
263
+
- dschu012 for [d2s](https://github.com/dschu012/d2s)
0 commit comments