Routines 
Prev: 56713  Up: Map  Next: 56768 


Derive pointer to monster score messaging from the given ID.


Handler_AddPoints  56727  CP 1  Jump to AddPoints_CheckLizzy if A is not targeting George (1).  
56729  JR NZ,AddPoints_CheckLizzy  
George:


56731  LD HL,53350  HL=Messaging_GeorgeScore.  
56734  JR AddPointsToScore  Jump to AddPointsToScore.  
Ralph:


AddPoints_CheckLizzy  56736  LD HL,53378  HL=Messaging_RalphScore.  
56739  CP 2  Jump to AddPointsToScore if A is not targeting Lizzy (2) (i.e. keep Ralph which was set above).  
56741  JR NZ,AddPointsToScore  
Lizzy:


56743  LD HL,53364  HL=Messaging_LizzyScore.  
Apply points to score.


AddPointsToScore  56746  LD A,E  Work out which digit to update.  
56747  XOR %00000111  
56749  DEC A  
56750  LD E,A  
56751  LD A,D  A=points to add.  
56752  LD D,0  Move HL to the appropriate score digit.  
56754  ADD HL,DE  
AddPointsToScore_Loop  56755  ADD A,(HL)  A=*HL+point value held in A.  
56756  LD (HL),A  Write A to *HL.  
56757  CP 58  Return if A is lower than 58 (ASCII 57 is "9").  
56759  RET C  
This digit is higher than "9" so subtract 10 to make it a valid number again.


56760  SUB 10  A=10.  
56762  LD (HL),A  Update the current score digit.  
We work backwards here, as the smaller units are on the righthand side. So now we want to add "1" to the next digit. At it's simplest; 19+01 would first set "10" then move the pointer to the "tens" and add one to it to equal 20.


56763  DEC HL  Decrease the score pointer by one.  
56764  LD A,1  A=1.  
56766  JR AddPointsToScore_Loop  Jump to AddPointsToScore_Loop. 
Prev: 56713  Up: Map  Next: 56768 