Page Byte Address Label Description
97 8 6108 font
The font
98 72 6248 room_size_tbl
Room shapes
98 81 6251 location_tbl
The rooms
98 107 626B room01
Room $01 (row 0, column 1): narrow in y, green
98 128 6280 room02
Room $02 (row 0, column 2): square, magenta
98 135 6287 room03
Room $03 (row 0, column 3): narrow in y, yellow
98 162 62A2 room04
Room $04 (row 0, column 4): square, cyan
98 182 62B6 room08
Room $08 (row 0, column 8): square, magenta
98 209 62D1 room09
Room $09 (row 0, column 9): square, yellow
98 221 62DD room0A
Room $0A (row 0, column 10): square, magenta
98 247 62F7 room0B
Room $0B (row 0, column 11): square, yellow
98 254 62FE room0C
Room $0C (row 0, column 12): square, magenta
99 22 6316 room0D
Room $0D (row 0, column 13): square, green
99 29 631D room0E
Room $0E (row 0, column 14): narrow in y, cyan
99 41 6329 room0F
Room $0F (row 0, column 15): square, green
99 70 6346 room10
Room $10 (row 1, column 0): narrow in x, cyan
99 95 635F room12
Room $12 (row 1, column 2): narrow in x, green
99 120 6378 room14
Room $14 (row 1, column 4): narrow in x, yellow
99 147 6393 room18
Room $18 (row 1, column 8): narrow in x, cyan
99 165 63A5 room1D
Room $1D (row 1, column 13): narrow in x, yellow
99 193 63C1 room1F
Room $1F (row 1, column 15): narrow in x, magenta
99 217 63D9 room20
Room $20 (row 2, column 0): square, magenta
99 236 63EC room21
Room $21 (row 2, column 1): narrow in y, yellow
100 9 6409 room22
Room $22 (row 2, column 2): square, magenta
100 36 6424 room24
Room $24 (row 2, column 4): square, magenta
100 61 643D room27
Room $27 (row 2, column 7): square, yellow
100 77 644D room28
Room $28 (row 2, column 8): narrow in x, yellow
100 94 645E room2D
Room $2D (row 2, column 13): square, green
100 118 6476 room2E
Room $2E (row 2, column 14): narrow in y, cyan
100 136 6488 room2F
Room $2F (row 2, column 15): square, green
100 143 648F room30
Room $30 (row 3, column 0): narrow in x, cyan
100 166 64A6 room34
Room $34 (row 3, column 4): narrow in x, yellow
100 191 64BF room37
Room $37 (row 3, column 7): narrow in x, cyan
100 205 64CD room38
Room $38 (row 3, column 8): narrow in x, magenta
100 231 64E7 room3F
Room $3F (row 3, column 15): square, magenta
101 1 6501 room40
Room $40 (row 4, column 0): square, yellow
101 21 6515 room41
Room $41 (row 4, column 1): narrow in y, green
101 45 652D room42
Room $42 (row 4, column 2): square, cyan
101 67 6543 room43
Room $43 (row 4, column 3): narrow in y, yellow
101 95 655F room44
Room $44 (row 4, column 4): square, green
101 103 6567 room45
Room $45 (row 4, column 5): square, cyan
101 133 6585 room46
Room $46 (row 4, column 6): narrow in y, yellow
101 162 65A2 room47
Room $47 (row 4, column 7): square, magenta
101 169 65A9 room48
Room $48 (row 4, column 8): narrow in x, yellow
101 193 65C1 room4F
Room $4F (row 4, column 15): square, yellow
101 215 65D7 room54
Room $54 (row 5, column 4): narrow in x, cyan
101 238 65EE room57
Room $57 (row 5, column 7): narrow in x, cyan
102 3 6603 room58
Room $58 (row 5, column 8): narrow in x, cyan
102 15 660F room5E
Room $5E (row 5, column 14): square, yellow
102 34 6622 room5F
Room $5F (row 5, column 15): square, magenta
102 41 6629 room64
Room $64 (row 6, column 4): narrow in x, yellow
102 60 663C room67
Room $67 (row 6, column 7): narrow in x, green
102 79 664F room68
Room $68 (row 6, column 8): narrow in x, magenta
102 105 6669 room6A
Room $6A (row 6, column 10): square, yellow
102 111 666F room6B
Room $6B (row 6, column 11): narrow in y, green
102 129 6681 room6C
Room $6C (row 6, column 12): narrow in y, magenta
102 154 669A room6D
Room $6D (row 6, column 13): square, yellow
102 178 66B2 room6E
Room $6E (row 6, column 14): square, magenta
102 186 66BA room6F
Room $6F (row 6, column 15): square, yellow
102 207 66CF room74
Room $74 (row 7, column 4): square, green
102 232 66E8 room75
Room $75 (row 7, column 5): narrow in y, magenta
102 247 66F7 room76
Room $76 (row 7, column 6): narrow in y, yellow
103 14 670E room77
Room $77 (row 7, column 7): square, magenta
103 22 6716 room78
Room $78 (row 7, column 8): square, green
103 48 6730 room79
Room $79 (row 7, column 9): narrow in y, magenta
103 71 6747 room7A
Room $7A (row 7, column 10): square, cyan
103 94 675E room83
Room $83 (row 8, column 3): square, yellow
103 100 6764 room84
Room $84 (row 8, column 4): narrow in y, cyan
103 124 677C room85
Room $85 (row 8, column 5): narrow in y, green
103 150 6796 room86
Room $86 (row 8, column 6): narrow in y, magenta
103 162 67A2 room87
Room $87 (row 8, column 7): square, cyan
103 187 67BB room88
Room $88 (row 8, column 8): square, yellow
103 207 67CF room89
Room $89 (row 8, column 9): narrow in y, cyan
103 228 67E4 room8A
Room $8A (row 8, column 10): narrow in y, magenta
103 253 67FD room8B
Room $8B (row 8, column 11): square, cyan
104 4 6804 room8C
Room $8C (row 8, column 12): narrow in y, green
104 30 681E room8D
Room $8D (row 8, column 13): square, cyan
104 57 6839 room8E
Room $8E (row 8, column 14): narrow in y, magenta
104 70 6846 room8F
Room $8F (row 8, column 15): square, yellow
104 76 684C room93
Room $93 (row 9, column 3): narrow in x, green
104 97 6861 room97
Room $97 (row 9, column 7): narrow in x, green
104 114 6872 room98
Room $98 (row 9, column 8): narrow in x, magenta
104 141 688D room9B
Room $9B (row 9, column 11): narrow in x, magenta
104 165 68A5 room9F
Room $9F (row 9, column 15): narrow in x, cyan
104 190 68BE roomA3
Room $A3 (row 10, column 3): narrow in x, magenta
104 219 68DB roomA7
Room $A7 (row 10, column 7): square, magenta
104 225 68E1 roomA8
Room $A8 (row 10, column 8): square, yellow
104 250 68FA roomAA
Room $AA (row 10, column 10): square, magenta
105 19 6913 roomAB
Room $AB (row 10, column 11): square, green
105 26 691A roomAF
Room $AF (row 10, column 15): narrow in x, green
105 41 6929 roomB3
Room $B3 (row 11, column 3): square, yellow
105 48 6930 roomB4
Room $B4 (row 11, column 4): square, green
105 68 6944 roomB7
Room $B7 (row 11, column 7): narrow in x, green
105 83 6953 roomBA
Room $BA (row 11, column 10): square, cyan
105 109 696D roomBB
Room $BB (row 11, column 11): square, yellow
105 121 6979 roomBF
Room $BF (row 11, column 15): square, magenta
105 151 6997 roomC3
Room $C3 (row 12, column 3): narrow in x, magenta
105 172 69AC roomC7
Room $C7 (row 12, column 7): square, cyan
105 184 69B8 roomCF
Room $CF (row 12, column 15): narrow in x, green
105 195 69C3 roomD0
Room $D0 (row 13, column 0): square, cyan
105 221 69DD roomD1
Room $D1 (row 13, column 1): narrow in y, green
105 239 69EF roomD2
Room $D2 (row 13, column 2): square, cyan
106 5 6A05 roomD3
Room $D3 (row 13, column 3): narrow in x, cyan
106 24 6A18 roomD6
Room $D6 (row 13, column 6): square, yellow
106 46 6A2E roomD7
Room $D7 (row 13, column 7): square, magenta
106 61 6A3D roomD8
Room $D8 (row 13, column 8): square, magenta
106 68 6A44 roomD9
Room $D9 (row 13, column 9): square, yellow
106 74 6A4A roomDD
Room $DD (row 13, column 13): square, yellow
106 95 6A5F roomDE
Room $DE (row 13, column 14): narrow in y, magenta
106 101 6A65 roomDF
Room $DF (row 13, column 15): square, yellow
106 124 6A7C roomE0
Room $E0 (row 14, column 0): narrow in x, yellow
106 142 6A8E roomE2
Room $E2 (row 14, column 2): narrow in x, yellow
106 165 6AA5 roomE3
Room $E3 (row 14, column 3): narrow in x, yellow
106 193 6AC1 roomE6
Room $E6 (row 14, column 6): square, magenta
106 201 6AC9 roomE7
Room $E7 (row 14, column 7): square, yellow
106 219 6ADB roomE8
Room $E8 (row 14, column 8): square, yellow
106 242 6AF2 roomE9
Room $E9 (row 14, column 9): square, magenta
106 249 6AF9 roomED
Room $ED (row 14, column 13): narrow in x, green
107 14 6B0E roomEF
Room $EF (row 14, column 15): narrow in x, cyan
107 20 6B14 roomF0
Room $F0 (row 15, column 0): square, cyan
107 48 6B30 roomF1
Room $F1 (row 15, column 1): narrow in y, magenta
107 59 6B3B roomF2
Room $F2 (row 15, column 2): square, cyan
107 66 6B42 roomF3
Room $F3 (row 15, column 3): square, magenta
107 90 6B5A roomF6
Room $F6 (row 15, column 6): square, yellow
107 110 6B6E roomF7
Room $F7 (row 15, column 7): square, magenta
107 132 6B84 roomF8
Room $F8 (row 15, column 8): square, magenta
107 140 6B8C roomF9
Room $F9 (row 15, column 9): square, yellow
107 160 6BA0 roomFD
Room $FD (row 15, column 13): square, yellow
107 178 6BB2 roomFE
Room $FE (row 15, column 14): narrow in y, magenta
107 197 6BC5 roomFF
Room $FF (row 15, column 15): square, yellow
107 209 6BD1 block_type_tbl
Block types
108 11 6C0B block
Block type 0: stone block
108 18 6C12 block_high
Block type 11: stone block, raised
108 25 6C19 block_ew
Block type 14: stone block (type $36)
108 32 6C20 block_ns
Block type 15: stone block (type $37)
108 39 6C27 moveable_block
Block type 16: stone block (type $3E)
108 46 6C2E dropping_block
Block type 21: stone block (type $5B)
108 53 6C35 collapsing_block
Block type 22: stone block (type $8F)
108 60 6C3C fire
Block type 1: fire (type $B0)
108 67 6C43 ball_ud_y
Block type 2: ball, half a cell along y
108 74 6C4A ball_ud_xy
Block type 12: ball, half a cell along x and y
108 81 6C51 ball_ud
Block type 24: ball
108 88 6C58 ball_ud_x
Block type 28: ball, half a cell along x
108 95 6C5F ball_bounce
Block type 23: ball (type $B6)
108 102 6C66 rock
Block type 3: rock
108 109 6C6D gargoyle
Block type 4: gargoyle
108 116 6C74 spike
Block type 5: spikes
108 123 6C7B spike_high
Block type 17: spikes, raised
108 130 6C82 spike_ball_fall
Block type 18: spiked ball
108 137 6C89 spike_ball_high_fall
Block type 19: spiked ball, raised
108 144 6C90 chest
Block type 6: chest
108 151 6C97 table
Block type 7: table
108 158 6C9E guard_ew
Block type 8: guard (type $96)
108 171 6CAB guard_square
Block type 13: guard (type $1E)
108 184 6CB8 ghost
Block type 9: ghost
108 191 6CBF fire_ns
Block type 10: fire (type $B5)
108 198 6CC6 fire_ew
Block type 20: fire (type $56)
108 205 6CCD repel_spell
Block type 25: sparkle (type $A4)
108 212 6CD4 portcullis_along_x
Block type 26: portcullis along x
108 219 6CDB portcullis_along_y
Block type 27: portcullis along y
108 226 6CE2 background_type_tbl
Backgrounds
109 18 6D12 arch_n
Background 0: arch in the north side
109 35 6D23 arch_e
Background 1: arch in the east side
109 52 6D34 high_arch_e
Background 20: high arch in the east side
109 69 6D45 arch_s
Background 2: arch in the south side
109 86 6D56 high_arch_s
Background 21: high arch in the south side
109 103 6D67 arch_w
Background 3: arch in the west side
109 120 6D78 tree_arch_n
Background 4: forest exit, north
109 137 6D89 tree_arch_e
Background 5: forest exit, east
109 154 6D9A tree_arch_s
Background 6: forest exit, south
109 171 6DAB tree_arch_w
Background 7: forest exit, west
109 188 6DBC gate_n
Background 8: portcullis in the north doorway
109 197 6DC5 gate_e
Background 9: portcullis in the east doorway
109 206 6DCE gate_s
Background 10: portcullis in the south doorway
109 215 6DD7 gate_w
Background 11: portcullis in the west doorway
109 224 6DE0 walls_square
Background 12: walls of a square room
110 73 6E49 walls_narrow_y
Background 13: walls of a room narrow in y
110 186 6EBA walls_narrow_x
Background 14: walls of a room narrow in x
111 43 6F2B tree_walls
Background 15: the trees round a forest room
111 140 6F8C tree_filler_w
Background 16: trees closing the west gap
111 157 6F9D tree_filler_n
Background 17: trees closing the north gap
111 174 6FAE wizard
Background 18: the wizard
111 191 6FBF cauldron
Background 19: the cauldron
111 208 6FD0 high_arch_e_base
Background 22: step up to the high east arch
111 225 6FE1 high_arch_s_base
Background 23: step up to the high south arch
111 242 6FF2 special_objs_tbl
Where the charms lie
113 18 7112 sprite_tbl
Sprite for each object type
114 138 728A spr_nul
No sprite; the sprite format
114 140 728C spr_000
Sun and moon window, left end
115 72 7348 spr_001
Sun and moon window, right end
116 4 7404 spr_002
Spikes
116 230 74E6 spr_003
Spiked ball
117 176 75B0 spr_004
Guard's body, second frame
118 60 763C spr_005
Guard's body, first frame
118 200 76C8 spr_006
Ball, first frame
119 60 773C spr_007
Ball, second frame
119 170 77AA spr_008
Rock
120 148 7894 spr_009
Gargoyle
121 38 7926 spr_010
Fire, first frame
121 100 7964 spr_011
Fire, second frame
121 166 79A6 spr_012
Wizard's body, second frame
122 146 7A92 spr_013
Wizard's body, first frame
123 90 7B5A spr_014
Screen border, corner
124 92 7C5C spr_015
Screen border, one line of a side
124 100 7C64 spr_016
Screen border, one column of the top and bottom
124 150 7C96 spr_017
Status panel scroll, rolled end
125 152 7D98 filler
Twelve unused bytes
125 164 7DA4 spr_018
Status panel scroll, curl
125 230 7DE6 spr_019
Status panel scroll, slanting edge
126 8 7E08 spr_020
Stone block
126 234 7EEA spr_021
Extra-life charm and lives icon
127 48 7F30 spr_022
Charm, type $62
127 176 7FB0 spr_023
Tree trunk beside a forest exit, first
128 162 80A2 spr_024
Tree trunk beside a forest exit, second
129 100 8164 spr_025
Sparkle, size 1 of 6
129 222 81DE spr_026
Sparkle, size 2 of 6
130 94 825E spr_027
Sparkle, size 3 of 6
130 234 82EA spr_028
Sparkle, size 4 of 6
131 124 837C spr_029
Sparkle, size 5 of 6
132 14 840E spr_030
Sparkle, size 6 of 6
132 160 84A0 spr_031
Charm, type $60
133 20 8514 spr_032
Charm, type $61
133 154 859A spr_033
Charm, type $63
134 38 8626 spr_034
Charm, type $64
134 148 8694 spr_035
Charm, type $65
135 38 8726 spr_036
Charm, type $66
135 166 87A6 spr_037
Sun
135 232 87E8 spr_038
Moon
136 42 882A spr_039
Ghost, frame 1
136 164 88A4 spr_040
Ghost, frame 2
137 24 8918 spr_041
Ghost, frame 3
137 146 8992 spr_042
Ghost, frame 4
138 12 8A0C spr_043
Portcullis
139 10 8B0A spr_044
Chest
139 244 8BF4 spr_045
Table
140 238 8CEE spr_046
Sabreman's head and shoulders, view A, frame 3
141 128 8D80 spr_047
Sabreman's head and shoulders, view B, frame 2
142 24 8E18 spr_048
Sabreman's head and shoulders, view A, occasional frame
142 176 8EB0 spr_049
Sabreman's head and shoulders, view A, frame 4
143 66 8F42 spr_050
Sabreman's head and shoulders, view A, frame 1
143 212 8FD4 spr_051
Sabreman's head and shoulders, view A, frame 2
144 102 9066 spr_052
Sabreman's head and shoulders, view B, frame 1
144 254 90FE spr_053
Sabreman's head and shoulders, view B, frame 4
145 150 9196 spr_054
Sabreman's head and shoulders, view B, frame 3
146 46 922E spr_055
Legs, view A, frame 1
146 144 9290 spr_056
Legs, view A, frame 2
146 242 92F2 spr_057
Legs, view A, frame 3
147 84 9354 spr_058
Legs, view A, frame 4
147 182 93B6 spr_059
Legs, view B, frame 1
148 24 9418 spr_060
Legs, view B, frame 2
148 122 947A spr_061
Legs, view B, frame 3
148 220 94DC spr_062
Legs, view B, frame 4
149 62 953E spr_063
Sabreman's head and shoulders, view A, second occasional frame
149 208 95D0 spr_064
Sabreman's head and shoulders, view B, second occasional frame
150 104 9668 spr_065
Sabreman's head and shoulders, view B, occasional frame
151 0 9700 spr_066
Tree, first kind
151 194 97C2 spr_067
Tree, second kind
152 132 9884 spr_068
Tree, third kind
153 70 9946 spr_069
Wall column, west wall
154 8 9A08 spr_070
Wall column, north wall
154 202 9ACA spr_071
Arch, first piece
156 4 9C04 spr_072
Arch, second piece
156 146 9C92 spr_073
Wall end
157 84 9D54 spr_074
Cauldron
158 94 9E5E spr_075
Cauldron's top
158 184 9EB8 spr_076
Wall slab, long
159 180 9FB4 spr_077
Wall slab, medium
160 70 A046 spr_078
Wall slab, short
160 180 A0B4 spr_079
Werewulf's legs, view A, frame 1
161 22 A116 spr_080
Werewulf's legs, view A, frame 2
161 120 A178 spr_081
Werewulf's legs, view A, frame 3
161 218 A1DA spr_082
Werewulf's legs, view A, frame 4
162 60 A23C spr_083
Werewulf's legs, view B, frame 1
162 158 A29E spr_084
Werewulf's legs, view B, frame 2
163 0 A300 spr_085
Werewulf's legs, view B, frame 3
163 98 A362 spr_086
Werewulf's legs, view B, frame 4
163 196 A3C4 spr_087
Werewulf's head and shoulders, view A, frame 1
164 116 A474 spr_088
Werewulf's head and shoulders, view A, frame 2
165 36 A524 spr_089
Werewulf's head and shoulders, view A, frame 3
165 212 A5D4 spr_090
Werewulf's head and shoulders, view A, frame 4
166 132 A684 spr_091
Werewulf's head and shoulders, view B, frame 4
167 58 A73A spr_092
Werewulf's head and shoulders, view B, frame 3
167 240 A7F0 spr_093
Werewulf's head and shoulders, view B, frame 2
168 166 A8A6 spr_094
Werewulf's head and shoulders, view B, frame 1
169 92 A95C spr_095
Werewulf's head and shoulders, view A, occasional frame
170 12 AA0C spr_096
Werewulf's head and shoulders, view A, second occasional frame
170 188 AABC spr_097
Werewulf's head and shoulders, view B, occasional frame
171 114 AB72 spr_098
Werewulf's head and shoulders, view B, second occasional frame
172 40 AC28 spr_099
Transformation, frame 1
172 234 ACEA spr_100
Transformation, frame 2
173 178 ADB2 spr_101
Transformation, frame 3
174 152 AE98 spr_102
Transformation, frame 4
175 108 AF6C START
Cold start
175 127 AF7F start_menu
Restart after a game
175 136 AF88 main
Set up and play
175 183 AFB7 player_dies
Start a life
175 186 AFBA game_loop
Enter a room
175 189 AFBD onscreen_loop
Walk the object table
175 199 AFC7 update_sprite_loop
Next object
175 213 AFD5 jump_to_upd_object
Dispatch on object type
175 219 AFDB jump_to_tbl_entry
Jump through a table of addresses
175 228 AFE4 ret_from_tbl_jp
One object done
176 0 B000 end_of_frame
End of frame
176 53 B035 game_delay
Wait one unit
176 56 B038 delay_loop
Frame delay loop
176 63 B03F no_delay
Redraw the whole screen on entering a room
176 116 B074 next_frame_or_die
Next frame, or lose a life
176 136 B088 reset_objs_wipe_flag
Clear every object's wipe flag
176 144 B090 clear_wipe_flag_loop
Clear one wipe flag
176 150 B096 upd_sprite_jmp_tbl
Object handlers, indexed by type
178 14 B20E start_game_tune
The tune played as a game starts
178 24 B218 game_over_tune
The game-over tune
178 57 B239 game_complete_tune
The tune for completing the game
178 83 B253 menu_tune
The menu tune
178 182 B2B6 play_audio_wait_key
Play the menu tune once per visit
178 190 B2BE play_audio_until_keypress
Play a tune until a key is pressed
178 197 B2C5 keypress_tune_note
Play one note of a tune that a key can stop
178 207 B2CF play_audio
Play a tune
178 217 B2D9 end_audio
End of a tune
178 218 B2DA play_note
Play one note
178 249 B2F9 calc_duration
Multiply the waves by the length
178 255 B2FF restore_tune_ptr
Restore the tune pointer
179 0 B300 note_wave
One wave
179 4 B304 note_first_half
First half-wave
179 15 B30F note_second_half
Second half-wave
179 28 B31C snd_delay
Rest
179 39 B327 rest_unit
One unit of rest
179 40 B328 rest_countdown
Rest countdown
179 50 B332 freq_tbl
Note table
179 233 B3E9 sound_movable_block
Sound: the movable block's blip
179 251 B3FB block_blip_pitches
Pitches for the movable block's blip
180 3 B403 sound_sparkle
Sound: sparkle
180 13 B40D sparkle_blip
One blip of the sparkle
180 25 B419 sound_materialise
Sound: materialising
180 35 B423 materialise_sweep
One step of the materialising sweep
180 46 B42E sound_thud
Sound: thud
180 51 B433 thud_blip
One blip of the thud
180 65 B441 sound_jump
Sound: jump
180 67 B443 jump_sweep
One step of the jump sweep
180 81 B451 sound_pitch_from_z
Sound: a note pitched by height
180 84 B454 sound_pitch_from_a
Sound: a note pitched by A
180 93 B45D sound_pitch_from_x
Sound: a note pitched by X
180 98 B462 sound_pitch_from_y
Sound: a note pitched by Y
180 103 B467 sound_pitch_from_xyz
Sound: a note pitched by position
180 114 B472 sound_transform
Sound: changing between man and werewolf
180 125 B47D transform_warble
One step of the warble
180 137 B489 sound_portcullis_crash
Sound: the portcullis lands
180 149 B495 crash_blip
One blip of the crash
180 163 B4A3 toggle_audio_hw_x16
Sound: a plain beep of 16 waves
180 168 B4A8 toggle_audio_hw_x24
Sound: a plain beep of 24 waves
180 173 B4AD audio_guard_wizard
Sound: a guard's or the wizard's footstep
180 187 B4BB sound_walk_step
Sound: Sabreman's footstep while walking
180 193 B4C1 sound_footstep
Sound: Sabreman's footstep
180 198 B4C6 footstep_pitch
Footstep pitch
180 209 B4D1 footstep_length
Footstep length
180 230 B4E6 toggle_audio_hw_xC
Sound: C waves at one pitch
180 237 B4ED toggle_audio_hw
Sound: one wave
180 242 B4F2 speaker_on_wait
First half of the wave
180 249 B4F9 speaker_off_wait
Second half of the wave
180 253 B4FD do_any_objs_intersect
Does this object overlap any other?
181 16 B510 overlap_test_obj
Test one object for overlap
181 36 B524 overlap_done
Overlap found, or none
181 46 B52E overlap_next_obj
Next object
181 56 B538 is_object_not_ignored
Does this object take part in collisions?
181 68 B544 shuffle_objects_required
Rotate the list of objects the cauldron wants
181 76 B54C rotate_wanted_once
Rotate once
181 85 B555 rotate_wanted_entry
Move one entry down
181 102 B566 upd_131_to_133
Handler: the finale sparks (types 131 to 133)
181 139 B58B dX_dY_tbl
Finale spark directions, by quarter of the room
181 147 B593 p4_m4
Spark direction: dX -4, dY +4
181 150 B596 save_dX_dY
Store the spark's direction and pick a frame
181 164 B5A4 set_spark_frame
Set the spark's frame
181 169 B5A9 spark_tone_and_move
Leave the spark's height for the finale tone
181 175 B5AF dec_dZ_wipe_and_draw
Move under gravity and flag for redrawing
181 181 B5B5 p4_p4
Spark direction: dX +4, dY +4
181 186 B5BA m4_m4
Spark direction: dX -4, dY -4
181 191 B5BF m4_p4
Spark direction: dX +4, dY -4
181 196 B5C4 spark_near_player
Is the spark near Sabreman?
181 207 B5CF spark_check_y
Near on X; and on Y?
181 222 B5DE spark_touch
Near on X; near on Y?
181 227 B5E3 spark_home_in
Fly at Sabreman
181 247 B5F7 read_port
Read one or more keyboard half-rows
181 255 B5FF upd_182_183
Bouncing ball (types 182 and 183)
182 38 B626 bounce_ball_set_sense
Bouncing ball: set the chase direction and the bounce height
182 60 B63C bounce_ball_on_landing
Bouncing ball: on landing, bounce
182 79 B64F bounce_ball_pick_axis
Bouncing ball: choose X or Y and compare with the player
182 93 B65D bounce_ball_y_sense
Bouncing ball: the patched jump for Y
182 97 B661 bounce_ball_set_dy
Bouncing ball: head along Y
182 104 B668 bounce_ball_animate
Bouncing ball: animate and draw
182 110 B66E bounce_ball_x_axis
Bouncing ball: compare X with the player
182 118 B676 bounce_ball_x_sense
Bouncing ball: the patched jump for X
182 122 B67A bounce_ball_set_dx
Bouncing ball: head along X
182 131 B683 upd_91
Dropping block (type 91)
182 159 B69F drop_block_draw
Dropping block: draw
182 162 B6A2 upd_143
Collapsing block (type 143)
182 177 B6B1 upd_55
Shuttling block, north-south (type 55)
182 185 B6B9 upd_54
Shuttling block, east-west (type 54)
182 191 B6BF shuttle_block
Shuttling block: the common part
182 219 B6DB shuttle_block_target
Shuttling block: the target
182 222 B6DE shuttle_block_step
Shuttling block: step towards the target
182 239 B6EF shuttle_block_move
Shuttling block: move
182 249 B6F9 upd_144_to_149_152_to_157
Walking legs (types 144 to 149 and 152 to 157)
183 22 B716 legs_unmirrored
Walking legs: unmirrored
183 26 B71A legs_animate_and_draw
Walking legs: animate and draw
183 32 B720 legs_face_minus_x
Walking legs: facing -X
183 38 B726 legs_moving_in_y
Walking legs: moving along Y
183 48 B730 legs_mirrored
Walking legs: mirrored
183 54 B736 legs_face_plus_y
Walking legs: facing +Y
183 60 B73C upd_150_151
Guard walking east-west (types 150 and 151)
183 73 B749 guard_ew_move
Guard east-west: move and turn
183 99 B763 guard_ew_legs
Guard east-west: take the legs along
183 108 B76C set_guard_wizard_sprite
Choose a guard's or the wizard's frame from its direction
183 131 B783 guard_unmirrored
Guard or wizard: unmirrored
183 136 B788 guard_face_minus_x
Guard or wizard: facing -X
183 142 B78E guard_moving_in_y
Guard or wizard: moving along Y
183 152 B798 guard_mirrored
Guard or wizard: mirrored
183 157 B79D guard_face_plus_y
Guard or wizard: facing +Y
183 163 B7A3 upd_22
Gargoyle (type 22)
183 169 B7A9 upd_63
Spiked ball (type 63)
183 205 B7CD spiked_ball_drop
Spiked ball: fall
183 217 B7D9 draw_spiked_ball
Spiked ball: draw
183 220 B7DC spiked_ball_landed
Spiked ball: landed
183 231 B7E7 upd_23
Spike (type 23)
183 237 B7ED upd_86_87
Fire moving east-west (types 86 and 87)
183 254 B7FE fire_ew_move
Fire east-west: move
184 15 B80F upd_180_181
Fire moving north-south (types 180 and 181)
184 32 B820 fire_ns_move
Fire north-south: move
184 47 B82F fire_turn_if_blocked
Fire: turn round if blocked
184 58 B83A fire_flicker_and_draw
Fire: flicker and draw
184 63 B83F upd_176_177
Fire standing still (types 176 and 177)
184 86 B856 set_deadly_wipe_and_draw_flags
Make an object deadly and mark it to be wiped and redrawn
184 92 B85C set_both_deadly_flags
Make an object deadly both ways
184 101 B865 upd_178_179
Ball bouncing on the spot (types 178 and 179)
184 118 B876 ud_ball_rise_or_fall
Ball bouncing on the spot: rise or fall
184 146 B892 ud_ball_draw
Ball bouncing on the spot: draw
184 148 B894 ball_up
Ball bouncing on the spot: rise
184 169 B8A9 init_cauldron_bubbles
Start the cauldron bubbles
184 200 B8C8 cauldron_bubbles
The cauldron bubbles' starting record
184 218 B8DA upd_160_to_163
Cauldron bubbles (types 160 to 163)
185 22 B916 bubbles_draw
Cauldron bubbles: draw
185 25 B919 bubbles_turn_hostile
Cauldron bubbles: turn hostile
185 35 B923 upd_168_to_175
The object the wizard wants, shown in the bubbles (types 168 to 175)
185 44 B92C upd_164_to_167
Chasing sparkles (types 164 to 167)
185 66 B942 chaser_speed_fast
Chasing sparkles: fast
185 69 B945 chaser_chase
Chasing sparkles: chase
185 94 B95E upd_111
Make an object vanish (type 111)
185 98 B962 sound_wipe_and_draw
Play a sound, then wipe and draw
185 101 B965 move_towards_plyr
Point an object at the player
185 115 B973 towards_plyr_y
Point at the player: Y
185 129 B981 towards_plyr_set_dy
Point at the player: set dY
185 133 B985 toggle_next_prev_sprite
Flip between an object's two frames
185 140 B98C next_graphic_no_mod_4
Step an object through four frames
185 152 B998 save_graphic_no
Store an object's type
185 156 B99C upd_141
The cauldron (type 141)
185 159 B99F upd_142
The cauldron's top (type 142)
185 165 B9A5 upd_30_31_158_159
Guard walking round the room, and the wizard (types 30, 31, 158 and 159)
185 204 B9CC move_guard_wizard_NSEW
Choose a walking guard's next heading
185 216 B9D8 guard_NSEW_tbl
Walking guard's headings
185 224 B9E0 guard_W
Walking guard heading -X
185 235 B9EB next_guard_dir
Walking guard: next heading
185 251 B9FB guard_N
Walking guard heading +Y
186 8 BA08 guard_E
Walking guard heading +X
186 21 BA15 guard_S
Walking guard heading -Y
186 34 BA22 game_over
Game over
186 41 BA29 game_over_summary
The game-over summary screen
186 121 BA79 print_charms_and_show
Print the charms count and show the summary
186 135 BA87 await_restart
Wait, play the game-over tune, and start again
186 155 BA9B wait_for_key_press
Wait a while or until a key is pressed
186 158 BA9E wait_key_poll
One poll of the keyboard
186 171 BAAB game_complete_msg
The quest is complete
186 210 BAD2 complete_colours
Completion message: the colour of each line
186 216 BAD8 complete_xy
Completion message: where each line goes
186 228 BAE4 complete_text
Completion message: the text
187 76 BB4C gameover_colours
Game-over summary: the colour of each line
187 82 BB52 gameover_xy
Game-over summary: where each line goes
187 94 BB5E gameover_text
Game-over summary: the text
187 183 BBB7 rating_tbl
The ratings
187 199 BBC7 rating_poor
Rating: 1 to 32 rooms, not completed
187 207 BBCF rating_average
Rating: 33 to 64 rooms, not completed
187 216 BBD8 rating_fair
Rating: 65 to 96 rooms, not completed
187 224 BBE0 rating_good
Rating: 97 rooms or more, not completed
187 232 BBE8 rating_excellent
Rating: 1 to 32 rooms, completed
187 242 BBF2 rating_marvellous
Rating: 33 to 64 rooms, completed
187 253 BBFD rating_hero
Rating: 65 to 96 rooms, completed
188 5 BC05 rating_adventurer
Rating: 97 rooms or more, completed
188 16 BC10 calc_and_display_percent
Count the rooms visited and print the percentage of the quest
188 24 BC18 count_screens
Count the visited bits in one byte
188 27 BC1B count_visited_bit
Test one bit of the visited map
188 31 BC1F next_visited_bit
Next bit, next byte, then work out the percentage
188 56 BC38 scale_to_percent
Add 100/156 per point
188 97 BC61 print_percent_two_digits
Print a percentage under 100
188 102 BC66 print_days
Print the day count on the panel
188 122 BC7A print_lives_gfx
Draw the lives icon on the panel
188 163 BCA3 print_lives
Print the number of lives
188 174 BCAE print_BCD_number
Print BCD numbers in the standard font
188 182 BCB6 print_BCD_byte
Print both digits of one BCD byte
188 192 BCC0 print_BCD_lsd
Print the low digit of a BCD byte
188 202 BCCA display_day
Draw the day label on the panel
188 231 BCE7 day_txt
The day label
188 236 BCEC day_font
The day label's font
189 12 BD0C do_menu_selection
The control-method menu
189 21 BD15 clear_menu_flash
Clear the FLASH bit on every menu line, then draw the menu
189 35 BD23 menu_loop
The menu loop
189 62 BD3E check_for_kempston_joystick
Key 2: Kempston joystick
189 70 BD46 check_for_cursor_joystick
Key 3: cursor joystick
189 78 BD4E check_for_interface_ii
Key 4: Interface II joystick
189 84 BD54 check_for_directional_control
Store the method, then key 5: directional control
189 108 BD6C check_for_start_game
Start the game?
189 133 BD85 clr_debounce
Key 5 released
189 137 BD89 flash_menu
Flash the selected menu lines
189 162 BDA2 menu_colours
Menu: the colour of each line
189 170 BDAA menu_xy
Menu: where each line goes
189 186 BDBA menu_text
Menu: the text
190 49 BE31 print_text_single_colour
Print a string in one given colour
190 69 BE45 print_text_std_font
Print a string with its colour byte, in the standard font
190 76 BE4C print_text
Print a string with its colour byte
190 86 BE56 text_attr_addr
Find the attribute address for the string
190 95 BE5F print_text_char
Print one character of a string
190 114 BE72 print_text_last
Print the last character of a string
190 127 BE7F print_8x8
Print one 8x8 character into the buffer
190 145 BE91 print_8x8_row
Copy one row of the glyph
190 163 BEA3 toggle_selected
Set the FLASH bit on one of a list of colours
190 166 BEA6 flash_this_one
Flash this colour
190 170 BEAA flash_next_one
Count down to the chosen colour
190 173 BEAD unflash_this_one
Do not flash this colour
190 175 BEAF flash_list_step
Next colour in the list
190 179 BEB3 display_menu
Draw the menu
190 191 BEBF display_text_list
Print a list of strings
190 228 BEE4 multiple_print_sprite
Print a sprite several times in a line
190 254 BEFE upd_120_to_126
Player appearing, frames 120 to 126
191 17 BF11 upd_127
Player appearing, last frame
191 33 BF21 init_death_sparkles
Start the sparkle an object vanishes in
191 43 BF2B upd_112_to_118_184
Sparkle, frames 112 to 118 (and type 184)
191 49 BF31 sparkle_sound_and_draw
Sparkle sound and redraw
191 55 BF37 upd_185_187
Vanish and leave the special-object table
191 63 BF3F upd_119
Sparkle, last frame: vanish
191 69 BF45 display_objects_carried
Redraw the carried objects if they changed
191 78 BF4E display_objects
Draw the three carried objects on the panel
191 89 BF59 display_object
Draw one carried object
191 145 BF91 show_carried_slot
Show one carried object and colour it
191 211 BFD3 object_attributes
Colours of the carried objects
191 219 BFDB sprite_scratchpad
Scratch object record for the panel
191 251 BFFB chk_pickup_drop
Is the pick-up/drop control pressed?
192 11 C00B test_pickup_bit
Test the pick-up bit
192 14 C00E handle_pickup_drop
Pick up or drop an object
192 65 C041 start_pickup_drop
Look for a charm to pick up
192 111 C06F try_pickup_loop
Try each special-object record
192 140 C08C find_free_record
Nothing to pick up: find a free record to drop into
192 147 C093 find_free_record_loop
Is this record free?
192 157 C09D done_pickup_drop
Pick-up or drop done
192 169 C0A9 wait_pickup_release
Wait for the pick-up key to be released
192 178 C0B2 room_to_drop
Drop the oldest charm carried
192 221 C0DD place_under_player
Put the charm under the player
193 6 C106 drop_object
Fill in a dropped charm's record
193 43 C12B adjust_carried
Shift the carried slots along
193 65 C141 pickup_object
Pick up a charm
193 114 C172 can_pickup_spec_obj
Can this special object be picked up?
193 122 C17A is_on_or_near_obj
Is the player on or next to this object?
193 159 C19F near_obj_done
Result of the touch test
193 161 C1A1 is_obj_moving
Is the object moving?
193 171 C1AB upd_103
Special object $67: the extra life
193 238 C1EE extra_life_fall
Fall and settle like any other object
193 241 C1F1 upd_104_to_110
A charm on its way into the cauldron, types $68 to $6E
194 2 C202 steer_to_centre_y
Steer towards the centre in y
194 19 C213 check_over_centre
Over the centre yet?
194 34 C222 rise_over_cauldron
Rise to a height of $98
194 44 C22C store_rise_speed
Set the vertical speed
194 47 C22F move_charm_to_cauldron
Move it
194 50 C232 click_wipe_and_draw
Click and redraw
194 56 C238 centre_of_room
Over the centre: fall into the cauldron
194 69 C245 add_obj_to_cauldron
A charm lands in the cauldron
194 101 C265 cauldron_consume
Use the charm up
194 116 C274 ret_next_obj_required
Which charm the wizard wants next
194 125 C27D objects_required
The charms the wizard wants, in order
194 139 C28B upd_96_to_102
Special objects $60 to $66: a charm lying in a room
194 155 C29B settle_charm
Stop the charm and redraw it
194 165 C2A5 cycle_colours_with_sound
Cycle the screen's colours with a sound
194 167 C2A7 cycle_colours_pass
One pass over the attributes
194 173 C2AD cycle_attribute_mem
Step one cell's ink
194 195 C2C3 cycle_colours_pause
Pause between passes
194 203 C2CB no_update
Handler that does nothing
194 204 C2CC prepare_final_animation
Start the final animation
194 220 C2DC final_clear_loop
Erase the next of records 3 to 13
194 238 C2EE blocks_to_rising
Turn a stone block into a rising block
194 249 C2F9 final_next_record
Next record in the stone-block scan
195 6 C306 chk_and_init_transform
Start the transformation if one is due
195 55 C337 upd_92_to_95
The transformation in progress (types 92 to 95)
195 73 C349 transform_step
One step of the transformation
195 87 C357 rand_legs_sprite
Show a random transformation sprite
195 105 C369 set_transform_sprite
Set the transformation sprite
195 119 C377 finish_transform
End the transformation
195 148 C394 transform_done_draw
Draw the finished player
195 151 C397 print_sun_moon
Move the sun or moon on
195 164 C3A4 display_sun_moon_frame
Place the sun or moon, and redraw its window
195 195 C3C3 display_frame
Draw the sun and moon window
195 255 C3FF toggle_day_night
Swap the sun and moon
196 25 C419 inc_days
A new day
196 50 C432 blit_2x8
Copy a 16 by 8 pixel patch from the buffer to the screen
196 64 C440 sun_moon_yoff
The sun's and moon's heights
196 77 C44D sun_moon_scratchpad
The sun or moon, as an object record
196 109 C46D init_sun
Start the first day
196 126 C47E init_special_objects
Shuffle the special objects
196 137 C489 init_obj_loop
Set up one special-object entry
196 170 C4AA upd_62
The block type called moveable (type 62)
196 182 C4B6 upd_85
A chest (type 85)
196 195 C4C3 upd_84
A table (type 84)
196 198 C4C6 dec_dZ_upd_XYZ_wipe_if_moving
Move under gravity, and redraw if moved
196 211 C4D3 upd_128_to_130
Drawing offset X -8, Y -2 (types 128 to 130)
196 216 C4D8 adj_m4_m12
Drawing offset X -12, Y -4
196 221 C4DD adj_m6_m12
Drawing offset X -12, Y -6
196 224 C4E0 jp_set_pixel_adj
Jump to set the drawing offset
196 227 C4E3 upd_6_7
Drawing offset X -16, Y -8 (types 6 and 7)
196 232 C4E8 upd_10
Drawing offset X -20, Y -1 (type 10)
196 237 C4ED upd_11
Drawing offset X -12, Y -2 (type 11)
196 242 C4F2 upd_12_to_15
Drawing offset X -8, Y -4 (types 12 to 15)
196 247 C4F7 adj_m8_m12
Drawing offset X -12, Y -8
196 252 C4FC adj_m7_m12
Drawing offset X -12, Y -7
197 1 C501 adj_m12_m12
Drawing offset X -12, Y -12
197 6 C506 upd_88_to_90
Drawing offset X -16, Y -12 (types 88 to 90)
197 11 C50B adj_p7_m12
Drawing offset X -12, Y +7
197 16 C510 adj_p3_m12
Drawing offset X -12, Y +3
197 21 C515 fill_window
Fill a rectangle of bytes
197 24 C518 fill_window_row
Fill one row
197 26 C51A fill_window_byte
Fill one byte
197 37 C525 find_special_objs_here
Bring in the special objects for a new room
197 48 C530 find_spec_obj_loop
Check one special-object entry
197 114 C572 next_spec_obj_slot
Next special-object entry
197 131 C583 clear_spare_spec_records
Clear the unused special-object records
197 145 C591 update_special_objs
Remember where the special objects were left
197 149 C595 save_spec_obj_loop
Write back one special object
197 183 C5B7 save_spec_obj_next
Next special-object record
197 200 C5C8 upd_80_to_83
A ghost (types 80 to 83)
197 221 C5DD ghost_new_direction
Give a ghost a new direction
197 253 C5FD ghost_animate
Animate a ghost
198 3 C603 calc_ghost_sprite
Choose a ghost's sprite from its direction
198 12 C60C ghost_abs_dy
The size of dy
198 22 C616 ghost_pick_view
Mostly along x, or mostly along y?
198 36 C624 set_ghost_hflip
Mirror the ghost
198 41 C629 ghost_x_negative
Moving towards -x
198 47 C62F ghost_mostly_y
Moving mostly along y
198 58 C63A clr_ghost_hflip
Don't mirror the ghost
198 63 C63F ghost_y_negative
Moving towards -y
198 69 C645 get_delta_from_tbl
Look up a speed
198 78 C64E delta_tbl
Speeds, negative and positive
198 94 C65E upd_8
A portcullis at rest (type 8)
198 133 C685 init_portcullis_down
Start a portcullis falling
198 145 C691 count_moving_portcullis
Count the moving portcullis
198 146 C692 set_wipe_and_draw_flags
Mark an object to be wiped and redrawn
198 157 C69D set_wipe_and_draw_IY
Mark the object at IY to be wiped and redrawn
198 173 C6AD init_portcullis_up
Start a portcullis rising
198 189 C6BD upd_9
A moving portcullis (type 9)
198 224 C6E0 stop_portcullis
Stop a portcullis
198 234 C6EA move_portcullis_up
Raise a portcullis
199 0 C700 dec_dZ_and_update_XYZ
Apply gravity and move
199 6 C706 add_dXYZ
Move by the velocity
199 34 C722 upd_3_5
The second pillar of an arch (types 3 and 5)
199 43 C72B set_pixel_adj
Set the drawing offset
199 50 C732 adj_3_5_hflip
The second pillar, mirrored
199 55 C737 adj_m3_p1
The first pillar of a tree arch, facing east or west
199 60 C73C upd_2_4
The first pillar of an arch (types 2 and 4)
199 76 C74C arch_ew_doorway
The middle of an east or west arch
199 96 C760 arch_check_doorway
Check the player against the doorway
199 108 C76C adj_2_4_hflip
The first pillar, mirrored: a north or south arch
199 133 C785 arch_nudge_to_centre
Nudge the player towards the middle of an arch
199 145 C791 arch_nudge_loop
Nudge one record
199 169 C7A9 adj_arch_tbl
How to nudge, by the arch's direction
199 177 C7B1 adj_ew
Nudge along y, for an east or west arch
199 191 C7BF nudge_y_store
Store the y nudge
199 196 C7C4 adj_ns
Nudge along x, for a north or south arch
199 210 C7D2 nudge_x_store
Store the x nudge
199 213 C7D5 arch_nudge_done
Nudge done
199 214 C7D6 arch_nudge_next
Next record to nudge
199 219 C7DB chk_plyr_spec_near_arch
Is the player in the doorway?
199 228 C7E4 near_arch_loop
Check one record against the doorway
199 249 C7F9 near_arch_next
Next record for the doorway check
199 254 C7FE is_near_to
Is an object near a point?
200 8 C808 near_check_y
Within the limit along x?
200 20 C814 near_check_z
Within the limit along y?
200 32 C820 near_z_compare
Within 4 along z?
200 35 C823 upd_16_to_21_24_to_29
The knight's legs (types 16 to 21 and 24 to 29)
200 40 C828 upd_48_to_53_56_to_61
The werewolf's legs (types 48 to 53 and 56 to 61)
200 43 C82B upd_player_bottom
Update the player's legs
200 62 C83E player_controls
Read the controls and act on them
200 85 C855 player_move_and_draw
Move the player and count down the room-entry walk
200 106 C86A player_redraw
Have the player redrawn
200 109 C86D plyr_OOB
In a doorway: allow no rising
200 122 C87A chk_plyr_OOB
Is the player inside the room's walls?
200 145 C891 oob_test_x
Test X, then work out the Y distance
200 157 C89D oob_test_y
Test Y
200 159 C89F handle_left_right
Turn the player
200 190 C8BE directional_pick
Directional control: right, down or left
200 205 C8CD chk_facing_N
Directional control: face N
200 210 C8D2 chk_facing_ne_result
Directional control: walk, or turn towards N or E
200 213 C8D5 turn_by_parity
Directional control: turn left or right
200 217 C8D9 chk_facing_E
Directional control: face E
200 224 C8E0 chk_facing_S
Directional control: face S
200 229 C8E5 chk_facing_sw_result
Directional control: walk, or turn towards S or W
200 233 C8E9 chk_facing_W
Directional control: face W
200 239 C8EF flag_forward
Directional control: walk
200 242 C8F2 left_right_rotational
Rotational control: turn a quarter
200 253 C8FD rotational_turn
Rotational control: start a turn
201 21 C915 start_turn_delay
Rotational control: set the pause and choose the direction
201 31 C91F left_right_calc_sprite
Turn the player one quarter
201 39 C927 turn_toggle_view
Turn: change between back and front view
201 47 C92F turn_toggle_mirror
Turn: mirror the sprite, and turn the top half to match
201 64 C940 turn_right
Turn right
201 72 C948 handle_jump
Start a jump
201 105 C969 handle_forward
Step the legs
201 122 C97A walk_step_sound
Footstep, then the next leg frame
201 127 C97F animate_human_legs
Next frame of a walk cycle
201 139 C98B store_leg_frame
Store the new leg frame
201 148 C994 legs_to_rest
Bring the legs to rest
201 161 C9A1 move_player
Move the player
201 171 C9AB move_player_xy
Is the player moving forward?
201 188 C9BC move_player_walk
Take a step forward
201 193 C9C1 apply_gravity
Gravity
201 204 C9CC gravity_extra
Gravity's second unit
201 205 C9CD move_player_apply
Resolve and apply the move
201 243 C9F3 clear_dX_dY
Clear dX and dY
201 251 C9FB calc_plyr_dXY
Add a step in the facing direction
202 23 CA17 dispatch_on_facing
Jump by the object's facing
202 30 CA1E get_sprite_dir
Which way does the object face?
202 50 CA32 walk_step_tbl
A step in each direction
202 58 CA3A move_plyr_W
Step west
202 63 CA3F store_plyr_dX
Store dX
202 67 CA43 move_plyr_E
Step east
202 74 CA4A move_plyr_N
Step north
202 79 CA4F store_plyr_dY
Store dY
202 83 CA53 move_plyr_S
Step south
202 90 CA5A adj_dZ_for_out_of_bounds
Shorten dZ at the floor
202 94 CA5E clip_dZ_to_floor
Shorten dZ at the floor: the loop
202 112 CA70 handle_exit_screen
Has the player walked out of the room?
202 137 CA89 shorten_delta
Shorten a movement by one unit
202 144 CA90 shorten_delta_dec
Shorten a movement: subtract one
202 146 CA92 screen_move_tbl
Leaving a room, by facing
202 154 CA9A screen_west
Leave by the west wall?
202 179 CAB3 screen_e_w
Keep an east-west move within the row
202 186 CABA exit_screen
Go into the next room
202 243 CAF3 screen_east
Leave by the east wall?
203 14 CB0E screen_north
Leave by the north wall?
203 41 CB29 screen_south
Leave by the south wall?
203 69 CB45 adj_for_out_of_bounds
Cut a move short against the room and the other objects
203 106 CB6A dZ_ok
Cut a move short: X
203 123 CB7B dX_done
Cut a move short: Y
203 140 CB8C store_clipped_move
Store the move as cut
203 154 CB9A adj_dX_for_obj_intersect
Shorten dX against the other objects
203 160 CBA0 dX_obj_loop
Shorten dX: is this object in line?
203 175 CBAF dX_obj_hit_test
Shorten dX: does the move hit it?
203 217 CBD9 dX_obj_shorten
Shorten dX by one and try the same object again
203 225 CBE1 dX_obj_next
Shorten dX: the next object
203 233 CBE9 adj_dY_for_obj_intersect
Shorten dY against the other objects
203 239 CBEF dY_obj_loop
Shorten dY: is this object in line?
203 254 CBFE dY_obj_hit_test
Shorten dY: does the move hit it?
204 40 CC28 dY_obj_shorten
Shorten dY by one and try the same object again
204 48 CC30 dY_obj_next
Shorten dY: the next object
204 56 CC38 adj_dZ_for_obj_intersect
Shorten dZ against the other objects
204 62 CC3E dZ_obj_loop
Shorten dZ: is this object above or below?
204 77 CC4D dZ_obj_hit_test
Shorten dZ: does the move hit it?
204 129 CC81 dZ_ride_dY
Shorten dZ: ride with the obstacle's dY
204 141 CC8D dZ_obj_shorten
Shorten dZ by one and try the same object again
204 149 CC95 dZ_obj_next
Shorten dZ: the next object
204 157 CC9D do_objs_intersect_on_x
Do two objects overlap in X?
204 176 CCB0 intersect_x_result
Overlap in X: compare
204 178 CCB2 do_objs_intersect_on_y
Do two objects overlap in Y?
204 197 CCC5 intersect_y_result
Overlap in Y: compare
204 199 CCC7 do_objs_intersect_on_z
Do two objects overlap in Z?
204 214 CCD6 intersect_z_result
Overlap in Z: compare
204 216 CCD8 intersect_z_above
Overlap in Z: the other object is lower
204 221 CCDD adj_dX_for_out_of_bounds
Shorten dX at the walls
204 236 CCEC clip_dX_to_walls
Shorten dX at the walls: distance from the centre
204 246 CCF6 clip_dX_test
Shorten dX at the walls: test and shorten
205 7 CD07 dX_ok
Shorten dX at the walls: done
205 8 CD08 adj_dY_for_out_of_bounds
Shorten dY at the walls
205 23 CD17 clip_dY_to_walls
Shorten dY at the walls: distance from the centre
205 33 CD21 clip_dY_test
Shorten dY at the walls: test and shorten
205 50 CD32 dY_ok
Shorten dY at the walls: done
205 51 CD33 calc_2d_info
Work out an object's screen rectangle
205 67 CD43 store_2d_size
Store the sprite's width and height
205 77 CD4D set_draw_objs_overlapped
Mark every object the moving object's old or new rectangle touches
205 108 CD6C union_right_edge
Union rectangle: right-hand edge
205 122 CD7A union_width_bottom
Union rectangle: width, and the lower edge
205 135 CD87 union_top_edge
Union rectangle: the upper edge
205 153 CD99 union_height
Union rectangle: the height
205 155 CD9B test_overlap_obj
Test one object against the union rectangle
205 179 CDB3 overlap_x_decided
Horizontal overlap decided
205 188 CDBC overlap_y_decided
Vertical overlap decided: mark the object
205 194 CDC2 next_overlap_obj
Next object for the overlap test
205 204 CDCC obj_starts_left
Object starts to the left of the union
205 211 CDD3 obj_starts_below
Object starts below the union
205 218 CDDA upd_32_to_47
Object types 32 to 47: the knight's head
205 223 CDDF upd_64_to_79
Object types 64 to 79: the werewolf's head
205 226 CDE2 upd_player_top
Update the player's head
205 239 CDEF head_follows_legs
The head follows the legs
206 20 CE14 choose_head_sprite
Choose the head sprite
206 34 CE22 set_top_sprite
Set the head's sprite
206 39 CE27 head_on_shoulders
Put the head on the shoulders
206 51 CE33 head_frame_six
Head frame 6
206 58 CE3A hold_head_frame
Hold the chosen head frame
206 64 CE40 head_frame_seven
Head frame 7
206 73 CE49 save_2d_info
Remember an object's screen rectangle
206 98 CE62 list_objects_to_draw
List the objects to be drawn this frame
206 114 CE72 list_test_obj
Test one object for the draw list
206 128 CE80 list_next_obj
Next object for the draw list
206 139 CE8B objects_to_draw
The objects to draw this frame
206 187 CEBB calc_display_order_and_render
Draw the listed objects, back to front
206 195 CEC3 process_remaining_objs
Start a pass: find the first object not yet drawn
206 198 CEC6 skip_drawn_entries
Skip entries already drawn
206 219 CEDB compare_next_obj
Compare the candidate with the next undrawn object
207 21 CF15 z_code_overlap
Z code: the boxes overlap in height
207 22 CF16 compare_along_y
Compare the boxes along Y
207 57 CF39 add_y_code
Add the Y code
207 60 CF3C compare_along_x
Compare the boxes along X
207 95 CF5F add_x_code
Add the X code
207 98 CF62 act_on_comparison
Act on the comparison
207 105 CF69 depth_order_tbl
What to do about a pair of boxes
207 159 CF9F order_unconstrained
Pair with no order between them
207 162 CFA2 candidate_already_first
Candidate is behind the other object
207 165 CFA5 iy_goes_first
The other object must be drawn first
207 173 CFAD search_chain
Search the candidate chain
207 184 CFB8 iy_becomes_candidate
IY becomes the candidate
207 206 CFCE break_order_cycle
Break a cycle in the order
207 209 CFD1 find_iy_entry
Find IY's entry and draw it
207 225 CFE1 objs_coincide
Two boxes occupy the same space
207 240 CFF0 check_iy_collectable
Is the other one a collectable?
207 253 CFFD coincide_done
Continue after two boxes intersect
208 0 D000 render_obj_no1
Draw the candidate
208 3 D003 render_obj
Draw an object and start the next pass
208 21 D015 render_done
All listed objects drawn
208 26 D01A candidate_chain
The chain of candidates since the last draw
208 34 D022 check_user_input
Read the controls
208 62 D03E interface_ii
Interface II joysticks
208 70 D046 reverse_if2_bits
Reverse the 1 to 5 bits
208 92 D05C if2_up
Interface II up
208 98 D062 if2_down
Interface II down
208 104 D068 if2_right
Interface II right
208 110 D06E if2_left
Interface II left
208 116 D074 if2_done
Interface II done
208 119 D077 kempston
Kempston joystick
208 129 D081 kempston_left
Kempston left
208 135 D087 kempston_down
Kempston down
208 141 D08D kempston_up
Kempston up
208 147 D093 kempston_fire
Kempston fire
208 153 D099 kempston_done
Kempston done
208 156 D09C cursor
Cursor keys
208 169 D0A9 cursor_second_row
Cursor keys: the 6 to 0 half-row
208 180 D0B4 cursor_up
Cursor up
208 186 D0BA cursor_right
Cursor right
208 192 D0C0 cursor_down
Cursor down
208 200 D0C8 keyboard
Keyboard
208 228 D0E4 keyboard_m
Keyboard: M
208 234 D0EA keyboard_n
Keyboard: N
208 240 D0F0 keyboard_b
Keyboard: B
208 246 D0F6 keyboard_forward
Keyboard: walk forward
208 255 D0FF keyboard_jump
Keyboard: jump
209 8 D108 keyboard_pickup
Keyboard: pick up and drop
209 17 D111 finished_input
Finish reading the controls
209 37 D125 store_input
Store the control bits
209 42 D12A lose_life
Start a life
209 97 D161 plyr_spr_1_scratchpad
The saved legs record: bytes 0 to 7
209 105 D169 start_loc_1
The saved legs record: room and movement
209 109 D16D flags12_1
The saved legs record: bytes 12 to 15
209 113 D171 plyr_spr_1_tail
The saved legs record: bytes 16 to 31
209 129 D181 plyr_spr_2_scratchpad
The saved head record: bytes 0 to 7
209 137 D189 start_loc_2
The saved head record: bytes 8 to 15
209 145 D191 plyr_spr_2_tail
The saved head record: bytes 16 to 31
209 161 D1A1 plyr_spr_init_data
The player's records at the start of a game
209 177 D1B1 init_start_location
Set up the player for a new game
209 226 D1E2 start_locations
The four starting rooms
209 230 D1E6 build_screen_objects
Build the room the player is in
209 239 D1EF build_room
Fill the object table for the new room
210 25 D219 flag_room_visited
Mark the player's room as visited
210 55 D237 transfer_sprite
Copy a sprite's four bytes into the drawing record
210 76 D24C transfer_sprite_and_print
Copy a sprite's four bytes and draw it
210 85 D255 display_panel
Draw the scroll-work at the foot of the screen
210 126 D27E panel_data
The panel artwork
210 150 D296 print_border
Draw the border round the play area
210 207 D2CF border_data
The border pieces
210 239 D2EF colour_panel
Colour the sun and moon window's frame
211 13 D30D colour_sun_moon
Colour the sun or the moon
211 23 D317 fill_sun_moon_colour
Fill the window's colour
211 32 D320 adjust_plyr_xyz_for_room_size
Put the player in the doorway he came through
211 63 D33F enter_arch_s
Enter through the south arch
211 74 D34A adjust_plyr_y
Set the player's Y
211 77 D34D plyr_redraw_copy_xy
Redraw the player and line the head up with the legs
211 98 D362 enter_arch_n
Enter through the north arch
211 111 D36F enter_arch_w
Enter through the west arch
211 122 D37A adjust_plyr_x
Set the player's X
211 127 D37F enter_arch_e
Enter through the east arch
211 140 D38C adjust_plyr_Z_for_arch
Stand the player on the floor of the arch
211 149 D395 check_next_arch
Look at the next arch
211 169 D3A9 adj_plyr_Z
Take the arch's Z
211 181 D3B5 get_ptr_object
Object index to record address
211 198 D3C6 retrieve_screen
Build the objects of the room the player has entered
211 207 D3CF find_screen
Find the room's record
211 226 D3E2 zero_end_of_graphic_objs_tbl
Clear the object records from DE to the end of the table
211 240 D3F0 found_screen
Take the room's colour and size from its record
212 30 D41E next_bg_obj
Next background in the room's list
212 50 D432 next_bg_obj_sprite
Copy one background template into an object record
212 76 D44C find_fg_objs
Start on the room's foreground objects
212 82 D452 next_fg_obj
Read a foreground group: its type, count and first location
212 107 D46B next_fg_obj_in_count
Place one more of the same type
212 108 D46C next_fg_obj_sprite
Build one object record from a foreground template and a location
212 205 D4CD zero_fg_obj_tail
Clear the rest of a foreground record, then carry on
212 234 D4EA end_of_fg_objs
The room record is used up
212 242 D4F2 add_HL_A
Add A to HL
212 249 D4F9 HL_equals_DE_x_A
HL = DE * A
212 255 D4FF mult_step
One bit of the multiply
213 4 D504 mult_next_bit
Next bit of the multiply
213 8 D508 zero_DE
Clear B bytes at DE
213 9 D509 fill_DE
Fill B bytes at DE with A
213 14 D50E handle_pause
Pause if SPACE is pressed
213 25 D519 debounce_space_press
Wait for SPACE to be let go, then sound
213 37 D525 wait_for_space
Paused: wait for SPACE again
213 46 D52E debounce_space_release
Wait for SPACE to be let go, sound, and carry on
213 58 D53A clr_mem
Clear BC bytes at HL
213 60 D53C clr_byte
Fill BC bytes at HL with E
213 68 D544 clr_bitmap_memory
Clear the display bitmap
213 76 D54C clr_attribute_memory
Set every attribute to bright yellow on black
213 86 D556 fill_attr
Set every attribute to A
213 95 D55F clear_scrn
Clear the screen and make the border black
213 103 D567 clear_scrn_buffer
Clear the screen buffer
213 111 D56F update_screen
Copy the whole buffer to the display, clearing it as it goes
213 120 D578 update_screen_row
One row of the whole-screen copy
213 123 D57B update_screen_byte
Copy and clear a row, then step to the display line above
213 154 D59A update_screen_next_row
Next row of the whole-screen copy
213 159 D59F render_dynamic_objects
Redraw what changed and copy it to the display
213 178 D5B2 wipe_next_object
Wipe the next object that moved
213 219 D5DB wipe_right_edge
Find the right edge of the area to wipe
213 246 D5F6 wipe_width
The width of the area, and its bottom edge
214 11 D60B wipe_top_edge
Find the top edge of the area to wipe
214 28 D61C wipe_height
The height of the area, cut off at the top of the screen
214 44 D62C wipe_rect
Wipe the area in the buffer and remember it
214 73 D649 wipe_left_is_new
The new x is the further left
214 78 D64E wipe_bottom_is_new
The new y is the lower
214 83 D653 draw_and_copy_rects
Draw the objects, then copy the wiped areas to the display
214 102 D666 copy_next_rect
Copy the next wiped area to the display
214 121 D679 copy_rects_done
All copied
214 124 D67C blit_to_screen
Copy a rectangle of the buffer to the display
214 154 D69A blit_next_row
Next row of the rectangle
214 158 D69E build_lookup_tbls
Build the lookup tables
214 160 D6A0 shift_tbl_value
Start on one byte value
214 167 D6A7 shift_tbl_entry
Store the value shifted one place further
214 187 D6BB reverse_tbl_value
Start reversing one byte value
214 190 D6BE reverse_tbl_bit
Move one bit across
214 201 D6C9 calc_pixel_XY
Project an object's position onto the screen
214 239 D6EF flip_sprite
Find an object's sprite and make it face the right way
215 4 D704 calc_pixel_XY_and_render
Draw one object from the render list
215 16 D710 project_and_draw
Project the object and draw it if it is on the screen
215 24 D718 print_sprite
Draw an object's sprite into the buffer, through its mask
215 60 D73C patch_sprite_rows
Patch the row loop for this width, and cut the height to the screen
215 90 D75A draw_sprite_rows
Draw the rows
215 111 D76F sprite_aligned
The byte-aligned case, and the start of its unrolled run
215 144 D790 sprite_aligned_tail
The last three units of an aligned row
215 170 D7AA sprite_row
Start a row
215 172 D7AC sprite_row_jump
Jump into the row, then the shifted run
215 255 D7FF sprite_row_end
Step to the row above
216 0 D800 sprite_next_row
Move BC up a row, and loop
216 17 D811 calc_vidbuf_addr
Buffer address of a pixel position
216 38 D826 calc_vram_addr
Display address of a pixel position
216 72 D848 calc_attrib_addr
Attribute address of a pixel position
216 101 D865 vflip_sprite_data
Turn a sprite's stored data to face the way its object wants
216 140 D88C vflip_row_pair
Swap the next pair of rows
216 141 D88D vflip_sprite_line_pair
Swap two rows byte by byte, working backwards
216 162 D8A2 hflip_sprite_data
Mirror the sprite if its object wants it the other way round
216 191 D8BF hflip_read_row
Push a row's pairs, each byte reversed
216 205 D8CD hflip_write_row
Write the row back in the reverse order
216 220 D8DC flip_done
Return with DE on the header
216 222 D8DE copyright_notice
Copyright notice
216 243 D8F3 screen_buffer
The screen buffer
240 243 F0F3 spare_bytes
Thirteen bytes nothing uses
241 0 F100 reverse_bits_tbl
Bit reversal, built at run time
242 0 F200 shift_tbls
Shift tables, built at run time