Prev: 30135 Up: Map Next: 31154
30230: Handler: Aliens Movement/ Spawning
Used by the routines at TitleScreen and StartGame.
Skip over drawing the alien mothership unless this is phase 4.
Handler_AliensMovement_Spawning 30230 LD A,(26353) Jump to SkipHandler_Mothership if *Phase is not equal to 4.
30233 CP 4
30235 JR NZ,SkipHandler_Mothership
30237 CALL Handler_Mothership Call Handler_Mothership.
SkipHandler_Mothership 30240 LD DE,26077 DE=Table_CurrentAlienPhaseData.
30243 LD HL,(26255) HL=*Alien_Index.
30246 LD A,(26257) Jump to Aliens_LoadPhaseData if *26257 is not zero.
30249 OR A
30250 JR NZ,Aliens_LoadPhaseData
Check if all the aliens are spawned for the current phase.
30252 LD A,(26353) A=*Phase.
30255 AND %00000100 Keep only bit 2.
30257 LD A,7 Set the alien spawn limit to 7.
30259 JR NZ,Aliens_CheckSpawnLimit Jump to Aliens_CheckSpawnLimit if *Phase is 4.
30261 ADD A,A Double the alien spawn limit to 14.
Aliens_CheckSpawnLimit 30262 PUSH AF Stash the alien spawn limit on the stack.
30263 SUB L Calculate the remaining aliens left to spawn.
30264 EX AF,AF' Exchange the AF register with the shadow AF register.
30265 POP AF Restore the alien spawn limit from the stack.
30266 CP L Jump to Aliens_LoadPhaseData if A is not equal to L.
30267 JR NZ,Aliens_LoadPhaseData
30269 PUSH HL Stash HL on the stack.
30270 LD HL,26306 HL=26306.
30273 INC (HL) Increment *HL by one.
30274 LD A,(HL) A=*HL.
30275 SUB 20 A-=20.
30277 POP HL Restore HL from the stack.
30278 JR NZ,Aliens_LoadPhaseData Jump to Aliens_LoadPhaseData if *HL is not equal to L.
30280 INC A Increment A by one.
30281 LD (26257),A Write A to *26257.
Aliens_LoadPhaseData 30284 ADD HL,HL HL+=HL.
30285 ADD HL,DE HL+=DE.
30286 PUSH HL Stash HL on the stack.
30287 LD E,(HL) E=*HL.
30288 INC HL Increment HL by one.
30289 LD D,(HL) D=*HL.
30290 LD A,D Jump to Handler_AliensMovement_Spawning_1 if D is not zero.
30291 OR A
30292 JR NZ,Handler_AliensMovement_Spawning_1
30294 EX AF,AF' Exchange the shadow AF register with the AF register.
30295 JR NZ,Handler_AliensMovement_Spawning_0 Jump to Handler_AliensMovement_Spawning_0 if HL is not equal to A.
30297 LD A,1 Write 1 to *26257.
30299 LD (26257),A
Handler_AliensMovement_Spawning_0 30302 POP AF Restore AF from the stack.
30303 JP Handler_AliensMovement_Spawning_56 Jump to Handler_AliensMovement_Spawning_56.
Handler_AliensMovement_Spawning_1 30306 PUSH DE Stash DE on the stack.
30307 LD A,(26353) A=*Phase.
30310 BIT 1,A Jump to Handler_AliensMovement_Spawning_13 if bit 1 of A is set.
30312 JP NZ,Handler_AliensMovement_Spawning_13
30315 AND %00000100 Keep only bit 2.
30317 JR Z,Handler_AliensMovement_Spawning_2 Jump to Handler_AliensMovement_Spawning_2 if the result is zero.
30319 LD A,(26257) Jump to Handler_AliensMovement_Spawning_13 if *26257 is not zero.
30322 OR A
30323 JP NZ,Handler_AliensMovement_Spawning_13
Handler_AliensMovement_Spawning_2 30326 LD BC,26308 HL=*Alien_Index+26308.
30329 LD HL,(26255)
30332 ADD HL,BC
30333 LD A,(HL) Jump to Handler_AliensMovement_Spawning_11 if *HL is not zero.
30334 OR A
30335 JR NZ,Handler_AliensMovement_Spawning_11
30337 LD A,(26257) Jump to Handler_AliensMovement_Spawning_3 if *26257 is zero.
30340 OR A
30341 JR Z,Handler_AliensMovement_Spawning_3
30343 CALL GenerateRandomNumber Call GenerateRandomNumber.
30346 CP 213 Jump to Handler_AliensMovement_Spawning_8 if A is not equal to 213.
30348 JR NZ,Handler_AliensMovement_Spawning_8
30350 LD (HL),60 Write 60 to *HL.
30352 JR Handler_AliensMovement_Spawning_10 Jump to Handler_AliensMovement_Spawning_10.
Handler_AliensMovement_Spawning_3 30354 LD A,(26261) A=*Bullet_RateLimiter.
30357 AND %00000001 Keep only bit 0.
30359 JR NZ,Handler_AliensMovement_Spawning_4 Jump to Handler_AliensMovement_Spawning_4 if the result is not zero.
30361 POP AF Restore AF and AF from the stack.
30362 POP AF
30363 RET Return.
Handler_AliensMovement_Spawning_4 30364 LD BC,26199 BC=26199.
30367 LD A,(26353) Jump to Handler_AliensMovement_Spawning_5 if *Phase is zero.
30370 OR A
30371 JR Z,Handler_AliensMovement_Spawning_5
30373 LD BC,26214 BC=26214.
30376 CP 1 Jump to Handler_AliensMovement_Spawning_5 if A is equal to 1.
30378 JR Z,Handler_AliensMovement_Spawning_5
30380 LD BC,26229 BC=26229.
Handler_AliensMovement_Spawning_5 30383 LD HL,(26255) HL=*Alien_Index.
30386 ADD HL,BC HL+=BC.
30387 LD A,(HL) Jump to Handler_AliensMovement_Spawning_10 if *HL is equal to E.
30388 CP E
30389 JR Z,Handler_AliensMovement_Spawning_10
30391 LD HL,26255 HL=Alien_Index.
30394 LD A,(HL) Jump to Handler_AliensMovement_Spawning_7 if *HL is not zero.
30395 OR A
30396 JR NZ,Handler_AliensMovement_Spawning_7
30398 LD A,(26353) A=*Phase.
30401 AND %00000110 Keep only bits 1-2.
30403 LD A,15 A=15.
30405 JR Z,Handler_AliensMovement_Spawning_6 Jump to Handler_AliensMovement_Spawning_6 if A is equal to A.
30407 LD A,8 A=8.
Handler_AliensMovement_Spawning_6 30409 LD (HL),A Write A to *HL.
Handler_AliensMovement_Spawning_7 30410 DEC (HL) Decrease *HL by one.
Handler_AliensMovement_Spawning_8 30411 CALL ConvertScreenToAttributeBufferAddress Call ConvertScreenToAttributeBufferAddress.
30414 EX DE,HL Exchange the DE and HL registers.
30415 LD BC,32 BC=0032.
30418 LD A,(26307) A=*26307.
30421 OR A
30422 LD A,L A=L.
30423 JR NZ,Handler_AliensMovement_Spawning_9 Jump to Handler_AliensMovement_Spawning_9 if *26307 is not zero.
30425 AND %00011111 Keep only bits 0-4.
30427 JP NZ,Handler_AliensMovement_Spawning_29 Jump to Handler_AliensMovement_Spawning_29 if the result is not zero.
30430 INC A Increment A by one.
30431 LD (26307),A Write A to *26307.
30434 JR Handler_AliensMovement_Spawning_10 Jump to Handler_AliensMovement_Spawning_10.
Handler_AliensMovement_Spawning_9 30436 AND %00011111 Keep only bits 0-4.
30438 SUB 29 A-=29.
30440 JP NZ,Handler_AliensMovement_Spawning_31 Jump to Handler_AliensMovement_Spawning_31 if A is not equal to A.
30443 LD (26307),A Write A to *26307.
Handler_AliensMovement_Spawning_10 30446 POP AF Restore AF and AF from the stack.
30447 POP AF
30448 JP Handler_AliensMovement_Spawning_57 Jump to Handler_AliensMovement_Spawning_57.
Handler_AliensMovement_Spawning_11 30451 CP 1 Jump to Handler_AliensMovement_Spawning_12 if A is not equal to 1.
30453 JR NZ,Handler_AliensMovement_Spawning_12
30455 LD A,D Jump to Handler_AliensMovement_Spawning_13 if D is not equal to 72.
30456 CP 72
30458 JR NZ,Handler_AliensMovement_Spawning_13
Handler_AliensMovement_Spawning_12 30460 DEC (HL) Decrease *HL by one.
Handler_AliensMovement_Spawning_13 30461 LD BC,26240 BC=26240.
30464 LD HL,(26255) HL=*Alien_Index.
30467 ADD HL,BC HL+=BC.
30468 LD A,(HL) A=*HL.
30469 PUSH AF Stash AF on the stack.
30470 LD A,(26257) Jump to Handler_AliensMovement_Spawning_21 if *26257 is not zero.
30473 OR A
30474 JR NZ,Handler_AliensMovement_Spawning_21
30476 POP AF Restore AF from the stack.
30477 PUSH HL Stash HL and AF on the stack.
30478 PUSH AF
30479 LD A,E A=E.
30480 AND %00011111 Keep only bits 0-4.
30482 PUSH AF Stash AF on the stack.
30483 CP 10 Jump to Handler_AliensMovement_Spawning_14 if A is equal to 10.
30485 JR Z,Handler_AliensMovement_Spawning_14
30487 CP 13 Jump to Handler_AliensMovement_Spawning_14 if A is equal to 13.
30489 JR Z,Handler_AliensMovement_Spawning_14
30491 CP 16 Jump to Handler_AliensMovement_Spawning_14 if A is equal to 16.
30493 JR Z,Handler_AliensMovement_Spawning_14
30495 CP 19 Jump to Handler_AliensMovement_Spawning_15 if A is not equal to 19.
30497 JR NZ,Handler_AliensMovement_Spawning_15
Handler_AliensMovement_Spawning_14 30499 LD A,2 Write 2 to *26258.
30501 LD (26258),A
Handler_AliensMovement_Spawning_15 30504 BIT 7,D Test bit 7 of D.
30506 JR NZ,Handler_AliensMovement_Spawning_17 Jump to Handler_AliensMovement_Spawning_17 if A is not equal to 2.
30508 POP AF Restore AF from the stack.
30509 CP 29 Jump to Handler_AliensMovement_Spawning_16 if A is not equal to 29.
30511 JR NZ,Handler_AliensMovement_Spawning_16
30513 SET 7,D Set bit 7 of D.
30515 POP AF Restore AF from the stack.
30516 INC A Increment A by one.
30517 PUSH AF Stash AF on the stack.
30518 JR Handler_AliensMovement_Spawning_18 Jump to Handler_AliensMovement_Spawning_18.
Handler_AliensMovement_Spawning_16 30520 INC DE Increment DE by one.
30521 JR Handler_AliensMovement_Spawning_19 Jump to Handler_AliensMovement_Spawning_19.
Handler_AliensMovement_Spawning_17 30523 POP AF Restore AF from the stack.
30524 OR A Jump to Handler_AliensMovement_Spawning_18 if A is not zero.
30525 JR NZ,Handler_AliensMovement_Spawning_18
30527 RES 7,D Reset bit 7 of D.
30529 POP AF Restore AF from the stack.
30530 INC A Increment A by one.
30531 PUSH AF Stash AF on the stack.
30532 JR Handler_AliensMovement_Spawning_16 Jump to Handler_AliensMovement_Spawning_16.
Handler_AliensMovement_Spawning_18 30534 DEC DE Decrease DE by one.
Handler_AliensMovement_Spawning_19 30535 POP AF Restore AF and HL from the stack.
30536 POP HL
30537 LD (HL),A Write A to *HL.
30538 POP HL Restore HL from the stack.
30539 PUSH AF Stash AF and DE on the stack.
30540 PUSH DE
30541 EX DE,HL Exchange the DE and HL registers.
30542 RES 7,D Reset bit 7 of D.
30544 CALL ClearSpriteArea Call ClearSpriteArea.
30547 POP DE Restore DE and AF from the stack.
30548 POP AF
30549 PUSH DE Stash DE on the stack.
30550 RES 7,D Reset bit 7 of D.
30552 OR A Call Handler_Pheenix_01 if A is equal to 0.
30553 CALL Z,Handler_Pheenix_01
30556 CP 1 Call Handler_Pheenix_02 if A is equal to 1.
30558 CALL Z,Handler_Pheenix_02
30561 CP 2 Call Handler_Pheenix_03 if A is equal to 2.
30563 CALL Z,Handler_Pheenix_03
30566 CP 3 Jump to Handler_AliensMovement_Spawning_20 if A is not equal to 3.
30568 JR NZ,Handler_AliensMovement_Spawning_20
30570 LD A,1 Write 1 to *26257.
30572 LD (26257),A
30575 CALL Handler_Pheenix_04 Call Handler_Pheenix_04.
30578 LD HL,26240 HL=26240.
30581 LD DE,26241 DE=26241.
30584 LD BC,14 BC=0014.
30587 LD (HL),B Write B to *HL.
30588 LDIR LDIR.
Handler_AliensMovement_Spawning_20 30590 POP DE Restore DE from the stack.
30591 JP Handler_AliensMovement_Spawning_55 Jump to Handler_AliensMovement_Spawning_55.
Handler_AliensMovement_Spawning_21 30594 POP AF Restore AF from the stack.
30595 PUSH AF Stash AF on the stack.
30596 AND %11110000 Keep only bits 4-7.
30598 JR NZ,Handler_AliensMovement_Spawning_22 Jump to Handler_AliensMovement_Spawning_22 if the result is not zero.
30600 POP AF Restore AF from the stack.
30601 CALL GenerateRandomNumber Call GenerateRandomNumber.
30604 SRA A Shift A right (with carry).
30606 SRA A Shift A right (with carry).
30608 AND %00000111 Keep only bits 0-2.
30610 ADD A,128 A+=128.
30612 JR Handler_AliensMovement_Spawning_23 Jump to Handler_AliensMovement_Spawning_23.
Handler_AliensMovement_Spawning_22 30614 POP AF Restore AF from the stack.
Handler_AliensMovement_Spawning_23 30615 SUB 16 A-=16.
30617 LD (HL),A Write A to *HL.
30618 AND %00000111 Keep only bits 0-2.
30620 PUSH AF Stash AF on the stack.
30621 CALL ConvertScreenToAttributeBufferAddress Call ConvertScreenToAttributeBufferAddress.
30624 EX DE,HL Exchange the DE and HL registers.
30625 LD BC,32 BC=0032.
30628 PUSH HL Stash HL and BC on the stack.
30629 PUSH BC
30630 LD B,3 B=3.
Handler_AliensMovement_Spawning_24 30632 LD A,(HL) Jump to Handler_AliensMovement_Spawning_25 if *HL is equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
30633 CP 70
30635 JR Z,Handler_AliensMovement_Spawning_25
30637 CP 7 Jump to Handler_AliensMovement_Spawning_25 if *HL is equal to WHITE.
30639 JR Z,Handler_AliensMovement_Spawning_25
30641 INC HL Increment HL by one.
30642 DJNZ Handler_AliensMovement_Spawning_24 Decrease counter by one and loop back to Handler_AliensMovement_Spawning_24 until counter is zero.
30644 DEC HL Decrease HL by two.
30645 DEC HL
30646 POP BC Restore BC from the stack.
30647 ADD HL,BC HL+=BC.
30648 LD A,(HL) Jump to Handler_AliensMovement_Spawning_26 if *HL is equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
30649 CP 70
30651 JR Z,Handler_AliensMovement_Spawning_26
30653 CP 7 Jump to Handler_AliensMovement_Spawning_26 if *HL is equal to WHITE.
30655 JR Z,Handler_AliensMovement_Spawning_26
30657 POP HL Restore HL from the stack.
30658 JR Handler_AliensMovement_Spawning_27 Jump to Handler_AliensMovement_Spawning_27.
Handler_AliensMovement_Spawning_25 30660 POP BC Restore BC and DE from the stack.
Handler_AliensMovement_Spawning_26 30661 POP DE
30662 CALL FindEmptySlot Call FindEmptySlot.
30665 LD DE,26077 DE=Table_CurrentAlienPhaseData.
30668 LD HL,(26255) HL=*Alien_Index.
30671 ADD HL,HL HL+=HL.
30672 ADD HL,DE HL+=DE.
30673 INC HL Increment HL by one.
30674 LD (HL),0 Write 0 to *HL.
30676 POP AF Restore AF, AF and AF from the stack.
30677 POP AF
30678 POP AF
30679 JP Handler_AliensMovement_Spawning_57 Jump to Handler_AliensMovement_Spawning_57.
Handler_AliensMovement_Spawning_27 30682 POP AF Restore AF from the stack.
30683 JR Z,Handler_AliensMovement_Spawning_35 Jump to Handler_AliensMovement_Spawning_35 if HL is equal to 7.
30685 CP 7 Jump to Handler_AliensMovement_Spawning_31 if A is equal to 7.
30687 JR Z,Handler_AliensMovement_Spawning_31
30689 CP 6 Jump to Handler_AliensMovement_Spawning_29 if A is equal to 6.
30691 JR Z,Handler_AliensMovement_Spawning_29
30693 CP 4 Jump to Handler_AliensMovement_Spawning_42 if A is equal to 4.
30695 JP Z,Handler_AliensMovement_Spawning_42
30698 CP 2 Jump to Handler_AliensMovement_Spawning_42 if A is equal to 2.
30700 JP Z,Handler_AliensMovement_Spawning_42
30703 AND A HL-=BC.
30704 SBC HL,BC
30706 PUSH HL Stash HL on the stack.
30707 LD B,3 B=3.
Handler_AliensMovement_Spawning_28 30709 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not zero.
30710 OR A
30711 JR NZ,Handler_AliensMovement_Spawning_33
30713 INC HL Increment HL by one.
30714 DJNZ Handler_AliensMovement_Spawning_28 Decrease counter by one and loop back to Handler_AliensMovement_Spawning_28 until counter is zero.
30716 POP HL Restore HL from the stack.
30717 JP Handler_AliensMovement_Spawning_52 Jump to Handler_AliensMovement_Spawning_52.
Handler_AliensMovement_Spawning_29 30720 LD A,L A=L.
30721 AND %00011111 Keep only bits 0-4.
30723 JR Z,Handler_AliensMovement_Spawning_34 Jump to Handler_AliensMovement_Spawning_34 if HL is equal to A.
30725 ADD HL,BC HL+=BC.
30726 LD A,(HL) Jump to Handler_AliensMovement_Spawning_34 if *HL is not zero.
30727 OR A
30728 JR NZ,Handler_AliensMovement_Spawning_34
30730 DEC HL Decrease HL by one.
30731 SBC HL,BC HL-=BC.
30733 LD A,(HL) Jump to Handler_AliensMovement_Spawning_30 if *HL is zero.
30734 OR A
30735 JR Z,Handler_AliensMovement_Spawning_30
30737 LD A,(26259) Jump to Handler_AliensMovement_Spawning_34 if *Flag_Shield is not zero.
30740 OR A
30741 JR NZ,Handler_AliensMovement_Spawning_34
30743 LD A,(HL) Jump to Handler_AliensMovement_Spawning_34 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
30744 CP 70
30746 JR NZ,Handler_AliensMovement_Spawning_34
Handler_AliensMovement_Spawning_30 30748 JP Handler_AliensMovement_Spawning_52 Jump to Handler_AliensMovement_Spawning_52.
Handler_AliensMovement_Spawning_31 30751 LD A,L A=L.
30752 AND %00011111 Keep only bits 0-4.
30754 CP 29 Jump to Handler_AliensMovement_Spawning_34 if A is equal to 29.
30756 JR Z,Handler_AliensMovement_Spawning_34
30758 INC HL Increment HL by one.
30759 PUSH HL Stash HL on the stack.
30760 INC HL Increment HL by one.
30761 ADD HL,BC HL+=BC.
30762 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not zero.
30763 OR A
30764 JR NZ,Handler_AliensMovement_Spawning_33
30766 INC HL Increment HL by one.
30767 SBC HL,BC HL-=BC.
30769 LD A,(HL) Jump to Handler_AliensMovement_Spawning_32 if *HL is zero.
30770 OR A
30771 JR Z,Handler_AliensMovement_Spawning_32
30773 LD A,(26259) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
30776 OR A
30777 JR NZ,Handler_AliensMovement_Spawning_33
30779 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
30780 CP 70
30782 JR NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_32 30784 POP HL Restore HL from the stack.
30785 JP Handler_AliensMovement_Spawning_52 Jump to Handler_AliensMovement_Spawning_52.
Handler_AliensMovement_Spawning_33 30788 POP AF Restore AF, AF and AF from the stack.
Handler_AliensMovement_Spawning_34 30789 POP AF
30790 POP AF
30791 LD BC,26240 BC=26240.
30794 LD HL,(26255) HL=*Alien_Index.
30797 ADD HL,BC HL+=BC.
30798 LD A,(HL) A=*HL.
30799 AND %00001111 Keep only bits 0-3.
30801 LD (HL),A Write A to *HL.
30802 JP Handler_AliensMovement_Spawning_56 Jump to Handler_AliensMovement_Spawning_56.
Handler_AliensMovement_Spawning_35 30805 LD A,L A=L.
30806 AND %11100000 Keep only bits 5-7.
30808 CP 192 Jump to Handler_AliensMovement_Spawning_38 if A is not equal to 192.
30810 JR NZ,Handler_AliensMovement_Spawning_38
30812 LD A,H Jump to Handler_AliensMovement_Spawning_38 if H is not equal to 90.
30813 CP 90
30815 JR NZ,Handler_AliensMovement_Spawning_38
Handler_AliensMovement_Spawning_36 30817 LD A,(26353) A=*Phase.
30820 AND %00000010 Keep only bit 1.
30822 JR Z,Handler_AliensMovement_Spawning_34 Jump to Handler_AliensMovement_Spawning_34 if A is zero.
30824 LD H,88 H=88.
30826 LD A,L L-=160.
30827 SUB 160
30829 LD L,A
30830 PUSH HL Stash HL on the stack.
30831 LD B,3 B=3.
Handler_AliensMovement_Spawning_37 30833 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not zero.
30834 OR A
30835 JR NZ,Handler_AliensMovement_Spawning_33
30837 INC HL Increment HL by one.
30838 DJNZ Handler_AliensMovement_Spawning_37 Decrease counter by one and loop back to Handler_AliensMovement_Spawning_37 until counter is zero.
30840 LD C,32 C=32.
30842 ADD HL,BC HL+=BC.
30843 DEC HL Decrease HL by one.
30844 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not zero.
30845 OR A
30846 JR NZ,Handler_AliensMovement_Spawning_33
30848 JR Handler_AliensMovement_Spawning_41 Jump to Handler_AliensMovement_Spawning_41.
Handler_AliensMovement_Spawning_38 30850 ADD HL,BC HL+=BC.
30851 PUSH HL Stash HL on the stack.
30852 LD A,(HL) Jump to Handler_AliensMovement_Spawning_39 if *HL is zero.
30853 OR A
30854 JR Z,Handler_AliensMovement_Spawning_39
30856 LD A,(26259) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
30859 OR A
30860 JR NZ,Handler_AliensMovement_Spawning_33
30862 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
30863 CP 70
30865 JR NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_39 30867 INC HL Increment HL by two.
30868 INC HL
30869 LD A,(HL) Jump to Handler_AliensMovement_Spawning_40 if *HL is zero.
30870 OR A
30871 JR Z,Handler_AliensMovement_Spawning_40
30873 LD A,(26259) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
30876 OR A
30877 JR NZ,Handler_AliensMovement_Spawning_33
30879 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
30880 CP 70
30882 JR NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_40 30884 ADD HL,BC HL+=BC.
30885 DEC HL Decrease HL by one.
30886 LD A,(HL) Jump to Handler_AliensMovement_Spawning_41 if *HL is zero.
30887 OR A
30888 JR Z,Handler_AliensMovement_Spawning_41
30890 LD A,(26259) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
30893 OR A
30894 JR NZ,Handler_AliensMovement_Spawning_33
30896 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
30897 CP 70
30899 JR NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_41 30901 POP HL Restore HL from the stack.
30902 CALL ConvertAttributeToScreenBufferAddress Call ConvertAttributeToScreenBufferAddress.
30905 POP DE Restore DE from the stack.
30906 PUSH HL Stash HL on the stack.
30907 SET 7,D Set bit 7 of D.
30909 PUSH DE Stash DE on the stack.
30910 RES 7,D Reset bit 7 of D.
30912 CALL ClearSpriteArea Call ClearSpriteArea.
30915 JP Handler_AliensMovement_Spawning_53 Jump to Handler_AliensMovement_Spawning_53.
Handler_AliensMovement_Spawning_42 30918 PUSH HL Stash HL on the stack.
30919 LD A,L A=L.
30920 AND %00011111 Keep only bits 0-4.
30922 LD L,A L=A.
30923 LD A,(26349) A=*PlayerAttributeBufferPosition.
30926 INC A Increment A by one.
30927 AND %00011111 Keep only bits 0-4.
30929 CP L Compare A with L.
30930 POP HL Restore HL from the stack.
30931 JR Z,Handler_AliensMovement_Spawning_35 Jump to Handler_AliensMovement_Spawning_35 if A is equal to L.
30933 JR NC,Handler_AliensMovement_Spawning_48 Jump to Handler_AliensMovement_Spawning_48 if A is greater than or equal to L.
30935 LD A,L A=L.
30936 AND %00011111 Keep only bits 0-4.
30938 JP Z,Handler_AliensMovement_Spawning_35 Jump to Handler_AliensMovement_Spawning_35 if A is equal to L.
30941 LD A,L A=L.
30942 AND %11100000 Keep only bits 5-7.
30944 CP 192 Jump to Handler_AliensMovement_Spawning_43 if A is not equal to 192.
30946 JR NZ,Handler_AliensMovement_Spawning_43
30948 LD A,H Jump to Handler_AliensMovement_Spawning_36 if H is equal to 90.
30949 CP 90
30951 JP Z,Handler_AliensMovement_Spawning_36
Handler_AliensMovement_Spawning_43 30954 ADD HL,BC HL+=BC.
30955 DEC HL Decrease HL by one.
30956 PUSH HL Stash HL on the stack.
30957 LD A,(HL) Jump to Handler_AliensMovement_Spawning_44 if *HL is zero.
30958 OR A
30959 JR Z,Handler_AliensMovement_Spawning_44
30961 LD A,(26259) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
30964 OR A
30965 JP NZ,Handler_AliensMovement_Spawning_33
30968 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
30969 CP 70
30971 JP NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_44 30974 INC HL Increment HL by one.
30975 LD A,(HL) Jump to Handler_AliensMovement_Spawning_45 if *HL is zero.
30976 OR A
30977 JR Z,Handler_AliensMovement_Spawning_45
30979 LD A,(26259) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
30982 OR A
30983 JP NZ,Handler_AliensMovement_Spawning_33
30986 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
30987 CP 70
30989 JP NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_45 30992 ADD HL,BC HL+=BC.
Handler_AliensMovement_Spawning_46 30993 LD A,(HL) Jump to Handler_AliensMovement_Spawning_47 if *HL is zero.
30994 OR A
30995 JR Z,Handler_AliensMovement_Spawning_47
30997 LD A,(26259) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
31000 OR A
31001 JP NZ,Handler_AliensMovement_Spawning_33
31004 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
31005 CP 70
31007 JP NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_47 31010 POP HL Restore HL from the stack.
31011 JR Handler_AliensMovement_Spawning_52 Jump to Handler_AliensMovement_Spawning_52.
Handler_AliensMovement_Spawning_48 31013 LD A,L A=L.
31014 AND %00011111 Keep only bits 0-4.
31016 CP 29 Jump to Handler_AliensMovement_Spawning_35 if A is equal to 29.
31018 JP Z,Handler_AliensMovement_Spawning_35
31021 LD A,L A=L.
31022 AND %11100000 Keep only bits 5-7.
31024 CP 192 Jump to Handler_AliensMovement_Spawning_49 if A is not equal to 192.
31026 JR NZ,Handler_AliensMovement_Spawning_49
31028 LD A,H Jump to Handler_AliensMovement_Spawning_36 if H is equal to 90.
31029 CP 90
31031 JP Z,Handler_AliensMovement_Spawning_36
Handler_AliensMovement_Spawning_49 31034 ADD HL,BC HL+=BC.
31035 INC HL Increment HL by one.
31036 PUSH HL Stash HL on the stack.
31037 INC HL Increment HL by one.
31038 LD A,(HL) Jump to Handler_AliensMovement_Spawning_50 if *HL is zero.
31039 OR A
31040 JR Z,Handler_AliensMovement_Spawning_50
31042 LD A,(26259) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
31045 OR A
31046 JP NZ,Handler_AliensMovement_Spawning_33
31049 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
31050 CP 70
31052 JP NZ,Handler_AliensMovement_Spawning_33
Handler_AliensMovement_Spawning_50 31055 INC HL Increment HL by one.
31056 LD A,(HL) Jump to Handler_AliensMovement_Spawning_51 if *HL is zero.
31057 OR A
31058 JR Z,Handler_AliensMovement_Spawning_51
31060 LD A,(26259) Jump to Handler_AliensMovement_Spawning_33 if *Flag_Shield is not zero.
31063 OR A
31064 JP NZ,Handler_AliensMovement_Spawning_33
31067 LD A,(HL) Jump to Handler_AliensMovement_Spawning_33 if *HL is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
31068 CP 70
Handler_AliensMovement_Spawning_51 31070 JP NZ,Handler_AliensMovement_Spawning_33
31073 DEC HL Decrease HL by one.
31074 ADD HL,BC HL+=BC.
31075 JR Handler_AliensMovement_Spawning_46 Jump to Handler_AliensMovement_Spawning_46.
Handler_AliensMovement_Spawning_52 31077 CALL ConvertAttributeToScreenBufferAddress Call ConvertAttributeToScreenBufferAddress.
31080 POP DE Restore DE from the stack.
31081 PUSH HL Stash HL and DE on the stack.
31082 PUSH DE
31083 RES 7,D Reset bit 7 of D.
31085 CALL ClearSpriteArea Call ClearSpriteArea.
Handler_AliensMovement_Spawning_53 31088 POP DE Restore DE from the stack.
31089 BIT 7,D Test bit 7 of D.
31091 POP DE Restore DE from the stack.
31092 LD A,(26353) A=*Phase.
31095 JR Z,Handler_AliensMovement_Spawning_54 Jump to Handler_AliensMovement_Spawning_54 if HL is equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
31097 AND %00000010 Keep only bit 1.
31099 CALL NZ,Handler_Pheenix_04 Call Handler_Pheenix_04 if A is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
31102 CALL Z,Handler_BirdAlien_01 Call Handler_BirdAlien_01 if A is equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
31105 JR Handler_AliensMovement_Spawning_55 Jump to Handler_AliensMovement_Spawning_55.
Handler_AliensMovement_Spawning_54 31107 AND %00000010 Keep only bit 1.
31109 CALL NZ,Handler_Pheenix_05 Call Handler_Pheenix_05 if A is not equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
31112 CALL Z,Handler_BirdAlien_02 Call Handler_BirdAlien_02 if A is equal to INK:YELLOW, PAPER:BLACK (BRIGHT).
31115 SET 7,D Set bit 7 of D.
Handler_AliensMovement_Spawning_55 31117 POP HL Restore HL from the stack.
31118 LD (HL),E Write E to *HL.
31119 INC HL Increment HL by one.
31120 LD (HL),D Write D to *HL.
Handler_AliensMovement_Spawning_56 31121 LD A,(26258) Jump to Handler_AliensMovement_Spawning_57 if *26258 is zero.
31124 OR A
31125 JR Z,Handler_AliensMovement_Spawning_57
31127 DEC A Decrease A by one.
31128 LD (26258),A Write A to *26258.
31131 JP Handler_AliensMovement_Spawning Jump to Handler_AliensMovement_Spawning.
Handler_AliensMovement_Spawning_57 31134 LD HL,26255 HL=Alien_Index.
31137 LD A,(26353) A=*Phase.
31140 AND %00000110 Keep only bits 1-2.
31142 LD A,7 A=7.
31144 JR NZ,Handler_AliensMovement_Spawning_58 Jump to Handler_AliensMovement_Spawning_58 if A is not equal to A.
31146 ADD A,A A+=A.
Handler_AliensMovement_Spawning_58 31147 CP (HL) Jump to Handler_AliensMovement_Spawning_59 if A is not equal to *HL.
31148 JR NZ,Handler_AliensMovement_Spawning_59
31150 LD (HL),255 Write 255 to *HL.
Handler_AliensMovement_Spawning_59 31152 INC (HL) Increment *HL by one.
31153 RET Return.
Prev: 30135 Up: Map Next: 31154