Routines 
Prev: 62750  Up: Map  Next: 62902 
62771  LD HL,32758  Decrement the jumping action timer at 32758 (which starts at 16)  
62774  DEC (HL)  Has ERIC completed the jump?  
62775  JP Z,62501  Jump if so  
62778  LD A,(HL)  Pick up the current value of the action timer in A  
62779  CP 12  
62781  LD B,15  Lines reprimand 15: YOU ARE NOT A KANGAROO  
62783  JP Z,62550  Jump if it's time to check whether any teachers can see ERIC jumping  
62786  LD H,172  172=ERIC  
62788  CP 13  Is it time to check whether ERIC has touched a shield or opened the safe?  
62790  JP Z,62750  Jump if so  
62793  CP 14  Is it time to make the jumping sound effect?  
62795  JP Z,60139  Jump if so  
62798  CP 9  Is it time to move ERIC's arm back?  
62800  JP Z,28779  Jump if so  
62803  CP 3  Is it time to bring ERIC back down to the floor?  
62805  JR NZ,62814  Jump if not  
62807  CALL 25108  Update the SRB for ERIC's current location  
62810  INC D  Move ERIC downwards  
62811  JP 25008  Update ERIC's location and update the SRB  
62814  CP 6  Return if A < 6 (nothing to check or do)  
62816  RET C  
At this point A=6 (which means it's time to check whether ERIC has jumped onto a boy, or ERIC is already standing on a boy), or A is one of {7, 8, 10, 11, 15}, or A>128 (which means ERIC has jumped while standing on a boy).


62817  JR NZ,62891  Jump unless (a) it's time to check whether ERIC has jumped on a boy, or (b) ERIC is already standing on a boy  
62819  LD L,97  Byte 97 of ERIC's buffer holds his ycoordinate  
62821  LD D,(HL)  Pick this up in D  
62822  INC D  Down a level (where the boy that ERIC is standing on would be, if any)  
62823  INC L  Byte 98 holds ERIC's xcoordinate  
62824  LD E,(HL)  Pick this up in E  
62825  LD B,11  There are 11 little boys  
62827  LD H,152  152=little boy no. 1  
62829  CALL 62905  Is ERIC standing on a little boy?  
62832  JR C,62842  Jump if so  
62834  LD H,167  167=BOY WANDER  
62836  LD B,3  There are three main kids besides ERIC  
62838  CALL 62911  Is ERIC standing on one of the three main kids?  
62841  RET NC  Return if not  
ERIC is standing on a kid who's been knocked out.


62842  CALL 26426  Check for keypresses  
62845  LD HL,32758  Set the jumping action timer at 32758 to 7, so that we keep returning to this section of code while ERIC is standing on a boy  
62848  LD (HL),7  
62850  RET Z  Return if no key of interest was pressed  
62851  SET 5,A  Convert the ASCII code of the keypress in A to lower case  
62853  CP 106  Was 'j' (jump) pressed?  
62855  JR NZ,62860  Jump if not  
62857  LD (HL),144  Set the jumping action timer at 32758 to 144 to indicate that ERIC has jumped while standing on a boy  
62859  RET  Return to the main loop with the carry flag reset  
A key other than 'j' was pressed while ERIC was standing on a boy.


62860  CP 111  111='o'  
62862  LD B,0  Set B=0 (ERIC facing left) for later comparison  
62864  JR Z,62871  Jump if 'o' (left) was pressed  
62866  LD B,128  Set B=128 (ERIC facing right) for later comparison  
62868  CP 112  Was 'p' (right) pressed?  
62870  RET NZ  Return if not  
62871  LD HL,44134  A=animatory state of ERIC before he jumped (stored in byte 102 of his buffer)  
62874  LD A,(HL)  
62875  AND 128  Keep only the 'direction' bit  
62877  CP B  Should ERIC turn round?  
62878  RET Z  Return if not  
62879  LD A,(HL)  Adjust ERIC's prejump animatory state to reflect his turning round while standing on a boy  
62880  XOR 128  
62882  LD (HL),A  
62883  CALL 25108  Update the SRB for ERIC's current animatory state  
62886  XOR 128  A=animatory state of ERIC facing the other way  
62888  JP 25008  Update ERIC's animatory state and update the SRB  
At this point A is one of {7, 8, 10, 11, 15} (which means there is nothing to do), or A=128143 (which means ERIC has jumped while standing on a boy).


62891  CP 134  Return now if the SUB 128 instruction below would make A=6  
62893  RET Z  
62894  SUB 128  Return unless ERIC jumped while standing on a boy  
62896  RET C  
So ERIC has jumped while standing on a boy. Now either A=0, meaning it's time to set the jumping action timer at 32758 back to 7, so we can deal with ERIC while he's standing on a boy; or A=115 (but not 6, because that would lead us into the code at 62819 to perform a redundant check on whether ERIC is standing on a boy), meaning we need to run the usual checks while ERIC is in midair.


62897  JP NZ,62779  Run the usual checks while ERIC is in midair above a supine boy  
62900  JR 62844  This should be JR 62845 
Prev: 62750  Up: Map  Next: 62902 