Address Length Description
23736 1
Title Animation Frame
The frame of the highlight animation of the title menu, which is set to 0 by 24904 and used by 25043.
23737 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 24912) and the second byte is the last value of FRAMES that was seen (see ShowTitleMenu_WaitFrame).
23739 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.
23768 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.
23770 2
Saved Stack Pointer
The stack pointer is kept here while the drawing routines use it to read data, for example DrawSprite and 50661.
23772 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.
23774 1
Game Variable
A byte that is stored by 43809 and used by 24489 and RunFrame_Entities. Purpose not yet known.
23778 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 23779 and 23781 are used by GetCellPosition as the position of the player.
23782 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. 1 in a pair is one pixel a frame and 2 is two pixels.
23783 2
View Origin Sum
The sum of the two values of the position of the view plus 128 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.
23785 1
Scroll Value
A byte that is used by the routines that scroll the view (see ScrollViewDown and ScrollViewUp) and by 58467. Purpose not yet known.
23786 2
Entity Speed
The speed of the entity that is being moved. Its high byte is multiplied by the direction by ScaleDisplacement.
23788 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.
23790 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.
23792 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.
23793 2
Saved IY
The value of IY that is saved by 24068, because the ROM interrupt routine needs it to point at the system variables. It is restored whenever the ROM is used.
23795 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.
23798 2
Turning Rate
The rate of turning of the player, which builds up while a turn control is held (see ControlPlayer).
23806 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).
23808 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.
24474 4
Random Number State
The state of the random number generator at GetRandomNumber.
24827 1
Player 1 Control Method
The control method chosen for player 1 in the title menu: 0 for the keyboard, 1 for a Kempston joystick, 2 for a Cursor joystick and 3 for an Interface II joystick.
24828 1
Player 2 Control Method
The control method chosen for player 2 in the title menu, which uses the same values as Player1ControlMethod.
24829 1
Two Player Flag
Set to 1 when the two player game is chosen in the title menu, or 0 for the one player game.
25211 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.
25215 6
Marker Records
The records of the markers of the two players in the title menu, for MoveMarker.
40825 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 2 5 and 8 and the sizes at offsets 11 12 and 13 are always 6 6 and 1.
41374 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 255.
41390 4
Draw List Pointers
The addresses used by SortDrawList to track its progress.
41693 2
Frame Counter
A counter that is increased once every frame.
41695 1
Countdown Timer
A timer which is set to 40 and is then counted down to zero once every frame.
42392 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.
42397 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 42399).
43297 2
Scroll Counters
The counters used when a message is scrolled by ScrollMessage.
43610 1
Render Flag
A byte which BuildView sets to zero and which is used by the code that draws the view.
43746 3
Attribute Rectangle
A rectangle of attributes for FillScratchRectangle, which has three bytes.
44943 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.
45051 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.
45164 2
Draw List Pointer
The address of the next free item in the draw list.
45490 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.
46400 456
Entities
The entities. There are 12 of them, each of 38 bytes, and the first is the player. Field 0 is the type, which is zero when the entity is not in use. Field 1 is the frame, and its bit 7 hides the entity. Fields 2 and 3 are the x coordinate, 5 and 6 the y coordinate and 8 to 10 the z coordinate. Field 11 is the extent on the x axis, 12 the extent on the y axis and 13 the extent on the z axis. Field 14 is the column on the screen, 15 the row and 17 the heading. Field 16 is the speed, with the current speed in bits 0-3 and the maximum in bits 4-7. Field 30 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.
46856 156
Extra Records
One extra record of 13 bytes for each of the entities. Bit 7 of field 9 is set while the record is in use. Fields 0 and 1 are the column and the row. UpdateExtraRecord writes the adjusted x coordinate to fields 2 and 3 the adjusted y coordinate to fields 4 and 5 and the adjusted z coordinate to fields 6 and 7. Field 11 holds the width in bits 0-3 and the frame in bits 4-7. Field 12 holds the height in bits 0-5, and its bit 7 copies bit 6 of the entity flags.
47012 42
Temporary Entity
A temporary entity that is built from an extra record or a 20-byte record so that it can be drawn like an entity.
48031 87
Drawing Variables
Variables for the drawing routines. Purpose of most of them is not yet known.
48118 1
Record Count
The number of 20-byte records in use.
48119 380
Records
The 20-byte records, which are created by AddItemRecord. There is room for 19 of them.
48499 1
Object Count
The number of 7-byte records in use.
48500 70
Object Records
Records of 7 bytes. There is room for 10 of them.
48570 1
Copy Count
The number of records in the copy at CopiedRecords.
48571 70
Copied Records
A copy of the records in use at ObjectRecords.
52825 1
Exit Message Flag
Controls the "EXIT CLOSED" message. When it is 2 the message is printed, and when it is 1 the message is blanked out. It is zero when there is no message.
56783 6
Overlap Distances
The overlap in the first, second and third directions, as found by TestEntityPair. Each is a word.
57053 1
Current Player
The player who is playing, which is 0 for player 1 and 1 for player 2.
57054 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 31 bytes that are swapped.
57055 1
Level Number
The number of the level that the player is on, which is a number from 0 to 4.
57056 1
Bottles Left
The number of bottles that the player has still to collect. The exit opens when it reaches zero.
57057 20
Bottle States
The state of each of the 20 bottles of the level, which is set by 57579 and kept by RestoreBottles and CollectBottle.
57077 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.
57081 3
Score
The score of the current player, as six digits in binary coded decimal in three bytes.
57084 1
Bottle Flag
A flag that is set when the player is on a bottle, so that CollectBottle collects it.
57085 31
Other Player State
The details of the player who is not playing, in the same format as the 31 bytes from Lives. The first byte is the number of lives and the third is the number of bottles left.
58566 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.
58811 2141
Screen Buffer
The start of the screen buffer, which has 128 rows of 24 bytes and ends at 61882 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.