![]() |
Game status buffer |
Page | Byte | Address | Length | Description | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
127 | 0 | 7F00 | 96 |
Used by the routines at E9D5, EA80, F0BE, F100, F3A0 and FC57. Each byte of the screen refresh buffer (SRB) corresponds to a segment of 8 character squares on the screen, the leftmost of which will be at x=0, x=8, x=16 or x=24. Each bit set in an SRB byte corresponds to a character square in the segment that needs refreshing. Bit 7 corresponds to the leftmost character square in the segment, bit 0 to the rightmost character square.
Note that, owing to a quirk in the way the SRB-updating routine at E9D5 works, the first 16 bytes of the screen refresh buffer correspond not to any part of the screen, but to the four rows of the play area that are immediately above the currently visible portion of the play area. Therefore, the screen-updating routine at EA80 ignores those bytes and starts inspecting SRB bytes at 7F10 instead.
Note also that the routine at 6EC5 uses the first 16 bytes of the SRB as a temporary backup store for the submessage indicator and submessage addresses at 7F81, and the routine at FC6A uses the first 32 bytes of the SRB as a temporary store for the top row of attribute bytes when scrolling the screen up and down.
|
|||||||||||||||||||||||||||||||
127 | 96 | 7F60 | 33 | ||||||||||||||||||||||||||||||||
127 | 129 | 7F81 | 16 |
Used by the routine at 6EC5.
|
|||||||||||||||||||||||||||||||
127 | 145 | 7F91 | 1 |
|
|||||||||||||||||||||||||||||||
127 | 146 | 7F92 | 5 | ||||||||||||||||||||||||||||||||
127 | 151 | 7F97 | 2 |
Used by the routines at 776F and 77A3. Holds either the address of the second byte of the entry in the phone message table at 6B4B or 6B72 that corresponds to the phone that Sam is calling (if the person on the other end has a message for him) or picking up a call from, or the address of the final byte of the phone table at 6B72 (if the person Sam's calling has no message to give); this address contains the number of the message corresponding to the name that Sam must give in order to receive the telephone message, or 0x00 if no name is required to receive the message, or 0xFF if the person Sam's calling will respond with message 0x2E (I DUNNO NO {name}).
|
|||||||||||||||||||||||||||||||
127 | 153 | 7F99 | 1 | ||||||||||||||||||||||||||||||||
127 | 154 | 7F9A | 1 | ||||||||||||||||||||||||||||||||
127 | 155 | 7F9B | 1 |
|
|||||||||||||||||||||||||||||||
127 | 156 | 7F9C | 2 | ||||||||||||||||||||||||||||||||
127 | 158 | 7F9E | 2 | ||||||||||||||||||||||||||||||||
127 | 160 | 7FA0 | 2 |
Used by the routine at 6EC5. Holds the two least significant bytes of the system variable FRAMES as they were when the last message was displayed.
|
|||||||||||||||||||||||||||||||
127 | 162 | 7FA2 | 6 | ||||||||||||||||||||||||||||||||
127 | 168 | 7FA8 | 1 | ||||||||||||||||||||||||||||||||
127 | 169 | 7FA9 | 1 | ||||||||||||||||||||||||||||||||
127 | 170 | 7FAA | 10 | ||||||||||||||||||||||||||||||||
127 | 180 | 7FB4 | 1 |
Used by the routine at F1FC, which stores a non-zero value here if any fuses are currently blown.
|
|||||||||||||||||||||||||||||||
127 | 181 | 7FB5 | 1 |
|
|||||||||||||||||||||||||||||||
127 | 182 | 7FB6 | 1 | ||||||||||||||||||||||||||||||||
127 | 183 | 7FB7 | 1 | ||||||||||||||||||||||||||||||||
127 | 184 | 7FB8 | 8 | ||||||||||||||||||||||||||||||||
127 | 192 | 7FC0 | 4 | ||||||||||||||||||||||||||||||||
127 | 196 | 7FC4 | 4 | ||||||||||||||||||||||||||||||||
127 | 200 | 7FC8 | 1 | ||||||||||||||||||||||||||||||||
127 | 201 | 7FC9 | 1 | ||||||||||||||||||||||||||||||||
127 | 202 | 7FCA | 6 |
Used by the routine at 6E1A.
|
|||||||||||||||||||||||||||||||
127 | 208 | 7FD0 | 2 | ||||||||||||||||||||||||||||||||
127 | 210 | 7FD2 | 1 | ||||||||||||||||||||||||||||||||
127 | 211 | 7FD3 | 1 | ||||||||||||||||||||||||||||||||
127 | 212 | 7FD4 | 2 |
Checked and set by the routine at 7AB6. Holds the value of the two least significant bytes of the system variable FRAMES as they were when the score was last incremented.
|
|||||||||||||||||||||||||||||||
127 | 214 | 7FD6 | 5 |
|
|||||||||||||||||||||||||||||||
127 | 219 | 7FDB | 3 | ||||||||||||||||||||||||||||||||
127 | 222 | 7FDE | 2 |
Used by the routine at F17F.
|
|||||||||||||||||||||||||||||||
127 | 224 | 7FE0 | 7 |
Data is copied here from the game status buffer template at FFE0, but is never used.
|
|||||||||||||||||||||||||||||||
127 | 231 | 7FE7 | 1 |
Used by the routine at 65DB.
|
|||||||||||||||||||||||||||||||
127 | 232 | 7FE8 | 1 | ||||||||||||||||||||||||||||||||
127 | 233 | 7FE9 | 1 | ||||||||||||||||||||||||||||||||
127 | 234 | 7FEA | 1 | ||||||||||||||||||||||||||||||||
127 | 235 | 7FEB | 1 | ||||||||||||||||||||||||||||||||
127 | 236 | 7FEC | 2 | ||||||||||||||||||||||||||||||||
127 | 238 | 7FEE | 1 |
Holds the current game mode (0-4). Checked by the routines at 7500 (using the event entry at 5FE0), 7996, 7AB6 and F080, and updated by the routine at F8AE.
|
|||||||||||||||||||||||||||||||
127 | 239 | 7FEF | 1 | ||||||||||||||||||||||||||||||||
127 | 240 | 7FF0 | 10 |
Used by the routines at 76BC, F144, F293 and F2A8. In each flag byte here, bits 0-2 hold the door close delay timer (0 if the door is shut), and the set bit (if any) in bits 3-7 indicates the key that is required to unlock the door:
|
|||||||||||||||||||||||||||||||
127 | 250 | 7FFA | 1 | ||||||||||||||||||||||||||||||||
127 | 251 | 7FFB | 1 |
Used by the routine at F1FC.
|
|||||||||||||||||||||||||||||||
127 | 252 | 7FFC | 1 |
Used by the routine at 74D8 to decide how to deal with Sam.
|
|||||||||||||||||||||||||||||||
127 | 253 | 7FFD | 1 |
Set by the main loop at F02B, and checked by the routine at ECE1. Holds the value from the keypress offset table corresponding to the last key pressed.
|
|||||||||||||||||||||||||||||||
127 | 254 | 7FFE | 1 | ||||||||||||||||||||||||||||||||
127 | 255 | 7FFF | 1 |