Routines 
Prev: 25784  Up: Map  Next: 25918 
25789  LD HL,25748  The animation phase table for Sam when somersaulting is at 25748  
This entry point is used by the routine at 25784 with HL=25724.


25792  PUSH HL  Save the address of the animation phase table  
25793  CALL 25918  Return to the main loop if Sam cannot roll or somersault from his current location  
25796  LD A,8  Set bit 3 of Sam's status flags at 32764  
25798  LD (32764),A  
25801  POP HL  Restore the address of the animation phase table to HL  
25802  LD (58892),HL  Copy the address of the animation phase table into bytes 12 and 13 of Sam's buffer  
25805  LD HL,58888  Reset Sam's main action timer (in byte 8 of his buffer) to 6  
25808  LD (HL),6  
25810  CALL 59848  Update the SRB for Sam's current animatory state and location  
25813  LD HL,(58892)  Point HL at the first byte of the current entry in the animation phase table  
25816  AND 128  Set the zero flag if Sam is facing left  
25818  LD B,A  B=0 if Sam is facing left, 128 if facing right  
25819  LD A,(HL)  A=first byte of the animation phase table entry  
25820  INC HL  Point HL at the second byte in the entry  
25821  JR Z,25824  Jump if Sam is facing left  
25823  LD A,(HL)  A=second byte of the animation phase table entry  
25824  ADD A,E  Add Sam's current xcoordinate  
25825  LD E,A  E=Sam's next xcoordinate  
25826  INC HL  A=third byte of the animation phase table entry  
25827  LD A,(HL)  
25828  ADD A,D  Add Sam's current ycoordinate  
25829  LD D,A  D=Sam's next ycoordinate  
25830  INC HL  A=fourth byte of the animation phase table entry  
25831  LD A,(HL)  
25832  INC HL  Point HL at the first byte of the next entry  
25833  LD (58892),HL  Store this address in bytes 12 and 13 of Sam's buffer  
25836  RLCA  C=Sam's next base animatory state (bit 7 reset)  
25837  AND A  
25838  RRA  
25839  LD C,A  
25840  JR NC,25877  Jump unless it's time to check whether Sam has landed  
It's time to check whether Sam has landed on his feet yet.


25842  PUSH DE  Save Sam's new coordinates briefly  
25843  AND A  Is Sam's next animatory state 0 or 128 (standing upright)?  
25844  JR Z,25853  Jump if so  
25846  DEC E  Subtract 1 from Sam's new xcoordinate  
25847  BIT 7,B  Is Sam facing left?  
25849  JR Z,25853  Jump if so  
25851  INC E  Add 1 to Sam's new xcoordinate  
25852  INC E  
25853  CALL 60159  Has Sam landed on the sidewalk or the road yet?  
25856  JR NC,25866  Jump if so  
25858  LD A,E  A=Sam's adjusted new xcoordinate  
25859  POP DE  Restore Sam's new xcoordinate to E  
25860  INC D  Add 1 to Sam's new ycoordinate (move him down a level)  
25861  PUSH DE  Save Sam's adjusted new coordinates briefly  
25862  LD E,A  E=Sam's adjusted new xcoordinate  
25863  CALL 60159  Set the carry flag unless Sam has landed on the sidewalk or road  
25866  POP DE  Restore Sam's adjusted new ycoordinate to D, and his new xcoordinate to E  
25867  JR C,25876  Jump if Sam has not landed yet  
25869  LD A,C  A=Sam's next base animatory state (bit 7 reset)  
25870  AND A  Is it 0 or 128 (standing upright)?  
25871  JR NZ,25876  Jump if not  
25873  LD (32764),A  Clear all of Sam's status flags at 32764 (Sam has landed)  
25876  LD A,C  A=Sam's next base animatory state (bit 7 reset)  
25877  CP 9  Is the new base animatory state < 9 (meaning Sam has just started or is just finishing a roll or somersault)?  
25879  JR C,25893  Jump if so  
25881  PUSH BC  Save Sam's direction indicator and next base animatory state  
25882  PUSH DE  Save Sam's next x and ycoordinates  
25883  CP 15  Is the new base animatory state 15 (meaning Sam is going to rotate 90 degrees for the first part of the roll or somersault)?  
25885  CALL Z,25618  If so, prepare sprite tiles 239247 for this animatory state  
25888  CALL NZ,25672  Otherwise, rotate sprite tiles 239247 for animatory state 9, 31 or 10  
25891  POP DE  Restore Sam's next x and ycoordinates to E and D  
25892  POP BC  Restore Sam's direction indicator and next base animatory state to B and C  
25893  LD H,230  230=Sam  
25895  LD A,B  A=Sam's new animatory state  
25896  OR C  
25897  CALL 59861  Update Sam's animatory state and location and update the SRB  
25900  LD A,(32764)  Collect Sam's status flags from 32764  
25903  AND A  Has Sam landed yet?  
25904  RET NZ  Return if not  
25905  CALL 60521  Make a sound effect  
25908  LD L,12  Point HL at byte 12 of Sam's buffer  
25910  CALL 25539  Check whether Sam has somersaulted onto a banknote  
25913  LD H,230  230=Sam  
25915  JP 60547  Now that Sam has landed, scroll the screen left or right if necessary 
Prev: 25784  Up: Map  Next: 25918 