Address Length Description
5F09 3
High Score
3-byte representation of the score.
5F0C 1
Game Options
Byte Binary Option
00 00000000 1UP Game + Keyboard
01 00000001 2UP Game + Keyboard
02 00000010 1UP Game + Kempston Joystick
03 00000011 2UP Game + Kempston Joystick
04 00000100 1UP Game + Cursor Joystick
05 00000101 2UP Game + Cursor Joystick
Bit 0 is set for a two player game. The number in bits 1-2 chooses the controls; 00 is the keyboard, 01 is the Kempston joystick and 02 is the cursor joystick.
5F0D 1
Sound Mute Flag
Zero when the sound is on. Any other value means the sound is muted, and the tunes which are played by PlayMusic are skipped. It is set by GameInitialisation from a checksum of the BEEPER routine.
5F0E 3
1UP Score
3-byte representation of the score.
5F11 3
2UP Score
3-byte representation of the score.
5F14 3
Old Sprite
The position and sprite ID of the actor, as recorded by StoreEntity before the actor was moved. The sprite is erased from here by DisplayEntity.
5F17 1
Actor Sprite Rows
The number of rows of the actor sprite which are on the screen. This is used to work out how many rows of attribute cells to colour.
5F18 1
Actor Sprite Width
The width of the actor sprite in character cells; 02 when it is aligned to a character cell, otherwise 03.
5F19 2
Sprite Rows Remaining
The number of rows of the old sprite which have not yet been drawn.
5F1B 2
Actors In Play
Set to zero at the start of each pass through the actors, and increased by one by the handlers of the actors which are in play.
5F1D 2
Frame Counter
Increased by one after each pass through the actors.
5F1F 2
Actor Sprite Position
The position of the actor sprite, used by ColourSprite to find the first attribute cell to colour.
5F21 1
Active Player
The currently active player. It is toggled with a CPL command by HandleEndOfLife when the turn changes, so it is either 00 or FF.
Value Player
00 1UP
FF 2UP
5F22 1
Last Frame
The low byte of FRAMES at the last frame update. The main loop at MainLoop runs FrameUpdate whenever this is different from the current value (FRAMES is increased by every interrupt).
5F23 1
Frame Updated
Has the frame been updated? 00=No 01=Yes.
5F24 1
Current menu item colour attribute
Current menu item colour attribute.
5F25 1
Game Delay Timer
At the beginning of each player turn there is a delay to allow the player to be ready for play. It is counted down by GamePlayEntry, and no actors are created by CreateActor until it reaches zero.
Value Game Mode
80 1UP
FF 2UP
The larger delay for a 2UP game is useful for swapping players controls.
5F26 1
Unused
This byte is not used by the game.
5F27 1
Pantry Shelf Colour
The colour attribute of the ingredient for the shelf which is being drawn in the pantry. It is set by PantryFillColour, from the table at PantryFillColours.
5F28 1
Tile Block Width
The number of tiles in each row of the block which is being drawn by PrintTileBlock or coloured by WriteAttributeBlock.
5F29 1
Charlie Running Flag
Used in the introduction to a level. It is set to zero by StartLevelIntroduction, and then to 01 by StartCharlieRunning when the ingredient has moved far enough to the left for Charlie to start running after it.
5F2A 1
Pantry Highlight Mask
Has one bit set to show which shelf of the pantry is highlighted, which is bit 05 for the top shelf down to bit 01 for the bottom shelf. It is made by DrawPantry by shifting 20 right by the level (modulo 08), so for the levels which have no ingredient no shelf is highlighted.
5F2B 2
Charlie Last Movement
The last direction in which Charlie moved. The low byte is the horizontal speed and the high byte is the vertical speed. It is updated by GamePlay_Start each time Charlie moves and is set to 0002 (moving right) by DisplayPlayerLives. Flour shots are fired in this direction, at three times the speed.
5F2D 1
Active Player Level
The level of the active player. Bits 0-2 are the level within a set of five, and bits 3-5 are the set. It is FF for a player who has not started yet, so that NextLevel (which adds one to the level) starts them on level 00. Swapped with InactivePlayer_Level by ChangePlayer.
5F2E 1
Active Player Lives
The lives which the active player has left. Swapped with InactivePlayer_Lives by ChangePlayer.
5F2F 1
Active Player Ingredients Needed
The number of ingredients which are still needed (in BCD). It is shown inside the mixing bowl. The level is finished when it reaches zero and there are no actors left in play. Swapped with InactivePlayer_IngredientsNeeded by ChangePlayer.
5F30 1
Active Player Level Number
The level number (in BCD) which is shown in the "LEV" box. Swapped with InactivePlayer_LevelNumber by ChangePlayer.
5F31 1
Inactive Player Level
The level of the player who is not active, in the same format as ActivePlayer_Level.
5F32 1
Inactive Player Lives
The lives which the inactive player has left.
5F33 1
Inactive Player Ingredients Needed
The number of ingredients which are still needed by the inactive player (in BCD).
5F34 1
Inactive Player Level Number
The level number (in BCD) of the inactive player.
5F35 8
Charlie
The first of the ten actor slots (up to Message_Copyright), which is always Charlie. Every actor has the same eight byte format, and is processed once for each pass through the game loop.
Offset Contents
00 ID (sprite ID and handler, see ActorHandlers)
01 Horizontal co-ordinate
02 Vertical co-ordinate
03 Colour attribute
04-07 Used by the handler
5F3D 16
Flour Shot Slots
The two actor slots for flour shots, in the same format as the actor at ActorCharlie. A shot is made in one of these by GamePlay_Start when Charlie fires, and handled by HandleFlourShot.
5F4D 8
Sound Effect Actor
The actor slot which is used to play sound effects (see StartSoundEffect).
5F55 48
Spawn Slots
The six actor slots which are used for the ingredients, the nasties and the other actors which are created while the game is played (the last one, 5F7D is where the monster is made by CreateMonster). They are in the same format as the actor at ActorCharlie. A slot is empty when its ID is zero.