Saturday, 15 February 2020

The Secret of Flagstone Manor


My streak of interest in text adventures continues. The Secret of Flagstone Manor by Brian Betts of Mountain Valley Software is reportedly Australia's first home produced text adventure in 1981. Or so reports Renga in Blue has been playing it recently. This piece of BASIC computing history certainly peaked my interest. It would be nice to add this game to my international collection. A Los Lovag was a fun exercise in translating one of the first Hungarian text adventures. Hopefully an Australian program would not present the same degree of translation issues, although having heard some working class Aussie accents, I had my doubts. But the game text was very well written and presented no translation issues;). This is not surprising as it was not a homebrew effort, but a commercially available game.

The only issues in translation involved the large number of ELSE statements. The game was originally programmed for the TRS-80 Model 1, so using ELSE might have been a memory saving trick. I only have a couple of thousand bytes left in my version after having removed all the ELSEs, so it would have been a tight squeeze in a 16K Model 1. Another memory saving trick was the use of strings to store info about items.

Betts used a system of string arrays for items held and for items in each room. Up to 10 item strings can be "stored/dropped" for each room. I can't recall seeing anything quite like it. Most other parsers use numeric arrays to store which items are being carried and which rooms they are in. This game just moves strings around in a string array for each location with each actual item name. This method makes for a lot of string storage when saving a game, so I had to leave that part out since the MC-10 can't easily save strings.  But it likely saves memory since each item will simply represent a single byte for each character of the item, stored in string space, instead of that plus some complex numeric array structure with 5 bytes for each array item.

Renga in Blue suggested that the game had similarities Scott Adams early games, but I'm pretty sure it's not like the Adventureland parser. The BASIC version of that program is very complex (and slow) and uses lots of numeric arrays, probably because it is meant to be a generalized "engine" for multiple adventures. This one uses a more standard and simple cascade of IF/THENs to parse input for different verbs. It also doesn't read its locations into an array. There are only 18. So it just uses a sequence of IFs to print specific room info. I'd say this game does not have any specific parser "engine" at its core. It just applies some common approaches to programing adventures that had developed from 1979-1981. Except for the string array stuff re. items.

On the whole it is a very well debugged, elegantly written, BASIC text adventure program. Although the room count is small it is a fairly complex game. There is a timer aspect that can result in death, but it is fair. The puzzles make sense and there is a pretty interesting dynamic HELP command. So don't just accept the first response of "LOOK AROUND" from that command. The response eventually does change according to progress and context. The other sources of death are also generally fair, since there are clues to help avoid them. 

It was a fun exercise to port the program and add another international early BASIC text adventure program to my collection. I am currently working on De Tijdmachine, an early Dutch text adventure, which I hope to have up and running shortly, so more international fare is coming.

The source code for my version can be found here: https://github.com/jggames/trs80mc10/tree/master/quicktype/Text%20Adventures/WorkInProgress/Flagstone

SPOILER ALERT -- Walkthrough below.

*** The Secret of Flagstone Manor ***
Walkthrough by Jim Gerrie 2020

GO DOOR
E
LOOK CUPBOARD
GET MATCHES
GET CAN
W
W
LOOK SHELVES
GET BOOK
READ BOOK (LAST # FOR COMBINATION)
DROP BOOK
TURN LAMP
GO OPENING
GET GARLIC,LOOK SKELETON (YOUR FATE IF YOU TAKE TO LONG)
EAT GARLIC
U
E
N
W
LOOK RACK
GET WINE,LOOK BOTTLE
PRESS PANEL
GET KEYS
E
S
GO STAIRCASE
OPEN DOOR
GO DOOR
MOVE BED
GET OPENER
OPEN CAN
DROP CAN
DROP OPENER
GET CHEESE
GO MANHOLE
OPEN CHEST
GET DIARY
READ DIARY (HINT ABOUT EATING GARLIC)
DROP DIARY
MOVE CHEST
GET ROPE
D
LOCK DOOR
GO BED
SLEEP (HEAR CLINKING CHAINS IN NIGHT)
W
OPEN DOOR
GO DOOR
D
N
N,HELP
OPEN CLOCK
GET KNIFE
E
LIGHT FIRE
GO OPENING
MOVE COBWEBS (CLUE ABOUT SECOND # OF COMBINATION)
DROP MATCHES
GET LADDER
S
W
S
S
GO STAIRCASE
GO DOOR
LOCK DOOR
GO BED
SLEEP (DREAM ABOUT LEAVING WINE IN STUDY OVERNIGHT)
W
OPEN DOOR
GO DOOR
D
N
N
OPEN DOOR
GO DOOR
LOOK DESK (IGNORE ASHTRAY)
DROP WINE
S
S
S
GO STAIRCASE
GO DOOR
LOCK DOOR
GO BED
SLEEP (YOU HAVE A QUIET NIGHT)
W
OPEN DOOR
GO DOOR
D
N
HELP
CUT PAINTING
DROP KNIFE
GET PAPER, READ PAPER (CLUE ABOUT FIRST # OF COMBINATION)
DROP PAPER
N
GO DOOR
PRESS PANEL
GO OPENING
FEED MOUSE (CLICK-- THE WALL MOVES ASIDE)
GO OPENING (YOU'LL SEE A GHOSTLY FIGURE, WHO WON'T ATTACK BECAUSE YOU'VE EATEN GARLIC)
OPEN DOOR
3
8
7
GO DOOR (DON'T TAKE GOLD YET)
TIE ROPE
S
PULL ROPE (CRASH-- YOU AVOID THE CAVE IN BY LEAVING THE ROOM)
GO DOOR
GET GOLD
GO HOLE (YOU USE THE LADDER-- YOU'VE ESCAPED WITH THE GOLD! YOU'VE SOLVED IT ALL.)


No comments:

Post a Comment