![]() |
Game status buffer |
| Address | Length | Description | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 38546 | 1 |
The options chosen on the game selection menu (see HandlerGameMenu).
|
||||||||||||||||||||
| 38547 | 2 |
A 16-bit counter which is incremented by UpdateCounters each time every actor has been processed.
|
||||||||||||||||||||
| 38549 | 1 |
An 8-bit pseudo-random seed. It is updated each time an actor handler is run (MainLoop_RunHandler) and once per pass of the actor table (UpdateCounters).
|
||||||||||||||||||||
| 38550 | 1 |
The value of FRAMES the last time MainLoop_NextActor saw a new frame.
|
||||||||||||||||||||
| 38551 | 1 |
Has the frame been updated? This is set by FrameUpdate and cleared by NextActor once the player's actor has been processed.
|
||||||||||||||||||||
| 38552 | 3 |
The score of player 1, held as three bytes with two BCD digits in each. The most significant byte is first.
|
||||||||||||||||||||
| 38555 | 3 |
The score of player 2, held as three bytes with two BCD digits in each. The most significant byte is first.
|
||||||||||||||||||||
| 38558 | 1 |
Which player is currently active.
|
||||||||||||||||||||
| 38559 | 1 |
The sprite ID of the actor that StoreEntity last saved. GetSpriteA uses it to find the sprite that has to be erased, together with the saved position and room.
|
||||||||||||||||||||
| 38560 | 1 |
The X position of the actor that StoreEntity last saved.
|
||||||||||||||||||||
| 38561 | 1 |
The Y position of the actor that StoreEntity last saved.
|
||||||||||||||||||||
| 38562 | 1 |
The room of the actor that StoreEntity last saved.
|
||||||||||||||||||||
| 38563 | 1 |
The number of rows of the old sprite that DisplayEntity has still to draw. It is set up by PrepDraw23, and is zero when there is no old sprite to erase (see DrawEntity).
|
||||||||||||||||||||
| 38564 | 1 |
The number of rows of the new sprite that DisplayEntity has still to draw. It is set up by PrepDraw2, and is zero when there is no new sprite to draw (see RemoveEntity).
|
||||||||||||||||||||
| 38565 | 1 |
The height in pixels of the new sprite. It is set up by PrepDraw2 and used by ColourEntity.
|
||||||||||||||||||||
| 38566 | 1 |
The number of character cells that each row of the new sprite covers. It is one more than the width of the sprite in bytes when the sprite does not start on a character boundary. It is set up by PrepDraw2 and used by ColourEntity.
|
||||||||||||||||||||
| 38568 | 1 |
The attribute of the line of the game selection menu that is being printed (see GameMenu and MenuWriteText).
|
||||||||||||||||||||
| 38569 | 2 |
The address of the actor being processed when a new frame started. See FrameUpdate and NextActor.
|
||||||||||||||||||||
| 38571 | 1 |
The room of the actor that MoveActor last moved, saved before it moves so that the room it was in is known if it changes room (see SaveOrchid).
|
||||||||||||||||||||
| 38572 | 1 |
The controls being pressed by the player, as read by HandlerControls (after the magenta orchid has reversed them). There is a bit for each of left (bit 0), right (bit 1), up (bit 2), down (bit 3) and fire (bit 4).
|
||||||||||||||||||||
| 38573 | 1 |
The width in pixels of the actor that is being moved. Each actor handler sets it before moving the actor with MoveActor and CalculateNewPosition, so that the actor can be kept on the screen.
|
||||||||||||||||||||
| 38574 | 1 |
The X position of the actor before it moved, saved by SlideActorPastObjects when it stops the actor moving through the objects in the room.
|
||||||||||||||||||||
| 38575 | 1 |
The Y position of the actor before it moved, saved by SlideActorPastObjects when it stops the actor moving through the objects in the room.
|
||||||||||||||||||||
| 38576 | 1 |
The time left of the effect of an orchid on the player, or zero if there is no effect. It is set by TestOrchidTouched (to 192) and HandlerYellowOrchid (to 96), and is counted down by HandlerOrchidTimer every other frame. When it reaches zero the player goes back to the normal colour. While it is below 47 the player flashes between the colour of the orchid and white.
|
||||||||||||||||||||
| 38577 | 1 |
A delay between nasties appearing. It is counted down by SpawnNastie each time every actor has been processed, and a new nastie can only start when it is zero. It is set to 16 at the start of a turn (see StartTurn) and when the player has died (see HandlePlayerDeath).
|
||||||||||||||||||||
| 38578 | 1 |
If this is not zero then DrawRoom_Process uses the second set of attributes of a graphic, if it has one, and resets this to zero. ShowAmulet sets it to draw the pieces of the amulet that have been collected in full colour.
|
||||||||||||||||||||
| 38579 | 1 |
Incremented by PlayFootstepSound each time a player moves. It times the sound of the footsteps.
|
||||||||||||||||||||
| 38580 | 1 |
A delay before a flame can start. It is counted down by SpawnFlame while the flame record at ImmortalData_SpareFlame is empty. It is set to 128 at the start of a turn, when the player has died and when the player moves to another room, and to 16 when a flame has been blown up (see BlowUpFlame).
|
||||||||||||||||||||
| 38581 | 1 |
At the beginning of each player turn there is a delay to allow the player to be ready for play.
|
||||||||||||||||||||
| 38582 | 1 |
The hundreds digit of the percentage of the jungle that has been explored, which is worked out by PrintRoomsVisited.
|
||||||||||||||||||||
| 38583 | 1 |
The game selection menu uses this to remember the options that it last saw (see HallOfFameCheck), so that the countdown to the hall of fame is restarted when the options change.
It is also used by PrintRoomsVisited to hold the tens and units digits of the percentage of the jungle that has been explored.
|
||||||||||||||||||||
| 38584 | 2 |
Counter for game selection screen, which tells the routine when to flip to display the Hall Of Fame (see HandlerHallOfFame).
|
||||||||||||||||||||
| 38586 | 1 |
Set to 1 when a score has been entered into the hall of fame, and cleared by NewHighScore. GameOver_ControllerRestart shows the hall of fame at the end of the game if it is set.
|
||||||||||||||||||||
| 38587 | 1 |
Used when calculating the players position in the high score table. It is the number of places that the score beat (see NewHighScore_Enter).
|
||||||||||||||||||||
| 38588 | 1 |
Purpose not yet known. It is cleared by InitialisePlayer and swapped with InactivePlayer_Unknown by ChangePlayer when the players change, but it is never read.
|
||||||||||||||||||||
| 38589 | 1 |
The number of lives of the active player.
|
||||||||||||||||||||
| 38590 | 1 |
The maximum number of nasties that can be in the room of the player at once, which is set by InitialisePlayer.
|
||||||||||||||||||||
| 38591 | 32 |
A bitmap of the rooms which the active player has visited, with a bit for each of the 0256 rooms (see VisitRoom).
|
||||||||||||||||||||
| 38623 | 1 |
The stored copy of ActivePlayer_Unknown for the player who is not playing.
|
||||||||||||||||||||
| 38624 | 1 |
The stored copy of ActivePlayer_Lives for the player who is not playing. A one player game leaves player 2 with no lives.
|
||||||||||||||||||||
| 38625 | 1 |
The stored copy of ActivePlayer_NastieLimit for the player who is not playing.
|
||||||||||||||||||||
| 38626 | 32 |
The stored copy of VisitedRooms for the player who is not playing.
|
||||||||||||||||||||
| 38658 | 144 |
The table of actors, which runs from here to StoredActorTable. Every actor is held in a 12 byte record, and MainLoop handles each record in turn, using the sprite ID to choose the handler (see JumpTable).
A record is made up of:
The first 12 records are the player and the actors which are always present, which are set up from InitialActors. They are followed by the nasties (NastieData), the orchid (OrchidData), the objects (ObjectData) and the pieces of the amulet (AmuletData).
|
||||||||||||||||||||
| 38802 | 72 |
The records of the six nasties. A nastie is started in an empty record by StartNastie.
|
||||||||||||||||||||
| 38874 | 12 |
The record of the orchid in the room the player is in. It is set up by LoadOrchid when the player enters a room and stored again by SaveOrchid when the player leaves.
|
||||||||||||||||||||
| 38886 | 24 |
The records of the two objects in the room the player is in, which are set up by SetUpRoomObjects.
|
||||||||||||||||||||
| 38910 | 48 |
The records of the four pieces of the amulet, which are set up by PlaceAmuletPieces when a game starts. A record has a sprite ID of zero once the piece has been collected.
|
||||||||||||||||||||
| 38958 | 300 |
The stored copy of the actor table at ImmortalData for the player who is not playing. The two are swapped by ChangePlayer when the players change.
|
||||||||||||||||||||
| 45828 | 42 |
Each high score slot uses 3-bytes for the score with the players initials.
Most other Ultimate games only hold the high score.
|
||||||||||||||||||||
| 61440 | 4096 |
The lookup table which is used to shift the pixels of a sprite, so it can be drawn at any pixel position. It is built by BuildShiftTable when a game is started and is used by the sprite drawing code (see PrepDraw23).
There are eight pairs of pages, one pair for each of the eight pixel offsets. In each pair the entry for a byte value holds that byte shifted left by the offset, as a 16-bit number: the low byte is in the page 255 - (2 * offset) and the high byte is in the page below it.
|