Address Length Description
5CB8 1
Title Animation Frame
The frame of the highlight animation of the title menu, which is set to 00 by 6148 and used by 61D3.
5CB9 2
Cell Position
In the game, this is the position of the cell of the level whose objects are being drawn, which is set by GetCellPosition and used by DrawGroupObjects. On the title menu, the first byte is the low byte of the address of the attribute that is highlighted (see 6150) and the second byte is the last value of FRAMES that was seen (see ShowTitleMenu_WaitFrame).
5CBB 2
Strip Address
The address in the view buffer of the strip that is being built by BuildView, which is used when the blocks are drawn and is changed by the routines that scroll the view.
5CD8 2
Scratch Value
A value that is used for several purposes. The heading of the player is kept here, which is shown by DrawDirectionGauge. The stack pointer is saved here by ResetAttributes and ClearScreen. Purpose of the other uses is not yet known.
5CDA 2
Saved Stack Pointer
The stack pointer is kept here while the drawing routines use it to read data, for example DrawSprite and C5E5.
5CDC 2
Drawing Position
A word that is used for several purposes, including the details of the record that is added by AddItemRecord and the position of the tip of the needle of the direction gauge (see DrawDirectionGauge). Purpose of the other uses is not yet known.
5CDE 1
Game Variable
A byte that is stored by AB21 and used by 5FA9 and RunFrame_Entities. Purpose not yet known.
5CE2 4
View Position
The position of the view, as two words. It is set by StartLevel when a level is started and is changed when the view is moved (see MoveView). The high bytes at 5CE3 and 5CE5 are used by GetCellPosition as the position of the player.
5CE6 1
View Flags
The flags that record which way the view is scrolling. They are set by the scroll routines and tested by ScrollView. Bits 0-1 scroll left, bits 2-3 scroll right, bits 4-5 scroll down and bits 6-7 scroll up. 01 in a pair is one pixel a frame and 02 is two pixels.
5CE7 2
View Origin Sum
The sum of the two values of the position of the view plus 80 which is worked out by BuildView. It is used with ViewOriginDifference as the origin of the view on the screen when the position of an entity is worked out by ProjectEntity.
5CE9 1
Scroll Value
A byte that is used by the routines that scroll the view (see ScrollViewDown and ScrollViewUp) and by E463. Purpose not yet known.
5CEA 2
Entity Speed
The speed of the entity that is being moved. Its high byte is multiplied by the direction by ScaleDisplacement.
5CEC 2
Player Screen Position
The previous value of the screen position of the player, which is kept by ProjectPlayerEntity, followed by the change in the value.
5CEE 2
View Origin Difference
The difference of the halves of the two values of the position of the view, which is worked out by BuildView. It is used with ViewOriginSum as the origin of the view on the screen.
5CF0 1
Drawing Flags
The flags that are used when blocks are drawn. If bits 1 and 2 are zero then DrawBlockBytes draws the bytes of a row plain, and otherwise it shifts them. Purpose of the other bits is not yet known.
5CF1 2
Saved IY
The value of IY that is saved by 5E04, because the ROM interrupt routine needs it to point at the system variables. It is restored whenever the ROM is used.
5CF3 3
Record Details
Details of the record that is being added by AddItemRecord and of the object that is being drawn, which include the sizes that are used by AddRecordSizes. Purpose of the individual bytes is not yet known.
5CF6 2
Turning Rate
The rate of turning of the player, which builds up while a turn control is held (see ControlPlayer).
5CFE 2
Level Header Address
The address of the header of the data of the current level, which is set by StartLevel and used to find the map and the path entries (see LevelData).
5D00 1
Jump Counter
The counter that is used for the player jumping and for the death of the player (see RunFrame). Purpose of its values is not yet known.
5F9A 4
Random Number State
The state of the random number generator at GetRandomNumber.
60FB 1
Player 1 Control Method
The control method chosen for player 1 in the title menu: 00 for the keyboard, 01 for a Kempston joystick, 02 for a Cursor joystick and 03 for an Interface II joystick.
60FC 1
Player 2 Control Method
The control method chosen for player 2 in the title menu, which uses the same values as Player1ControlMethod.
60FD 1
Two Player Flag
Set to 01 when the two player game is chosen in the title menu, or 00 for the one player game.
627B 4
Option Positions
The vertical positions of the markers beside the four control method options of the title menu: the keyboard, a Kempston joystick, a Cursor joystick and an Interface II joystick.
627F 6
Marker Records
The records of the markers of the two players in the title menu, for MoveMarker.
9F79 32
Scratch Items
Two buffers, each holding a copy of an item from the draw list that has been expanded into the same layout as an entity, for SortDrawList. The positions are copied in at offsets 02 05 and 08 and the sizes at offsets 0B 0C and 0D are always 06 06 and 01.
A19E 16
Tried Entries
The addresses of the entries in the draw list that DrawOtherItemFirst has tried while it looks for an item to move to the sorted list, each stored as two bytes and ended by FF.
A1AE 4
Draw List Pointers
The addresses used by SortDrawList to track its progress.
A2DD 2
Frame Counter
A counter that is increased once every frame.
A2DF 1
Countdown Timer
A timer which is set to 28 and is then counted down to zero once every frame.
A598 5
Message Character
A text record, in the format used by PrintText, for the character that ScrollMessage adds on the right of a message that is scrolling.
A59D 8
Gauges
Two gauges which are drawn as horizontal bars, for UpdateGauge. Each has four bytes: the current length of the bar in pixels, the column of the left end of the bar, and a word whose high byte is the target length. The word of the first gauge is counted down as time passes (see A59F).
A921 2
Scroll Counters
The counters used when a message is scrolled by ScrollMessage.
AA5A 1
Render Flag
A byte which BuildView sets to zero and which is used by the code that draws the view.
AAE2 3
Attribute Rectangle
A rectangle of attributes for FillScratchRectangle, which has three bytes.
AF8F 100
Sorted Draw List
The draw list after it has been sorted into drawing order by SortDrawList. It has the same format as the list at DrawList.
AFFB 113
Draw List
The list of items to draw, built by BuildDrawList. Each item is three bytes: a flag and the address of a record.
B06C 2
Draw List Pointer
The address of the next free item in the draw list.
B1B2 77
Draw Items Work Area
The first byte is the number of overlapping items collected by DrawItems. The table of overlapping items that follows is filled by CollectOverlappingItem, each entry being four bytes. Purpose of the rest is not yet known.
B540 456
Entities
The entities. There are 0C of them, each of 26 bytes, and the first is the player. Field 00 is the type, which is zero when the entity is not in use. Field 01 is the frame, and its bit 7 hides the entity. Fields 02 and 03 are the x coordinate, 05 and 06 the y coordinate and 08 to 0A the z coordinate. Field 0B is the extent on the x axis, 0C the extent on the y axis and 0D the extent on the z axis. Field 0E is the column on the screen, 0F the row and 11 the heading. Field 10 is the speed, with the current speed in bits 0-3 and the maximum in bits 4-7. Field 1E holds the flags. Bit 7 is set when the entity is moving fast. Bit 6 selects the higher frame when UpdateExtraRecord builds the extra record, and is tested again by TestEntityCells. Purpose of bit 6 is not yet known.
B708 156
Extra Records
One extra record of 0D bytes for each of the entities. Bit 7 of field 09 is set while the record is in use. Fields 00 and 01 are the column and the row. UpdateExtraRecord writes the adjusted x coordinate to fields 02 and 03 the adjusted y coordinate to fields 04 and 05 and the adjusted z coordinate to fields 06 and 07. Field 0B holds the width in bits 0-3 and the frame in bits 4-7. Field 0C holds the height in bits 0-5, and its bit 7 copies bit 6 of the entity flags.
B7A4 42
Temporary Entity
A temporary entity that is built from an extra record or a 14-byte record so that it can be drawn like an entity.
BB9F 87
Drawing Variables
Variables for the drawing routines. Purpose of most of them is not yet known.
BBF6 1
Record Count
The number of 14-byte records in use.
BBF7 380
Records
The 14-byte records, which are created by AddItemRecord. There is room for 13 of them.
BD73 1
Object Count
The number of 07-byte records in use.
BD74 70
Object Records
Records of 07 bytes. There is room for 0A of them.
BDBA 1
Copy Count
The number of records in the copy at CopiedRecords.
BDBB 70
Copied Records
A copy of the records in use at ObjectRecords.
CE59 1
Exit Message Flag
Controls the "EXIT CLOSED" message. When it is 02 the message is printed, and when it is 01 the message is blanked out. It is zero when there is no message.
DDCF 6
Overlap Distances
The overlap in the first, second and third directions, as found by TestEntityPair. Each is a word.
DEDD 1
Current Player
The player who is playing, which is 00 for player 1 and 01 for player 2.
DEDE 1
Lives
The number of lives that the current player has. The details of the player that is not playing are held at OtherPlayerState, and the two are swapped by SwitchPlayer. This byte is the first of a block of 1F bytes that are swapped.
DEDF 1
Level Number
The number of the level that the player is on, which is a number from 00 to 04.
DEE0 1
Bottles Left
The number of bottles that the player has still to collect. The exit opens when it reaches zero.
DEE1 20
Bottle States
The state of each of the 14 bottles of the level, which is set by E0EB and kept by RestoreBottles and CollectBottle.
DEF5 4
Restart Position
The position at which the player restarts, which is used by SetLevelGraphics if the flag in the third byte of it is set. The routine at WipeViewIn sets it.
DEF9 3
Score
The score of the current player, as six digits in binary coded decimal in three bytes.
DEFC 1
Bottle Flag
A flag that is set when the player is on a bottle, so that CollectBottle collects it.
DEFD 31
Other Player State
The details of the player who is not playing, in the same format as the 1F bytes from Lives. The first byte is the number of lives and the third is the number of bottles left.
E4C6 6
Restart Candidate
The position that the player will restart from, which is set by TestGroupObjects and is copied to RestartPosition by UpdateScreen when the player has been on it for long enough. Purpose of the individual bytes is not yet known.
E5BB 2141
Screen Buffer
The start of the screen buffer, which has 80 rows of 18 bytes and ends at F1BA after the end of the data of the file. The picture of the view is built here before it is copied to the screen. The bytes here when the game is saved are whatever was last drawn.