Now Playing: "Camp Happy Island Massacre" for DOS
TL;DR — I wrote a simple computer game in 1997 called Camp Happy Island Massacre which I now have running online here.
3 minutes
Way back in 1997, I released my first (and, so far, only) computer game, Camp Happy Island Massacre (hereafter referred to as #CHIM), a comedy-horror text game for the DOS operating system. Originally written while I was still in college, the game is about a cursed summer camp and the 3 surviving counselors who try to stop a horrific force before it claims them. I put it out for free (more-or-less) on the internet of 1997, and though it was never a huge success, Iâve always been proud of it.
Fast forward to 2018: although Iâve known about the Internet Archiveâs MS-DOS Software Library for some time, Iâd never really thought about the specifics of how it works until I read an article which talked about the Em-DOSBox project. Em-DOSBox is a port of DOSBox emulator which runs in the browser via the Emscripten JavaScript library. As I was reading the article, a thought struck me: could I get CHIM running in the browser?
I decided it was at least worth a shot, so I began with step 1, building Emscripten from source. That went off without an issue, so I moved on to the next step, building the DOSBox JS files, and thatâs where I ran into my first snag: the only way I was able to get it to build was by disabling the âemterpreter syncâ function (emconfigure --disable-sync ./configure
). It complained about the lack of empterpreter sync, but it built, and that lead me to the next step, packaging the dosbox.js
file for use in a browser via the ./packager.py
command. Even though this seemed to work great, there was obviously something wrong with my resulting files, as the JavaScript engine in my browser kept throwing an error (âmissing function in Moduleâ). After toying around with it for a while, I found that, if I used ./repackager.py
(the Emscripten-less version of the packager) to package my files, I could get an empty DOSBox window to come up, but it still wouldnât load the actual EXE.
By this point, I was flummoxed, and was about to give up. And thatâs when I found the answer: js-dos!
After 30 minutes with this tutorial (and some source viewing on a couple of js-dos game pages), I was able to get CHIM working.
But my work wasnât finished yet. Even though Iâd kept nearly all of the files for CHIM for the last 21 years (with the exception of the gameâs original C++ source files, which were lost in a hard drive crash shortly after it was released), I hadnât really messed with them much in the last decade, so there was some cleaning up to be done. I updated some of the questions (and answers) in the FAQ, replaced the license, and generally tried to clean up the supporting text files. And thatâs when I ran into one last unexpected issue: text encoding.
You see, I had forgotten that, when I first wrote the game and the supporting files, I had used some primitive ANSI graphic characters in an attempt to enhance the look of it. And now, when I tried to view those files on my Linux laptop, those graphics came out⌠weird.
The fix was to convert the files from the âIBM-862â format to the modern UTF-8 format:
> iconv -f IBM862 -t UTF8 INTRO.TXT -o INTRO.UTF.TXT
This allowed me to edit the files in Mousepad (and serve them up with Nginx), while still keeping the graphics intact. Finally, I added the Unicode Byte Order Mark, which makes it display correctly in the browser, even when served from a file://
URL (you can add the BOM via Mousepad, under âDocument -> Write Unicode BOMâ).
So, if youâd like to try the game out, check it out here, and good luck - youâre gonna need it!