Today, another random pick from my catalog of titles I own on CD-ROM.
Demoniak is one of the few commercially-published text adventures I own but haven’t completed. Created by comics writer Alan Grant in 1991, it’s a sci-fi/superhero story mostly remembered for the novelty that it let the player switch control at any time to any character — even antagonists. I obtained it some years after its original release, when Memorex of all companies re-released it in a 2-pack CD-ROM bundle with Darkseed, a graphic adventure based on the paintings of H. R. Giger.
This was clearly a hasty bit of shovelware, because it failed to account for Demoniak’s copy protection. It uses a key word system: at some randomized point within the first dozen or so turns, it prompts the player to type in the Xth word from line Y of page Z of the manual, and refuses to proceed until you get it right. Memorex provided the entire contents of the manual as a text file, but since it’s not paginated, this is of limited use. (Plus, the game occasionally asks for a word from something other than the manual, such as the box or the diskettes.) I suspect that few people noticed this problem. The people responsible for the package presumably tried at most a command or two to make sure that it was working, and probably most of the customers quit the moment they realized that it was a text adventure, something that the packaging tried to obscure.
I already knew all this when I pulled it from my box of games abandoned for technical reasons, but I was hoping that the internet would help me. I mean, it’s 2012. Someone, somewhere, had to have either cracked this game or posted a list of the key words somewhere. Alas, the internet failed me. Even when I found Demoniak on abandonware sites, it was uncracked, and accompanied by less documentation than Memorex provided.
There was a time when my usual response to key word copy protection would be to hack it out. Generally speaking, it’s the easiest kind of copy protection to hack: somewhere in the code, there’s got to be a point where it compares your input to a target string and conditionally branches to success or failure, so once you’ve identified that point (by tracing through the execution with an assembly-language debugger), all you have to do is replace the conditional branch with an unconditional one (or a no-op, as appropriate). But a game whose chief mode of interaction is likely to process its key word input by the same means as all other input in the game, and messing with the parser seems risky, even if the game isn’t programmed in its own proprietary byte code format like the Infocom games were.
Today, I’ve gone as far as to install a debugger anyway, just so I can look at memory where the game has unpacked its strings and try to find something promising. But I’ve had no luck yet. If anyone reading this has access to a Demoniak manual, or any other means of bypassing the copy protection, help would be appreciated. I promise my copy is legitimate.