![]() |
Routines |
| A | Meaning | 0 | Follower is at same coordinates as target | 1 | Follower should go upstairs | 2 | Follower should go downstairs | 3 | Follower should go left | 4 | Follower should go right |
|---|
| DE | Destination coordinates |
| H | Character number (152-172) of follower |
| 31452 | LD L,97 | Byte 97 holds the follower's y-coordinate |
| 31454 | LD A,(HL) | Pick this up in A |
| 31455 | CP 155 | Is the follower on the top floor? |
| 31457 | JR Z,31480 | Jump if so |
| 31459 | CP 162 | Is the follower on the middle floor? |
| 31461 | JR Z,31480 | Jump if so |
| 31463 | CP 169 | Is the follower on the bottom floor? |
| 31465 | JR Z,31480 | Jump if so |
| 31467 | LD L,98 | Byte 98 holds the follower's x-coordinate |
| 31469 | LD A,(HL) | Pick this up in A |
| 31470 | LD L,96 | Byte 96 holds the follower's animatory state |
| 31472 | ADD A,80 | A=0 if the follower is going upstairs, 1 if he's going downstairs |
| 31474 | XOR (HL) | |
| 31475 | AND 128 | |
| 31477 | RLCA | |
| 31478 | INC A | |
| 31479 | RET |
| 31480 | CP D | Is the follower on the same floor as the target? |
| 31481 | JR NZ,31549 | Jump if not |
| 31483 | INC L | Pick up the follower's x-coordinate in A |
| 31484 | LD A,(HL) | |
| 31485 | SUB E | Is the follower in the same spot as his target? |
| 31486 | RET Z | Return if so |
| 31487 | DEC L | Pick up the follower's y-coordinate in A |
| 31488 | LD A,(HL) | |
| 31489 | CP 169 | Is the follower on the bottom floor? |
| 31491 | JR NZ,31501 | Jump if not |
| 31493 | INC HL | L=98 |
| 31494 | LD A,(HL) | A=follower's x-coordinate |
| 31495 | CP E | Set the carry flag if the follower should go right |
| 31496 | LD A,3 | A=3 if the follower should go left, 4 if he should go right |
| 31498 | ADC A,0 | |
| 31500 | RET |
| 31501 | CP 162 | 162=middle floor |
| 31503 | INC HL | |
| 31504 | LD A,57 | 57=x-coordinate of wall between Reading and Map Rooms |
| 31506 | JR NZ,31510 | Jump if follower and target are on the top floor |
| 31508 | LD A,38 | 38=x-coordinate of wall between White and Exam Rooms |
| 31510 | CP (HL) | Compare follower's x-coordinate with that of the wall |
| 31511 | JR C,31531 | Jump if the follower is to the right of the wall |
| 31513 | CP E | Is the target character to the left of the wall? |
| 31514 | JR NC,31494 | Jump if so |
| 31516 | LD A,(HL) | A=follower's x-coordinate |
| 31517 | CP 12 | 12=x-coordinate of top of stairs at left of skool |
| 31519 | JR NZ,31496 | Jump unless the follower is at the top of the stairs |
| 31521 | LD L,96 | Byte 96 holds the follower's animatory state |
| 31523 | LD A,4 | A=4 will make the follower turn round if facing left |
| 31525 | BIT 7,(HL) | Is the follower facing left? |
| 31527 | RET Z | Return if so |
| 31528 | LD A,2 | A=2 will make the follower go down the stairs |
| 31530 | RET |
| 31531 | CP E | Is the target character to the right of the wall? |
| 31532 | JR C,31494 | Jump if so |
| 31534 | LD A,(HL) | A=follower's x-coordinate |
| 31535 | CP 77 | 77=x-coordinate of top of stairs at right of skool |
| 31537 | JR NZ,31496 | Jump unless the follower is at the top of a staircase |
| 31539 | LD L,96 | Byte 96 holds the follower's animatory state |
| 31541 | LD A,3 | A=3 will make the follower turn round if facing right |
| 31543 | BIT 7,(HL) | Is the follower facing right? |
| 31545 | RET NZ | Return if so |
| 31546 | LD A,2 | A=2 will make the follower go down the stairs |
| 31548 | RET |
| 31549 | JR NC,31565 | Jump if the target is on a floor above the follower |
| 31551 | CP 162 | 162=middle floor |
| 31553 | INC HL | L=98 |
| 31554 | LD A,57 | 57=x-coordinate of wall between Reading and Map Rooms |
| 31556 | JR NZ,31560 | Jump if the follower is on the top floor |
| 31558 | LD A,38 | 38=x-coordinate of wall between White and Exam Rooms |
| 31560 | CP (HL) | Compare follower's x-coordinate with that of the wall |
| 31561 | JR NC,31516 | Jump if the follower is to the left of the wall (and so needs to go to the top of a staircase on the left) |
| 31563 | JR C,31534 | Jump if the follower is to the right of the wall (and so needs to go to the top of a staircase on the right) |
| 31565 | LD A,D | A=target's y-coordinate |
| 31566 | LD D,155 | 155=top floor |
| 31568 | CP 162 | 162=middle floor |
| 31570 | LD A,57 | 57=x-coordinate of wall between Reading and Map Rooms |
| 31572 | JR C,31578 | Jump if the target is above the middle floor |
| 31574 | LD D,162 | 162=middle floor |
| 31576 | LD A,38 | 38=x-coordinate of wall between White and Exam Rooms |
| 31578 | CP E | Compare target's x-coordinate with that of the wall |
| 31579 | LD E,97 | Signal: target is to the right of the wall |
| 31581 | JR C,31585 | Jump if the target is to the right of the wall |
| 31583 | LD E,1 | Signal: target is to the left of the wall |
| 31585 | LD A,(HL) | A=follower's y-coordinate |
| 31586 | CP 169 | 169=bottom floor |
| 31588 | INC HL | L=98 |
| 31589 | JR NZ,31622 | Jump if the follower is on the middle floor |
| 31591 | LD A,19 | 19=x-coordinate of bottom of stairs at left of skool |
| 31593 | DEC E | Is the target to the left of the wall? |
| 31594 | JR Z,31598 | Jump if so |
| 31596 | LD A,70 | 70=x-coordinate of bottom of stairs at right of skool |
| 31598 | CP (HL) | Compare this with follower's x-coordinate |
| 31599 | CCF | Set carry flag if follower should go right |
| 31600 | JR NZ,31496 | Jump if follower is not at bottom of staircase |
| 31602 | LD L,96 | Byte 96 holds the follower's animatory state |
| 31604 | CP 19 | 19=x-coordinate of bottom of stairs at left of skool |
| 31606 | LD A,1 | |
| 31608 | JR Z,31616 | Jump if follower should go up stairs at left of skool |
| 31610 | BIT 7,(HL) | Is the follower facing right? |
| 31612 | RET NZ | Jump if so |
| 31613 | LD A,4 | A=3 will make the follower turn round and face right |
| 31615 | RET | |
| 31616 | BIT 7,(HL) | Is the follower facing left? |
| 31618 | RET Z | Return (with A=1) if so |
| 31619 | LD A,3 | A=3 will make the follower turn round and face left |
| 31621 | RET |
| 31622 | LD A,38 | 38=x-coordinate of wall between White and Exam Rooms |
| 31624 | CP (HL) | Compare this with the follower's x-coordinate |
| 31625 | LD A,97 | Signal: follower is to the right of the wall |
| 31627 | JR C,31631 | Jump if the follower is to the right of the wall |
| 31629 | LD A,1 | Signal: follower is to the left of the wall |
| 31631 | CP E | Is the target on the same side of the skool? |
| 31632 | JR Z,31591 | Jump if so (follower must go up the nearest staircase) |
| 31634 | CCF | Set carry flag if follower must go down a staircase at the right of the skool, and reset it if he must go down a staircase at the left of the skool |
| 31635 | JR 31561 |