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

📄 2xsaimmx.asm

📁 著名SFC模拟器Snes9x的源代码。
💻 ASM
📖 第 1 页 / 共 4 页
字号:
		 movq mm6, mm7		 pcmpeqw mm6, mm5		 pand mm7, mm0		 movq mm1, [eax+ebx+color5]		 pand mm6, mm1		 por mm7, mm6		 movq [final1a], mm7			;finished  1a	 	     ;--------------------------------		 		 movq mm7, [Mask35]		 push eax		 add eax, ebx		 movq mm6, [eax+ebx+ebx+colorA2]		 pop eax		 movq mm5, [eax+ebx+color5]		 movq mm4, [eax+ebx+color4]		 pcmpeqw mm4, mm5		 pcmpeqw mm6, mm5		 pxor mm5, mm5		 pand mm7, mm4		 pcmpeqw mm6, mm5		 pand mm7, mm6		 movq mm6, [eax+ebx+color6]		 movq mm5, [eax+ebx+color5]		 movq mm4, [eax+ebx+color4]		 movq mm2, [eax+ebx+ebx+color2]		 movq mm1, [eax+ebx+ebx+color1]		 push eax		 add eax, ebx		 movq mm3, [eax+ebx+ebx+colorA0]		 pop eax		 pcmpeqw mm2, mm4		 pcmpeqw mm6, mm5		 pcmpeqw mm1, mm5		 pcmpeqw mm3, mm5		 pxor mm5, mm5		 pcmpeqw mm2, mm5		 pcmpeqw mm3, mm5		 pand mm6, mm1		 pand mm2, mm3		 pand mm6, mm2		 por mm7, mm6		 		 movq mm6, mm7		 pcmpeqw mm6, mm5		 pand mm7, mm0		 movq mm1, [eax+ebx+ebx+color2]		 pand mm6, mm1		 por mm7, mm6		 movq [final2a], mm7			;finished  2a		 ;-------------------------------------------- %ifdef dfhsdfhsdahdsfhdsfh                   if (color6 == color3 && color3 == colorA1 && color2 != colorA2 && color3 != colorA0)                      product2b = Q_INTERPOLATE (color3, color3, color3, color2);                   else                   if (color5 == color2 && color2 == colorA2 && colorA1 != color3 && color2 != colorA3)                      product2b = Q_INTERPOLATE (color2, color2, color2, color3);                   else                      product2b = INTERPOLATE (color2, color3);                   if (color6 == color3 && color6 == colorB1 && color5 != colorB2 && color6 != colorB0)                      product1b = Q_INTERPOLATE (color6, color6, color6, color5);                   else                   if (color5 == color2 && color5 == colorB2 && colorB1 != color6 && color5 != colorB3)                      product1b = Q_INTERPOLATE (color6, color5, color5, color5);                   else                      product1b = INTERPOLATE (color5, color6);%endif		 push eax		 add eax, ebx		 pxor mm7, mm7		 movq mm0, [eax+ebx+ebx+colorA0]		 movq mm1, [eax+ebx+ebx+colorA1]		 movq mm2, [eax+ebx+ebx+colorA2]		 movq mm3, [eax+ebx+ebx+colorA3]		 pop eax		 movq mm4, [eax+ebx+ebx+color2]		 movq mm5, [eax+ebx+ebx+color3]		 movq mm6, [eax+ebx+color6]		 pcmpeqw mm6, mm5		 pcmpeqw mm1, mm5		 pcmpeqw mm4, mm2		 pcmpeqw mm0, mm5		 pcmpeqw mm4, mm7		 pcmpeqw mm0, mm7		 pand mm0, mm4		 pand mm6, mm1		 pand mm0, mm6		 movq mm4, [eax+ebx+color2]		 movq mm5, [eax+ebx+ebx+color5]		 movq mm6, [eax+ebx+ebx+color3]		 pcmpeqw mm5, mm4		 pcmpeqw mm2, mm4		 pcmpeqw mm1, mm6		 pcmpeqw mm3, mm4		 pcmpeqw mm1, mm7		 pcmpeqw mm3, mm7		 pand mm2, mm5		 pand mm1, mm3		 pand mm1, mm2		 movq mm2, mm0		 movq mm7, [I2333Pixel]		 movq mm6, [I2223Pixel]		 movq mm5, [I23Pixel]		 movq mm4, [Mask35]		 movq mm3, [Mask26]		 por mm2, mm4		 pand mm4, [eax+ebx+ebx+color3]		 por mm2, mm3		 pand mm3, [eax+ebx+ebx+color2]		 por mm2, mm1		 pand mm0, mm7		 pand mm1, mm6		 pxor mm7, mm7		 pcmpeqw mm2, mm7		 por mm0, mm1		 por mm3, mm4		 pand mm2, mm5		 por mm0, mm3		 por mm0, mm2		 movq [final2b], mm0		 ;-----------------------------------		 		 pxor mm7, mm7		 movq mm0, [eax+colorB0]		 movq mm1, [eax+colorB1]		 movq mm2, [eax+colorB2]		 movq mm3, [eax+colorB3]		 movq mm4, [eax+ebx+color5]		 movq mm5, [eax+ebx+color6]		 movq mm6, [eax+ebx+ebx+color3]		 pcmpeqw mm6, mm5		 pcmpeqw mm1, mm5		 pcmpeqw mm4, mm2		 pcmpeqw mm0, mm5		 pcmpeqw mm4, mm7		 pcmpeqw mm0, mm7		 pand mm0, mm4		 pand mm6, mm1		 pand mm0, mm6		 movq mm4, [eax+ebx+color5]		 movq mm5, [eax+ebx+ebx+color2]		 movq mm6, [eax+ebx+color6]		 pcmpeqw mm5, mm4		 pcmpeqw mm2, mm4		 pcmpeqw mm1, mm6		 pcmpeqw mm3, mm4		 pcmpeqw mm1, mm7		 pcmpeqw mm3, mm7		 pand mm2, mm5		 pand mm1, mm3		 pand mm1, mm2		 movq mm2, mm0		 movq mm7, [I5666Pixel]		 movq mm6, [I5556Pixel]		 movq mm5, [I56Pixel]		 movq mm4, [Mask35]		 movq mm3, [Mask26]		 por mm2, mm4		 pand mm4, [eax+ebx+color5]		 por mm2, mm3		 pand mm3, [eax+ebx+color6]		 por mm2, mm1		 pand mm0, mm7		 pand mm1, mm6		 pxor mm7, mm7		 pcmpeqw mm2, mm7		 por mm0, mm1		 por mm3, mm4		 pand mm2, mm5		 por mm0, mm3		 por mm0, mm2		 movq [final1b], mm0		 	  ;---------		 movq mm0, [final1a]		 movq mm4, [final2a]		 movq mm2, [final1b]		 movq mm6, [final2b]		 movq mm1, mm0		 movq mm5, mm4         punpcklwd mm0, mm2         punpckhwd mm1, mm2         punpcklwd mm4, mm6         punpckhwd mm5, mm6%ifdef FAR_POINTER         movq [fs:edx], mm0         movq [fs:edx+8], mm1         push edx         add edx, [ebp+dstPitch]         movq [fs:edx], mm4         movq [fs:edx+8], mm5         pop edx%else         movq [edx], mm0         movq [edx+8], mm1         push edx         add edx, [ebp+dstPitch]         movq [edx], mm4         movq [edx+8], mm5         pop edx%endif.SKIP_PROCESS:         mov ecx, [ebp+deltaPtr]         add ecx, 8         mov [ebp+deltaPtr], ecx         add edx, 16         add eax, 8         pop ecx         sub ecx, 4         cmp ecx, 0         jg  near .Loop; Restore some stuff         popad         mov esp, ebp         pop ebp         emms         ret;-------------------------------------------------------------------------;-------------------------------------------------------------------------;-------------------------------------------------------------------------;-------------------------------------------------------------------------;-------------------------------------------------------------------------;-------------------------------------------------------------------------;-------------------------------------------------------------------------%ifdef __DJGPP____2xSaISuperEagleLine:%else_2xSaISuperEagleLine:%endif; Store some stuff	 push ebp	 mov ebp, esp         pushad; Prepare the destination%ifdef FAR_POINTER         ; Set the selector         mov eax, [ebp+dstSegment]         mov fs, ax%endif         mov edx, [ebp+dstOffset]         ; edx points to the screen; Prepare the source         ; eax points to colorA         mov eax, [ebp+srcPtr]         mov ebx, [ebp+srcPitch]         mov ecx, [ebp+width]         ; eax now points to colorB1         sub eax, ebx; Main Loop.Loop:   push ecx         ;-----Check Delta------------------         mov ecx, [ebp+deltaPtr]         movq mm0, [eax+colorB0]         movq mm1, [eax+colorB3]         movq mm2, [eax+ebx+color4]         movq mm3, [eax+ebx+colorS2]         movq mm4, [eax+ebx+ebx+color1]         movq mm5, [eax+ebx+ebx+colorS1]         push eax         add eax, ebx         movq mm6, [eax+ebx+ebx+colorA0]         movq mm7, [eax+ebx+ebx+colorA3]         pop eax         pcmpeqw mm0, [ecx+2+colorB0]         pcmpeqw mm1, [ecx+2+colorB3]         pcmpeqw mm2, [ecx+ebx+2+color4]         pcmpeqw mm3, [ecx+ebx+2+colorS2]         pcmpeqw mm4, [ecx+ebx+ebx+2+color1]         pcmpeqw mm5, [ecx+ebx+ebx+2+colorS1]         add ecx, ebx         pcmpeqw mm6, [ecx+ebx+ebx+2+colorA0]         pcmpeqw mm7, [ecx+ebx+ebx+2+colorA3]         sub ecx, ebx         pand mm0, mm1         pand mm2, mm3         pand mm4, mm5         pand mm6, mm7         pand mm0, mm2         pand mm4, mm6         pxor mm7, mm7         pand mm0, mm4         movq mm6, [eax+colorB0]         pcmpeqw mm7, mm0         movq [ecx+2+colorB0], mm6         packsswb mm7, mm7         movd ecx, mm7         test ecx, ecx         jz near .SKIP_PROCESS         ;End Delta         ;---------------------------------         movq mm0, [eax+ebx+color5]         movq mm1, [eax+ebx+color6]         movq mm2, mm0         movq mm3, mm1         movq mm4, mm0         movq mm5, mm1         pand mm0, [colorMask]         pand mm1, [colorMask]         psrlw mm0, 1         psrlw mm1, 1         pand mm3, [lowPixelMask]         paddw mm0, mm1         pand mm3, mm2         paddw mm0, mm3                ;mm0 contains the interpolated values         movq [I56Pixel], mm0         movq mm7, mm0         ;-------------------         movq mm0, mm7         movq mm1, mm4  ;5,5,5,6         movq mm2, mm0         movq mm3, mm1         pand mm0, [colorMask]         pand mm1, [colorMask]         psrlw mm0, 1         psrlw mm1, 1         pand mm3, [lowPixelMask]         paddw mm0, mm1         pand mm3, mm2         paddw mm0, mm3                ;mm0 contains the interpolated values         movq [product1a], mm0         ;--------------------         movq mm0, mm7         movq mm1, mm5  ;6,6,6,5         movq mm2, mm0         movq mm3, mm1         pand mm0, [colorMask]         pand mm1, [colorMask]         psrlw mm0, 1         psrlw mm1, 1         pand mm3, [lowPixelMask]         paddw mm0, mm1         pand mm3, mm2         paddw mm0, mm3         movq [product1b], mm0         ;-------------------------         ;-------------------------         movq mm0, [eax+ebx+ebx+color2]         movq mm1, [eax+ebx+ebx+color3]         movq mm2, mm0         movq mm3, mm1         movq mm4, mm0         movq mm5, mm1         pand mm0, [colorMask]         pand mm1, [colorMask]         psrlw mm0, 1         psrlw mm1, 1         pand mm3, [lowPixelMask]         paddw mm0, mm1         pand mm3, mm2         paddw mm0, mm3         movq [I23Pixel], mm0         movq mm7, mm0         ;---------------------         movq mm0, mm7         movq mm1, mm4  ;2,2,2,3         movq mm2, mm0         movq mm3, mm1         pand mm0, [colorMask]         pand mm1, [colorMask]         psrlw mm0, 1         psrlw mm1, 1         pand mm3, [lowPixelMask]         paddw mm0, mm1         pand mm3, mm2         paddw mm0, mm3         movq [product2a], mm0         ;----------------------         movq mm0, mm7         movq mm1, mm5  ;3,3,3,2         movq mm2, mm0         movq mm3, mm1         pand mm0, [colorMask]         pand mm1, [colorMask]         psrlw mm0, 1         psrlw mm1, 1         pand mm3, [lowPixelMask]         paddw mm0, mm1         pand mm3, mm2         paddw mm0, mm3         movq [product2b], mm0         ;////////////////////////////////         ; Decide which "branch" to take         ;--------------------------------         movq mm4, [eax+ebx+color5]         movq mm5, [eax+ebx+color6]         movq mm6, [eax+ebx+ebx+color3]         movq mm7, [eax+ebx+ebx+color2]         pxor mm3, mm3         movq mm0, mm4         movq mm1, mm5         pcmpeqw mm0, mm6         pcmpeqw mm1, mm7         pcmpeqw mm1, mm3         pand mm0, mm1         movq [Mask35], mm0         movq mm0, [eax+ebx+ebx+colorS1]         movq mm1, [eax+ebx+color4]         push eax         add eax, ebx         movq mm2, [eax+ebx+ebx+colorA2]         pop eax         movq mm3, [eax+colorB1]         pcmpeqw mm0, mm4         pcmpeqw mm1, mm4         pcmpeqw mm2, mm4         pcmpeqw mm3, mm4         pand mm0, mm1         pand mm2, mm3         por mm0, mm2         pand mm0, [Mask35]         movq [Mask35b], mm0         ;-----------         pxor mm3, mm3         movq mm0, mm4         movq mm1, mm5         pcmpeqw mm0, mm6         pcmpeqw mm1, mm7         pcmpeqw mm0, mm3         pand mm0, mm1         movq [Mask26], mm0         movq mm0, [eax+ebx+ebx+color1]         movq mm1, [eax+ebx+colorS2]         push eax         add eax, ebx         movq mm2, [eax+ebx+ebx+colorA1]         pop eax         movq mm3, [eax+colorB2]         pcmpeqw mm0, mm5         pcmpeqw mm1, mm5         pcmpeqw mm2, mm5

⌨️ 快捷键说明

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