⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 water.c

📁 AsciiArt small program
💻 C
字号:

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
		}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -