Routines 
Prev: 31670  Up: Map  Next: 31807 
31713  LD A,(32745)  Collect the object inventory flags from 32745  
31716  BIT 6,A  Has Sam got the hook?  
31718  RET Z  Return if not  
31719  LD A,(58884)  A=Sam's zcoordinate  
31722  LD HL,(58881)  Collect Sam's x and ycoordinates in L and H  
31725  RRCA  Is Sam's zcoordinate 1 (indoors)?  
31726  JR NC,31755  Jump if not  
31728  LD A,L  A=x (Sam's xcoordinate)  
31729  CP 222  Is Sam in no. 17 or no. 15 (x>=222)?  
31731  RET NC  Return if so  
31732  CP 207  Is Sam in no. 19 (207<=x<222)?  
31734  JR NC,31751  Jump if so  
31736  CP 122  Is Sam in the police station, no. 27, or the apartments next to no. 19 (122<=x<207)?  
31738  JR NC,31747  Jump if so  
31740  CP 103  Is Sam in no. 31 (103<=x<122)?  
31742  JR NC,31751  Jump if so  
31744  CP 25  Is Sam in no. 74 or the hotel (25<=x<103)?  
31746  RET NC  Return if so  
31747  LD A,7  7 is the ycoordinate of the roof of the police station, no. 27, and the apartment building next to no. 19  
31749  JR 31753  
31751  LD A,13  13 is the ycoordinate of the roofs of no. 19 and no. 31  
31753  CP H  Is Sam on the roof of a building?  
31754  RET C  Return if not  
Sam is in a location that is amenable to hookthrowing.


31755  INC H  H=1+Sam's ycoordinate  
31756  LD A,(58880)  A=Sam's animatory state  
31759  AND 128  Keep only the direction bit (bit 7)  
31761  JR Z,31764  Jump if Sam is facing left  
31763  INC L  L=1+Sam's xcoordinate  
31764  ADD A,121  A=121/249 (hook)  
31766  EX DE,HL  DE=hook's initial coordinates  
31767  LD HL,58643  Point HL at byte 19 of character buffer 229  
31770  INC (HL)  Is the current owner of character buffer 229 (the hook or a banknote) under the control of an uninterruptible subcommand routine?  
31771  DEC (HL)  
31772  RET NZ  Return if so (the hook must currently be in flight, which is unlikely)  
The hook will be thrown. Prepare it for launch now.


31773  INC L  Initialise the distance remaining for the hook to fly (stored in byte 20 of the hook's buffer)  
31774  LD (HL),20  
31776  DEC L  Place the address of the uninterruptible subcommand routine at 31670 into bytes 18 and 19 of the hook's buffer  
31777  LD (HL),123  
31779  DEC L  
31780  LD (HL),182  
31782  LD L,4  Set the hook's zcoordinate to 4  
31784  LD (HL),L  
31785  DEC L  Set bit 7 of byte 3 of the hook's buffer, thus making the hook fly as fast as possible  
31786  LD (HL),128  
31788  DEC L  Initialise the hook's x and ycoordinates  
31789  LD (HL),D  
31790  DEC L  
31791  LD (HL),E  
31792  DEC L  Initialise the hook's animatory state  
31793  LD (HL),A  
31794  CALL 59861  Update the hook's animatory state and location and update the SRB  
31797  LD HL,32745  The object inventory flags are stored at 32745  
31800  RES 6,(HL)  Clear bit 6, thus removing the hook from Sam's possession  
31802  LD H,230  230=Sam  
31804  JP 62212  Raise Sam's arm and make a sound effect 
Prev: 31670  Up: Map  Next: 31807 