void InitExplosions(){
	for(int i=0;i<MaxExpl;i++)GAnm[i]=new AnmObject;
	for(i=0;i<257;i++){
		TSin[i]=short(256*sin(2*3.1415927*i/256));
		TCos[i]=short(256*cos(2*3.1415927*i/256));
		TAtg[i]=short(128*atan2(i,256)/3.1415927);
	};
	memset(&EUsage,0,MaxExpl);
	LastReq=0;
	nEused=0;
	ResFile rf=RReset("random.lst");
	RBlockRead(rf,randoma,16384);
	RClose(rf);
//	for(i=0;i<8192;i++){
//		randoma[i]=rand();
//	};
	rpos=0;
	//ResFile rf=RRewrite("random.lst");
	//RBlockWrite(rf,randoma,16384);
	//RClose(rf);

};
Exemplo n.º 2
0
void ProcessFog(){
	byte z=0;//byte(rando()&1);
	__asm{
		mov		ecx,msx
		inc		ecx
lab1:	mov		ax,[fmap+ecx*2]
		mov		[fmap+512+ecx*2],ax;
		mov		ax,[fmap+256*255*2+ecx*2]
		mov		[fmap+256*254*2+ecx*2],ax
		loop	lab1
		mov		ecx,msy
		mov		ebx,offset fmap+512
lab2:	mov		ax,[ebx]
		mov		[ebx+2],ax
		mov		ax,[ebx+510]
		mov		[ebx+508],ax
		add		ebx,512
		loop	lab2
		cmp		z,0
		jne		Process1
		//Process0
		mov		bl,byte ptr msx
		mov		bh,byte ptr msy
		mov		ecx,offset fmap
		add		ecx,514
lab3:	mov		dx,[ecx-512]
		add		dx,[ecx+512]
		add		dx,[ecx-2]
		add		dx,[ecx+2]
		mov		ax,dx
		//shr		dx,8
		//sub		ax,dx
		shr		ax,2
		//cmp		ax,MaxShad
		//ja		iii
		or		ax,63
		sub		ax,63
iii:
		mov		[ecx],ax
		add		ecx,2
		dec		bl
		jnz		lab3
		add		ecx,512
		sub		ecx,msx
		sub		ecx,msx
		mov		bl,byte ptr msx
		dec		bh
		jnz		lab3
		jmp		ProcessFinished
Process1:
		xor		ebx,ebx
		mov		bl,byte ptr msx
		mov		bh,byte ptr msy
		mov		ecx,offset fmap
		add		ecx,ebx
		add		ecx,ebx
		//add		ecx,514
lab4:	mov		dx,[ecx-512]
		add		dx,[ecx+512]
		add		dx,[ecx-2]
		add		dx,[ecx+2]
		mov		ax,dx
		//shr		dx,8
		//sub		ax,dx
		shr		ax,2
		//cmp		ax,MaxShad
		//ja		ioo
		or		ax,63
		sub		ax,63
ioo:
		mov		[ecx],ax
		sub		ecx,2
		dec		bl
		jnz		lab4
		sub		ecx,512
		add		ecx,msx
		add		ecx,msx
		mov		bl,byte ptr msx
		dec		bh
		jnz		lab3
ProcessFinished:
	};
};
void LoadFog(){
	ResFile fx=RReset("darkb.grd");//004g.grd");
	RBlockRead(fx,&fog[1024],8192);
	memcpy(&fog[0],&fog[1024],256);
	memcpy(&fog[256],&fog[1024],256);
	memcpy(&fog[512],&fog[1024],256);
	memcpy(&fog[512+256],&fog[1024],256);
	RClose(fx);
	//fx=RReset("003xw.grd");
	fx=RReset("darkw.grd");//003cm.grd");
	RBlockRead(fx,&wfog,8192);
	RClose(fx);
	fx=RReset("003xr.grd");
	RBlockRead(fx,&yfog,8192);
	RClose(fx);
	fx=RReset("003xr1.grd");
	RBlockRead(fx,&rfog,8192);
	RClose(fx);
	fx=RReset("darkfog.grd");
	RBlockRead(fx,&darkfog,40960);
	RClose(fx);
};