-animate:
- mov cx, 3
- mov di, sierp_verts
- mov si, sierp_vel
-.loop:
- mov ax, [di] ; grab vertex X
- add ax, [si] ; add velocity X
- jl .xout
- cmp ax, 320-SHADOW_OFFS
- jge .xout
- jmp .skip_xflip
-.xout:
- sub ax, [si] ; revert to previous X
- neg word [si] ; negate velocity X
-.skip_xflip:
- mov [di], ax ; update vertex X
-
- ; to do the same for Y increment edi and esi by 2
- add di, 2
- add si, 2
- mov ax, [di] ; grab vertex Y
- add ax, [si] ; add velocity Y
- jl .yout
- cmp ax, 200-SHADOW_OFFS
- jge .yout
- jmp .skip_yflip
-.yout:
- sub ax, [si] ; revert to previous Y
- neg word [si] ; negate velocity Y
-.skip_yflip:
- mov [di], ax ; update vertex Y
-
- add di, 2
- add si, 2
- dec cx
- jnz .loop
- ret