Memory map
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