Skip to content

Binary and export metadata#

Field Value
Game Lords of the Realm 2
Executable filename LORDS2.EXE
PE machine type i386 (expected)
SHA-256 ff33c884eb49701b2ead4439e05984cd7f4a053cfbc78a3e0214688fa35b034b
File size 1,152,000 bytes
Ghidra version TBD
Ghidra program hash TBD
Last export date TBD
Export layout Flat → src/ (LORDS2.EXE.c, LORDS2.EXE.h)

GoG release (Lords2-gog.exe)#

Field Value
Executable filename Lords2-gog.exe (GOG build)
Export file src/Lords2-gog.exe.c
SHA-256 TBD
Ghidra version TBD
Last export date TBD
Symbol sync Phase 1 UI — see architecture/gog-symbol-map.md

GoG differs from retail LORDS2.EXE: no DirectPlay / DPLAYX strings in the export (ASIGS session strings present instead). All code VAs differ; GoG renames use behavioral mapping from retail lotr2_* names, not address equality.

Narrative comparison (features, interop, evidence workflow): builds.md.

Build comparison summary#

Field Retail LORDS2.EXE GoG Lords2-gog.exe
Export src/LORDS2.EXE.c src/Lords2-gog.exe.c
SHA-256 ff33c884eb49701b2ead4439e05984cd7f4a053cfbc78a3e0214688fa35b034b TBD
File size 1,152,000 bytes TBD
Campaign yes yes
Skirmish mode no yes
Multiplayer stack DirectPlay 3 (DPLAYX.DLL) ASIGS (no DirectPlay strings)
Symbol policy canonical lotr2_* names behavioral map from retail

DirectX / multimedia (confirmed from decompilation)#

API Import / usage
DirectDraw DirectDrawCreate (4 call sites)
DirectSound DirectSoundCreate (4 call sites)
WinMM mmioOpenA / mmioRead, timeSetEvent / timeKillEvent

DirectPlay (confirmed from decompilation)#

Field Value
DirectPlay version DirectPlay 3 (IID_IDirectPlay3, vtable offsets)
Imports DPLAYX.DLL ordinal 1 = DirectPlayCreate, ordinal 2 = DirectPlayEnumerate (stubs at 0x4db1e4 / 0x4db1de)
Object IDirectPlay3 at lotr2_net_dplay3 (0x4ff400)
Provider CLSID / GUID TBD (selected at runtime via DirectPlayEnumerate)
Session / lobby notes Host opens a DPSESSIONDESC2 (default name Lords2 Session1); custom app-message framing over Send/Receive. See net module, protocol, struct

Notes#

  • Record any re-export that shifts addresses or renames symbols in the commit message.
  • First anchor renaming pass documented in architecture/symbol-map.md.
  • DirectPlay networking pass: lotr2_net_* renames + provenance comments in src/LORDS2.EXE.c; docs under protocols/ and structs/.
  • Link new protocol docs from protocols/README.md.

Game data files#

File SHA-256 Notes
L2.ENG 86ec67261c1e41a5233fcc5d7cbbe19fb0811e7d920f9592ccc521f136cea433 English strings; noble names in group 7 (not embedded in EXE). See nobles/README.md.

Parser: tools/parse_l2_eng.py. Noble AI tables: tools/ghidra/dump_noble_tables.py.