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

📄 2xsaimmx.inc

📁 linux下的任天堂模拟器代码。供大家参考。
💻 INC
📖 第 1 页 / 共 3 页
字号:
    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    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    pcmpeqw mm3, mm5    pand mm0, mm1    pand mm2, mm3    por mm0, mm2    pand mm0, [Mask26]    movq [Mask26b], mm0    ;--------------------    movq mm0, mm4    movq mm1, mm5    movq mm2, mm0    pcmpeqw mm2, mm1    pcmpeqw mm0, mm6    pcmpeqw mm1, mm7    pand mm0, mm1    pand mm2, mm0    pxor mm0, mm2    movq mm7, mm0    ;------------------    packsswb mm7, mm7    movd ecx, mm7    test ecx, ecx    jz near .SKIP_GUESS;---------------------------------------------; Map of the pixels:                    I|E F|J;                                       G|A B|K;                                       H|C D|L;                                       M|N O|P    movq mm6, mm0    movq mm4, [eax+ebx+color5]    movq mm5, [eax+ebx+color6]    pxor mm7, mm7    pand mm6, [ONE]    movq mm0, [eax+colorB1]    movq mm1, [eax+ebx+color4]    movq mm2, mm0    movq mm3, mm1    pcmpeqw mm0, mm4    pcmpeqw mm1, mm4    pcmpeqw mm2, mm5    pcmpeqw mm3, mm5    pand mm0, mm6    pand mm1, mm6    pand mm2, mm6    pand mm3, mm6    paddw mm0, mm1    paddw mm2, mm3    pxor mm3, mm3    pcmpgtw mm0, mm6    pcmpgtw mm2, mm6    pcmpeqw mm0, mm3    pcmpeqw mm2, mm3    pand mm0, mm6    pand mm2, mm6    paddw mm7, mm0    psubw mm7, mm2    movq mm0, [eax+colorB2]    movq mm1, [eax+ebx+colorS2]    movq mm2, mm0    movq mm3, mm1    pcmpeqw mm0, mm4    pcmpeqw mm1, mm4    pcmpeqw mm2, mm5    pcmpeqw mm3, mm5    pand mm0, mm6    pand mm1, mm6    pand mm2, mm6    pand mm3, mm6    paddw mm0, mm1    paddw mm2, mm3    pxor mm3, mm3    pcmpgtw mm0, mm6    pcmpgtw mm2, mm6    pcmpeqw mm0, mm3    pcmpeqw mm2, mm3    pand mm0, mm6    pand mm2, mm6    paddw mm7, mm0    psubw mm7, mm2    push eax    add eax, ebx    movq mm0, [eax+ebx+color1]    movq mm1, [eax+ebx+ebx+colorA1]    movq mm2, mm0    movq mm3, mm1    pcmpeqw mm0, mm4    pcmpeqw mm1, mm4    pcmpeqw mm2, mm5    pcmpeqw mm3, mm5    pand mm0, mm6    pand mm1, mm6    pand mm2, mm6    pand mm3, mm6    paddw mm0, mm1    paddw mm2, mm3    pxor mm3, mm3    pcmpgtw mm0, mm6    pcmpgtw mm2, mm6    pcmpeqw mm0, mm3    pcmpeqw mm2, mm3    pand mm0, mm6    pand mm2, mm6    paddw mm7, mm0    psubw mm7, mm2    movq mm0, [eax+ebx+colorS1]    movq mm1, [eax+ebx+ebx+colorA2]    movq mm2, mm0    movq mm3, mm1    pcmpeqw mm0, mm4    pcmpeqw mm1, mm4    pcmpeqw mm2, mm5    pcmpeqw mm3, mm5    pand mm0, mm6    pand mm1, mm6    pand mm2, mm6    pand mm3, mm6    paddw mm0, mm1    paddw mm2, mm3    pxor mm3, mm3    pcmpgtw mm0, mm6    pcmpgtw mm2, mm6    pcmpeqw mm0, mm3    pcmpeqw mm2, mm3    pand mm0, mm6    pand mm2, mm6    paddw mm7, mm0    psubw mm7, mm2    pop eax    movq mm1, mm7    pxor mm0, mm0    pcmpgtw mm7, mm0    pcmpgtw mm0, mm1    por mm7, [Mask35]    por mm1, [Mask26]    movq [Mask35], mm7    movq [Mask26], mm1.SKIP_GUESS:    ;Start the ASSEMBLY !!!    movq mm4, [Mask35]    movq mm5, [Mask26]    movq mm6, [Mask35b]    movq mm7, [Mask26b]    movq mm0, [eax+ebx+color5]    movq mm1, [eax+ebx+color6]    movq mm2, [eax+ebx+ebx+color2]    movq mm3, [eax+ebx+ebx+color3]    pcmpeqw mm0, mm2    pcmpeqw mm1, mm3    movq mm2, mm4    movq mm3, mm5    por mm0, mm1    por mm2, mm3    pand mm2, mm0    pxor mm0, mm2    movq mm3, mm0    movq mm2, mm0    pxor mm0, mm0    por mm2, mm4    pxor mm4, mm6    por mm2, mm5    pxor mm5, mm7    pcmpeqw mm2, mm0    ;----------------    movq mm0, [eax+ebx+color5]    movq mm1, mm3    por mm1, mm4    por mm1, mm6    pand mm0, mm1    movq mm1, mm5    pand mm1, [I56Pixel]    por mm0, mm1    movq mm1, mm7    pand mm1, [product1b]    por mm0, mm1    movq mm1, mm2    pand mm1, [product1a]    por mm0, mm1    movq [final1a], mm0    movq mm0, [eax+ebx+color6]    movq mm1, mm3    por mm1, mm5    por mm1, mm7    pand mm0, mm1    movq mm1, mm4    pand mm1, [I56Pixel]    por mm0, mm1    movq mm1, mm6    pand mm1, [product1a]    por mm0, mm1    movq mm1, mm2    pand mm1, [product1b]    por mm0, mm1    movq [final1b], mm0    movq mm0, [eax+ebx+ebx+color2]    movq mm1, mm3    por mm1, mm5    por mm1, mm7    pand mm0, mm1    movq mm1, mm4    pand mm1, [I23Pixel]    por mm0, mm1    movq mm1, mm6    pand mm1, [product2b]    por mm0, mm1    movq mm1, mm2    pand mm1, [product2a]    por mm0, mm1    movq [final2a], mm0    movq mm0, [eax+ebx+ebx+color3]    movq mm1, mm3    por mm1, mm4    por mm1, mm6    pand mm0, mm1    movq mm1, mm5    pand mm1, [I23Pixel]    por mm0, mm1    movq mm1, mm7    pand mm1, [product2a]    por mm0, mm1    movq mm1, mm2    pand mm1, [product2b]    por mm0, mm1    movq [final2b], mm0    movq mm0, [final1a]    movq mm2, [final1b]    movq mm1, mm0    movq mm4, [final2a]    movq mm6, [final2b]    movq mm5, mm4    punpcklwd mm0, mm2    punpckhwd mm1, mm2    punpcklwd mm4, mm6    punpckhwd mm5, mm6%ifdef __DJGPP__    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;-------------------------------------------------------------------------;-------------------------------------------------------------------------;-------------------------------------------------------------------------;-------------------------------------------------------------------------;-------------------------------------------------------------------------;-------------------------------------------------------------------------;-------------------------------------------------------------------------;This is version 0.50colorI   equ -2colorE   equ 0colorF   equ 2colorJ   equ 4colorG   equ -2colorA   equ 0colorB   equ 2colorK   equ 4colorH   equ -2colorC   equ 0colorD   equ 2colorL   equ 4colorM   equ -2colorN   equ 0colorO   equ 2colorP   equ 4NEWSYM _2xSaILine; 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]

⌨️ 快捷键说明

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