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

📄 2xsaimmx.inc

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 INC
📖 第 1 页 / 共 4 页
字号:
		 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+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 [es:edx], mm0
         movq [es:edx+8], mm1
         push edx
         add edx, [ebp+dstPitch]
         movq [es:edx], mm4
         movq [es: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


;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------







NEWSYM _2xSaISuperEagleLine
; Store some stuff
	 push ebp
	 mov ebp, esp
         pushad

; Prepare the destination
%ifdef __DJGPP__
         ; 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

⌨️ 快捷键说明

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