Technology1 min read

Show HN: After a decade of reversing, I got co-op working in DOS Wing Commander

By · Published by Everything Blog

In short

The project officially began in October 2015 when developer danielrh used DOSBox debug features to pinpoint ship positions in system memory. By comparing memory dumps taken while floating stationary and moving through empty space, the developer isolated coordinate addresses and injected new values from outside the game. Work continued through late 2016 to map directional vectors and camera variables using custom-built snapshot comparison tools. These manipulated memory locations form the base necessary for network packets to control a synchronized cooperative wingmate.

Key points

  • Injecting modified values directly into isolated memory addresses enabled external softwa…: Injecting modified values directly into isolated memory addresses enabled external software to manipulate the ship position.
  • Identifying rotation mechanics and camera data within reserved entity properties provided…: Identifying rotation mechanics and camera data within reserved entity properties provided the foundation needed for network-driven cooperative flight.
  • An eleven-year reverse-engineering effort fulfilled a childhood ambition to turn the sing…: An eleven-year reverse-engineering effort fulfilled a childhood ambition to turn the single-player DOS title into a true cooperative game.

Sources checked by our analysis pipeline: 1

An 11 year journey to play DOS Wing Commander together

By danielrh

When we were kids, my brother Patrick and I would steer our space fighter with one of us on controls and the other on the lasers and afterburner boost. We always dreamed of playing the Wing Commander series cooperatively as wingmates rather than as a two headed hydra in a single craft.

In the beginning we were searching for where we were

On October 4, 2015 as I was playing the classic Wing Commander in Dosbox I realized the whole memory probably fit in that 640K Bill Gates apocryphally said “ought to be enough for anybody”. If I could dump the memory and identify the locations that held the X,Y,Z coords for the player & wingman we could let the network packets control the wingman.

The actual quote

“I have to say that in 1981, making those decisions, I felt like I was providing enough freedom for 10 years. That is, a move from 64 K to 640 K felt like something that would last a great deal…

Technology