5488 bytes at
INITIAL_STATE are simply the whole runtime area -- $EA90 upwards --
as it looks before the game starts, copied into place with one LDIR. It holds
three empty records for the player, the weapon and the sound slot; 115 objects,
among them sixteen mushrooms and ten each of eight kinds of food; five monsters,
one each of the mummy, Dracula, the devil, Frankenstein's monster and the
humpback; and 274 sixteen-byte records, 205 doors and 69 pairs of furniture.
The doors are sixteen bytes each, not eight -- one record holding both sides.
The room lists prove it: of the 274, exactly 272 are named by two different
rooms, which is what a door joining two rooms looks like from the data. That
is also why DOOR_OTHER_SIDE flips bit 3 of an address rather than adding
anything: it is moving between the two halves of one record.
Two routines edit this template before it is copied,
PLACE_ACG_KEY and
PLACE_KEYS,
choosing rooms out of small tables using the frame counter. So the key pieces,
three of the keys and the mummy are somewhere different every game (except the
first after loading, which the frozen frame counter always sets out alike), and the randomness is applied to the
picture of the castle rather than to the castle itself.