![]() |
Routines |
B | Number of characters to check |
C | 135 or 143: animatory state mask |
D | Number of first character to check |
H | Number of character trying to sit down |
L | 1 |
26136 | CALL 26145 | Any of the first B characters sitting here? |
26139 | RET Z | Return if so |
26140 | LD BC,655 | B=2, C=143 |
26143 | LD D,206 | 206=BOY WANDER |
26145 | LD E,1 | |
26147 | LD A,(DE) | A=test character's x-coordinate |
26148 | CP (HL) | Compare with that of the character trying to sit down |
26149 | JR NZ,26171 | Jump to consider the next character if they don't match |
26151 | INC E | E=2 |
26152 | INC L | L=2 |
26153 | LD A,(DE) | A=test character's y-coordinate |
26154 | DEC E | E=1 |
26155 | CP (HL) | Is the test character at the same location as the character wanting to sit? |
26156 | DEC HL | L=1 |
26157 | JR NZ,26171 | Jump if not |
26159 | DEC E | E=0 |
26160 | LD A,(DE) | A=test character's animatory state |
26161 | AND C | C=10001111 for BOY WANDER, ANGELFACE or ERIC; 10000111 for anybody else |
26162 | CP 4 | Is the test character sitting in the chair here? |
26164 | JR NZ,26171 | Jump if not |
26166 | LD E,18 | Is there a routine address in bytes 17 and 18 of the test character's buffer? |
26168 | LD A,(DE) | |
26169 | AND A | |
26170 | RET Z | Return if not |
26171 | INC D | Next character to test |
26172 | DJNZ 26145 | Jump back until done |
26174 | RET |