#include"main.h"
void do_fire(int originx,int originy,int xadd, int xer, int yer,int drift,int radius){
//xer=neigung, wenn wert 100+ ist neigung nach rechts
//yer=speed
int x,y;
int yy=0,xx=0,col=245;
int ycount=0,xcount=0;
signed int a,b;
float fl=0.0;                       //19000
//float fadd=(float)(Y_RES-originy)/(radius-(y>>8));
float fadd=(float)(Y_RES-originy)/(radius);

for (x=1024;x>1;x--){
           a=originx+cosine3[(x+xadd)%256]*fl;
           b=originy+sine3[(x+xadd)%256]*fl;
           fl+=fadd;                                    //form wird immer grsser
           b-=yy;
           if (xer>100) a+=xx; else a-=xx;
           if (a>318) break; //a=318;                   //a= x position
           if (b>196) break; //b=196;                   //b= y position
           if (a<3) break; //a=3;
           if (b<3) break; //b=3;

           if ((x%4)==0) col--;//4
           if (col<1) break;//15
//     asmdrawblockMMX(schweif, xtab[b]+((a-2)<<2), (((col>>1)<<8)+(col>>1)<<8)+(col>>1)*1.6); // FLOAT !!!!!

     asmdrawblockMMX(schweif, xtab[b]+((a-2)<<2), (((col>>1)<<8)+(col>>1)<<8)+(col>>1)*1.6);
//     asmdrawblock(schweif, (b)*(X_RES<<2)+((a-2)<<2), (((col>>1)<<8)+(col>>1)<<8)+(col>>1));
//                         ^x/y werte in edi          ^32bit farbe erzeugen

           if (ycount==0)
              { yy++;
                if (b<drift) ycount=yer;
//  if (b>130) ycount=yer;
              //yer = y speed, drif=ab jetzt nach rechts/links driften
              } else ycount--;

           if (xcount==0){
               xx++;                                   //xer = neigung
//if (b>100)
                if (xer>100) xcount=xer-100; else xcount=xer;
              } else xcount--;

}
}
