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.