I used to play this 2D flick-screen CGA DOS helicopter game as a kid, and I remember enjoying the simple presentation combined with what would now be called sandbox elements.
I thought it was really cool that you could eject from the helicopter and still run around and do things as a little sprite dude, and then get back in and fly off.
When I saw that the source was available, and had a poke around, I decided it wouldn't take (too) much effort to do a modern port, and make the game natively playable on today's machines.
It was a fun little project, certainly easier than my previous game restoration (Space Invaders in C), and it was interesting to explore the creation of a young Mark Currie, cranking out a
bedroom coded game in Turbo Pascal.
So, here it is, a modern port of "Chopper Commando" from early 90s Turbo Pascal on DOS, to C and SDL running on modern unix (linux/mac) and the web.
For the web hackers out there - the lossless animation at the start of the article is not a <video> or a gif.
I got annoyed with how video codecs destroy pixel art, and other things, so I wrote my own.
This was almost more fun than doing the port.
Ever since PCs have had DVI and consoles have had HDMI, gaming has been pristine lossless imagery. Go to IP video streaming and have compression artefacts taking a dump on every single frame? No thanks!
What was the porting process like? Use any tools to assist with it?
The Pascal to C translation was a bit gruelling. I'd like to say that I'd written a fancy transpiler for it, but it came down to a 20 line ruby script, some vim macros and a ton of elbow grease.
I added the functions to emulate the Turbo Pascal library as I went. This was a bit more fun, because I got to play around with implementing line drawing, circle drawing and flood filling, and really low level stuff like that.
The final stages, adding in threading to handle emulating the keyboard buffer, framebuffer and PC speaker was also a lot of fun.
I plan to cover at least some of these things in part two.
Sticking with Pascal would have been more authentic to the original source code, but I think that would have been more painful for me to deal with, and come with a lot of unknown unknowns.
I would likely also have been sacrificing my ability to port it onto the web and other interesting targets.
However it is your project, your decisions.
Thanks for porting it!
I spent many hours on my PC Jr trying to climb the ranks.
Thanks for making this!
It would be nice if someone made a web version of 'Sopwith', too.
Thanks for giving me permission to publish the port, and cheers for writing a game that has given people some fun memories.
It's great also to see that you're still making games, 30 years on from this.
Also, the slowdowns on partially off-screen explosions.
I remember being impressed that the helicopter in the game could pitch and yaw and such... at the time it seemed so polished.