A developer has successfully transformed the single-player 1990s DOS classic *Wing Commander* into a cooperative multiplayer experience. The project, which took over a decade to complete, allows two players to fly separate ships in the same game world simultaneously. This was achieved by reverse-engineering the game's internal memory to identify where it stores ship coordinates and velocity, then building a networking layer to synchronize those values across different machines in real-time.
The core technical challenge involved isolating specific variables within the game's 640K DOS memory segment. By taking memory snapshots while the game was stopped and then while the ship was moving, the developer identified the exact bytes responsible for position and velocity. However, simply writing to these memory addresses was insufficient for complex actions like firing lasers or heat seekers. To solve this, the developer created a 'trampoline' system—a method of hijacking the game's original functions. Because the game used Borland's dynamic overlays, which load different code segments into different memory locations depending on the player's path, the developer had to find stable locations to insert these jumps, eventually using specific strings in the game's UI to host the redirection logic.

This figure illustrates the memory forensics used to identify the exact bytes responsible for ship movement.

This visual demonstrates the process of isolating variables by comparing memory snapshots of different ship states.
To make the experience accessible to a modern audience, the project was ported to the web using Emscripten and a custom Go-based lobby system called lobbylink. This setup uses WebRTC to establish peer-to-peer connections, allowing players to join a room and fly together directly in their browsers without needing to share public IP addresses or manually configure complex network ports. While the system successfully syncs ship positions and fire events every frame, the project highlights the extreme complexity of 'puppeteering' legacy software; the developers had to co-opt the original game's physics and combat code rather than relying solely on memory writes to ensure the most accurate gameplay experience. The current implementation supports synchronized chat, where messages typed by one player appear on the other's Virtual Display Unit (VDU), maintaining the immersive atmosphere of the original title.

This image shows the final result of the project: two players interacting in a shared browser-based environment.
One notable limitation of this approach is the reliance on the specific memory layout of the original game's data segment. Because the developers had to manually identify and map these addresses, the system is highly specialized to this specific version of *Wing Commander*. Furthermore, while the WebRTC and lobbylink system handles the networking, the stability of the 'trampoline' system remains a delicate balance between the game's original execution flow and the injected network commands, which can still be affected by the unpredictable nature of legacy code overlays.
Ultimately, the project demonstrates a sophisticated blend of low-level memory forensics and modern web technologies. By identifying that the game's camera lived in entity slot 0x3D—a possible '3D' joke by the original programmers—and using that as a starting point, the developer was able to bridge the gap between 1990s hardware constraints and 2020s connectivity. The result is a playable, browser-based co-op mode that preserves the original game's mechanics while enabling a shared experience that was never intended by the original creators.