![]() |
Object types |
Everything in a room but its lines and fills is an object: a twenty-byte record (KNIGHT has the layout) made from a type, a template for the type and a few bytes of the object table (OBJECTS) or of a room's drawing. PLACE_OBJECT copies the template's screen position, sprite size and sprite (+0 to +5) and its sizes (+9 to +11) into the record, and for the small types two more bytes: the movement kind (+14, what the object dispatcher CHE3D does with it) and +16 (nought for a thing that never moves, which is drawn once into the room's picture as it is entered; otherwise 16 plus its weight). The bytes after the type give +12 -- the thing's kind and flags, which say what it does -- and its place. The kind belongs to the object, not the type: one type can be a harmless thing in one room and a thing that restores LIFE in another.
57 types, 0-56, have 11-byte templates at $B734 (on the tape at $D2F0); 15, $46-$54, have 9-byte templates at $B9AA (on the tape at $D566). The large types are the doors: every one is kind 1, and its six more bytes say where the door leads (BUMPED). Types $39-$45 have no template: nothing uses them.
Each picture is drawn by the game: an object of the type made by PLACE_OBJECT in SkoolKit's simulator, standing on the floor at 100, 100, and drawn by REDRAW_OBJECT with no other object in the room, over a clean copy of zeros and again of ones, which separates the image from the solid part and the transparent. They are in the game's colours: the image black ink, the solid part paper -- the Spectrum's white here, a room's own colour in the game -- and the transparent part clear, on the page's blue-grey. Every picture was checked against the sprite's bytes. 7 small types have no sprite (10, 11, 12, 42, 43, 44, 47): they are invisible boxes a room puts where its drawing shows something solid -- a raised floor, a step, the side of a table drawn in lines -- so that the knight walks round it or on it. The sizes are the record's +9 to +11: along the floor one way, the height, along the floor the other way.
Where each type is used counts the object table's records and the objects rooms place in their drawings (directly or in a part), read from the tables. The kinds are the +12 values the type is given; what each means is read from the code (OBJECTS_MEET, MAIN_LOOP): the low nibble the kind, bit 4 hurts at a touch, bit 5 can be picked up, bit 6 can be killed by the sword, bit 7 a fighter. The names say what the pictures show; the game has no names for them.
No room and no record of the object table uses types $4D, $4F.
| Type template | As drawn | What it shows | Sprite | Sizes | What it does | Kinds (+12) | Where |
|---|---|---|---|---|---|---|---|
| 0 $D2F0 $B734 | ![]() | a long table | $7D00, 40 by 34 | 14, 14, 22 | lies still, and falls; weight 6 | $00 | 14 in the object table, 4 placed by rooms' drawings rooms 2, 20, 41, 43, 61, 69, 71, 72 |
| 1 $D2FB $B73F | a small crate | $801A, 24 by 20 | 10, 10, 10 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 0 in the object table, 7 placed by rooms' drawings rooms 15, 18, 33, 46 | |
| 2 $D306 $B74A | a chequered ball | $7E88, 24 by 21 | 10, 10, 10 | moves in a straight line, bouncing off what it meets; weight 0 | $10: hurts at a touch; $34: adds 10 to LIFE when used, hurts at a touch, can be picked up | 0 in the object table, 14 placed by rooms' drawings rooms 15, 19, 42, 53, 54, 62, 64, 65, 80 | |
| 3 $D311 $B755 | a stool | $7E54, 16 by 13 | 8, 8, 8 | lies still, and falls; weight 3 | $20: can be picked up | 20 in the object table rooms 2, 20, 43, 61, 71, 72 | |
| 4 $D31C $B760 | a shallow dish or a purse | $7F06, 24 by 14 | 12, 2, 12 | lies still, and falls; weight 1 | $20: can be picked up | 4 in the object table rooms 13, 71 | |
| 5 $D327 $B76B | a chest | $7F5A, 32 by 24 | 10, 10, 18 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 0 in the object table, 20 placed by rooms' drawings rooms 15, 16, 18, 19, 33, 45, 46, 48 | |
| 6 $D332 $B776 | a tub | $8092, 16 by 17 | 10, 11, 10 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 0 in the object table, 18 placed by rooms' drawings rooms 15, 18, 33 | |
| 7 $D33D $B781 | a framed picture | $82C2, 24 by 26 | 4, 16, 14 | lies still, and falls; weight 4 | $00 | 1 in the object table, 3 placed by rooms' drawings rooms 12, 37, 57 | |
| 8 $D348 $B78C | a barrel | $8198, 24 by 29 | 14, 22, 14 | lies still, and falls; weight 6 | $20: can be picked up | 24 in the object table rooms 2, 7, 23, 34, 44, 55, 57, 64 | |
| 9 $D353 $B797 | a round flask | $8246, 16 by 16 | 10, 14, 10 | lies still, and falls; weight 0 | $24: adds 10 to LIFE when used, can be picked up | 7 in the object table rooms 2, 20, 41, 49, 57 | |
| 10 $D35E $B7A2 | an invisible box | none | 100, 10, 60 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $02: a step (climbed along one axis); $03: a step (climbed along the other) | 0 in the object table, 185 placed by rooms' drawings rooms 2, 27, 34, 53, 54, 55, 57, 58, 59, 60, 64, 65, 66, 67, 77 | |
| 11 $D369 $B7AD | an invisible box | none | 128, 80, 80 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 0 in the object table, 4 placed by rooms' drawings rooms 7, 29, 45 | |
| 12 $D374 $B7B8 | an invisible box | none | 50, 80, 80 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 0 in the object table, 3 placed by rooms' drawings rooms 3, 45, 46 | |
| 13 $D37F $B7C3 | the troll | $8BB8, 24 by 38 | 14, 30, 14 | the troll: chases the knight; weight 6 | $D0: hurts at a touch, the sword can kill it, a fighter | 6 in the object table rooms 2, 5, 7, 17, 22, 27 | |
| 14 $D38A $B7CE | a key | $8286, 16 by 5 | 6, 2, 8 | lies still, and falls; weight 0 | $20: can be picked up | 6 in the object table rooms 20, 41, 46, 56, 61, 72 | |
| 15 $D395 $B7D9 | a small crown | $9F08, 16 by 13 | 10, 8, 10 | lies still, and falls; weight 2 | $20: can be picked up | 1 in the object table rooms 33 | |
| 16 $D3A0 $B7E4 | a round table | $875A, 24 by 17 | 10, 12, 10 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 0 in the object table, 6 placed by rooms' drawings rooms 13, 47, 48 | |
| 17 $D3AB $B7EF | a small lamp or bell | $829A, 16 by 10 | 8, 6, 8 | lies still, and falls; weight 4 | $28: a decoy for the rising guards, can be picked up | 5 in the object table rooms 7, 20, 75 | |
| 18 $D3B6 $B7FA | a flat square slab | $84D2, 40 by 18 | 14, 2, 14 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 1 in the object table, 42 placed by rooms' drawings rooms 9, 12, 13, 14, 17, 19, 20, 24, 28, 41, 45, 49, 50, 51, 56, 61, 69, 71, 75 | |
| 19 $D3C1 $B805 | an upright slab | $8586, 24 by 24 | 2, 16, 14 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 0 in the object table, 12 placed by rooms' drawings rooms 13, 14 | |
| 20 $D3CC $B810 | an upright slab, the other way | $8616, 24 by 24 | 14, 16, 2 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 0 in the object table, 15 placed by rooms' drawings rooms 13, 14, 48, 49, 50 | |
| 21 $D3D7 $B81B | a cross, lying down | $87C0, 24 by 8 | 10, 2, 14 | lies still, and falls; weight 0 | $25: freezes the room's creatures when used, can be picked up; $2A: destroys a wraith it falls on, can be picked up | 3 in the object table rooms 19, 48, 57 | |
| 22 $D3E2 $B826 | a suit of armour with a halberd | $835E, 24 by 41 | 12, 30, 12 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 2 in the object table, 4 placed by rooms' drawings rooms 37, 48, 70, 73 | |
| 23 $D3ED $B831 | a potted plant | $8454, 24 by 21 | 8, 16, 8 | lies still, and falls; weight 1 | $20: can be picked up | 3 in the object table rooms 49 | |
| 24 $D3F8 $B83C | a flat square slab | $84D2, 40 by 18 | 14, 2, 14 | lies still, and falls; weight 4 | $00 | 1 in the object table rooms 13 | |
| 25 $D403 $B847 | a goblet or a stand | $87F0, 16 by 24 | 8, 14, 8 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 8 in the object table, 8 placed by rooms' drawings rooms 20, 34, 49, 56, 61, 71 | |
| 26 $D40E $B852 | a guard | $9F3C, 24 by 26 | 10, 24, 10 | a guard: patrols along x, and chases the knight within 30; weight 4 | $C0: the sword can kill it, a fighter | 9 in the object table rooms 29, 36, 38, 73, 77, 78 | |
| 27 $D419 $B85D | a guard that rises from the floor, its helmet first | $A4B8, 24 by 26 | 10, 24, 10 | a guard that rises out of the floor, then chases the knight; weight 4 | $C0: the sword can kill it, a fighter | 9 in the object table rooms 15, 20, 34, 41, 43, 71, 72 | |
| 28 $D424 $B868 | a helmet | $A4B8, 24 by 26 | 10, 12, 10 | lies still, and falls; weight 2 | $20: can be picked up | 3 in the object table rooms 20, 26 | |
| 29 $D42F $B873 | a small bottle | $80D6, 16 by 10 | 6, 8, 6 | lies still, and falls; weight 0 | $26: makes LIFE 99 when used, can be picked up | 3 in the object table rooms 28, 44, 50 | |
| 30 $D43A $B87E | a loaf | $80FE, 16 by 9 | 6, 4, 12 | lies still, and falls; weight 0 | $24: adds 10 to LIFE when used, can be picked up | 3 in the object table rooms 41, 69 | |
| 31 $D445 $B889 | a small round thing | $8122, 16 by 10 | 8, 8, 8 | lies still, and falls; weight 0 | $24: adds 10 to LIFE when used, can be picked up | 2 in the object table rooms 20, 49 | |
| 32 $D450 $B894 | a flat bundle | $814A, 24 by 13 | 8, 4, 10 | lies still, and falls; weight 0 | $29: carries the knight to room 30 when used, can be picked up | 1 in the object table rooms 29 | |
| 33 $D45B $B89F | a guard | $9F3C, 24 by 26 | 10, 24, 10 | a guard: patrols along the other floor axis, and chases the knight within 30; weight 4 | $C0: the sword can kill it, a fighter | 10 in the object table rooms 16, 31, 33, 39, 40, 46, 60, 66 | |
| 34 $D466 $B8AA | an hourglass | $9B3C, 16 by 23 | 10, 16, 10 | lies still, and falls; weight 0 | $25: freezes the room's creatures when used, can be picked up | 4 in the object table rooms 24, 45, 56 | |
| 35 $D471 $B8B5 | a chain | $9B98, 8 by 24 | 4, 16, 4 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 0 in the object table, 2 placed by rooms' drawings rooms 69 | |
| 36 $D47C $B8C0 | a tall bottle | $9BC8, 8 by 24 | 4, 16, 4 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 0 in the object table, 2 placed by rooms' drawings rooms 69 | |
| 37 $D487 $B8CB | a figure lying down | $9BF8, 40 by 24 | 10, 8, 34 | lies still, and falls; weight 5 | $00 | 2 in the object table rooms 13, 14 | |
| 38 $D492 $B8D6 | the end of a bench | $9CE8, 24 by 24 | 22, 14, 4 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 0 in the object table, 8 placed by rooms' drawings rooms 41, 61, 71, 72 | |
| 39 $D49D $B8E1 | a bed | $9D78, 40 by 24 | 12, 6, 24 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 0 in the object table, 6 placed by rooms' drawings rooms 22, 23, 41, 61, 71, 72 | |
| 40 $D4A8 $B8EC | a small cloud | $6104, 16 by 10 | 12, 14, 12 | hangs in the air and flickers; weight 14 | $80: a fighter | 6 in the object table rooms 47, 48 | |
| 41 $D4B3 $B8F7 | a tall pole | $9EC8, 8 by 32 | 4, 30, 4 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 0 in the object table, 16 placed by rooms' drawings rooms 19, 28, 45, 51 | |
| 42 $D4BE $B902 | an invisible box | none | 80, 80, 70 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 1 in the object table, 8 placed by rooms' drawings rooms 3, 5, 6, 8, 11 | |
| 43 $D4C9 $B90D | an invisible box | none | 44, 80, 70 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 1 in the object table, 2 placed by rooms' drawings rooms 8, 10 | |
| 44 $D4D4 $B918 | an invisible box | none | 20, 80, 24 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 0 in the object table, 1 placed by rooms' drawings rooms 8 | |
| 45 $D4DF $B923 | the wraith | $5E88, 16 by 32 | 10, 30, 10 | the wraith: chases the knight; weight 8 | $80: a fighter | 9 in the object table rooms 9, 12, 28, 48, 56, 57, 58, 59, 68 | |
| 46 $D4EA $B92E | an upright slab | $8616, 24 by 24 | 14, 18, 2 | lies still, and falls; weight 6 | $00 | 1 in the object table rooms 48 | |
| 47 $D4F5 $B939 | an invisible slab | none | 180, 4, 180 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $07: kills at a touch | 0 in the object table, 2 placed by rooms' drawings rooms 9, 12 | |
| 48 $D500 $B944 | a flower with a face | $5C84, 24 by 24 | 12, 24, 12 | stays put and strikes the knight when he is in reach; weight 14 | $80: a fighter | 7 in the object table rooms 45, 46 | |
| 49 $D50B $B94F | a bush | $86A6, 24 by 24 | 14, 24, 14 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 10 in the object table rooms 3, 5, 8, 46, 51 | |
| 50 $D516 $B95A | a book | $5E34, 24 by 14 | 14, 4, 10 | lies still, and falls; weight 0 | $2B: wakes the figure in room 61, can be picked up | 1 in the object table rooms 14 | |
| 51 $D521 $B965 | a small hunched figure | $5B00, 8 by 8 | 10, 14, 10 | hangs in the air and flickers; weight 14 | $80: a fighter | 3 in the object table, 16 placed by rooms' drawings rooms 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 34, 35, 36, 37, 38, 39, 40, 70, 73 | |
| 52 $D52C $B970 | a ghost | $5B30, 16 by 23 | 10, 26, 10 | wanders diagonally, turning back off what it meets; weight 14 | $C0: the sword can kill it, a fighter | 10 in the object table rooms 3, 8, 28, 29, 32, 50, 51 | |
| 53 $D537 $B97B | a small flame | $5C44, 8 by 16 | 6, 10, 6 | lies still, and falls; weight 14 | $00 | 3 in the object table, 10 placed by rooms' drawings rooms 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 34, 39, 40 | |
| 54 $D542 $B986 | a small flame | $5C64, 8 by 16 | 6, 10, 6 | lies still, and falls; weight 14 | $00 | 0 in the object table, 6 placed by rooms' drawings rooms 35, 36, 37, 38, 70, 73 | |
| 55 $D54D $B991 | a black oval: a hole | $5F88, 48 by 21 | 30, 4, 30 | stays put: the dispatcher never updates it, and it is drawn into the room's picture as the room is entered | $00 | 2 in the object table rooms 49 | |
| 56 $D558 $B99C | a robed figure | $6084, 16 by 32 | 10, 30, 10 | stands still until the book lies in its room, then is a wraith; weight 8 | $80: a fighter | 1 in the object table rooms 61 |
Three have sprites: the two doorways, one for each way a wall runs, and the rim of a hole in the floor. The rest are invisible: openings the room's own lines draw (an arch, a gap), or holes and ladders up, their sizes the shape of the opening.
| Type template | As drawn | What it shows | Sprite | Sizes | Where |
|---|---|---|---|---|---|
| $46 (70) $D566 $B9AA | an invisible door | none | 2, 32, 22 | 22 in the object table rooms 2, 29, 34, 35, 42, 47, 49, 50, 53, 54, 55, 58, 59, 60, 63, 66, 67, 71, 72, 75, 76 | |
| $47 (71) $D56F $B9B3 | a doorway | $8954, 24 by 51 | 2, 32, 22 | 21 in the object table rooms 13, 29, 34, 37, 43, 47, 48, 50, 53, 54, 56, 57, 58, 59, 64, 65, 66, 68, 70, 73 | |
| $48 (72) $D578 $B9BC | an invisible door | none | 22, 32, 2 | 23 in the object table rooms 2, 20, 21, 25, 26, 28, 29, 41, 42, 43, 44, 45, 46, 47, 50, 57, 62, 63, 64, 65, 77, 78 | |
| $49 (73) $D581 $B9C5 | a doorway, facing the other way | $8A86, 24 by 51 | 22, 32, 2 | 20 in the object table rooms 14, 21, 22, 23, 24, 27, 38, 39, 40, 42, 48, 49, 53, 57, 62, 63, 69, 73, 77 | |
| $4A (74) $D58A $B9CE | an invisible door | none | 2, 100, 140 | 26 in the object table rooms 3, 6, 15, 16, 17, 18, 19, 21, 25, 26, 30, 31, 32, 33, 38, 39, 40, 45, 46, 74 | |
| $4B (75) $D593 $B9D7 | an invisible door | none | 140, 100, 2 | 26 in the object table rooms 3, 4, 5, 6, 7, 8, 10, 11, 17, 29, 30, 31, 32, 33, 35, 36, 37, 38, 70, 73, 78 | |
| $4C (76) $D59C $B9E0 | an invisible door | none | 40, 100, 2 | 2 in the object table rooms 26, 27 | |
| $4D (77) $D5A5 $B9E9 | an invisible door | none | 2, 100, 40 | nowhere | |
| $4E (78) $D5AE $B9F2 | an invisible door | none | 50, 2, 30 | 2 in the object table rooms 27, 34 | |
| $4F (79) $D5B7 $B9FB | an invisible door | none | 30, 2, 50 | nowhere | |
| $50 (80) $D5C0 $BA04 | an invisible door | none | 10, 2, 10 | 5 in the object table rooms 13, 51, 56, 61, 68 | |
| $51 (81) $D5C9 $BA0D | an invisible door | none | 2, 50, 30 | 20 in the object table rooms 4, 6, 7, 8, 9, 11, 12, 15, 18, 31, 33, 37, 46, 51, 52, 62 | |
| $52 (82) $D5D2 $BA16 | ![]() | the rim of a hole in the floor | $8850, 40 by 26 | 10, 2, 10 | 4 in the object table rooms 55, 60, 67, 80 |
| $53 (83) $D5DB $BA1F | an invisible door | none | 30, 50, 2 | 2 in the object table rooms 51, 52 | |
| $54 (84) $D5E4 $BA28 | an invisible door | none | 80, 2, 40 | 1 in the object table rooms 10 |