![]() |
Routines |
| Prev: AA69 | Up: Map | Next: AB12 |
|
Used by the routines at GameEntryPoint and Handler_Fired.
|
||||
| NewHighScore | AAA9 | LD IX,$B043 | IX=Table_HighScore. | |
|
The game stores four high scores.
|
||||
| AAAD | LD B,$04 | B=04. | ||
| NewHighScore_CheckLoop | AAAF | LD HL,($AB7E) | HL=*ActivePlayer. | |
|
Move to the last digit of the active score (the hundreds of thousands).
|
||||
| AAB2 | LD DE,$0004 | HL+=0004. | ||
| AAB5 | ADD HL,DE | |||
| AAB6 | LD A,(HL) | A=*HL. | ||
| AAB7 | CP (IX+$0B) | Jump to NewHighScore_1 if A is higher than *IX+0B. | ||
| AABA | JR NC,NewHighScore_1 | |||
| NewHighScore_0 | AABC | LD DE,$000C | DE=000C. | |
| AABF | ADD IX,DE | IX+=DE. | ||
| AAC1 | DJNZ NewHighScore_CheckLoop | Decrease counter by one and loop back to NewHighScore_CheckLoop until counter is zero. | ||
| AAC3 | LD HL,$AB8A | HL=Game_Flags. | ||
| AAC6 | RES 0,(HL) | Reset bit 0 of *HL. | ||
| AAC8 | RET | Return. | ||
| NewHighScore_1 | AAC9 | JR NZ,NewHighScore_2 | Jump to NewHighScore_2 if {} is not zero. | |
| AACB | DEC HL | Decrease HL by one. | ||
| AACC | LD A,(HL) | A=*HL. | ||
| AACD | CP (IX+$0A) | Jump to NewHighScore_0 if A is lower than *IX+0A. | ||
| AAD0 | JR C,NewHighScore_0 | |||
| AAD2 | JR NZ,NewHighScore_2 | Jump to NewHighScore_2 if it is not zero. | ||
| AAD4 | DEC HL | Decrease HL by one. | ||
| AAD5 | LD A,(HL) | A=*HL. | ||
| AAD6 | CP (IX+$09) | Jump to NewHighScore_0 if A is lower than *IX+09. | ||
| AAD9 | JR C,NewHighScore_0 | |||
| AADB | JR Z,NewHighScore_0 | Jump to NewHighScore_0 if it is zero. | ||
| NewHighScore_2 | AADD | DEC B | Decrease B by one. | |
| AADE | JR Z,NewHighScore_Write | Jump to NewHighScore_Write if B is zero. | ||
| AAE0 | LD A,$00 | A=00. | ||
| NewHighScore_3 | AAE2 | ADD A,$0C | A+=0C. | |
| AAE4 | DJNZ NewHighScore_3 | Decrease counter by one and loop back to NewHighScore_3 until counter is zero. | ||
| AAE6 | LD C,A | C=A. | ||
| AAE7 | LD HL,$B066 | HL=B066. | ||
| AAEA | LD DE,$B072 | DE=B072. | ||
| AAED | LDDR | LDDR. | ||
| NewHighScore_Write | AAEF | PUSH IX | DE=IX. | |
| AAF1 | POP DE | |||
| AAF2 | LD HL,$AB8A | HL=Game_Flags. | ||
| AAF5 | SET 0,(HL) | Set bit 0 of *HL. | ||
|
Who is in play, is it 1UP or 2UP?
|
||||
| AAF7 | BIT 4,(HL) | Test bit 4 of *HL. | ||
|
Default to using the 1UP name.
|
||||
| AAF9 | LD HL,$ACA6 | HL=Name_1UP. | ||
| AAFC | JR Z,NewHighScore_WriteName | Jump to NewHighScore_WriteName if this is player one. | ||
|
Else, use the name for 2UP.
|
||||
| AAFE | LD HL,$ACC7 | HL=Name_2UP. | ||
| NewHighScore_WriteName | AB01 | LD BC,$0008 | BC=0008. | |
| AB04 | LDIR | Copy the exact number of bytes of the players name to the high score entry. | ||
| AB06 | INC DE | Increment DE by one. | ||
| AB07 | LD HL,($AB7E) | HL=*ActivePlayer. | ||
| AB0A | INC HL | Increment HL by two. | ||
| AB0B | INC HL | |||
|
Scores are held using three bytes.
|
||||
| AB0C | LD BC,$0003 | BC=0003. | ||
| AB0F | LDIR | Copy the three score digits for the current player into the high score entry. | ||
| AB11 | RET | Return. | ||
| Prev: AA69 | Up: Map | Next: AB12 |