Routines 
Prev: 28940  Up: Map  Next: 29003 


28942  LD A,(32764)  Collect Sam's status flags from 32764  
28945  DEC A  Now A=0 if Sam's being carried at the moment  
28946  AND A  Clear the carry flag, and set the zero flag if Sam's being carried  
28947  RET Z  Return with the carry flag reset if Sam's being carried  
Sam is not being carried at the moment. Compare his x and ycoordinates with those of the character chasing him.


28948  LD L,2  Point HL at byte 2 of the character's buffer  
28950  CALL 25944  Collect Sam's x and ycoordinates in E and D  
28953  NOP  
28954  LD A,(HL)  A=character's ycoordinate  
28955  INC A  Is the character more than one ycoordinate above or below Sam?  
28956  SUB D  
28957  CP 3  
28959  RET NC  Return if so  
28960  DEC L  L=1  
28961  LD A,(HL)  A=character's xcoordinate  
28962  DEC L  L=0  
28963  BIT 7,(HL)  Is the character facing left?  
28965  JR Z,28969  Jump if so  
28967  ADD A,2  A=2+character's xcoordinate  
28969  SUB E  Is the character facing Sam and no more than two xcoordinates away from him?  
28970  CP 3  
28972  RET NC  Return if not  
The character is facing Sam, no more than one ycoordinate above or below him, and no more than two xcoordinates to the left or right of him. Now we compare the zcoordinates.


28973  LD A,(58884)  A=Sam's zcoordinate  
28976  LD L,4  Set the zero flag if the character's zcoordinate matches Sam's  
28978  CP (HL)  
28979  SCF  Return with the carry flag set if the character can pick up Sam at his current location  
28980  RET Z  
The zcoordinates don't match. However, the character will still be able to pick up Sam if they are both standing at or near the open entrance to a building (one inside and the other outside).


28981  PUSH HL  Save the character number briefly  
28982  LD H,230  230=Sam  
28984  CALL 60179  Obtain descriptors for Sam's current location  
28987  POP HL  Restore the character number to H  
28988  CP 3  Is Sam standing at the open entrance to a building?  
28990  JR Z,28979  Jump if so (Sam can be picked up here)  
28992  PUSH HL  Save the character number briefly  
28993  CALL 60179  Obtain descriptors for the character's current location  
28996  POP HL  Restore the character number to H  
28997  CP 3  Is the character standing at the open entrance to a building?  
28999  JR Z,28979  Jump if so (the character can pick Sam up here)  
29001  AND A  Clear the carry flag (Sam cannot be picked up)  
29002  RET 
Prev: 28940  Up: Map  Next: 29003 