Ah well.
Google helps a bit.
Final function looks like the following:
Code:
procedure px(x,y,red,green,blue,alpha: integer);
var s_red,s_green,s_blue,s_alpha,t_red,t_green,t_blue,t_alpha: integer;
var t1,t2,t3: real;
begin
  s_red := ord(scrr[x,y]);
  s_green := ord(scrg[x,y]);
  s_blue := ord(scrb[x,y]);
  s_alpha := ord(scra[x,y]);
  
  t1 := s_alpha * alpha;
  t_alpha := alpha + s_alpha - trunc(t1 / 255);
  t1 := 255 - alpha;
  
  t2 := red * alpha;
  t3 := s_red * s_alpha * t1;
  t_red := trunc(t2 / 255 + (t3 / 255) / 255);
  
  t2 := green * alpha;
  t3 := s_green * s_alpha * t1;
  t_green := trunc(t2 / 255 + (t3 / 255) / 255);
  
  t2 := blue * alpha;
  t3 := s_blue * s_alpha * t1;
  t_blue := trunc(t2 / 255 + (t3 / 255) / 255);
  
  scrr[x,y] := chr(t_red);
  scrg[x,y] := chr(t_green);
  scrb[x,y] := chr(t_blue);
  scra[x,y] := chr(t_alpha);
end;


scrr,srcg,srcb,sra = screen-sized buffer of Char(0-255).
Thanks for trying to help, though.


Unfortunately, I've not worked with 3dGS for a while now, but it was fun