Prev: 75B7 Up: Map Next: 79B2
7616: Handler: Aliens Movement/ Spawning
Used by the routines at TitleScreen and StartGame.
Skip over drawing the alien mothership unless this is phase 04.
Handler_AliensMovement_Spawning 7616 LD A,($66F1) Jump to SkipHandler_Mothership if *Phase is not equal to 04.
7619 CP $04
761B JR NZ,SkipHandler_Mothership
761D CALL Handler_Mothership Call Handler_Mothership.
SkipHandler_Mothership 7620 LD DE,$65DD DE=Table_CurrentAlienPhaseData.
7623 LD HL,($668F) HL=*Alien_Index.
7626 LD A,($6691) Jump to Aliens_LoadPhaseData if *6691 is not zero.
7629 OR A
762A JR NZ,Aliens_LoadPhaseData
Check if all the aliens are spawned for the current phase.
762C LD A,($66F1) A=*Phase.
762F AND %00000100 Keep only bit 2.
7631 LD A,$07 Set the alien spawn limit to 07.
7633 JR NZ,Aliens_CheckSpawnLimit Jump to Aliens_CheckSpawnLimit if *Phase is 04.
7635 ADD A,A Double the alien spawn limit to 0E.
Aliens_CheckSpawnLimit 7636 PUSH AF Stash the alien spawn limit on the stack.
7637 SUB L Calculate the remaining aliens left to spawn.
7638 EX AF,AF' Exchange the AF register with the shadow AF register.
7639 POP AF Restore the alien spawn limit from the stack.
763A CP L Jump to Aliens_LoadPhaseData if A is not equal to L.
763B JR NZ,Aliens_LoadPhaseData
763D PUSH HL Stash HL on the stack.
763E LD HL,$66C2 HL=66C2.
7641 INC (HL) Increment *HL by one.
7642 LD A,(HL) A=*HL.
7643 SUB $14 A-=14.
7645 POP HL Restore HL from the stack.
7646 JR NZ,Aliens_LoadPhaseData Jump to Aliens_LoadPhaseData if *HL is not equal to L.
7648 INC A Increment A by one.
7649 LD ($6691),A Write A to *6691.
Aliens_LoadPhaseData 764C ADD HL,HL HL+=HL.
764D ADD HL,DE HL+=DE.
764E PUSH HL Stash HL on the stack.
764F LD E,(HL) E=*HL.
7650 INC HL Increment HL by one.
7651 LD D,(HL) D=*HL.
7652 LD A,D Jump to Handler_AliensMovement_Spawning_1 if D is not zero.
7653 OR A
7654 JR NZ,Handler_AliensMovement_Spawning_1
7656 EX AF,AF' Exchange the shadow AF register with the AF register.
7657 JR NZ,Handler_AliensMovement_Spawning_0 Jump to Handler_AliensMovement_Spawning_0 if HL is not equal to A.
7659 LD A,$01 Write 01 to *6691.
765B LD ($6691),A
Handler_AliensMovement_Spawning_0 765E POP AF Restore AF from the stack.
765F JP Handler_AliensMovement_Spawning_56 Jump to Handler_AliensMovement_Spawning_56.
Handler_AliensMovement_Spawning_1 7662 PUSH DE Stash DE on the stack.
7663 LD A,($66F1) A=*Phase.
7666 BIT 1,A Jump to Handler_AliensMovement_Spawning_13 if bit 1 of A is set.
7668 JP NZ,Handler_AliensMovement_Spawning_13
766B AND %00000100 Keep only bit 2.
766D JR Z,Handler_AliensMovement_Spawning_2 Jump to Handler_AliensMovement_Spawning_2 if the result is zero.
766F LD A,($6691) Jump to Handler_AliensMovement_Spawning_13 if *6691 is not zero.
7672 OR A
7673 JP NZ,Handler_AliensMovement_Spawning_13
Handler_AliensMovement_Spawning_2 7676 LD BC,$66C4 HL=*Alien_Index+66C4.
7679 LD HL,($668F)
767C ADD HL,BC
767D LD A,(HL) Jump to Handler_AliensMovement_Spawning_11 if *HL is not zero.
767E OR A
767F JR NZ,Handler_AliensMovement_Spawning_11
7681 LD A,($6691) Jump to Handler_AliensMovement_Spawning_3 if *6691 is zero.
7684 OR A
7685 JR Z,Handler_AliensMovement_Spawning_3
7687 CALL GenerateRandomNumber Call GenerateRandomNumber.
768A CP $D5 Jump to Handler_AliensMovement_Spawning_8 if A is not equal to D5.
768C JR NZ,Handler_AliensMovement_Spawning_8
768E LD (HL),$3C Write 3C to *HL.
7690 JR Handler_AliensMovement_Spawning_10 Jump to Handler_AliensMovement_Spawning_10.
Handler_AliensMovement_Spawning_3 7692 LD A,($6695) A=*Bullet_RateLimiter.
7695 AND %00000001 Keep only bit 0.
7697 JR NZ,Handler_AliensMovement_Spawning_4 Jump to Handler_AliensMovement_Spawning_4 if the result is not zero.
7699 POP AF Restore AF and AF from the stack.
769A POP AF
769B RET Return.
Handler_AliensMovement_Spawning_4 769C LD BC,$6657 BC=6657.
769F LD A,($66F1) Jump to Handler_AliensMovement_Spawning_5 if *Phase is zero.
76A2 OR A
76A3 JR Z,Handler_AliensMovement_Spawning_5
76A5 LD BC,$6666 BC=6666.
76A8 CP $01 Jump to Handler_AliensMovement_Spawning_5 if A is equal to 01.
76AA JR Z,Handler_AliensMovement_Spawning_5
76AC LD BC,$6675 BC=6675.
Handler_AliensMovement_Spawning_5 76AF LD HL,($668F) HL=*Alien_Index.
76B2 ADD HL,BC HL+=BC.
76B3 LD A,(HL) Jump to Handler_AliensMovement_Spawning_10 if *HL is equal to E.
76B4 CP E
76B5 JR Z,Handler_AliensMovement_Spawning_10
76B7 LD HL,$668F HL=Alien_Index.
76BA LD A,(HL) Jump to Handler_AliensMovement_Spawning_7 if *HL is not zero.
76BB OR A
76BC JR NZ,Handler_AliensMovement_Spawning_7
76BE LD A,($66F1) A=*Phase.
76C1 AND %00000110 Keep only bits 1-2.
76C3 LD A,$0F A=0F.
76C5 JR Z,Handler_AliensMovement_Spawning_6 Jump to Handler_AliensMovement_Spawning_6 if A is equal to A.
76C7 LD A,$08 A=08.
Handler_AliensMovement_Spawning_6 76C9 LD (HL),A Write A to *HL.
Handler_AliensMovement_Spawning_7 76CA DEC (HL) Decrease *HL by one.
Handler_AliensMovement_Spawning_8 76CB CALL ConvertScreenToAttributeBufferAddress Call ConvertScreenToAttributeBufferAddress.
76CE EX DE,HL Exchange the DE and HL registers.
76CF LD BC,$0020 BC=0020.
76D2 LD A,($66C3) A=*66C3.
76D5 OR A
76D6 LD A,L A=L.
76D7 JR NZ,Handler_AliensMovement_Spawning_9 Jump to Handler_AliensMovement_Spawning_9 if *66C3 is not zero.
76D9 AND %00011111 Keep only bits 0-4.
76DB JP NZ,Handler_AliensMovement_Spawning_29 Jump to Handler_AliensMovement_Spawning_29 if the result is not zero.
76DE INC A Increment A by one.
76DF LD ($66C3),A Write A to *66C3.
76E2 JR Handler_AliensMovement_Spawning_10 Jump to Handler_AliensMovement_Spawning_10.
Handler_AliensMovement_Spawning_9 76E4 AND %00011111 Keep only bits 0-4.
76E6 SUB $1D A-=1D.
76E8 JP NZ,Handler_AliensMovement_Spawning_31 Jump to Handler_AliensMovement_Spawning_31 if A is not equal to A.
76EB LD ($66C3),A Write A to *66C3.
Handler_AliensMovement_Spawning_10 76EE POP AF Restore AF and AF from the stack.
76EF POP AF
76F0 JP Handler_AliensMovement_Spawning_57 Jump to Handler_AliensMovement_Spawning_57.
Handler_AliensMovement_Spawning_11 76F3 CP $01 Jump to Handler_AliensMovement_Spawning_12 if A is not equal to 01.
76F5 JR NZ,Handler_AliensMovement_Spawning_12
76F7 LD A,D Jump to Handler_AliensMovement_Spawning_13 if D is not equal to 48.
76F8 CP $48
76FA JR NZ,Handler_AliensMovement_Spawning_13
Handler_AliensMovement_Spawning_12 76FC DEC (HL) Decrease *HL by one.
Handler_AliensMovement_Spawning_13 76FD LD BC,$6680 BC=6680.
7700 LD HL,($668F) HL=*Alien_Index.
7703 ADD HL,BC HL+=BC.
7704 LD A,(HL) A=*HL.
7705 PUSH AF Stash AF on the stack.
7706 LD A,($6691) Jump to Handler_AliensMovement_Spawning_21 if *6691 is not zero.
7709 OR A
770A JR NZ,Handler_AliensMovement_Spawning_21
770C POP AF Restore AF from the stack.
770D PUSH HL Stash HL and AF on the stack.
770E PUSH AF
770F LD A,E A=E.
7710 AND %00011111 Keep only bits 0-4.
7712 PUSH AF Stash AF on the stack.
7713 CP $0A Jump to Handler_AliensMovement_Spawning_14 if A is equal to 0A.
7715 JR Z,Handler_AliensMovement_Spawning_14
7717 CP $0D Jump to Handler_AliensMovement_Spawning_14 if A is equal to 0D.
7719 JR Z,Handler_AliensMovement_Spawning_14
771B CP $10 Jump to Handler_AliensMovement_Spawning_14 if A is equal to 10.
771D JR Z,Handler_AliensMovement_Spawning_14
771F CP $13 Jump to Handler_AliensMovement_Spawning_15 if A is not equal to 13.
7721 JR NZ,Handler_AliensMovement_Spawning_15
Handler_AliensMovement_Spawning_14 7723 LD A,$02 Write 02 to *6692.
7725 LD ($6692),A
Handler_AliensMovement_Spawning_15 7728 BIT 7,D Test bit 7 of D.
772A JR NZ,Handler_AliensMovement_Spawning_17 Jump to Handler_AliensMovement_Spawning_17 if A is not equal to 02.
772C POP AF Restore AF from the stack.
772D CP $1D Jump to Handler_AliensMovement_Spawning_16 if A is not equal to 1D.
772F JR NZ,Handler_AliensMovement_Spawning_16
7731 SET 7,D Set bit 7 of D.
7733 POP AF Restore AF from the stack.
7734 INC A Increment A by one.
7735 PUSH AF Stash AF on the stack.
7736 JR Handler_AliensMovement_Spawning_18 Jump to Handler_AliensMovement_Spawning_18.
Handler_AliensMovement_Spawning_16 7738 INC DE Increment DE by one.
7739 JR Handler_AliensMovement_Spawning_19 Jump to Handler_AliensMovement_Spawning_19.
Handler_AliensMovement_Spawning_17 773B POP AF Restore AF from the stack.
773C OR A Jump to Handler_AliensMovement_Spawning_18 if A is not zero.
773D JR NZ,Handler_AliensMovement_Spawning_18
773F RES 7,D Reset bit 7 of D.
7741 POP AF Restore AF from the stack.
7742 INC A Increment A by one.
7743 PUSH AF Stash AF on the stack.
7744 JR Handler_AliensMovement_Spawning_16 Jump to Handler_AliensMovement_Spawning_16.
Handler_AliensMovement_Spawning_18 7746 DEC DE Decrease DE by one.
Handler_AliensMovement_Spawning_19 7747 POP AF Restore AF and HL from the stack.
7748 POP HL
7749 LD (HL),A Write A to *HL.
774A POP HL Restore HL from the stack.
774B PUSH AF Stash AF and DE on the stack.
774C PUSH DE
774D EX DE,HL Exchange the DE and HL registers.
774E RES 7,D Reset bit 7 of D.
7750 CALL ClearSpriteArea Call ClearSpriteArea.
7753 POP DE Restore DE and AF from the stack.
7754 POP AF
7755 PUSH DE Stash DE on the stack.
7756 RES 7,D Reset bit 7 of D.
7758 OR A Call Handler_Pheenix_01 if A is equal to 00.
7759 CALL Z,Handler_Pheenix_01
775C CP $01 Call Handler_Pheenix_02 if A is equal to 01.
775E CALL Z,Handler_Pheenix_02
7761 CP $02 Call Handler_Pheenix_03 if A is equal to 02.
7763 CALL Z,Handler_Pheenix_03
7766 CP $03 Jump to Handler_AliensMovement_Spawning_20 if A is not equal to 03.
7768 JR NZ,Handler_AliensMovement_Spawning_20
776A LD A,$01 Write 01 to *6691.
776C LD ($6691),A
776F CALL Handler_Pheenix_04 Call Handler_Pheenix_04.
7772 LD HL,$6680 HL=6680.
7775 LD DE,$6681 DE=6681.
7778 LD BC,$000E BC=000E.
777B LD (HL),B Write B to *HL.
777C LDIR LDIR.
Handler_AliensMovement_Spawning_20 777E POP DE Restore DE from the stack.
777F JP Handler_AliensMovement_Spawning_55 Jump to Handler_AliensMovement_Spawning_55.
Handler_AliensMovement_Spawning_21 7782 POP AF Restore AF from the stack.
7783 PUSH AF Stash AF on the stack.
7784 AND %11110000 Keep only bits 4-7.
7786 JR NZ,Handler_AliensMovement_Spawning_22 Jump to Handler_AliensMovement_Spawning_22 if the result is not zero.
7788 POP AF Restore AF from the stack.
7789 CALL GenerateRandomNumber Call GenerateRandomNumber.
778C SRA A Shift A right (with carry).
778E SRA A Shift A right (with carry).
7790 AND %00000111 Keep only bits 0-2.
7792 ADD A,$80 A+=80.
7794 JR Handler_AliensMovement_Spawning_23 Jump to Handler_AliensMovement_Spawning_23.
Handler_AliensMovement_Spawning_22 7796 POP AF Restore AF from the stack.
Handler_AliensMovement_Spawning_23 7797 SUB $10 A-=10.
7799 LD (HL),A Write A to *HL.
779A AND %00000111 Keep only bits 0-2.
779C PUSH AF Stash AF on the stack.
779D CALL ConvertScreenToAttributeBufferAddress Call ConvertScreenToAttributeBufferAddress.
77A0 EX DE,HL Exchange the DE and HL registers.
77A1 LD BC,$0020 BC=0020.
77A4 PUSH HL Stash HL and BC on the stack.
77A5 PUSH BC
77A6 LD B,$03 B=03.
Handler_AliensMovement_Spawning_24 77A8 LD A,(HL) Jump to Handler_AliensMovement_Spawning_25 if *HL is equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
77A9 CP $46
77AB JR Z,Handler_AliensMovement_Spawning_25
77AD CP $07 Jump to Handler_AliensMovement_Spawning_25 if *HL is equal to WHITE.
77AF JR Z,Handler_AliensMovement_Spawning_25
77B1 INC HL Increment HL by one.
77B2 DJNZ Handler_AliensMovement_Spawning_24 Decrease counter by one and loop back to Handler_AliensMovement_Spawning_24 until counter is zero.
77B4 DEC HL Decrease HL by two.
77B5 DEC HL
77B6 POP BC Restore BC from the stack.
77B7 ADD HL,BC HL+=BC.
77B8 LD A,(HL) Jump to Handler_AliensMovement_Spawning_26 if *HL is equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
77B9 CP $46
77BB JR Z,Handler_AliensMovement_Spawning_26
77BD CP $07 Jump to Handler_AliensMovement_Spawning_26 if *HL is equal to WHITE.
77BF JR Z,Handler_AliensMovement_Spawning_26
77C1 POP HL Restore HL from the stack.
77C2 JR Handler_AliensMovement_Spawning_27 Jump to Handler_AliensMovement_Spawning_27.
Handler_AliensMovement_Spawning_25 77C4 POP BC Restore BC and DE from the stack.
Handler_AliensMovement_Spawning_26 77C5 POP DE
77C6 CALL FindEmptySlot Call FindEmptySlot.
77C9 LD DE,$65DD DE=Table_CurrentAlienPhaseData.
77CC LD HL,($668F) HL=*Alien_Index.
77CF ADD HL,HL HL+=HL.
77D0 ADD HL,DE HL+=DE.
77D1 INC HL Increment HL by one.
77D2 LD (HL),$00 Write 00 to *HL.
77D4 POP AF Restore AF, AF and AF from the stack.
77D5 POP AF
77D6 POP AF
77D7 JP Handler_AliensMovement_Spawning_57 Jump to Handler_AliensMovement_Spawning_57.
Handler_AliensMovement_Spawning_27 77DA POP AF Restore AF from the stack.
77DB JR Z,Handler_AliensMovement_Spawning_35 Jump to Handler_AliensMovement_Spawning_35 if HL is equal to 07.
77DD CP $07 Jump to Handler_AliensMovement_Spawning_31 if A is equal to 07.
77DF JR Z,Handler_AliensMovement_Spawning_31
77E1 CP $06 Jump to Handler_AliensMovement_Spawning_29 if A is equal to 06.
77E3 JR Z,Handler_AliensMovement_Spawning_29
77E5 CP $04 Jump to Handler_AliensMovement_Spawning_42 if A is equal to 04.
77E7 JP Z,Handler_AliensMovement_Spawning_42
77EA CP $02 Jump to Handler_AliensMovement_Spawning_42 if A is equal to 02.
77EC JP Z,Handler_AliensMovement_Spawning_42
77EF AND A HL-=BC.
77F0 SBC HL,BC
77F2 PUSH HL Stash HL on the stack.
77F3 LD B,$03 B=03.
Handler_AliensMovement_Spawning_28 77F5 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not zero.
77F6 OR A
77F7 JR NZ,Handler_AliensMovement_Spawning_33
77F9 INC HL Increment HL by one.
77FA DJNZ Handler_AliensMovement_Spawning_28 Decrease counter by one and loop back to Handler_AliensMovement_Spawning_28 until counter is zero.
77FC POP HL Restore HL from the stack.
77FD JP Handler_AliensMovement_Spawning_52 Jump to Handler_AliensMovement_Spawning_52.
Handler_AliensMovement_Spawning_29 7800 LD A,L A=L.
7801 AND %00011111 Keep only bits 0-4.
7803 JR Z,Handler_AliensMovement_Spawning_34 Jump to Handler_AliensMovement_Spawning_34 if HL is equal to A.
7805 ADD HL,BC HL+=BC.
7806 LD A,(HL) Jump to Handler_AliensMovement_Spawning_34 if *HL is not zero.
7807 OR A
7808 JR NZ,Handler_AliensMovement_Spawning_34
780A DEC HL Decrease HL by one.
780B SBC HL,BC HL-=BC.
780D LD A,(HL) Jump to Handler_AliensMovement_Spawning_30 if *HL is zero.
780E OR A
780F JR Z,Handler_AliensMovement_Spawning_30
7811 LD A,($6693) Jump to Handler_AliensMovement_Spawning_34 if *Flag_Shield is not zero.
7814 OR A
7815 JR NZ,Handler_AliensMovement_Spawning_34
7817 LD A,(HL) Jump to Handler_AliensMovement_Spawning_34 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
7818 CP $46
781A JR NZ,Handler_AliensMovement_Spawning_34
Handler_AliensMovement_Spawning_30 781C JP Handler_AliensMovement_Spawning_52 Jump to Handler_AliensMovement_Spawning_52.
Handler_AliensMovement_Spawning_31 781F LD A,L A=L.
7820 AND %00011111 Keep only bits 0-4.
7822 CP $1D Jump to Handler_AliensMovement_Spawning_34 if A is equal to 1D.
7824 JR Z,Handler_AliensMovement_Spawning_34
7826 INC HL Increment HL by one.
7827 PUSH HL Stash HL on the stack.
7828 INC HL Increment HL by one.
7829 ADD HL,BC HL+=BC.
782A LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not zero.
782B OR A
782C JR NZ,Handler_AliensMovement_Spawning_33
782E INC HL Increment HL by one.
782F SBC HL,BC HL-=BC.
7831 LD A,(HL) Jump to Handler_AliensMovement_Spawning_32 if *HL is zero.
7832 OR A
7833 JR Z,Handler_AliensMovement_Spawning_32
7835 LD A,($6693) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
7838 OR A
7839 JR NZ,Handler_AliensMovement_Spawning_33
783B LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
783C CP $46
783E JR NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_32 7840 POP HL Restore HL from the stack.
7841 JP Handler_AliensMovement_Spawning_52 Jump to Handler_AliensMovement_Spawning_52.
Handler_AliensMovement_Spawning_33 7844 POP AF Restore AF, AF and AF from the stack.
Handler_AliensMovement_Spawning_34 7845 POP AF
7846 POP AF
7847 LD BC,$6680 BC=6680.
784A LD HL,($668F) HL=*Alien_Index.
784D ADD HL,BC HL+=BC.
784E LD A,(HL) A=*HL.
784F AND %00001111 Keep only bits 0-3.
7851 LD (HL),A Write A to *HL.
7852 JP Handler_AliensMovement_Spawning_56 Jump to Handler_AliensMovement_Spawning_56.
Handler_AliensMovement_Spawning_35 7855 LD A,L A=L.
7856 AND %11100000 Keep only bits 5-7.
7858 CP $C0 Jump to Handler_AliensMovement_Spawning_38 if A is not equal to C0.
785A JR NZ,Handler_AliensMovement_Spawning_38
785C LD A,H Jump to Handler_AliensMovement_Spawning_38 if H is not equal to 5A.
785D CP $5A
785F JR NZ,Handler_AliensMovement_Spawning_38
Handler_AliensMovement_Spawning_36 7861 LD A,($66F1) A=*Phase.
7864 AND %00000010 Keep only bit 1.
7866 JR Z,Handler_AliensMovement_Spawning_34 Jump to Handler_AliensMovement_Spawning_34 if A is zero.
7868 LD H,$58 H=58.
786A LD A,L L-=A0.
786B SUB $A0
786D LD L,A
786E PUSH HL Stash HL on the stack.
786F LD B,$03 B=03.
Handler_AliensMovement_Spawning_37 7871 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not zero.
7872 OR A
7873 JR NZ,Handler_AliensMovement_Spawning_33
7875 INC HL Increment HL by one.
7876 DJNZ Handler_AliensMovement_Spawning_37 Decrease counter by one and loop back to Handler_AliensMovement_Spawning_37 until counter is zero.
7878 LD C,$20 C=20.
787A ADD HL,BC HL+=BC.
787B DEC HL Decrease HL by one.
787C LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not zero.
787D OR A
787E JR NZ,Handler_AliensMovement_Spawning_33
7880 JR Handler_AliensMovement_Spawning_41 Jump to Handler_AliensMovement_Spawning_41.
Handler_AliensMovement_Spawning_38 7882 ADD HL,BC HL+=BC.
7883 PUSH HL Stash HL on the stack.
7884 LD A,(HL) Jump to Handler_AliensMovement_Spawning_39 if *HL is zero.
7885 OR A
7886 JR Z,Handler_AliensMovement_Spawning_39
7888 LD A,($6693) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
788B OR A
788C JR NZ,Handler_AliensMovement_Spawning_33
788E LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
788F CP $46
7891 JR NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_39 7893 INC HL Increment HL by two.
7894 INC HL
7895 LD A,(HL) Jump to Handler_AliensMovement_Spawning_40 if *HL is zero.
7896 OR A
7897 JR Z,Handler_AliensMovement_Spawning_40
7899 LD A,($6693) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
789C OR A
789D JR NZ,Handler_AliensMovement_Spawning_33
789F LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
78A0 CP $46
78A2 JR NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_40 78A4 ADD HL,BC HL+=BC.
78A5 DEC HL Decrease HL by one.
78A6 LD A,(HL) Jump to Handler_AliensMovement_Spawning_41 if *HL is zero.
78A7 OR A
78A8 JR Z,Handler_AliensMovement_Spawning_41
78AA LD A,($6693) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
78AD OR A
78AE JR NZ,Handler_AliensMovement_Spawning_33
78B0 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
78B1 CP $46
78B3 JR NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_41 78B5 POP HL Restore HL from the stack.
78B6 CALL ConvertAttributeToScreenBufferAddress Call ConvertAttributeToScreenBufferAddress.
78B9 POP DE Restore DE from the stack.
78BA PUSH HL Stash HL on the stack.
78BB SET 7,D Set bit 7 of D.
78BD PUSH DE Stash DE on the stack.
78BE RES 7,D Reset bit 7 of D.
78C0 CALL ClearSpriteArea Call ClearSpriteArea.
78C3 JP Handler_AliensMovement_Spawning_53 Jump to Handler_AliensMovement_Spawning_53.
Handler_AliensMovement_Spawning_42 78C6 PUSH HL Stash HL on the stack.
78C7 LD A,L A=L.
78C8 AND %00011111 Keep only bits 0-4.
78CA LD L,A L=A.
78CB LD A,($66ED) A=*PlayerAttributeBufferPosition.
78CE INC A Increment A by one.
78CF AND %00011111 Keep only bits 0-4.
78D1 CP L Compare A with L.
78D2 POP HL Restore HL from the stack.
78D3 JR Z,Handler_AliensMovement_Spawning_35 Jump to Handler_AliensMovement_Spawning_35 if A is equal to L.
78D5 JR NC,Handler_AliensMovement_Spawning_48 Jump to Handler_AliensMovement_Spawning_48 if A is greater than or equal to L.
78D7 LD A,L A=L.
78D8 AND %00011111 Keep only bits 0-4.
78DA JP Z,Handler_AliensMovement_Spawning_35 Jump to Handler_AliensMovement_Spawning_35 if A is equal to L.
78DD LD A,L A=L.
78DE AND %11100000 Keep only bits 5-7.
78E0 CP $C0 Jump to Handler_AliensMovement_Spawning_43 if A is not equal to C0.
78E2 JR NZ,Handler_AliensMovement_Spawning_43
78E4 LD A,H Jump to Handler_AliensMovement_Spawning_36 if H is equal to 5A.
78E5 CP $5A
78E7 JP Z,Handler_AliensMovement_Spawning_36
Handler_AliensMovement_Spawning_43 78EA ADD HL,BC HL+=BC.
78EB DEC HL Decrease HL by one.
78EC PUSH HL Stash HL on the stack.
78ED LD A,(HL) Jump to Handler_AliensMovement_Spawning_44 if *HL is zero.
78EE OR A
78EF JR Z,Handler_AliensMovement_Spawning_44
78F1 LD A,($6693) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
78F4 OR A
78F5 JP NZ,Handler_AliensMovement_Spawning_33
78F8 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
78F9 CP $46
78FB JP NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_44 78FE INC HL Increment HL by one.
78FF LD A,(HL) Jump to Handler_AliensMovement_Spawning_45 if *HL is zero.
7900 OR A
7901 JR Z,Handler_AliensMovement_Spawning_45
7903 LD A,($6693) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
7906 OR A
7907 JP NZ,Handler_AliensMovement_Spawning_33
790A LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
790B CP $46
790D JP NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_45 7910 ADD HL,BC HL+=BC.
Handler_AliensMovement_Spawning_46 7911 LD A,(HL) Jump to Handler_AliensMovement_Spawning_47 if *HL is zero.
7912 OR A
7913 JR Z,Handler_AliensMovement_Spawning_47
7915 LD A,($6693) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
7918 OR A
7919 JP NZ,Handler_AliensMovement_Spawning_33
791C LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
791D CP $46
791F JP NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_47 7922 POP HL Restore HL from the stack.
7923 JR Handler_AliensMovement_Spawning_52 Jump to Handler_AliensMovement_Spawning_52.
Handler_AliensMovement_Spawning_48 7925 LD A,L A=L.
7926 AND %00011111 Keep only bits 0-4.
7928 CP $1D Jump to Handler_AliensMovement_Spawning_35 if A is equal to 1D.
792A JP Z,Handler_AliensMovement_Spawning_35
792D LD A,L A=L.
792E AND %11100000 Keep only bits 5-7.
7930 CP $C0 Jump to Handler_AliensMovement_Spawning_49 if A is not equal to C0.
7932 JR NZ,Handler_AliensMovement_Spawning_49
7934 LD A,H Jump to Handler_AliensMovement_Spawning_36 if H is equal to 5A.
7935 CP $5A
7937 JP Z,Handler_AliensMovement_Spawning_36
Handler_AliensMovement_Spawning_49 793A ADD HL,BC HL+=BC.
793B INC HL Increment HL by one.
793C PUSH HL Stash HL on the stack.
793D INC HL Increment HL by one.
793E LD A,(HL) Jump to Handler_AliensMovement_Spawning_50 if *HL is zero.
793F OR A
7940 JR Z,Handler_AliensMovement_Spawning_50
7942 LD A,($6693) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
7945 OR A
7946 JP NZ,Handler_AliensMovement_Spawning_33
7949 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
794A CP $46
794C JP NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_50 794F INC HL Increment HL by one.
7950 LD A,(HL) Jump to Handler_AliensMovement_Spawning_51 if *HL is zero.
7951 OR A
7952 JR Z,Handler_AliensMovement_Spawning_51
7954 LD A,($6693) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
7957 OR A
7958 JP NZ,Handler_AliensMovement_Spawning_33
795B LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
795C CP $46
Handler_AliensMovement_Spawning_51 795E JP NZ,Handler_AliensMovement_Spawning_33
7961 DEC HL Decrease HL by one.
7962 ADD HL,BC HL+=BC.
7963 JR Handler_AliensMovement_Spawning_46 Jump to Handler_AliensMovement_Spawning_46.
Handler_AliensMovement_Spawning_52 7965 CALL ConvertAttributeToScreenBufferAddress Call ConvertAttributeToScreenBufferAddress.
7968 POP DE Restore DE from the stack.
7969 PUSH HL Stash HL and DE on the stack.
796A PUSH DE
796B RES 7,D Reset bit 7 of D.
796D CALL ClearSpriteArea Call ClearSpriteArea.
Handler_AliensMovement_Spawning_53 7970 POP DE Restore DE from the stack.
7971 BIT 7,D Test bit 7 of D.
7973 POP DE Restore DE from the stack.
7974 LD A,($66F1) A=*Phase.
7977 JR Z,Handler_AliensMovement_Spawning_54 Jump to Handler_AliensMovement_Spawning_54 if HL is equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
7979 AND %00000010 Keep only bit 1.
797B CALL NZ,Handler_Pheenix_04 Call Handler_Pheenix_04 if A is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
797E CALL Z,Handler_BirdAlien_01 Call Handler_BirdAlien_01 if A is equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
7981 JR Handler_AliensMovement_Spawning_55 Jump to Handler_AliensMovement_Spawning_55.
Handler_AliensMovement_Spawning_54 7983 AND %00000010 Keep only bit 1.
7985 CALL NZ,Handler_Pheenix_05 Call Handler_Pheenix_05 if A is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
7988 CALL Z,Handler_BirdAlien_02 Call Handler_BirdAlien_02 if A is equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
798B SET 7,D Set bit 7 of D.
Handler_AliensMovement_Spawning_55 798D POP HL Restore HL from the stack.
798E LD (HL),E Write E to *HL.
798F INC HL Increment HL by one.
7990 LD (HL),D Write D to *HL.
Handler_AliensMovement_Spawning_56 7991 LD A,($6692) Jump to Handler_AliensMovement_Spawning_57 if *6692 is zero.
7994 OR A
7995 JR Z,Handler_AliensMovement_Spawning_57
7997 DEC A Decrease A by one.
7998 LD ($6692),A Write A to *6692.
799B JP Handler_AliensMovement_Spawning Jump to Handler_AliensMovement_Spawning.
Handler_AliensMovement_Spawning_57 799E LD HL,$668F HL=Alien_Index.
79A1 LD A,($66F1) A=*Phase.
79A4 AND %00000110 Keep only bits 1-2.
79A6 LD A,$07 A=07.
79A8 JR NZ,Handler_AliensMovement_Spawning_58 Jump to Handler_AliensMovement_Spawning_58 if A is not equal to A.
79AA ADD A,A A+=A.
Handler_AliensMovement_Spawning_58 79AB CP (HL) Jump to Handler_AliensMovement_Spawning_59 if A is not equal to *HL.
79AC JR NZ,Handler_AliensMovement_Spawning_59
79AE LD (HL),$FF Write FF to *HL.
Handler_AliensMovement_Spawning_59 79B0 INC (HL) Increment *HL by one.
79B1 RET Return.
Prev: 75B7 Up: Map Next: 79B2