Prev: 6cb0 Up: Map Next: 6d43
6cbe: Update crossed space ship.
Input
IX Alien object.
6cbe call $6cb0 Update actor direction
6cc1 ld hl,$5dcb Increment alien number
6cc4 inc (hl)
6cc5 call $6e1b Fire laser beam (returns C)
6cc8 dec c
6cc9 jp z,$6d59 Add points and kill alien (type #3) if dead
6ccc call $6de9 Alien collision (returns E)
6ccf dec e
6cd0 jp z,$6456 Alien killed by collision
6cd3 xor a
6cd4 ld ($5dc9),a Reset alien new direction
Crossed ship direction change on platform collision.
6cd7 call $75e8 Platform collision (returns E)
6cda bit 2,e Update alien X position if bit-2 is reset
6cdc jr z,$6cf7
6cde bit 7,e Set alien direction to up if bit-7 set
6ce0 jp nz,$6d67
6ce3 bit 4,e Set alien direction to down if bit-4 set
6ce5 jp nz,$6d76
Alien has hit the end of a platform: change direction in a slightly more erratic way than other aliens (note the XOR).
6ce8 ld a,e Update alien "moving" value
6ce9 and $40
6ceb xor $40
6ced ld e,a
6cee ld a,(ix+$04)
6cf1 and $bf
6cf3 or e
6cf4 ld (ix+$04),a
Move crossed ship horizontally.
6cf7 bit 6,(ix+$04) Check moving left/right bit
6cfb ld a,(ix+$01) A=X position (fetch before the jump)
6cfe jp nz,$6d7d If moving left, subtract 2 from direction (via jump)
6d01 add a,$02 otherwise, we add 2 to move right
Update the alien YX position.
6d03 ld (ix+$01),a Set new X position +/- 2
6d06 ld h,$00 HL=Y speed x 2
6d08 ld l,(ix+$06)
6d0b add hl,hl
6d0c ld d,(ix+$02) D=alien X position
6d0f ld e,(ix+$05) E=alien X speed
6d12 bit 7,(ix+$04) If alien moving is "up" subtract hl/de
6d16 jr z,$6d8d
6d18 add hl,de else add them
Update vertical position, direction, and speed.
6d19 ld (ix+$05),l Set alien X speed
6d1c ld (ix+$02),h Alien Y position = H
6d1f ld a,h If alien is at top of screen, set to moving down
6d20 cp $28
6d22 jr nc,$6d28
6d24 set 7,(ix+$04)
6d28 bit 7,(ix+$04) Check if moving up
6d2c jr z,$6d82 Change alien direction to down if it is
6d2e inc (ix+$06) else increment Y speed
6d31 jr nz,$6d37 Jump if it wasn't $FF before the increment
6d33 ld (ix+$06),$ff else set Y speed to $FF
Draw the alien if a new direction is set, otherwise repeat platform collision check again.
6d37 ld a,($5dc9) Draw the alien if the new direction flag is set, otherwise, increment the value
6d3a and a
6d3b jr nz,$6d43
6d3d inc a
6d3e ld ($5dc9),a
6d41 jr $6cd7 Jump back and repeat collision check
Prev: 6cb0 Up: Map Next: 6d43