Prev: FAEF Up: Map Next: FB2A
FAF0: Asteroids : Move the lightning bolts around
Used by the routine at F9F5.
Input
A Object ID to use
FAF0 PUSH IX Store IX.
FAF2 LD IX,$80A9 Point IX at the lightning bolts table. (80A9)
FAF6 PUSH AF Store AF.
FAF7 LD A,(IX+$00) Is the lightning bolt here active?
FAFA CP $FF
FAFC JR Z,$FB05 Jump forward if it isn't.
FAFE CALL $EF88 Otherwise move to the next entry.
FB01 INC IX
FB03 JR $FAF7
Create a lightning bolt here and set it moving in a random direction.
FB05 LD (IX+$00),E Put the x co-ordinate in E.
FB08 LD (IX+$01),D Put the y co-ordinate in D.
FB0B LD A,R Copy R to A to get a pseudo-random number.
FB0D AND $02 Select bit 2 and subtract that value, giving a random number that's 0 or FE.
FB0F DEC A
FB10 ADD A,A Double the value.
FB11 LD (IX+$02),A Set that as the next change in direction.
FB14 LD A,R Copy R to A to get a pseudo-random number.
FB16 AND $02 Select bit 2 and shift right, giving a random number that's 0 or 1.
FB18 RRA
FB19 LD C,A Store this value in C.
FB1A LD A,R Copy R to A to get a pseudo-random number.
FB1C AND $01 Select bit 1.
FB1E SUB C Subtract C, giving a random number that's 1, 0 or FF.
FB1F ADD A,A Double this (giving 2, 0 or FE).
FB20 LD (IX+$03),A Set this as the Y offset
FB23 POP AF Restore AF.
FB24 LD (IX+$04),A Set the object ID.
FB27 POP IX Restore IX and return.
FB29 RET
Prev: FAEF Up: Map Next: FB2A