Saturday, 10 April 2021

Missed Classic: The Palace of Deceit: The Secret of Castle Lockemoer – Half-WON! with REQUEST FOR ASSISTANCE

Written by Will Moczarski
This, my friends, is only a half-won, a won-ish, a sort-of won post which must be a first for the blog. What does this mean, you ask, and how did this come about? Have a little faith and a little patience and I shell tell you all how I succeeded at playing through The Palace of Deceit: The Secret of Castle Lockemoer after a massive amount of parser-wrangling, cursing, keyboard-smashing and wailing – and yet I did not succeed. I will thus start my post with a request for (software) assistance, unusually, because maybe if not all is won at this point, maybe not all is lost either.

Request for (software) assistance

Basically I am looking for someone who can explain and (ideally) fix this error message:

Illegal function call in module PALOFDEC at address 01A2:1470

I assume that either the code is broken here OR this is as far as the shareware version takes us. However, I haven’t found any registered versions on the internet, so if the latter assumption turns out to be true, I will be unable to finish the game. Ironically, I have done what this situation would have required back in 1991, and tried to contact the author of the game, Cliff Bleszinski. Unfortunately, I was unsuccessful as of yet.

If nobody is able to help me, I will post an as-if walkthrough of the remainder of the game because all of the text is right there in the open when you open the main executable file, and attach it to the PISSED rating. That would be somewhat unsatisfactory but I’d be out of other ideas, as it is.Now for the game: How I failed and won at the same time.

Firstly, let me refer you to the introductory post for this game. Back then I posted some screenshots but they somehow seemed a bit off to me. Kirinn valiantly came to my help and explained that I might want to use the keyboard mapping “us 437” before I continue. It worked and now the pictures don’t look completely different (to be honest) but slightly better. Thank you again, Kirinn, for providing us with the more authentic experience indeed!
Ah...much better.
Secondly, The Palace of Deceit: The Secret of Castle Lockemoer is more impressive than I would have thought because it contains three (I think) separate quests, the first two of which can be tackled in any order. Non-linearity in a high-school game must be rather rare, so my hat’s off to later star designer Cliff Bleszinski already. Meanwhile, the parser is a much less impressive beast. It really made me work hard for most of the puzzle solutions although in theory they were quite easy. Be aware that my Trizbort map doubled as a walkthrough notepad, so it’s even less spoiler-free than usual!

How did I arrive at the message above? I took the wrong path, or rather one that’s not open. But after solving the other one, it still doesn’t work, effectively cutting the game short at that point. This is the reason why it’s quite possibly a shareware thing. I opened the program with a hex editor and tried to fix the illegal function call but didn’t figure out the right way to do that. So, as stated above in the request for assistance, I will either need a working registered version or some serious help.

First Steps: How to win the first third of the game

I start the game in front of Castle Lockemoer. A full moon is shining, the stars are twinkling, or rather blinking like a 1990’s website. Already I notice the unusual implementation of graphics – not only are they ASCII graphics of sorts, moreover they continue the idea of the game’s introduction that the whole story takes place on the pages of a book; the wrapper is always visible from the inside. Also, the two pictures provide different perspectives of the surroundings in a peculiar way. The left picture works like a long shot, showing the whole room you’re in. But the right picture shows a medium close-up (or similar) of an important detail inside that same room. In this case, we see Castle Lockemoer on the left, full moon, moat and all, but a close-up of the portcullis with a sign that is not visible in the left picture. The sign tells me to “Please Knock” so that’s just what I do. “Knock on door” does the trick, and I enter the mysterious castle.

Interestingly, the descriptions also cannot replace the pictures – this one only tells me that I am “standing at the entrance to castle Lockemoer. Nightfall is fastly approaching. Trees surround you. A door is in front of you.” The game thus follows the tradition of the graphical text adventure established by On-Line with Roberta & Ken Williams’s first game Mystery House.

The game lets me enter the castle and commends me for my manners: “(Being polite does have its advantages)”, the parser mumbles aside. I arrive in the foyer of the castle that reminds me a lot of Shadowgate which must have been an obvious inspiration (more on that later). Also, this was a one-way street, as the door slams shut behind me. I can hear rats and the sound of running water, and both is not very reassuring. At first, I try out a few things but when I can’t seem to interact with anything I see that I have to choose one of two paths: “There are stairs going up, and a corridor going north.”

