![]() |
Routines |
| Prev: 31154 | Up: Map | Next: 31874 |
|
Used by the routines at TitleScreen and StartGame.
|
||||
|
See Aliens Don't Fire.
|
||||
| Handler_Aliens | 31591 | LD A,(26257) | Return if *26257 is zero. | |
| 31594 | OR A | |||
| 31595 | RET Z | |||
| 31596 | LD A,(26261) | Return if *Bullet_RateLimiter is not zero. | ||
| 31599 | OR A | |||
| 31600 | RET NZ | |||
| 31601 | LD HL,26279 | HL=26279. | ||
| 31604 | LD B,6 | B=6. | ||
| Handler_Aliens_0 | 31606 | PUSH BC | Stash BC and HL on the stack. | |
| 31607 | PUSH HL | |||
| 31608 | LD E,(HL) | E=*HL. | ||
| 31609 | INC HL | Increment HL by one. | ||
| 31610 | LD D,(HL) | D=*HL. | ||
| 31611 | LD A,D | Jump to Handler_Aliens_12 if D is not zero. | ||
| 31612 | OR A | |||
| 31613 | JP NZ,Handler_Aliens_12 | |||
| 31616 | LD A,(26276) | Jump to Handler_Aliens_19 if *Flag_Collision is not zero. | ||
| 31619 | OR A | |||
| 31620 | JP NZ,Handler_Aliens_19 | |||
| 31623 | PUSH HL | Stash HL on the stack. | ||
| 31624 | LD HL,26297 | HL=26297. | ||
| 31627 | LD A,(26298) | Jump to Handler_Aliens_3 if *26298 is not zero. | ||
| 31630 | OR A | |||
| 31631 | JR NZ,Handler_Aliens_3 | |||
| 31633 | LD A,(26353) | A=*Phase. | ||
| 31636 | AND %00000110 | Keep only bits 1-2. | ||
| 31638 | LD A,28 | A=28. | ||
| 31640 | JR Z,Handler_Aliens_1 | Jump to Handler_Aliens_1 if HL is equal to A. | ||
| 31642 | LD A,14 | A=14. | ||
| Handler_Aliens_1 | 31644 | CP (HL) | Jump to Handler_Aliens_2 if *HL is not zero. | |
| 31645 | JR NZ,Handler_Aliens_2 | |||
| 31647 | LD (HL),254 | Write 254 to *HL. | ||
| Handler_Aliens_2 | 31649 | INC (HL) | Increment *HL by two. | |
| 31650 | INC (HL) | |||
| Handler_Aliens_3 | 31651 | LD L,(HL) | L=*HL. | |
| 31652 | LD H,0 | H=0. | ||
| 31654 | LD DE,26077 | HL+=Table_CurrentAlienPhaseData. | ||
| 31657 | ADD HL,DE | |||
| 31658 | LD E,(HL) | E=*HL. | ||
| 31659 | INC HL | Increment HL by one. | ||
| 31660 | LD D,(HL) | D=*HL. | ||
| 31661 | LD A,D | Jump to Handler_Aliens_4 if D is not zero. | ||
| 31662 | OR A | |||
| 31663 | JR NZ,Handler_Aliens_4 | |||
| 31665 | LD HL,26298 | HL=26298. | ||
| 31668 | LD (HL),A | Write A to *HL. | ||
| 31669 | JR Handler_Aliens_11 | Jump to Handler_Aliens_11. | ||
| Handler_Aliens_4 | 31671 | CALL ConvertScreenToAttributeBufferAddress | Call ConvertScreenToAttributeBufferAddress. | |
| 31674 | LD A,D | Jump to Handler_Aliens_11 if D is equal to 88. | ||
| 31675 | CP 88 | |||
| 31677 | JR Z,Handler_Aliens_11 | |||
| 31679 | LD A,E | A=E. | ||
| 31680 | AND %00011111 | Keep only bits 0-4. | ||
| 31682 | LD B,A | B=A. | ||
| 31683 | LD A,(26349) | A=*PlayerAttributeBufferPosition. | ||
| 31686 | AND %00011111 | Keep only bits 0-4. | ||
| 31688 | CP B | Jump to Handler_Aliens_6 if A is less than B. | ||
| 31689 | JR C,Handler_Aliens_6 | |||
| 31691 | SUB B | A-=B. | ||
| Handler_Aliens_5 | 31692 | CP 8 | Jump to Handler_Aliens_11 if A is greater than or equal to 8. | |
| 31694 | JR NC,Handler_Aliens_11 | |||
| 31696 | JR Handler_Aliens_7 | Jump to Handler_Aliens_7. | ||
| Handler_Aliens_6 | 31698 | LD C,A | C=A. | |
| 31699 | LD A,B | A=B-C. | ||
| 31700 | SUB C | |||
| 31701 | JR Handler_Aliens_5 | Jump to Handler_Aliens_5. | ||
| Handler_Aliens_7 | 31703 | LD HL,65 | HL=0065+DE. | |
| 31706 | ADD HL,DE | |||
| 31707 | PUSH HL | Stash HL on the stack. | ||
| 31708 | LD DE,23264 | DE=23264 (attribute buffer location). | ||
| 31711 | LD A,(26259) | Jump to Handler_Aliens_8 if *Flag_Shield is inactive. | ||
| 31714 | AND A | |||
| 31715 | JR Z,Handler_Aliens_8 | |||
| 31717 | LD E,192 | E=192. | ||
| Handler_Aliens_8 | 31719 | SBC HL,DE | HL-=DE (with carry). | |
| 31721 | POP HL | Restore HL from the stack. | ||
| 31722 | JR NC,Handler_Aliens_11 | Jump to Handler_Aliens_11 if A is greater than or equal to A. | ||
| 31724 | PUSH HL | Stash HL on the stack. | ||
| 31725 | LD HL,26298 | HL=26298. | ||
| 31728 | INC (HL) | Increment *HL by one. | ||
| 31729 | LD A,(HL) | Jump to Handler_Aliens_9 if *HL is not equal to 4. | ||
| 31730 | CP 4 | |||
| 31732 | JR NZ,Handler_Aliens_9 | |||
| 31734 | LD (HL),0 | Write 0 to *HL. | ||
| Handler_Aliens_9 | 31736 | INC HL | Increment HL by one. | |
| 31737 | LD A,(26353) | A=*Phase. | ||
| 31740 | AND %00000010 | Keep only bit 1. | ||
| 31742 | LD A,3 | A=3. | ||
| 31744 | JR Z,Handler_Aliens_10 | Jump to Handler_Aliens_10 if HL is equal to 3. | ||
| 31746 | INC (HL) | Increment *HL by one. | ||
| 31747 | LD A,(HL) | Jump to Handler_Aliens_10 if *HL is not equal to 3. | ||
| 31748 | CP 3 | |||
| 31750 | JR NZ,Handler_Aliens_10 | |||
| 31752 | XOR A | Write 0 to *HL. | ||
| 31753 | LD (HL),A | |||
| Handler_Aliens_10 | 31754 | ADD A,A | Multiply A by 8. | |
| 31755 | ADD A,A | |||
| 31756 | ADD A,A | |||
| 31757 | POP HL | Restore HL and DE from the stack. | ||
| 31758 | POP DE | |||
| 31759 | INC DE | Increment DE by one. | ||
| 31760 | LD (DE),A | Write A to *DE. | ||
| 31761 | LD IXl,A | |||
| 31763 | JR Handler_Aliens_14 | Jump to Handler_Aliens_14. | ||
| Handler_Aliens_11 | 31765 | POP AF | Restore AF from the stack. | |
| 31766 | JR Handler_Aliens_15 | Jump to Handler_Aliens_15. | ||
| Handler_Aliens_12 | 31768 | EX DE,HL | Exchange the DE and HL registers. | |
| 31769 | LD A,(HL) | Jump to Handler_Aliens_15 if *HL is equal to INK:YELLOW, PAPER:BLACK (BRIGHT). | ||
| 31770 | CP 70 | |||
| 31772 | JR Z,Handler_Aliens_15 | |||
| 31774 | CP 7 | Jump to Handler_Aliens_15 if *HL is equal to WHITE. | ||
| 31776 | JR Z,Handler_Aliens_15 | |||
| 31778 | LD (HL),0 | Write 0 to *HL. | ||
| 31780 | INC DE | Increment DE by one. | ||
| 31781 | LD A,(DE) | A=*DE. | ||
| 31782 | LD IXl,A | |||
| 31784 | PUSH HL | Stash HL on the stack. | ||
| 31785 | CALL ConvertAttributeToScreenBufferAddress | Call ConvertAttributeToScreenBufferAddress. | ||
| 31788 | LD B,8 | B=8. | ||
| 31790 | XOR A | A=0. | ||
| Handler_Aliens_13 | 31791 | LD (HL),A | Write A to *HL. | |
| 31792 | INC H | Increment H by one. | ||
| 31793 | DJNZ Handler_Aliens_13 | Decrease counter by one and loop back to Handler_Aliens_13 until counter is zero. | ||
| 31795 | POP HL | Restore HL from the stack. | ||
| 31796 | LD C,32 | C=32. | ||
| 31798 | ADD HL,BC | HL+=BC. | ||
| 31799 | PUSH HL | Stash HL on the stack. | ||
| 31800 | LD BC,23296 | BC=23296 (attribute buffer location). | ||
| 31803 | AND A | HL-=BC. | ||
| 31804 | SBC HL,BC | |||
| 31806 | POP HL | Restore HL from the stack. | ||
| 31807 | JR NC,Handler_Aliens_15 | Jump to Handler_Aliens_15 if H is greater than or equal to A. | ||
| Handler_Aliens_14 | 31809 | LD A,(HL) | Jump to Handler_Aliens_16 if *HL is zero. | |
| 31810 | OR A | |||
| 31811 | JR Z,Handler_Aliens_16 | |||
| 31813 | LD A,(26259) | Jump to Handler_Aliens_15 if *Flag_Shield is active. | ||
| 31816 | OR A | |||
| 31817 | JR NZ,Handler_Aliens_15 | |||
| 31819 | LD A,(HL) | Jump to Handler_Aliens_16 if *HL is equal to INK:YELLOW, PAPER:BLACK (BRIGHT). | ||
| 31820 | CP 70 | |||
| 31822 | JR Z,Handler_Aliens_16 | |||
| Handler_Aliens_15 | 31824 | LD D,0 | D=0. | |
| 31826 | JR Handler_Aliens_19 | Jump to Handler_Aliens_19. | ||
| Handler_Aliens_16 | 31828 | LD A,(26353) | A=*Phase. | |
| 31831 | AND %00000010 | Keep only bit 1. | ||
| 31833 | LD A,69 | A=69. | ||
| 31835 | JR Z,Handler_Aliens_17 | Jump to Handler_Aliens_17 if A is equal to 69. | ||
| 31837 | LD A,6 | Write 6 to *HL. | ||
| Handler_Aliens_17 | 31839 | LD (HL),A | ||
| 31840 | PUSH HL | Stash HL on the stack. | ||
| 31841 | CALL ConvertAttributeToScreenBufferAddress | Call ConvertAttributeToScreenBufferAddress. | ||
| 31844 | EX DE,HL | Exchange the DE and HL registers. | ||
| 31845 | LD HL,24622 | HL=Graphics_Bullets_01. | ||
| 31848 | LD C,IXl | |||
| 31850 | LD B,0 | B=0. | ||
| 31852 | ADD HL,BC | HL+=BC. | ||
| 31853 | LD B,8 | Set a line counter in B (8 lines in a UDG). | ||
| Handler_Aliens_18 | 31855 | LD A,(HL) | Copy the UDG data to the screen buffer. | |
| 31856 | LD (DE),A | |||
| 31857 | INC D | Move down one pixel line in the screen buffer. | ||
| 31858 | INC HL | Move to the next UDG graphic data byte. | ||
| 31859 | DJNZ Handler_Aliens_18 | Decrease the line counter by one and loop back to Handler_Aliens_18 until all 8 lines of the UDG character have been drawn. | ||
| 31861 | POP DE | Restore DE and HL from the stack. | ||
| Handler_Aliens_19 | 31862 | POP HL | ||
| 31863 | LD (HL),E | Write E to *HL. | ||
| 31864 | INC HL | Increment HL by one. | ||
| 31865 | LD (HL),D | Write D to *HL. | ||
| 31866 | INC HL | Increment HL by two. | ||
| 31867 | INC HL | |||
| 31868 | POP BC | Restore BC from the stack. | ||
| 31869 | DEC B | Decrease B by one. | ||
| 31870 | JP NZ,Handler_Aliens_0 | Jump to Handler_Aliens_0 if B is not equal to 8. | ||
| 31873 | RET | Return. | ||
| Prev: 31154 | Up: Map | Next: 31874 |