![]() |
Routines |
| Prev: 25532 | Up: Map | Next: 25691 |
|
||||||||||
| 25534 | LD A,(HL) | Reset bits 5 and 6 of byte 122 of the character's buffer, indicating that he should no longer walk fast or slow continuously (if he was doing so) | ||||||||
| 25535 | AND 159 | |||||||||
| 25537 | LD (HL),A | |||||||||
| 25538 | LD L,101 | Get the destination y-coordinate from the command list and place it in byte 101 of the character's buffer | ||||||||
| 25540 | CALL 24972 | |||||||||
| 25543 | LD (HL),A | |||||||||
| 25544 | INC L | Get the destination x-coordinate from the command list and place it in byte 102 of the character's buffer | ||||||||
| 25545 | CALL 24972 | |||||||||
| 25548 | LD (HL),A | |||||||||
|
This entry point is used by the routines at 27111 and 27266.
|
||||||||||
| 25549 | NOP | |||||||||
| 25550 | CALL 27888 | Make the character stand up if he's not already | ||||||||
| 25553 | LD L,97 | Collect the character's x- and y-coordinates in E and D | ||||||||
| 25555 | LD D,(HL) | |||||||||
| 25556 | INC L | |||||||||
| 25557 | LD E,(HL) | |||||||||
| 25558 | LD L,101 | Bytes 101 and 102 of the character's buffer contain the destination coordinates | ||||||||
| 25560 | LD BC,25404 | Point BC at 25404 (guide character to intermediate destination) | ||||||||
| 25563 | LD A,D | A=character's y-coordinate | ||||||||
| 25564 | CP (HL) | Is the character on the same floor as his destination? | ||||||||
| 25565 | JP Z,25750 | Jump if so | ||||||||
| 25568 | CP 155 | Is the character on the top floor? | ||||||||
| 25570 | JP Z,25695 | Jump if so | ||||||||
| 25573 | CP 169 | Is the character on the bottom floor? | ||||||||
| 25575 | JP Z,25700 | Jump if so | ||||||||
|
The character is on the middle floor and is destined for another floor.
|
||||||||||
| 25578 | LD A,(HL) | A=y-coordinate of destination | ||||||||
| 25579 | CP 169 | Set the zero flag if the character is going to the bottom floor | ||||||||
| 25581 | LD A,38 | This is the x-coordinate of the wall between the White and Exam Rooms | ||||||||
| 25583 | JR NZ,25639 | Jump if the character is going to the top floor | ||||||||
|
This entry point is used by the routine at 25695 with A=57 (the x-coordinate of the wall between the Map and Reading Rooms).
|
||||||||||
| 25585 | CP E | E holds the character's x-coordinate | ||||||||
| 25586 | LD A,12 | This is the x-coordinate of the tops of the staircases at the left of the skool | ||||||||
| 25588 | JR NC,25592 | Jump if the character is to the left of the wall whose x-coordinate (38 or 57) was in A | ||||||||
|
This entry point is used by the routine at 25750 when the character is on the right-middle or right-top floor and needs to go down the stairs to get to his destination.
|
||||||||||
| 25590 | LD A,77 | This is the x-coordinate of the tops of the staircases at the right of the skool | ||||||||
|
This entry point is used by the routine at 25750 with A=12 (the x-coordinate of the tops of the staircases at the left of the skool) when the character is on the left-middle or left-top floors and needs to go down the stairs to get to his destination.
|
||||||||||
| 25592 | CP E | Is the character at the top of the stairs he needs to descend? | ||||||||
| 25593 | JR NZ,25627 | Jump if not | ||||||||
| 25595 | LD L,96 | Byte 96 of the character's buffer holds his animatory state | ||||||||
| 25597 | BIT 0,(HL) | Is the character midstride (about to descend)? | ||||||||
| 25599 | JR NZ,25627 | Jump if so | ||||||||
| 25601 | CP 48 | Is the target staircase on the right of the skool? | ||||||||
| 25603 | JR NC,25611 | Jump if so | ||||||||
| 25605 | BIT 7,(HL) | Is the character facing left? | ||||||||
| 25607 | JR Z,25615 | Jump if so | ||||||||
| 25609 | JR 25623 | |||||||||
|
The character must go to the top of a staircase at the right of the skool.
|
||||||||||
| 25611 | BIT 7,(HL) | Is the character facing left? | ||||||||
| 25613 | JR Z,25623 | Jump if so | ||||||||
|
This entry point is used by the routine at 25700.
|
||||||||||
| 25615 | CALL 25108 | Update the SRB for the character's current location | ||||||||
| 25618 | XOR 128 | Turn the character round | ||||||||
| 25620 | JP 25008 | Update the character's animatory state and location and update the SRB | ||||||||
| 25623 | LD C,144 | BC=25488 (guide character down stairs) | ||||||||
|
This entry point is used by the routine at 25700.
|
||||||||||
| 25625 | LD A,15 | Going up or down a staircase entails 15 movements | ||||||||
| 25627 | LD L,105 | Place the interruptible subcommand routine address in BC (25404, 25484 or 25488) into bytes 105 and 106 of the character's buffer | ||||||||
| 25629 | LD (HL),C | |||||||||
| 25630 | INC L | |||||||||
| 25631 | LD (HL),B | |||||||||
| 25632 | INC L | Byte 107 will contain either (a) the x-coordinate of the next intermediate destination (i.e. the final destination itself, or the top or bottom of the next staircase the character must negotiate first) (BC=25404), or (b) 15, that being the number of movements required to ascend or descend a staircase (BC=25484 or 25488) | ||||||||
| 25633 | LD (HL),A | |||||||||
| 25634 | INC L | Initialise byte 108 to 9; this ensures that the routine at 25404 will move the character at most 9 paces towards the destination before relinquishing control (and thus giving the routine at 25126 a chance to check whether the command list should be restarted, e.g. for a new lesson) | ||||||||
| 25635 | LD (HL),9 | |||||||||
| 25637 | PUSH BC | Make an indirect jump to 25404, 25484 or 25488 | ||||||||
| 25638 | RET | |||||||||
|
The character is on the middle floor but is destined for the top floor. At this point A=38 (the x-coordinate of the wall between the White and Exam Rooms).
|
||||||||||
| 25639 | INC L | Point HL at the destination x-coordinate | ||||||||
| 25640 | CP E | |||||||||
| 25641 | LD A,57 | This is the x-coordinate of the wall between the Map and Reading Rooms | ||||||||
| 25643 | JR NC,25667 | Jump if the character is to the left of the White Room wall | ||||||||
| 25645 | CP (HL) | (HL) holds the destination x-coordinate | ||||||||
| 25646 | LD A,70 | This is the x-coordinate of the bottoms of the staircases at the right of the skool | ||||||||
| 25648 | JR NC,25590 | Jump if the destination is to the left of the Map Room wall | ||||||||
| 25650 | CP E | Is the character at the bottom of the staircase just outside the Exam Room? | ||||||||
| 25651 | JR NZ,25627 | Jump if not (to send the character there) | ||||||||
| 25653 | LD L,96 | Byte 96 of the character's buffer holds his animatory state | ||||||||
| 25655 | BIT 0,(HL) | Is the character midstride? | ||||||||
| 25657 | JR NZ,25627 | Jump if so (to finish the stride) | ||||||||
| 25659 | BIT 7,(HL) | Is the character facing left? | ||||||||
| 25661 | JR Z,25615 | Jump if so (to turn the character round) | ||||||||
| 25663 | LD C,140 | BC=25484 (guide character up stairs) | ||||||||
| 25665 | JR 25625 | |||||||||
|
The character is on the middle floor to the left of the White Room wall, and is destined for the top floor. At this point A=57 (the x-coordinate of the wall between the Map and Reading Rooms).
|
||||||||||
| 25667 | CP (HL) | (HL) holds the destination x-coordinate | ||||||||
| 25668 | LD A,12 | This is the x-coordinate of the tops of the staircases at the left of the skool | ||||||||
| 25670 | JR C,25592 | Jump if the destination is to the right of the Map Room wall | ||||||||
| 25672 | LD A,19 | This is the x-coordinate of the bottoms of the staircases at the left of the skool | ||||||||
| 25674 | CP E | Is the character at the bottom of the staircase just outside the White Room? | ||||||||
| 25675 | JR NZ,25627 | Jump if not (to send the character there) | ||||||||
| 25677 | LD L,96 | Byte 96 of the character's buffer holds his animatory state | ||||||||
| 25679 | BIT 0,(HL) | Is the character midstride? | ||||||||
| 25681 | JR NZ,25627 | Jump if so (to finish the stride) | ||||||||
| 25683 | BIT 7,(HL) | Is the character facing right? | ||||||||
| 25685 | JR NZ,25615 | Jump if so (to turn the character round) | ||||||||
| 25687 | LD C,140 | BC=25484 (guide character up stairs) | ||||||||
| 25689 | JR 25625 | |||||||||
| Prev: 25532 | Up: Map | Next: 25691 |