I won’t go north for now, as that’s another one-way path which leads to the error message displayed above. However, I can go up, and this is where I was stuck for a long, long, long time. At first I did not believe that you couldn’t go both ways and thought that I needed to recover the vanished stairs once I’d climbed them. Alas, that is impossible, and I finally had a breakthrough but more on that in a second, because let’s climb the stairs first, shall we?
My bucket’s got a hole in it.
Upstairs, there are ten torches, of which nine are lit. The unlit torch is even shown in detail on the right side of the picture book, so my puzzle seems cut out for me already. The torches are blinking, or supposedly flickering, and “[i]t is very warm here.” I try to interact with the torch for a while but the only thing that works is “pull torch”, and to very unsatisfying results: “You tug the torch. All of a sudden, a bucket appears above you and dumps several gallons of water on your head. Can’t you read?” Now the last sentence is a hint that I should have read something else first but at this point I don’t get that at all.

At least I can go north where I find “nothing unordinary […] except the giant cockroach in the corner.” Upon examination, the parser comes up with strikingly precise measurements: “He is about 5 feet long and 2 feet high. He eyes you hungrily.” So he’s hungry? Sounds like a traditional food puzzle to me. He turns out not to be hungry enough to either attack me or block my path, though, so it’s all good. I go north again, and arrive in a corridor with some mold on the walls as well as some strange writing spelling out that “Steve loves Candy”. The parser misinterprets this as toilet scribbles and tells me that I wonder who Candy is but actually I don’t, not for a second: I’ll be damned if the cockroach is not called Steve and doesn’t have a sweet tooth. To the east, there is the castle’s storage room where there are a lot of crates but only one item to find: a vial of oil.
Hide and seek, difficulty level: Nightmare!
To the west, I find a small, smelly closet I can enter, containing “a strange hunk of smelly brown stuff” turning out to be chocolate leftovers or something. I take it right back to Steve and try to give him whatever it is I am carrying. At that point, I wonder: What am I carrying? But the game does not feature an inventory, or if it does, I was unable to figure out how I can look at it. As the parser recognises neither “Candy” nor “Steve”, I try “give stuff to cockroach” and it works. And lo and behold, it makes ol’ Steve rather chatty: “HI, ADVENTURER, NAME’S STEVE THE ROACH. GOOD TO MEET SOMEONE WHO GIVES FOOD AROUND HERE. SINCE YOU GAME ME THAT MORSEL OF CHOCOLATE, I’LL GIVE YOU THE ONLY THING I HAVE.” So it was a morsel of chocolate? Good to know, Steve. I thought you’d like it seeing as you enjoy candy and all. Be that as it may, the only thing Steve has turns out to be a matchbook with another toilet scribble for a message: “FOR A GOOD TIME CALL 508-794-0776 & ASK FOR JAN”. I assume that this is the actual number of one of Cliff Bleszinski’s classmates? It does not serve any in-game function, so it’s probably another high-school insider joke.

And with that, exploration time is over. Steve just remains sitting there and I can repeatedly give him the morsel of chocolate with the same outcome but I don’t find anything new in any of the rooms, and I can’t go back downstairs. I’m hopelessly stuck. After some fiddling, I decide that this is a good moment to take a break from the game, think about it all, return to it with a rested mind. But alas, I’m still stuck. At some point, I’m even tempted to send an e-mail to Ilmari and tell him that I’m out but I tell myself that I don’t give up that easily. The solution turns out to be one of the first things I tried, and it lets me lose all faith in the parser. It is advanced enough to recognise vaguely complex sentences but its answer to almost every input is simply “I don’t get it!” which is a brutal combination. Of course I tried to light the unlit torch with my matches (in every possible way). Naturally I tried to pour the oil on it first (without any success). But the solution was to do it simultaneously. The game would only accept “use matches and oil on torch”. And now there’s a sign underneath the torch saying “PLEASE DO NOT PULL THE TORCH!” which is what the message “Can’t you read?” must have referred to hours ago. Nothing else changes but when I head north and north again, a new door has opened up before me in the room with the mold and the strange writing. Finally, some progress.

