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

📄 sprite_b.hpp

📁 仿游戏 Diablo 的源代码
💻 HPP
字号:
// 光影处理
#if ( _SPRITE_BLIT_BETA_MMX_HEAD == 0 )
	int spitch = src->pitch - w*2;
	char* sline = src->line[sy] + sx*2;
	int dpitch = dest->pitch - w*2;
	char* dline = dest->line[y] + x*2;

	__asm{
		mov esi, sline;	
		mov edi, dline;
		cld;
		mov bx, word ptr dwColorKey;
		movq mm7, qwColorKey;
#endif

#if( _SPRITE_BLIT_BETA_MMX_HEAD == 1 )
		mov ecx, w;
		jmp line_begin;

main_loop:
		ALIGN 4;
		add esi, 8;
		sub ecx, 4;
		add edi, 8;
line_begin:
		ALIGN 4;
		cmp ecx, 4;
		jl line_tail;

		movq mm0, [esi];
		movq mm4, [edi];
		movq mm1, mm0;
		movq mm2, mm0;
		pcmpeqw mm1, mm7;
		pcmpeqw mm2, mm7;
		movd eax, mm1;
		movq mm3, mm0;
		inc eax;
		jnz lower_not_all_trans;
		psrlq mm1, 32;
		movd eax, mm1;
		inc eax;
		jz main_loop;

lower_not_all_trans: // mm0,mm3:源像素 mm2:掩码 mm4:目标像素 mm7:colorkey
#endif

#if( _SPRITE_BLIT_BETA_MMX_HEAD == 2 )
		movq [edi], mm2;
		add edi, 8;
		jmp line_begin;

line_tail:
		jecxz next_line;
next_pixel:
		lodsw;
		dec ecx;
		cmp ax, bx;
		je trans_pixel;	// bx:colorkey ax:源像素 dx:可用
#endif

#if( _SPRITE_BLIT_BETA_MMX_HEAD == 3 )
		stosw;
		test ecx, ecx;
		jnz next_pixel;
		jmp next_line;
trans_pixel:
		add edi, 2;
		test ecx, ecx;
		jnz next_pixel;
next_line:
		add esi, spitch;
		add edi, dpitch;
		mov ecx, w;
		dec h;
		jnz line_begin;

		emms;
		}
#endif

⌨️ 快捷键说明

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