Routines |
Prev: 43625 | Up: Map | Next: 43794 |
Used by the routines at GameEntryPoint and Handler_Fired.
|
||||
NewHighScore | 43689 | LD IX,45123 | IX=Table_HighScore. | |
The game stores four high scores.
|
||||
43693 | LD B,4 | B=4. | ||
NewHighScore_CheckLoop | 43695 | LD HL,(43902) | HL=*ActivePlayer. | |
Move to the last digit of the active score (the hundreds of thousands).
|
||||
43698 | LD DE,4 | HL+=0004. | ||
43701 | ADD HL,DE | |||
43702 | LD A,(HL) | A=*HL. | ||
43703 | CP (IX+11) | Jump to NewHighScore_1 if A is higher than *IX+11. | ||
43706 | JR NC,NewHighScore_1 | |||
NewHighScore_0 | 43708 | LD DE,12 | DE=0012. | |
43711 | ADD IX,DE | IX+=DE. | ||
43713 | DJNZ NewHighScore_CheckLoop | Decrease counter by one and loop back to NewHighScore_CheckLoop until counter is zero. | ||
43715 | LD HL,43914 | HL=Game_Flags. | ||
43718 | RES 0,(HL) | Reset bit 0 of *HL. | ||
43720 | RET | Return. | ||
NewHighScore_1 | 43721 | JR NZ,NewHighScore_2 | Jump to NewHighScore_2 if {} is not zero. | |
43723 | DEC HL | Decrease HL by one. | ||
43724 | LD A,(HL) | A=*HL. | ||
43725 | CP (IX+10) | Jump to NewHighScore_0 if A is lower than *IX+10. | ||
43728 | JR C,NewHighScore_0 | |||
43730 | JR NZ,NewHighScore_2 | Jump to NewHighScore_2 if it is not zero. | ||
43732 | DEC HL | Decrease HL by one. | ||
43733 | LD A,(HL) | A=*HL. | ||
43734 | CP (IX+9) | Jump to NewHighScore_0 if A is lower than *IX+9. | ||
43737 | JR C,NewHighScore_0 | |||
43739 | JR Z,NewHighScore_0 | Jump to NewHighScore_0 if it is zero. | ||
NewHighScore_2 | 43741 | DEC B | Decrease B by one. | |
43742 | JR Z,NewHighScore_Write | Jump to NewHighScore_Write if B is zero. | ||
43744 | LD A,0 | A=0. | ||
NewHighScore_3 | 43746 | ADD A,12 | A+=12. | |
43748 | DJNZ NewHighScore_3 | Decrease counter by one and loop back to NewHighScore_3 until counter is zero. | ||
43750 | LD C,A | C=A. | ||
43751 | LD HL,45158 | HL=45158. | ||
43754 | LD DE,45170 | DE=45170. | ||
43757 | LDDR | LDDR. | ||
NewHighScore_Write | 43759 | PUSH IX | DE=IX. | |
43761 | POP DE | |||
43762 | LD HL,43914 | HL=Game_Flags. | ||
43765 | SET 0,(HL) | Set bit 0 of *HL. | ||
Who is in play, is it 1UP or 2UP?
|
||||
43767 | BIT 4,(HL) | Test bit 4 of *HL. | ||
Default to using the 1UP name.
|
||||
43769 | LD HL,44198 | HL=Name_1UP. | ||
43772 | JR Z,NewHighScore_WriteName | Jump to NewHighScore_WriteName if this is player one. | ||
Else, use the name for 2UP.
|
||||
43774 | LD HL,44231 | HL=Name_2UP. | ||
NewHighScore_WriteName | 43777 | LD BC,8 | BC=0008. | |
43780 | LDIR | Copy the exact number of bytes of the players name to the high score entry. | ||
43782 | INC DE | Increment DE by one. | ||
43783 | LD HL,(43902) | HL=*ActivePlayer. | ||
43786 | INC HL | Increment HL by two. | ||
43787 | INC HL | |||
Scores are held using three bytes.
|
||||
43788 | LD BC,3 | BC=0003. | ||
43791 | LDIR | Copy the three score digits for the current player into the high score entry. | ||
43793 | RET | Return. |
Prev: 43625 | Up: Map | Next: 43794 |