![]() |
Game status buffer |
Address | Length | Purpose | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32512 | 96 |
Screen refresh buffer
Used by the routines at 59861, 60032, 61630, 61696, 62368 and 64599. 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 59861 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 60032 ignores those bytes and starts inspecting SRB bytes at 32528 instead. Note also that the routine at 28357 uses the first 16 bytes of the SRB as a temporary backup store for the submessage indicator and submessage addresses at 32641, and the routine at 64618 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. |
|||||||||||||||||||||||||||||||
32608 | 33 |
Message buffer
|
|||||||||||||||||||||||||||||||
32641 | 16 |
Submessage indicator and message addresses
Used by the routine at 28357.
|
|||||||||||||||||||||||||||||||
32657 | 1 |
Unused
|
|||||||||||||||||||||||||||||||
32658 | 5 |
Message 2: '{number}'
|
|||||||||||||||||||||||||||||||
32663 | 2 |
Phone table entry address
Used by the routines at 30575 and 30627. Holds either the address of the second byte of the entry in the phone message table at 27467 or 27506 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 27506 (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 0 if no name is required to receive the message, or 255 if the person Sam's calling will respond with message 46 (I DUNNO NO {name}).
|
|||||||||||||||||||||||||||||||
32665 | 1 |
Time that Sam last lifted a ringing telephone
|
|||||||||||||||||||||||||||||||
32666 | 1 |
ID of the telephone that Sam is calling
|
|||||||||||||||||||||||||||||||
32667 | 1 |
Telephone call status flags
Used by the routines at 30198, 30458, 30575, 30675 and 31244.
|
|||||||||||||||||||||||||||||||
32668 | 2 |
Score
|
|||||||||||||||||||||||||||||||
32670 | 2 |
Bucks
|
|||||||||||||||||||||||||||||||
32672 | 2 |
Time the last message was displayed
Used by the routine at 28357. Holds the two least significant bytes of the system variable FRAMES as they were when the last message was displayed.
|
|||||||||||||||||||||||||||||||
32674 | 6 |
Blown fuse delay counters
|
|||||||||||||||||||||||||||||||
32680 | 1 |
Icon panel status flags
|
|||||||||||||||||||||||||||||||
32681 | 1 |
Main loop task timer
|
|||||||||||||||||||||||||||||||
32682 | 10 |
Door knock status flags
|
|||||||||||||||||||||||||||||||
32692 | 1 |
Blown fuse indicator
Used by the routine at 61948, which stores a non-zero value here if any fuses are currently blown.
|
|||||||||||||||||||||||||||||||
32693 | 1 |
Unused
|
|||||||||||||||||||||||||||||||
32694 | 1 |
Fuse flags
|
|||||||||||||||||||||||||||||||
32695 | 1 |
Index of the current message in the message queue
|
|||||||||||||||||||||||||||||||
32696 | 8 |
Message queue
|
|||||||||||||||||||||||||||||||
32704 | 4 |
Bullet buffer 1
|
|||||||||||||||||||||||||||||||
32708 | 4 |
Bullet buffer 2
|
|||||||||||||||||||||||||||||||
32712 | 1 |
Last value seen in the system variable FRAMES
|
|||||||||||||||||||||||||||||||
32713 | 1 |
Current disguise
|
|||||||||||||||||||||||||||||||
32714 | 6 |
Number string buffer
Used by the routine at 28186.
|
|||||||||||||||||||||||||||||||
32720 | 2 |
Message 1: '{tens digit}/{name}'
|
|||||||||||||||||||||||||||||||
32722 | 1 |
Message number to watch in the message queue
|
|||||||||||||||||||||||||||||||
32723 | 1 |
ID of the telephone Sam is holding
|
|||||||||||||||||||||||||||||||
32724 | 2 |
Time when the score was last incremented
Checked and set by the routine at 31414. Holds the value of the two least significant bytes of the system variable FRAMES as they were when the score was last incremented.
|
|||||||||||||||||||||||||||||||
32726 | 5 |
Unused
|
|||||||||||||||||||||||||||||||
32731 | 3 |
Location the police should head for when looking for Sam
|
|||||||||||||||||||||||||||||||
32734 | 2 |
Random number seed
Used by the routine at 61823.
|
|||||||||||||||||||||||||||||||
32736 | 7 |
Unused
Data is copied here from the game status buffer template at 65504, but is never used.
|
|||||||||||||||||||||||||||||||
32743 | 1 |
Bullet timer
Used by the routine at 26075.
|
|||||||||||||||||||||||||||||||
32744 | 1 |
Disguise status flags
|
|||||||||||||||||||||||||||||||
32745 | 1 |
Object inventory
|
|||||||||||||||||||||||||||||||
32746 | 1 |
Key inventory
|
|||||||||||||||||||||||||||||||
32747 | 1 |
Police flags
|
|||||||||||||||||||||||||||||||
32748 | 2 |
High score
|
|||||||||||||||||||||||||||||||
32750 | 1 |
Game mode indicator
Holds the current game mode (0-4). Checked by the routines at 29952 (using the event entry at 24544), 31126, 31414 and 61568, and updated by the routine at 63662.
|
|||||||||||||||||||||||||||||||
32751 | 1 |
Lives (first aid kits)
|
|||||||||||||||||||||||||||||||
32752 | 10 |
Door status flags
Used by the routines at 30396, 61764, 62099 and 62120. 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:
|
|||||||||||||||||||||||||||||||
32762 | 1 |
Input device indicator
|
|||||||||||||||||||||||||||||||
32763 | 1 |
Number of the character just moved (215-229)
Used by the routine at 61948.
|
|||||||||||||||||||||||||||||||
32764 | 1 |
Sam's status flags
Used by the routine at 29912 to decide how to deal with Sam.
|
|||||||||||||||||||||||||||||||
32765 | 1 |
Last key pressed
Set by the main loop at 61483, and checked by the routine at 60641. Holds the value from the keypress offset table corresponding to the last key pressed.
|
|||||||||||||||||||||||||||||||
32766 | 1 |
x-coordinate of the leftmost column of the play area on screen
|
|||||||||||||||||||||||||||||||
32767 | 1 |
y-coordinate of the topmost row of the play area on screen
|