![]() |
Routines |
Page | Byte | Address | Length | Description |
---|---|---|---|---|
97 | 0 | 24832 | 82 |
Deal with Sam while he's transfixed by Lana
|
97 | 82 | 24914 | 10 |
Prepare for the next game mode
|
97 | 93 | 24925 | 26 |
Reset a gangster's location and restart the command list
|
97 | 119 | 24951 | 68 |
'J' pressed - joystick
|
97 | 207 | 25039 | 27 |
Add a random number of bucks to Sam's total
|
97 | 242 | 25074 | 7 |
Check whether a gangster is close enough to Sam to pick him up
|
97 | 249 | 25081 | 7 |
Make the gangster at no. 15 lie in wait for Sam
|
98 | 0 | 25088 | 17 |
Make a sound effect
|
98 | 30 | 25118 | 188 |
Control the sniper while active
|
98 | 219 | 25307 | 78 |
Control the sniper
|
99 | 41 | 25385 | 9 |
Make a gangster chase Sam
|
99 | 76 | 25420 | 119 |
Control a banknote
|
99 | 195 | 25539 | 61 |
Check whether Sam has somersaulted onto a banknote
|
100 | 0 | 25600 | 18 |
Copy source sprite tiles over target sprite tiles
|
100 | 18 | 25618 | 105 |
Prepare sprite tiles used by Sam when somersaulting or rolling
|
100 | 184 | 25784 | 5 |
'R' pressed - forward roll
|
100 | 189 | 25789 | 129 |
'S' pressed - somersault
|
101 | 62 | 25918 | 26 |
Check whether Sam can roll or somersault from his current location
|
101 | 88 | 25944 | 45 |
Determine Sam's location
|
101 | 146 | 26002 | 73 |
Check whether Sam has been hit by a bullet
|
101 | 219 | 26075 | 147 |
Move and draw the bullets
|
102 | 112 | 26224 | 104 |
Update the sniper's sprite tile references
|
102 | 216 | 26328 | 24 |
Check whether Sam is within firing range of the sniper
|
102 | 240 | 26352 | 8 |
Make the sound effect of Sam being hit by a bullet
|
108 | 244 | 27892 | 12 |
Check whether Sam is at the right place to pick up a telephone
|
109 | 246 | 28150 | 9 |
Set A=1
|
110 | 0 | 28160 | 26 |
Print a message
|
110 | 26 | 28186 | 106 |
Print a number
|
110 | 135 | 28295 | 39 |
Adjust Sam's cash supply and print the new amount
|
110 | 177 | 28337 | 18 |
Increment the score and decrement Sam's cash supply
|
110 | 197 | 28357 | 254 |
Add a message to the message queue
|
111 | 200 | 28616 | 19 |
Randomly select a message number
|
111 | 219 | 28635 | 11 |
'M' pressed - toggle message speed
|
111 | 230 | 28646 | 10 |
Make the sound effect of a sniper firing
|
111 | 244 | 28660 | 42 |
Update the telephone icon
|
112 | 31 | 28703 | 19 |
Show or hide an icon in the icon panel
|
112 | 88 | 28760 | 43 |
Initialise the icon panel, score box and message line
|
112 | 131 | 28803 | 38 |
Check whether a character is on a roof with edges on each side
|
112 | 170 | 28842 | 43 |
Check whether a policeman can spot Sam
|
112 | 214 | 28886 | 54 |
Check whether a character is visible to passers-by
|
113 | 14 | 28942 | 61 |
Check whether a character is close enough to Sam to pick him up
|
113 | 76 | 29004 | 47 |
Check whether a character is immobilised by a blown fuse
|
113 | 124 | 29052 | 16 |
Make a policeman switch a light on if possible
|
113 | 144 | 29072 | 16 |
Set a character's destination to Sam's current location
|
113 | 160 | 29088 | 12 |
Set a policeman's destination to Sam's current location
|
113 | 172 | 29100 | 49 |
Send a policeman to Sam's last known whereabouts
|
113 | 221 | 29149 | 45 |
Make a gangster or policeman pick Sam up
|
114 | 34 | 29218 | 114 |
Make a policeman start chasing Sam if appropriate
|
114 | 148 | 29332 | 22 |
Check whether Sam's disguise is known to the police
|
114 | 170 | 29354 | 7 |
Control a policeman (1)
|
114 | 177 | 29361 | 197 |
Control a policeman (2)
|
115 | 119 | 29559 | 19 |
Make a policeman chase Sam or go to his last known whereabouts if appropriate
|
115 | 138 | 29578 | 19 |
Check whether Sam or a gangster is inside a region
|
115 | 157 | 29597 | 35 |
Check whether a gangster should start chasing Sam
|
115 | 228 | 29668 | 48 |
Show or hide the fuse, door, light bulb or phone in the icon panel (1)
|
116 | 20 | 29716 | 15 |
Clear the message line and display the first aid kits
|
116 | 37 | 29733 | 118 |
Show or hide the fuse, door, light bulb or phone in the icon panel (2)
|
116 | 158 | 29854 | 12 |
Check whether Sam is standing next to a telephone
|
116 | 170 | 29866 | 28 |
'F' pressed - fuse
|
116 | 216 | 29912 | 40 |
Deal with Sam
|
117 | 0 | 29952 | 65 |
Process the event table
|
117 | 65 | 30017 | 26 |
Initialise the events and objects for a new game
|
117 | 91 | 30043 | 9 |
Initialise an event or object for a new game
|
117 | 101 | 30053 | 17 |
Make the cash bonus/key sound effect
|
117 | 118 | 30070 | 22 |
'L' pressed - light on/off
|
117 | 140 | 30092 | 23 |
'B' pressed - raise/lower blind
|
117 | 164 | 30116 | 30 |
Check whether Sam is standing next to a fuse that has not been blown yet
|
117 | 194 | 30146 | 7 |
Deal with Sam when his arm is raised or his knees are bent
|
117 | 202 | 30154 | 6 |
Add an urgent message to the message queue
|
117 | 208 | 30160 | 38 |
Determine the interval between the last message and the next
|
117 | 246 | 30198 | 13 |
Ask Sam 'WHO'S THERE?' when he takes or makes a phone call
|
118 | 3 | 30211 | 185 |
Check whether Sam has found something and update the icon panel
|
118 | 188 | 30396 | 33 |
Deal with a character who is at the entrance to a building
|
118 | 221 | 30429 | 28 |
Check whether Sam is standing next to a ringing telephone
|
118 | 250 | 30458 | 53 |
'T' pressed - telephone
|
119 | 47 | 30511 | 63 |
Check whether a character can answer the telephone that Sam is calling
|
119 | 111 | 30575 | 51 |
Deal with Sam when he's on the phone and has been asked 'WHO'S THERE?'
|
119 | 163 | 30627 | 48 |
Check whether there is a telephone message for Sam
|
119 | 211 | 30675 | 147 |
Deal with Sam when he's on the phone
|
120 | 102 | 30822 | 147 |
Prepare for a cutscene
|
120 | 252 | 30972 | 17 |
Check whether a message is in the message queue
|
121 | 13 | 30989 | 111 |
Display a cutscene
|
121 | 150 | 31126 | 78 |
Collect a keypress during the game (or simulate one in demo mode)
|
121 | 228 | 31204 | 32 |
'G' pressed - get object
|
122 | 4 | 31236 | 8 |
Send the police after Sam
|
122 | 12 | 31244 | 11 |
Place a telephone call
|
122 | 23 | 31255 | 29 |
Check whether Sam has dialled a valid telephone number
|
122 | 52 | 31284 | 5 |
Queue the message 'I HUNG UP' (unused)
|
122 | 57 | 31289 | 30 |
Check whether Sam has entered a house through the front door without a key
|
122 | 87 | 31319 | 19 |
Make a gangster walk up or down until Sam arrives
|
122 | 106 | 31338 | 24 |
Make a gangster walk up and down while watching for Sam
|
122 | 130 | 31362 | 51 |
Make a gangster chase and pick up Sam
|
122 | 182 | 31414 | 44 |
Increment the score and decrement Sam's cash supply at regular intervals
|
122 | 226 | 31458 | 18 |
Prepare the phone messages, events and objects for a new game
|
122 | 244 | 31476 | 102 |
Deal with Sam when he's being carried by a gangster or policeman
|
123 | 92 | 31580 | 14 |
Deal with a character who is standing next to the jail cell door
|
123 | 106 | 31594 | 48 |
Let Sam out of jail if necessary
|
123 | 154 | 31642 | 28 |
Make a policeman arrest Sam, and end the game if he cannot pay his bail
|
123 | 182 | 31670 | 43 |
Control the hook while it's flying
|
123 | 225 | 31713 | 94 |
'C' pressed - use hook
|
124 | 64 | 31808 | 135 |
Check whether a character will soon be entering or leaving the hotel
|
124 | 200 | 31944 | 16 |
Collect a character's destination coordinates from a command list
|
124 | 216 | 31960 | 38 |
Take the hook and budgie from Sam
|
124 | 254 | 31998 | 11 |
Check whether Sam should be chased by the police
|
125 | 9 | 32009 | 19 |
Set the attribute bytes for Sam's current disguise
|
231 | 0 | 59136 | 12 |
Copy a play area tile into the back buffer
|
231 | 12 | 59148 | 218 |
Print a tile
|
231 | 232 | 59368 | 37 |
Move a row of the screen left, right, up or down
|
232 | 14 | 59406 | 52 |
Scroll the screen left 8 columns
|
232 | 69 | 59461 | 52 |
Scroll the screen right 8 columns
|
232 | 124 | 59516 | 56 |
Scroll the screen up 6 rows
|
232 | 183 | 59575 | 57 |
Scroll the screen down 6 rows
|
232 | 243 | 59635 | 204 |
Superimpose sprite tiles onto a tile of the play area
|
233 | 200 | 59848 | 13 |
Update the SRB for a character's current animatory state and location
|
233 | 213 | 59861 | 171 |
Update a character's animatory state and location and update the SRB
|
234 | 128 | 60032 | 50 |
Update the display
|
234 | 178 | 60082 | 38 |
Get the keypress offset of the last key pressed (1)
|
234 | 217 | 60121 | 20 |
Get the ASCII code of the last key pressed
|
234 | 242 | 60146 | 6 |
Get the keypress offset of the last key pressed (2)
|
234 | 248 | 60152 | 27 |
Check whether a character is on the sidewalk or road
|
235 | 19 | 60179 | 112 |
Obtain descriptors for a character's current location
|
235 | 133 | 60293 | 22 |
Make a character stand up if he's lying down
|
235 | 155 | 60315 | 5 |
Make a character move up
|
235 | 160 | 60320 | 14 |
Make a character move down
|
235 | 174 | 60334 | 13 |
Make a character move right
|
235 | 187 | 60347 | 157 |
Make a character move left
|
236 | 90 | 60506 | 15 |
Move a character from the midstride or mid-action position and update the SRB
|
236 | 105 | 60521 | 18 |
Make a sound effect
|
236 | 123 | 60539 | 85 |
Move Sam from the midstride or mid-action position and scroll the screen if necessary
|
236 | 210 | 60626 | 5 |
'Q' pressed - up
|
236 | 215 | 60631 | 5 |
'A' pressed - down
|
236 | 220 | 60636 | 5 |
'P' pressed - right
|
236 | 225 | 60641 | 28 |
'O' pressed - left
|
237 | 48 | 60720 | 6 |
Obtain location descriptors for a character standing next to a closed door
|
237 | 54 | 60726 | 84 |
Obtain an identifier for a character's current location
|
237 | 140 | 60812 | 374 |
Determine the next move a character should make to reach his destination
|
240 | 0 | 61440 | 26 |
Perform various main loop tasks
|
240 | 43 | 61483 | 84 |
Main loop
|
240 | 128 | 61568 | 29 |
Update the icon panel, draw the bullets, and scan the event table
|
240 | 160 | 61600 | 3 |
Start (continued)
|
240 | 163 | 61603 | 9 |
Populate addresses 32256-32767 (unused)
|
240 | 172 | 61612 | 6 |
Start the game (unused)
|
240 | 178 | 61618 | 12 |
Return to BASIC (unused)
|
240 | 190 | 61630 | 59 |
End a cutscene
|
241 | 0 | 61696 | 68 |
Open or close a door and update the screen refresh buffer
|
241 | 68 | 61764 | 26 |
Close any doors that need closing
|
241 | 95 | 61791 | 18 |
Collect one byte from a command list
|
241 | 113 | 61809 | 14 |
Copy two bytes from a command list into a character's buffer
|
241 | 127 | 61823 | 15 |
Get a random number
|
241 | 142 | 61838 | 44 |
Cycle a character buffer group forwards and scroll the screen right 8 columns
|
241 | 186 | 61882 | 41 |
Cycle a character buffer group backwards and scroll the screen left 8 columns
|
241 | 227 | 61923 | 25 |
Check for keypresses when Sam is on the phone
|
241 | 252 | 61948 | 132 |
Move the characters
|
242 | 128 | 62080 | 19 |
Terminate a command
|
242 | 147 | 62099 | 20 |
Check whether the door that a character is standing next to is closed
|
242 | 168 | 62120 | 53 |
Check whether a character can open a door
|
242 | 240 | 62192 | 20 |
'K' pressed - knock on or open a door
|
243 | 4 | 62212 | 4 |
Make Sam raise his arm
|
243 | 8 | 62216 | 46 |
Deal with Sam when he has knocked on or is opening a door
|
243 | 56 | 62264 | 14 |
Make a character knock on a door or open it with a key
|
243 | 70 | 62278 | 19 |
Control a character who is knocking on or opening a door (1)
|
243 | 89 | 62297 | 28 |
Control a character who has knocked on a door and is waiting for an answer
|
243 | 117 | 62325 | 14 |
Control a character who is knocking on or opening a door (2)
|
243 | 131 | 62339 | 24 |
Control a character who is knocking on or opening a door (3)
|
243 | 160 | 62368 | 97 |
Update the SRB for a window
|
244 | 4 | 62468 | 50 |
Decrement and check the blown fuse delay counters
|
244 | 54 | 62518 | 79 |
Check whether a character is standing next to a light switch
|
244 | 133 | 62597 | 97 |
Make a character flip a light switch off or on occasionally
|
244 | 230 | 62694 | 21 |
Make a character flip a light switch on or off occasionally
|
245 | 160 | 62880 | 12 |
Make a character flip a light switch off occasionally
|
245 | 172 | 62892 | 33 |
Guide a character up or down staircases
|
245 | 206 | 62926 | 40 |
Guide a character across a floor to his destination
|
245 | 246 | 62966 | 5 |
Make a character consider switching a light off (unused)
|
245 | 251 | 62971 | 5 |
Guide a character from one spot on the sidewalk or road to another
|
246 | 0 | 62976 | 134 |
Make a character go to a location
|
246 | 134 | 63110 | 7 |
Make a character stop running and restart the command list
|
246 | 142 | 63118 | 10 |
Check whether a gangster is midstride or has his arm raised
|
246 | 152 | 63128 | 9 |
Check whether a character is midstride
|
246 | 162 | 63138 | 14 |
Calculate the x-coordinate of the front column of a character's sprite
|
246 | 176 | 63152 | 44 |
Check whether a character is standing next to a light switch or window blind
|
246 | 222 | 63198 | 7 |
Restart the command list
|
246 | 233 | 63209 | 72 |
Make a character walk up or down
|
247 | 49 | 63281 | 23 |
Make a character drop Sam
|
247 | 72 | 63304 | 82 |
Make a character walk up and down until somebody knocks on a door
|
247 | 154 | 63386 | 17 |
Initialise a cat's interruptible subcommand
|
247 | 171 | 63403 | 5 |
Initialise and execute an interruptible subcommand
|
247 | 177 | 63409 | 14 |
Change the primary command routine address
|
247 | 191 | 63423 | 14 |
Make a character open a door that has been knocked on
|
247 | 205 | 63437 | 13 |
Open a door
|
247 | 218 | 63450 | 22 |
Collect the window flags for a play area location
|
247 | 240 | 63472 | 47 |
Initialise the character buffers for character groups 215-221
|
248 | 32 | 63520 | 10 |
Make a character walk up and down for a while
|
248 | 42 | 63530 | 28 |
Control a cat
|
248 | 70 | 63558 | 56 |
Make a cat run up or down
|
248 | 126 | 63614 | 48 |
Initialise the character buffers for characters 222-230
|
248 | 174 | 63662 | 87 |
Prepare for demo mode or a new game
|
249 | 5 | 63749 | 25 |
Check whether a character is in the correct spot to enter a building
|
249 | 30 | 63774 | 10 |
Check whether a character should enter a building or knock first
|
249 | 40 | 63784 | 53 |
Prepare the sprite tiles used by a character when lying down
|
249 | 94 | 63838 | 115 |
Change Sam's disguise
|
249 | 210 | 63954 | 27 |
Knock a character over
|
249 | 237 | 63981 | 13 |
Initialise an uninterruptible subcommand if possible
|
249 | 250 | 63994 | 10 |
Initialise an uninterruptible subcommand
|
250 | 5 | 64005 | 116 |
Deal with a character who has been knocked over
|
250 | 121 | 64121 | 9 |
Check whether there are any messages remaining in the message queue
|
250 | 131 | 64131 | 31 |
Deal with a character who has nearly recovered from being knocked over
|
250 | 162 | 64162 | 54 |
Check whether a falling character has hit anyone on the head
|
250 | 218 | 64218 | 9 |
'D' pressed - change disguise
|
250 | 227 | 64227 | 96 |
Move a falling character to the next point in his descent
|
251 | 75 | 64331 | 7 |
Control a character who has stepped off the roof of a building
|
251 | 82 | 64338 | 174 |
Deal with a character who is about to step off the roof of a building
|
252 | 0 | 64512 | 37 |
Deal with a character who is stepping onto or over the roof of no. 19
|
252 | 37 | 64549 | 30 |
Add or remove the rope above the roof of no. 19
|
252 | 70 | 64582 | 17 |
Generate the table of mirrored values of 0-255
|
252 | 87 | 64599 | 19 |
Hide the play area
|
252 | 106 | 64618 | 120 |
Scroll the screen up and down 7 times
|
252 | 228 | 64740 | 14 |
Make a sound effect
|