And what does a brilliant designer put behind a barely solvable puzzle? That’s right, a maze. I don’t have that many items to drop but fortunately it only consists of eight locations and all of the descriptions differ slightly, just like in Don Woods’s second ADVENT maze. Most of the rooms are “in a maze” but the parser always states the room temperature which is how you can differentiate them. After a bit of Excel and a bit of mapping, I find a room with a well which seems to be where the heat comes from (it’s north-north-north-east if you’re in a hurry). Below the well, there’s a lake of fire, and when you peer into it, the heat burns your eyebrows. The font has turned all red, too, and you only have one turn before you get kicked out of this room, meaning if you try something and it’s wrong (or put the wrong way), you have to navigate the maze again. The correct solution is a “leap of faith” and it helps to remember that Indiana Jones and the Last Crusade had just come out two years previously. Also, the manual warned me that it wasn’t named the palace of deceipt for nothing, so I’m calling bullshit on this fire and take the plunge.

The resulting prose is ambitious albeit a bit juvenile: “You fall into the fire! It screams into your lungs and throughout your body. You feel your hair wither and melt, as your clothes fry off. The pain is excruciating! You black out from it! You awaken in a pool of water. You open your burnt eyes and water flushed over them, and they’re healed! You try to swim up, but you can’t move. With a shock, you realize you’ll drown! For as long as you can, you keep your lungs closed, but it is no good! Your mouth opens and water flushes in and into your lungs, you cough and struggle! You’re drowning!” When it burns, it pours, right? Without any further explanations, though, I am able to emerge and find myself at the magic spring and “feel stupid standing here naked”.
Go Ask Alice.
The next part of the game takes place in a giant mushroom forest to the north. It stretches out over five screens, and there’s an odd mushroom that doubles as a house. I half expect to find the world’s most famous plumber there but the area is more fairytale than Nintendo. Entering the house results in a King’s Quest IV interlude. It is home to a family of gnomes, the Waxmans, and they’re Scottish as “you can tell by the little kilns [sic] hanging from the rack in the corner”. Right. Nothing more happens here unless you return to the house after having picked up a gold watch that is lying on the ground in the southeast part of the forest. That kicks off a rather disturbing chain of events, let me tell you...first the gnome’s “cute wife” says: “BY GOD, HONEY, HE’S FOUND YOUR WATCH! THANK YOU, NAKED YOUNG MAN!” Then you get to spend the night for free and the gnomes even give you clothes to wear, dinner, and a bed to sleep in. I doze off and awaken in a cold, dark hallway with only one exit to the north. If I go north, it all turns out to be a (very violent) dream as I get attacked by millions of leeches and thousands of spiders. I jump into a pool of crystal green water underneath some cascades but the water is really blood and suddenly intestines, lungs, and “everything else” as the game puts it start falling on me. But that was just a dream, I didn’t really awaken at all. I find myself in front of the mushroom house and can explore some more.

After the nightmare, there is a new exit leading to the southwestern part of the forest. This is where I find a frog about half my size who is dressed in a suit and fish tie. He looks like he needs some help climbing a 6 foot tall mushroom but I’ll be damned if the parser lets me help him. I try to talk to him or examine him in 555 different ways until I – more or less accidentally – type nothing but “talk.” And suddenly the frog opens up: “Oh, gosh, whaddam I gonna do? I was flippin my lucky Lincoln penny when it landed yonder on that there mushroom, and I’m too old to hop up to get it. Would you please help a dear soul out?” I feel you, frog. And now, after that meaningful piece of plot-advancing dialogue, “help frog” works just fine. The frog gives me a test tube and disappears somewhere between the mushrooms.

Soon after I discover that I can now step around the house and enter a small hallway leading to the horse stable. I find a wounded horse there looking at me with saddened eyes. When I try to talk to the horse, it only wheezes but I know right away that I need to fill my test tube with water from the magic spring. Right, parser? Not on my watch, he says, and I fumble around for a long, long time before I notice that I can enter the spring. Even then, “fill tube” and “fill test tube” don’t work – only “fill tube with water” does. At least I can “give water to horse” without further shenanigans, and he gallops out of the room. And what do you know, a “secret passage is revealed where he was lying!”

I head down and enter a dark, cold passageway. It smells of dung – there are a lot of olfactory descriptions in this game! – and I can hear crying from the west. I’m a hero, not a coward, so naturally I go west. (Life is peaceful there.) I discover three parallel dead-ends: one is to the south where I find a small room with a tapestry on the west wall. The tapestry depicts a woman with a large monster right behind her but strangely, she is not frightened. I can go through the tapestry to a secret sword and weapon storage room. One of the swords catches my eye because it looks familiar. When I pick it up, it feels “right at home in [my] hands.” I will have to re-enact the tapestry, won’t I? In the northern dead-end, there is a marble hallway with engravings of incredible battles on them, man versus man, and man versus hellbeast. Also, there is a pedestal at the end of the corridor with some writing on it saying: He who can see through deception will overcome all evils. Now I already smell this particular rat from afar: the crying is most certainly fake and I’m sure that I will have to slaughter some fake damsel in distress, won’t I? I don’t know why I know this but the puzzle feels as familiar to me as the sword does to the player character. As a seasoned adventure gamer, I don’t leave without trying to push the pedestal, and rightly so: it sinks down into the floor and comes up again with a pair of glasses on it, supposedly to enable their wearer to see through deception.

At the end of the middle corridor, there is a young lady crying in a mirror room, and when I talk to her, I get this: “Who are you? My name’s Laura, and my family has been killed by the evil wizard Falken! He ruthlessly slaughtered them and saved me to be raped, over and over! Please, he6lp [sic] me! Kill him!” That’s a grim story, and much darker than I would have expected at this point. Still I’m convinced more than ever – the mirror room is just another giveaway sign – that the young lady and the evil wizard are the same person. It takes me a lot of time to figure out how to address this problem, though, as the parser is still not on my side. I’ll spare you the trouble and just tell you right away what you need to type: look at girl with glasses. Then you just sit back and enjoy the show:
You look at beautiful Laura with the glasses and see the horrible monster on the tapestry! That tapestry must have shown Laura for what she really is, a monster instead of a fair maiden! You drop the glasses and it looks up at you. ‘SOOOO, YOU NOW KNOW WHAT I REALLY AM! TOO BAD YOU’LL NEVER LIVE TO TELL THE TALE TO THE NEXT ADVENTURER!’ With this, the Laura-creature swipes it’s [sic] monsterous claw at you. It just whizzes by, and you take out your sword and fight it out, tooth and nail. ‘YOU MUST BE CRAZY TO THINK YOU WILL DEFEAT ME! I HAVE KILLED COUNTLESS NUMBERS OF INEXPERIENCED ADVENTURERS SUCH AS YOU...TASTE MY WRATH!’ It raises it’s [sic] huge clawwed [sic] fist and drops it down at you, but you dodge it. You swing your sword and slice off it’s [sic] head with one swipe!!!
You made a mistake, Laura-creature! This is The Adventure Gamer. We are all experienced adventurers here.
The monster disappears and in it’s [sic] place appears a beheaded Laura, sprawled out on the ground.
The Empire Strikes Back, anyone? Anyhow, a beautiful faerie called Gwenivere appears and tells me that she has been sent to guide me through three tests and give me a crystal each time I manage to complete one (like right now). Then she hands me a blue crystal and when I gaze at it, I black out and awaken in the foyer of the castle. When I try to go up, the parser tells me that I “completed that part of [my] quest.”

The other part which I actually played first before I got stuck at the aforementioned error message starts out quite a bit easier: I stumble upon the pantry and find a rope there which is always good. I pick it up and find a large broken bridge I can’t cross. It is very reminiscent of a bridge in Shadowgate where you have to drop all of your items to be light enough to get across. However, because this game doesn’t have a real inventory system but rather changing states along the lines of ‘rope in possession: yes/no’ (at least I think this is how it works) all I need to do here is to “use rope” and “swing across, ala Tarzan.” Let’s just ignore the red glowing fungus hanging from the walls in the next room and focus on the elegant marble door with a lion carved on it. The door is sealed but this one is just as easy: push the lion, and the door swings open. In a small, well lit room there’s an actual lion guarding the next part of the castle; however, he’s hungry so this reeks of another feeding puzzle. In the kitchen to the right I find a cutz-o-matic automatic knife, and in the castle butcher’s room on the other side, there’s a stinking carcass I can now cut to pieces. The rancid hunk of meat seems to hit the spot, as the lion gobbles it right down when I give it to him. I sneak past him and enter the castle’s armoury. Here there’s the companion piece to the strangely familiar sword: a shield with my family crest on it. However, if I move, touch, push or take anything (such as the shield because there is really nothing else to interact with), the statue comes alive and the game crashes.
My nemesis.
This is as far as it gets. Help me, fine people of TAG – you’re my only hope.
Session time: 4 hours
Total time: 4 hours, 1 minute

Note Regarding Spoilers and Companion Assist Points: There's a set of rules regarding spoilers and companion assist points. Please read it here before making any comments that could be considered a spoiler in any way. The short of it is that no CAPs will be given for hints or spoilers given in advance of me requiring one.

14 comments:

  1. It seems not impossible that the game's executable has been compressed and, er, corrupted by the tool at http://justsolve.archiveteam.org/wiki/EXEPACK

    Perhaps some judicious use of it might be able to revert your trim, unwinnable executable to its original bloated and useable form?

    ReplyDelete
    Replies
    1. Thank you for the suggestion, Rowan! I've tried to fix the .exe that way, however all of the unexepack tools tell me that palofdec.exe was not an exepack file (which is clearly not true according to a list of exepacked DOS games).

      Delete
    2. The way EXEPACK works is that it unpacks the game (to memory) when you run it. So if the game has been corrupted somehow, then unpacking it manually (to disk) isn't going to fix that, because it's the exact same unpacking process.

      Delete
  2. I've never heard of EXEPACK doing anything like that... however, "Illegal Function Call" is a GWBASIC / QuickBASIC error message. It literally means that a BASIC function is being called with invalid parameters, and is almost universally the programmer's fault.

    One thing you can try is severely dial down the CPU speed (in DOSbox or whatever emulator you're using), because wait-loops in the program may go haywire if your computer is (much) faster than what the game was designed for.

    (e.g. imagine that the program counts how many seconds pass between two inputs, and waits an amount of time based on that; on a very fast computer, the amount of seconds will be zero, and waiting for zero seconds may be an illegal function call).

    If that's not it, then it's most likely that the programmer never fully tested his program after his last changes. A hex editor is not going to fix that for you; decompiling the program might, but that's a rather daunting task. HTH!

    ReplyDelete
    Replies
    1. Thank you very much, Radiant - that sounds very likely and I will try it out as soon as possible.

      I'll report back if dialing down the CPU speed did the trick (or if not)!

      Delete
    2. Unfortunately, that's not it - I've dialed down DOSBOX to 1 cycle which makes the game painfully slow but the illegal function call still hinders my progress.

      Delete
    3. Then I would bet on the fact that no winnable version of this game has ever been released. It's a one-person high-school game; it wouldn't be the first time that somebody didn't fully re-test the entire game after every change made to the source.

      Delete
    4. I guess so, too. It's a shame, I would have liked to play it to completion but decompiling the code and fixing the problem is way beyond my abilities. Thank you for your help, Radiant! One final question, if I may: It's not likely that the error is deliberate in order to abridge the unregistered shareware version, is it?

      Delete
    5. Not likely, no. Speaking as a former shareware author myself, you end a shareware game at a midway point (not at the very end), and you end with a "register register please please PLEASE" message, not with an unexplained crash. And by 1991, this formula was well-established by Apogee Games.

      Delete
    6. It's just about plausible that the crash is some form of "This is where it is supposed to transition to the begging screen, but the begging screen code was removed somehow." But I'd expect that to manifest as more of a "file not found" sort of error than an "illegal function call" error.

      Delete
  3. And I was looking forward to some more lovely ASCII art, but alas it is not to be. I will savour the little we had though and remember the book effect fondly, which I must say is great!

    ReplyDelete
    Replies
    1. I have to agree with you, Shaddam, and here's the thing: All of the pictures are stores as data in a .fil format. Most of the scenes/rooms in the main .exe are linked to one of those pictures called pic01.ega or pic03.fil. If you (or anybody else) knew a way to extract the ASCII/EGA pictures from the data files, I'd be able to add them to the final post.

      Delete
    2. Most likely something like DEF SEG = &HB800 : BLOAD "filename", 0

      But frankly there's a lot of fiddly ways in which he could have done it slightly differently.

      Delete
  4. Thank you once again, Radiant! I will try it out as soon as I get around to it!

    ReplyDelete