Island Adventure: Man vs. Source Code   4 comments

I’ve finished, but my “win” had hacking involved; it became a meta-solve where I was prodding at the source code trying to figure out what was wrong, essentially creating a new puzzle in the process.

The true 1982 experience!

(Also, my previous post is needed for context.)

Via World of Dragon.

My first step after last time you might think was a major one; after all, I had trouble lighting some driftwood to scare some wolves.

DIG BEACH yields matches, so I cheerfully took them over to the wolves with driftwood also in hand and tried LIGHT MATCHES and … still nothing. Nope. The game does not understand.

The game does understand LIGHT MATCH but in a different spot: near the dragon there’s a dark room right before the pit.

This means, technically speaking, you can be forewarned about the pit, but it’s faster to die than figure the secret out.

With the crossbow in hand, FIGHT DRAGON goes down a little better than last time (“YOU CAN’T GET TOO CLOSE”, the game said).

Unfortunately the treasure chest is locked, so this still doesn’t win the game. The wolves needed resolving, and I ended up just dumping the source code, which I have here (start Xroar with -lp-file nameoffile.txt to assign a printer target, then type LLIST to send the source code to the printer). The offending portion:

470 IF NO=16 AND OB(5)=1 AND (OB(4)=1 OR OB(7)=1) AND CP=6 THEN PRINT”THE WOLVES HAVE FLED!”:M(6,1)=7:OB(4)=0:R$(6)=”AT THE EDGE OF A PINE FOREST”:GOTO280
480 IF NO=5 AND OB(5)=1 AND CP=28 THEN PRINT “THERE’S A CROSSBOW ON A LEDGE AND A DEEP PIT TO THE EAST”:OL(1)=28:GOTO 280
490 IF NO=16 AND OB(5)=1 AND (OB(4)=1 OR OB(7)=1) AND CP=28 THEN PRINT”THERE’S A CROSSBOW ON A LEDGE AND A DEEP PIT TO THE EAST!”:OL(1)=28:OB(7)=0:GOTO 280
500 IF NO=16 AND OB(7)=0 AND OB(4)=0 THENPRINT”THERE’S NOTHING TO BURN”:GOTO 280
510 IF NO=16 AND OB(5)=1 AND (OB(7)=1 OR OB(4)=1) THEN PRINT”NOTHING HAPPENED”:GOTO 280

To goal is to get line 470 to trigger. Let’s isolate the conditions:

470 IF NO=16 AND OB(5)=1 AND (OB(4)=1 OR OB(7)=1) AND CP=6

The objects are numbered in order starting from 1: the crossbow is OB(1), sword is OB(2), a key you’ll see in a moment is OB(3), the driftwood is OB(4), and the box of matches is OB(5). OB(5)=1 means the box of matches is in the player’s inventory. The line only triggers if you’re holding the matches.

470 IF NO=16 AND OB(5)=1 AND (OB(4)=1 OR OB(7)=1) AND CP=6

OB(4) is the driftwood or OB(7) are some pinecones you only find after scaring the wolves (strange logic there), so the driftwood also needs to be held for the line to trigger.

470 IF NO=16 AND OB(5)=1 AND (OB(4)=1 OR OB(7)=1) AND CP=6

CP is the character’s location (“character place”); CP = 1 is the room EMPTY, CP = 2 is the beach, 3 is a cove, 4 is the first pirate, 5 is the cave they’re guarding, and 6 is the forest. The source after also shows the effects of going north, south, east, and west; 88 means the player is stopped by an obstacle. From the pine forest, the player can normally go north, but they are stopped by the wolves.

1120 DATA EMPTY,0,0,0,0
1130 DATA ON A BEACH,9,0,3,6
1140 DATA IN A SMALL COVE,0,0,4,2
1150 DATA AT THE ENTRANCE TO A CAVE GUARDED BY AN EVIL LOOKING PIRATE!,0,0,88,3
1160 DATA IN A CAVE WITH WRITINGON THE WALL,0,0,0,4
1170 DATA AT THE EDGE OF A PINE FOREST.A PACK OF WOLVES GUARDS THE ENTRANCE,88,0,2,0

On to the last condition:

470 IF NO=16 AND OB(5)=1 AND (OB(4)=1 OR OB(7)=1) AND CP=6

NO is the noun object. This baffled me for a bit; lines 480 and 490 both are “you found the crossbow” triggers, where the noun can be number 5 or number 16 and get the same effect. 5 is the matches, and 16 is…

…the word FIRE. Argh!

So to summarize, you need, upon typing LIGHT as a verb: to be holding the matches, to be holding the driftwood, to be in the pine forest, and to use the noun FIRE. LIGHT MATCH works in the other place because the author anticipated this is a much (much) more normal thing to type than LIGHT FIRE, which requires arbitrarily realizing the noun that previously didn’t exist in the game should be the target.

The wolves are still shown in the room, but they’ve also fled.

After THE WOLVES HAVE FLED! the north exit allows the player in:

The sign indicates you should try going NORTH repeatedly and eventually you’ll get somewhere new: a hut with a key.

This is the very key needed to unlock the treasure.

With most of these games there’s typically some sort of hints and/or a map up at CASA or elsewhere; here I was on my own (it got added to CASA by Strident but with no walkthrough or map). Of course, most people in 1982 were on their own! This is why there were letters to send in to companies, or help columns, or hint phone lines, or authors begging people not to call their phone. Without that, players had to pry at the source code like I did so it was more of an essential part of the 1982-experience than I sometimes get across with these write-ups.

Coming next: Roll up! Roll up!

Posted November 29, 2024 by Jason Dyer in Interactive Fiction, Video Games

Tagged with

4 responses to “Island Adventure: Man vs. Source Code

Subscribe to comments with RSS.

  1. Good work! Solving an adventure involving hacking basic and lots and lots of determination. As I’ve very often said, I admire your patience.

  2. I did a bit of hacking through code to get through Tarturian and Oldorf’s Revenge. Although my dad and I won these games, I never hacked code as a kid (I was too young) but rediscovering this as an adult, yeah all bets were off :)

    Not nearly as easy to do when games weren’t programmed in basic. Though I do remember my dad and I using a hexadecimal editor to modify stats in order to get through the brutal early phase of Ultima III.

  3. The thing about the author begging people not to call his phone reminds me of the classic end of this CRPG Addict post.

    Also, we’ve already had a conversation about the name “Vince Apps,” right? The word “app” for program is later but that is quite a name.

Leave a reply to matt w Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.