Show HN: After a decade of reversing, I got co-op working in DOS Wing Commander
Posted by daniel_rh 6 hours ago
Comments
Comment by EmX_3000 7 minutes ago
EDIT: I will point out that people would often submit letters to computer magazines with the memory locations of popular games as time went on. But this could take months or a year or more, and a game might never have its secrets laid bare so I suspect a LOT of people just did it manually at home.
Comment by daniel_rh 4 minutes ago
Comment by daniel_rh 6 hours ago
Over ten years my brother and I went through a set of experiments (stop and go, turn, communicate) while probing the memory. We uncovered where the variables were, how to inject calls into the game functions, and how to sync the gamestate across the network, so we can fly the story missions together.
My favorite finding is that the camera lives in entity slot 0x3D, which is possibly a "3D" reference by the original developers.
You can play it at https://fireflyk64.github.io/dosbox in browser. If you own Wing Commander, drag in the installer since no game files are hosted. If you don't, the page will load the original DOS/3Dfx version of Vega Strike, before I open sourced it. I upscaled and redid DOS Vega Strike art using AI, but it now has multiplayer and a similar feel.
I'll be in the lobby for the next few hours if anyone wants to fly together.
Disclosure: I also used AI for the final step to help compile for the browser and port our TCP networking stack to WebRTC with voice and solve a few lingering bugs.
Comment by cadr 4 hours ago
Comment by frikk 4 hours ago
Comment by daniel_rh 4 hours ago
However, that original WC-only 8+ years of figuring out how the data segment was organized and how to call original functions was all by-hand hacking. It was indeed like cutting through a dark forest with no guide.
Comment by Tepix 2 hours ago
Comment by daniel_rh 2 hours ago
Comment by ShakataGaNai 2 hours ago
Comment by abrookewood 2 hours ago
Comment by JeppyG 2 hours ago
Comment by 0xmattclark 2 hours ago
Comment by AmazingEveryDay 2 hours ago
Comment by daniel_rh 2 hours ago