Skip to content

feat: Add version 100-105 (ROTW) format support #1

Merged
ResurrectedTrader merged 1 commit intomainfrom
rotw
Mar 3, 2026
Merged

feat: Add version 100-105 (ROTW) format support #1
ResurrectedTrader merged 1 commit intomainfrom
rotw

Conversation

@ResurrectedTrader
Copy link
Owner

Add support for D2R save format versions 100-105 with restructured header, new sections, and updated item serialization.

Header changes (v104+):

  • PreviewData expanded to 228 bytes with SaveTimes[6], Experiences[6], GameMode field, and 96-byte UTF-8 Name
  • Character Name field removed (now only in PreviewData)

New sections:

  • DemonSection (v103+, "lf" magic) for summoned creature persistence
  • ChronicleSection (0xC0EAEDC0) tracking found set/unique/runeword items
  • StashTabType enum (Normal, AdvancedStash, Chronicle) for StashFormat 2

Item serialization (v105+):

  • Quantity uses 1-bit presence flag for ALL items, not just stackable
  • Chronicle recipient data (v100+) with CharacterIdentity pairs
  • AdvancedStashStackSize for advanced stash tab items (v100+)

New enums: GameMode, DemonType, StashTabType, CharacterClass.Warlock, and stat IDs 207/361-367.

Version conversion extended across v96↔v97+, v<=103↔v104+, and v<=104↔v105+ boundaries.

@ResurrectedTrader ResurrectedTrader changed the title feat: Add version 100-105 format support feat: Add version 100-105 (ROTW) format support Mar 3, 2026
Add support for D2R save format versions 100-105 with restructured
header, new sections, and updated item serialization.

Header changes (v104+):
- PreviewData expanded to 228 bytes with SaveTimes[6], Experiences[6],
GameMode field, and 96-byte UTF-8 Name
- Character Name field removed (now only in PreviewData)

New sections:
- DemonSection (v103+, "lf" magic) for summoned creature persistence
- ChronicleSection (0xC0EAEDC0) tracking found set/unique/runeword items
- StashTabType enum (Normal, AdvancedStash, Chronicle) for StashFormat 2

Item serialization (v105+):
- Quantity uses 1-bit presence flag for ALL items, not just stackable
- Chronicle recipient data (v100+) with CharacterIdentity pairs
- AdvancedStashStackSize for advanced stash tab items (v100+)

New enums: GameMode, DemonType, StashTabType, CharacterClass.Warlock,
and stat IDs 207/361-367.

Version conversion extended across v96↔v97+, v<=103↔v104+, and
v<=104↔v105+ boundaries.
@ResurrectedTrader ResurrectedTrader merged commit 043e9b6 into main Mar 3, 2026
2 checks passed
@ResurrectedTrader ResurrectedTrader deleted the rotw branch March 3, 2026 09:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant