![]() |
Game status buffer |
| Address | Length | Description |
|---|---|---|
| 5CB8 | 1 | |
| 5CB9 | 2 |
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 |
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 |
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 |
The stack pointer is kept here while the drawing routines use it to read data, for example DrawSprite and C5E5.
|
| 5CDC | 2 |
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 |
|
| 5CE2 | 4 |
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 |
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 |
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 |
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 |
The speed of the entity that is being moved. Its high byte is multiplied by the direction by ScaleDisplacement.
|
| 5CEC | 2 |
The previous value of the screen position of the player, which is kept by ProjectPlayerEntity, followed by the change in the value.
|
| 5CEE | 2 |
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 |
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 |
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 |
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 |
The rate of turning of the player, which builds up while a turn control is held (see ControlPlayer).
|
| 5CFE | 2 |
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 |
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 |
The state of the random number generator at GetRandomNumber.
|
| 60FB | 1 |
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 |
The control method chosen for player 2 in the title menu, which uses the same values as Player1ControlMethod.
|
| 60FD | 1 |
Set to 01 when the two player game is chosen in the title menu, or 00 for the one player game.
|
| 627B | 4 |
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 |
The records of the markers of the two players in the title menu, for MoveMarker.
|
| 9F79 | 32 |
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 |
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 |
The addresses used by SortDrawList to track its progress.
|
| A2DD | 2 |
A counter that is increased once every frame.
|
| A2DF | 1 |
A timer which is set to 28 and is then counted down to zero once every frame.
|
| A598 | 5 |
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 |
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 |
The counters used when a message is scrolled by ScrollMessage.
|
| AA5A | 1 |
A byte which BuildView sets to zero and which is used by the code that draws the view.
|
| AAE2 | 3 |
A rectangle of attributes for FillScratchRectangle, which has three bytes.
|
| AF8F | 100 |
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 |
The list of items to draw, built by BuildDrawList. Each item is three bytes: a flag and the address of a record.
|
| B06C | 2 |
The address of the next free item in the draw list.
|
| B1B2 | 77 |
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 |
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 |
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 |
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 |
Variables for the drawing routines. Purpose of most of them is not yet known.
|
| BBF6 | 1 |
The number of 14-byte records in use.
|
| BBF7 | 380 |
The 14-byte records, which are created by AddItemRecord. There is room for 13 of them.
|
| BD73 | 1 |
The number of 07-byte records in use.
|
| BD74 | 70 |
Records of 07 bytes. There is room for 0A of them.
|
| BDBA | 1 |
The number of records in the copy at CopiedRecords.
|
| BDBB | 70 |
A copy of the records in use at ObjectRecords.
|
| CE59 | 1 |
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 |
The overlap in the first, second and third directions, as found by TestEntityPair. Each is a word.
|
| DEDD | 1 |
The player who is playing, which is 00 for player 1 and 01 for player 2.
|
| DEDE | 1 |
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 |
The number of the level that the player is on, which is a number from 00 to 04.
|
| DEE0 | 1 |
The number of bottles that the player has still to collect. The exit opens when it reaches zero.
|
| DEE1 | 20 |
The state of each of the 14 bottles of the level, which is set by E0EB and kept by RestoreBottles and CollectBottle.
|
| DEF5 | 4 |
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 |
The score of the current player, as six digits in binary coded decimal in three bytes.
|
| DEFC | 1 |
A flag that is set when the player is on a bottle, so that CollectBottle collects it.
|
| DEFD | 31 |
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 |
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 |
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.
|