Routines |
Prev: 29088 | Up: Map | Next: 29149 |
Continues from the routine at 29559. The policeman recently spotted Sam while he was wearing a disguise unknown to the police; this routine sends that policeman back to where he first spotted Sam when the disguise becomes known.
|
||||||||
29100 | LD L,31 | Pick up byte 31 of the policeman's buffer | ||||||
29102 | LD A,(HL) | |||||||
29103 | AND 63 | D=Sam's y-coordinate when he was spotted by the policeman while wearing a disguise unknown to the police | ||||||
29105 | LD D,A | |||||||
29106 | LD A,(HL) | Pick up byte 31 again | ||||||
29107 | LD C,4 | Initialise the destination z-coordinate to 4 | ||||||
29109 | AND 192 | Was Sam's z-coordinate 4 (on the sidewalk or road) when he was spotted? | ||||||
29111 | JR Z,29116 | Jump if so | ||||||
29113 | RLCA | Move bits 6 and 7 of A into bits 0 and 1 | ||||||
29114 | RLCA | |||||||
29115 | LD C,A | C=Sam's z-coordinate when he was spotted | ||||||
29116 | DEC L | L=30 | ||||||
29117 | LD E,(HL) | E=Sam's x-coordinate when he was spotted | ||||||
29118 | CALL 29076 | Set the policeman's destination coordinates to (E,D) | ||||||
29121 | CALL 29091 | Copy the destination coordinates and location identifier to 32731 | ||||||
29124 | LD L,29 | Point HL at byte 29 of the policeman's buffer | ||||||
This entry point is used by the routine at 29218.
|
||||||||
29126 | LD A,(HL) | Pick up byte 29 of the policeman's buffer | ||||||
29127 | LD (HL),0 | Set byte 29 of the policeman's buffer to 0 now that the disguise Sam was wearing is known to the police | ||||||
29129 | RLCA | Move bits 5-7 of A (which hold the ID of the disguise that Sam was wearing) into bits 0-2 | ||||||
29130 | RLCA | |||||||
29131 | RLCA | |||||||
29132 | AND 7 | Keep only bits 0-2 | ||||||
29134 | ADD A,160 | Now A=64, 32, 16, 8, 4, 2, or 1, with the set bit corresponding to the disguise that Sam was wearing | ||||||
29136 | LD D,A | |||||||
29137 | LD E,21 | |||||||
29139 | LD A,(DE) | |||||||
29140 | LD DE,32744 | 32744 holds the disguise status flags | ||||||
29143 | EX DE,HL | Set the appropriate bit at 32744, making the disguise known to the police | ||||||
29144 | OR (HL) | |||||||
29145 | LD (HL),A | |||||||
29146 | JP 32009 | Set the attribute bytes for Sam's current disguise in the bottom right corner of the screen |
Prev: 29088 | Up: Map | Next: 29149 |