Prev: B7ED Up: Map Next: B83F
B80F: Handle Fire Moving North South
Handles a fire that moves to and fro along the Y axis at a speed of 02, turning round when it hits something.
Input
IX Address of the fire object
HandleFireMovingNorthSouth B80F CALL SetPixelAdjustments_Ball Set the pixel adjustments of a ball.
B812 LD (IX+$0B),$01 Set the speed in Z to 01, so that the fire does not fall.
B816 BIT 1,(IX+$0D) Test whether the fire is heading north.
B81A LD A,$02 Set the speed to 02.
B81C JR NZ,HandleFireMovingNorthSouth_Speed Jump to HandleFireMovingNorthSouth_Speed if it is.
B81E NEG Make the speed negative.
HandleFireMovingNorthSouth_Speed B820 LD (IX+$0A),A Set the speed in Y of the fire.
B823 CALL PlaySoundFromYPosition Play the sound of a block moving along the Y axis.
B826 CALL ApplyGravityAndMove Apply gravity to the fire and move it.
B829 BIT 1,(IX+$0C) Test whether the fire has hit something along the Y axis.
B82D LD A,$02 Set the direction bit to flip to bit 1.
This entry point is used by the routine at HandleFireMovingEastWest.
Turn the fire round if it hit something.
HandleFire_Turn B82F JR Z,HandleFire_Draw Jump to HandleFire_Draw if the fire did not hit anything.
B831 XOR (IX+$0D) Flip the direction of the fire.
B834 LD (IX+$0D),A Store the direction.
B837 CALL PlayBumpSound Play the sound of a bounce.
HandleFire_Draw B83A CALL ToggleGraphic Toggle the graphic of the fire between its two frames.
B83D JR SetDeadlyFlagsAndDraw Jump to SetDeadlyFlagsAndDraw.
Prev: B7ED Up: Map Next: B83F