Address Length Description
5E00 1
Game Options
Holds the number of players and the chosen control method. Bit 00 is the player count, bits 01-02 are the control method.
Bits 1-2 Control Method
00 Keyboard
02 Kempston Joystick
04 Cursor Joystick
Bit 00 is reset for a 1UP game, or set for a 2UP game.
5E04 2
Font Pointer
Holds a pointer to the currently used font data.
5E06 3
High Score
3-byte representation of the score.
5E09 23
High Score Table
Remaining 3-byte scores which follow High_Score. SetDefaults copies Default_High_Score over this whole table on initialisation.
5E20 21
Hall Of Fame Names
Eight 3-letter names. SetDefaults copies Default_HallOfFame_Names here; HallOfFame prints them beside the scores at High_Score. The eighth name occupies HallOfFame_LastName.
5E35 3
Hall Of Fame Last Name
Eighth name slot. InsertHighScore uses it as the LDDR source when opening a gap in the name table.
5E38 8
Hall Of Fame Name End
Byte after the name table. InsertHighScore uses it as the LDDR destination.
5E40 2
Random Number
Updated each game loop by adding a ROM byte, addressed by the low byte of GameTimer, to itself.
5E42 14
Game Timer
Incremented once per game loop. The low byte indexes ROM when refreshing RandomNumber.
5E50 2
Planet Data
Start of the in-play object RAM that StartGame clears up to Laser_Parameter_1.
5E52 1
Frame Updated
Has the frame been updated?
00 No
01 Yes
5E53 3
Last Frame
Holds a copy of the last FRAMES counter.
5E56 1
Sprite Cached Y
Working copy of the actor's cached Y position (*IX+0B), compared with the new Y when a sprite is redrawn. LoadSpritePointers uses it to hold the high byte of the cached screen address instead.
5E57 1
Sprite Width
Width in character columns of the sprite being drawn. ColouriseSprite uses it as the column count when colouring the sprite.
5E58 1
Sprite Height
Height in pixel rows of the sprite being drawn, kept so ColouriseSprite can work out how many attribute rows to colour.
5E59 1
Sprite Rows Left
Rows of the new sprite image still to be drawn.
5E5A 3
Sprite Cached Rows
Rows of the old (cached) sprite image still to be erased. It is copied from *IX+0A and counted down while a sprite is redrawn.
5E5D 1
Space Key Latch
Set to 01 by TestSpaceKey when SPACE is first pressed, so holding the key only counts once. Cleared again when SPACE is released.
5E5E 1
Alien Count
Number of live aliens this frame. 8287 asks SpawnAlien to spawn another while this is less than 07.
5E5F 3
1UP Score
3-byte representation of the score.
5E62 3
2UP Score
3-byte representation of the score.
5E65 1
Active Player
Which player is currently active.
Value Player
00 1UP
FF 2UP
5E66 1
Current menu item colour attribute
Attribute of the menu line currently being printed. MenuWriteText fetches it when printing a line.
5E67 1
Game Delay Timer
At the beginning of each player turn there is a delay to allow the player to be ready for play.
Value Game Mode
40 1UP
7F 2UP
The larger delay for a 2UP game is useful for swapping players controls.
5E68 1
Teleport Restore
Set to 01 once a teleport has been set up. StartGame_ReadyStack then calls FinishTeleport to finish it with a debris burst, clearing the flag.
5E69 1
Debris Count
Number of explosion particles still moving. The debris handlers loop until this returns to 00.
5E6A 2
Debris Y
Working Y used when filling explosion particles.
5E6C 1
Player Inactive
Non-zero while Jetman is dying, teleporting or otherwise not in play. Handlers return early and the game loop restarts at StartGame_ReadyStack.
5E6D 2
Hall Of Fame Timer
Countdown used by the hall of fame input loop.
5E6F 1
Hall Of Fame Index
Current character position while entering a name.
5E70 1
Hall Of Fame Fire Lock
Set after fire accepts a letter so the same press cannot advance again.
5E71 1
High Score Player
Which player's score is being ranked: 01 for 1UP, 02 for 2UP.
5E72 1
High Score Other Player
Non-zero while the other player's score still needs to be ranked after this insert.
5E73 1
High Score Done
Set to 01 when name entry starts for the first-ranked player and cleared by ReturnToRestart. Nothing reads it.
5E74 1
High Score Player Copy
Insert flag for CompareHighScores. Non-zero (set from HighScore_Player) makes it also insert the score into the table; 00 only returns the rank.
5E75 2
Hall Of Fame Pointer
Screen address where the letter being edited is printed. It advances by two columns after each letter is accepted.
5E77 1
High Score Position
Used when calculating the player's position in the high score table.
5E78 3
Hall Of Fame Name
Three-letter name being entered. PrepareNameEntry seeds it as "AAA"; InsertHighScore copies it into the name table.
5E7B 1
Debris Pitch
Working pitch. SoundsDebris plays three clicks from this byte; the debris handlers increment or decrement it.
5E7C 36
Previous Game Options
Copy of GameOptions from the last menu pass, used to notice when the selection has changed.
5EA0 1
Active Player Level
Level of the active player. A value of FF is treated as level 00 when Calculate_ActivePlayer_Level converts it to two digits. Swapped with InactivePlayer_Level by ChangePlayer.
5EA1 1
Active Player Lives
Lives the active player has left. Swapped with InactivePlayer_Lives by ChangePlayer.
5EA2 1
Level Parity
Bit 00 of the current level. FetchSprite and FetchActorSprite test it to decide whether to remap the sprite ID with MapSpriteBand.
5EA3 1
Rover Cargo Flag
00 when the rover is empty, 01 when an object is attached to it.
5EA4 1
Inactive Player Level
Level of the inactive player. A value of FF is treated as level 00 when Calculate_InactivePlayer_Level converts it to two digits. Swapped with ActivePlayer_Level by ChangePlayer.
5EA5 1
Inactive Player Lives
Lives the inactive player has left. Swapped with ActivePlayer_Lives by ChangePlayer.
5EA6 1
Inactive Level Parity
Copy of LevelParity swapped in by ChangePlayer.
5EA7 1
Inactive Rover Cargo Flag
Copy of RoverCargoFlag swapped in by ChangePlayer.
6000 96
Laser Beam Parameters
Four 18-byte actor slots for the laser beams, in the same field order as Jetman_Slot. They are the first of the 18 actor slots, which run up to Actor_List_End. Every slot is laid out the same way:
Offset Contents
00 Type (the sprite ID)
01 Screen column
02-03 World X
04 Y
05 Horizontal speed
06 Vertical thrust
07 Colour
08 Flags
09-0F Sprite cache, cleared by ClearSpriteCaches
10-17 State specific to the actor type
6060 24
Explosion Slot
18-byte actor slot. InitialiseExplosion copies explosion templates here.
6078 22
Jetman Slot
18-byte actor slot for Jetman. The last two bytes are the fuel pair at FuelLevel_1.
608E 2
Fuel Level
16-bit fuel remaining. InitialiseJetman initialises it to 9000.
6090 24
Rover Slot
18-byte actor slot for the moon rover.
60A8 96
World Slots
Four 18-byte actor slots before Object_Slot_1. The fields follow the same order as Jetman_Slot. FillDebrisSlots fills debris from here.
6108 120
Object Slots
Five 18-byte slots. ScanObjectSlots starts its scan here.
6180 24
Alien Base Slot
18-byte actor slot for the alien base, before the bomb slot. AlienBase_WorldX is its world X position and 6184 its Y position.
6198 24
Bomb Slot
18-byte actor slot for the thrown bomb. Handler_Bombs copies the bomb template here when the slot is empty.
61B0 144
Alien States
There are a maximum of 6 aliens on the screen at one time. Each slot is 18 bytes and uses the same field order as Jetman_Slot.
Byte State Byte State Byte State
00 Type 08 Flags 10 Explode flag
01 Screen column 09 Pixel shift 11 Animation timer
02 World X (low) 0A Cached height 12 X wobble speed
03 World X (high) 0B Cached Y or width 13 X wobble
04 Y position 0C Graphic low 14 Y wobble speed
05 Horizontal speed 0D Graphic high 15 Y wobble
06 Vertical thrust 0E Screen low 16 Extra X speed
07 Colour 0F Screen high 17 Age
6240 1
Actor List End
First address after the last actor slot, where object walks stop. It also starts the 0120 bytes where ChangePlayer stores the inactive player's actor slots.
AA4B 80
Debris Particles
Sixteen 5-byte particle records used by AnimateDebris.