Address Length Description
23550 1
Stack
Top of the stack (so, pushes below this point).
24481 1
Screen Initialised Flag
Tracks whether the current screen has been fully initialised. Set to 1 after the HUD header is drawn, and cleared to 0 when a fresh screen setup is needed.
24482 1
Input State
Bitmask representing the current directional input. 31 means no input. Each bit represents a direction when reset:
Bit State
0 Fire
1 Up
2 Down
3 Right
4 Left
24484 1
Previous Input State
Stores the last directional input for animation and speed purposes.
24485 1
Percy Facing Direction
0=facing right, 1=facing left.
24486 1
Input Mode
Controls which input device is active:
Byte State
0 Not yet detected
31 Kempston joystick
128 Keyboard
24487 1
Falling State
Tracks whether Percy is falling:
Byte State
0 Not falling
254 Falling (active)
255 Falling (impact)
24488 1
Collision Flag
Set to 1 when Percy has collided with scenery and the move was rejected.
24489 1
Flag: Egg State
Set to 255 when Percy is dropping an egg, and cleared to 0 when the egg routine is complete.
24490 1
Flag: Carrying A Worm
Set to 255 when Percy is carrying a worm, and cleared to 0 when he's not.
24491 1
Energy Bar Delay Counter
A delay so Percy's energy bar doesn't deplete too quickly while he's flying.
24492 1
Flag: Worm Drop
Set to 255 when a worm has been dropped. Cleared to 0 when there's no worm being processed.
24493 1
Flag: Landed On Platform Flag
Set to 255 when Percy has landed on a platform. Cleared to 0 when no platform is beneath him.
24494 1
Movement Speed
Percy's current movement speed in pixels per frame. Ranges from 1 (minimum) to 4 (maximum). Accelerates while a direction is held, decelerates when input changes or is released.
24495 1
Percy Flap Counter
Animation frame counter for Percy's wing flap cycle. Increments each frame Percy moves horizontally, cycling from 1 to 4.
24496 1
Percy Animation Counter
Controls the animation frame cycle. Counts up from 1 to 4 (first half), then bit 7 is set and it counts back down (second half). Bits 0-2 hold the frame index, bit 7 indicates the second half.
24497 1
Current Level
The current level number. E.g. 1 for the first level.
24498 1
Worms Remaining
Number of worms Percy has remaining to collect for the current level.
24499 1
Lives Display Character
The ASCII character displayed on screen to represent the current lives count.
24500 1
Chick Animation States
A rotating bit pattern used to animate the nest chicks. Each bit controls the animation frame for one chick, rotated each frame so they animate independently.
24501 2
Room Object Data Pointer
Pointer to the current room's object data, calculated from the room number and the base at Room_Object_Data. Used to track the state of collectible worms and other interactive elements in the current room.
24503 2
Beep Pitch
Current pitch value used for sound effects (item collection, falling). Adjusted each frame during the sound.
24505 2
Room Drawing Position
The two-byte drawing position used by Draw_Room_Tile to track where the next tile should be placed.
The low byte is the column and the high byte is the row.
24507 1
Respawn Flag
Set to 255 when entering a new room. Checked by hazard handlers to reset their positions and state when the room is repopulated.
24508 1
Pause Flag
0=not paused, 255=paused; set at Game_Initialise.
24509 1
Border Colour
24510 3
Lives Backup
Copy of LivesDisplayCharacter. Set when lives are initialised, cleared at end of each frame. When non-zero the main game handlers run; when zero the full sprite draw runs.
24513 2
Active Tile Set Pointer
Holds the pointer to the currently active tile set.
24515 2
Room Data Pointer
Points to the tile data for the current room.
24517 1
Current Room
The ID of the current Room (0-11).
26661 7
Current Score
26668 6
Score Buffer
Workspace for scoring calculations.
26783 25
Table: Snapdragon Definition
26977 5
Table: Worm Collection Count
27826 1
Red Bird Direction Change Timer
Counts down each frame. When it reaches zero, the red bird picks a new random flight direction.
27827 1
Red Bird Traversal Direction
Controls which direction the red bird traverses across rooms. 0=moving left (entering from the right), 1=moving right (entering from the left). Toggled when the red bird wraps past the room boundary.
27828 1
Red Bird Stun Timer
When non-zero, the red bird is stunned. Counts down each frame until it reaches 1 then the stun ends and a short reappearance delay begins.
27829 1
Red Bird Stun Timer Copy
Copy of the initial stun timer value, stored when the red bird is first stunned.
27830 1
Red Bird Current Room
The room number the red bird is currently in.
27831 1
Red Bird Animation Seed
Seeded from the Memory Refresh Register when the red bird is initialised for each room.
27832 1
Red Bird Movement Direction
The red bird's current movement direction within a room (0-7), indexing into the direction jump table at Direction_Jump_Table. Changes randomly each time the direction change timer at RedBirdDirectionChangeTimer expires.
27833 1
Red Bird Flight Speed
The red bird's current flight speed, looked up from the per-level speed table at RedBirdSpeedTable based on the current level number.
27834 1
Red Bird Path Counter
Counts down to trigger a new flight path setup via HandleRedBird_SetupFlight.
27835 2
Pointer: Red Bird Flightpath Data
Pointer to the current room's flight path boundary data at Table_RedBirdFlightPath_01. Each boundary entry is 4 bytes: Y-min, Y-max, X-min, X-max.
27837 1
Red Bird Appearance Delay
Counts down each frame while the red bird is waiting to enter the current room. When it reaches zero, the red bird appears.
27838 5
Red Bird Speed Table
Flight speed for each level. Indexed by zero-based level number.
27843 1
Lives Display Previous
27844 1
Red Bird Wing Animation Counter
Cycles through 0-7 to animate the red bird's wings. Divided by 2 and added to the frame base of 24 to select the sprite frame.
27845 1
Butterfly Movement Boundary
Boundary data for the butterfly's movement, used by the direction jump table at Direction_Jump_Table.
27846 22
Butterfly Room Table
Table of room/level pairs where butterflies appear. Each entry is two bytes: the room number followed by the level number. Bit 7 of the level byte is set when the butterfly has been collected. The table is terminated by 255.
27868 1
Butterfly Wing Flap Toggle
Toggled each frame to alternate the butterfly's wing animation between two frames.
27869 1
Butterfly Movement Delay
Countdown timer for the butterfly's current movement direction. When it reaches zero, a new random direction and delay are generated.
27870 1
Butterfly Direction
Current movement direction for the butterfly, in the range 0-7.
29161 3
Frog 1 State Data
29164 3
Frog 2 State Data
29167 25
Table: Frog Jump Height
Jump height lookup table. Each entry is the Y offset from ground level for one step of the frog's jump arc. The values rise to a peak of 34 at the midpoint then fall back to 0 forming a smooth parabolic arc over 24 steps.
29192 7
Car State Data
Crash animation timer. When non-zero, the car cycles through crash frames. Counts down to 1 then clears.
29959 1
Helicopter Movement Boundary
Single byte used as movement boundary data; read at Move_Helicopter.
29960 10
Helicopter State Data
State variables for the helicopter hazard. Two five-byte state blocks: Helicopter_State_Data_1 (first) and Helicopter_State_Data_2 (second).
Referenced by room handlers at Handler_Room01 and Handler_Room06.
30088 3
Cat Direction Data
Animation counter, direction flag and step size for the cat.
30103 3
Dog Direction Data
Animation counter, direction flag and step size for the dog.
30329 7
UFO State Data
State variables for the UFO hazard.
30638 1
Bomb Explosion Counter
Countdown for the bomb explosion animation. When non-zero, the explosion frames are displayed on Percy.
30639 4
Plane State Data
State variables for the plane hazard.
30643 1
Plane Speed
The horizontal speed of the plane in pixels per frame.
30865 1
Balloon Direction Flag
Direction flag for the balloon. 0 = floating right, non-zero = floating left.
30866 1
Balloon Pop Counter
Counter for the balloon popping and respawn sequence. Values 1 to 3 show deflating frames, 4 to 199 are the respawn delay, and 200 triggers the respawn.
31012 4
Paratrooper Data
Animation counter, direction flag and boundary data for the walking paratrooper.
31016 8
Table: Paratrooper Walking Speed
Walking speed for the paratrooper, indexed by room number minus one. Only rooms 5, 6 and 8 have active paratrooper entries.
31185 1
Spider Direction Flag
Direction flag for the spider. 0 = ascending, 255 = descending.
31427 4
Parachute State Data
State variables for the parachute hazard.
31431 1
Random Seed
31432 32
Cat State Data
State variables for the cat hazard. Only rooms 2, 3, 5, 6, 7 and 8 have active entries.
31464 28
Dog State Data
State variables for the dog hazard. Only rooms 3 and 7 have active entries.
31492 9
Table: Parachute Starting X Positions
Lookup table of starting X positions for the parachute, indexed by room number minus one. Only rooms 2, 8 and 9 have active paratrooper entries.
31501 32
Paratrooper State Data
State variables for the walking paratrooper hazard. Only rooms 5, 6 and 8 have active entries.
31534 22
Jump Table: Room Handlers
48640 147
Table: Red Bird Flight Path Data
49152 6848
Room Buffer
56000 4
Percy States
56004 4
3-Wide Sprite 1 Data States
Used by the Red Bird.
56008 4
3-Wide Sprite 2 Data States
Used by Frog 1, Car Type 1.
56012 4
3-Wide Sprite 3 Data States
Used by Frog 2.
56016 4
3-Wide Sprite 4 Data States
Used by Car Type 3, Cat.
56020 4
3-Wide Sprite 5 Data States
Used by Car Type 2, Dog, Plane.
56024 4
3-Wide Sprite 6 Data States
56028 4
3-Wide Sprite 7 Data States
Used by Cat, UFO, Plane.
56032 4
Egg Sprite Data
56036 4
Butterfly Sprite Data
Sprite data for the butterfly collectible.
56040 4
2-Wide Sprite 1 Data States
56044 4
2-Wide Sprite 2 Data States
56048 4
2-Wide Sprite 3 Data States
56052 4
2-Wide Sprite 4 Data States
56056 4
2-Wide Sprite 5 Data States
56060 4
2-Wide Sprite 6 Data States
56064 4
Backup: Percy
Backup of Percy_X_Position. First byte is Percy's X from previous frame (used for wing flap animation); written each frame by Draw_Sprites.
56068 4
Backup: 3-Wide Sprite 1
Backup of Sprite01_3Wide_X_Position; written each frame by Draw_Sprites.
56072 4
Backup: 3-Wide Sprite 2
Backup of Sprite02_3Wide_X_Position; written each frame by Draw_Sprites.
56076 4
Backup: 3-Wide Sprite 3
Backup of Sprite03_3Wide_X_Position; written each frame by Draw_Sprites.
56080 4
Backup: 3-Wide Sprite 4
Backup of Sprite04_3Wide_X_Position; written each frame by Draw_Sprites.
56084 4
Backup: 3-Wide Sprite 5
Backup of Sprite05_3Wide_X_Position; written each frame by Draw_Sprites.
56088 4
Backup: 3-Wide Sprite 6
Backup of Sprite06_3Wide_X_Position; written each frame by Draw_Sprites.
56092 4
Backup: 3-Wide Sprite 7
Backup of Sprite07_3Wide_X_Position; written each frame by Draw_Sprites.
56096 4
Backup: Egg
Backup of Egg_X_Position; written each frame by Draw_Sprites.
56104 4
Backup: 2-Wide Sprite 1
Backup of Sprite01_2Wide_X_Position; written each frame by Draw_Sprites.
56108 4
Backup: 2-Wide Sprite 2
Backup of Sprite02_2Wide_X_Position; written each frame by Draw_Sprites.
56112 4
Backup: 2-Wide Sprite 3
Backup of Sprite03_2Wide_X_Position; written each frame by Draw_Sprites.
56116 4
Backup: 2-Wide Sprite 4
Backup of Sprite04_2Wide_X_Position; written each frame by Draw_Sprites.
56120 4
Backup: 2-Wide Sprite 5
Backup of Sprite05_2Wide_X_Position; written each frame by Draw_Sprites.
56124 4
Backup: 2-Wide Sprite 6
Backup of Sprite06_2Wide_X_Position; written each frame by Draw_Sprites.
56990 354
Room Object Data
Buffer holding the state of interactive objects (worms, nest slots) for all rooms. Each byte can be:
Value Meaning
0 Empty / available
30 Worm collected by Percy
31 Worm delivered to nest
The buffer is 352 bytes long, pointed to per-room by Room_Object_Data_Pointer.
57344 6144
Sprite Buffer
63488 705
Overlay Buffer
64678 690
High Score