![]() |
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 right-hand 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 |