![]() |
Routines |
| Prev: 55442 | Up: Map | Next: 55678 |
|
Used by the routine at Handler_IsLevelComplete.
|
||||
| LevelComplete | 55444 | LD HL,55354 | HL=Time. | |
| 55447 | RES 0,(HL) | Reset bit 0 of *HL. | ||
| 55449 | LD HL,55353 | HL=55353. | ||
| 55452 | SET 7,(HL) | Set bit 7 of *HL. | ||
| 55454 | CALL Colourise_PreviewGrid | Call Colourise_PreviewGrid. | ||
| 55457 | LD HL,22565 | HL=22565 (attribute buffer location). | ||
| 55460 | LD B,4 | B=4. | ||
| LevelComplete_0 | 55462 | PUSH BC | Stash BC on the stack. | |
| 55463 | LD B,16 | B=16. | ||
| LevelComplete_1 | 55465 | LD (HL),0 | Write 0 to *HL. | |
| 55467 | INC HL | Increment HL by one. | ||
| 55468 | DJNZ LevelComplete_1 | Decrease counter by one and loop back to LevelComplete_1 until counter is zero. | ||
| 55470 | LD DE,16 | HL+=0016. | ||
| 55473 | ADD HL,DE | |||
| 55474 | POP BC | Restore BC from the stack. | ||
| 55475 | DJNZ LevelComplete_0 | Decrease counter by one and loop back to LevelComplete_0 until counter is zero. | ||
| 55477 | LD BC,250 | BC=0250. | ||
| 55480 | DI | Disable interrupts. | ||
| LevelComplete_2 | 55481 | LD D,14 | D=14. | |
| 55483 | LD A,5 | A=5. | ||
| LevelComplete_3 | 55485 | OUT (254),A | Send to the speaker. | |
| 55487 | XOR %00010000 | Flip bit 4. | ||
| 55489 | LD E,C | E=C. | ||
| LevelComplete_4 | 55490 | DEC E | Decrease E by one. | |
| 55491 | JR NZ,LevelComplete_4 | Jump to LevelComplete_4 if E is not zero. | ||
| 55493 | DEC D | Decrease D by one. | ||
| 55494 | JR NZ,LevelComplete_3 | Jump to LevelComplete_3 if D is not zero. | ||
| 55496 | DEC BC | Decrease BC by one. | ||
| 55497 | LD A,B | Jump to LevelComplete_2 if BC is not zero. | ||
| 55498 | OR C | |||
| 55499 | JR NZ,LevelComplete_2 | |||
| 55501 | EI | Enable interrupts. | ||
| 55502 | CALL ExtraLife | Call ExtraLife. | ||
| 55505 | LD B,100 | B=100. | ||
| LevelComplete_5 | 55507 | HALT | Halt operation (suspend CPU until the next interrupt). | |
| 55508 | DJNZ LevelComplete_5 | Decrease counter by one and loop back to LevelComplete_5 until counter is zero. | ||
| 55510 | DI | Disable interrupts. | ||
| 55511 | LD HL,55354 | HL=Time. | ||
| 55514 | LD (HL),128 | Write 128 to *HL. | ||
| LevelComplete_6 | 55516 | CALL 64621 | Call 64621. | |
| 55519 | LD A,(55390) | A=*TimeBar_Length. | ||
| 55522 | INC A | Increment A by one. | ||
| 55523 | LD D,A | D=A. | ||
| 55524 | LD E,125 | E=125. | ||
| 55526 | LD H,1 | H=1. | ||
| LevelComplete_7 | 55528 | LD A,(HL) | A=*HL. | |
| 55529 | AND %00011000 | Keep only bits 3-4. | ||
| 55531 | OR %00000101 | Set bits 0, 2. | ||
| 55533 | OUT (254),A | Set border to the colour held by A. | ||
| 55535 | INC HL | Increment HL by one. | ||
| 55536 | LD B,D | B=D. | ||
| LevelComplete_8 | 55537 | DJNZ LevelComplete_8 | Decrease counter by one and loop back to LevelComplete_8 until counter is zero. | |
| 55539 | DEC E | Decrease E by one. | ||
| 55540 | JP NZ,LevelComplete_7 | Jump to LevelComplete_7 if E is not zero. | ||
| 55543 | LD HL,55354 | HL=Time. | ||
| 55546 | BIT 4,(HL) | Test bit 4 of *HL. | ||
| 55548 | JR NZ,LevelComplete_10 | Jump to LevelComplete_10 if E is not zero. | ||
| 55550 | LD A,(55360) | A=*55360. | ||
| 55553 | AND A | Set flags. | ||
| 55554 | INC A | Increment A by one. | ||
| 55555 | DAA | DAA. | ||
| 55556 | LD (55360),A | Write A to *55360. | ||
| 55559 | JR NC,LevelComplete_9 | Jump to LevelComplete_9 if A is higher. | ||
| 55561 | LD A,(55359) | A=*55359. | ||
| 55564 | CCF | Invert the carry flag. | ||
| 55565 | INC A | Increment A by one. | ||
| 55566 | DAA | DAA. | ||
| 55567 | LD (55359),A | Write A to *55359. | ||
| LevelComplete_9 | 55570 | CALL Print_Bonus | Call Print_Bonus. | |
| 55573 | JP LevelComplete_6 | Jump to LevelComplete_6. | ||
| LevelComplete_10 | 55576 | LD HL,55361 | HL=55361. | |
| 55579 | LD A,(55414) | A=*Score_Digit_03. | ||
| 55582 | AND A | Set flags. | ||
| 55583 | ADD A,(HL) | A+=*HL. | ||
| 55584 | DAA | DAA. | ||
| 55585 | LD (55414),A | Write A to *Score_Digit_03. | ||
| 55588 | LD (HL),0 | Write 0 to *HL. | ||
| 55590 | DEC HL | Decrease HL by one. | ||
| 55591 | LD A,(55413) | A=*Score_Digit_02. | ||
| 55594 | ADC A,(HL) | A+=*HL. | ||
| 55595 | DAA | DAA. | ||
| 55596 | LD (55413),A | Write A to *Score_Digit_02. | ||
| 55599 | LD (HL),0 | Write 0 to *HL. | ||
| 55601 | DEC HL | Decrease HL by one. | ||
| 55602 | LD A,(55412) | A=*Score_Digit_01. | ||
| 55605 | ADC A,(HL) | A+=*HL. | ||
| 55606 | DAA | DAA. | ||
| 55607 | LD (55412),A | Write A to *Score_Digit_01. | ||
| 55610 | LD (HL),0 | Write 0 to *HL. | ||
| 55612 | LD HL,61674 | HL=61674. | ||
| 55615 | LD B,35 | B=35. | ||
| 55617 | CALL 61258 | Call 61258. | ||
| 55620 | CALL Print_Bonus | Call Print_Bonus. | ||
| 55623 | CALL Print_Score | Call Print_Score. | ||
| 55626 | LD A,(55405) | Jump to LevelComplete_11 if *55405 is not equal to 0. | ||
| 55629 | CP 0 | |||
| 55631 | JR NZ,LevelComplete_11 | |||
| 55633 | LD A,(55412) | A=*Score_Digit_01. | ||
| 55636 | AND %11110000 | Keep only bits 4-7. | ||
| 55638 | RRCA | RRCA. | ||
| 55639 | RRCA | |||
| 55640 | RRCA | |||
| 55641 | RRCA | |||
| 55642 | CP 1 | Jump to LevelComplete_11 if A is lower than 1 (unsigned comparison). | ||
| 55644 | JP M,LevelComplete_11 | |||
| 55647 | LD A,1 | Write 1 to *55405. | ||
| 55649 | LD (55405),A | |||
| 55652 | CALL ExtraLife | Call ExtraLife. | ||
| 55655 | CALL 59866 | Call 59866. | ||
| LevelComplete_11 | 55658 | LD A,128 | Write 128 to *Bomb. | |
| 55660 | LD (55352),A | |||
| LevelComplete_12 | 55663 | CALL Handler_PlayerInput | Call Handler_PlayerInput. | |
| 55666 | CP 0 | Jump back to LevelComplete_12 until there's any player input. | ||
| 55668 | JR Z,LevelComplete_12 | |||
| 55670 | XOR A | Write 0 to *Bomb. | ||
| 55671 | LD (55352),A | |||
| 55674 | CALL 61025 | Call 61025. | ||
| 55677 | RET | Return. | ||
| Prev: 55442 | Up: Map | Next: 55678 |