; Constructs a vector from (x1|y1) to (x2|y2), and additionally applies ; [plus_angle] to the resulting angle between the two points. ; int pascal far vector2(int r, int far *dx, int far *dy, char plus_angle, int y2, int x2, int y1, int x1) vector2_between_plus proc far @@r = word ptr 6 @@_dx = dword ptr 8 @@_dy = dword ptr 0Ch @@plus_angle = byte ptr 10h @@y2 = word ptr 12h @@x2 = word ptr 14h @@y1 = word ptr 16h @@x1 = word ptr 18h push bp mov bp, sp push si mov si, [bp+@@r] mov ax, [bp+@@y2] sub ax, [bp+@@y1] push ax mov ax, [bp+@@x2] sub ax, [bp+@@x1] push ax call iatan2 add al, [bp+@@plus_angle] mov dl, al movsx eax, si mov dh, 0 add dx, dx mov bx, dx movsx edx, _CosTable8[bx] movsx ecx, _SinTable8[bx] imul eax, edx sar eax, 8 les bx, [bp+@@_dy] mov es:[bx], ax movsx eax, si imul eax, ecx sar eax, 8 les bx, [bp+@@_dx] mov es:[bx], ax pop si pop bp retf 14h vector2_between_plus endp