Rouge 1.48 title screen
A while back while looking for old Rogue source, and resources I came across this page, which includes a lot of old versions, and source code, and the file rog11src.zip. But looking at the source in this directory the file rogue.h reveals that it is actually 1.48!
#define REV 1
#define VER 48
And the source is all timestamped from late 1984, and throughout 1985. Well isn’t that exciting! Also on the same site is rogue-1.48.zip, a binary distribution of Rogue 1.48. So I thought I’d give it a shot to build it. The source mentions needing the MANX C compiler, which of course a quick google search yields an ad:
Manx Aztec C86
Which has all kinds of fascinating information, such as the ability to cross compile from VAX BSD, or PDP-11 BSD, the Amiga, CP/M etc but they don’t actually give any information about versions.
There is, however an Aztec C museum, that hosts several versions. And they do have the versions, along with the years to show that the C86 compiler that they had for 1985 would be 3.4b
Compiler Aztec C 8086 3.40a 7-3-86
(C) 1982,83,84,85 by Manx Software Systems, Inc.
And conveniently, they do have a download link for the comiler here: az8634b.zip
Now, since I’m on Windows 10 x64 I can’t easily run MS-DOS based compilers from 1985 at my native CLI, without a tool, and I chose Takeda Toshiya’s MSDOS. I was able to ‘bind’ the azmake utility which then could call the needed compiler, assembler, and linker to build an executable without too much work. I just created a command file, ‘build.cmd’ in the src directory, to setup the paths and needed variables to quickly compile Rogue from the command line. And a quick attempt at playing it showed that although it does compile, it is unplayable!
Killed by the Copy Protection Mafia
Well isn’t that great. There is a copy protection scheme. But wait, we have source so can’t we just by pass it? Yes we can! In the file dos.asm there is some checks for the variables hit_mul & goodchk. So I did the logical thing, which is before it checks them I just set them to good values.
; fake copy protection
mov hit_mul_, 1
mov goodchk_, 0D0DH
And the good news is that I would no longer get killed by the Mafia, but I couldn’t progress down any levels. So in the file oprotec.asm, I saw there is some disk check routine called protect, that I went ahead and bypassed by having it immediately jump down to the ‘good’ label. Everything compiles but it still locks up going down a level. So finally I check rogue.h and commend the #define PROTECT statement, and now it’ll run!
I don’t know if anyone would even care, but I added the PDF manual and all the zip files that I used to source this version. You can download it here:
If you don’t want to run it under MS-DOS, or something like DOSBox, you can use msdos to run it. The title screen is garbled as it doesn’t emulate CGA, but as the rest is just text mode, it’ll run just fine.