home *** CD-ROM | disk | FTP | other *** search
-
- extern char sin8[];
-
- #define cosadd (256)
-
- void water(char _seg *dbuffer)
- {
- int px1,py1,px2,py2,y;
- static int ownframe=0;
- int tmp1,endframe,tmp2;
- int p,ptmp1,ptmp2,t1,t2;
-
- ownframe++;
-
- px1=((int)(sin8[(-ownframe*7+cosadd)&1023]))-40-64;
- py1=((int)(sin8[(ownframe*6) &1023]))+25-64;
- px2=((int)(sin8[(ownframe*9+cosadd)&1023]))-40-64;
- py2=((int)(sin8[(ownframe*7) &1023]))+25-64;
-
- _ES=(int)dbuffer;
- tmp1=0;
- tmp2=50;
- p=tmp1*160;
-
- for(y=tmp1;y<tmp2;y++) {
-
- ptmp1=((px1*px1)+(y-py1)*(y-py1));
- ptmp2=((px2*px2)+(y-py2)*(y-py2));
- asm mov bx,ss:ownframe
- asm shl bx,7
- asm add ptmp1,bx
- asm shl bx,3
- asm sub ptmp2,bx
- t1=px1;
- t2=px2;
- asm shl word ptr px1,1
- asm shl word ptr px2,1
- asm mov cx,80
- asm mov di,p
-
- asm mov bx,1023 // 2046
- plasmaloop1:
- asm add word ptr ss:px1,2
- asm mov ax,ss:px1
- asm add ss:ptmp1,ax
-
- asm add word ptr ss:px2,2
- asm mov ax,ss:px2
- asm add ss:ptmp2,ax
-
- asm mov si,ss:ptmp1
- asm sar si,3
- asm and si,bx // 2046
- asm mov al,byte ptr ss:sin8[si]
-
- asm mov si,ss:ptmp2
- asm sar si,4
- asm and si,bx // 2046
- asm mov dl,byte ptr ss:sin8[si]
-
- asm add al,dl
- asm shr al,2
-
- asm stosb
- asm mov al,1
- asm stosb
-
- asm dec cx
- asm jnz plasmaloop1
- noloop1:
-
- asm mov ss:p,di
-
- asm mov ax,ss:t2
- asm mov ss:px2,ax
- asm mov ax,ss:t1
- asm mov ss:px1,ax
- }
- }
-