Reverse-engineering the 1998 Ultima Online demo server

· design · Source ↗

TLDR

  • 10-year project translates ~5,000 MSVC x86 functions from UoDemo.exe into portable C99, releasing a near-complete 1998 UO server replica.

Key Takeaways

  • UoDemo.exe (1998-09-02) bundled the actual UO production server code for Ocllo island; most server emulators used parts of it but none fully reversed it until now.
  • Each function was hand-translated to C99 with instruction-by-instruction verification via radare2; C++ symbols from an experimental Linux UO client 1.25.37 port aided naming.
  • Class hierarchy (CEntity -> CItem -> CMobile -> CPlayer) and vtable layout were the critical early unlock; 64-bit builds use deliberate struct padding to preserve inheritance offsets.
  • The retired ecology system (predator/prey/scavenger) was found intact but unwired; the project re-enables wolf/rabbit chasing and crow scavenging behavior.
  • LLMs accelerated the final phase after years of stalled progress; support extended from client 1.25.33 to all clients up to 5.0.9.1, covering five distinct encryption schemes.

Hacker News Comment Review

  • No substantive HN discussion yet.

Original | Discuss on HN