Daniel Rhine y su hermano Patrick desarrollaron durante once años un sistema para permitir el juego cooperativo de la saga Wing Commander en el sistema operativo DOS. El proyecto, documentado en un blog personal, detalla el proceso técnico para manipular la memoria del juego original, que solo disponía de 640 KB de RAM. El objetivo era que dos jugadores controlaran dos naves distintas, eliminando la limitación de jugar como un solo avión con dos pilotos.
El proceso comenzó en 2015 cuando Daniel identificó que la memoria del juego cabía en la RAM limitada de DOSBox. Utilizando herramientas de depuración como MEMDUMPBIN, identificaron las coordenadas de las naves analizando los cambios en la memoria entre tomas de estado. En 2016, se desarrolló una herramienta para comparar automáticamente estas tomas de memoria, lo que permitió localizar las direcciones específicas que controlaban la rotación y la posición de las naves. Se descubrió que el juego utilizaba variables temporales en la dirección 0x3F, lo que facilitó la manipulación de los vectores de movimiento.
Para lograr el control real, el equipo tuvo que inyectar código en el juego para controlar las funciones de disparo y daño, ya que solo modificar la memoria global no era suficiente. En 2017, crearon un sistema de trampolines (trampolines) para invocar funciones específicas del juego desde direcciones seguras, evitando así la complejidad de manipular el programa contador directamente. Finalmente, en agosto de 2017, implementaron un protocolo de red basado en TCP y protobuf para transmitir las posiciones y eventos de juego entre los dos jugadores, completando así la experiencia cooperativa en la versión original de 1982.
