errors.x7.al › Recent issues

Wing Commander co-op project reverse-engineers the game's 64K entity table

A long-running project that adds cooperative multiplayer to the original DOS version of Wing Commander became browser-playable in October 2026. Its write-up, published on 19 October, describes an eleven-year effort to locate the game's entity table inside a 64K data segment and drive a second ship from another machine. It is a hobby project, not an official release, and still requires your own copy of the game.

Advertisement

What's happening

The project appeared as a "Show HN" post on 19 October 2026 at 15:47 UTC, titled "Show HN: Reversing Wing Commander to find the entity table in 64k to add co-op". According to the author, Daniel Horn, the idea dates back to 2015, when he hypothesised that the full game state of Wing Commander fit inside the DOS data segment, which is limited to 64K. If the player and wingman coordinates could be found there, network packets could control the second ship.

The search used memory snapshots from DOSBox's MEMDUMPBIN, compared with vbindiff, first while the ship was stopped and then while it moved, to separate background churn from values that changed with position. The author reports finding position data at 13D3:A9C2 and velocity at CAE2, and describes the game as reserving 64 entity slots of 12 bytes each. The camera reportedly sits at entity index 0x3D, which the author speculates may have been a joke about "3D".

Writing to memory alone was not enough: laser fire and missiles required calling the game's own functions, which lived in Borland overlays loaded at changing addresses. The project used a trampoline written over an unused string. A hand-made stub initially crashed the game at random, the author notes, because Borland's overlay loader walked the stack looking for frame pointers; making the stub look like a real Borland frame fixed it. Networking began in 2017 with a TCP client-server protocol using protobuf messages, with each player's ship mapped to entity 0 or 1 locally.

The project was playable by 2020, but sharing it was impractical: players needed the game, a modified DOSBox build, public IP addresses and firewall changes. The 2026 update adds an emscripten build that runs in the browser and a small Go lobby server called lobbylink, which uses room codes and WebRTC, with TURN relay for restrictive networks. The author says language models helped with the 2026 browser and peer-to-peer work, including build scripts and optional voice chat, while the game itself was reversed largely by hand.

Who's affected

  • Players who own a legitimate copy of DOS Wing Commander. The project does not host game files. The author points to the GOG release and says its installer can be dragged into the browser.
  • Retro-gaming and reverse-engineering enthusiasts. The write-up is likely to interest people working with DOS memory, DOSBox, Borland overlays or emscripten, whether or not they play.
  • Not an outage or a security issue. Nothing here indicates a fault in Wing Commander, DOSBox or any vendor service; it is a community mod.
  • Browser and platform support: unknown. The page lists no tested browsers, operating systems, hardware requirements or performance figures, and does not say how many people have tried it.

What to do

  • Read the project page first. It links to the browser build and source code; those instructions may change as the project develops.
  • Use your own game files. The author states that no game files are hosted and that you need your own copy, for example from GOG. Drag the installer into the browser build when prompted.
  • Join with a room code. Both players enter the same code; the lobby brokers a WebRTC connection, with TURN relay when a direct connection fails.
  • Voice chat is optional. The author says it uses a second WebRTC peer connection. It can be left off if you prefer.
  • Report problems upstream. Source is on GitHub at danielrh/wcmulti; the author invited issue reports, including requests for other games such as X-Wing.
  • No official support or compatibility promise. This is a hobby project with no vendor backing. If the browser build fails, there is no confirmed fix to point to; include browser, operating system and console details when reporting it.

Details such as supported browsers and setup steps may change; check the project page and the HN thread for the current state.

Sources

Advertisement