{фрагмент основной программы}

   for i := 1 to NumSprites do begin
      Sprt[i].dx := sign(Sprt[i].dx)*round(64*70/FPS);
      Sprt[i].dy := sign(Sprt[i].dy)*round(64*70/FPS);
   end;

                           {фрагменты модуля sprites}

procedure PutSprite(Sprite:SpriteType); 
                             {вывод спрайта на экран}
var
   sou,dest : pointer;
begin
   sou  := @(Sprite.Img^[Sprite.phase,0,0]);
   dest := @(Scr^[Sprite.Y shr 6,Sprite.X shr 6]);
{...}

procedure CreateSprite(s:string; x,y,dx,dy:integer;
         var Sprite:SpriteType);  {создание спрайта}
{...}
   Sprite.x := x*64;
   Sprite.y := y*64;     { задаем начальные значения }
{...}

procedure CalcSpritePosition(var Sprite:SpriteType);
                  {вычисление новых координат спрайта}
{...}
      if (x + Xsize*64 + dx) >= 319*64 then
         dx := -dx;      {вычисляем новые приращения,}
      if (x + dx) <= 0 then
         dx := -dx;          {реализующие отражение}
      if (y + Ysize*64 + dy) >= 199*64 then
         dy := -dy;               {спрайта от стенок}
{...}
423