Routines 
Prev: 710C  Up: Map  Next: 714B 


710E  LD A,($7FFC)  Collect Sam's status flags from 7FFC  
7111  DEC A  Now A=0 if Sam's being carried at the moment  
7112  AND A  Clear the carry flag, and set the zero flag if Sam's being carried  
7113  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.


7114  LD L,$02  Point HL at byte 0x02 of the character's buffer  
7116  CALL $6558  Collect Sam's x and ycoordinates in E and D  
7119  NOP  
711A  LD A,(HL)  A=character's ycoordinate  
711B  INC A  Is the character more than one ycoordinate above or below Sam?  
711C  SUB D  
711D  CP $03  
711F  RET NC  Return if so  
7120  DEC L  L=0x01  
7121  LD A,(HL)  A=character's xcoordinate  
7122  DEC L  L=0x00  
7123  BIT 7,(HL)  Is the character facing left?  
7125  JR Z,$7129  Jump if so  
7127  ADD A,$02  A=2+character's xcoordinate  
7129  SUB E  Is the character facing Sam and no more than two xcoordinates away from him?  
712A  CP $03  
712C  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.


712D  LD A,($E604)  A=Sam's zcoordinate  
7130  LD L,$04  Set the zero flag if the character's zcoordinate matches Sam's  
7132  CP (HL)  
7133  SCF  Return with the carry flag set if the character can pick up Sam at his current location  
7134  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).


7135  PUSH HL  Save the character number briefly  
7136  LD H,$E6  0xE6=Sam  
7138  CALL $EB13  Obtain descriptors for Sam's current location  
713B  POP HL  Restore the character number to H  
713C  CP $03  Is Sam standing at the open entrance to a building?  
713E  JR Z,$7133  Jump if so (Sam can be picked up here)  
7140  PUSH HL  Save the character number briefly  
7141  CALL $EB13  Obtain descriptors for the character's current location  
7144  POP HL  Restore the character number to H  
7145  CP $03  Is the character standing at the open entrance to a building?  
7147  JR Z,$7133  Jump if so (the character can pick Sam up here)  
7149  AND A  Clear the carry flag (Sam cannot be picked up)  
714A  RET 
Prev: 710C  Up: Map  Next: 714B 