Prev: A3E1 Up: Map Next: A4B2
A471: Move explosion dots
Change polar y of sprite types $0D, according to bit 2 of status_flags. Used by the routines at initial_game_loop and explode.
move_dots A471 LD HL,(tmp_center_of_projection) Copy tmp_center_of_projection to center_of_projection
A474 LD (center_of_projection),HL ...
A477 LD B,$20 32 sprites
A479 LD IX,sprite_data Sprite data
This entry point is used by the routine at move_dots_1.
move_dots_0 A47D LD A,(IX+$00) Get type
A480 CP $0D Is it $0D (a dot)?
A482 JR NZ,move_dots_3 If not then move to next sprite
A484 PUSH BC Save counter
A485 LD D,(IX+$01) Polar y
A488 LD E,(IX+$02) Polar x
A48B CALL polar_to_screen Polar to screen
A48E LD (IX+$08),D Set y
A491 LD (IX+$09),E Set x
A494 LD A,(status_flags) Status
A497 BIT 2,A Test bit
A499 JR NZ,move_dots_1 If 1, decrement polar y
A49B INC (IX+$01) Else increment polar y
A49E JR move_dots_2 Skip next
move_dots_1 A4A0 DEC (IX+$01) Decrement polar y
move_dots_2 A4A3 POP BC Restore counter
move_dots_3 A4A4 LD DE,$000C Size of each sprite
A4A7 ADD IX,DE Next sprite
A4A9 DJNZ move_dots_0 Loop 32 times
A4AB LD HL,$8060 Set center_of_projection back to original value
A4AE LD (center_of_projection),HL ...
A4B1 RET
Prev: A3E1 Up: Map Next: A4B2