Routines 
Prev: 25940  Up: Map  Next: 26062 


25944  LD L,0  Point HL at byte 0 of the character's buffer  
25946  BIT 0,(HL)  Is the teacher midstride?  
25948  JR Z,25963  Jump if not  
This entry point is used by the routines at 32379, 61595 and 62794 to make the teacher who his chasing ERIC finish his stride.


25950  CALL 25012  Update the SRB for the teacher's current animatory state and location  
25953  LD B,A  Save the animatory state in B temporarily  
25954  LD L,15  Byte 15 holds the ycoordinate adjustment to make as the teacher finishes this stride: 0 normally, 1 if descending a staircase (see later in this routine)  
25956  LD A,(HL)  
25957  ADD A,D  Make the appropriate ycoordinate adjustment  
25958  LD D,A  
25959  LD A,B  Restore the animatory state to A  
25960  JP 25600  Make the teacher finish his stride  
The teacher is not midstride. Is he close enough to ERIC to stop the chase?


25963  CALL 28242  Is the teacher on a staircase?  
25966  JR C,26007  Jump if so  
25968  LD DE,(53761)  Pick up ERIC's coordinates in DE  
25972  LD L,0  Byte 0 holds the teacher's animatory state  
25974  BIT 7,(HL)  Is the teacher facing left?  
25976  LD L,1  
25978  JR Z,25984  Jump if so  
25980  LD A,E  A=ERIC's xcoordinate  
25981  SUB (HL)  Subtract that of the teacher  
25982  JR 25986  
25984  LD A,(HL)  A=teacher's xcoordinate  
25985  SUB E  Subtract that of ERIC  
25986  CP 4  Is ERIC less than 4 horizontal spaces in front of the teacher?  
25988  JR NC,26004  Jump if not  
25990  INC L  L=2  
25991  LD A,(HL)  A=teacher's ycoordinate  
25992  SUB 4  
25994  JR C,25999  Jump if the teacher's on the top floor  
25996  CP D  Is ERIC at least 4 vertical spaces above the teacher?  
25997  JR NC,26004  Jump if so  
25999  ADD A,7  Set the carry flag if ERIC is at least 4 vertical spaces below the teacher  
26001  CP D  
26002  CCF  Return if ERIC is within 3 vertical spaces either side of the teacher  
26003  RET C  
The teacher is not close enough to ERIC yet to stop chasing him. Now to figure out the teacher's next move.


26004  CALL 25534  D=ERIC's ycoordinate (or the ycoordinate of the floor he's closest to if his feet are not on the floor)  
26007  CALL 25843  Work out how the teacher can reach ERIC from here  
26010  BIT 3,A  Is there a closed door in the way?  
26012  JP NZ,28834  Open it if so  
There is no closed door in the way. Is the teacher on a staircase?


26015  LD BC,0  Initialise the staircase indicator to 0  
26018  CP 2  Is the teacher descending a staircase?  
26020  JR NZ,26023  Jump if not  
26022  INC B  B=1 (teacher is descending a staircase)  
26023  JR NC,26026  Jump if the teacher is not ascending a staircase  
26025  DEC C  C=1 (teacher is ascending a staircase)  
26026  CP 3  Is the teacher on a staircase?  
26028  JR C,26045  Jump if so  
26030  LD L,0  Byte 0 holds the teacher's animatory state  
26032  CP 4  Set the carry flag if the teacher should go left  
26034  BIT 7,(HL)  Set the zero flag if the teacher is facing left  
26036  JR C,26043  Jump if the teacher must go left to reach ERIC  
26038  JR NZ,26045  Jump if the teacher is facing right  
26040  JP 25648  Turn the teacher round  
26043  JR NZ,26040  Turn the teacher round if he's facing right  
Now BC is still 0 if the teacher is not on a staircase. Otherwise, B=1 and C=0 if he's descending a staircase, or B=0 and C=1 if he's ascending a staircase. The value in B is the ycoordinate adjustment to make when the teacher finishes this stride later, and the value in C is the ycoordinate adjustment to make as he goes midstride now.


26045  LD L,15  Set byte 15 of teacher's buffer to 1 if the teacher is descending a staircase, or 0 if he's ascending a staircase or not on one  
26047  LD (HL),B  
26048  PUSH BC  
26049  CALL 25012  Update the SRB for the teacher's current animatory state and location  
26052  POP BC  
26053  BIT 0,C  Is the teacher ascending a staircase?  
26055  JR Z,26058  Jump if not  
26057  DEC D  Up a stair as the teacher goes midstride  
26058  INC A  One foot forward (midstride)  
26059  JP 24880  Update the teacher's animatory state and location and update the SRB 
Prev: 25940  Up: Map  Next: 26062 