![]() |
Routines |
| Prev: 26537 | Up: Map | Next: 26614 |
| Handler_Score | 26550 | LD A,(26355) | Jump to AddToScore if *Flag_ActiveDemoMode is not active. | |
| 26553 | OR A | |||
| 26554 | JR Z,AddToScore | |||
|
Demo mode is active, so just reset the score.
|
||||
| 26556 | LD DE,25896 | DE=ScoreBuffer. | ||
| 26559 | LD B,0 | B=0. | ||
| 26561 | JR Reset_ScoreBuffer | Jump to Reset_ScoreBuffer. | ||
| AddToScore | 26563 | LD HL,25881 | Point HL at 25881 (the current score). | |
| 26566 | LD DE,25902 | Point DE at 25902 (the points to add). | ||
| 26569 | LD B,6 | Set a counter in B for 6 score digits. | ||
| AddToScore_Loop | 26571 | LD A,(DE) | Fetch the points digit and add it to the corresponding score digit. | |
| 26572 | ADD A,(HL) | |||
| 26573 | SUB 48 | Convert the value from ASCII by subtracing 48. | ||
| 26575 | CP 58 | Jump to AddToScore_Store if A is less than 58. | ||
| 26577 | JR C,AddToScore_Store | |||
| 26579 | SUB 10 | A-=10. | ||
| 26581 | DEC HL | Decrease HL by one. | ||
| 26582 | INC (HL) | Increment *HL by one. | ||
| 26583 | INC HL | Increment HL by one. | ||
| AddToScore_Store | 26584 | LD (HL),A | Write A to *HL. | |
| 26585 | DEC DE | Decrease DE by one. | ||
| 26586 | DEC HL | Decrease HL by one. | ||
| 26587 | DJNZ AddToScore_Loop | Decrease counter by one and loop back to AddToScore_Loop until counter is zero. | ||
| Reset_ScoreBuffer | 26589 | PUSH DE | Copy the score buffer pointer to HL (using the stack). | |
| 26590 | POP HL | |||
| 26591 | INC DE | Increment the score buffer destination pointer by one. | ||
| 26592 | LD C,6 | Set a counter in C for 6 score digits. | ||
| 26594 | LD (HL),48 | Write 48 ("0") to the score buffer. | ||
| 26596 | LDIR | Copy 48 ("0") across the remaining five score buffer digits. | ||
|
Check if the score is at least "10,000".
|
||||
| 26598 | LD A,(25877) | Return if *25877 is not equal to 49 ("1"). | ||
| 26601 | CP 49 | |||
| 26603 | RET NZ | |||
| 26604 | LD HL,26351 | Return if Flag_ExtraLife says that no extra life should be awarded. | ||
| 26607 | LD A,(HL) | |||
| 26608 | OR A | |||
| 26609 | RET Z | |||
|
Award an extra life to the player.
|
||||
| 26610 | DEC (HL) | Reset Flag_ExtraLife as an extra life has been "awarded". | ||
| 26611 | INC HL | Move to the lives counter at Player_Lives. | ||
| 26612 | INC (HL) | Award one extra life. | ||
| 26613 | RET | Return. | ||
| Prev: 26537 | Up: Map | Next: 26614 |