Screen updates
There are two copies of the screen, one with the background graphics (stored at
5B00) and one
with moving objects and characters overlaid (
6B00).
The background buffer is usually left untouched after entering a room (but it can occasionally
be changed, see the routine in
B82B), but the moving objects buffer is updated
continuously as objects move around the screen, by copying the background layer and overlaying
everything in its current position.
Although this seems slow and redundant, it's not slow enough to make the game unplayable,
and it does solve the requirement of having to write code
that invalidates a specific part of the screen. The routine that puts sprites in the buffer
at
A83D also uses the stack for copying data. This is a
well-known trick
to make graphics updating faster.
Colours
The attributes for each playable character are stored in
BC85.
If you fancy drawing Wally in flashing cyan on mangenta, now you can!
(It's POKE BC85 , DD if you really must know...)
Miles out of town
The "out of town" screen at
F177 uses a simple 16-bit word at
F15B to store the number of miles walked.
Therefore if you've walked 65,535 miles and walk one more, the counter will reset to 0 and you'll be able
to get back into town in a single move.
(Note that 65,535 miles is approximately twice round the circumerence of the Earth.)
Shark
The shark in the sewer is treated as two separate moving objects stacked on top of each other,
with the movement and bounds tables set up to be contiguous.
To see the shark appear to move while sawn in half, try POKE F3A9 , 3
Hidden food
There's five hidden definitions of food in
F7FE that are not used because the terminating
symbol in the previous byte. (See
F7E9). They are the same as the regular definitions, but
in a different order.
To bring the extra food into play, copy everything from
F7FE - F811 down by one address
to F7FD then set F811 to FF to terminate the list.