Prev: 47085 Up: Map Next: 47167
47119: Handle Fire Moving North South
Handles a fire that moves to and fro along the Y axis at a speed of 2, turning round when it hits something.
Input
IX Address of the fire object
HandleFireMovingNorthSouth 47119 CALL SetPixelAdjustments_Ball Set the pixel adjustments of a ball.
47122 LD (IX+11),1 Set the speed in Z to 1, so that the fire does not fall.
47126 BIT 1,(IX+13) Test whether the fire is heading north.
47130 LD A,2 Set the speed to 2.
47132 JR NZ,HandleFireMovingNorthSouth_Speed Jump to HandleFireMovingNorthSouth_Speed if it is.
47134 NEG Make the speed negative.
HandleFireMovingNorthSouth_Speed 47136 LD (IX+10),A Set the speed in Y of the fire.
47139 CALL PlaySoundFromYPosition Play the sound of a block moving along the Y axis.
47142 CALL ApplyGravityAndMove Apply gravity to the fire and move it.
47145 BIT 1,(IX+12) Test whether the fire has hit something along the Y axis.
47149 LD A,2 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 47151 JR Z,HandleFire_Draw Jump to HandleFire_Draw if the fire did not hit anything.
47153 XOR (IX+13) Flip the direction of the fire.
47156 LD (IX+13),A Store the direction.
47159 CALL PlayBumpSound Play the sound of a bounce.
HandleFire_Draw 47162 CALL ToggleGraphic Toggle the graphic of the fire between its two frames.
47165 JR SetDeadlyFlagsAndDraw Jump to SetDeadlyFlagsAndDraw.
Prev: 47085 Up: Map Next: 47167