Address Length Description
24064 1
Game Options
Holds the number of players and the chosen control method. Bit 0 is the player count, bits 1-2 are the control method.
Bits 1-2 Control Method
0 Keyboard
2 Kempston Joystick
4 Cursor Joystick
Bit 0 is reset for a 1UP game, or set for a 2UP game.
24068 2
Font Pointer
Holds a pointer to the currently used font data.
24070 3
High Score
3-byte representation of the score.
24073 23
High Score Table
Remaining 3-byte scores which follow High_Score. SetDefaults copies Default_High_Score over this whole table on initialisation.
24096 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.
24117 3
Hall Of Fame Last Name
Eighth name slot. InsertHighScore uses it as the LDDR source when opening a gap in the name table.
24120 8
Hall Of Fame Name End
Byte after the name table. InsertHighScore uses it as the LDDR destination.
24128 2
Random Number
Updated each game loop by adding a ROM byte, addressed by the low byte of GameTimer, to itself.
24130 14
Game Timer
Incremented once per game loop. The low byte indexes ROM when refreshing RandomNumber.
24144 2
Planet Data
Start of the in-play object RAM that StartGame clears up to Laser_Parameter_1.
24146 1
Frame Updated
Has the frame been updated?
0 No
1 Yes
24147 3
Last Frame
Holds a copy of the last FRAMES counter.
24150 1
Sprite Cached Y
Working copy of the actor's cached Y position (*IX+11), compared with the new Y when a sprite is redrawn. LoadSpritePointers uses it to hold the high byte of the cached screen address instead.
24151 1
Sprite Width
Width in character columns of the sprite being drawn. ColouriseSprite uses it as the column count when colouring the sprite.
24152 1
Sprite Height
Height in pixel rows of the sprite being drawn, kept so ColouriseSprite can work out how many attribute rows to colour.
24153 1
Sprite Rows Left
Rows of the new sprite image still to be drawn.
24154 3
Sprite Cached Rows
Rows of the old (cached) sprite image still to be erased. It is copied from *IX+10 and counted down while a sprite is redrawn.
24157 1
Space Key Latch
Set to 1 by TestSpaceKey when SPACE is first pressed, so holding the key only counts once. Cleared again when SPACE is released.
24158 1
Alien Count
Number of live aliens this frame. 33415 asks SpawnAlien to spawn another while this is less than 7.
24159 3
1UP Score
3-byte representation of the score.
24162 3
2UP Score
3-byte representation of the score.
24165 1
Active Player
Which player is currently active.
Value Player
0 1UP
255 2UP
24166 1
Current menu item colour attribute
Attribute of the menu line currently being printed. MenuWriteText fetches it when printing a line.
24167 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
64 1UP
127 2UP
The larger delay for a 2UP game is useful for swapping players controls.
24168 1
Teleport Restore
Set to 1 once a teleport has been set up. StartGame_ReadyStack then calls FinishTeleport to finish it with a debris burst, clearing the flag.
24169 1
Debris Count
Number of explosion particles still moving. The debris handlers loop until this returns to 0.
24170 2
Debris Y
Working Y used when filling explosion particles.
24172 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.
24173 2
Hall Of Fame Timer
Countdown used by the hall of fame input loop.
24175 1
Hall Of Fame Index
Current character position while entering a name.
24176 1
Hall Of Fame Fire Lock
Set after fire accepts a letter so the same press cannot advance again.
24177 1
High Score Player
Which player's score is being ranked: 1 for 1UP, 2 for 2UP.
24178 1
High Score Other Player
Non-zero while the other player's score still needs to be ranked after this insert.
24179 1
High Score Done
Set to 1 when name entry starts for the first-ranked player and cleared by ReturnToRestart. Nothing reads it.
24180 1
High Score Player Copy
Insert flag for CompareHighScores. Non-zero (set from HighScore_Player) makes it also insert the score into the table; 0 only returns the rank.
24181 2
Hall Of Fame Pointer
Screen address where the letter being edited is printed. It advances by two columns after each letter is accepted.
24183 1
High Score Position
Used when calculating the player's position in the high score table.
24184 3
Hall Of Fame Name
Three-letter name being entered. PrepareNameEntry seeds it as "AAA"; InsertHighScore copies it into the name table.
24187 1
Debris Pitch
Working pitch. SoundsDebris plays three clicks from this byte; the debris handlers increment or decrement it.
24188 36
Previous Game Options
Copy of GameOptions from the last menu pass, used to notice when the selection has changed.
24224 1
Active Player Level
Level of the active player. A value of 255 is treated as level 0 when Calculate_ActivePlayer_Level converts it to two digits. Swapped with InactivePlayer_Level by ChangePlayer.
24225 1
Active Player Lives
Lives the active player has left. Swapped with InactivePlayer_Lives by ChangePlayer.
24226 1
Level Parity
Bit 0 of the current level. FetchSprite and FetchActorSprite test it to decide whether to remap the sprite ID with MapSpriteBand.
24227 1
Rover Cargo Flag
0 when the rover is empty, 1 when an object is attached to it.
24228 1
Inactive Player Level
Level of the inactive player. A value of 255 is treated as level 0 when Calculate_InactivePlayer_Level converts it to two digits. Swapped with ActivePlayer_Level by ChangePlayer.
24229 1
Inactive Player Lives
Lives the inactive player has left. Swapped with ActivePlayer_Lives by ChangePlayer.
24230 1
Inactive Level Parity
Copy of LevelParity swapped in by ChangePlayer.
24231 1
Inactive Rover Cargo Flag
Copy of RoverCargoFlag swapped in by ChangePlayer.
24576 96
Laser Beam Parameters
Four 24-byte actor slots for the laser beams, in the same field order as Jetman_Slot. They are the first of the 24 actor slots, which run up to Actor_List_End. Every slot is laid out the same way:
Offset Contents
0 Type (the sprite ID)
1 Screen column
2-3 World X
4 Y
5 Horizontal speed
6 Vertical thrust
7 Colour
8 Flags
9-15 Sprite cache, cleared by ClearSpriteCaches
16-23 State specific to the actor type
24672 24
Explosion Slot
24-byte actor slot. InitialiseExplosion copies explosion templates here.
24696 22
Jetman Slot
24-byte actor slot for Jetman. The last two bytes are the fuel pair at FuelLevel_1.
24718 2
Fuel Level
16-bit fuel remaining. InitialiseJetman initialises it to 36864.
24720 24
Rover Slot
24-byte actor slot for the moon rover.
24744 96
World Slots
Four 24-byte actor slots before Object_Slot_1. The fields follow the same order as Jetman_Slot. FillDebrisSlots fills debris from here.
24840 120
Object Slots
Five 24-byte slots. ScanObjectSlots starts its scan here.
24960 24
Alien Base Slot
24-byte actor slot for the alien base, before the bomb slot. AlienBase_WorldX is its world X position and 24964 its Y position.
24984 24
Bomb Slot
24-byte actor slot for the thrown bomb. Handler_Bombs copies the bomb template here when the slot is empty.
25008 144
Alien States
There are a maximum of 6 aliens on the screen at one time. Each slot is 24 bytes and uses the same field order as Jetman_Slot.
Byte State Byte State Byte State
0 Type 8 Flags 16 Explode flag
1 Screen column 9 Pixel shift 17 Animation timer
2 World X (low) 10 Cached height 18 X wobble speed
3 World X (high) 11 Cached Y or width 19 X wobble
4 Y position 12 Graphic low 20 Y wobble speed
5 Horizontal speed 13 Graphic high 21 Y wobble
6 Vertical thrust 14 Screen low 22 Extra X speed
7 Colour 15 Screen high 23 Age
25152 1
Actor List End
First address after the last actor slot, where object walks stop. It also starts the 0288 bytes where ChangePlayer stores the inactive player's actor slots.
43595 80
Debris Particles
Sixteen 5-byte particle records used by AnimateDebris.