![]() |
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 A=*26261 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 *26276 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=*26353. | ||
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+=26077. | ||
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=*26349. | ||
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 *26259 is zero. | ||
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=*26353. | ||
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 70. | ||
31770 | CP 70 | |||
31772 | JR Z,Handler_Aliens_15 | |||
31774 | CP 7 | Jump to Handler_Aliens_15 if *HL is equal to 7. | ||
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 *26259 is not zero. | ||
31816 | OR A | |||
31817 | JR NZ,Handler_Aliens_15 | |||
31819 | LD A,(HL) | Jump to Handler_Aliens_16 if *HL is equal to 70. | ||
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=*26353. | |
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 |