Routines
 Prev: 25918 Up: Map Next: 25989
25944: Determine Sam's location
 Used by the routines at 28942, 29072 and 29218. Returns with Sam's x-, y- and z-coordinates (adjusted appropriately if Sam is falling, rolling, somersaulting or being carried) in E, D and A. 25944 LD DE,(58881) Collect Sam's x- and y-coordinates in E and D 25948 LD A,(32764) Pick up Sam's status flags from 32764 25951 BIT 3,A Is Sam rolling or somersaulting? 25953 JR NZ,25967 Jump if so 25955 AND 129 Is Sam either being carried by a gangster or policeman, or falling from the roof of a building? 25957 LD A,(58884) Return with A holding Sam's z-coordinate if not 25960 RET Z Sam is either being carried by a policeman, or falling from the roof of a building. 25961 LD A,2 2=behind people on the sidewalk 25963 LD DE,9896 D=38, E=168 (out of reach) 25966 RET Sam is rolling or somersaulting. 25967 LD A,(58880) A=Sam's animatory state 25970 AND 127 Discard bit 7 (the direction bit) 25972 CP 15 Is Sam horizontal at the moment (animatory state 15 or 31)? 25974 JR C,25978 Jump if not 25976 INC E Add 2 to Sam's x-coordinate if he's horizontal 25977 INC E 25978 LD A,E A=x+2 if Sam's horizontal, or x otherwise (where x is Sam's x-coordinate) 25979 CALL 60165 Reset the carry flag if Sam is on or above the sidewalk, or set it if he's on or above the road 25982 ADC A,34 D=34 if Sam's on or above the sidewalk, 35 if he's on or above the road 25984 SUB E 25985 LD D,A 25986 LD A,4 4=outside 25988 RET
 Prev: 25918 Up: Map Next: 25989