`
黑色杰克史密斯
  • 浏览: 16037 次
社区版块
存档分类
最新评论

masm 像素碰撞检测

    博客分类:
  • n/a
 
阅读更多
256 * 240 的 directx surface

_spriteDrawAndTest proc C _pBuffer, _pSprite, _xPos, _yPos, _pStruct, _AColor 
					;   esp + 4 +32   esp + 8 + 32 esp + 12 + 32
		option prologue:none, epilogue:none
		;.FPO    ( 0, 6, 0, 0, 0, 0 ) 
	
			pBuffer  equ [esp+36]
			pSprite  equ [esp+40]
			xPos     equ [esp+44]
			yPos     equ [esp+48]
			pStruct  equ [esp+52]
			AColor   equ [esp+56]
			
			movd xmm7, esp
			pushad  			 ; - N save old frame 

			mov ebx, yPos		 ; - U ebx <- yPos
			mov edi, pBuffer	 ; - V edi <- pBuffer
			
			shl ebx, 10		     ; - U * pitch 1024	
			mov eax, xPos		 ; - V eax <- xPos 
			
			mov esi, pSprite     ; - U esi <- source pointer
			lea edi, [edi+eax*4] ; - V add 
			
			mov ecx, pStruct  	 ; - U struct ;
			add edi, ebx 		 ; - V save old frame 
	
			mov ebp, [ecx+4]     ; - U rect.top
			mov eax, [ecx]       ; - V rect.left 
			
			mov ebx, AColor      ; - U BG color 
			mov edx, ebp         ; - V save old frame 
			
			mov esp, [ecx+16]    ; - U pitch 
			lea esi, [esi+eax*4] ; - V add esi ++ =;das
			
			imul edx, esp 		 ; - N 
	
			lea esi, [esi+edx*4] ; - U esi comp
			
			sub eax, [ecx+8]     ; over x 
			sub ebp, [ecx+12]    ; over y 

			;  esi <- tex    pointer 
			;  edi <- des    pointer 
			;  eax <- rv x           
			;  ebp <- rv y           
			;  ebx <- color          
			;  esp <- rv pitch       
			
			align 16
			
			sub edi, 4 			   ; - U ready to copy ... - 4 			   
			mov ecx, eax		   ; - V save old frame ... 
			
			sub esp, 1024		   ; - U rv pitch 
			align 16			   ; - V align is may be a jmp opd ... :)
			
	mn_main_loop:
	
			mov edx, [edi+esi]     ; - U load source pixel
			add edi, 4			   ; - V add inc to addring des pixel ...
							   
			cmp edx, ebx       	   ; - U is BG color ? 
			jne next_test          ; - V Y ? into mnc_nesc : next_test
			
		mnc_nesc: 				   ; BG color 
		
			inc eax                ; - U x pos addring over ? 
			jne mn_main_loop 	   ; - V Y ? into starting next line 

			add esi, esp  	       ; - U add pitch 
			mov eax, ecx  		   ; - V recover x cnt

			inc ebp			       ; - U y pos addring over ?
			jne mn_main_loop	   ; - V Y ? continue : child proc ret ... 
			
			movd esp, xmm7
			popad 
			xor eax, eax           ; no clash appear
			ret 
			
			align 16
			
next_test:; not BG color .. 	
		
			mov ecx, [edi]     ; - U load des buffer pixel 
			mov [edi], edx     ; - V write buffer ... 
			
			cmp ecx, ebx 	   ; - U test clash
			je  mnc_nesc       ; - V N clash appear ? continue mnc_nesc ... 
			
			inc eax            ; - U else into no test clash's main_loop (clash has happend ...) 
			jne xmn_main_loop  ; - V 
			
			add esi, esp  	   ; - U  
			mov eax, ecx 
			
			inc ebp			   ; - U
			je emd_end
			
			align 16
			
		xmn_main_loop:
		
			mov edx, [esi+edi]     ; - U load source pixel
			add edi, 4		   	   ; - V spare 
							   
			cmp edx, ebx       	   ; - U is BG color ? 
			jne no_BG      		   ; - V 
			
			inc eax 
			jne xmn_main_loop 
			
			add esi, esp  	   ; - U
			mov eax, ecx 
			
			inc ebp
			jne xmn_main_loop
			
			xor eax, eax 
			jmp emd_end
			
			align 16 
	no_BG:
	
			mov [edi], edx
			lea ecx, [ecx]
			
			inc eax
			jne xmn_main_loop 
			
			add esi, esp  	   ; - U
			mov eax, ecx 
			
			inc ebp			   ; - V 			
			jne xmn_main_loop
			
     emd_end:
	 
			movd esp, xmm7
			popad 
			mov eax, 1         ; appear clash ...
			ret 
			
_spriteDrawAndTest endp
分享到:
评论

相关推荐

    masm下载masm下载masm

    masm下载masm下载masm下载masm下载masm下载masm下载masm下载

    masm masm6.15 64位

    **MASM,全称Microsoft Macro Assembler,是微软公司推出的一款高级汇编语言编译器,主要用于编写基于x86和x64架构的程序。MASM 6.15是MASM的一个版本,它支持64位指令集,使得开发者能够创建针对64位操作系统的应用...

    masm615和masm5

    本文将详细介绍masm615和masm5这两个汇编编译器,并探讨它们在汇编指令学习中的应用。 首先,让我们来看看masm615。MASM,全称Microsoft Macro Assembler,是微软公司开发的一个汇编器,主要用于生成IBM PC兼容机上...

    MASM6.11 MASM6.11

    **MASM6.11:微处理器汇编语言编译器的里程碑** MASM,全称为Microsoft Macro Assembler,是微软公司开发的一款汇编语言编译器,它为编写Intel架构处理器(特别是8086及其后续的x86系列)上的机器代码提供了便利。...

    MASM5+MASM615

    **MASM5与MASM615:汇编语言编程工具的里程碑** MASM,全称为Microsoft Macro Assembler,是微软公司开发的一款汇编语言编译器,它为程序员提供了编写机器代码的能力,使得程序员可以直接对计算机硬件进行精确控制...

    MASM50.MASM51.MASM60.MASM611.MASM611FULL.MASM614.MASM615工具

    MASM50.MASM51.MASM60.MASM611.MASM611FULL.MASM614.MASM615

    masm5和masm615

    相比于MASM5,MASM615增加了对32位寻址和处理的支持,同时改进了宏语言功能,增强了错误检测和调试能力。这个版本引入了新的指令集,包括保护模式下的内存管理和多任务处理,以及浮点运算指令等,适应了当时个人...

    masm6.11与masm6.15安装包

    - **特点**:MASM6.11拥有良好的错误检测机制,对语法和类型检查较为严格,有助于减少编程错误。同时,它的链接器(LINK)和库管理器(LIB)也是集成的一部分,使得编译和链接过程更加便捷。 **2. MASM6.15:** -...

    MASM各版本大全

    **MASM 510**: 在500的基础上进行了改进,增强了错误检测和诊断能力,提高了代码优化水平,同时可能添加了一些新的特性以适应当时快速发展的计算机技术。 **MASM 600**: 这个版本标志着MASM的重大升级,因为它开始...

    MASM 6.15完整版

    3. **错误检查与调试**:该版本提供了更完善的错误检测机制,有助于程序员快速定位和修复问题。同时,其集成的调试工具增强了开发过程中的调试体验。 4. **代码优化**:MASM 6.15在保持代码清晰的同时,也注重代码...

    masm5.0 win32

    【标题】"masm5.0 win32" 指的是MicroAssember System (MASM) 5.0版本在Windows 32位操作系统上的应用。MASM是一款流行的x86汇编语言编译器,由Microsoft开发,用于编写针对Intel 8086及其后续处理器的低级代码。 ...

    Masm6.15.zip

    2. **错误检查和调试工具**:Masm6.15包含错误检测机制,能帮助开发者在编写阶段发现潜在问题,同时提供调试信息,便于代码调试。 3. **兼容性**:作为微软的产品,Masm6.15与Windows操作系统高度兼容,可以方便地...

    Masm6.15 完整版 full

    **汇编语言编程工具MASM6.15详解** MASM(Microsoft Macro Assembler)是微软公司开发的一款宏汇编器,它为程序员提供了编写低级机器代码的能力,适用于IBM PC兼容机上的Intel x86架构。MASM6.15是MASM的一个版本,...

    汇编MASM6.15官方原版

    - **良好的错误处理**: MASM6.15有良好的错误检测和报告机制,可以帮助开发者快速定位并修复问题。 **2. 汇编语言基础知识** - **指令集**: 汇编语言基于CPU的指令集,如x86指令集,包括数据处理、转移控制、输入/...

    汇编语言MASM masm6.0

    汇编语言MASM  MASM 6.0是1991年推出的,支持80486处理器,它对MASM 进行重新组织,并提供了许多类似高级语言的新特点。MASM 6.0之后又有一些改进,微软又推出MASM 6.11,利用它的免费补丁程序可以升级到MASM 6.14...

    MASM安装包(masm提供了两个版本选择)

    **MASM(Microsoft Macro Assembler)** 是微软公司推出的一款汇编语言编译器,它在编程领域,尤其是系统级编程和低级优化中扮演着重要角色。标题中提到的"MASM安装包"指的是用于在计算机上安装MASM软件的压缩文件...

    masm.rar_dos编程_masm_masm for DOS

    **标题解析:** "masm.rar_dos编程_masm_masm for DOS" 指的是一个关于使用MASM(Microsoft Macro Assembler)在DOS环境下进行编程的资源包。MASM是微软公司开发的一种宏汇编器,适用于创建低级语言程序,尤其是在...

    内含MASM 6.15完整版和DOSBOX(WIN7 64位下使用MASM)

    2. 接着,输入`cd &lt;你的MASM 6.15安装目录&gt;`,例如:`cd "C:\Program Files\MASM615"`,进入MASM 6.15的根目录。 3. 输入`masm`启动MASM 6.15。现在你可以像在DOS环境下一样,编写、编译和链接汇编语言程序了。 **...

Global site tag (gtag.js) - Google Analytics