Address Length Description
BBF0 79
Table: Item Locations
Where each of the 4F items is (the count is at Count_Items). The item number is the position in this table, and the same number indexes the item descriptions at Table_ItemDescriptions.
Byte Meaning
00 Not in play yet, or used up
01 Carried by the player
Other The room the item is in
This is the start of the game status buffer. GameStart copies the 0144 bytes from DefaultGameState over it at the start of every game (that list names every item and where it starts), and SaveGame and LoadTape save and load it as a single tape block.
BC54 1
Game Flags
Holds a single byte, where each bit relates to help states as follows:
Bit Relating To
01 Cannibals
02 Swearing #1
03 Swearing #2
BC5C 2
Table: Already Seen Room Images
Corresponds to whether the player has already seen the image for the following rooms:
Bit Room ID Room Name
00 03 Your Ship
01 08 The Dunes
02 09 The Dunes
03 0A The Dunes
04 6C The Bridge
05 3E The Cave Mouth
06 6A The Mighty Rock Door
07 1F The Cannibals' Village
Bit Room ID Room Name
00 28 The Cliff Path
01 29 The Cliff Path
02 2A The Cliff Path
03 52 The Vast Cavern
04 62 The Pirate Treasure Chamber
05 N/A N/A
06 N/A N/A
07 N/A N/A
Handler_DisplayRoomImage tests and sets the bit for the current room. The bit number is the room's place in Table_RoomsWithImages.
BC66 1
Flags: Turn-Based Event States
Holds a single byte, where each bit relates to a turn-based event as follows:
Bit Relating To
00 Crab
01 Tentacle
02 Drunk
03 Lion
04 Crocodile
05 Cannibals
06 Match
07 Wave
When the bit is set, this starts a turn counter (see Counter_Crab).
BC67 8
Turn-Based Event Counters
BC6F 1
Flag: Crab Following
Only bit 0 is used. When it is set, the giant crab ("A giant crab", the first byte of Table_FollowingItems) follows the player from room to room. ChangeRoom sets the bit at EF91 when the player walks into The Rockpool while the crab is there, and clears it at EF64 on reaching The Rocky Path. Action_Shout clears it at Shout_Crab when the boulder falls on the crab. Bits 1-7 are never set. MovePlayerToRoom moves the item for each set bit into the room the player just entered.
BC70 8
Table: Following Items
Each bit of Flag_CrabFollowing makes the item at the same position here follow the player: every time the player changes room, MovePlayerToRoom moves the item into the new room. Only bit 0 is used. ChangeRoom sets it when the player walks into The Rockpool while the giant crab is there, and closes the way out to the west and north; the crab then chases the player until they reach The Rocky Path or until the boulder falls on it (Action_Shout).
BC78 9
Table: Scenic Event Locations
Where each of the 09 scenic events is (the count is at Count_ScenicEvents). Scenic events are the animals and pirates that wander about; in the item groups at Data_ItemGroup_Match event 00 is written as 80 and so on.
Byte Meaning
00 Not in play
FF Just put into play by Handler_PutScenicEventIntoPlay, so it gets a room on the next turn
Other The room the event is in
Each turn GameEventsProcessor moves every event that is in play, and not with the player, to a random room from its list in Data_ScenicEvents_Seagull, found through the pointers at Table_ScenicEventRooms. When the player leaves a room MovePlayerToRoom takes any event that is there along too, and Handler_ScenicEvents runs the handler from JumpTable_ScenicEvents for every event in the player's room.
BC98 1
Number Of Items In The Players Inventory
The number of items the player is currently holding.
BC99 50
Load/ Save Buffer
When loading or saving, this buffer is used for storing Table_ConfigurableExits - which are then copied to/ from the table itself.
BCCB 1
Current Room ID
The room the player starts the game in is room 03: Your Ship.
BCCC 18
Table: Scenic Event Rooms
Pointer to the table containing groups of room IDs that an event could occur in.
BD0C 2
Pointer: Vocabulary Table
Pointer to the table containing the game vocabulary.
BD0E 2
Pointer: Turn-Based Events Jump Table
Pointer to the jump table containing turn-based events.
BD10 2
Pointer: Room Map Table
Pointer to the table containing the relationships between rooms.
BD12 2
Pointer: Item Description Table
Pointer to the table containing item descriptions.
BD14 2
Pointer: Rooms With Images Table
Pointer to the table containing all the rooms which have an image to display.
BD16 2
Pointer: Room Image Jump Table
Pointer to the jump table for displaying an image relating to a room.
BD18 2
Pointer: Room Description Table
Pointer to the table containing room descriptions.
BD1A 2
Pointer: Item Grouping Table
BD1C 2
Pointer: Object Noun Phrases
BD1E 2
Pointer: Object List Table
BD20 2
Pointer: Verbs Jump Table
BD22 2
Pointer: Configurable Exits Table
BD24 2
Pointer: Scenic Events Jump Table
BD26 2
Pointer: Verb Word Tokens Table
BD28 2
Number Of Items
The total number of items in the game.
BD2A 2
Number Of Objects
The total number of objects in the game.
BD2C 2
Number Of Verb Tokens
The total number of verb word tokens the game has. See Table_VerbWordTokens.
BD2E 2
Number Of Rooms With Images
The total number of rooms which have related images in the game.
BD30 2
Number Of Scenic Events
The total number of scenic events in the game, see Table_ScenicEventLocations.
BD32 2
Number Of "Configurable Exits"
BD34 50
Command Buffer
BD66 10
User Input: Word Tokens
The vocabulary number (Table_Vocabulary) of each word of the last command, in the order they were typed, with FF in every slot that isn't used. "THE" is skipped, and a word that isn't in the vocabulary stops the command with an error, so the words always fill the slots from the start.
Populated by UserInput_Enter, which first fills all 0A slots with FF. Handler_MatchVerb looks the verb up in Table_VerbWordTokens, MatchPhraseTokens matches the words after it against a phrase from PhraseTokens_Bottle, and Parser_CountItems and Parser_ProcessItem look through every slot for the name of an object. See also Parser_ValidateNoDirectObject, Parser_ValidateDirectObject, Parser_ValidateInputTokens, Parser_ValidateAnyDirectObject and Action_DropThrow for usage.
BD70 1
Line Number
BD71 4
Four Letter Buffer
The four-character word UserInput_Enter is matching. The routine fills it with ASCII spaces (20) and then copies up to 04 characters of the next command word into it.
BD75 8
Graphics: Room Image Row
Eight bytes assembled by Print_RoomGraphic for one character row of a room image, then passed to the ROM print routine.
BD7D 2
Temporary Storage Table Pointer
BD7F 2
Temporary Storage Table Index
BD81 2
Temporary Storage Word Count
BFE2 12
Table: Directions
Pointer to the table containing direction messaging.
D34E 158
Table: Item Descriptions
D3EC 218
Table: Room Descriptions
D4C6 96
Table: Object Noun Phrases
E96A 96
Table: Item Grouping
Items may have several item IDs which relate to a single item, this table groups the items together to assist the parser with knowing that tokens refer to the same thing.
Some examples are:
Item ID Item Name Relates To:
02 "A match" The Match
03 "A lighted match"
Item ID Item Name Relates To:
10 "An eyepatch" The Eyepatch
11 "An eyepatch (worn)"
Item ID Item Name Relates To:
27 "A parrot (alive)" The Parrot
28 "A dead parrot"
EB10 654
Table: Room Map
ED9E 38
Table: Configurable Exits
Addresses of room-map exit bytes. GameStart writes 00 to each of them, and SaveGame copies the bytes into LoadSaveBuffer.
FDB5 324
Default Game State
The starting values for the game status buffer. GameStart copies all 0144 bytes over Table_ItemLocations at the start of every game, so the layout is the same as the entries from Table_ItemLocations to Count_ConfigurableExits.
FF3A 76
Jump Table: Verbs
A jump table of verb routines, the ordering here is from Table_VerbWordTokens.
Used by the routine at Handler_MatchVerb.
FF86 16
Jump Table: Turn-Based Events
FF96 18
Jump Table: Scenic Events
FFA8 26
Jump Table: Room Images